From a7035fd061ce9c97ad810a7e65883c2bb76c626b Mon Sep 17 00:00:00 2001 From: Jamie King Date: Wed, 3 Apr 2024 12:26:53 -0700 Subject: [PATCH] chore: update deps & consolidate eslint configs (#1364) - eslint-config-amex@16.1.0 - @americanexpress/one-app-server-bundler@1.1.0 - @fastify/compress@7.0.3 - @fastify/static@7.0.2 - prom-client@15.1.1 - @babel/cli@7.24.1 - @babel/core@7.24.3 - @commitlint/cli@19.2.1 - pino-pretty@11.0.0 - rollup@4.13.2 - tar@6.2.1 --- .eslintrc.js | 152 ++++++ .eslintrc.json | 71 --- __performance__/scripts/load.js | 2 - __performance__/scripts/smoke.js | 2 - __performance__/scripts/soak.js | 2 - __performance__/scripts/spike.js | 2 - __performance__/scripts/stress.js | 2 - __tests__/client/initClient.spec.js | 2 - __tests__/client/prerender.spec.js | 3 - __tests__/integration/one-app.spec.js | 6 +- __tests__/server/index.spec.js | 2 - __tests__/server/metrics/counters.spec.js | 4 - __tests__/server/metrics/gauges.spec.js | 4 - __tests__/server/metrics/summaries.spec.js | 4 - docs/guides/Making-An-Api-Call.md | 1 - docs/guides/Publishing-Modules.md | 2 - one-app-statics/postinstall.js | 1 - package-lock.json | 440 +++++++++--------- package.json | 22 +- prod-sample/api/.eslintrc.json | 5 - prod-sample/sample-modules/.eslintrc.json | 9 - .../cultured-frankie/0.0.0/package.json | 2 +- .../cultured-frankie/0.0.1/package.json | 2 +- .../frank-lloyd-root/0.0.0/package.json | 4 +- .../frank-lloyd-root/0.0.0/src/getIP.js | 2 +- .../frank-lloyd-root/0.0.1/package.json | 2 +- .../frank-lloyd-root/0.0.1/src/getIP.js | 2 +- .../frank-lloyd-root/0.0.2/package.json | 2 +- .../frank-lloyd-root/0.0.2/src/getIP.js | 2 +- .../frank-lloyd-root/0.0.3/package.json | 2 +- .../0.0.3/src/createFrankLikeFetch.js | 2 +- .../frank-lloyd-root/0.0.3/src/getIP.js | 2 +- .../frank-the-parrot/0.0.0/package.json | 2 +- .../franks-burgers/0.0.0/package.json | 2 +- .../healthy-frank/0.0.0/package.json | 2 +- .../late-frank/0.0.0/package.json | 2 +- .../late-frank/0.0.1/package.json | 2 +- .../late-frank/0.0.2/package.json | 2 +- .../needy-frank/0.0.0/package.json | 2 +- .../needy-frank/0.0.1/package.json | 2 +- .../picky-frank/0.0.0/package.json | 2 +- .../picky-frank/0.0.1/package.json | 2 +- .../preview-frank/0.0.0/package.json | 5 +- .../preview-frank/0.0.0/src/duck.js | 3 +- .../0.0.0/src/utils/getDemoProps.js | 4 +- .../ssr-frank/0.0.0/package.json | 2 +- .../unhealthy-frank/0.0.0/package.json | 2 +- .../vitruvius-franklin/0.0.0/package.json | 2 +- .../vitruvius-franklin/0.0.1/package.json | 2 +- scripts/.eslintrc.json | 8 - scripts/build-sample-modules.js | 2 - scripts/dangers/.eslintrc.json | 11 - scripts/deploy-prod-sample-module.js | 5 - scripts/set-dev-endpoints.js | 1 - src/client/initClient.jsx | 4 +- src/client/prerender.js | 2 - src/client/publicPath.js | 3 +- src/client/service-worker/.eslintrc.json | 24 - src/server/devHolocronCDN.js | 3 - src/server/index.js | 1 - src/server/utils/devCdnFactory.js | 3 - .../utils/logging/config/development.js | 1 - src/server/utils/watchLocalModules.js | 3 - 63 files changed, 412 insertions(+), 461 deletions(-) create mode 100644 .eslintrc.js delete mode 100644 .eslintrc.json delete mode 100644 prod-sample/api/.eslintrc.json delete mode 100644 prod-sample/sample-modules/.eslintrc.json delete mode 100644 scripts/.eslintrc.json delete mode 100644 scripts/dangers/.eslintrc.json delete mode 100644 src/client/service-worker/.eslintrc.json diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 000000000..f80465950 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,152 @@ +/* + * Copyright 2024 American Express Travel Related Services Company, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +const allowedDangles = [ + // one-app + '__INITIAL_STATE__', + '__render_mode__', + // holocron + '__CLIENT_HOLOCRON_MODULE_MAP__', + '__HOLOCRON_EXTERNALS__', + // redux + '__REDUX_DEVTOOLS_EXTENSION_COMPOSE__', + // prom-client + '_metrics', + // lean-intl + '__addLocaleData', + // webpack + '__webpack_public_path__', +]; + +module.exports = { + root: true, + extends: 'amex', + plugins: ['es'], + parserOptions: { + babelOptions: { + presets: ['@babel/preset-react'], + }, + }, + rules: { + 'unicorn/prefer-node-protocol': 'error', + 'eslint-comments/require-description': ['error', { ignore: ['eslint-enable'] }], + 'no-underscore-dangle': ['error', { allow: allowedDangles }], + 'default-param-last': 0, + }, + overrides: [ + { + files: ['__performance__/**'], + globals: { + __ENV: true, + }, + rules: { + // These scripts are not run directly, and the k6 package is a placeholder + 'import/no-unresolved': ['error', { ignore: ['k6'] }], + }, + }, + { + files: [ + '**/__mocks__/**', + '**/__tests__/**', + ], + extends: 'amex/test', + rules: { + // a lot of tests require changing the environment the file is started in + 'global-require': 0, + // this is a server, a lot of console spies are added + 'no-console': 0, + 'no-underscore-dangle': ['error', { allow: allowedDangles }], + }, + }, + { + files: ['src/server/**'], + rules: { + // console methods are how we log events + 'no-console': 0, + }, + }, + { + files: [ + // Parts of the server that are only used in development + 'src/server/devHolocronCDN.js', + 'src/server/utils/devCdnFactory.js', + 'src/server/utils/watchLocalModules.js', + 'src/server/utils/logging/config/development.js', + // Client service worker just needs `@americanexpress/one-service-worker` at build time + 'src/client/service-worker/**', + ], + rules: { + 'import/no-extraneous-dependencies': ['error', { devDependencies: true }], + }, + }, + { + files: ['src/client/service-worker/**'], + rules: { + // for clearer error reporting, having anonymous functions may inhibit us from + // collecting a concise stack trace with the proper names of invoked functions + 'prefer-arrow-callback': 'off', + // generally, self is acceptable to use in a service worker script + // we want to allow this behavior throughout + 'no-restricted-globals': ['off', 'self'], + }, + }, + { + // Allow console logs in documentation + files: ['**/*.md/*.{js,javascript,jsx,node}'], + rules: { + 'no-console': 0, + }, + }, + { + files: ['prod-sample/**'], + rules: { + 'import/no-unresolved': 'off', + }, + }, + { + files: ['prod-sample/sample-modules/**'], + rules: { + 'react/no-unknown-property': ['error', { ignore: ['css'] }], + }, + }, + { + files: [ + 'scripts/**', + 'one-app-statics/**', + ], + rules: { + // these scripts should be used only during development + 'import/no-extraneous-dependencies': ['error', { devDependencies: true, optionalDependencies: true, peerDependencies: false }], + // we need to message the user for DX + 'no-console': 'off', + 'global-require': 'off', + 'import/no-dynamic-require': 'off', + }, + }, + { + files: ['scripts/dangers/**'], + globals: { + danger: 'readonly', + fail: 'readonly', + markdown: 'readonly', + message: 'readonly', + peril: 'readonly', + schedule: 'readonly', + warn: 'readonly', + }, + }, + ], +}; diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 724d7747f..000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "root": true, - "extends": "amex", - "plugins": [ - "es" - ], - "parserOptions": { - "babelOptions": { - "presets": [ - "@babel/preset-react" - ] - } - }, - "rules": { - "unicorn/prefer-node-protocol": "error", - "eslint-comments/require-description": [ - "error", - { - "ignore": [ - "eslint-enable" - ] - } - ], - "default-param-last": 0 - }, - "overrides": [ - { - "files": [ - "__performance__/**" - ], - "globals": { - "__ENV": true - } - }, - { - "files": [ - "**/__mocks__/**" - ], - "extends": "amex/test" - }, - { - "files": [ - "**/__tests__/**" - ], - "extends": "amex/test", - "rules": { - // a lot of tests require changing the environment the file is started in - "global-require": 0, - // this is a server, a lot of console spys are added - "no-console": 0 - } - }, - { - "files": [ - "src/server/**" - ], - "rules": { - // console methods are how we log events - "no-console": 0 - } - }, - { - "files": [ - "**/*.md" - ], - "rules": { - "no-console": 0 - } - } - ] -} \ No newline at end of file diff --git a/__performance__/scripts/load.js b/__performance__/scripts/load.js index 285a68334..78a59fe16 100644 --- a/__performance__/scripts/load.js +++ b/__performance__/scripts/load.js @@ -14,10 +14,8 @@ * permissions and limitations under the License. */ -/* eslint-disable import/no-unresolved -- performance scripts are not ran directly */ import http from 'k6/http'; import { check, sleep } from 'k6'; -/* eslint-enable import/no-unresolved */ export const options = { stages: [ diff --git a/__performance__/scripts/smoke.js b/__performance__/scripts/smoke.js index 811ef94e6..85b00d109 100644 --- a/__performance__/scripts/smoke.js +++ b/__performance__/scripts/smoke.js @@ -14,10 +14,8 @@ * permissions and limitations under the License. */ -/* eslint-disable import/no-unresolved -- performance scripts are not ran directly */ import http from 'k6/http'; import { check, sleep } from 'k6'; -/* eslint-enable import/no-unresolved */ // This is a simple smoke test to ensure there is no major regression // to the one-app server. diff --git a/__performance__/scripts/soak.js b/__performance__/scripts/soak.js index 9659b8213..16321c3f5 100644 --- a/__performance__/scripts/soak.js +++ b/__performance__/scripts/soak.js @@ -14,10 +14,8 @@ * permissions and limitations under the License. */ -/* eslint-disable import/no-unresolved -- performance scripts are not ran directly */ import http from 'k6/http'; import { check, sleep } from 'k6'; -/* eslint-enable import/no-unresolved */ export const options = { stages: [ diff --git a/__performance__/scripts/spike.js b/__performance__/scripts/spike.js index a8138d5a5..730af0966 100644 --- a/__performance__/scripts/spike.js +++ b/__performance__/scripts/spike.js @@ -14,10 +14,8 @@ * permissions and limitations under the License. */ -/* eslint-disable import/no-unresolved -- performance scripts are not ran directly */ import http from 'k6/http'; import { check, sleep } from 'k6'; -/* eslint-enable import/no-unresolved */ export const options = { stages: [ diff --git a/__performance__/scripts/stress.js b/__performance__/scripts/stress.js index 6bb172766..aa203ace6 100644 --- a/__performance__/scripts/stress.js +++ b/__performance__/scripts/stress.js @@ -14,10 +14,8 @@ * permissions and limitations under the License. */ -/* eslint-disable import/no-unresolved -- performance scripts are not ran directly */ import http from 'k6/http'; import { check, sleep } from 'k6'; -/* eslint-enable import/no-unresolved */ export const options = { stages: [ diff --git a/__tests__/client/initClient.spec.js b/__tests__/client/initClient.spec.js index 3d237cc84..4634563a4 100644 --- a/__tests__/client/initClient.spec.js +++ b/__tests__/client/initClient.spec.js @@ -64,7 +64,6 @@ describe('initClient', () => { beforeEach(() => { global.fetch = jest.fn(() => Promise.resolve()); - // eslint-disable-next-line no-underscore-dangle -- private API global.__CLIENT_HOLOCRON_MODULE_MAP__ = clientHolocronModuleMap; jest.resetModules(); jest.clearAllMocks(); @@ -145,7 +144,6 @@ describe('initClient', () => { loadPrerenderScripts.mockReturnValueOnce(Promise.resolve()); promiseResolveSpy.mockRestore(); - // eslint-disable-next-line no-underscore-dangle -- private API global.__render_mode__ = 'render'; const initClient = require('../../src/client/initClient').default; diff --git a/__tests__/client/prerender.spec.js b/__tests__/client/prerender.spec.js index 52462df39..5ad52e050 100644 --- a/__tests__/client/prerender.spec.js +++ b/__tests__/client/prerender.spec.js @@ -61,12 +61,10 @@ describe('initializeClientStore', () => { }); afterEach(() => { - // eslint-disable-next-line no-underscore-dangle -- private API global.__INITIAL_STATE__ = undefined; }); it('should create the store with initial state if it exists', async () => { - // eslint-disable-next-line no-underscore-dangle -- private API global.__INITIAL_STATE__ = fromJS({ some: 'state' }); initializeClientStore(); @@ -78,7 +76,6 @@ describe('initializeClientStore', () => { } = createHolocronStore.mock.calls[0][0]; await expect(fetchClient()).resolves.toEqual({ data: 'data', timeout: 6000 }); - // eslint-disable-next-line no-underscore-dangle -- private API expect(transitFromJson).toHaveBeenCalledWith(global.__INITIAL_STATE__); expect(createHolocronStore).toHaveBeenCalledWith({ enhancer: 'enhancer', initialState: 'initial state', reducer: 'reducers', extraThunkArguments: { fetchClient }, diff --git a/__tests__/integration/one-app.spec.js b/__tests__/integration/one-app.spec.js index c321da486..6a7cef8f8 100644 --- a/__tests__/integration/one-app.spec.js +++ b/__tests__/integration/one-app.spec.js @@ -1567,7 +1567,7 @@ describe('Tests that require Docker setup', () => { 'one-app-version': [expect.any(String)], 'referrer-policy': ['same-origin'], 'strict-transport-security': ['max-age=63072000; includeSubDomains'], - vary: ['Accept-Encoding, accept-encoding'], + vary: ['Accept-Encoding'], 'x-content-type-options': ['nosniff'], 'x-dns-prefetch-control': ['off'], 'x-download-options': ['noopen'], @@ -1632,7 +1632,7 @@ describe('Tests that require Docker setup', () => { 'referrer-policy': ['no-referrer'], 'strict-transport-security': ['max-age=63072000; includeSubDomains'], traceid: [expect.any(String)], - vary: ['Accept-Encoding, accept-encoding'], + vary: ['Accept-Encoding'], 'x-content-type-options': ['nosniff'], 'x-dns-prefetch-control': ['off'], 'x-download-options': ['noopen'], @@ -1925,7 +1925,7 @@ describe('Tests that can run against either local Docker setup or remote One App ); const body = await response.text(); expect(body).toBe( - '
https://intranet-origin-dev.example.com/some-api/v1
Hello!' + '
https://intranet-origin-dev.example.com/some-api/v1
Hello!' ); }); }); diff --git a/__tests__/server/index.spec.js b/__tests__/server/index.spec.js index 415a5adde..9c999da84 100644 --- a/__tests__/server/index.spec.js +++ b/__tests__/server/index.spec.js @@ -229,7 +229,6 @@ describe('server index', () => { it('initializes Intl with a locale', async () => { await load(); - // eslint-disable-next-line no-underscore-dangle -- lean-intl API expect(require('lean-intl').__addLocaleData.mock.calls[0][0]).toMatchObject({ // contents dont have to exactly match just need to make sure that a locale object // is being added and not some random other thing @@ -291,7 +290,6 @@ describe('server index', () => { it('initializes Intl with a locale', async () => { await load(); - // eslint-disable-next-line no-underscore-dangle -- lean-intl API expect(require('lean-intl').__addLocaleData.mock.calls[0][0]).toMatchObject({ // contents dont have to exactly match just need to make sure that a locale object // is being added and not some random other thing diff --git a/__tests__/server/metrics/counters.spec.js b/__tests__/server/metrics/counters.spec.js index 4e002bf34..bd0ac1057 100644 --- a/__tests__/server/metrics/counters.spec.js +++ b/__tests__/server/metrics/counters.spec.js @@ -14,8 +14,6 @@ * permissions and limitations under the License. */ -/* eslint-disable no-underscore-dangle -- prom-client uses dangling underscore */ - describe('counters', () => { let Counter; let register; @@ -93,5 +91,3 @@ describe('counters', () => { }); }); }); - -/* eslint-enable no-underscore-dangle */ diff --git a/__tests__/server/metrics/gauges.spec.js b/__tests__/server/metrics/gauges.spec.js index 65787e3ea..957b478c3 100644 --- a/__tests__/server/metrics/gauges.spec.js +++ b/__tests__/server/metrics/gauges.spec.js @@ -14,8 +14,6 @@ * permissions and limitations under the License. */ -/* eslint-disable no-underscore-dangle -- prom-client uses dangling underscore */ - describe('gauges', () => { let Gauge; let register; @@ -158,5 +156,3 @@ describe('gauges', () => { }); }); }); - -/* eslint-enable no-underscore-dangle */ diff --git a/__tests__/server/metrics/summaries.spec.js b/__tests__/server/metrics/summaries.spec.js index 600f02fde..d51cdc3e9 100644 --- a/__tests__/server/metrics/summaries.spec.js +++ b/__tests__/server/metrics/summaries.spec.js @@ -14,8 +14,6 @@ * permissions and limitations under the License. */ -/* eslint-disable no-underscore-dangle -- prom-client uses dangling underscore */ - describe('summaries', () => { let Summary; let register; @@ -87,5 +85,3 @@ describe('summaries', () => { }); }); }); - -/* eslint-enable no-underscore-dangle */ diff --git a/docs/guides/Making-An-Api-Call.md b/docs/guides/Making-An-Api-Call.md index c4847a6a6..978853d84 100644 --- a/docs/guides/Making-An-Api-Call.md +++ b/docs/guides/Making-An-Api-Call.md @@ -27,7 +27,6 @@ const BooksModule = () => { setData({ books, isLoading: false, fetchError: true }); } } catch (e) { - // eslint-disable-next-line no-console -- debugging console.error('Failed to fetch Books:', e); setData({ books, isLoading: false, fetchError: true }); } diff --git a/docs/guides/Publishing-Modules.md b/docs/guides/Publishing-Modules.md index f59703989..888e055e1 100644 --- a/docs/guides/Publishing-Modules.md +++ b/docs/guides/Publishing-Modules.md @@ -85,13 +85,11 @@ const updateModuleMap = async () => { './module_map/module-map.json', JSON.stringify(moduleMapContent, null, 2) ); } catch (error) { - // eslint-disable-next-line no-console console.error(error); } }; updateModuleMap().catch((err) => { - // eslint-disable-next-line no-console console.log(err); }); ``` diff --git a/one-app-statics/postinstall.js b/one-app-statics/postinstall.js index af345d101..8906c1b90 100644 --- a/one-app-statics/postinstall.js +++ b/one-app-statics/postinstall.js @@ -14,5 +14,4 @@ * permissions and limitations under the License. */ -// eslint-disable-next-line no-console -- console logging is the purpose of this file console.log('🚨 🚨 🚨 one-app-statics is not intended to be installed using npm, please refer to the README for more details!🚨 🚨 🚨 '); diff --git a/package-lock.json b/package-lock.json index acd272e7f..c692c9b0f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,17 +14,17 @@ "@americanexpress/fetch-enhancers": "^1.1.5", "@americanexpress/one-app-ducks": "^4.5.1", "@americanexpress/one-app-router": "^1.2.1", - "@americanexpress/one-app-server-bundler": "^1.0.4", + "@americanexpress/one-app-server-bundler": "^1.1.0", "@americanexpress/vitruvius": "^3.0.1", "@autotelic/fastify-opentelemetry": "^0.20.0", - "@fastify/compress": "^7.0.0", + "@fastify/compress": "^7.0.3", "@fastify/cookie": "^9.3.1", "@fastify/cors": "^9.0.1", "@fastify/formbody": "^7.4.0", "@fastify/helmet": "^11.1.1", "@fastify/rate-limit": "^9.1.0", "@fastify/sensible": "^5.5.0", - "@fastify/static": "^7.0.1", + "@fastify/static": "^7.0.2", "@opentelemetry/api": "^1.8.0", "@opentelemetry/api-logs": "^0.49.1", "@opentelemetry/core": "^1.22.0", @@ -64,7 +64,7 @@ "pidusage": "^3.0.2", "pino": "^8.19.0", "pino-opentelemetry-transport": "^0.6.0", - "prom-client": "^15.1.0", + "prom-client": "^15.1.1", "prop-types": "^15.8.1", "react": "^17.0.2", "react-dom": "^17.0.2", @@ -87,9 +87,9 @@ "devDependencies": { "@americanexpress/one-app-dev-proxy": "^2.0.0", "@americanexpress/one-service-worker": "^1.0.4", - "@babel/cli": "^7.23.9", - "@babel/core": "^7.24.0", - "@commitlint/cli": "^19.2.0", + "@babel/cli": "^7.24.1", + "@babel/core": "^7.24.3", + "@commitlint/cli": "^19.2.1", "@commitlint/config-conventional": "^19.1.0", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-node-resolve": "^15.2.3", @@ -103,7 +103,7 @@ "cross-env": "^7.0.3", "danger": "^11.3.1", "eslint": "^8.57.0", - "eslint-config-amex": "^16.0.0", + "eslint-config-amex": "^16.1.0", "eslint-plugin-es": "^4.1.0", "eslint-plugin-jest": "^27.9.0", "eslint-plugin-jest-dom": "^4.0.3", @@ -117,13 +117,13 @@ "node-mocks-http": "^1.14.1", "nodemon": "^3.1.0", "parse-prometheus-text-format": "^1.1.1", - "pino-pretty": "^10.3.1", + "pino-pretty": "^11.0.0", "prettier": "^2.8.8", "proxy-agent": "^6.4.0", - "rollup": "^4.13.0", + "rollup": "^4.13.2", "service-worker-mock": "^2.0.5", "standard-version": "^9.5.0", - "tar": "^6.2.0", + "tar": "^6.2.1", "thread-stream": "^2.4.1", "webdriverio": "^7.36.0" }, @@ -344,9 +344,9 @@ } }, "node_modules/@americanexpress/one-app-server-bundler": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@americanexpress/one-app-server-bundler/-/one-app-server-bundler-1.0.4.tgz", - "integrity": "sha512-zjy3UMa+op9sUHPUzL2WUk3m3zLxfTYg8QlYpEqTsY8xAJD4m3IikQlErpI/08aCX33lQuV44Ipxpz1qv4EmRQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@americanexpress/one-app-server-bundler/-/one-app-server-bundler-1.1.0.tgz", + "integrity": "sha512-y+hpSct2o0z4JO9TlfSZ7t0fG8r6wR2+F26kLi7vzDwLPYEuH4veeE1YB8cclgyAuQgrccDPnqNGRzkMmlphZA==", "dependencies": { "babel-loader": "^8.3.0", "babel-preset-amex": "^4.0.3", @@ -432,12 +432,12 @@ } }, "node_modules/@babel/cli": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.23.9.tgz", - "integrity": "sha512-vB1UXmGDNEhcf1jNAHKT9IlYk1R+hehVTLFlCLHBi8gfuHQGP6uRjgXVYU0EVlI/qwAWpstqkBdf2aez3/z/5Q==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.24.1.tgz", + "integrity": "sha512-HbmrtxyFUr34LwAlV9jS+sSIjUp4FpdtIMGwgufY3AsxrIfsh/HxlMTywsONAZsU0RMYbZtbZFpUCrSGs7o0EA==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.25", "commander": "^4.0.1", "convert-source-map": "^2.0.0", "fs-readdir-recursive": "^1.1.0", @@ -461,81 +461,17 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", @@ -545,19 +481,19 @@ } }, "node_modules/@babel/core": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", - "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz", + "integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.1", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.0", - "@babel/parser": "^7.24.0", + "@babel/helpers": "^7.24.1", + "@babel/parser": "^7.24.1", "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", + "@babel/traverse": "^7.24.1", "@babel/types": "^7.24.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -640,13 +576,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz", + "integrity": "sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==", "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -960,12 +896,12 @@ } }, "node_modules/@babel/helpers": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", - "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.1.tgz", + "integrity": "sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==", "dependencies": { "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", + "@babel/traverse": "^7.24.1", "@babel/types": "^7.24.0" }, "engines": { @@ -973,13 +909,14 @@ } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -1050,9 +987,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", + "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -2367,17 +2304,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", - "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.0", + "@babel/parser": "^7.24.1", "@babel/types": "^7.24.0", "debug": "^4.3.1", "globals": "^11.1.0" @@ -2406,15 +2343,15 @@ "dev": true }, "node_modules/@commitlint/cli": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.2.0.tgz", - "integrity": "sha512-8XnQDMyQR+1/ldbmIyhonvnDS2enEw48Wompo/967fsEvy9Vj5/JbDutzmSBKxANWDVeEbR9QQm0yHpw6ArrFw==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.2.1.tgz", + "integrity": "sha512-cbkYUJsLqRomccNxvoJTyv5yn0bSy05BBizVyIcLACkRbVUqYorC351Diw/XFSWC/GtpwiwT2eOvQgFZa374bg==", "dev": true, "dependencies": { "@commitlint/format": "^19.0.3", "@commitlint/lint": "^19.1.0", "@commitlint/load": "^19.2.0", - "@commitlint/read": "^19.2.0", + "@commitlint/read": "^19.2.1", "@commitlint/types": "^19.0.3", "execa": "^8.0.1", "yargs": "^17.0.0" @@ -2588,9 +2525,9 @@ } }, "node_modules/@commitlint/read": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.2.0.tgz", - "integrity": "sha512-HlGeEd/jyp2a5Fb9mvtsaDm5hFCmj80dJYjLQkpG3DzWneWBc37YU3kM8Za1D1HUazZaTkdsWq73M3XDE4CvCA==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.2.1.tgz", + "integrity": "sha512-qETc4+PL0EUv7Q36lJbPG+NJiBOGg7SSC7B5BsPWOmei+Dyif80ErfWQ0qXoW9oCh7GTpTNRoaVhiI8RbhuaNw==", "dev": true, "dependencies": { "@commitlint/top-level": "^19.0.0", @@ -2806,18 +2743,64 @@ } }, "node_modules/@fastify/compress": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@fastify/compress/-/compress-7.0.0.tgz", - "integrity": "sha512-jo/NaBVHP1OXIf8Kmr3bZyYQB0gAIgcy5c8rRKTPjhklHO7lRs/6ZFckUVT0NtbKSvrTuIcmSkxYpjyv3FNHXA==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@fastify/compress/-/compress-7.0.3.tgz", + "integrity": "sha512-xa9fo5/DgK1s0bkS6xrYgNn8HmofO5tJvbCDk8QuXshSgLd2cFZANv1ox/Qv7zswS7JroHwTlCVv/XGTVO98tg==", "dependencies": { "@fastify/accept-negotiator": "^1.1.0", "fastify-plugin": "^4.5.0", - "into-stream": "^6.0.0", "mime-db": "^1.52.0", "minipass": "^7.0.2", "peek-stream": "^1.1.3", "pump": "^3.0.0", - "pumpify": "^2.0.1" + "pumpify": "^2.0.1", + "readable-stream": "^4.5.2" + } + }, + "node_modules/@fastify/compress/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@fastify/compress/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@fastify/compress/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" } }, "node_modules/@fastify/cookie": { @@ -2914,9 +2897,9 @@ } }, "node_modules/@fastify/static": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@fastify/static/-/static-7.0.1.tgz", - "integrity": "sha512-i1p/nELMknAisNfnjo7yhfoUOdKzA+n92QaMirv2NkZrJ1Wl12v2nyTYlDwPN8XoStMBAnRK/Kx6zKmfrXUPXw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@fastify/static/-/static-7.0.2.tgz", + "integrity": "sha512-5opbHpZj29EGVBNgELW6gDkueiFWxjLsLVQQCgKencJctq0aqk3vBlkO97z5It4zaSAb3FXOeAxm7KP2tL/hQA==", "dependencies": { "@fastify/accept-negotiator": "^1.0.0", "@fastify/send": "^2.0.0", @@ -4492,9 +4475,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz", - "integrity": "sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.2.tgz", + "integrity": "sha512-3XFIDKWMFZrMnao1mJhnOT1h2g0169Os848NhhmGweEcfJ4rCi+3yMCOLG4zA61rbJdkcrM/DjVZm9Hg5p5w7g==", "cpu": [ "arm" ], @@ -4505,9 +4488,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz", - "integrity": "sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.2.tgz", + "integrity": "sha512-GdxxXbAuM7Y/YQM9/TwwP+L0omeE/lJAR1J+olu36c3LqqZEBdsIWeQ91KBe6nxwOnb06Xh7JS2U5ooWU5/LgQ==", "cpu": [ "arm64" ], @@ -4518,9 +4501,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz", - "integrity": "sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.2.tgz", + "integrity": "sha512-mCMlpzlBgOTdaFs83I4XRr8wNPveJiJX1RLfv4hggyIVhfB5mJfN4P8Z6yKh+oE4Luz+qq1P3kVdWrCKcMYrrA==", "cpu": [ "arm64" ], @@ -4531,9 +4514,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz", - "integrity": "sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.2.tgz", + "integrity": "sha512-yUoEvnH0FBef/NbB1u6d3HNGyruAKnN74LrPAfDQL3O32e3k3OSfLrPgSJmgb3PJrBZWfPyt6m4ZhAFa2nZp2A==", "cpu": [ "x64" ], @@ -4544,9 +4527,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz", - "integrity": "sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.2.tgz", + "integrity": "sha512-GYbLs5ErswU/Xs7aGXqzc3RrdEjKdmoCrgzhJWyFL0r5fL3qd1NPcDKDowDnmcoSiGJeU68/Vy+OMUluRxPiLQ==", "cpu": [ "arm" ], @@ -4557,9 +4540,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz", - "integrity": "sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.2.tgz", + "integrity": "sha512-L1+D8/wqGnKQIlh4Zre9i4R4b4noxzH5DDciyahX4oOz62CphY7WDWqJoQ66zNR4oScLNOqQJfNSIAe/6TPUmQ==", "cpu": [ "arm64" ], @@ -4570,9 +4553,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz", - "integrity": "sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.2.tgz", + "integrity": "sha512-tK5eoKFkXdz6vjfkSTCupUzCo40xueTOiOO6PeEIadlNBkadH1wNOH8ILCPIl8by/Gmb5AGAeQOFeLev7iZDOA==", "cpu": [ "arm64" ], @@ -4582,10 +4565,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.13.2.tgz", + "integrity": "sha512-zvXvAUGGEYi6tYhcDmb9wlOckVbuD+7z3mzInCSTACJ4DQrdSLPNUeDIcAQW39M3q6PDquqLWu7pnO39uSMRzQ==", + "cpu": [ + "ppc64le" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz", - "integrity": "sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.2.tgz", + "integrity": "sha512-C3GSKvMtdudHCN5HdmAMSRYR2kkhgdOfye4w0xzyii7lebVr4riCgmM6lRiSCnJn2w1Xz7ZZzHKuLrjx5620kw==", "cpu": [ "riscv64" ], @@ -4595,10 +4591,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.13.2.tgz", + "integrity": "sha512-l4U0KDFwzD36j7HdfJ5/TveEQ1fUTjFFQP5qIt9gBqBgu1G8/kCaq5Ok05kd5TG9F8Lltf3MoYsUMw3rNlJ0Yg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.0.tgz", - "integrity": "sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.2.tgz", + "integrity": "sha512-xXMLUAMzrtsvh3cZ448vbXqlUa7ZL8z0MwHp63K2IIID2+DeP5iWIT6g1SN7hg1VxPzqx0xZdiDM9l4n9LRU1A==", "cpu": [ "x64" ], @@ -4609,9 +4618,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.0.tgz", - "integrity": "sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.2.tgz", + "integrity": "sha512-M/JYAWickafUijWPai4ehrjzVPKRCyDb1SLuO+ZyPfoXgeCEAlgPkNXewFZx0zcnoIe3ay4UjXIMdXQXOZXWqA==", "cpu": [ "x64" ], @@ -4622,9 +4631,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz", - "integrity": "sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.2.tgz", + "integrity": "sha512-2YWwoVg9KRkIKaXSh0mz3NmfurpmYoBBTAXA9qt7VXk0Xy12PoOP40EFuau+ajgALbbhi4uTj3tSG3tVseCjuA==", "cpu": [ "arm64" ], @@ -4635,9 +4644,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz", - "integrity": "sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.2.tgz", + "integrity": "sha512-2FSsE9aQ6OWD20E498NYKEQLneShWes0NGMPQwxWOdws35qQXH+FplabOSP5zEe1pVjurSDOGEVCE2agFwSEsw==", "cpu": [ "ia32" ], @@ -4648,9 +4657,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz", - "integrity": "sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.2.tgz", + "integrity": "sha512-7h7J2nokcdPePdKykd8wtc8QqqkqxIrUz7MHj6aNr8waBRU//NLDVnNjQnqQO6fqtjrtCdftpbTuOKAyrAQETQ==", "cpu": [ "x64" ], @@ -10328,14 +10337,14 @@ } }, "node_modules/eslint-config-amex": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-amex/-/eslint-config-amex-16.0.0.tgz", - "integrity": "sha512-iJFEqmrxkQAegKdDilDTajKkDl70FoLzYXzljx0SelbPxiXe2v+HH24Tul5fk4u9M0hkicBQhwkJSVbqSsQOCg==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-amex/-/eslint-config-amex-16.1.0.tgz", + "integrity": "sha512-dNdV8QnGWEHpXwZpBgWM0fs6B9I/VPsWADxqk1aS2r1iQZMlBT6tm/Ek/G7HhKaWYFz7xmwXRz438JNGICTr8g==", "dev": true, "dependencies": { "@babel/eslint-parser": "7.16.5", "eslint-config-airbnb": "^19.0.4", - "eslint-config-prettier": "^8.0.0", + "eslint-config-prettier": "^8.8.0", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-inclusive-language": "^2.2.0", @@ -10350,11 +10359,11 @@ "node": ">= 12.0.0" }, "peerDependencies": { - "eslint": "^8.42.0", + "eslint": "^8.43.0", "eslint-plugin-jest": "^25.7.0 || ^26.0.0 || ^27.0.0", "eslint-plugin-jest-dom": "^3.6.3 || ^4.0.0", "eslint-plugin-prettier": "^4.0.0", - "prettier": "^2.0.0", + "prettier": "^2.0.0 || ^3.0.0", "typescript": "^3.8.3 || ^4.0.0 || ^5.0.0" }, "peerDependenciesMeta": { @@ -13082,21 +13091,6 @@ "node": ">= 0.4" } }, - "node_modules/into-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", - "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", - "dependencies": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -17305,14 +17299,6 @@ "node": ">=8" } }, - "node_modules/p-is-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/p-iteration": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/p-iteration/-/p-iteration-1.1.8.tgz", @@ -17872,9 +17858,9 @@ } }, "node_modules/pino-pretty": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-10.3.1.tgz", - "integrity": "sha512-az8JbIYeN/1iLj2t0jR9DV48/LQ3RC6hZPpapKPkb84Q+yTidMCpgWxIT3N0flnBDilyBQ1luWNpOeJptjdp/g==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-11.0.0.tgz", + "integrity": "sha512-YFJZqw59mHIY72wBnBs7XhLGG6qpJMa4pEQTRgEPEbjIYbng2LXEZZF1DoyDg9CfejEy8uZCyzpcBXXG0oOCwQ==", "dev": true, "dependencies": { "colorette": "^2.0.7", @@ -18150,9 +18136,9 @@ } }, "node_modules/prom-client": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-15.1.0.tgz", - "integrity": "sha512-cCD7jLTqyPdjEPBo/Xk4Iu8jxjuZgZJ3e/oET3L+ZwOuap/7Cw3dH/TJSsZKs1TQLZ2IHpIlRAKw82ef06kmMw==", + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-15.1.1.tgz", + "integrity": "sha512-GVA2H96QCg2q71rjc3VYvSrVG7OpnJxyryC7dMzvfJfpJJHzQVwF3TJLfHzKORcwJpElWs1TwXLthlJAFJxq2A==", "dependencies": { "@opentelemetry/api": "^1.4.0", "tdigest": "^0.1.1" @@ -19445,9 +19431,9 @@ } }, "node_modules/rollup": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz", - "integrity": "sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.2.tgz", + "integrity": "sha512-MIlLgsdMprDBXC+4hsPgzWUasLO9CE4zOkj/u6j+Z6j5A4zRY+CtiXAdJyPtgCsc42g658Aeh1DlrdVEJhsL2g==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -19460,19 +19446,21 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.13.0", - "@rollup/rollup-android-arm64": "4.13.0", - "@rollup/rollup-darwin-arm64": "4.13.0", - "@rollup/rollup-darwin-x64": "4.13.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.13.0", - "@rollup/rollup-linux-arm64-gnu": "4.13.0", - "@rollup/rollup-linux-arm64-musl": "4.13.0", - "@rollup/rollup-linux-riscv64-gnu": "4.13.0", - "@rollup/rollup-linux-x64-gnu": "4.13.0", - "@rollup/rollup-linux-x64-musl": "4.13.0", - "@rollup/rollup-win32-arm64-msvc": "4.13.0", - "@rollup/rollup-win32-ia32-msvc": "4.13.0", - "@rollup/rollup-win32-x64-msvc": "4.13.0", + "@rollup/rollup-android-arm-eabi": "4.13.2", + "@rollup/rollup-android-arm64": "4.13.2", + "@rollup/rollup-darwin-arm64": "4.13.2", + "@rollup/rollup-darwin-x64": "4.13.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.13.2", + "@rollup/rollup-linux-arm64-gnu": "4.13.2", + "@rollup/rollup-linux-arm64-musl": "4.13.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.13.2", + "@rollup/rollup-linux-riscv64-gnu": "4.13.2", + "@rollup/rollup-linux-s390x-gnu": "4.13.2", + "@rollup/rollup-linux-x64-gnu": "4.13.2", + "@rollup/rollup-linux-x64-musl": "4.13.2", + "@rollup/rollup-win32-arm64-msvc": "4.13.2", + "@rollup/rollup-win32-ia32-msvc": "4.13.2", + "@rollup/rollup-win32-x64-msvc": "4.13.2", "fsevents": "~2.3.2" } }, @@ -21029,9 +21017,9 @@ } }, "node_modules/tar": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", diff --git a/package.json b/package.json index e5bec0868..f45b7fbda 100644 --- a/package.json +++ b/package.json @@ -84,17 +84,17 @@ "@americanexpress/fetch-enhancers": "^1.1.5", "@americanexpress/one-app-ducks": "^4.5.1", "@americanexpress/one-app-router": "^1.2.1", - "@americanexpress/one-app-server-bundler": "^1.0.4", + "@americanexpress/one-app-server-bundler": "^1.1.0", "@americanexpress/vitruvius": "^3.0.1", "@autotelic/fastify-opentelemetry": "^0.20.0", - "@fastify/compress": "^7.0.0", + "@fastify/compress": "^7.0.3", "@fastify/cookie": "^9.3.1", "@fastify/cors": "^9.0.1", "@fastify/formbody": "^7.4.0", "@fastify/helmet": "^11.1.1", "@fastify/rate-limit": "^9.1.0", "@fastify/sensible": "^5.5.0", - "@fastify/static": "^7.0.1", + "@fastify/static": "^7.0.2", "@opentelemetry/api": "^1.8.0", "@opentelemetry/api-logs": "^0.49.1", "@opentelemetry/core": "^1.22.0", @@ -134,7 +134,7 @@ "pidusage": "^3.0.2", "pino": "^8.19.0", "pino-opentelemetry-transport": "^0.6.0", - "prom-client": "^15.1.0", + "prom-client": "^15.1.1", "prop-types": "^15.8.1", "react": "^17.0.2", "react-dom": "^17.0.2", @@ -157,9 +157,9 @@ "devDependencies": { "@americanexpress/one-app-dev-proxy": "^2.0.0", "@americanexpress/one-service-worker": "^1.0.4", - "@babel/cli": "^7.23.9", - "@babel/core": "^7.24.0", - "@commitlint/cli": "^19.2.0", + "@babel/cli": "^7.24.1", + "@babel/core": "^7.24.3", + "@commitlint/cli": "^19.2.1", "@commitlint/config-conventional": "^19.1.0", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-node-resolve": "^15.2.3", @@ -173,7 +173,7 @@ "cross-env": "^7.0.3", "danger": "^11.3.1", "eslint": "^8.57.0", - "eslint-config-amex": "^16.0.0", + "eslint-config-amex": "^16.1.0", "eslint-plugin-es": "^4.1.0", "eslint-plugin-jest": "^27.9.0", "eslint-plugin-jest-dom": "^4.0.3", @@ -187,13 +187,13 @@ "node-mocks-http": "^1.14.1", "nodemon": "^3.1.0", "parse-prometheus-text-format": "^1.1.1", - "pino-pretty": "^10.3.1", + "pino-pretty": "^11.0.0", "prettier": "^2.8.8", "proxy-agent": "^6.4.0", - "rollup": "^4.13.0", + "rollup": "^4.13.2", "service-worker-mock": "^2.0.5", "standard-version": "^9.5.0", - "tar": "^6.2.0", + "tar": "^6.2.1", "thread-stream": "^2.4.1", "webdriverio": "^7.36.0" }, diff --git a/prod-sample/api/.eslintrc.json b/prod-sample/api/.eslintrc.json deleted file mode 100644 index 2ec68fb4a..000000000 --- a/prod-sample/api/.eslintrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rules": { - "import/no-unresolved": "off" - } -} \ No newline at end of file diff --git a/prod-sample/sample-modules/.eslintrc.json b/prod-sample/sample-modules/.eslintrc.json deleted file mode 100644 index 9f8f2f3e9..000000000 --- a/prod-sample/sample-modules/.eslintrc.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "amex", - "rules": { - "import/no-unresolved": "off", - "react/no-unknown-property": "off", - "you-dont-need-lodash-underscore/get": "off", - "unicorn/prefer-node-protocol": "off" - } -} diff --git a/prod-sample/sample-modules/cultured-frankie/0.0.0/package.json b/prod-sample/sample-modules/cultured-frankie/0.0.0/package.json index e19362a8a..1ceef1f4b 100644 --- a/prod-sample/sample-modules/cultured-frankie/0.0.0/package.json +++ b/prod-sample/sample-modules/cultured-frankie/0.0.0/package.json @@ -21,7 +21,7 @@ "redux": "^4.2.1" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" } } \ No newline at end of file diff --git a/prod-sample/sample-modules/cultured-frankie/0.0.1/package.json b/prod-sample/sample-modules/cultured-frankie/0.0.1/package.json index 03873ebb3..13deb0ee2 100644 --- a/prod-sample/sample-modules/cultured-frankie/0.0.1/package.json +++ b/prod-sample/sample-modules/cultured-frankie/0.0.1/package.json @@ -21,7 +21,7 @@ "redux": "^4.2.1" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" }, "one-amex": { diff --git a/prod-sample/sample-modules/frank-lloyd-root/0.0.0/package.json b/prod-sample/sample-modules/frank-lloyd-root/0.0.0/package.json index 7f4aad8e5..ade255e8c 100644 --- a/prod-sample/sample-modules/frank-lloyd-root/0.0.0/package.json +++ b/prod-sample/sample-modules/frank-lloyd-root/0.0.0/package.json @@ -25,7 +25,7 @@ "redux": "^4.2.1" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" } -} \ No newline at end of file +} diff --git a/prod-sample/sample-modules/frank-lloyd-root/0.0.0/src/getIP.js b/prod-sample/sample-modules/frank-lloyd-root/0.0.0/src/getIP.js index d0489be21..0b0cea06c 100644 --- a/prod-sample/sample-modules/frank-lloyd-root/0.0.0/src/getIP.js +++ b/prod-sample/sample-modules/frank-lloyd-root/0.0.0/src/getIP.js @@ -14,7 +14,7 @@ * permissions and limitations under the License. */ -import { networkInterfaces } from 'os'; +import { networkInterfaces } from 'node:os'; export const getIp = () => { const interfaces = networkInterfaces(); diff --git a/prod-sample/sample-modules/frank-lloyd-root/0.0.1/package.json b/prod-sample/sample-modules/frank-lloyd-root/0.0.1/package.json index 8606c792e..500372d16 100644 --- a/prod-sample/sample-modules/frank-lloyd-root/0.0.1/package.json +++ b/prod-sample/sample-modules/frank-lloyd-root/0.0.1/package.json @@ -24,7 +24,7 @@ "redux": "^4.2.1" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" } } \ No newline at end of file diff --git a/prod-sample/sample-modules/frank-lloyd-root/0.0.1/src/getIP.js b/prod-sample/sample-modules/frank-lloyd-root/0.0.1/src/getIP.js index d0489be21..0b0cea06c 100644 --- a/prod-sample/sample-modules/frank-lloyd-root/0.0.1/src/getIP.js +++ b/prod-sample/sample-modules/frank-lloyd-root/0.0.1/src/getIP.js @@ -14,7 +14,7 @@ * permissions and limitations under the License. */ -import { networkInterfaces } from 'os'; +import { networkInterfaces } from 'node:os'; export const getIp = () => { const interfaces = networkInterfaces(); diff --git a/prod-sample/sample-modules/frank-lloyd-root/0.0.2/package.json b/prod-sample/sample-modules/frank-lloyd-root/0.0.2/package.json index 6e76e3541..7d56afd13 100644 --- a/prod-sample/sample-modules/frank-lloyd-root/0.0.2/package.json +++ b/prod-sample/sample-modules/frank-lloyd-root/0.0.2/package.json @@ -26,7 +26,7 @@ "redux": "^4.2.1" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" }, "one-amex": { diff --git a/prod-sample/sample-modules/frank-lloyd-root/0.0.2/src/getIP.js b/prod-sample/sample-modules/frank-lloyd-root/0.0.2/src/getIP.js index d0489be21..0b0cea06c 100644 --- a/prod-sample/sample-modules/frank-lloyd-root/0.0.2/src/getIP.js +++ b/prod-sample/sample-modules/frank-lloyd-root/0.0.2/src/getIP.js @@ -14,7 +14,7 @@ * permissions and limitations under the License. */ -import { networkInterfaces } from 'os'; +import { networkInterfaces } from 'node:os'; export const getIp = () => { const interfaces = networkInterfaces(); diff --git a/prod-sample/sample-modules/frank-lloyd-root/0.0.3/package.json b/prod-sample/sample-modules/frank-lloyd-root/0.0.3/package.json index 212e44ab6..cb47fbbe1 100644 --- a/prod-sample/sample-modules/frank-lloyd-root/0.0.3/package.json +++ b/prod-sample/sample-modules/frank-lloyd-root/0.0.3/package.json @@ -27,7 +27,7 @@ "redux": "^4.2.1" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3", "webpack": "4.46.0" }, diff --git a/prod-sample/sample-modules/frank-lloyd-root/0.0.3/src/createFrankLikeFetch.js b/prod-sample/sample-modules/frank-lloyd-root/0.0.3/src/createFrankLikeFetch.js index 7f6ded562..b472a6499 100644 --- a/prod-sample/sample-modules/frank-lloyd-root/0.0.3/src/createFrankLikeFetch.js +++ b/prod-sample/sample-modules/frank-lloyd-root/0.0.3/src/createFrankLikeFetch.js @@ -14,7 +14,7 @@ * permissions and limitations under the License. */ -import url from 'url'; +import url from 'node:url'; import { createBrowserLikeFetch } from '@americanexpress/fetch-enhancers'; const parseHeaders = (req) => ({ diff --git a/prod-sample/sample-modules/frank-lloyd-root/0.0.3/src/getIP.js b/prod-sample/sample-modules/frank-lloyd-root/0.0.3/src/getIP.js index d0489be21..0b0cea06c 100644 --- a/prod-sample/sample-modules/frank-lloyd-root/0.0.3/src/getIP.js +++ b/prod-sample/sample-modules/frank-lloyd-root/0.0.3/src/getIP.js @@ -14,7 +14,7 @@ * permissions and limitations under the License. */ -import { networkInterfaces } from 'os'; +import { networkInterfaces } from 'node:os'; export const getIp = () => { const interfaces = networkInterfaces(); diff --git a/prod-sample/sample-modules/frank-the-parrot/0.0.0/package.json b/prod-sample/sample-modules/frank-the-parrot/0.0.0/package.json index 3c2336fce..d4d63a19a 100644 --- a/prod-sample/sample-modules/frank-the-parrot/0.0.0/package.json +++ b/prod-sample/sample-modules/frank-the-parrot/0.0.0/package.json @@ -17,7 +17,7 @@ "react-redux": "^7.2.9" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" } } \ No newline at end of file diff --git a/prod-sample/sample-modules/franks-burgers/0.0.0/package.json b/prod-sample/sample-modules/franks-burgers/0.0.0/package.json index b1ce62a06..f516c0981 100644 --- a/prod-sample/sample-modules/franks-burgers/0.0.0/package.json +++ b/prod-sample/sample-modules/franks-burgers/0.0.0/package.json @@ -15,7 +15,7 @@ "react-redux": "^7.2.9" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" } } \ No newline at end of file diff --git a/prod-sample/sample-modules/healthy-frank/0.0.0/package.json b/prod-sample/sample-modules/healthy-frank/0.0.0/package.json index e9741bb72..3eb4a5785 100644 --- a/prod-sample/sample-modules/healthy-frank/0.0.0/package.json +++ b/prod-sample/sample-modules/healthy-frank/0.0.0/package.json @@ -20,7 +20,7 @@ "redux": "^4.2.1" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" } } \ No newline at end of file diff --git a/prod-sample/sample-modules/late-frank/0.0.0/package.json b/prod-sample/sample-modules/late-frank/0.0.0/package.json index 9d4da8245..08c72aa86 100644 --- a/prod-sample/sample-modules/late-frank/0.0.0/package.json +++ b/prod-sample/sample-modules/late-frank/0.0.0/package.json @@ -17,7 +17,7 @@ "react-redux": "^7.2.9" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" } } \ No newline at end of file diff --git a/prod-sample/sample-modules/late-frank/0.0.1/package.json b/prod-sample/sample-modules/late-frank/0.0.1/package.json index 5e2822a78..723e8c7ec 100644 --- a/prod-sample/sample-modules/late-frank/0.0.1/package.json +++ b/prod-sample/sample-modules/late-frank/0.0.1/package.json @@ -17,7 +17,7 @@ "react-redux": "^7.2.9" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" }, "one-amex": { diff --git a/prod-sample/sample-modules/late-frank/0.0.2/package.json b/prod-sample/sample-modules/late-frank/0.0.2/package.json index de69384db..849397300 100644 --- a/prod-sample/sample-modules/late-frank/0.0.2/package.json +++ b/prod-sample/sample-modules/late-frank/0.0.2/package.json @@ -16,7 +16,7 @@ "react-redux": "^7.2.9" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" }, "one-amex": { diff --git a/prod-sample/sample-modules/needy-frank/0.0.0/package.json b/prod-sample/sample-modules/needy-frank/0.0.0/package.json index 4dcde5b93..31fa131ac 100644 --- a/prod-sample/sample-modules/needy-frank/0.0.0/package.json +++ b/prod-sample/sample-modules/needy-frank/0.0.0/package.json @@ -25,7 +25,7 @@ "redux-thunk": "^2.4.1" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" }, "one-amex": { diff --git a/prod-sample/sample-modules/needy-frank/0.0.1/package.json b/prod-sample/sample-modules/needy-frank/0.0.1/package.json index d360a0ba1..484c33942 100644 --- a/prod-sample/sample-modules/needy-frank/0.0.1/package.json +++ b/prod-sample/sample-modules/needy-frank/0.0.1/package.json @@ -25,7 +25,7 @@ "redux-thunk": "^2.4.1" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" }, "one-amex": { diff --git a/prod-sample/sample-modules/picky-frank/0.0.0/package.json b/prod-sample/sample-modules/picky-frank/0.0.0/package.json index eb04f0943..ae515d816 100644 --- a/prod-sample/sample-modules/picky-frank/0.0.0/package.json +++ b/prod-sample/sample-modules/picky-frank/0.0.0/package.json @@ -17,7 +17,7 @@ "react-redux": "^7.2.9" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" } } \ No newline at end of file diff --git a/prod-sample/sample-modules/picky-frank/0.0.1/package.json b/prod-sample/sample-modules/picky-frank/0.0.1/package.json index 689d7eabe..888df988c 100644 --- a/prod-sample/sample-modules/picky-frank/0.0.1/package.json +++ b/prod-sample/sample-modules/picky-frank/0.0.1/package.json @@ -17,7 +17,7 @@ "react-redux": "^7.2.9" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" } } \ No newline at end of file diff --git a/prod-sample/sample-modules/preview-frank/0.0.0/package.json b/prod-sample/sample-modules/preview-frank/0.0.0/package.json index 41236a01f..af0b691a7 100644 --- a/prod-sample/sample-modules/preview-frank/0.0.0/package.json +++ b/prod-sample/sample-modules/preview-frank/0.0.0/package.json @@ -11,7 +11,6 @@ "dependencies": { "@americanexpress/one-app-ducks": "^4.5.0", "holocron": "^1.10.2", - "lodash.get": "^4.4.2", "prop-types": "^15.8.1", "react": "^17.0.2", "react-dom": "^17.0.2", @@ -19,7 +18,7 @@ "redux": "^4.2.1" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" } -} \ No newline at end of file +} diff --git a/prod-sample/sample-modules/preview-frank/0.0.0/src/duck.js b/prod-sample/sample-modules/preview-frank/0.0.0/src/duck.js index c477bbd3f..1e1c17adc 100644 --- a/prod-sample/sample-modules/preview-frank/0.0.0/src/duck.js +++ b/prod-sample/sample-modules/preview-frank/0.0.0/src/duck.js @@ -16,7 +16,6 @@ import { updateLocale } from '@americanexpress/one-app-ducks'; import { composeModules } from 'holocron'; -import get from 'lodash.get'; import getDemoProps from './utils/getDemoProps'; @@ -26,7 +25,7 @@ export default null; export function loadModuleData({ store: { dispatch }, ownProps: props }) { const { location, params } = props; const demoProps = getDemoProps(props); - const locale = get(location, 'query.locale'); + const locale = location?.query?.locale; const promises = [ dispatch(composeModules([{ name: params.moduleName, props: demoProps }])), diff --git a/prod-sample/sample-modules/preview-frank/0.0.0/src/utils/getDemoProps.js b/prod-sample/sample-modules/preview-frank/0.0.0/src/utils/getDemoProps.js index 42f7db67a..ce6aece27 100644 --- a/prod-sample/sample-modules/preview-frank/0.0.0/src/utils/getDemoProps.js +++ b/prod-sample/sample-modules/preview-frank/0.0.0/src/utils/getDemoProps.js @@ -14,9 +14,7 @@ * permissions and limitations under the License. */ -import get from 'lodash.get'; - export default function getDemoProps(props) { - const demoProps = get(props.location, 'query.props', '{}'); + const demoProps = props.location?.query?.props || '{}'; return { location: props.location, ...JSON.parse(demoProps) }; } diff --git a/prod-sample/sample-modules/ssr-frank/0.0.0/package.json b/prod-sample/sample-modules/ssr-frank/0.0.0/package.json index fca7d37f9..c8b37f346 100644 --- a/prod-sample/sample-modules/ssr-frank/0.0.0/package.json +++ b/prod-sample/sample-modules/ssr-frank/0.0.0/package.json @@ -18,7 +18,7 @@ "react-redux": "^7.2.9" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" } } \ No newline at end of file diff --git a/prod-sample/sample-modules/unhealthy-frank/0.0.0/package.json b/prod-sample/sample-modules/unhealthy-frank/0.0.0/package.json index 82ea98819..744a00789 100644 --- a/prod-sample/sample-modules/unhealthy-frank/0.0.0/package.json +++ b/prod-sample/sample-modules/unhealthy-frank/0.0.0/package.json @@ -20,7 +20,7 @@ "semver": "7.6.0" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" }, "one-amex": { diff --git a/prod-sample/sample-modules/vitruvius-franklin/0.0.0/package.json b/prod-sample/sample-modules/vitruvius-franklin/0.0.0/package.json index 6f377204a..5a89b70e8 100644 --- a/prod-sample/sample-modules/vitruvius-franklin/0.0.0/package.json +++ b/prod-sample/sample-modules/vitruvius-franklin/0.0.0/package.json @@ -19,7 +19,7 @@ "redux": "^4.2.1" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" } } \ No newline at end of file diff --git a/prod-sample/sample-modules/vitruvius-franklin/0.0.1/package.json b/prod-sample/sample-modules/vitruvius-franklin/0.0.1/package.json index 9470a0e1a..a514d6dbc 100644 --- a/prod-sample/sample-modules/vitruvius-franklin/0.0.1/package.json +++ b/prod-sample/sample-modules/vitruvius-franklin/0.0.1/package.json @@ -19,7 +19,7 @@ "redux": "^4.2.1" }, "devDependencies": { - "@americanexpress/one-app-bundler": "^6.21.8", + "@americanexpress/one-app-bundler": "^7.0.2", "babel-preset-amex": "^4.0.3" } } \ No newline at end of file diff --git a/scripts/.eslintrc.json b/scripts/.eslintrc.json deleted file mode 100644 index 0aeed3695..000000000 --- a/scripts/.eslintrc.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "rules": { - // these scripts should be used only during development - "import/no-extraneous-dependencies": ["error", {"devDependencies": true, "optionalDependencies": true, "peerDependencies": false}], - // we need to message the user for DX - "no-console": 0 - } -} diff --git a/scripts/build-sample-modules.js b/scripts/build-sample-modules.js index a00a053c2..fd9a20501 100644 --- a/scripts/build-sample-modules.js +++ b/scripts/build-sample-modules.js @@ -43,7 +43,6 @@ const sanitizedEnvVars = sanitizeEnvVars(); async function updateModuleVersion(directory, moduleVersion) { const packageJsonPath = path.resolve(directory, 'package.json'); - // eslint-disable-next-line global-require, import/no-dynamic-require -- needed for dynamic script const packageJson = require(packageJsonPath); const updatedPackageJson = { ...packageJson, version: moduleVersion }; @@ -74,7 +73,6 @@ const buildModule = async (pathToModule) => { const pathToOriginModuleStatics = path.resolve(`${nginxOriginStaticsModulesDir}/${gitSha}/${moduleName}`); await fs.cp(pathToModuleBuildDir, pathToOriginModuleStatics, { recursive: true }); - // eslint-disable-next-line global-require,import/no-dynamic-require -- needed for dynamic script const integrityDigests = require(pathToBundleIntegrityManifest); return { diff --git a/scripts/dangers/.eslintrc.json b/scripts/dangers/.eslintrc.json deleted file mode 100644 index e0af6c813..000000000 --- a/scripts/dangers/.eslintrc.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "globals": { - "danger": "readonly", - "fail": "readonly", - "markdown": "readonly", - "message": "readonly", - "peril": "readonly", - "schedule": "readonly", - "warn": "readonly" - } -} diff --git a/scripts/deploy-prod-sample-module.js b/scripts/deploy-prod-sample-module.js index 3d2608a05..683ab5bd5 100644 --- a/scripts/deploy-prod-sample-module.js +++ b/scripts/deploy-prod-sample-module.js @@ -41,11 +41,9 @@ const originModuleMapPath = path.resolve(nginxOriginStaticsRootDir, 'module-map. const getPreBuiltModuleInfo = (pathToModule) => { const pkgPath = path.resolve(pathToModule, 'package.json'); - // eslint-disable-next-line import/no-dynamic-require, global-require -- needed for dynamic script const { name: moduleName, version: moduleVersion } = require(pkgPath); const pathToBundleIntegrityManifest = path.resolve(`${pathToModule}/bundle.integrity.manifest.json`); - // eslint-disable-next-line global-require,import/no-dynamic-require -- needed for dynamic script const integrityDigests = require(pathToBundleIntegrityManifest); return { moduleName, moduleVersion, integrityDigests }; @@ -53,7 +51,6 @@ const getPreBuiltModuleInfo = (pathToModule) => { const buildModule = async (pathToModule) => { const pkgPath = path.resolve(pathToModule, 'package.json'); - // eslint-disable-next-line import/no-dynamic-require, global-require -- needed for dynamic script const { name: moduleName, version: moduleVersion } = require(pkgPath); if (!skipInstall) { @@ -73,7 +70,6 @@ const buildModule = async (pathToModule) => { }); const pathToBundleIntegrityManifest = path.resolve(`${pathToModule}/bundle.integrity.manifest.json`); - // eslint-disable-next-line global-require,import/no-dynamic-require -- needed for dynamic script const integrityDigests = require(pathToBundleIntegrityManifest); return { @@ -91,7 +87,6 @@ const deployModuleToProdSampleCDN = async (pathToModule, moduleName) => { }; const updateModuleMap = async ({ moduleName, moduleVersion, integrityDigests }) => { - // eslint-disable-next-line global-require,import/no-dynamic-require -- needed for dynamic script const moduleMap = require(originModuleMapPath); console.log(`Updating module map for ${moduleName}@${moduleVersion}`); const gitSha = getGitSha(); diff --git a/scripts/set-dev-endpoints.js b/scripts/set-dev-endpoints.js index c0a985c08..bec6c757a 100644 --- a/scripts/set-dev-endpoints.js +++ b/scripts/set-dev-endpoints.js @@ -51,7 +51,6 @@ const symlinkEndpointsFile = () => { }; const validateEndpointsFile = () => { - // eslint-disable-next-line global-require,import/no-dynamic-require -- needed for dynamic script const endpoints = require(PATH_TO_ENDPOINTS)(); assert(typeof endpoints === 'object', '`endpoints` must be an Object'); Object.values(endpoints).forEach(({ destination, devProxyPath }) => { diff --git a/src/client/initClient.jsx b/src/client/initClient.jsx index ec4fc4fca..c64ad1c2d 100644 --- a/src/client/initClient.jsx +++ b/src/client/initClient.jsx @@ -27,10 +27,8 @@ import createRoutes from '../universal/routes'; export default async function initClient() { try { - /* eslint-disable no-underscore-dangle -- private API */ setModuleMap(global.__CLIENT_HOLOCRON_MODULE_MAP__); setRequiredExternalsRegistry(global.__HOLOCRON_EXTERNALS__); - /* eslint-enable no-underscore-dangle */ moveHelmetScripts(); const store = initializeClientStore(); @@ -79,10 +77,10 @@ export default async function initClient() { [...document.querySelectorAll('.ssr-css')] .forEach((style) => style.remove()); - // eslint-disable-next-line no-underscore-dangle -- private API delete global.__INITIAL_STATE__; document.querySelector('#initial-state').remove(); } catch (error) { + // eslint-disable-next-line no-console -- error handling console.error(error); // TODO add renderError } diff --git a/src/client/prerender.js b/src/client/prerender.js index 9a2fb12e0..f1514eea7 100644 --- a/src/client/prerender.js +++ b/src/client/prerender.js @@ -29,10 +29,8 @@ export function initializeClientStore() { const enhancedFetch = compose(createTimeoutFetch(6e3))(fetch); const enhancer = createEnhancer(); - /* eslint-disable no-underscore-dangle -- private API */ const initialState = global.__INITIAL_STATE__ !== undefined ? transit.fromJSON(global.__INITIAL_STATE__) : undefined; - /* eslint-enable no-underscore-dangle */ const store = createHolocronStore({ reducer, initialState, enhancer, extraThunkArguments: { fetchClient: enhancedFetch }, }); diff --git a/src/client/publicPath.js b/src/client/publicPath.js index dc7afbd71..f7ef38627 100644 --- a/src/client/publicPath.js +++ b/src/client/publicPath.js @@ -14,13 +14,12 @@ * permissions and limitations under the License. */ -// eslint-disable-next-line no-underscore-dangle -- webpack API if (global.__webpack_public_path__) { // https://github.com/webpack/webpack/issues/2776#issuecomment-233208623 // have to make the assignment inside of the compiled code // webpack ignores the global variable // this var is defined by webpack - // eslint-disable-next-line no-undef, camelcase, no-underscore-dangle -- webpack API + // eslint-disable-next-line no-undef, camelcase -- webpack API __webpack_public_path__ = global.__webpack_public_path__; } diff --git a/src/client/service-worker/.eslintrc.json b/src/client/service-worker/.eslintrc.json deleted file mode 100644 index 8472ae368..000000000 --- a/src/client/service-worker/.eslintrc.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "extends": "../../../.eslintrc.json", - "overrides": [ - { - "files": "**/*.js", - "rules": { - // for clearer error reporting, having anonymous functions may inhibit us from - // collecting a concise stack trace with the proper names of invoked functions - "prefer-arrow-callback": "off", - // generally, self is acceptable to use in a service worker script - // we want to allow this behavior throughout - "no-restricted-globals": ["off", "self"], - // we have `@americanexpress/one-service-worker` as part of devDependencies - // so we disable this rule to allow it to exist as we use it only during build time - "import/no-extraneous-dependencies": [ - "off", - { - "devDependencies": true - } - ] - } - } - ] -} diff --git a/src/server/devHolocronCDN.js b/src/server/devHolocronCDN.js index fbd8cfc0a..9f197e869 100644 --- a/src/server/devHolocronCDN.js +++ b/src/server/devHolocronCDN.js @@ -14,9 +14,6 @@ * permissions and limitations under the License. */ -/* eslint import/no-extraneous-dependencies: ["error", {"devDependencies": true }] -- - * this file is only loaded in development */ - import path from 'node:path'; import fs from 'node:fs'; import { argv } from 'yargs'; diff --git a/src/server/index.js b/src/server/index.js index 476f35af2..8dc1a14c3 100644 --- a/src/server/index.js +++ b/src/server/index.js @@ -72,7 +72,6 @@ export const listen = async ({ async function ssrServerStart() { // need to load _some_ locale so that react-intl does not prevent modules from loading - // eslint-disable-next-line no-underscore-dangle -- lean-intl API Intl.__addLocaleData(enData); await loadModules(); diff --git a/src/server/utils/devCdnFactory.js b/src/server/utils/devCdnFactory.js index c7c9a8448..2699a5b04 100644 --- a/src/server/utils/devCdnFactory.js +++ b/src/server/utils/devCdnFactory.js @@ -12,9 +12,6 @@ * under the License. */ -// This file is only used in development so imports should be devDeps unless used elsewhere -/* eslint "import/no-extraneous-dependencies": ["error", {"devDependencies": true}] -- see above */ - import path from 'node:path'; import fs from 'node:fs'; import cors from '@fastify/cors'; diff --git a/src/server/utils/logging/config/development.js b/src/server/utils/logging/config/development.js index a4efb09e1..e09bbc855 100644 --- a/src/server/utils/logging/config/development.js +++ b/src/server/utils/logging/config/development.js @@ -14,7 +14,6 @@ * permissions and limitations under the License. */ -// eslint-disable-next-line import/no-extraneous-dependencies -- this is only loaded in development import pinoPretty from 'pino-pretty'; import { printStatusCode, diff --git a/src/server/utils/watchLocalModules.js b/src/server/utils/watchLocalModules.js index 809fe8c09..449ea79e4 100644 --- a/src/server/utils/watchLocalModules.js +++ b/src/server/utils/watchLocalModules.js @@ -14,9 +14,6 @@ * permissions and limitations under the License. */ -// This file is only used in development so importing devDeps is not an issue -/* eslint "import/no-extraneous-dependencies": ["error", {"devDependencies": true}] -- see above */ - import fs from 'node:fs'; import path from 'node:path'; import chokidar from 'chokidar';