Files
Ryan Miller 636b46aeeb feat: replace python localization generator with codegen
removed locale json files

removed python as a dependency

created localization codegen from shared scripts repo
2026-01-07 16:38:48 +11:00

223 lines
6.3 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
var path = require('path');
module.exports = {
root: true,
settings: {
'import/core-modules': ['electron'],
'import/resolver': {
node: {
extensions: ['.js', '.jsx', '.ts', '.tsx'],
},
},
react: {
version: 'detect',
},
'import/resolver': {
node: {
paths: [path.resolve(__dirname)],
},
},
},
extends: [
'airbnb-base',
'prettier',
'plugin:@typescript-eslint/recommended',
'plugin:react/jsx-runtime',
'plugin:react-hooks/recommended',
'plugin:import/recommended',
'plugin:import/typescript',
],
plugins: ['mocha', 'more', '@typescript-eslint', 'local-rules'],
parser: '@typescript-eslint/parser',
parserOptions: { project: ['tsconfig.json'] },
rules: {
'comma-dangle': [
'error',
{
arrays: 'always-multiline',
objects: 'always-multiline',
imports: 'always-multiline',
exports: 'always-multiline',
functions: 'never',
},
],
// Enforce curlies always
curly: ['error', 'all'],
'brace-style': ['error', '1tbs'],
// prevents us from accidentally checking in exclusive tests (`.only`):
'mocha/no-exclusive-tests': 'error',
// encourage consistent use of `async` / `await` instead of `then`
'more/no-then': 'error',
// it helps readability to put public API at top,
'no-use-before-define': 'off',
// useful for unused or internal fields
'no-underscore-dangle': 'off',
// though we have a logger, we still remap console to log to disk
'no-console': 'error',
// consistently place operators at end of line except ternaries
'operator-linebreak': 'error',
// Use LF to stay consistent
'linebreak-style': ['error', 'unix'],
quotes: ['error', 'single', { avoidEscape: true, allowTemplateLiterals: true }],
'@typescript-eslint/no-floating-promises': ['error'],
'@typescript-eslint/await-thenable': 'error',
'@typescript-eslint/array-type': ['error', { default: 'generic' }],
'@typescript-eslint/no-misused-promises': 'error',
// make imports without file extensions
'import/extensions': ['warn', 'never'],
// NOTE Comment out this line when debugging cyclic dependencies / circular imports
'import/no-cycle': 'off',
// Prettier overrides:
'arrow-parens': 'off',
'no-nested-ternary': 'off',
'function-paren-newline': 'off',
'import/prefer-default-export': 'off',
'operator-linebreak': 'off',
'prefer-destructuring': 'off',
'max-classes-per-file': 'off',
'lines-between-class-members': 'off',
'@typescript-eslint/no-explicit-any': 'off', // to reenable later
'arrow-body-style': 'off',
'no-plusplus': 'off',
'no-continue': 'off',
'no-void': 'off',
'default-param-last': 'off',
'no-shadow': 'off',
'@typescript-eslint/no-shadow': 'error',
'class-methods-use-this': 'off',
camelcase: 'off',
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
// 'no-unused-expressions': 'off',
// '@typescript-eslint/no-unused-expressions': 'error',
'max-len': [
'error',
{
// Prettier generally limits line length to 80 but sometimes goes over.
// The `max-len` plugin doesn’t let us omit `code` so we set it to a
// high value as a buffer to let Prettier control the line length:
code: 999,
// We still want to limit comments as before:
comments: 200,
ignoreUrls: true,
ignoreRegExpLiterals: true,
},
],
'@typescript-eslint/no-restricted-imports': [
'error',
{
paths: [
// There is an issue with the current version of react-use where it requires an arbitrary 'Locale' package on the window object which causes random app crashes on startup in some cases
{
name: 'react-use',
message:
"Don't import from 'react-use' directly. Please use a default import for each hook from 'react-use/lib' instead.",
},
{
name: 'zod',
allowTypeImports: true,
message:
"Don't import from 'zod' directly. Please use a default import from 'ts/utils/zod' instead.",
},
],
},
],
'local-rules/styled-components-transient-props': [
'error',
{
additionalValidProps: ['as', 'forwardedAs', 'theme'],
ignoreComponentPatterns: ['^Motion', '^Animated'],
},
],
},
overrides: [
{
files: ['*_test.ts'],
rules: {
'no-unused-expressions': 'off',
'no-await-in-loop': 'off',
'no-empty': 'off',
},
},
{
files: ['ts/state/ducks/*.tsx', 'ts/state/ducks/*.ts'],
rules: { 'no-param-reassign': ['error', { props: false }] },
},
{
files: ['ts/node/**/*.ts', 'ts/test/**/*.ts'],
rules: { 'no-console': 'off', 'import/no-extraneous-dependencies': 'off' },
},
{
files: ['ts/localization/*.ts', 'ts/localization/generated/*.ts'], // anything in ts/localization has to only reference the files in that folder (this makes it reusable)
rules: {
'no-restricted-imports': [
'error',
{
patterns: [
'a*',
'b*',
'c*',
'd*',
'e*',
'f*',
'g*',
'h*',
'i*',
'j*',
'k*',
'l*',
'm*',
'n*',
'o*',
'p*',
'q*',
'r*',
's*',
't*',
'u*',
'v*',
'w*',
'x*',
'y*',
'z*',
'0*',
'1*',
'2*',
'3*',
'4*',
'5*',
'6*',
'7*',
'8*',
'9*',
'!./*',
'!./generated/*',
], // Disallow everything except ts/localization, this is the worst,
// but regexes are broken on our eslint8, and upgrading it means
// we need to bump node, which needs to bump electron.... and having '*' makes the other rules droped..
},
],
},
},
],
};