From 5e5c54aa833b2048bd7fbf9b7761b16918ccbe1a Mon Sep 17 00:00:00 2001 From: Seth Falco Date: Sun, 22 Feb 2026 22:06:59 +0000 Subject: [PATCH] chore: migrate to @sethfalco/eslint-config Just migrates the ESLint config from being defined directly from within this project to a @sethfalco/eslint-config package which centralized the config across all projects I maintain. --- .yarnrc.yml | 4 + eslint.config.mjs | 55 +---------- pa11y.js | 1 - package.json | 4 +- src/index.js | 1 - yarn.lock | 240 ++++++++++++++++++++++++++++++++++++++++++---- 6 files changed, 229 insertions(+), 76 deletions(-) diff --git a/.yarnrc.yml b/.yarnrc.yml index 4d33695..0795d85 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -3,3 +3,7 @@ enableTelemetry: false nodeLinker: pnpm npmRegistryServer: "https://registry.npmjs.org/" + +npmScopes: + sethfalco: + npmRegistryServer: 'https://gitlab.com/api/v4/packages/npm/' diff --git a/eslint.config.mjs b/eslint.config.mjs index 707e08c..9c611dc 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,54 +1,3 @@ -import js from '@eslint/js'; -import importPlugin from 'eslint-plugin-import'; -import globals from 'globals'; +import teapartyConfig from '@sethfalco/eslint-config'; -/** @type {import('eslint').Linter.Config[]} */ -export default [ - { - plugins: { - 'import': importPlugin, - } - }, - { - ignores: [ - '.yarn/**', - '.yarnrc.yml', - 'node_modules/**', - ], - }, - { - languageOptions: { - ecmaVersion: 'latest', - globals: { - ...globals.nodeBuiltin, - }, - }, - linterOptions: { - reportUnusedDisableDirectives: 'error', - }, - }, - js.configs.recommended, - { - files: ['**/*.js', '**/*.mjs'], - rules: { - curly: 'error', - quotes: ['error', 'single'], - 'no-unused-vars': ['error', { - 'argsIgnorePattern': '^_' - }], - 'one-var': ['error', 'never'], - strict: 'error', - // eslint-plugin-import - 'import/extensions': ['error', 'always'], - 'import/no-cycle': 'error', - 'import/order': [ - 'error', - { - alphabetize: { - order: 'asc', - }, - }, - ], - }, - }, -]; +export default teapartyConfig; diff --git a/pa11y.js b/pa11y.js index 2f2a4f8..50c0b0a 100644 --- a/pa11y.js +++ b/pa11y.js @@ -5,7 +5,6 @@ import puppeteer from 'puppeteer'; /** * @typedef {'light'|'dark'} ColorScheme - * * @typedef {object} TestCase * @property {string} name * @property {ColorScheme} colorScheme diff --git a/package.json b/package.json index 10f612c..54aa68f 100644 --- a/package.json +++ b/package.json @@ -46,12 +46,10 @@ "marked": "^16.4.1" }, "devDependencies": { - "@eslint/js": "^9.38.0", + "@sethfalco/eslint-config": "^1.1.0", "@types/html-minifier": "^4.0.5", "@types/node": "^24.8.1", "eslint": "^9.38.0", - "eslint-plugin-import": "^2.32.0", - "globals": "^14.0.0", "pa11y": "^9.1.0", "puppeteer": "^18.2.1", "resume-cli": "^3.1.2", diff --git a/src/index.js b/src/index.js index 2ce56b2..33c0d96 100644 --- a/src/index.js +++ b/src/index.js @@ -75,7 +75,6 @@ Handlebars.registerHelper('link', /** @param {string} body */(body) => { * @param {any} resume * @returns {boolean} * If the JSON Resume was modified. (i.e. was using outdated property names) - * * @see https://github.com/jsonresume/resume-schema/releases/tag/v0.0.17 * @see https://github.com/jsonresume/resume-schema/releases/tag/v0.0.12 */ diff --git a/yarn.lock b/yarn.lock index 0fa8bad..d9098ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,14 +23,34 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.8.0": - version: 4.9.0 - resolution: "@eslint-community/eslint-utils@npm:4.9.0" +"@es-joy/jsdoccomment@npm:~0.84.0": + version: 0.84.0 + resolution: "@es-joy/jsdoccomment@npm:0.84.0" + dependencies: + "@types/estree": "npm:^1.0.8" + "@typescript-eslint/types": "npm:^8.54.0" + comment-parser: "npm:1.4.5" + esquery: "npm:^1.7.0" + jsdoc-type-pratt-parser: "npm:~7.1.1" + checksum: 10c0/b5562c176dde36cd2956bb115b79229d2253b27d6d7e52820eb55c509f75a72048ae8ea8d57193b33be42728c1aa7a5ee20937b4967175291cb4ae60fdda318d + languageName: node + linkType: hard + +"@es-joy/resolve.exports@npm:1.2.0": + version: 1.2.0 + resolution: "@es-joy/resolve.exports@npm:1.2.0" + checksum: 10c0/7e4713471f5eccb17a925a12415a2d9e372a42376813a19f6abd9c35e8d01ab1403777265817da67c6150cffd4f558d9ad51e26a8de6911dad89d9cb7eedacd8 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.8.0, @eslint-community/eslint-utils@npm:^4.9.1": + version: 4.9.1 + resolution: "@eslint-community/eslint-utils@npm:4.9.1" dependencies: eslint-visitor-keys: "npm:^3.4.3" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10c0/8881e22d519326e7dba85ea915ac7a143367c805e6ba1374c987aa2fbdd09195cc51183d2da72c0e2ff388f84363e1b220fd0d19bef10c272c63455162176817 + checksum: 10c0/dc4ab5e3e364ef27e33666b11f4b86e1a6c1d7cbf16f0c6ff87b1619b3562335e9201a3d6ce806221887ff780ec9d828962a290bb910759fd40a674686503f02 languageName: node linkType: hard @@ -87,13 +107,20 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:9.38.0, @eslint/js@npm:^9.38.0": +"@eslint/js@npm:9.38.0": version: 9.38.0 resolution: "@eslint/js@npm:9.38.0" checksum: 10c0/b4a0d561ab93f0b1bc6a3f5e3f83764c9cccade59f2c54f1d718c1dcc71ac4d1be97bef7300cca641932d72e7555c79a7bf07e4e4ce1d0a1ddccc84d6440d2a6 languageName: node linkType: hard +"@eslint/js@npm:^9.39.3": + version: 9.39.3 + resolution: "@eslint/js@npm:9.39.3" + checksum: 10c0/df1c70d6681c8daf4a3c86dfac159fcd98a73c4620c4fbe2be6caab1f30a34c7de0ad88ab0e81162376d2cde1a2eed1c32eff5f917ca369870930a51f8e818f1 + languageName: node + linkType: hard + "@eslint/object-schema@npm:^2.1.7": version: 2.1.7 resolution: "@eslint/object-schema@npm:2.1.7" @@ -227,14 +254,12 @@ __metadata: version: 0.0.0-use.local resolution: "@jsonresume/jsonresume-theme-class@workspace:." dependencies: - "@eslint/js": "npm:^9.38.0" "@fluent/bundle": "npm:^0.19.1" "@fluent/langneg": "npm:^0.7.0" + "@sethfalco/eslint-config": "npm:^1.1.0" "@types/html-minifier": "npm:^4.0.5" "@types/node": "npm:^24.8.1" eslint: "npm:^9.38.0" - eslint-plugin-import: "npm:^2.32.0" - globals: "npm:^14.0.0" handlebars: "npm:^4.7.8" html-minifier: "npm:^4.0.0" marked: "npm:^16.4.1" @@ -305,6 +330,28 @@ __metadata: languageName: node linkType: hard +"@sethfalco/eslint-config@npm:^1.1.0": + version: 1.1.0 + resolution: "@sethfalco/eslint-config@npm:1.1.0::__archiveUrl=https%3A%2F%2Fgitlab.com%2Fapi%2Fv4%2Fprojects%2F79700456%2Fpackages%2Fnpm%2F%40sethfalco%2Feslint-config%2F-%2F%40sethfalco%2Feslint-config-1.1.0.tgz" + dependencies: + "@eslint/js": "npm:^9.39.3" + "@stylistic/eslint-plugin": "npm:^5.9.0" + eslint-plugin-import: "npm:^2.32.0" + eslint-plugin-jsdoc: "npm:^62.7.0" + globals: "npm:^14.0.0" + peerDependencies: + eslint: ^9 + checksum: 10c0/2f9f3a355cb5368c21cab4b91880cfb9a581612bf3f760f22d6b7c66088800f182a0ee22eecdd3e27f3ca60c03c9516dcca9fed5015109fb93870684c1fabcfd + languageName: node + linkType: hard + +"@sindresorhus/base62@npm:^1.0.0": + version: 1.0.0 + resolution: "@sindresorhus/base62@npm:1.0.0" + checksum: 10c0/9a14df0f058fdf4731c30f0f05728a4822144ee42236030039d7fa5a1a1072c2879feba8091fd4a17c8922d1056bc07bada77c31fddc3e15836fc05a266fd918 + languageName: node + linkType: hard + "@socket.io/component-emitter@npm:~3.1.0": version: 3.1.2 resolution: "@socket.io/component-emitter@npm:3.1.2" @@ -312,6 +359,22 @@ __metadata: languageName: node linkType: hard +"@stylistic/eslint-plugin@npm:^5.9.0": + version: 5.9.0 + resolution: "@stylistic/eslint-plugin@npm:5.9.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.9.1" + "@typescript-eslint/types": "npm:^8.56.0" + eslint-visitor-keys: "npm:^4.2.1" + espree: "npm:^10.4.0" + estraverse: "npm:^5.3.0" + picomatch: "npm:^4.0.3" + peerDependencies: + eslint: ^9.0.0 || ^10.0.0 + checksum: 10c0/d1953a08ea3df6b5a885509c9763b08d59c173e9c512146e1d2b99a7a377dab94aaabc81369d329c38b7e8434eb80a080a6973c0fd7003d7a8c69a4ccb6f5d05 + languageName: node + linkType: hard + "@tootallnate/quickjs-emscripten@npm:^0.23.0": version: 0.23.0 resolution: "@tootallnate/quickjs-emscripten@npm:0.23.0" @@ -354,7 +417,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:^1.0.6": +"@types/estree@npm:^1.0.6, @types/estree@npm:^1.0.8": version: 1.0.8 resolution: "@types/estree@npm:1.0.8" checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 @@ -469,6 +532,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:^8.54.0, @typescript-eslint/types@npm:^8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/types@npm:8.56.0" + checksum: 10c0/5deb4ebf5fa62f9f927f6aa45f7245aa03567e88941cd76e7b083175fd59fc40368a804ba7ff7581eac75706e42ddd5c77d2a60d6b1e76ab7865d559c9af9937 + languageName: node + linkType: hard + "abbrev@npm:^3.0.0": version: 3.0.1 resolution: "abbrev@npm:3.0.1" @@ -522,12 +592,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.15.0": - version: 8.15.0 - resolution: "acorn@npm:8.15.0" +"acorn@npm:^8.15.0, acorn@npm:^8.16.0": + version: 8.16.0 + resolution: "acorn@npm:8.16.0" bin: acorn: bin/acorn - checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec + checksum: 10c0/c9c52697227661b68d0debaf972222d4f622aa06b185824164e153438afa7b08273432ca43ea792cadb24dada1d46f6f6bb1ef8de9956979288cc1b96bf9914e languageName: node linkType: hard @@ -640,6 +710,13 @@ __metadata: languageName: node linkType: hard +"are-docs-informative@npm:^0.0.2": + version: 0.0.2 + resolution: "are-docs-informative@npm:0.0.2" + checksum: 10c0/f0326981bd699c372d268b526b170a28f2e1aec2cf99d7de0686083528427ecdf6ae41fef5d9988e224a5616298af747ad8a76e7306b0a7c97cc085a99636d60 + languageName: node + linkType: hard + "argparse@npm:^1.0.7": version: 1.0.10 resolution: "argparse@npm:1.0.10" @@ -1599,6 +1676,13 @@ __metadata: languageName: node linkType: hard +"comment-parser@npm:1.4.5": + version: 1.4.5 + resolution: "comment-parser@npm:1.4.5" + checksum: 10c0/6a6a74697c79927e3bd42bde9608a471f1a9d4995affbc22fa3364cc42b4017f82ef477431a1558b0b6bef959f9bb6964c01c1bbfc06a58ba1730dec9c423b44 + languageName: node + linkType: hard + "component-emitter@npm:^1.2.1, component-emitter@npm:^1.3.0": version: 1.3.1 resolution: "component-emitter@npm:1.3.1" @@ -2422,6 +2506,30 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-jsdoc@npm:^62.7.0": + version: 62.7.0 + resolution: "eslint-plugin-jsdoc@npm:62.7.0" + dependencies: + "@es-joy/jsdoccomment": "npm:~0.84.0" + "@es-joy/resolve.exports": "npm:1.2.0" + are-docs-informative: "npm:^0.0.2" + comment-parser: "npm:1.4.5" + debug: "npm:^4.4.3" + escape-string-regexp: "npm:^4.0.0" + espree: "npm:^11.1.0" + esquery: "npm:^1.7.0" + html-entities: "npm:^2.6.0" + object-deep-merge: "npm:^2.0.0" + parse-imports-exports: "npm:^0.2.4" + semver: "npm:^7.7.4" + spdx-expression-parse: "npm:^4.0.0" + to-valid-identifier: "npm:^1.0.0" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + checksum: 10c0/1847b7e59f2d01fec502fda347b6c9d44ffdeacb5e1e61a67c81cf504ce7d4540f5e9739f6bea30c95eea88ff7a09c6aafd348eda3d4e726fd773b89436a4de6 + languageName: node + linkType: hard + "eslint-scope@npm:^8.4.0": version: 8.4.0 resolution: "eslint-scope@npm:8.4.0" @@ -2446,6 +2554,13 @@ __metadata: languageName: node linkType: hard +"eslint-visitor-keys@npm:^5.0.1": + version: 5.0.1 + resolution: "eslint-visitor-keys@npm:5.0.1" + checksum: 10c0/16190bdf2cbae40a1109384c94450c526a79b0b9c3cb21e544256ed85ac48a4b84db66b74a6561d20fe6ab77447f150d711c2ad5ad74df4fcc133736bce99678 + languageName: node + linkType: hard + "eslint@npm:^9.38.0": version: 9.38.0 resolution: "eslint@npm:9.38.0" @@ -2506,6 +2621,17 @@ __metadata: languageName: node linkType: hard +"espree@npm:^11.1.0": + version: 11.1.1 + resolution: "espree@npm:11.1.1" + dependencies: + acorn: "npm:^8.16.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^5.0.1" + checksum: 10c0/2feae74efdfb037b9e9fcb30506799845cf20900de5e441ed03e5c51aaa249f85ea5818ff177682acc0c9bfb4ac97e1965c238ee44ac7c305aab8747177bab69 + languageName: node + linkType: hard + "esprima@npm:^4.0.0, esprima@npm:^4.0.1": version: 4.0.1 resolution: "esprima@npm:4.0.1" @@ -2516,12 +2642,12 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.5.0": - version: 1.6.0 - resolution: "esquery@npm:1.6.0" +"esquery@npm:^1.5.0, esquery@npm:^1.7.0": + version: 1.7.0 + resolution: "esquery@npm:1.7.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 + checksum: 10c0/77d5173db450b66f3bc685d11af4c90cffeedb340f34a39af96d43509a335ce39c894fd79233df32d38f5e4e219fa0f7076f6ec90bae8320170ba082c0db4793 languageName: node linkType: hard @@ -2534,7 +2660,7 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 @@ -3279,6 +3405,13 @@ __metadata: languageName: node linkType: hard +"html-entities@npm:^2.6.0": + version: 2.6.0 + resolution: "html-entities@npm:2.6.0" + checksum: 10c0/7c8b15d9ea0cd00dc9279f61bab002ba6ca8a7a0f3c36ed2db3530a67a9621c017830d1d2c1c65beb9b8e3436ea663e9cf8b230472e0e413359399413b27c8b7 + languageName: node + linkType: hard + "html-minifier@npm:^4.0.0": version: 4.0.0 resolution: "html-minifier@npm:4.0.0" @@ -4071,6 +4204,13 @@ __metadata: languageName: node linkType: hard +"jsdoc-type-pratt-parser@npm:~7.1.1": + version: 7.1.1 + resolution: "jsdoc-type-pratt-parser@npm:7.1.1" + checksum: 10c0/5a5216a75962b3a8a3a1e7e09a19b31b5a373c06c726a00b081480daee00196250d4acc8dfbecc0a7846d439a5bcf4a326df6348b879cf95f60c62ce5818dadb + languageName: node + linkType: hard + "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" @@ -4830,6 +4970,13 @@ __metadata: languageName: node linkType: hard +"object-deep-merge@npm:^2.0.0": + version: 2.0.0 + resolution: "object-deep-merge@npm:2.0.0" + checksum: 10c0/69e8741131ad49fa8720fb96007a3c82dca1119b5d874151d2ecbcc3b44ccd46e8553c7a30b0abcba752c099ba361bbba97f33a68c9ae54c57eed7be116ffc97 + languageName: node + linkType: hard + "object-inspect@npm:^1.13.3, object-inspect@npm:^1.13.4": version: 1.13.4 resolution: "object-inspect@npm:1.13.4" @@ -5122,6 +5269,15 @@ __metadata: languageName: node linkType: hard +"parse-imports-exports@npm:^0.2.4": + version: 0.2.4 + resolution: "parse-imports-exports@npm:0.2.4" + dependencies: + parse-statements: "npm:1.0.11" + checksum: 10c0/51b729037208abdf65c4a1f8e9ed06f4e7ccd907c17c668a64db54b37d95bb9e92081f8b16e4133e14102af3cb4e89870975b6ad661b4d654e9ec8f4fb5c77d6 + languageName: node + linkType: hard + "parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": version: 5.2.0 resolution: "parse-json@npm:5.2.0" @@ -5134,6 +5290,13 @@ __metadata: languageName: node linkType: hard +"parse-statements@npm:1.0.11": + version: 1.0.11 + resolution: "parse-statements@npm:1.0.11" + checksum: 10c0/48960e085019068a5f5242e875fd9d21ec87df2e291acf5ad4e4887b40eab6929a8c8d59542acb85a6497e870c5c6a24f5ab7f980ef5f907c14cc5f7984a93f3 + languageName: node + linkType: hard + "parseurl@npm:~1.3.2": version: 1.3.3 resolution: "parseurl@npm:1.3.3" @@ -5711,6 +5874,13 @@ __metadata: languageName: node linkType: hard +"reserved-identifiers@npm:^1.0.0": + version: 1.2.0 + resolution: "reserved-identifiers@npm:1.2.0" + checksum: 10c0/b82651b12e6c608e80463c3753d275bc20fd89294d0415f04e670aeec3611ae3582ddc19e8fedd497e7d0bcbfaddab6a12823ec86e855b1e6a245e0a734eb43d + languageName: node + linkType: hard + "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -6282,6 +6452,30 @@ __metadata: languageName: node linkType: hard +"spdx-exceptions@npm:^2.1.0": + version: 2.5.0 + resolution: "spdx-exceptions@npm:2.5.0" + checksum: 10c0/37217b7762ee0ea0d8b7d0c29fd48b7e4dfb94096b109d6255b589c561f57da93bf4e328c0290046115961b9209a8051ad9f525e48d433082fc79f496a4ea940 + languageName: node + linkType: hard + +"spdx-expression-parse@npm:^4.0.0": + version: 4.0.0 + resolution: "spdx-expression-parse@npm:4.0.0" + dependencies: + spdx-exceptions: "npm:^2.1.0" + spdx-license-ids: "npm:^3.0.0" + checksum: 10c0/965c487e77f4fb173f1c471f3eef4eb44b9f0321adc7f93d95e7620da31faa67d29356eb02523cd7df8a7fc1ec8238773cdbf9e45bd050329d2b26492771b736 + languageName: node + linkType: hard + +"spdx-license-ids@npm:^3.0.0": + version: 3.0.23 + resolution: "spdx-license-ids@npm:3.0.23" + checksum: 10c0/8495620f6f2a237749cce922ea2d593a66f7885c301b1a0f5542183e7041182f27f616a8f13345cefdea0c9b3e0899328e0aa8cec100cf4f3fac4bb3bd975515 + languageName: node + linkType: hard + "split-string@npm:^3.0.1, split-string@npm:^3.0.2": version: 3.1.0 resolution: "split-string@npm:3.1.0" @@ -6718,6 +6912,16 @@ __metadata: languageName: node linkType: hard +"to-valid-identifier@npm:^1.0.0": + version: 1.0.0 + resolution: "to-valid-identifier@npm:1.0.0" + dependencies: + "@sindresorhus/base62": "npm:^1.0.0" + reserved-identifiers: "npm:^1.0.0" + checksum: 10c0/569b49f43b5aaaa20677e67f0f1cdcff344855149934cfb80c793c7ac7c30e191b224bc81cab40fb57641af9ca73795c78053c164a2addc617671e2d22c13a4a + languageName: node + linkType: hard + "toidentifier@npm:1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1"