From b25bb9df077e31a74225bad257c409a6ccfd7497 Mon Sep 17 00:00:00 2001 From: "David I. Lehn" Date: Fri, 8 Aug 2025 16:32:29 -0400 Subject: [PATCH 01/10] Update to eslint@9. - Update dependencies. - Update eslint config. --- CHANGELOG.md | 5 ++++ .eslintrc.cjs => eslint.config.js | 46 +++++++++++++++++++++---------- package.json | 14 +++++----- 3 files changed, 44 insertions(+), 21 deletions(-) rename .eslintrc.cjs => eslint.config.js (51%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41e2e9a8..cdfa8e9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # `@bedrock/core` ChangeLog +## 6.3.1 - 2025-08-xx + +### Changed +- Update to support `eslint@9`. + ## 6.3.0 - 2024-11-19 ### Added diff --git a/.eslintrc.cjs b/eslint.config.js similarity index 51% rename from .eslintrc.cjs rename to eslint.config.js index d4246a05..b0419fa3 100644 --- a/.eslintrc.cjs +++ b/eslint.config.js @@ -15,19 +15,37 @@ * * SPDX-License-Identifier: Apache-2.0 */ -module.exports = { - root: true, - env: { - node: true +import globals from 'globals'; + +import digitalbazaar from 'eslint-config-digitalbazaar'; +import digitalbazaarJsdoc from 'eslint-config-digitalbazaar/jsdoc'; +import digitalbazaarModule from 'eslint-config-digitalbazaar/module'; + +export default [ + { + languageOptions: { + globals: { + ...globals.node + } + } }, - extends: [ - 'digitalbazaar', - 'digitalbazaar/jsdoc', - 'digitalbazaar/module' - ], - ignorePatterns: ['node_modules/'], - rules: { - 'unicorn/prefer-node-protocol': 'error' + ...digitalbazaar, + ...digitalbazaarJsdoc, + ...digitalbazaarModule, + { + rules: { + 'unicorn/prefer-node-protocol': 'error' + } + }, + { + files: [ + 'test/mocha/**/*.js' + ], + languageOptions: { + globals: { + ...globals.mocha, + should: true + } + } } -}; - +]; diff --git a/package.json b/package.json index cc15c041..b67c6619 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ ], "scripts": { "start": "node index.js", - "lint": "eslint ." + "lint": "eslint" }, "repository": { "type": "git", @@ -36,12 +36,12 @@ "winston-transport": "^4.5.0" }, "devDependencies": { - "eslint": "^8.57.0", - "eslint-config-digitalbazaar": "^5.0.1", - "eslint-plugin-jsdoc": "^50.4.1", - "eslint-plugin-unicorn": "^56.0.0", - "jsdoc": "^4.0.2", - "jsdoc-to-markdown": "^9.0.2" + "eslint": "^9.32.0", + "eslint-config-digitalbazaar": "github:digitalbazaar/eslint-config-digitalbazaar#use-eslint-v9", + "eslint-plugin-jsdoc": "^52.0.4", + "eslint-plugin-unicorn": "^60.0.0", + "globals": "^16.3.0", + "jsdoc": "^4.0.4" }, "engines": { "node": ">=18" From c6a7b51c860abcfa4412a7b74ec126e30dc2031e Mon Sep 17 00:00:00 2001 From: "David I. Lehn" Date: Fri, 8 Aug 2025 16:34:41 -0400 Subject: [PATCH 02/10] Fix lint issues. --- lib/helpers.js | 2 +- lib/index.js | 4 +++- lib/loggers/index.js | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/helpers.js b/lib/helpers.js index 5341a240..66803fc1 100644 --- a/lib/helpers.js +++ b/lib/helpers.js @@ -16,7 +16,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -// eslint-disable-next-line max-len +// eslint-disable-next-line @stylistic/max-len const PROPERTY_REGEX = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; const ESCAPE_REGEX = /\\(\\)?/g; diff --git a/lib/index.js b/lib/index.js index 3e79d439..87d002b5 100644 --- a/lib/index.js +++ b/lib/index.js @@ -797,5 +797,7 @@ async function _logExit(code) { logger.end(); }); await p; - } finally {} + } finally { + // contine regardles of error + } } diff --git a/lib/loggers/index.js b/lib/loggers/index.js index b1365fc9..e1eb86bb 100644 --- a/lib/loggers/index.js +++ b/lib/loggers/index.js @@ -87,7 +87,7 @@ container.add = function(id) { const child = createChild.apply(wrapper, [childMeta]); // if child `defaultMeta` is not set, add it to ensure that the parent // meta is included - if(!Object.hasOwnProperty(child, 'defaultMeta')) { + if(!Object.prototype.hasOwnProperty.call(child, 'defaultMeta')) { child.defaultMeta = {...wrapper.defaultMeta, ...childMeta}; } return child; From 3e6fe91eb58288f35ca91b4f5beb65db3282b4c3 Mon Sep 17 00:00:00 2001 From: "David I. Lehn" Date: Wed, 27 Aug 2025 23:18:50 -0400 Subject: [PATCH 03/10] Remove old eslint config. --- test/mocha/.eslintrc | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 test/mocha/.eslintrc diff --git a/test/mocha/.eslintrc b/test/mocha/.eslintrc deleted file mode 100644 index f9f50226..00000000 --- a/test/mocha/.eslintrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "env": { - "mocha": true - }, - "globals": { - "assertNoError": true, - "should": true - } -} From f3f546d37087d673c18bb3d10ae04079222008c1 Mon Sep 17 00:00:00 2001 From: "David I. Lehn" Date: Wed, 27 Aug 2025 23:22:20 -0400 Subject: [PATCH 04/10] Use eslint recommended config. --- eslint.config.js | 33 ++------------------------------- package.json | 7 +++---- 2 files changed, 5 insertions(+), 35 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index b0419fa3..f38f051e 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -15,37 +15,8 @@ * * SPDX-License-Identifier: Apache-2.0 */ -import globals from 'globals'; - -import digitalbazaar from 'eslint-config-digitalbazaar'; -import digitalbazaarJsdoc from 'eslint-config-digitalbazaar/jsdoc'; -import digitalbazaarModule from 'eslint-config-digitalbazaar/module'; +import config from '@digitalbazaar/eslint-config/node-recommended'; export default [ - { - languageOptions: { - globals: { - ...globals.node - } - } - }, - ...digitalbazaar, - ...digitalbazaarJsdoc, - ...digitalbazaarModule, - { - rules: { - 'unicorn/prefer-node-protocol': 'error' - } - }, - { - files: [ - 'test/mocha/**/*.js' - ], - languageOptions: { - globals: { - ...globals.mocha, - should: true - } - } - } + ...config ]; diff --git a/package.json b/package.json index b67c6619..7712ed3f 100644 --- a/package.json +++ b/package.json @@ -36,11 +36,10 @@ "winston-transport": "^4.5.0" }, "devDependencies": { - "eslint": "^9.32.0", - "eslint-config-digitalbazaar": "github:digitalbazaar/eslint-config-digitalbazaar#use-eslint-v9", - "eslint-plugin-jsdoc": "^52.0.4", + "@digitalbazaar/eslint-config": "github:digitalbazaar/eslint-config-digitalbazaar#use-eslint-v9", + "eslint": "^9.34.0", + "eslint-plugin-jsdoc": "^54.1.1", "eslint-plugin-unicorn": "^60.0.0", - "globals": "^16.3.0", "jsdoc": "^4.0.4" }, "engines": { From 7821049c6d435f2bf0524b06cfe004975363c479 Mon Sep 17 00:00:00 2001 From: "David I. Lehn" Date: Wed, 27 Aug 2025 23:24:16 -0400 Subject: [PATCH 05/10] Fix lint issues. --- lib/index.js | 2 +- lib/loggers/fileLogger.js | 6 +++--- lib/loggers/formatters.js | 8 ++++---- lib/loggers/index.js | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/index.js b/lib/index.js index 87d002b5..5b833c63 100644 --- a/lib/index.js +++ b/lib/index.js @@ -552,7 +552,7 @@ async function _runWorker(startTime) { if(config.ensureConfigOverride.enable) { configOverrideSnapshot = _snapshotOverrideFields({ config, - fields: config.ensureConfigOverride.fields, + fields: config.ensureConfigOverride.fields }); } diff --git a/lib/loggers/fileLogger.js b/lib/loggers/fileLogger.js index d067d0a4..8488bc3d 100644 --- a/lib/loggers/fileLogger.js +++ b/lib/loggers/fileLogger.js @@ -36,15 +36,15 @@ cc({ export async function init({transports}) { transports.app = new winston.transports.File({ ...config.loggers.app, - format: formatters.fromConfig(config.loggers.app.bedrock), + format: formatters.fromConfig(config.loggers.app.bedrock) }); transports.access = new winston.transports.File({ ...config.loggers.access, - format: formatters.fromConfig(config.loggers.access.bedrock), + format: formatters.fromConfig(config.loggers.access.bedrock) }); transports.error = new winston.transports.File({ ...config.loggers.error, - format: formatters.fromConfig(config.loggers.error.bedrock), + format: formatters.fromConfig(config.loggers.error.bedrock) }); // ensure all files are created and have ownership set to the diff --git a/lib/loggers/formatters.js b/lib/loggers/formatters.js index 4774b177..8fdbd776 100644 --- a/lib/loggers/formatters.js +++ b/lib/loggers/formatters.js @@ -31,7 +31,7 @@ export const bedrock = format(info => { splat: undefined, timestamp: undefined, workerId: undefined, - workerPid: undefined, + workerPid: undefined }, null, 2); const workerInfo = `workerPid=${workerPid}, workerId=${workerId}`; if(stringifiedRest !== '{}') { @@ -89,7 +89,7 @@ export function fromConfig(config) { } fmts.push( format.timestamp(), - modulePrefix(), + modulePrefix() ); if(colorize) { fmts.push(format.colorize()); @@ -99,12 +99,12 @@ export function fromConfig(config) { } else if(formatter === 'json') { fmt = format.combine( format.timestamp(), - format.json(), + format.json() ); } else if(formatter === 'logstash') { fmt = format.combine( format.timestamp(), - format.logstash(), + format.logstash() ); } } else { diff --git a/lib/loggers/index.js b/lib/loggers/index.js index e1eb86bb..35097bae 100644 --- a/lib/loggers/index.js +++ b/lib/loggers/index.js @@ -104,7 +104,7 @@ if(cluster.isPrimary) { access: null, app: null, console: null, - error: null, + error: null }; } @@ -119,7 +119,7 @@ container.init = async () => { const transports = container.transports; transports.console = new winston.transports.Console({ ...config.loggers.console, - format: formatters.fromConfig(config.loggers.console.bedrock), + format: formatters.fromConfig(config.loggers.console.bedrock) }); if(config.loggers.enableFileTransport) { From 8d0be9ac2cd460d7f5769923776bac059b207536 Mon Sep 17 00:00:00 2001 From: "David I. Lehn" Date: Tue, 2 Sep 2025 19:11:45 -0400 Subject: [PATCH 06/10] Update `@digitalbazaar/eslint-config` dependency. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 7712ed3f..32180d1c 100644 --- a/package.json +++ b/package.json @@ -36,9 +36,9 @@ "winston-transport": "^4.5.0" }, "devDependencies": { - "@digitalbazaar/eslint-config": "github:digitalbazaar/eslint-config-digitalbazaar#use-eslint-v9", + "@digitalbazaar/eslint-config": "^6.0.0", "eslint": "^9.34.0", - "eslint-plugin-jsdoc": "^54.1.1", + "eslint-plugin-jsdoc": "^54.3.0", "eslint-plugin-unicorn": "^60.0.0", "jsdoc": "^4.0.4" }, From ed9a1f86366176988e7fee166ffde90a37fe8878 Mon Sep 17 00:00:00 2001 From: "David I. Lehn" Date: Wed, 3 Sep 2025 14:22:43 -0400 Subject: [PATCH 07/10] Fix typo. Co-authored-by: Dave Longley --- lib/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/index.js b/lib/index.js index 5b833c63..058235d4 100644 --- a/lib/index.js +++ b/lib/index.js @@ -798,6 +798,6 @@ async function _logExit(code) { }); await p; } finally { - // contine regardles of error + // continue regardless of error } } From d009a5542bba225ea82cb3826b4462c17fef387e Mon Sep 17 00:00:00 2001 From: "David I. Lehn" Date: Mon, 22 Sep 2025 17:37:32 -0400 Subject: [PATCH 08/10] Update eslint dependencies. --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 32180d1c..afdad505 100644 --- a/package.json +++ b/package.json @@ -36,10 +36,10 @@ "winston-transport": "^4.5.0" }, "devDependencies": { - "@digitalbazaar/eslint-config": "^6.0.0", - "eslint": "^9.34.0", - "eslint-plugin-jsdoc": "^54.3.0", - "eslint-plugin-unicorn": "^60.0.0", + "@digitalbazaar/eslint-config": "^6.1.0", + "eslint": "^9.36.0", + "eslint-plugin-jsdoc": "^60.1.1", + "eslint-plugin-unicorn": "^61.0.2", "jsdoc": "^4.0.4" }, "engines": { From fd99e583901a9943c8b8f13285fa3ab6f91167e6 Mon Sep 17 00:00:00 2001 From: "David I. Lehn" Date: Mon, 22 Sep 2025 17:58:06 -0400 Subject: [PATCH 09/10] Updated test node versions. --- .github/workflows/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9e87e1b0..72f8645c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -24,7 +24,7 @@ jobs: timeout-minutes: 10 strategy: matrix: - node-version: [20.x] + node-version: [24.x] steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} @@ -40,7 +40,7 @@ jobs: timeout-minutes: 10 strategy: matrix: - node-version: [18.x, 20.x] + node-version: [18.x, 20.x, 22.x, 24.x] steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} @@ -61,7 +61,7 @@ jobs: timeout-minutes: 10 strategy: matrix: - node-version: [20.x] + node-version: [24.x] steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} From d5f153c22697cca090212ec047110333233f1c6b Mon Sep 17 00:00:00 2001 From: "David I. Lehn" Date: Mon, 22 Sep 2025 19:16:13 -0400 Subject: [PATCH 10/10] Update `@digitalbazaar/eslint-config`. - Uses latest peer deps. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index afdad505..5de457a7 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "winston-transport": "^4.5.0" }, "devDependencies": { - "@digitalbazaar/eslint-config": "^6.1.0", + "@digitalbazaar/eslint-config": "^6.2.0", "eslint": "^9.36.0", "eslint-plugin-jsdoc": "^60.1.1", "eslint-plugin-unicorn": "^61.0.2",