From 39222ed9caa7d2ee9f5f9f46eee7b193561e96de Mon Sep 17 00:00:00 2001 From: matt1432 Date: Fri, 20 Dec 2024 18:46:24 -0500 Subject: [PATCH] refactor(apps): use same eslint config for every app --- apps/config/.envrc | 2 + apps/config/eslint.config.ts | 451 +++++++++++++++++ apps/config/index.ts | 3 + apps/config/package-lock.json | Bin 0 -> 77784 bytes apps/config/package.json | 16 + .../tsconfig.base.json} | 0 apps/config/tsconfig.json | 10 + apps/extract-subs/default.nix | 2 +- apps/extract-subs/eslint.config.ts | 455 +----------------- apps/extract-subs/package-lock.json | Bin 94907 -> 65179 bytes apps/extract-subs/package.json | 15 +- apps/extract-subs/tsconfig.json | 2 +- apps/nix/buildApp.nix | 2 +- apps/update-sources/default.nix | 2 +- apps/update-sources/eslint.config.ts | 452 +---------------- apps/update-sources/package-lock.json | Bin 94657 -> 65459 bytes apps/update-sources/package.json | 9 +- apps/update-sources/tsconfig.json | 2 +- devShells/default.nix | 2 + 19 files changed, 502 insertions(+), 923 deletions(-) create mode 100644 apps/config/.envrc create mode 100644 apps/config/eslint.config.ts create mode 100644 apps/config/index.ts create mode 100644 apps/config/package-lock.json create mode 100644 apps/config/package.json rename apps/{tsconfig.json => config/tsconfig.base.json} (100%) create mode 100644 apps/config/tsconfig.json diff --git a/apps/config/.envrc b/apps/config/.envrc new file mode 100644 index 00000000..fd3dddda --- /dev/null +++ b/apps/config/.envrc @@ -0,0 +1,2 @@ +use flake $FLAKE#node +npm ci diff --git a/apps/config/eslint.config.ts b/apps/config/eslint.config.ts new file mode 100644 index 00000000..f6bb50a7 --- /dev/null +++ b/apps/config/eslint.config.ts @@ -0,0 +1,451 @@ +import eslint from '@eslint/js'; +import jsdoc from 'eslint-plugin-jsdoc'; +import stylistic from '@stylistic/eslint-plugin'; +import tseslint from 'typescript-eslint'; + + +export default tseslint.config({ + files: ['**/*.js', '**/*.ts'], + ignores: ['node_modules/**', 'types/**'], + + extends: [ + eslint.configs.recommended, + jsdoc.configs['flat/recommended-typescript'], + stylistic.configs['recommended-flat'], + ...tseslint.configs.recommended, + ...tseslint.configs.stylistic, + ], + + rules: { + // JSDoc settings + 'jsdoc/tag-lines': ['warn', 'any', { startLines: 1 }], + 'jsdoc/check-line-alignment': ['warn', 'always', { + tags: ['param', 'arg', 'argument', 'property', 'prop'], + }], + 'jsdoc/no-types': 'off', + + // Newer settings + '@typescript-eslint/no-extraneous-class': ['off'], + '@typescript-eslint/no-implied-eval': ['off'], + 'class-methods-use-this': 'off', + '@stylistic/no-multiple-empty-lines': 'off', + + // Pre-flat config + '@typescript-eslint/no-unused-vars': [ + 'error', + { + args: 'all', + argsIgnorePattern: '^_', + caughtErrors: 'all', + caughtErrorsIgnorePattern: '^_', + destructuredArrayIgnorePattern: '^_', + varsIgnorePattern: '^_', + ignoreRestSiblings: true, + }, + ], + + 'array-callback-return': [ + 'error', + { + allowImplicit: true, + checkForEach: true, + }, + ], + 'no-constructor-return': [ + 'error', + ], + 'no-unreachable-loop': [ + 'error', + { + ignore: [ + 'ForInStatement', + 'ForOfStatement', + ], + }, + ], + 'no-use-before-define': [ + 'error', + { + functions: false, + }, + ], + 'block-scoped-var': [ + 'error', + ], + 'curly': [ + 'warn', + ], + 'default-case-last': [ + 'warn', + ], + 'default-param-last': [ + 'error', + ], + 'eqeqeq': [ + 'error', + 'smart', + ], + 'func-names': [ + 'warn', + 'never', + ], + 'func-style': [ + 'warn', + 'expression', + ], + 'logical-assignment-operators': [ + 'warn', + 'always', + ], + 'no-array-constructor': [ + 'error', + ], + 'no-empty-function': [ + 'warn', + ], + 'no-empty-static-block': [ + 'warn', + ], + 'no-extend-native': [ + 'error', + ], + 'no-extra-bind': [ + 'warn', + ], + 'no-implicit-coercion': [ + 'warn', + ], + 'no-iterator': [ + 'error', + ], + 'no-labels': [ + 'error', + ], + 'no-lone-blocks': [ + 'error', + ], + 'no-lonely-if': [ + 'error', + ], + 'no-loop-func': [ + 'error', + ], + 'no-magic-numbers': [ + 'error', + { + ignore: [ + -1, + 0.1, + 0, + 1, + 2, + 3, + 4, + 5, + 10, + 12, + 33, + 66, + 100, + 255, + 360, + 450, + 500, + 1000, + ], + ignoreDefaultValues: true, + ignoreClassFieldInitialValues: true, + }, + ], + 'no-multi-assign': [ + 'error', + ], + 'no-new-wrappers': [ + 'error', + ], + 'no-object-constructor': [ + 'error', + ], + 'no-proto': [ + 'error', + ], + 'no-return-assign': [ + 'error', + ], + 'no-sequences': [ + 'error', + ], + 'no-shadow': [ + 'error', + { + builtinGlobals: true, + allow: [ + 'Window', + ], + }, + ], + 'no-undef-init': [ + 'warn', + ], + 'no-undefined': [ + 'error', + ], + 'no-useless-constructor': [ + 'warn', + ], + 'no-useless-escape': [ + 'off', + ], + 'no-useless-return': [ + 'error', + ], + 'no-var': [ + 'error', + ], + 'no-void': [ + 'off', + ], + 'no-with': [ + 'error', + ], + 'object-shorthand': [ + 'error', + 'always', + ], + 'one-var': [ + 'error', + 'never', + ], + 'operator-assignment': [ + 'warn', + 'always', + ], + 'prefer-arrow-callback': [ + 'error', + ], + 'prefer-const': [ + 'error', + ], + 'prefer-object-has-own': [ + 'error', + ], + 'prefer-regex-literals': [ + 'error', + ], + 'prefer-template': [ + 'warn', + ], + 'no-prototype-builtins': 'off', + '@typescript-eslint/no-var-requires': [ + 'off', + ], + '@stylistic/array-bracket-newline': [ + 'warn', + 'consistent', + ], + '@stylistic/array-bracket-spacing': [ + 'warn', + 'never', + ], + '@stylistic/arrow-parens': [ + 'warn', + 'always', + ], + '@stylistic/brace-style': [ + 'warn', + 'stroustrup', + ], + '@stylistic/comma-dangle': [ + 'warn', + 'always-multiline', + ], + '@stylistic/comma-spacing': [ + 'warn', + { + before: false, + after: true, + }, + ], + '@stylistic/comma-style': [ + 'error', + 'last', + ], + '@stylistic/dot-location': [ + 'error', + 'property', + ], + '@stylistic/function-call-argument-newline': [ + 'warn', + 'consistent', + ], + '@stylistic/function-paren-newline': [ + 'warn', + 'consistent', + ], + '@stylistic/indent': [ + 'warn', + 4, + { + SwitchCase: 1, + ignoreComments: true, + ignoredNodes: ['TemplateLiteral > *'], + }, + ], + '@stylistic/key-spacing': [ + 'warn', + { + beforeColon: false, + afterColon: true, + }, + ], + '@stylistic/keyword-spacing': [ + 'warn', + { + before: true, + }, + ], + '@stylistic/linebreak-style': [ + 'error', + 'unix', + ], + '@stylistic/lines-between-class-members': [ + 'warn', + 'always', + { + exceptAfterSingleLine: true, + }, + ], + '@stylistic/max-len': [ + 'warn', + { + code: 105, + ignoreComments: true, + ignoreTrailingComments: true, + ignoreUrls: true, + }, + ], + '@stylistic/multiline-ternary': [ + 'warn', + 'always-multiline', + ], + '@stylistic/new-parens': [ + 'error', + ], + '@stylistic/no-mixed-operators': [ + 'warn', + ], + '@stylistic/no-mixed-spaces-and-tabs': [ + 'error', + ], + '@stylistic/no-multi-spaces': [ + 'error', + ], + '@stylistic/no-tabs': [ + 'error', + ], + '@stylistic/no-trailing-spaces': [ + 'error', + ], + '@stylistic/no-whitespace-before-property': [ + 'warn', + ], + '@stylistic/nonblock-statement-body-position': [ + 'error', + 'below', + ], + '@stylistic/object-curly-newline': [ + 'warn', + { + consistent: true, + }, + ], + '@stylistic/object-curly-spacing': [ + 'warn', + 'always', + ], + '@stylistic/operator-linebreak': [ + 'warn', + 'after', + ], + '@stylistic/padded-blocks': [ + 'error', + 'never', + ], + '@stylistic/padding-line-between-statements': [ + 'warn', + { + blankLine: 'always', + prev: '*', + next: 'return', + }, + { + blankLine: 'always', + prev: [ + 'const', + 'let', + 'var', + ], + next: '*', + }, + { + blankLine: 'any', + prev: [ + 'const', + 'let', + 'var', + ], + next: [ + 'const', + 'let', + 'var', + ], + }, + { + blankLine: 'always', + prev: [ + 'case', + 'default', + ], + next: '*', + }, + ], + '@stylistic/quote-props': [ + 'error', + 'consistent-as-needed', + ], + '@stylistic/quotes': [ + 'error', + 'single', + { + avoidEscape: true, + }, + ], + '@stylistic/semi': [ + 'error', + 'always', + ], + '@stylistic/semi-spacing': [ + 'warn', + ], + '@stylistic/space-before-blocks': [ + 'warn', + ], + '@stylistic/space-before-function-paren': [ + 'warn', + 'never', + ], + '@stylistic/space-infix-ops': [ + 'warn', + ], + '@stylistic/spaced-comment': [ + 'warn', + 'always', + ], + '@stylistic/switch-colon-spacing': [ + 'warn', + ], + '@stylistic/wrap-regex': [ + 'warn', + ], + }, +}); diff --git a/apps/config/index.ts b/apps/config/index.ts new file mode 100644 index 00000000..1b8d2a33 --- /dev/null +++ b/apps/config/index.ts @@ -0,0 +1,3 @@ +import eslintConf from './eslint.config'; + +export default eslintConf; diff --git a/apps/config/package-lock.json b/apps/config/package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..f096d501ceba93ac6965b7672907bf5bec22a602 GIT binary patch literal 77784 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 *'], - }, - ], - '@stylistic/key-spacing': [ - 'warn', - { - beforeColon: false, - afterColon: true, - }, - ], - '@stylistic/keyword-spacing': [ - 'warn', - { - before: true, - }, - ], - '@stylistic/linebreak-style': [ - 'error', - 'unix', - ], - '@stylistic/lines-between-class-members': [ - 'warn', - 'always', - { - exceptAfterSingleLine: true, - }, - ], - '@stylistic/max-len': [ - 'warn', - { - code: 105, - ignoreComments: true, - ignoreTrailingComments: true, - ignoreUrls: true, - }, - ], - '@stylistic/multiline-ternary': [ - 'warn', - 'always-multiline', - ], - '@stylistic/new-parens': [ - 'error', - ], - '@stylistic/no-mixed-operators': [ - 'warn', - ], - '@stylistic/no-mixed-spaces-and-tabs': [ - 'error', - ], - '@stylistic/no-multi-spaces': [ - 'error', - ], - '@stylistic/no-tabs': [ - 'error', - ], - '@stylistic/no-trailing-spaces': [ - 'error', - ], - '@stylistic/no-whitespace-before-property': [ - 'warn', - ], - '@stylistic/nonblock-statement-body-position': [ - 'error', - 'below', - ], - '@stylistic/object-curly-newline': [ - 'warn', - { - consistent: true, - }, - ], - '@stylistic/object-curly-spacing': [ - 'warn', - 'always', - ], - '@stylistic/operator-linebreak': [ - 'warn', - 'after', - ], - '@stylistic/padded-blocks': [ - 'error', - 'never', - ], - '@stylistic/padding-line-between-statements': [ - 'warn', - { - blankLine: 'always', - prev: '*', - next: 'return', - }, - { - blankLine: 'always', - prev: [ - 'const', - 'let', - 'var', - ], - next: '*', - }, - { - blankLine: 'any', - prev: [ - 'const', - 'let', - 'var', - ], - next: [ - 'const', - 'let', - 'var', - ], - }, - { - blankLine: 'always', - prev: [ - 'case', - 'default', - ], - next: '*', - }, - ], - '@stylistic/quote-props': [ - 'error', - 'consistent-as-needed', - ], - '@stylistic/quotes': [ - 'error', - 'single', - { - avoidEscape: true, - }, - ], - '@stylistic/semi': [ - 'error', - 'always', - ], - '@stylistic/semi-spacing': [ - 'warn', - ], - '@stylistic/space-before-blocks': [ - 'warn', - ], - '@stylistic/space-before-function-paren': [ - 'warn', - 'never', - ], - '@stylistic/space-infix-ops': [ - 'warn', - ], - '@stylistic/spaced-comment': [ - 'warn', - 'always', - ], - '@stylistic/switch-colon-spacing': [ - 'warn', - ], - '@stylistic/wrap-regex': [ - 'warn', - ], - }, -}); +export default eslintConf; diff --git a/apps/extract-subs/package-lock.json b/apps/extract-subs/package-lock.json index 7920888e869bd9bac995be03d8e8f525699e8a04..37aeca8cd54cf462c3652b5d21a6d0b78ca10b25 100644 GIT binary patch delta 5297 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 diff --git a/apps/extract-subs/package.json b/apps/extract-subs/package.json index 2f9d8e9f..fd4b6871 100644 --- a/apps/extract-subs/package.json +++ b/apps/extract-subs/package.json @@ -11,14 +11,11 @@ "fluent-ffmpeg": "2.1.3" }, "devDependencies": { - "@eslint/js": "9.16.0", - "@stylistic/eslint-plugin": "2.11.0", - "@types/node": "22.10.1", - "esbuild": "0.24.0", - "eslint": "9.16.0", - "eslint-plugin-jsdoc": "50.6.0", - "jiti": "2.4.1", - "typescript": "5.7.2", - "typescript-eslint": "8.17.0" + "eslint-conf": "file:../config", + "@types/node": "22.10.2", + "esbuild": "0.24.2", + "eslint": "9.17.0", + "jiti": "2.4.2", + "typescript": "5.7.2" } } diff --git a/apps/extract-subs/tsconfig.json b/apps/extract-subs/tsconfig.json index 2c06e799..763e4667 100644 --- a/apps/extract-subs/tsconfig.json +++ b/apps/extract-subs/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../tsconfig.json", + "extends": "../config/tsconfig.base.json", "includes": [ "*.ts", "**/*.ts", diff --git a/apps/nix/buildApp.nix b/apps/nix/buildApp.nix index 8c1dc545..a9689893 100644 --- a/apps/nix/buildApp.nix +++ b/apps/nix/buildApp.nix @@ -22,7 +22,7 @@ in prePatch = '' mv ./tsconfig.json ./project.json - sed 's/^ *\/\/.*//' ${../tsconfig.json} > ./base.json + sed 's/^ *\/\/.*//' ${../config/tsconfig.json} > ./base.json ${jq}/bin/jq -sr '.[0] * .[1] | del(.extends)' ./project.json ./base.json > ./tsconfig.json rm base.json project.json ''; diff --git a/apps/update-sources/default.nix b/apps/update-sources/default.nix index 16b56ed1..4eb86b07 100644 --- a/apps/update-sources/default.nix +++ b/apps/update-sources/default.nix @@ -7,7 +7,7 @@ }: buildApp { src = ./.; - npmDepsHash = "sha256-ROB8aqyiwVJJzTEIf8oxuD1n6yhJCGb46i9aDmA7b8Y="; + npmDepsHash = "sha256-vIhR/+Pgj35sv/ZX1iL+xWheu6w7vQeJy4OEfa8tXFw="; runtimeInputs = [ nodejs_latest diff --git a/apps/update-sources/eslint.config.ts b/apps/update-sources/eslint.config.ts index f6bb50a7..7d0908f3 100644 --- a/apps/update-sources/eslint.config.ts +++ b/apps/update-sources/eslint.config.ts @@ -1,451 +1,3 @@ -import eslint from '@eslint/js'; -import jsdoc from 'eslint-plugin-jsdoc'; -import stylistic from '@stylistic/eslint-plugin'; -import tseslint from 'typescript-eslint'; +import eslintConf from 'eslint-conf'; - -export default tseslint.config({ - files: ['**/*.js', '**/*.ts'], - ignores: ['node_modules/**', 'types/**'], - - extends: [ - eslint.configs.recommended, - jsdoc.configs['flat/recommended-typescript'], - stylistic.configs['recommended-flat'], - ...tseslint.configs.recommended, - ...tseslint.configs.stylistic, - ], - - rules: { - // JSDoc settings - 'jsdoc/tag-lines': ['warn', 'any', { startLines: 1 }], - 'jsdoc/check-line-alignment': ['warn', 'always', { - tags: ['param', 'arg', 'argument', 'property', 'prop'], - }], - 'jsdoc/no-types': 'off', - - // Newer settings - '@typescript-eslint/no-extraneous-class': ['off'], - '@typescript-eslint/no-implied-eval': ['off'], - 'class-methods-use-this': 'off', - '@stylistic/no-multiple-empty-lines': 'off', - - // Pre-flat config - '@typescript-eslint/no-unused-vars': [ - 'error', - { - args: 'all', - argsIgnorePattern: '^_', - caughtErrors: 'all', - caughtErrorsIgnorePattern: '^_', - destructuredArrayIgnorePattern: '^_', - varsIgnorePattern: '^_', - ignoreRestSiblings: true, - }, - ], - - 'array-callback-return': [ - 'error', - { - allowImplicit: true, - checkForEach: true, - }, - ], - 'no-constructor-return': [ - 'error', - ], - 'no-unreachable-loop': [ - 'error', - { - ignore: [ - 'ForInStatement', - 'ForOfStatement', - ], - }, - ], - 'no-use-before-define': [ - 'error', - { - functions: false, - }, - ], - 'block-scoped-var': [ - 'error', - ], - 'curly': [ - 'warn', - ], - 'default-case-last': [ - 'warn', - ], - 'default-param-last': [ - 'error', - ], - 'eqeqeq': [ - 'error', - 'smart', - ], - 'func-names': [ - 'warn', - 'never', - ], - 'func-style': [ - 'warn', - 'expression', - ], - 'logical-assignment-operators': [ - 'warn', - 'always', - ], - 'no-array-constructor': [ - 'error', - ], - 'no-empty-function': [ - 'warn', - ], - 'no-empty-static-block': [ - 'warn', - ], - 'no-extend-native': [ - 'error', - ], - 'no-extra-bind': [ - 'warn', - ], - 'no-implicit-coercion': [ - 'warn', - ], - 'no-iterator': [ - 'error', - ], - 'no-labels': [ - 'error', - ], - 'no-lone-blocks': [ - 'error', - ], - 'no-lonely-if': [ - 'error', - ], - 'no-loop-func': [ - 'error', - ], - 'no-magic-numbers': [ - 'error', - { - ignore: [ - -1, - 0.1, - 0, - 1, - 2, - 3, - 4, - 5, - 10, - 12, - 33, - 66, - 100, - 255, - 360, - 450, - 500, - 1000, - ], - ignoreDefaultValues: true, - ignoreClassFieldInitialValues: true, - }, - ], - 'no-multi-assign': [ - 'error', - ], - 'no-new-wrappers': [ - 'error', - ], - 'no-object-constructor': [ - 'error', - ], - 'no-proto': [ - 'error', - ], - 'no-return-assign': [ - 'error', - ], - 'no-sequences': [ - 'error', - ], - 'no-shadow': [ - 'error', - { - builtinGlobals: true, - allow: [ - 'Window', - ], - }, - ], - 'no-undef-init': [ - 'warn', - ], - 'no-undefined': [ - 'error', - ], - 'no-useless-constructor': [ - 'warn', - ], - 'no-useless-escape': [ - 'off', - ], - 'no-useless-return': [ - 'error', - ], - 'no-var': [ - 'error', - ], - 'no-void': [ - 'off', - ], - 'no-with': [ - 'error', - ], - 'object-shorthand': [ - 'error', - 'always', - ], - 'one-var': [ - 'error', - 'never', - ], - 'operator-assignment': [ - 'warn', - 'always', - ], - 'prefer-arrow-callback': [ - 'error', - ], - 'prefer-const': [ - 'error', - ], - 'prefer-object-has-own': [ - 'error', - ], - 'prefer-regex-literals': [ - 'error', - ], - 'prefer-template': [ - 'warn', - ], - 'no-prototype-builtins': 'off', - '@typescript-eslint/no-var-requires': [ - 'off', - ], - '@stylistic/array-bracket-newline': [ - 'warn', - 'consistent', - ], - '@stylistic/array-bracket-spacing': [ - 'warn', - 'never', - ], - '@stylistic/arrow-parens': [ - 'warn', - 'always', - ], - '@stylistic/brace-style': [ - 'warn', - 'stroustrup', - ], - '@stylistic/comma-dangle': [ - 'warn', - 'always-multiline', - ], - '@stylistic/comma-spacing': [ - 'warn', - { - before: false, - after: true, - }, - ], - '@stylistic/comma-style': [ - 'error', - 'last', - ], - '@stylistic/dot-location': [ - 'error', - 'property', - ], - '@stylistic/function-call-argument-newline': [ - 'warn', - 'consistent', - ], - '@stylistic/function-paren-newline': [ - 'warn', - 'consistent', - ], - '@stylistic/indent': [ - 'warn', - 4, - { - SwitchCase: 1, - ignoreComments: true, - ignoredNodes: ['TemplateLiteral > *'], - }, - ], - '@stylistic/key-spacing': [ - 'warn', - { - beforeColon: false, - afterColon: true, - }, - ], - '@stylistic/keyword-spacing': [ - 'warn', - { - before: true, - }, - ], - '@stylistic/linebreak-style': [ - 'error', - 'unix', - ], - '@stylistic/lines-between-class-members': [ - 'warn', - 'always', - { - exceptAfterSingleLine: true, - }, - ], - '@stylistic/max-len': [ - 'warn', - { - code: 105, - ignoreComments: true, - ignoreTrailingComments: true, - ignoreUrls: true, - }, - ], - '@stylistic/multiline-ternary': [ - 'warn', - 'always-multiline', - ], - '@stylistic/new-parens': [ - 'error', - ], - '@stylistic/no-mixed-operators': [ - 'warn', - ], - '@stylistic/no-mixed-spaces-and-tabs': [ - 'error', - ], - '@stylistic/no-multi-spaces': [ - 'error', - ], - '@stylistic/no-tabs': [ - 'error', - ], - '@stylistic/no-trailing-spaces': [ - 'error', - ], - '@stylistic/no-whitespace-before-property': [ - 'warn', - ], - '@stylistic/nonblock-statement-body-position': [ - 'error', - 'below', - ], - '@stylistic/object-curly-newline': [ - 'warn', - { - consistent: true, - }, - ], - '@stylistic/object-curly-spacing': [ - 'warn', - 'always', - ], - '@stylistic/operator-linebreak': [ - 'warn', - 'after', - ], - '@stylistic/padded-blocks': [ - 'error', - 'never', - ], - '@stylistic/padding-line-between-statements': [ - 'warn', - { - blankLine: 'always', - prev: '*', - next: 'return', - }, - { - blankLine: 'always', - prev: [ - 'const', - 'let', - 'var', - ], - next: '*', - }, - { - blankLine: 'any', - prev: [ - 'const', - 'let', - 'var', - ], - next: [ - 'const', - 'let', - 'var', - ], - }, - { - blankLine: 'always', - prev: [ - 'case', - 'default', - ], - next: '*', - }, - ], - '@stylistic/quote-props': [ - 'error', - 'consistent-as-needed', - ], - '@stylistic/quotes': [ - 'error', - 'single', - { - avoidEscape: true, - }, - ], - '@stylistic/semi': [ - 'error', - 'always', - ], - '@stylistic/semi-spacing': [ - 'warn', - ], - '@stylistic/space-before-blocks': [ - 'warn', - ], - '@stylistic/space-before-function-paren': [ - 'warn', - 'never', - ], - '@stylistic/space-infix-ops': [ - 'warn', - ], - '@stylistic/spaced-comment': [ - 'warn', - 'always', - ], - '@stylistic/switch-colon-spacing': [ - 'warn', - ], - '@stylistic/wrap-regex': [ - 'warn', - ], - }, -}); +export default eslintConf; diff --git a/apps/update-sources/package-lock.json b/apps/update-sources/package-lock.json index d2df2820022052256ab96eaf3403bcf58a3dbadc..61b74f38bfef042b3d2830ceebf2b8ec024e8cab 100644 GIT binary patch delta 4892 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 EUyO5@NdN!< delta 15211 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 CYr+8l diff --git a/apps/update-sources/package.json b/apps/update-sources/package.json index d2e25bb0..5cb2e472 100644 --- a/apps/update-sources/package.json +++ b/apps/update-sources/package.json @@ -7,15 +7,12 @@ "build": "node_ver=$(node -v); esbuild src/app.ts --bundle --platform=node --target=\"node${node_ver:1:2}\" --outfile=out/bin/app.cjs" }, "devDependencies": { - "@eslint/js": "9.17.0", - "@stylistic/eslint-plugin": "2.12.1", + "eslint-conf": "file:../config", "@types/node": "22.10.2", - "esbuild": "0.24.0", + "esbuild": "0.24.2", "eslint": "9.17.0", - "eslint-plugin-jsdoc": "50.6.1", "jiti": "2.4.2", "pkg-types": "1.2.1", - "typescript": "5.7.2", - "typescript-eslint": "8.18.1" + "typescript": "5.7.2" } } diff --git a/apps/update-sources/tsconfig.json b/apps/update-sources/tsconfig.json index 2c06e799..763e4667 100644 --- a/apps/update-sources/tsconfig.json +++ b/apps/update-sources/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "../tsconfig.json", + "extends": "../config/tsconfig.base.json", "includes": [ "*.ts", "**/*.ts", diff --git a/devShells/default.nix b/devShells/default.nix index 44e178eb..e5f867f1 100644 --- a/devShells/default.nix +++ b/devShells/default.nix @@ -75,6 +75,7 @@ in { inherit (pkgs) nodejs_latest + typescript ; inherit @@ -88,6 +89,7 @@ in { inherit (pkgs) nodejs_latest + typescript ffmpeg-full ;