From 247e74c4dd64f39791695ce126d1cf38a97adb22 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Dec 2023 10:58:50 +0000 Subject: [PATCH 001/120] Bump actions/labeler from 4 to 5 Bumps [actions/labeler](https://github.com/actions/labeler) from 4 to 5. - [Release notes](https://github.com/actions/labeler/releases) - [Commits](https://github.com/actions/labeler/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/labeler dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/labeler.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index a9d25b1e47..da6690818c 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -17,6 +17,6 @@ jobs: label: runs-on: ubuntu-latest steps: - - uses: actions/labeler@v4 + - uses: actions/labeler@v5 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" From 21a34f6980eb20368f103928e5e438a4651dde57 Mon Sep 17 00:00:00 2001 From: Jan Dvorak Date: Sun, 16 Feb 2025 11:22:25 +0100 Subject: [PATCH 002/120] Update labeler configuration --- .github/labeler.yml | 192 ++++++++++++++++++++++++++++---------------- 1 file changed, 123 insertions(+), 69 deletions(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index 51963d8eed..343cc5ee6a 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,124 +1,178 @@ Project:Accounts:Password: - - packages/accounts-password/**/* + - changed-files: + - any-glob-to-any-file: packages/accounts-password/**/* Project:Accounts:UI: - - packages/meteor-developer-config-ui/**/* - - packages/github-config-ui/**/* - - packages/google-config-ui/**/* - - packages/twitter-config-ui/**/* - - packages/facebook-config-ui/**/* - - packages/accounts-ui/**/* - - packages/accounts-ui-unstyled/**/* + - changed-files: + - any-glob-to-any-file: + - packages/meteor-developer-config-ui/**/* + - packages/github-config-ui/**/* + - packages/google-config-ui/**/* + - packages/twitter-config-ui/**/* + - packages/facebook-config-ui/**/* + - packages/accounts-ui/**/* + - packages/accounts-ui-unstyled/**/* Project:CSS: - - packages/non-core/less/**/* - - packages/minifier-css/**/* - - packages/standard-minifier-css/**/* + - changed-files: + - any-glob-to-any-file: + - packages/non-core/less/**/* + - packages/minifier-css/**/* + - packages/standard-minifier-css/**/* Project:DDP: - - packages/ddp-common/**/* - - packages/ddp-rate-limiter/**/* - - packages/ddp-server/**/* - - packages/ddp-client/**/* - - packages/ddp/**/* - - packages/socket-stream-client/**/* + - changed-files: + - any-glob-to-any-file: + - packages/ddp-common/**/* + - packages/ddp-rate-limiter/**/* + - packages/ddp-server/**/* + - packages/ddp-client/**/* + - packages/ddp/**/* + - packages/socket-stream-client/**/* Project:EJSON: - - packages/ejson/**/* + - changed-files: + - any-glob-to-any-file: packages/ejson/**/* Project:HMR: - - packages/hot-code-push/**/* - - packages/hot-module-replacement/**/* + - changed-files: + - any-glob-to-any-file: + - packages/hot-code-push/**/* + - packages/hot-module-replacement/**/* Project:Isobuild:Minifiers: - - packages/minifier-css/**/* - - packages/minifier-js/**/* - - packages/standard-minifier-js/**/* - - packages/standard-minifier-css/**/* - - packages/standard-minifiers/**/* + - changed-files: + - any-glob-to-any-file: + - packages/minifier-css/**/* + - packages/minifier-js/**/* + - packages/standard-minifier-js/**/* + - packages/standard-minifier-css/**/* + - packages/standard-minifiers/**/* Project:Isobuild: - - tools/isobuild/**/* + - changed-files: + - any-glob-to-any-file: + - tools/isobuild/**/* Project:JS Environment:Typescript: - - packages/typescript/**/* + - changed-files: + - any-glob-to-any-file: + - packages/typescript/**/* Project:JS Environment: - - packages/babel-compiler/**/* - - packages/babel-runtime/**/* - - packages/ecmascript/**/* - - packages/ecmascript-runtime/**/* - - packages/ecmascript-runtime-client/**/* - - packages/ecmascript-runtime-server/**/* - - packages/es5-shim/**/* - - packages/jshint/**/* + - changed-files: + - any-glob-to-any-file: + - packages/babel-compiler/**/* + - packages/babel-runtime/**/* + - packages/ecmascript/**/* + - packages/ecmascript-runtime/**/* + - packages/ecmascript-runtime-client/**/* + - packages/ecmascript-runtime-server/**/* + - packages/es5-shim/**/* + - packages/jshint/**/* Project:Livequery: - - packages/livedata/**/* + - changed-files: + - any-glob-to-any-file: + - packages/livedata/**/* Project:Minimongo: - - packages/minimongo + - changed-files: + - any-glob-to-any-file: + - packages/minimongo Project:Mobile: - - tools/cordova/**/* - - packages/launch-screen/**/* - - packages/mobile-experience/**/* - - packages/mobile-status-bar/**/* + - changed-files: + - any-glob-to-any-file: + - tools/cordova/**/* + - packages/launch-screen/**/* + - packages/mobile-experience/**/* + - packages/mobile-status-bar/**/* Project:Mongo Driver: - - packages/mongo/**/* - - packages/mongo-dev-server/**/* - - packages/mongo-id/**/* - - packages/mongo-livedata/**/* - - packages/disable-oplog/**/* - - packages/non-core/mongo-decimal/**/* + - changed-files: + - any-glob-to-any-file: + - packages/mongo/**/* + - packages/mongo-dev-server/**/* + - packages/mongo-id/**/* + - packages/mongo-livedata/**/* + - packages/disable-oplog/**/* + - packages/non-core/mongo-decimal/**/* Project:NPM: - - npm-packages/**/* + - changed-files: + - any-glob-to-any-file: + - npm-packages/**/* Project:Release Process: - - scripts/**/* + - changed-files: + - any-glob-to-any-file: + - scripts/**/* Project:Tool: - - tools/**/* - - packages/meteor-tool/**/* + - changed-files: + - any-glob-to-any-file: + - tools/**/* + - packages/meteor-tool/**/* Project:Tool:Shell: - - tools/console/**/* + - changed-files: + - any-glob-to-any-file: + - tools/console/**/* Project:Utilities:Email: - - packages/email/**/* + - changed-files: + - any-glob-to-any-file: + - packages/email/**/* Project:Utilities:HTTP: - - packages/deprecated/http/**/* - - packages/fetch/**/* - - packages/url/**/* + - changed-files: + - any-glob-to-any-file: + - packages/deprecated/http/**/* + - packages/fetch/**/* + - packages/url/**/* Project:Webapp: - - packages/webapp/**/* - - packages/webapp-hashing/**/* + - changed-files: + - any-glob-to-any-file: + - packages/webapp/**/* + - packages/webapp-hashing/**/* Project:Windows: - - scripts/windows/**/* + - changed-files: + - any-glob-to-any-file: + - scripts/windows/**/* Project:Webapp:Browser Policy: - - packages/browser-policy/**/* - - packages/browser-policy-common/**/* - - packages/browser-policy-content/**/* - - packages/browser-policy-framing/**/* + - changed-files: + - any-glob-to-any-file: + - packages/browser-policy/**/* + - packages/browser-policy-common/**/* + - packages/browser-policy-content/**/* + - packages/browser-policy-framing/**/* Project:Examples: - - tools/cli/example-repositories.js + - changed-files: + - any-glob-to-any-file: + - tools/cli/example-repositories.js Project:Dynamic Import: - - packages/dynamic-import/**/* + - changed-files: + - any-glob-to-any-file: + - packages/dynamic-import/**/* Project:Docs: - - docs/**/* - - v3-docs/**/* + - changed-files: + - any-glob-to-any-file: + - docs/**/* + - v3-docs/**/* Project:Guide: - - guide/**/* + - changed-files: + - any-glob-to-any-file: + - guide/**/* github_actions: - - ./github/**/* + - changed-files: + - any-glob-to-any-file: + - ./github/**/* From 5987ed70ad287e7360266dfc2154483de672f93a Mon Sep 17 00:00:00 2001 From: Welkin Wong Date: Tue, 22 Apr 2025 14:34:58 +0800 Subject: [PATCH 003/120] Add TypeScript declarations for isModern and getMinimumBrowserVersions functions --- packages/modern-browsers/modern.d.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/modern-browsers/modern.d.ts b/packages/modern-browsers/modern.d.ts index 69f1268f74..efa33b82e8 100644 --- a/packages/modern-browsers/modern.d.ts +++ b/packages/modern-browsers/modern.d.ts @@ -1,4 +1,12 @@ +export declare function isModern( + browser: { name: string, major: number, minor?: number, patch?: number } +): boolean; + export declare function setMinimumBrowserVersions( versions: Record, - source: string + source?: string ): void; + +export declare function getMinimumBrowserVersions(): Record>; + +export declare function calculateHashOfMinimumVersions(): string; \ No newline at end of file From 4f7bfbfff3fd8eb43605e4cf154363a2bab4c196 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Thu, 8 May 2025 17:30:09 +0200 Subject: [PATCH 004/120] Revert "Revert "Bump mongodb dependency to version 6.16.0 in npm-mongo package (#13710)"" This reverts commit 86fc826b9379c86c51ef1334c5d679b12c60150a. --- packages/npm-mongo/package.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/npm-mongo/package.js b/packages/npm-mongo/package.js index 8b45db0032..fad1d65554 100644 --- a/packages/npm-mongo/package.js +++ b/packages/npm-mongo/package.js @@ -8,7 +8,7 @@ Package.describe({ }); Npm.depends({ - mongodb: "6.9.0" + mongodb: "6.16.0" }); Package.onUse(function (api) { From e35ec4872aaa00db3c9f142ffda6710dd60a7d6d Mon Sep 17 00:00:00 2001 From: Welkin Wong Date: Fri, 25 Apr 2025 23:26:37 +0800 Subject: [PATCH 005/120] Bump mongodb dependency to version 6.16.0 in npm-mongo package --- packages/npm-mongo/package.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/npm-mongo/package.js b/packages/npm-mongo/package.js index 8b45db0032..fad1d65554 100644 --- a/packages/npm-mongo/package.js +++ b/packages/npm-mongo/package.js @@ -8,7 +8,7 @@ Package.describe({ }); Npm.depends({ - mongodb: "6.9.0" + mongodb: "6.16.0" }); Package.onUse(function (api) { From 0335287388479ed70eb6b19aa36f5a9a69ef3258 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Fri, 9 May 2025 19:43:44 +0200 Subject: [PATCH 006/120] ensure npm-mongo-legacy approach to ensure upgrades for legacy projects --- packages/npm-mongo-legacy/README.md | 4 ++++ packages/npm-mongo-legacy/index.d.ts | 3 +++ packages/npm-mongo-legacy/package.js | 18 ++++++++++++++++++ packages/npm-mongo-legacy/wrapper.js | 11 +++++++++++ packages/npm-mongo/package.js | 1 + packages/npm-mongo/wrapper.js | 15 +++++++++++++-- 6 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 packages/npm-mongo-legacy/README.md create mode 100644 packages/npm-mongo-legacy/index.d.ts create mode 100644 packages/npm-mongo-legacy/package.js create mode 100644 packages/npm-mongo-legacy/wrapper.js diff --git a/packages/npm-mongo-legacy/README.md b/packages/npm-mongo-legacy/README.md new file mode 100644 index 0000000000..4776f34fbc --- /dev/null +++ b/packages/npm-mongo-legacy/README.md @@ -0,0 +1,4 @@ +# npm-mongo +[Source code of released version](https://github.com/meteor/meteor/tree/master/packages/npm-mongo) | [Source code of development version](https://github.com/meteor/meteor/tree/devel/packages/npm-mongo) +*** + diff --git a/packages/npm-mongo-legacy/index.d.ts b/packages/npm-mongo-legacy/index.d.ts new file mode 100644 index 0000000000..d7ab3d7558 --- /dev/null +++ b/packages/npm-mongo-legacy/index.d.ts @@ -0,0 +1,3 @@ +import * as NpmModuleMongodb from 'mongodb'; +declare const NpmModuleMongodbVersion: string; +export { NpmModuleMongodb, NpmModuleMongodbVersion }; diff --git a/packages/npm-mongo-legacy/package.js b/packages/npm-mongo-legacy/package.js new file mode 100644 index 0000000000..9f924773d6 --- /dev/null +++ b/packages/npm-mongo-legacy/package.js @@ -0,0 +1,18 @@ +// This has been moved out of the `mongo` package so it can be used by the tool +// via isopacket, without having to also load ddp-server. + +Package.describe({ + summary: "Wrapper around the mongo npm package", + version: "6.10.2", + documentation: null, +}); + +Npm.depends({ + mongodb: "6.9.0", +}); + +Package.onUse(function (api) { + api.addFiles("wrapper.js", "server"); + api.export(["NpmModuleMongodb", "NpmModuleMongodbVersion"], "server"); + api.addAssets("index.d.ts", "server"); +}); diff --git a/packages/npm-mongo-legacy/wrapper.js b/packages/npm-mongo-legacy/wrapper.js new file mode 100644 index 0000000000..e341493895 --- /dev/null +++ b/packages/npm-mongo-legacy/wrapper.js @@ -0,0 +1,11 @@ +const oldNoDeprecationValue = process.noDeprecation; +try { + // Silence deprecation warnings introduced in a patch update to mongodb: + // https://github.com/meteor/meteor/pull/9942#discussion_r218564879 + process.noDeprecation = true; + NpmModuleMongodb = Npm.require('mongodb'); +} finally { + process.noDeprecation = oldNoDeprecationValue; +} + +NpmModuleMongodbVersion = Npm.require('mongodb/package.json').version; diff --git a/packages/npm-mongo/package.js b/packages/npm-mongo/package.js index fad1d65554..480a757a67 100644 --- a/packages/npm-mongo/package.js +++ b/packages/npm-mongo/package.js @@ -12,6 +12,7 @@ Npm.depends({ }); Package.onUse(function (api) { + api.use(['npm-mongo-legacy', "ecmascript"], "server"); api.addFiles("wrapper.js", "server"); api.export(["NpmModuleMongodb", "NpmModuleMongodbVersion"], "server"); api.addAssets("index.d.ts", "server"); diff --git a/packages/npm-mongo/wrapper.js b/packages/npm-mongo/wrapper.js index e341493895..6e3671bc66 100644 --- a/packages/npm-mongo/wrapper.js +++ b/packages/npm-mongo/wrapper.js @@ -1,11 +1,22 @@ +import { + NpmModuleMongodb as NpmModuleMongodbLegacy, + NpmModuleMongodbVersion as NpmModuleMongodbVersionLegacy +} from 'meteor/npm-mongo-legacy'; + +const useLegacyMongo = process.env.METEOR_USE_LEGACY_MONGO; + const oldNoDeprecationValue = process.noDeprecation; try { // Silence deprecation warnings introduced in a patch update to mongodb: // https://github.com/meteor/meteor/pull/9942#discussion_r218564879 process.noDeprecation = true; - NpmModuleMongodb = Npm.require('mongodb'); + NpmModuleMongodb = useLegacyMongo + ? NpmModuleMongodbLegacy + : Npm.require('mongodb'); } finally { process.noDeprecation = oldNoDeprecationValue; } -NpmModuleMongodbVersion = Npm.require('mongodb/package.json').version; +NpmModuleMongodbVersion = useLegacyMongo + ? NpmModuleMongodbVersionLegacy + : Npm.require('mongodb/package.json').version; From eca1382f70f29c05b41537c1de92f5926eac1ed4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Fri, 9 May 2025 19:51:37 +0200 Subject: [PATCH 007/120] ensure better npm-mongo-legacy approach to ensure upgrades for legacy projects --- packages/npm-mongo/package.js | 1 - packages/npm-mongo/wrapper.js | 11 +++-------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/packages/npm-mongo/package.js b/packages/npm-mongo/package.js index 480a757a67..fad1d65554 100644 --- a/packages/npm-mongo/package.js +++ b/packages/npm-mongo/package.js @@ -12,7 +12,6 @@ Npm.depends({ }); Package.onUse(function (api) { - api.use(['npm-mongo-legacy', "ecmascript"], "server"); api.addFiles("wrapper.js", "server"); api.export(["NpmModuleMongodb", "NpmModuleMongodbVersion"], "server"); api.addAssets("index.d.ts", "server"); diff --git a/packages/npm-mongo/wrapper.js b/packages/npm-mongo/wrapper.js index 6e3671bc66..7df43c3385 100644 --- a/packages/npm-mongo/wrapper.js +++ b/packages/npm-mongo/wrapper.js @@ -1,9 +1,4 @@ -import { - NpmModuleMongodb as NpmModuleMongodbLegacy, - NpmModuleMongodbVersion as NpmModuleMongodbVersionLegacy -} from 'meteor/npm-mongo-legacy'; - -const useLegacyMongo = process.env.METEOR_USE_LEGACY_MONGO; +const useLegacyMongo = !!Package['npm-mongo-legacy']; const oldNoDeprecationValue = process.noDeprecation; try { @@ -11,12 +6,12 @@ try { // https://github.com/meteor/meteor/pull/9942#discussion_r218564879 process.noDeprecation = true; NpmModuleMongodb = useLegacyMongo - ? NpmModuleMongodbLegacy + ? Package['npm-mongo-legacy'].NpmModuleMongodb : Npm.require('mongodb'); } finally { process.noDeprecation = oldNoDeprecationValue; } NpmModuleMongodbVersion = useLegacyMongo - ? NpmModuleMongodbVersionLegacy + ? Package['npm-mongo-legacy'].NpmModuleMongodbVersion : Npm.require('mongodb/package.json').version; From ef28617c580f457d0ea7b4507a8fd2f99d76b8c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Fri, 9 May 2025 20:03:14 +0200 Subject: [PATCH 008/120] ensure better npm-mongo-legacy approach to ensure upgrades for legacy projects --- packages/npm-mongo-legacy/package.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/npm-mongo-legacy/package.js b/packages/npm-mongo-legacy/package.js index 9f924773d6..6a5106c95f 100644 --- a/packages/npm-mongo-legacy/package.js +++ b/packages/npm-mongo-legacy/package.js @@ -2,7 +2,7 @@ // via isopacket, without having to also load ddp-server. Package.describe({ - summary: "Wrapper around the mongo npm package", + summary: "Wrapper around the mongo npm package (legacy)", version: "6.10.2", documentation: null, }); From 28cd192c36ccabb8b3926da492804c6174c32db6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Sat, 10 May 2025 11:54:53 +0200 Subject: [PATCH 009/120] Update README.md --- packages/npm-mongo-legacy/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/npm-mongo-legacy/README.md b/packages/npm-mongo-legacy/README.md index 4776f34fbc..39675814ec 100644 --- a/packages/npm-mongo-legacy/README.md +++ b/packages/npm-mongo-legacy/README.md @@ -1,4 +1,4 @@ -# npm-mongo -[Source code of released version](https://github.com/meteor/meteor/tree/master/packages/npm-mongo) | [Source code of development version](https://github.com/meteor/meteor/tree/devel/packages/npm-mongo) +# npm-mongo-legacy +[Source code of released version](https://github.com/meteor/meteor/tree/devel/packages/npm-mongo-legacy) *** From 833ba0247d738c0754fbb9b64c7d86264200335b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Mon, 12 May 2025 16:54:37 +0200 Subject: [PATCH 010/120] ensure default id generation strategy --- packages/mongo/collection/collection.js | 9 ++++++--- packages/mongo/collection/collection_utils.js | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/mongo/collection/collection.js b/packages/mongo/collection/collection.js index 28776c9a93..5e248c389b 100644 --- a/packages/mongo/collection/collection.js +++ b/packages/mongo/collection/collection.js @@ -3,7 +3,9 @@ import { AsyncMethods } from './methods_async'; import { SyncMethods } from './methods_sync'; import { IndexMethods } from './methods_index'; import { - ID_GENERATORS, normalizeOptions, + ID_GENERATION_DEFAULT, + ID_GENERATORS, + normalizeOptions, setupAutopublish, setupConnection, setupDriver, @@ -41,7 +43,9 @@ Mongo.Collection = function Collection(name, options) { options = normalizeOptions(options); - this._makeNewID = ID_GENERATORS[options.idGeneration]?.(name); + this._makeNewID = ( + ID_GENERATORS[options.idGeneration] || ID_GENERATION_DEFAULT + )?.(name); this._transform = LocalCollection.wrapTransform(options.transform); this.resolverType = options.resolverType; @@ -265,4 +269,3 @@ Meteor.Collection = Mongo.Collection; // Allow deny stuff is now in the allow-deny package Object.assign(Mongo.Collection.prototype, AllowDeny.CollectionPrototype); - diff --git a/packages/mongo/collection/collection_utils.js b/packages/mongo/collection/collection_utils.js index a0f7442ded..1105c0f209 100644 --- a/packages/mongo/collection/collection_utils.js +++ b/packages/mongo/collection/collection_utils.js @@ -13,6 +13,8 @@ export const ID_GENERATORS = { } }; +export const ID_GENERATION_DEFAULT = ID_GENERATORS.STRING; + export function setupConnection(name, options) { if (!name || options.connection === null) return null; if (options.connection) return options.connection; From aa81324fa7936bcbc847be21438290996e8fcfd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Mon, 12 May 2025 17:10:25 +0200 Subject: [PATCH 011/120] ensure default id generation strategy --- packages/mongo/collection/collection.js | 4 +- packages/mongo/collection/collection_utils.js | 9 ++- packages/mongo/tests/collection_tests.js | 55 +++++++++++++++++++ 3 files changed, 62 insertions(+), 6 deletions(-) diff --git a/packages/mongo/collection/collection.js b/packages/mongo/collection/collection.js index 5e248c389b..7d6eac5a6a 100644 --- a/packages/mongo/collection/collection.js +++ b/packages/mongo/collection/collection.js @@ -43,9 +43,7 @@ Mongo.Collection = function Collection(name, options) { options = normalizeOptions(options); - this._makeNewID = ( - ID_GENERATORS[options.idGeneration] || ID_GENERATION_DEFAULT - )?.(name); + this._makeNewID = ID_GENERATORS[options.idGeneration]?.(name); this._transform = LocalCollection.wrapTransform(options.transform); this.resolverType = options.resolverType; diff --git a/packages/mongo/collection/collection_utils.js b/packages/mongo/collection/collection_utils.js index 1105c0f209..e6c79646d5 100644 --- a/packages/mongo/collection/collection_utils.js +++ b/packages/mongo/collection/collection_utils.js @@ -13,8 +13,6 @@ export const ID_GENERATORS = { } }; -export const ID_GENERATION_DEFAULT = ID_GENERATORS.STRING; - export function setupConnection(name, options) { if (!name || options.connection === null) return null; if (options.connection) return options.connection; @@ -90,12 +88,17 @@ export function normalizeOptions(options) { options.connection = options.manager; } + const cleanedOptions = Object.fromEntries( + Object.entries(options || {}).filter(([_, v]) => v !== undefined), + ); + + // 2) Spread defaults first, then only the defined overrides return { connection: undefined, idGeneration: 'STRING', transform: null, _driver: undefined, _preventAutopublish: false, - ...options, + ...cleanedOptions, }; } diff --git a/packages/mongo/tests/collection_tests.js b/packages/mongo/tests/collection_tests.js index a0e9e7fecf..1d10431c7f 100644 --- a/packages/mongo/tests/collection_tests.js +++ b/packages/mongo/tests/collection_tests.js @@ -485,3 +485,58 @@ Meteor.isServer && Tinytest.addAsync('collection - simple add', async function(t test.equal((await collection.findOneAsync(id)).a, 2); await collection.removeAsync({}); }); + +Tinytest.addAsync('collection - default idGeneration when not provided', async function(test) { + if (!Meteor.isServer) { + return; + } + // Create a collection without specifying idGeneration option + var collectionName = 'defaultIdGeneration' + test.id; + var collection = new Mongo.Collection(collectionName); + + // Insert a document + var id = await collection.insertAsync({a: 1}); + + // Verify that the _id is a string (since ID_GENERATION_DEFAULT is ID_GENERATORS.STRING) + test.isTrue(typeof id === 'string', 'Document _id should be a string when no idGeneration option is provided'); + test.isFalse(id instanceof Mongo.ObjectID, 'Document _id should not be a Mongo.ObjectID when no idGeneration option is provided'); + + // Clean up + await collection.removeAsync({}); +}); + +Tinytest.addAsync('collection - compare default idGeneration with explicit idGeneration', async function(test) { + if (!Meteor.isServer) { + return; + } + // Create a collection without specifying idGeneration option (should use ID_GENERATION_DEFAULT) + var defaultCollectionName = 'defaultIdGeneration2' + test.id; + var defaultCollection = new Mongo.Collection(defaultCollectionName); + + // Create a collection with explicit STRING idGeneration + var stringCollectionName = 'stringIdGeneration' + test.id; + var stringCollection = new Mongo.Collection(stringCollectionName, { idGeneration: 'STRING' }); + + // Create a collection with MONGO idGeneration + var mongoCollectionName = 'mongoIdGeneration' + test.id; + var mongoCollection = new Mongo.Collection(mongoCollectionName, { idGeneration: 'MONGO' }); + + // Insert documents + var defaultId = await defaultCollection.insertAsync({a: 1}); + var stringId = await stringCollection.insertAsync({a: 1}); + var mongoId = await mongoCollection.insertAsync({a: 1}); + + // Verify default behaves like STRING + test.isTrue(typeof defaultId === 'string', 'Default idGeneration should produce string IDs'); + test.isTrue(typeof stringId === 'string', 'STRING idGeneration should produce string IDs'); + test.isFalse(defaultId instanceof Mongo.ObjectID, 'Default idGeneration should not produce Mongo.ObjectID'); + test.isFalse(stringId instanceof Mongo.ObjectID, 'STRING idGeneration should not produce Mongo.ObjectID'); + + // Verify MONGO produces ObjectIDs + test.isTrue(mongoId instanceof Mongo.ObjectID, 'MONGO idGeneration should produce Mongo.ObjectID'); + + // Clean up + await defaultCollection.removeAsync({}); + await stringCollection.removeAsync({}); + await mongoCollection.removeAsync({}); +}); From 9ea72dd5f43fbd073159f5160d7296678cde020e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Mon, 12 May 2025 17:12:48 +0200 Subject: [PATCH 012/120] ensure default id generation strategy --- packages/mongo/tests/collection_tests.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mongo/tests/collection_tests.js b/packages/mongo/tests/collection_tests.js index 1d10431c7f..dd78eb58b3 100644 --- a/packages/mongo/tests/collection_tests.js +++ b/packages/mongo/tests/collection_tests.js @@ -492,7 +492,7 @@ Tinytest.addAsync('collection - default idGeneration when not provided', async f } // Create a collection without specifying idGeneration option var collectionName = 'defaultIdGeneration' + test.id; - var collection = new Mongo.Collection(collectionName); + var collection = new Mongo.Collection(collectionName, { idGeneration: undefined }); // Insert a document var id = await collection.insertAsync({a: 1}); @@ -511,7 +511,7 @@ Tinytest.addAsync('collection - compare default idGeneration with explicit idGen } // Create a collection without specifying idGeneration option (should use ID_GENERATION_DEFAULT) var defaultCollectionName = 'defaultIdGeneration2' + test.id; - var defaultCollection = new Mongo.Collection(defaultCollectionName); + var defaultCollection = new Mongo.Collection(defaultCollectionName, { idGeneration: undefined }); // Create a collection with explicit STRING idGeneration var stringCollectionName = 'stringIdGeneration' + test.id; From fd9b8443b0597e48403734435cb819edbf6a3cf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Mon, 12 May 2025 18:08:18 +0200 Subject: [PATCH 013/120] clean references of ID_GENERATION_DEFAULT as not used --- packages/mongo/collection/collection.js | 1 - packages/mongo/tests/collection_tests.js | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/mongo/collection/collection.js b/packages/mongo/collection/collection.js index 7d6eac5a6a..e587f398d0 100644 --- a/packages/mongo/collection/collection.js +++ b/packages/mongo/collection/collection.js @@ -3,7 +3,6 @@ import { AsyncMethods } from './methods_async'; import { SyncMethods } from './methods_sync'; import { IndexMethods } from './methods_index'; import { - ID_GENERATION_DEFAULT, ID_GENERATORS, normalizeOptions, setupAutopublish, diff --git a/packages/mongo/tests/collection_tests.js b/packages/mongo/tests/collection_tests.js index dd78eb58b3..e8841c5892 100644 --- a/packages/mongo/tests/collection_tests.js +++ b/packages/mongo/tests/collection_tests.js @@ -497,7 +497,7 @@ Tinytest.addAsync('collection - default idGeneration when not provided', async f // Insert a document var id = await collection.insertAsync({a: 1}); - // Verify that the _id is a string (since ID_GENERATION_DEFAULT is ID_GENERATORS.STRING) + // Verify that the _id is a string test.isTrue(typeof id === 'string', 'Document _id should be a string when no idGeneration option is provided'); test.isFalse(id instanceof Mongo.ObjectID, 'Document _id should not be a Mongo.ObjectID when no idGeneration option is provided'); @@ -509,7 +509,7 @@ Tinytest.addAsync('collection - compare default idGeneration with explicit idGen if (!Meteor.isServer) { return; } - // Create a collection without specifying idGeneration option (should use ID_GENERATION_DEFAULT) + // Create a collection without specifying idGeneration option var defaultCollectionName = 'defaultIdGeneration2' + test.id; var defaultCollection = new Mongo.Collection(defaultCollectionName, { idGeneration: undefined }); From e726a2bdbb1a9349c504f925f138da9864a931e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Tue, 24 Jun 2025 14:45:24 +0200 Subject: [PATCH 014/120] ensure edges cases on swc config invalidation --- packages/babel-compiler/babel-compiler.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/babel-compiler/babel-compiler.js b/packages/babel-compiler/babel-compiler.js index 506f865117..618ea628a3 100644 --- a/packages/babel-compiler/babel-compiler.js +++ b/packages/babel-compiler/babel-compiler.js @@ -139,7 +139,9 @@ BCp.initializeMeteorAppSwcrc = function () { let currentLastModifiedConfigTime; if (hasSwcJs) { // For dynamic JS files, first get the resolved configuration - const resolvedConfig = lastModifiedSwcConfig || getMeteorAppSwcrc(swcFile); + const resolvedConfig = lastModifiedSwcConfigTime?.includes(`${fileModTime}`) + ? lastModifiedSwcConfig || getMeteorAppSwcrc(swcFile) + : getMeteorAppSwcrc(swcFile); // Calculate a hash of the resolved configuration to detect changes const contentHash = crypto .createHash('sha256') @@ -161,6 +163,8 @@ BCp.initializeMeteorAppSwcrc = function () { if (this.isVerbose(lastModifiedMeteorConfig)) { logConfigBlock('SWC Config', lastModifiedSwcConfig); } + + this._swcIncompatible = {}; } return lastModifiedSwcConfig; }; From 159d1148e5a9072a325ef17194dc76d31aa43394 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Tue, 24 Jun 2025 17:45:06 +0200 Subject: [PATCH 015/120] fix regression on recompile behavior --- tools/project-context.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/tools/project-context.js b/tools/project-context.js index c14dce5cfa..a04089db88 100644 --- a/tools/project-context.js +++ b/tools/project-context.js @@ -1821,13 +1821,17 @@ export class MeteorConfig { let config = this._ensureInitialized(); let filteredConfig = keys.length ? {} : config; if (config) { - keys.every(key => { - if (config && _.has(config, key)) { - filteredConfig = config[key]; - return true; - } - return false; - }); + const subConfig = config[keys[0]]; + if (subConfig) { + filteredConfig = subConfig; + const [, ...subConfigKeys] = keys; + subConfigKeys.every(key => { + if (filteredConfig && _.has(filteredConfig, key)) { + filteredConfig = filteredConfig[key]; + return true; + } + }); + } return filteredConfig; } } From 0ee4c0dc07f13731decd6f38ab78647d0ee9b60c Mon Sep 17 00:00:00 2001 From: Jan Dvorak Date: Wed, 25 Jun 2025 09:34:08 +0200 Subject: [PATCH 016/120] Node v22.17.0 https://nodejs.org/en/blog/release/v22.17.0 --- .travis.yml | 2 +- meteor | 2 +- scripts/build-dev-bundle-common.sh | 2 +- v3-docs/v3-migration-docs/index.md | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 622ed6cadd..3e63726f4c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ dist: jammy sudo: required services: xvfb node_js: - - "22.16.0" + - "22.17.0" cache: directories: - ".meteor" diff --git a/meteor b/meteor index e452f7b273..bc655c6fd9 100755 --- a/meteor +++ b/meteor @@ -1,6 +1,6 @@ #!/usr/bin/env bash -BUNDLE_VERSION=22.16.0.1 +BUNDLE_VERSION=22.17.0.0 # OS Check. Put here because here is where we download the precompiled # bundles that are arch specific. diff --git a/scripts/build-dev-bundle-common.sh b/scripts/build-dev-bundle-common.sh index a00f7e4f2b..cea7b94ae6 100644 --- a/scripts/build-dev-bundle-common.sh +++ b/scripts/build-dev-bundle-common.sh @@ -5,7 +5,7 @@ set -u UNAME=$(uname) ARCH=$(uname -m) -NODE_VERSION=22.16.0 +NODE_VERSION=22.17.0 MONGO_VERSION_64BIT=7.0.16 MONGO_VERSION_32BIT=3.2.22 NPM_VERSION=10.9.2 diff --git a/v3-docs/v3-migration-docs/index.md b/v3-docs/v3-migration-docs/index.md index ea5839cdab..f101014964 100644 --- a/v3-docs/v3-migration-docs/index.md +++ b/v3-docs/v3-migration-docs/index.md @@ -1,6 +1,6 @@ --- -meteor_version: 3.3 -node_version: 22.16.0 +meteor_version: 3.3.1 +node_version: 22.17.0 npm_version: 10.9.2 --- # Meteor 3.0 Migration Guide From a0c46057423f7b39a0f506c976903cdde4ad21d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Wed, 25 Jun 2025 14:31:11 +0200 Subject: [PATCH 017/120] provide more test coverage and correct meteor config --- tools/project-context.js | 24 +++++--------- tools/tests/app-config.js | 68 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 16 deletions(-) diff --git a/tools/project-context.js b/tools/project-context.js index a04089db88..116778a673 100644 --- a/tools/project-context.js +++ b/tools/project-context.js @@ -1818,22 +1818,14 @@ export class MeteorConfig { // General utility for querying the "meteor" section of package.json. // TODO Implement an API for setting these values? get(...keys) { - let config = this._ensureInitialized(); - let filteredConfig = keys.length ? {} : config; - if (config) { - const subConfig = config[keys[0]]; - if (subConfig) { - filteredConfig = subConfig; - const [, ...subConfigKeys] = keys; - subConfigKeys.every(key => { - if (filteredConfig && _.has(filteredConfig, key)) { - filteredConfig = filteredConfig[key]; - return true; - } - }); - } - return filteredConfig; - } + const config = this._ensureInitialized(); + if (!config) return undefined; + + return keys.reduce((cur, key) => { + return (cur != null && _.has(cur, key)) + ? cur[key] + : undefined; + }, config); } getNodeModulesToRecompileByArch() { diff --git a/tools/tests/app-config.js b/tools/tests/app-config.js index 7a7cd3832b..1ff476a01e 100644 --- a/tools/tests/app-config.js +++ b/tools/tests/app-config.js @@ -199,3 +199,71 @@ selftest.define("testModule", async function () { await run.stop(); }); + +async function writeModernConfig(s, run, modernConfig, errorPattern) { + const json = JSON.parse(s.read("package.json")); + + json.meteor = { + // Make sure the tests.js module is always loaded eagerly. + testModule: "tests.js" + }; + + if (typeof modernConfig === "undefined") { + delete json.meteor.modern; + } else { + json.meteor.modern = modernConfig; + } + + s.write("package.json", JSON.stringify(json, null, 2) + "\n"); + + run.waitSecs(10); + + if (errorPattern instanceof RegExp) { + await run.match(errorPattern); + } else { + run.forbid(" 0 passing "); + await run.match("SERVER FAILURES: 0"); + await run.match("CLIENT FAILURES: 0"); + } +} + +selftest.define("modernConfig", async function () { + const s = new Sandbox(); + await s.init(); + + await s.createApp("app-config-modernConfig", "app-config"); + await s.cd("app-config-modernConfig"); + + // For meteortesting:mocha to work we must set test broswer driver + // See https://github.com/meteortesting/meteor-mocha + s.set("TEST_BROWSER_DRIVER", "puppeteer"); + + const run = s.run( + "test", + "--full-app", + "--driver-package", "meteortesting:mocha" + ); + + run.waitSecs(60); + await run.match("App running at"); + + function check(modernConfig) { + return writeModernConfig(s, run, modernConfig); + } + + // Test with modern disabled + await check(false); + + // Test with modern enabled + await check(true); + + // Test with combined options + await check({ + transpiler: true, + watcher: true, + webArchOnly: true, + minifier: true, + }); + + await run.stop(); +}); From 77b2e4490ff46f6b5a8e22bf5fb360863c735d54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Wed, 25 Jun 2025 15:29:15 +0200 Subject: [PATCH 018/120] add recompile checks for modern build stack --- tools/tests/apps/modern/package.json | 1 + tools/tests/modern.js | 87 ++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) diff --git a/tools/tests/apps/modern/package.json b/tools/tests/apps/modern/package.json index a7fe68949f..2b1fe578bf 100644 --- a/tools/tests/apps/modern/package.json +++ b/tools/tests/apps/modern/package.json @@ -6,6 +6,7 @@ }, "dependencies": { "@babel/runtime": "^7.23.5", + "config": "file:../config-package", "meteor-node-stubs": "^1.2.12", "react": "^18.3.1" }, diff --git a/tools/tests/modern.js b/tools/tests/modern.js index 8f3986d9b0..b3a84e66b6 100644 --- a/tools/tests/modern.js +++ b/tools/tests/modern.js @@ -188,9 +188,35 @@ selftest.define("modern build stack - transpiler boolean-like options", async fu const s = new Sandbox(); await s.init(); + s.mkdir("config-package"); + s.cd("config-package"); + + s.write( + "package.json", + JSON.stringify({ + name: "config", + version: "1.2.3", + "private": true, + main: "index.js" + }, null, 2) + "\n" + ); + + s.write( + "index.js", + "exports.id = module.id;\n" + ); + + s.cd(s.home); + await s.createApp("modern", "modern"); await s.cd("modern"); + s.append( + "server/main.js", + `if (require('config')) { + console.log('Loaded NPM package "config"', require('config').id); +}`); + process.env.METEOR_DISABLE_COLORS = true; await writeModernConfig(s, { @@ -204,6 +230,9 @@ selftest.define("modern build stack - transpiler boolean-like options", async fu run.waitSecs(waitToStart); await run.match("App running at"); + /* check appended NPM package require */ + await run.match(/Loaded NPM package "config"/, false, true); + /* check verbose logs */ await run.match(/SWC Config/, false, true); await run.match(/SWC Legacy Config/, false, true); @@ -212,6 +241,7 @@ selftest.define("modern build stack - transpiler boolean-like options", async fu /* check transpiler options */ await run.match(/\[Transpiler] Used SWC.*\(app\)/, false, true); await run.match(/\[Transpiler] Used SWC.*\(package\)/, false, true); + run.forbid(/\[Transpiler] Used SWC.*\(node_modules\)/, false, true); await writeModernConfig(s, { transpiler: { @@ -229,6 +259,20 @@ selftest.define("modern build stack - transpiler boolean-like options", async fu }); await run.match(/\[Transpiler] Used Babel.*\(package\)/, false, true); + await writeConfig(s, { + modern: { + transpiler: { + verbose: true, + }, + }, + nodeModules: { + recompile: { + config: true, + }, + }, + }); + await run.match(/\[Transpiler] Used SWC.*\(node_modules\)/, false, true); + await run.stop(); process.env.METEOR_MODERN = currentMeteorModern; @@ -241,9 +285,34 @@ selftest.define("modern build stack - transpiler string-like options", async fun const s = new Sandbox(); await s.init(); + s.mkdir("config-package"); + s.cd("config-package"); + + s.write( + "package.json", + JSON.stringify({ + name: "config", + version: "1.2.3", + "private": true, + main: "index.js" + }, null, 2) + "\n" + ); + + s.write( + "index.js", + "exports.id = module.id;\n" + ); + + s.cd(s.home); + await s.createApp("modern", "modern"); await s.cd("modern"); + s.append( + "server/main.js", + `import { id } from 'config'; +console.log('Loaded NPM package "config"', require('config').id);`); + process.env.METEOR_DISABLE_COLORS = true; await writeModernConfig(s, { @@ -257,6 +326,9 @@ selftest.define("modern build stack - transpiler string-like options", async fun run.waitSecs(waitToStart); await run.match("App running at"); + /* check appended NPM package imported */ + await run.match(/Loaded NPM package "config"/, false, true); + /* check verbose logs */ await run.match(/SWC Config/, false, true); await run.match(/SWC Legacy Config/, false, true); @@ -265,6 +337,7 @@ selftest.define("modern build stack - transpiler string-like options", async fun /* check transpiler options */ await run.match(/\[Transpiler] Used SWC.*\(app\)/, false, true); await run.match(/\[Transpiler] Used SWC.*\(package\)/, false, true); + run.forbid(/\[Transpiler] Used SWC.*\(node_modules\)/, false, true); await writeModernConfig(s, { transpiler: { @@ -282,6 +355,20 @@ selftest.define("modern build stack - transpiler string-like options", async fun }); await run.match(/\[Transpiler] Used Babel.*\(package\)/, false, true); + await writeConfig(s, { + modern: { + transpiler: { + verbose: true, + }, + }, + nodeModules: { + recompile: { + config: true, + }, + }, + }); + await run.match(/\[Transpiler] Used SWC.*\(node_modules\)/, false, true); + await run.stop(); process.env.METEOR_MODERN = currentMeteorModern; From 5f997b83877e29a74fbf874250e1f07075ef0194 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Thu, 26 Jun 2025 11:27:27 +0200 Subject: [PATCH 019/120] update docs to add more migration topics --- .../modern-build-stack/transpiler-swc.md | 86 +++++++++++++++++-- 1 file changed, 79 insertions(+), 7 deletions(-) diff --git a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md index 7fb8458375..0a5e66756b 100644 --- a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md +++ b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md @@ -104,7 +104,7 @@ Most apps will benefit just by enabling `modern: true`. Most Meteor packages sho You can use `.swcrc` config in the root of your project to describe specific [SWC plugins](https://github.com/swc-project/plugins) there, that will be applied to compile the entire files of your project. -You can also configure other options using the `.swcrc` format. One common case is when your project uses `.js` files for React code. React typically uses `.jsx` for components. We still recommend following that convention for compatibility, but if you prefer `.js`, you can provide a custom `.swcrc` like this: +You can also configure other options using the `.swcrc` format. ``` json { @@ -117,13 +117,14 @@ You can also configure other options using the `.swcrc` format. One common case } ``` -> You can also configure it for TypeScript, make sure to set `"syntax": "typescript"` and `"tsx": true` instead. - -This overrides Meteor's internal SWC config to apply your settings, ensuring SWC processes `.js` or `.ts` files with React components without falling back to Babel. - Use `swc.config.js` in your project root for dynamic configuration. Meteor will import and apply the SWC config automatically. This lets you choose a config based on environment variables or other runtime factors. -Explore additional custom SWC configs, including ["Import Aliases"](#import-aliases) and ["React Runtime"](#react-runtime). +For custom SWC configs, see the [SWC configuration API](https://swc.rs/docs/configuration/compilation). You can also review these migration topics: + +- [Import Aliases](#import-aliases) +- [JSX Syntax in JS files](#jsx-syntax-in-js-files) +- [React Runtime](#react-runtime) +- [Transform Imports](#transform-imports) ## Config API @@ -252,11 +253,32 @@ SWC resolve aliases for imports correctly, but require calls won’t. For requir SWC has no [module-resolver plugin like Babel’s](https://www.npmjs.com/package/babel-plugin-module-resolver) yet, which could affect require calls in the future. +### JSX Syntax in JS files + +When migrating your app to use SWC, Meteor SWC falls back to Babel if you include JSX in `.js` files, since JSX is only recognized in `.jsx` files. + +To enable JSX in `.js` files, create a [`.swcrc`](#custom-swcrc) file with this config: + +``` json +{ + "jsc": { + "parser": { + "syntax": "ecmascript", + "jsx": true + } + } +} +``` + +> For TypeScript, set "syntax": "typescript" and "tsx": true instead. + +This overrides Meteor’s internal SWC config so SWC handles `.js` and `.ts` files with React components instead of falling back to Babel. + ### React Runtime Meteor Babel lets you skip importing React in your files by using the [`@babel/plugin-transform-react-jsx`](https://www.npmjs.com/package/@babel/plugin-transform-react-jsx) runtime config. -To use the same config in SWC, add it to your [.swcrc](#custom-swcrc): +To use the same config in SWC, add it to your [`.swcrc`](#custom-swcrc): ```json { @@ -270,6 +292,56 @@ To use the same config in SWC, add it to your [.swcrc](#custom-swcrc): } ``` +### Transform Imports + +You might have used Meteor Babel with the [`babel-plugin-transform-imports`](https://www.npmjs.com/package/babel-plugin-transform-imports) plugin to rewrite imports in your app. + +SWC offers a similar plugin: [`@swc/plugin-transform-imports`](https://www.npmjs.com/package/@swc/plugin-transform-imports). + +To switch to SWC, install the plugin: + +```bash +meteor npm install -D @swc/plugin-transform-imports +``` + +and add it to your [`.swcrc`](#custom-swcrc): + +```json +{ + "jsc": { + "experimental": { + "plugins": [ + [ + "@swc/plugin-transform-imports", + { + "lodash": { + "transform": "lodash/{{member}}", + "preventFullImport": true + } + } + ] + ] + } + } +} +``` + +This tells SWC to replace, for example, + +``` javascript +import { map } from "lodash" +``` + +with + +``` javascript +import map from "lodash/map" +``` + +avoiding full-package imports and reducing bundle size. + +You can use advanced import transformations. [See the test suite for examples.](https://github.com/swc-project/plugins/blob/main/packages/transform-imports/__tests__/wasm.test.ts#L12-L63) + ## Troubleshotting If you run into issues, try `meteor reset` or delete the `.meteor/local` folder in the project root. From b332b45b66efef522b659a3ecde138bed271552b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Thu, 26 Jun 2025 11:32:57 +0200 Subject: [PATCH 020/120] update docs to highlight modern syntax with private properties --- .../modern-build-stack/transpiler-swc.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md index 0a5e66756b..cb333b5ead 100644 --- a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md +++ b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md @@ -125,6 +125,7 @@ For custom SWC configs, see the [SWC configuration API](https://swc.rs/docs/conf - [JSX Syntax in JS files](#jsx-syntax-in-js-files) - [React Runtime](#react-runtime) - [Transform Imports](#transform-imports) +- [Private Properties](#private-properties) ## Config API @@ -342,6 +343,29 @@ avoiding full-package imports and reducing bundle size. You can use advanced import transformations. [See the test suite for examples.](https://github.com/swc-project/plugins/blob/main/packages/transform-imports/__tests__/wasm.test.ts#L12-L63) + +### Private Properties + +SWC supports many of the most modern JS systax features, including private class properties, which Meteor Babel doesn’t. + +Just by enabling SWC, Meteor will parse properly code like: + +``` javascript +class ClassWithPrivate { + #privateField; + #privateFieldWithInitializer = 42; + + #privateMethod() {} + + static #privateStaticField; + static #privateStaticFieldWithInitializer = 42; + + static #privateStaticMethod() {} +} +``` + +You can opt-out of [private properties in SWC options with "privateMethod" setting](https://swc.rs/docs/configuration/compilation#ecmascript) with the [`.swcrc`](#custom-swcrc) file. + ## Troubleshotting If you run into issues, try `meteor reset` or delete the `.meteor/local` folder in the project root. From fc5e75e4fae7ee54a7a0ae44a5c0dc7e89828e94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Thu, 26 Jun 2025 11:38:14 +0200 Subject: [PATCH 021/120] Revert "update docs to highlight modern syntax with private properties" This reverts commit b332b45b66efef522b659a3ecde138bed271552b. --- .../modern-build-stack/transpiler-swc.md | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md index cb333b5ead..0a5e66756b 100644 --- a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md +++ b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md @@ -125,7 +125,6 @@ For custom SWC configs, see the [SWC configuration API](https://swc.rs/docs/conf - [JSX Syntax in JS files](#jsx-syntax-in-js-files) - [React Runtime](#react-runtime) - [Transform Imports](#transform-imports) -- [Private Properties](#private-properties) ## Config API @@ -343,29 +342,6 @@ avoiding full-package imports and reducing bundle size. You can use advanced import transformations. [See the test suite for examples.](https://github.com/swc-project/plugins/blob/main/packages/transform-imports/__tests__/wasm.test.ts#L12-L63) - -### Private Properties - -SWC supports many of the most modern JS systax features, including private class properties, which Meteor Babel doesn’t. - -Just by enabling SWC, Meteor will parse properly code like: - -``` javascript -class ClassWithPrivate { - #privateField; - #privateFieldWithInitializer = 42; - - #privateMethod() {} - - static #privateStaticField; - static #privateStaticFieldWithInitializer = 42; - - static #privateStaticMethod() {} -} -``` - -You can opt-out of [private properties in SWC options with "privateMethod" setting](https://swc.rs/docs/configuration/compilation#ecmascript) with the [`.swcrc`](#custom-swcrc) file. - ## Troubleshotting If you run into issues, try `meteor reset` or delete the `.meteor/local` folder in the project root. From 0c12f4a16e08ad2146683677e32df9d9014f861f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Thu, 26 Jun 2025 11:38:20 +0200 Subject: [PATCH 022/120] Revert "update docs to add more migration topics" This reverts commit 5f997b83877e29a74fbf874250e1f07075ef0194. --- .../modern-build-stack/transpiler-swc.md | 86 ++----------------- 1 file changed, 7 insertions(+), 79 deletions(-) diff --git a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md index 0a5e66756b..7fb8458375 100644 --- a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md +++ b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md @@ -104,7 +104,7 @@ Most apps will benefit just by enabling `modern: true`. Most Meteor packages sho You can use `.swcrc` config in the root of your project to describe specific [SWC plugins](https://github.com/swc-project/plugins) there, that will be applied to compile the entire files of your project. -You can also configure other options using the `.swcrc` format. +You can also configure other options using the `.swcrc` format. One common case is when your project uses `.js` files for React code. React typically uses `.jsx` for components. We still recommend following that convention for compatibility, but if you prefer `.js`, you can provide a custom `.swcrc` like this: ``` json { @@ -117,14 +117,13 @@ You can also configure other options using the `.swcrc` format. } ``` +> You can also configure it for TypeScript, make sure to set `"syntax": "typescript"` and `"tsx": true` instead. + +This overrides Meteor's internal SWC config to apply your settings, ensuring SWC processes `.js` or `.ts` files with React components without falling back to Babel. + Use `swc.config.js` in your project root for dynamic configuration. Meteor will import and apply the SWC config automatically. This lets you choose a config based on environment variables or other runtime factors. -For custom SWC configs, see the [SWC configuration API](https://swc.rs/docs/configuration/compilation). You can also review these migration topics: - -- [Import Aliases](#import-aliases) -- [JSX Syntax in JS files](#jsx-syntax-in-js-files) -- [React Runtime](#react-runtime) -- [Transform Imports](#transform-imports) +Explore additional custom SWC configs, including ["Import Aliases"](#import-aliases) and ["React Runtime"](#react-runtime). ## Config API @@ -253,32 +252,11 @@ SWC resolve aliases for imports correctly, but require calls won’t. For requir SWC has no [module-resolver plugin like Babel’s](https://www.npmjs.com/package/babel-plugin-module-resolver) yet, which could affect require calls in the future. -### JSX Syntax in JS files - -When migrating your app to use SWC, Meteor SWC falls back to Babel if you include JSX in `.js` files, since JSX is only recognized in `.jsx` files. - -To enable JSX in `.js` files, create a [`.swcrc`](#custom-swcrc) file with this config: - -``` json -{ - "jsc": { - "parser": { - "syntax": "ecmascript", - "jsx": true - } - } -} -``` - -> For TypeScript, set "syntax": "typescript" and "tsx": true instead. - -This overrides Meteor’s internal SWC config so SWC handles `.js` and `.ts` files with React components instead of falling back to Babel. - ### React Runtime Meteor Babel lets you skip importing React in your files by using the [`@babel/plugin-transform-react-jsx`](https://www.npmjs.com/package/@babel/plugin-transform-react-jsx) runtime config. -To use the same config in SWC, add it to your [`.swcrc`](#custom-swcrc): +To use the same config in SWC, add it to your [.swcrc](#custom-swcrc): ```json { @@ -292,56 +270,6 @@ To use the same config in SWC, add it to your [`.swcrc`](#custom-swcrc): } ``` -### Transform Imports - -You might have used Meteor Babel with the [`babel-plugin-transform-imports`](https://www.npmjs.com/package/babel-plugin-transform-imports) plugin to rewrite imports in your app. - -SWC offers a similar plugin: [`@swc/plugin-transform-imports`](https://www.npmjs.com/package/@swc/plugin-transform-imports). - -To switch to SWC, install the plugin: - -```bash -meteor npm install -D @swc/plugin-transform-imports -``` - -and add it to your [`.swcrc`](#custom-swcrc): - -```json -{ - "jsc": { - "experimental": { - "plugins": [ - [ - "@swc/plugin-transform-imports", - { - "lodash": { - "transform": "lodash/{{member}}", - "preventFullImport": true - } - } - ] - ] - } - } -} -``` - -This tells SWC to replace, for example, - -``` javascript -import { map } from "lodash" -``` - -with - -``` javascript -import map from "lodash/map" -``` - -avoiding full-package imports and reducing bundle size. - -You can use advanced import transformations. [See the test suite for examples.](https://github.com/swc-project/plugins/blob/main/packages/transform-imports/__tests__/wasm.test.ts#L12-L63) - ## Troubleshotting If you run into issues, try `meteor reset` or delete the `.meteor/local` folder in the project root. From 43e8dc7474a55f135d32180397e2424369d574af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Thu, 26 Jun 2025 11:27:27 +0200 Subject: [PATCH 023/120] update docs to add more migration topics --- .../modern-build-stack/transpiler-swc.md | 86 +++++++++++++++++-- 1 file changed, 79 insertions(+), 7 deletions(-) diff --git a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md index 7fb8458375..0a5e66756b 100644 --- a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md +++ b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md @@ -104,7 +104,7 @@ Most apps will benefit just by enabling `modern: true`. Most Meteor packages sho You can use `.swcrc` config in the root of your project to describe specific [SWC plugins](https://github.com/swc-project/plugins) there, that will be applied to compile the entire files of your project. -You can also configure other options using the `.swcrc` format. One common case is when your project uses `.js` files for React code. React typically uses `.jsx` for components. We still recommend following that convention for compatibility, but if you prefer `.js`, you can provide a custom `.swcrc` like this: +You can also configure other options using the `.swcrc` format. ``` json { @@ -117,13 +117,14 @@ You can also configure other options using the `.swcrc` format. One common case } ``` -> You can also configure it for TypeScript, make sure to set `"syntax": "typescript"` and `"tsx": true` instead. - -This overrides Meteor's internal SWC config to apply your settings, ensuring SWC processes `.js` or `.ts` files with React components without falling back to Babel. - Use `swc.config.js` in your project root for dynamic configuration. Meteor will import and apply the SWC config automatically. This lets you choose a config based on environment variables or other runtime factors. -Explore additional custom SWC configs, including ["Import Aliases"](#import-aliases) and ["React Runtime"](#react-runtime). +For custom SWC configs, see the [SWC configuration API](https://swc.rs/docs/configuration/compilation). You can also review these migration topics: + +- [Import Aliases](#import-aliases) +- [JSX Syntax in JS files](#jsx-syntax-in-js-files) +- [React Runtime](#react-runtime) +- [Transform Imports](#transform-imports) ## Config API @@ -252,11 +253,32 @@ SWC resolve aliases for imports correctly, but require calls won’t. For requir SWC has no [module-resolver plugin like Babel’s](https://www.npmjs.com/package/babel-plugin-module-resolver) yet, which could affect require calls in the future. +### JSX Syntax in JS files + +When migrating your app to use SWC, Meteor SWC falls back to Babel if you include JSX in `.js` files, since JSX is only recognized in `.jsx` files. + +To enable JSX in `.js` files, create a [`.swcrc`](#custom-swcrc) file with this config: + +``` json +{ + "jsc": { + "parser": { + "syntax": "ecmascript", + "jsx": true + } + } +} +``` + +> For TypeScript, set "syntax": "typescript" and "tsx": true instead. + +This overrides Meteor’s internal SWC config so SWC handles `.js` and `.ts` files with React components instead of falling back to Babel. + ### React Runtime Meteor Babel lets you skip importing React in your files by using the [`@babel/plugin-transform-react-jsx`](https://www.npmjs.com/package/@babel/plugin-transform-react-jsx) runtime config. -To use the same config in SWC, add it to your [.swcrc](#custom-swcrc): +To use the same config in SWC, add it to your [`.swcrc`](#custom-swcrc): ```json { @@ -270,6 +292,56 @@ To use the same config in SWC, add it to your [.swcrc](#custom-swcrc): } ``` +### Transform Imports + +You might have used Meteor Babel with the [`babel-plugin-transform-imports`](https://www.npmjs.com/package/babel-plugin-transform-imports) plugin to rewrite imports in your app. + +SWC offers a similar plugin: [`@swc/plugin-transform-imports`](https://www.npmjs.com/package/@swc/plugin-transform-imports). + +To switch to SWC, install the plugin: + +```bash +meteor npm install -D @swc/plugin-transform-imports +``` + +and add it to your [`.swcrc`](#custom-swcrc): + +```json +{ + "jsc": { + "experimental": { + "plugins": [ + [ + "@swc/plugin-transform-imports", + { + "lodash": { + "transform": "lodash/{{member}}", + "preventFullImport": true + } + } + ] + ] + } + } +} +``` + +This tells SWC to replace, for example, + +``` javascript +import { map } from "lodash" +``` + +with + +``` javascript +import map from "lodash/map" +``` + +avoiding full-package imports and reducing bundle size. + +You can use advanced import transformations. [See the test suite for examples.](https://github.com/swc-project/plugins/blob/main/packages/transform-imports/__tests__/wasm.test.ts#L12-L63) + ## Troubleshotting If you run into issues, try `meteor reset` or delete the `.meteor/local` folder in the project root. From 366cd541f3f2417cddc2b5cfa50b641ee700bf40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Thu, 26 Jun 2025 11:32:57 +0200 Subject: [PATCH 024/120] update docs to highlight modern syntax with private properties --- .../modern-build-stack/transpiler-swc.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md index 0a5e66756b..cb333b5ead 100644 --- a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md +++ b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md @@ -125,6 +125,7 @@ For custom SWC configs, see the [SWC configuration API](https://swc.rs/docs/conf - [JSX Syntax in JS files](#jsx-syntax-in-js-files) - [React Runtime](#react-runtime) - [Transform Imports](#transform-imports) +- [Private Properties](#private-properties) ## Config API @@ -342,6 +343,29 @@ avoiding full-package imports and reducing bundle size. You can use advanced import transformations. [See the test suite for examples.](https://github.com/swc-project/plugins/blob/main/packages/transform-imports/__tests__/wasm.test.ts#L12-L63) + +### Private Properties + +SWC supports many of the most modern JS systax features, including private class properties, which Meteor Babel doesn’t. + +Just by enabling SWC, Meteor will parse properly code like: + +``` javascript +class ClassWithPrivate { + #privateField; + #privateFieldWithInitializer = 42; + + #privateMethod() {} + + static #privateStaticField; + static #privateStaticFieldWithInitializer = 42; + + static #privateStaticMethod() {} +} +``` + +You can opt-out of [private properties in SWC options with "privateMethod" setting](https://swc.rs/docs/configuration/compilation#ecmascript) with the [`.swcrc`](#custom-swcrc) file. + ## Troubleshotting If you run into issues, try `meteor reset` or delete the `.meteor/local` folder in the project root. From aa9a6773dfd0be03e464813c9d68a0088842f96d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Thu, 26 Jun 2025 14:38:54 +0200 Subject: [PATCH 025/120] add a warning on .swcrc file name --- v3-docs/docs/about/modern-build-stack/transpiler-swc.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md index cb333b5ead..1b7a9ddef5 100644 --- a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md +++ b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md @@ -127,6 +127,11 @@ For custom SWC configs, see the [SWC configuration API](https://swc.rs/docs/conf - [Transform Imports](#transform-imports) - [Private Properties](#private-properties) +:::warning +The standard name for the SWC configuration file is [`.swcrc`](https://swc.rs/docs/configuration/compilation). +Using as an extension, such as `config.swcrc`, won’t work. +::: + ## Config API - `modern.transpiler: [true|false]` - Default: `true` From 37296100418232a92ef472f8216eb8f35e4a317f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Thu, 26 Jun 2025 14:56:46 +0200 Subject: [PATCH 026/120] fix docs --- .../about/modern-build-stack/transpiler-swc.md | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md index 1b7a9ddef5..82c549b587 100644 --- a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md +++ b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md @@ -104,22 +104,11 @@ Most apps will benefit just by enabling `modern: true`. Most Meteor packages sho You can use `.swcrc` config in the root of your project to describe specific [SWC plugins](https://github.com/swc-project/plugins) there, that will be applied to compile the entire files of your project. -You can also configure other options using the `.swcrc` format. - -``` json -{ - "jsc": { - "parser": { - "syntax": "ecmascript", - "jsx": true - } - } -} -``` +You can also configure other options using the `.swcrc` format. For custom SWC configs, see the [SWC configuration API](https://swc.rs/docs/configuration/compilation). Use `swc.config.js` in your project root for dynamic configuration. Meteor will import and apply the SWC config automatically. This lets you choose a config based on environment variables or other runtime factors. -For custom SWC configs, see the [SWC configuration API](https://swc.rs/docs/configuration/compilation). You can also review these migration topics: +You can also review these migration topics that use custom `.swcrc` configs: - [Import Aliases](#import-aliases) - [JSX Syntax in JS files](#jsx-syntax-in-js-files) From 4cf57749dc16ef60fdf6f8bd99301c37cb4a724a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Thu, 26 Jun 2025 14:57:14 +0200 Subject: [PATCH 027/120] fix docs --- v3-docs/docs/about/modern-build-stack/transpiler-swc.md | 1 + 1 file changed, 1 insertion(+) diff --git a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md index 82c549b587..40e366d250 100644 --- a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md +++ b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md @@ -118,6 +118,7 @@ You can also review these migration topics that use custom `.swcrc` configs: :::warning The standard name for the SWC configuration file is [`.swcrc`](https://swc.rs/docs/configuration/compilation). + Using as an extension, such as `config.swcrc`, won’t work. ::: From da7ea207a26cc8426866a10c7e44db3c31379dee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Tue, 1 Jul 2025 10:30:06 +0200 Subject: [PATCH 028/120] ensure @swc/helpers usage to optimize bundle size and performance --- packages/babel-compiler/babel-compiler.js | 44 ++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/packages/babel-compiler/babel-compiler.js b/packages/babel-compiler/babel-compiler.js index 248fdca86d..fcf231e3d1 100644 --- a/packages/babel-compiler/babel-compiler.js +++ b/packages/babel-compiler/babel-compiler.js @@ -34,6 +34,9 @@ BCp.isVerbose = function(config = getMeteorConfig()) { if (config?.modern?.transpiler?.verbose) { return true; } + if (config?.modern?.verbose) { + return true; + } if (config?.verbose) { return true; } @@ -129,7 +132,7 @@ BCp.initializeMeteorAppSwcrc = function () { lastModifiedSwcConfig = getMeteorAppSwcrc(swcFile); if (this.isVerbose()) { - logConfigBlock('SWC Config', lastModifiedSwcConfig); + logConfigBlock('SWC Custom Config', lastModifiedSwcConfig); } } return lastModifiedSwcConfig; @@ -145,6 +148,42 @@ BCp.initializeMeteorAppLegacyConfig = function () { return lastModifiedSwcConfig; }; +// Helper function to check if @swc/helpers is available +function hasSwcHelpers() { + return fs.existsSync(`${getMeteorAppDir()}/node_modules/@swc/helpers`); +} + +// Helper function to log friendly messages about SWC helpers +function logSwcHelpersStatus(isAvailable) { + const label = color('[SWC Helpers]', 36); + + if (isAvailable) { + // Green message for when helpers are available + console.log(`${label} ${color('✓ @swc/helpers is available in your project!', 32)}`); + console.log(` ${color('Benefits:', 32)}`); + console.log(` ${color('• Smaller bundle size: External helpers reduce code duplication', 32)}`); + console.log(` ${color('• Faster loads: less code to parse on first download', 32)}`); + console.log(` ${color('• Optional caching: separate vendor chunk can be cached by browsers', 32)}`); + } else { + // Yellow message for when helpers are not available + console.log(`${label} ${color('⚠ @swc/helpers is not available in your project', 33)}`); + console.log(` ${color('Suggestion:', 33)}`); + console.log(` ${color('• Add @swc/helpers to your project:', 33)}`); + console.log(` ${color('meteor npm install --save @swc/helpers', 33)}`); + console.log(` ${color('• This will reduce bundle size and improve performance', 33)}`); + } + console.log(); +} + +let hasSwcHelpersAvailable = false; +BCp.initializeMeteorAppSwcHelpersAvailable = function () { + hasSwcHelpersAvailable = hasSwcHelpers(); + if (this.isVerbose()) { + logSwcHelpersStatus(hasSwcHelpersAvailable); + } + return hasSwcHelpersAvailable; +}; + BCp.processFilesForTarget = function (inputFiles) { var compiler = this; @@ -154,6 +193,7 @@ BCp.processFilesForTarget = function (inputFiles) { this.initializeMeteorAppConfig(); this.initializeMeteorAppSwcrc(); this.initializeMeteorAppLegacyConfig(); + this.initializeMeteorAppSwcHelpersAvailable(); inputFiles.forEach(function (inputFile) { if (inputFile.supportsLazyCompilation) { @@ -284,6 +324,7 @@ BCp.processOneFileForTarget = function (inputFile, source) { jsx: hasJSXSupport, tsx: hasTSXSupport, }, + ...(hasSwcHelpersAvailable && { externalHelpers: true }), }, module: { type: 'es6' }, minify: false, @@ -356,6 +397,7 @@ BCp.processOneFileForTarget = function (inputFile, source) { toBeAdded.hash, lastModifiedSwcConfigTime, isLegacyWebArch ? 'legacy' : '', + hasSwcHelpersAvailable, ] .filter(Boolean) .join('-'); From 78b3a2a7efcf94dd9b4b3080e8aaf16063b401a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Tue, 1 Jul 2025 10:54:26 +0200 Subject: [PATCH 029/120] add @swc/helpers to optimize bundle size and performance --- tools/static-assets/skel-apollo/package.json | 1 + tools/static-assets/skel-blaze/package.json | 1 + tools/static-assets/skel-chakra-ui/package.json | 1 + tools/static-assets/skel-full/package.json | 8 ++++++++ tools/static-assets/skel-minimal/package.json | 1 + tools/static-assets/skel-react/package.json | 1 + tools/static-assets/skel-solid/package.json | 1 + tools/static-assets/skel-svelte/package.json | 1 + tools/static-assets/skel-tailwind/package.json | 1 + tools/static-assets/skel-typescript/package.json | 1 + tools/static-assets/skel-vue/package.json | 1 + 11 files changed, 18 insertions(+) diff --git a/tools/static-assets/skel-apollo/package.json b/tools/static-assets/skel-apollo/package.json index 211e19310a..8af983a7cb 100644 --- a/tools/static-assets/skel-apollo/package.json +++ b/tools/static-assets/skel-apollo/package.json @@ -11,6 +11,7 @@ "@apollo/client": "^3.9.2", "@apollo/server": "^4.10.0", "@babel/runtime": "^7.23.9", + "@swc/helpers": "^0.5.17", "graphql": "^16.8.1", "meteor-node-stubs": "^1.2.12", "react": "^18.2.0", diff --git a/tools/static-assets/skel-blaze/package.json b/tools/static-assets/skel-blaze/package.json index 3845c0046d..e197964537 100644 --- a/tools/static-assets/skel-blaze/package.json +++ b/tools/static-assets/skel-blaze/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "@babel/runtime": "^7.23.5", + "@swc/helpers": "^0.5.17", "jquery": "^3.7.1", "meteor-node-stubs": "^1.2.12" }, diff --git a/tools/static-assets/skel-chakra-ui/package.json b/tools/static-assets/skel-chakra-ui/package.json index fdcb9c2717..99b3e13d76 100644 --- a/tools/static-assets/skel-chakra-ui/package.json +++ b/tools/static-assets/skel-chakra-ui/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "@babel/runtime": "^7.23.5", + "@swc/helpers": "^0.5.17", "@chakra-ui/icons": "^1.1.7", "@chakra-ui/react": "^1.8.8", "@emotion/react": "^11.9.3", diff --git a/tools/static-assets/skel-full/package.json b/tools/static-assets/skel-full/package.json index 953198e35f..1abdbdd683 100644 --- a/tools/static-assets/skel-full/package.json +++ b/tools/static-assets/skel-full/package.json @@ -7,10 +7,18 @@ }, "dependencies": { "@babel/runtime": "^7.23.5", + "@swc/helpers": "^0.5.17", "jquery": "^3.7.1", "meteor-node-stubs": "^1.2.12" }, "devDependencies": { "chai": "^4.2.0" + }, + "meteor": { + "mainModule": { + "client": "client/main.js", + "server": "server/main.js" + }, + "modern": true } } diff --git a/tools/static-assets/skel-minimal/package.json b/tools/static-assets/skel-minimal/package.json index 903c3e9bb7..74d5a9b271 100644 --- a/tools/static-assets/skel-minimal/package.json +++ b/tools/static-assets/skel-minimal/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "@babel/runtime": "^7.23.5", + "@swc/helpers": "^0.5.17", "meteor-node-stubs": "^1.2.12" }, "meteor": { diff --git a/tools/static-assets/skel-react/package.json b/tools/static-assets/skel-react/package.json index b49bf5903e..ee33ff775c 100644 --- a/tools/static-assets/skel-react/package.json +++ b/tools/static-assets/skel-react/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "@babel/runtime": "^7.23.5", + "@swc/helpers": "^0.5.17", "meteor-node-stubs": "^1.2.12", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/tools/static-assets/skel-solid/package.json b/tools/static-assets/skel-solid/package.json index bb50ecbd9b..17401d9c1b 100644 --- a/tools/static-assets/skel-solid/package.json +++ b/tools/static-assets/skel-solid/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "@babel/runtime": "^7.23.9", + "@swc/helpers": "^0.5.17", "meteor-node-stubs": "^1.2.12", "picocolors": "^1.1.1", "solid-js": "^1.9.4" diff --git a/tools/static-assets/skel-svelte/package.json b/tools/static-assets/skel-svelte/package.json index c1d703791d..0929124049 100644 --- a/tools/static-assets/skel-svelte/package.json +++ b/tools/static-assets/skel-svelte/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "@babel/runtime": "^7.23.5", + "@swc/helpers": "^0.5.17", "meteor-node-stubs": "^1.2.12", "svelte": "^3.59.2" }, diff --git a/tools/static-assets/skel-tailwind/package.json b/tools/static-assets/skel-tailwind/package.json index e4b556a821..73971202ba 100644 --- a/tools/static-assets/skel-tailwind/package.json +++ b/tools/static-assets/skel-tailwind/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "@babel/runtime": "^7.23.5", + "@swc/helpers": "^0.5.17", "autoprefixer": "^10.4.4", "meteor-node-stubs": "^1.2.12", "postcss": "^8.4.12", diff --git a/tools/static-assets/skel-typescript/package.json b/tools/static-assets/skel-typescript/package.json index 90c078b082..77ff7934bf 100644 --- a/tools/static-assets/skel-typescript/package.json +++ b/tools/static-assets/skel-typescript/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "@babel/runtime": "^7.23.5", + "@swc/helpers": "^0.5.17", "meteor-node-stubs": "^1.2.12", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/tools/static-assets/skel-vue/package.json b/tools/static-assets/skel-vue/package.json index 560c8a23a5..09146eee03 100644 --- a/tools/static-assets/skel-vue/package.json +++ b/tools/static-assets/skel-vue/package.json @@ -10,6 +10,7 @@ }, "dependencies": { "@babel/runtime": "^7.23.5", + "@swc/helpers": "^0.5.17", "meteor-node-stubs": "^1.2.12", "vue": "^3.3.9", "vue-meteor-tracker": "^3.0.0-beta.7", From 598abb72b391bb5040c2b931bd87296078e79554 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Tue, 1 Jul 2025 11:02:16 +0200 Subject: [PATCH 030/120] add conditional external helpers for @swc/helpers --- packages/babel-compiler/babel-compiler.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/babel-compiler/babel-compiler.js b/packages/babel-compiler/babel-compiler.js index fcf231e3d1..3fc9b355a4 100644 --- a/packages/babel-compiler/babel-compiler.js +++ b/packages/babel-compiler/babel-compiler.js @@ -324,7 +324,11 @@ BCp.processOneFileForTarget = function (inputFile, source) { jsx: hasJSXSupport, tsx: hasTSXSupport, }, - ...(hasSwcHelpersAvailable && { externalHelpers: true }), + ...(hasSwcHelpersAvailable && + (packageName == null || + !['modules-runtime'].includes(packageName)) && { + externalHelpers: true, + }), }, module: { type: 'es6' }, minify: false, From 7bcca0e38ea1b1ee237e316876b6de9ca966c22f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Tue, 1 Jul 2025 17:01:42 +0200 Subject: [PATCH 031/120] add docs for external helpers for @swc/helpers --- .../about/modern-build-stack/transpiler-swc.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md index 40e366d250..c0a9153411 100644 --- a/v3-docs/docs/about/modern-build-stack/transpiler-swc.md +++ b/v3-docs/docs/about/modern-build-stack/transpiler-swc.md @@ -100,6 +100,20 @@ Most apps will benefit just by enabling `modern: true`. Most Meteor packages sho > Remember to turn off verbosity when you're done with optimizations. +## Externalize SWC Helpers + +By default, SWC inlines transformation helpers (e.g. _extends, _objectSpread) into every file that uses them. While this ensures compatibility out of the box, it can lead to duplicated code across your bundles increasing bundle size. + +To centralize these helpers and keep your client builds lean, you can add the `@swc/helpers` in your app project. + +``` bash +meteor npm install --save @swc/helpers +``` + +> This package is installed by default for new apps. + +Meteor’s build tool comes pre-configured to externalize SWC helpers for you, no extra setup or .swcrc tweaks are needed. As soon as you install @swc/helpers, Meteor’s SWC pipeline will automatically emit imports for shared helper functions rather than inlining them, ensuring your app ships each helper just once. + ## Custom .swcrc You can use `.swcrc` config in the root of your project to describe specific [SWC plugins](https://github.com/swc-project/plugins) there, that will be applied to compile the entire files of your project. From 50c649556528d78875f5c97c04aad598ef9bb986 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Wed, 2 Jul 2025 11:30:14 +0200 Subject: [PATCH 032/120] re-run checks From a26cc0abf98c57bc8d40f42e6f71be83efb89f80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Wed, 2 Jul 2025 12:27:31 +0200 Subject: [PATCH 033/120] add git clone fallback with tar for performance repo cloning with volumes --- tools/cli/commands.js | 46 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 6 deletions(-) diff --git a/tools/cli/commands.js b/tools/cli/commands.js index 50c75559eb..a1a751dbf4 100644 --- a/tools/cli/commands.js +++ b/tools/cli/commands.js @@ -3407,6 +3407,7 @@ const setupBenchmarkSuite = async (profilingPath) => { const repoUrl = "https://github.com/meteor/performance"; const branch = "v3.3.0"; + const gitCommand = [ `mkdir -p ${profilingPath}`, `git clone --no-checkout --depth 1 --filter=tree:0 --sparse --progress --branch ${branch} --single-branch ${repoUrl} ${profilingPath}`, @@ -3414,15 +3415,48 @@ const setupBenchmarkSuite = async (profilingPath) => { `git sparse-checkout init --cone`, `git sparse-checkout set scripts`, `git checkout ${branch}`, - `find ${profilingPath} -maxdepth 1 -type f -delete`, + `find ${profilingPath} -maxdepth 1 -type f -delete` ].join(" && "); - const [, errClone] = await bash`${gitCommand}`; + + const [okClone, errClone] = await bash`${gitCommand}`; const errorMessage = errClone && typeof errClone === "string" ? errClone : errClone?.message; - if (errorMessage && errorMessage.includes("Cloning into")) { - throw new Error("error cloning benchmark"); + + if (errorMessage && errorMessage.includes("fatal:")) { + Console.warn("Standard git clone failed. Trying tar fallback..."); + + // Check if tar is available + const [okTar, errTar] = await bash`tar --version`; + if (errTar) { + throw new Error(`git clone failed and tar is not installed:\n${errorMessage}`); + } + + const tempDir = "/tmp/performance-fallback"; + const fallbackCommand = [ + `rm -rf ${tempDir}`, + `git clone --no-checkout --depth 1 --filter=tree:0 --sparse --progress --branch ${branch} --single-branch ${repoUrl} ${tempDir}`, + `cd ${tempDir}`, + `git sparse-checkout init --cone`, + `git sparse-checkout set scripts`, + `git checkout ${branch}`, + `mkdir -p ${profilingPath}/scripts`, + `tar --exclude=".*" -czf /tmp/scripts.tar.gz -C ./scripts .`, + `tar -xzf /tmp/scripts.tar.gz -C ${profilingPath}/scripts`, + `rm -rf ${tempDir}`, + `rm -f /tmp/scripts.tar.gz` + ].join(" && "); + + const [okFallback, errFallback] = await bash`${fallbackCommand}`; + if (errFallback) { + throw new Error(`git clone failed and tar fallback also failed:\n${errorMessage}\n\n${errFallback}`); + } } - // remove .git folder from the example - await files.rm_recursive_async(files.pathJoin(profilingPath, ".git")); + + // remove .git folder if exists (in fallback it won't) + const gitDir = files.pathJoin(profilingPath, ".git"); + if (await files.exists(gitDir)) { + await files.rm_recursive_async(gitDir); + } + Console.info( "Meteor profiling suite cloned to: " + Console.path(profilingPath), ); From 51bf3110e76eb6b3bf96d979e3a9bb327abe792f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Wed, 2 Jul 2025 12:34:40 +0200 Subject: [PATCH 034/120] fix --- tools/cli/commands.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cli/commands.js b/tools/cli/commands.js index a1a751dbf4..293b839a90 100644 --- a/tools/cli/commands.js +++ b/tools/cli/commands.js @@ -3439,7 +3439,7 @@ const setupBenchmarkSuite = async (profilingPath) => { `git sparse-checkout set scripts`, `git checkout ${branch}`, `mkdir -p ${profilingPath}/scripts`, - `tar --exclude=".*" -czf /tmp/scripts.tar.gz -C ./scripts .`, + `tar -czf /tmp/scripts.tar.gz -C ./scripts .`, `tar -xzf /tmp/scripts.tar.gz -C ${profilingPath}/scripts`, `rm -rf ${tempDir}`, `rm -f /tmp/scripts.tar.gz` From 7fb76dd9eeddeffaf3d7f3fa2658e0c06611be0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Wed, 2 Jul 2025 12:51:06 +0200 Subject: [PATCH 035/120] prefer tar approach when available --- tools/cli/commands.js | 82 ++++++++++++++++++++++++------------------- 1 file changed, 45 insertions(+), 37 deletions(-) diff --git a/tools/cli/commands.js b/tools/cli/commands.js index 293b839a90..b4d9d9d567 100644 --- a/tools/cli/commands.js +++ b/tools/cli/commands.js @@ -3393,45 +3393,32 @@ const setupBenchmarkSuite = async (profilingPath) => { if (await files.exists(profilingPath)) { return; } + + // Check git availability and version const [okGitVersion, errGitVersion] = await bash`git --version`; if (errGitVersion) throw new Error("git is not installed"); - const parsedGitVersion = semver.coerce(okGitVersion.match(/\d+\.\d+\.\d+/)[0] || '')?.version; - const checkInvalidGitVersion = parsedGitVersion == null || semver.lt(parsedGitVersion, '2.25.0'); - if (checkInvalidGitVersion) { + const parsedGitVersion = semver.coerce(okGitVersion.match(/\d+\.\d+\.\d+/)?.[0] || '')?.version; + if (!parsedGitVersion || semver.lt(parsedGitVersion, '2.25.0')) { throw new Error("git version is too old. Please upgrade to at least 2.25"); } - // Set GIT_TERMINAL_PROMPT=0 to disable prompting + // Check tar availability + const [okTar, errTar] = await bash`tar --version`; + const hasTar = !errTar; + + // Disable interactive git prompts process.env.GIT_TERMINAL_PROMPT = 0; const repoUrl = "https://github.com/meteor/performance"; const branch = "v3.3.0"; - const gitCommand = [ - `mkdir -p ${profilingPath}`, - `git clone --no-checkout --depth 1 --filter=tree:0 --sparse --progress --branch ${branch} --single-branch ${repoUrl} ${profilingPath}`, - `cd ${profilingPath}`, - `git sparse-checkout init --cone`, - `git sparse-checkout set scripts`, - `git checkout ${branch}`, - `find ${profilingPath} -maxdepth 1 -type f -delete` - ].join(" && "); + let tarFailed = false; - const [okClone, errClone] = await bash`${gitCommand}`; - const errorMessage = errClone && typeof errClone === "string" ? errClone : errClone?.message; - - if (errorMessage && errorMessage.includes("fatal:")) { - Console.warn("Standard git clone failed. Trying tar fallback..."); - - // Check if tar is available - const [okTar, errTar] = await bash`tar --version`; - if (errTar) { - throw new Error(`git clone failed and tar is not installed:\n${errorMessage}`); - } - - const tempDir = "/tmp/performance-fallback"; - const fallbackCommand = [ + // If tar is available, prefer tar-based extraction + if (hasTar) { + const tempDir = "/tmp/meteor-performance-benchmark-suite"; + const tarCommand = [ `rm -rf ${tempDir}`, `git clone --no-checkout --depth 1 --filter=tree:0 --sparse --progress --branch ${branch} --single-branch ${repoUrl} ${tempDir}`, `cd ${tempDir}`, @@ -3445,21 +3432,42 @@ const setupBenchmarkSuite = async (profilingPath) => { `rm -f /tmp/scripts.tar.gz` ].join(" && "); - const [okFallback, errFallback] = await bash`${fallbackCommand}`; - if (errFallback) { - throw new Error(`git clone failed and tar fallback also failed:\n${errorMessage}\n\n${errFallback}`); + const [okTarClone, errTarClone] = await bash`${tarCommand}`; + if (!errTarClone) { + Console.info("Meteor profiling suite cloned to: " + Console.path(profilingPath)); + return; + } else { + Console.warn("Tar-based cloning failed. Will attempt standard git clone..."); + tarFailed = errTarClone; } + } else { + Console.warn("Tar not available. Will use standard git clone..."); } - // remove .git folder if exists (in fallback it won't) - const gitDir = files.pathJoin(profilingPath, ".git"); - if (await files.exists(gitDir)) { - await files.rm_recursive_async(gitDir); + // Fallback to plain git clone + const gitCommand = [ + `mkdir -p ${profilingPath}`, + `git clone --no-checkout --depth 1 --filter=tree:0 --sparse --progress --branch ${branch} --single-branch ${repoUrl} ${profilingPath}`, + `cd ${profilingPath}`, + `git sparse-checkout init --cone`, + `git sparse-checkout set scripts`, + `git checkout ${branch}`, + `find ${profilingPath} -maxdepth 1 -type f -delete` + ].join(" && "); + + const [okClone, errClone] = await bash`${gitCommand}`; + if (errClone) { + let combinedMessage = "Git clone failed."; + if (tarFailed) { + combinedMessage = `Tar-based cloning also failed:\n${tarFailed}\n\nGit fallback failed:\n${errClone}`; + } + throw new Error(combinedMessage); } - Console.info( - "Meteor profiling suite cloned to: " + Console.path(profilingPath), - ); + // Remove .git folder if present + await files.rm_recursive_async(files.pathJoin(profilingPath, ".git")); + + Console.info("Meteor profiling suite cloned to: " + Console.path(profilingPath)); }; async function doBenchmarkCommand(options) { From 394a2cefa352c8c0d9f4d765bcabe43aad775d8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Wed, 2 Jul 2025 14:12:30 +0200 Subject: [PATCH 036/120] fix tests --- tools/tests/modern.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/tests/modern.js b/tools/tests/modern.js index b3a84e66b6..2b1fdff0e8 100644 --- a/tools/tests/modern.js +++ b/tools/tests/modern.js @@ -234,7 +234,7 @@ selftest.define("modern build stack - transpiler boolean-like options", async fu await run.match(/Loaded NPM package "config"/, false, true); /* check verbose logs */ - await run.match(/SWC Config/, false, true); + await run.match(/SWC Custom Config/, false, true); await run.match(/SWC Legacy Config/, false, true); await run.match(/Meteor Config/, false, true); @@ -330,7 +330,7 @@ console.log('Loaded NPM package "config"', require('config').id);`); await run.match(/Loaded NPM package "config"/, false, true); /* check verbose logs */ - await run.match(/SWC Config/, false, true); + await run.match(/SWC Custom Config/, false, true); await run.match(/SWC Legacy Config/, false, true); await run.match(/Meteor Config/, false, true); From a15a1ccec32cc645c5459d334b54d2938264aa12 Mon Sep 17 00:00:00 2001 From: italo jose Date: Tue, 1 Jul 2025 15:14:10 -0300 Subject: [PATCH 037/120] bump version of meteor-node-stubs to 1.2.21 --- npm-packages/meteor-node-stubs/.npmignore | 1 - .../meteor-node-stubs/package-lock.json | 1010 +++++++++++------ npm-packages/meteor-node-stubs/package.json | 2 +- 3 files changed, 687 insertions(+), 326 deletions(-) diff --git a/npm-packages/meteor-node-stubs/.npmignore b/npm-packages/meteor-node-stubs/.npmignore index 07e6e472cc..e69de29bb2 100644 --- a/npm-packages/meteor-node-stubs/.npmignore +++ b/npm-packages/meteor-node-stubs/.npmignore @@ -1 +0,0 @@ -/node_modules diff --git a/npm-packages/meteor-node-stubs/package-lock.json b/npm-packages/meteor-node-stubs/package-lock.json index 30579b7814..a727d323f2 100644 --- a/npm-packages/meteor-node-stubs/package-lock.json +++ b/npm-packages/meteor-node-stubs/package-lock.json @@ -1,12 +1,12 @@ { "name": "meteor-node-stubs", - "version": "1.2.12", + "version": "1.2.21", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "meteor-node-stubs", - "version": "1.2.12", + "version": "1.2.13", "bundleDependencies": [ "@meteorjs/crypto-browserify", "assert", @@ -68,6 +68,7 @@ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -80,15 +81,112 @@ "node": ">=12" } }, - "node_modules/@meteorjs/crypto-browserify": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/@meteorjs/crypto-browserify/-/crypto-browserify-3.12.1.tgz", - "integrity": "sha512-ku23zGjNb1XJXPSPlt4QCPetc4s/cPrSahhSF11mFeQff5wBuu7QVVn/MusdHh+l3aKl6L1XMLV+OYLXvNDQ6Q==", + "node_modules/@meteorjs/browserify-sign": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@meteorjs/browserify-sign/-/browserify-sign-4.2.6.tgz", + "integrity": "sha512-xnQRbIrjHxaVbOEbzbcdav4QDRTnfRAVHi21SPosnGNiIHTdTeGQGmTF/f7GwntxqynabSifdBHeGA7W8lIKSQ==", "inBundle": true, + "license": "ISC", "dependencies": { + "bn.js": "^5.2.1", + "brorand": "^1.1.0", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash-base": "~3.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1", + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/@meteorjs/browserify-sign/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@meteorjs/browserify-sign/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@meteorjs/browserify-sign/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@meteorjs/create-ecdh": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@meteorjs/create-ecdh/-/create-ecdh-4.0.5.tgz", + "integrity": "sha512-dhn3AICsDlIZ5qY/Qu+QOL+ZGKaHcGss4PQ3CfmAF3f+o5fPJ2aDJcxd5f2au2k6sxyNqvCsLAFYFHXxHoH9yQ==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/@meteorjs/create-ecdh/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@meteorjs/crypto-browserify": { + "version": "3.12.4", + "resolved": "https://registry.npmjs.org/@meteorjs/crypto-browserify/-/crypto-browserify-3.12.4.tgz", + "integrity": "sha512-K5Sgvxef93Zrw5T9cJxKuNVgpl1C2W8cfcicN6HKy98G6RoIrx6hikwWnq8FlagvOzdIQEC2s+SMn7UFNSK0eA==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@meteorjs/browserify-sign": "^4.2.3", + "@meteorjs/create-ecdh": "^4.0.4", "browserify-cipher": "^1.0.1", - "browserify-sign": "^4.2.3", - "create-ecdh": "^4.0.4", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", "diffie-hellman": "^5.0.3", @@ -106,24 +204,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@meteorjs/crypto-browserify/node_modules/hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", - "inBundle": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -134,6 +220,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -146,6 +233,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -158,6 +246,7 @@ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "inBundle": true, + "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -165,16 +254,18 @@ } }, "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "inBundle": true + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "inBundle": true, + "license": "MIT" }, "node_modules/assert": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", "inBundle": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "is-nan": "^1.3.2", @@ -184,10 +275,14 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "inBundle": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -199,7 +294,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", @@ -219,19 +315,22 @@ "url": "https://feross.org/support" } ], - "inBundle": true + "inBundle": true, + "license": "MIT" }, "node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "inBundle": true + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "inBundle": true, + "license": "MIT" }, "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -239,14 +338,16 @@ "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "inBundle": true + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "inBundle": true, + "license": "MIT" }, "node_modules/browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "inBundle": true, + "license": "MIT", "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -261,6 +362,7 @@ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "inBundle": true, + "license": "MIT", "dependencies": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -272,6 +374,7 @@ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "inBundle": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -280,96 +383,26 @@ } }, "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "inBundle": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", - "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", + "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", "inBundle": true, + "license": "MIT", "dependencies": { "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.5", - "hash-base": "~3.0", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.7", - "readable-stream": "^2.3.8", + "randombytes": "^2.1.0", "safe-buffer": "^5.2.1" }, "engines": { - "node": ">= 0.12" + "node": ">= 0.10" } }, - "node_modules/browserify-sign/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "inBundle": true - }, - "node_modules/browserify-sign/node_modules/hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", - "inBundle": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "inBundle": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "inBundle": true - }, - "node_modules/browserify-sign/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "inBundle": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "inBundle": true - }, "node_modules/browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "inBundle": true, + "license": "MIT", "dependencies": { "pako": "~1.0.5" } @@ -393,6 +426,7 @@ } ], "inBundle": true, + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -401,27 +435,59 @@ "node_modules/buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "inBundle": true + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "inBundle": true, + "license": "MIT" }, "node_modules/builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "inBundle": true + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "inBundle": true, + "license": "MIT" }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "inBundle": true, "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -431,13 +497,17 @@ } }, "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", + "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", "inBundle": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/color-convert": { @@ -445,6 +515,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -456,7 +527,8 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/console-browserify": { "version": "1.2.0", @@ -467,36 +539,23 @@ "node_modules/constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "inBundle": true + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "inBundle": true, + "license": "MIT" }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "inBundle": true - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "inBundle": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "inBundle": true + "license": "MIT" }, "node_modules/create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "inBundle": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -510,6 +569,7 @@ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "inBundle": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -557,6 +617,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "inBundle": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -570,10 +631,11 @@ } }, "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", "inBundle": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -584,6 +646,7 @@ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "inBundle": true, + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -591,16 +654,18 @@ } }, "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "inBundle": true + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "inBundle": true, + "license": "MIT" }, "node_modules/domain-browser": { "version": "4.23.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.23.0.tgz", "integrity": "sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==", "inBundle": true, + "license": "Artistic-2.0", "engines": { "node": ">=10" }, @@ -608,17 +673,32 @@ "url": "https://bevry.me/fund" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/elliptic": { "version": "6.6.1", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", - "inBundle": true, "license": "MIT", "dependencies": { "bn.js": "^4.11.9", @@ -631,26 +711,24 @@ } }, "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "inBundle": true + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "license": "MIT" }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "inBundle": true, "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, "engines": { "node": ">= 0.4" } @@ -665,11 +743,25 @@ "node": ">= 0.4" } }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "inBundle": true, + "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -679,27 +771,36 @@ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "inBundle": true, + "license": "MIT", "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" } }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "inBundle": true, + "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, + "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -714,22 +815,28 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "inBundle": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "inBundle": true, "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -738,11 +845,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -759,12 +881,13 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "inBundle": true, - "dependencies": { - "get-intrinsic": "^1.1.3" + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -783,23 +906,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "inBundle": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "inBundle": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -808,12 +920,13 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "inBundle": true, + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -823,17 +936,17 @@ } }, "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", + "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", "inBundle": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "safe-buffer": "^5.2.1" }, "engines": { - "node": ">=4" + "node": ">= 0.10" } }, "node_modules/hash.js": { @@ -841,16 +954,18 @@ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "inBundle": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "inBundle": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -861,8 +976,9 @@ "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "inBundle": true, + "license": "MIT", "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -872,8 +988,9 @@ "node_modules/https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "inBundle": true + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "inBundle": true, + "license": "MIT" }, "node_modules/ieee754": { "version": "1.2.1", @@ -893,22 +1010,25 @@ "url": "https://feross.org/support" } ], - "inBundle": true + "inBundle": true, + "license": "BSD-3-Clause" }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "inBundle": true + "inBundle": true, + "license": "ISC" }, "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "inBundle": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -922,6 +1042,7 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "inBundle": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -934,17 +1055,22 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "inBundle": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -958,6 +1084,7 @@ "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", "inBundle": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -969,13 +1096,33 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "inBundle": true, + "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.11" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -985,22 +1132,25 @@ } }, "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "inBundle": true + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "inBundle": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -1015,13 +1165,25 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, "node_modules/md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "inBundle": true, + "license": "MIT", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -1033,6 +1195,7 @@ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "inBundle": true, + "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -1042,28 +1205,32 @@ } }, "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "inBundle": true + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "inBundle": true, + "license": "MIT" }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "inBundle": true + "inBundle": true, + "license": "ISC" }, "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "inBundle": true + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "inBundle": true, + "license": "MIT" }, "node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1079,14 +1246,15 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "inBundle": true, "license": "MIT", "engines": { @@ -1097,13 +1265,14 @@ } }, "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "inBundle": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -1117,19 +1286,23 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "inBundle": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "inBundle": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -1142,26 +1315,30 @@ "node_modules/os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "inBundle": true + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "inBundle": true, + "license": "MIT" }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true + "dev": true, + "license": "BlueOak-1.0.0" }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "inBundle": true + "inBundle": true, + "license": "(MIT AND Zlib)" }, "node_modules/parse-asn1": { "version": "5.1.7", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", "inBundle": true, + "license": "ISC", "dependencies": { "asn1.js": "^4.10.1", "browserify-aes": "^1.2.0", @@ -1174,30 +1351,19 @@ "node": ">= 0.10" } }, - "node_modules/parse-asn1/node_modules/hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", - "inBundle": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "inBundle": true + "inBundle": true, + "license": "MIT" }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1207,6 +1373,7 @@ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -1219,26 +1386,73 @@ } }, "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.3.tgz", + "integrity": "sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==", "inBundle": true, + "license": "MIT", "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "create-hash": "~1.1.3", + "create-hmac": "^1.1.7", + "ripemd160": "=2.0.1", + "safe-buffer": "^5.2.1", + "sha.js": "^2.4.11", + "to-buffer": "^1.2.0" }, "engines": { "node": ">=0.12" } }, + "node_modules/pbkdf2/node_modules/create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "sha.js": "^2.4.0" + } + }, + "node_modules/pbkdf2/node_modules/hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1" + } + }, + "node_modules/pbkdf2/node_modules/ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "hash-base": "^2.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "inBundle": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" } @@ -1247,13 +1461,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "inBundle": true + "inBundle": true, + "license": "MIT" }, "node_modules/public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "inBundle": true, + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -1264,25 +1480,27 @@ } }, "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "inBundle": true + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "inBundle": true, + "license": "MIT" }, "node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "inBundle": true + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "inBundle": true, + "license": "MIT" }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "inBundle": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -1294,7 +1512,7 @@ "node_modules/querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", "inBundle": true, "engines": { "node": ">=0.4.x" @@ -1305,6 +1523,7 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "inBundle": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -1314,6 +1533,7 @@ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "inBundle": true, + "license": "MIT", "dependencies": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" @@ -1324,6 +1544,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "inBundle": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -1338,6 +1559,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^10.3.7" }, @@ -1353,6 +1575,7 @@ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "inBundle": true, + "license": "MIT", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -1376,7 +1599,26 @@ "url": "https://feross.org/support" } ], - "inBundle": true + "inBundle": true, + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/set-function-length": { "version": "1.2.2", @@ -1399,14 +1641,16 @@ "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "inBundle": true + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "inBundle": true, + "license": "MIT" }, "node_modules/sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "inBundle": true, + "license": "(MIT AND BSD-3-Clause)", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -1420,6 +1664,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -1432,21 +1677,79 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "inBundle": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -1460,6 +1763,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -1472,6 +1776,7 @@ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", "inBundle": true, + "license": "MIT", "dependencies": { "inherits": "~2.0.4", "readable-stream": "^3.5.0" @@ -1482,6 +1787,7 @@ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", "inBundle": true, + "license": "MIT", "dependencies": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.4", @@ -1494,6 +1800,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "inBundle": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -1503,6 +1810,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -1521,6 +1829,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -1535,6 +1844,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1543,13 +1853,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/string-width-cjs/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -1562,6 +1874,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1578,6 +1891,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -1590,6 +1904,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1599,6 +1914,7 @@ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "inBundle": true, + "license": "MIT", "dependencies": { "setimmediate": "^1.0.4" }, @@ -1606,11 +1922,42 @@ "node": ">=0.6.0" } }, + "node_modules/to-buffer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz", + "integrity": "sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", - "inBundle": true + "inBundle": true, + "license": "MIT" + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "inBundle": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/url": { "version": "0.11.4", @@ -1631,6 +1978,7 @@ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "inBundle": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -1643,19 +1991,22 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "inBundle": true + "inBundle": true, + "license": "MIT" }, "node_modules/vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "inBundle": true + "inBundle": true, + "license": "MIT" }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -1667,16 +2018,19 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "inBundle": true, + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -1690,6 +2044,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -1708,6 +2063,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -1725,6 +2081,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1734,6 +2091,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1748,13 +2106,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -1769,6 +2129,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -1781,6 +2142,7 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "inBundle": true, + "license": "MIT", "engines": { "node": ">=0.4" } diff --git a/npm-packages/meteor-node-stubs/package.json b/npm-packages/meteor-node-stubs/package.json index 2c2caa5dbb..1468f2df9a 100644 --- a/npm-packages/meteor-node-stubs/package.json +++ b/npm-packages/meteor-node-stubs/package.json @@ -2,7 +2,7 @@ "name": "meteor-node-stubs", "author": "Ben Newman ", "description": "Stub implementations of Node built-in modules, a la Browserify", - "version": "1.2.13", + "version": "1.2.21", "main": "index.js", "license": "MIT", "homepage": "https://github.com/meteor/meteor/blob/devel/npm-packages/meteor-node-stubs/README.md", From 282272494ba51bdf1f864de2aa7858a2c8c5e291 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Wed, 2 Jul 2025 15:40:03 +0200 Subject: [PATCH 038/120] bump bundle version --- meteor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meteor b/meteor index e452f7b273..10a5ebce8b 100755 --- a/meteor +++ b/meteor @@ -1,6 +1,6 @@ #!/usr/bin/env bash -BUNDLE_VERSION=22.16.0.1 +BUNDLE_VERSION=22.16.0.2 # OS Check. Put here because here is where we download the precompiled # bundles that are arch specific. From 442b831416665aa76fafbb55aa096bc4e408e328 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Thu, 3 Jul 2025 11:51:10 +0200 Subject: [PATCH 039/120] re-run checks From f99d068988dccb370e0ef870f71999a833f2105c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Thu, 3 Jul 2025 14:14:48 +0200 Subject: [PATCH 040/120] re-run checks From 63d3e9e516cf04b738bdc543e1a47bb68ba299db Mon Sep 17 00:00:00 2001 From: Harry Adel Date: Tue, 1 Jul 2025 16:21:49 +0300 Subject: [PATCH 041/120] Fix broken links in documentation --- packages/accounts-base/accounts_client.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/accounts-base/accounts_client.js b/packages/accounts-base/accounts_client.js index fe3038ed83..aef200ed39 100644 --- a/packages/accounts-base/accounts_client.js +++ b/packages/accounts-base/accounts_client.js @@ -689,7 +689,7 @@ export class AccountsClient extends AccountsCommon { /** * @summary Register a function to call when a reset password link is clicked * in an email sent by - * [`Accounts.sendResetPasswordEmail`](#accounts_sendresetpasswordemail). + * [`Accounts.sendResetPasswordEmail`](#Accounts-sendResetPasswordEmail). * This function should be called in top-level code, not inside * `Meteor.startup()`. * @memberof! Accounts @@ -697,7 +697,7 @@ export class AccountsClient extends AccountsCommon { * @param {Function} callback The function to call. It is given two arguments: * * 1. `token`: A password reset token that can be passed to - * [`Accounts.resetPassword`](#accounts_resetpassword). + * [`Accounts.resetPassword`](#Accounts-resetPassword). * 2. `done`: A function to call when the password reset UI flow is complete. The normal * login process is suspended until this function is called, so that the * password for user A can be reset even if user B was logged in. @@ -715,7 +715,7 @@ export class AccountsClient extends AccountsCommon { /** * @summary Register a function to call when an email verification link is * clicked in an email sent by - * [`Accounts.sendVerificationEmail`](#accounts_sendverificationemail). + * [`Accounts.sendVerificationEmail`](#Accounts-sendVerificationEmail). * This function should be called in top-level code, not inside * `Meteor.startup()`. * @memberof! Accounts @@ -723,7 +723,7 @@ export class AccountsClient extends AccountsCommon { * @param {Function} callback The function to call. It is given two arguments: * * 1. `token`: An email verification token that can be passed to - * [`Accounts.verifyEmail`](#accounts_verifyemail). + * [`Accounts.verifyEmail`](#Accounts-verifyEmail). * 2. `done`: A function to call when the email verification UI flow is complete. * The normal login process is suspended until this function is called, so * that the user can be notified that they are verifying their email before @@ -742,7 +742,7 @@ export class AccountsClient extends AccountsCommon { /** * @summary Register a function to call when an account enrollment link is * clicked in an email sent by - * [`Accounts.sendEnrollmentEmail`](#accounts_sendenrollmentemail). + * [`Accounts.sendEnrollmentEmail`](#Accounts-sendEnrollmentEmail). * This function should be called in top-level code, not inside * `Meteor.startup()`. * @memberof! Accounts @@ -750,7 +750,7 @@ export class AccountsClient extends AccountsCommon { * @param {Function} callback The function to call. It is given two arguments: * * 1. `token`: A password reset token that can be passed to - * [`Accounts.resetPassword`](#accounts_resetpassword) to give the newly + * [`Accounts.resetPassword`](#Accounts-resetPassword) to give the newly * enrolled account a password. * 2. `done`: A function to call when the enrollment UI flow is complete. * The normal login process is suspended until this function is called, so that From 649f020d87540996ad5a4f462e2fd52c4b5b8882 Mon Sep 17 00:00:00 2001 From: Saksham Goel Date: Thu, 5 Jun 2025 22:00:17 +0530 Subject: [PATCH 042/120] Update hook.js Issue:#13781 Removed the forEachAsync written twice. --- packages/callback-hook/hook.js | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/packages/callback-hook/hook.js b/packages/callback-hook/hook.js index ecc9c2ccfb..d1156f79fd 100644 --- a/packages/callback-hook/hook.js +++ b/packages/callback-hook/hook.js @@ -124,20 +124,6 @@ export class Hook { } } - async forEachAsync(iterator) { - const ids = Object.keys(this.callbacks); - for (let i = 0; i < ids.length; ++i) { - const id = ids[i]; - // check to see if the callback was removed during iteration - if (hasOwn.call(this.callbacks, id)) { - const callback = this.callbacks[id]; - if (!await iterator(callback)) { - break; - } - } - } - } - /** * For each registered callback, call the passed iterator function with the callback. * From 93b799b8ed0c95aa08e6a886de3e09aec8292f2b Mon Sep 17 00:00:00 2001 From: repetitioestmaterstudiorum <44611591+repetitioestmaterstudiorum@users.noreply.github.com> Date: Wed, 2 Jul 2025 21:17:39 +0200 Subject: [PATCH 043/120] note regarding _id being temporary in Accounts.onCreateUser --- docs/source/api/accounts-multi.md | 3 ++- v3-docs/docs/api/accounts.md | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/source/api/accounts-multi.md b/docs/source/api/accounts-multi.md index 5dbc358c66..a008b7d807 100644 --- a/docs/source/api/accounts-multi.md +++ b/docs/source/api/accounts-multi.md @@ -151,7 +151,8 @@ password-based users or from an external service login flow. `options` may come from an untrusted client so make sure to validate any values you read from it. The `user` argument is created on the server and contains a proposed user object with all the automatically generated fields -required for the user to log in, including the `_id`. +required for the user to log in, including a temporary `_id` (the final _id is +generated upon document insertion and not available in this function). The function should return the user document (either the one passed in or a newly-created object) with whatever modifications are desired. The returned diff --git a/v3-docs/docs/api/accounts.md b/v3-docs/docs/api/accounts.md index a40c6ef496..f52207a4d9 100644 --- a/v3-docs/docs/api/accounts.md +++ b/v3-docs/docs/api/accounts.md @@ -533,7 +533,8 @@ password-based users or from an external service login flow. `options` may come from an untrusted client so make sure to validate any values you read from it. The `user` argument is created on the server and contains a proposed user object with all the automatically generated fields -required for the user to log in, including the `_id`. +required for the user to log in, including a temporary `_id` (the final _id is +generated upon document insertion and not available in this function). The function should return the user document (either the one passed in or a newly-created object) with whatever modifications are desired. The returned From adc948b38a1fff22576915929502488987da6226 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Vatle?= Date: Sun, 6 Jul 2025 18:19:55 +0300 Subject: [PATCH 044/120] Add ApiBox for Mongo.getCollection from v2 docs. #13641 v2 docs commit: 962438254a811c0c4005193ffcfe1255d9c0b0d4 --- v3-docs/docs/api/collections.md | 1 + 1 file changed, 1 insertion(+) diff --git a/v3-docs/docs/api/collections.md b/v3-docs/docs/api/collections.md index a466de49df..15e17dcd6d 100644 --- a/v3-docs/docs/api/collections.md +++ b/v3-docs/docs/api/collections.md @@ -914,6 +914,7 @@ const handle = await cursor.observeChangesAsync({ setTimeout(() => handle.stop(), 5000); ``` + From 1164ac728db43d088ffbec0d2590b0137089deee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Vatle?= Date: Sun, 6 Jul 2025 19:03:13 +0300 Subject: [PATCH 045/120] Add note about purpose of entry-meteor.js files. --- tools/static-assets/skel-vue/client/entry-meteor.js | 8 ++++++++ tools/static-assets/skel-vue/server/entry-meteor.js | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/tools/static-assets/skel-vue/client/entry-meteor.js b/tools/static-assets/skel-vue/client/entry-meteor.js index e69de29bb2..418b5a55cb 100644 --- a/tools/static-assets/skel-vue/client/entry-meteor.js +++ b/tools/static-assets/skel-vue/client/entry-meteor.js @@ -0,0 +1,8 @@ +// Entrypoint for the Meteor client +// Generally, this file can be left empty. Vite will add imports for +// lazy-loaded Meteor packages to this file to ensure they are included in your +// final production bundle. + +// This can also be a good place to put code that you don't want Vite to +// process, for example, if you run into a compatability issue or need to use +// nested imports. \ No newline at end of file diff --git a/tools/static-assets/skel-vue/server/entry-meteor.js b/tools/static-assets/skel-vue/server/entry-meteor.js index e69de29bb2..48af245a74 100644 --- a/tools/static-assets/skel-vue/server/entry-meteor.js +++ b/tools/static-assets/skel-vue/server/entry-meteor.js @@ -0,0 +1,8 @@ +// Entrypoint for the Meteor server +// Generally, this file can be left empty. Vite will add imports for +// lazy-loaded Meteor packages to this file to ensure they are included in your +// final production bundle. + +// This can also be a good place to put code that you don't want Vite to +// process, for example, if you run into a compatability issue or need to use +// nested imports. \ No newline at end of file From a29af3f4d64abf34e808a4ef90f8d5b775f678ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Vatle?= Date: Sun, 6 Jul 2025 19:05:32 +0300 Subject: [PATCH 046/120] Fix unused 'client/main.js' file, using a more consistent main module directory structure --- tools/static-assets/skel-vue/client/main.js | 2 +- tools/static-assets/skel-vue/vite.config.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/static-assets/skel-vue/client/main.js b/tools/static-assets/skel-vue/client/main.js index 97d382a9bd..44bcc64d55 100644 --- a/tools/static-assets/skel-vue/client/main.js +++ b/tools/static-assets/skel-vue/client/main.js @@ -1 +1 @@ -// main entry point is in imports/ui/main.jsx +import '../imports/ui/main'; \ No newline at end of file diff --git a/tools/static-assets/skel-vue/vite.config.js b/tools/static-assets/skel-vue/vite.config.js index dd08ccf69d..5c0ecc62ba 100644 --- a/tools/static-assets/skel-vue/vite.config.js +++ b/tools/static-assets/skel-vue/vite.config.js @@ -6,7 +6,7 @@ export default defineConfig({ plugins: [ vue(), meteor({ - clientEntry: 'imports/ui/main.js', + clientEntry: 'client/main.js', serverEntry: 'server/main.js', enableExperimentalFeatures: true, stubValidation: { From 24dbc8a911ea29c197075ed457c8695e59579d99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Vatle?= Date: Sun, 6 Jul 2025 19:12:45 +0300 Subject: [PATCH 047/120] Upgrade Tailwind to v4 in Vue skeleton --- tools/static-assets/skel-vue/client/main.css | 4 +--- tools/static-assets/skel-vue/package.json | 5 ++--- tools/static-assets/skel-vue/vite.config.js | 4 +++- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/tools/static-assets/skel-vue/client/main.css b/tools/static-assets/skel-vue/client/main.css index b5c61c9567..a461c505f1 100644 --- a/tools/static-assets/skel-vue/client/main.css +++ b/tools/static-assets/skel-vue/client/main.css @@ -1,3 +1 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; +@import "tailwindcss"; \ No newline at end of file diff --git a/tools/static-assets/skel-vue/package.json b/tools/static-assets/skel-vue/package.json index 560c8a23a5..1f573e0e5b 100644 --- a/tools/static-assets/skel-vue/package.json +++ b/tools/static-assets/skel-vue/package.json @@ -24,11 +24,10 @@ }, "devDependencies": { "@types/meteor": "^2.9.7", + "@tailwindcss/vite": "^4.1.11", "@vitejs/plugin-vue": "^5.2.1", - "autoprefixer": "^10.4.16", "meteor-vite": "^3.2.1", - "postcss": "^8.4.31", - "tailwindcss": "^3.3.5", + "tailwindcss": "^4.1.11", "vite": "^6.0.11" } } diff --git a/tools/static-assets/skel-vue/vite.config.js b/tools/static-assets/skel-vue/vite.config.js index 5c0ecc62ba..01a2ae4903 100644 --- a/tools/static-assets/skel-vue/vite.config.js +++ b/tools/static-assets/skel-vue/vite.config.js @@ -1,10 +1,12 @@ -import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; +import tailwindcss from 'tailwindcss'; +import { defineConfig } from 'vite'; import { meteor } from 'meteor-vite/plugin'; export default defineConfig({ plugins: [ vue(), + tailwindcss(), meteor({ clientEntry: 'client/main.js', serverEntry: 'server/main.js', From 00bc129092baccd28518abf408acf14c1d11dc88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Vatle?= Date: Sun, 6 Jul 2025 19:13:37 +0300 Subject: [PATCH 048/120] Add explicit import for main CSS file in client main module --- tools/static-assets/skel-vue/client/main.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/static-assets/skel-vue/client/main.js b/tools/static-assets/skel-vue/client/main.js index 44bcc64d55..52c40b5d43 100644 --- a/tools/static-assets/skel-vue/client/main.js +++ b/tools/static-assets/skel-vue/client/main.js @@ -1 +1,2 @@ +import './main.css'; import '../imports/ui/main'; \ No newline at end of file From 735aed6c3a1780eab8ef4e0a1b1dbbbf9d4ad578 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Vatle?= Date: Sun, 6 Jul 2025 19:14:14 +0300 Subject: [PATCH 049/120] Remove redundant config files from Vue skeleton --- tools/static-assets/skel-vue/postcss.config.js | 6 ------ tools/static-assets/skel-vue/tailwind.config.js | 8 -------- 2 files changed, 14 deletions(-) delete mode 100644 tools/static-assets/skel-vue/postcss.config.js delete mode 100644 tools/static-assets/skel-vue/tailwind.config.js diff --git a/tools/static-assets/skel-vue/postcss.config.js b/tools/static-assets/skel-vue/postcss.config.js deleted file mode 100644 index 33ad091d26..0000000000 --- a/tools/static-assets/skel-vue/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/tools/static-assets/skel-vue/tailwind.config.js b/tools/static-assets/skel-vue/tailwind.config.js deleted file mode 100644 index 72c950fc84..0000000000 --- a/tools/static-assets/skel-vue/tailwind.config.js +++ /dev/null @@ -1,8 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -module.exports = { - content: ['./imports/ui/**/*.{vue,js,ts,jsx,tsx}', './client/*.html'], - theme: { - extend: {}, - }, - plugins: [], -} From 17e8152f24d8872d5e1d19e150885b943811f3f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Vatle?= Date: Sun, 6 Jul 2025 19:15:53 +0300 Subject: [PATCH 050/120] Use .mjs file extension for Vite config to avoid CJS interop exceptions --- tools/static-assets/skel-vue/{vite.config.js => vite.config.mjs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tools/static-assets/skel-vue/{vite.config.js => vite.config.mjs} (100%) diff --git a/tools/static-assets/skel-vue/vite.config.js b/tools/static-assets/skel-vue/vite.config.mjs similarity index 100% rename from tools/static-assets/skel-vue/vite.config.js rename to tools/static-assets/skel-vue/vite.config.mjs From a972460c09cf90a4ee461911be96353245f5b4cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Vatle?= Date: Sun, 6 Jul 2025 19:19:46 +0300 Subject: [PATCH 051/120] Use .mjs file extension for Vite config to avoid CJS interop exceptions --- tools/static-assets/skel-vue/vite.config.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/static-assets/skel-vue/vite.config.mjs b/tools/static-assets/skel-vue/vite.config.mjs index 01a2ae4903..f955234c6a 100644 --- a/tools/static-assets/skel-vue/vite.config.mjs +++ b/tools/static-assets/skel-vue/vite.config.mjs @@ -1,5 +1,5 @@ import vue from '@vitejs/plugin-vue'; -import tailwindcss from 'tailwindcss'; +import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; import { meteor } from 'meteor-vite/plugin'; From e8795c96f8c5d507e6283377483b410c2371a306 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Vatle?= Date: Sun, 6 Jul 2025 19:31:19 +0300 Subject: [PATCH 052/120] Move main.css file into UI directory to prevent Meteor from trying to process it in addition to Vite. --- tools/static-assets/skel-vue/client/main.js | 3 +-- tools/static-assets/skel-vue/{client => imports/ui}/main.css | 0 tools/static-assets/skel-vue/imports/ui/main.js | 1 + 3 files changed, 2 insertions(+), 2 deletions(-) rename tools/static-assets/skel-vue/{client => imports/ui}/main.css (100%) diff --git a/tools/static-assets/skel-vue/client/main.js b/tools/static-assets/skel-vue/client/main.js index 52c40b5d43..403d8a2d2a 100644 --- a/tools/static-assets/skel-vue/client/main.js +++ b/tools/static-assets/skel-vue/client/main.js @@ -1,2 +1 @@ -import './main.css'; -import '../imports/ui/main'; \ No newline at end of file +import '../imports/ui/main' \ No newline at end of file diff --git a/tools/static-assets/skel-vue/client/main.css b/tools/static-assets/skel-vue/imports/ui/main.css similarity index 100% rename from tools/static-assets/skel-vue/client/main.css rename to tools/static-assets/skel-vue/imports/ui/main.css diff --git a/tools/static-assets/skel-vue/imports/ui/main.js b/tools/static-assets/skel-vue/imports/ui/main.js index e3500841ea..f568d94ebf 100644 --- a/tools/static-assets/skel-vue/imports/ui/main.js +++ b/tools/static-assets/skel-vue/imports/ui/main.js @@ -2,6 +2,7 @@ import { Meteor } from 'meteor/meteor' import { createApp } from 'vue' import { VueMeteor } from 'vue-meteor-tracker' +import './main.css' import App from './App.vue' import { router } from './router' From 54e5d26d72acbd51156b976452f33dcea1a8b167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Vatle?= Date: Sun, 6 Jul 2025 19:43:20 +0300 Subject: [PATCH 053/120] Add a clear distinction between components, pages and the app container through a generally accepted Vue directory structure convention. --- tools/static-assets/skel-vue/imports/ui/App.vue | 2 +- .../skel-vue/imports/ui/{ => components}/AppMenu.vue | 0 .../skel-vue/imports/ui/{ => components}/Hello.vue | 0 .../skel-vue/imports/ui/{ => components}/Info.vue | 0 tools/static-assets/skel-vue/imports/ui/router.js | 4 ++-- tools/static-assets/skel-vue/imports/ui/{ => views}/About.vue | 0 tools/static-assets/skel-vue/imports/ui/{ => views}/Home.vue | 4 ++-- 7 files changed, 5 insertions(+), 5 deletions(-) rename tools/static-assets/skel-vue/imports/ui/{ => components}/AppMenu.vue (100%) rename tools/static-assets/skel-vue/imports/ui/{ => components}/Hello.vue (100%) rename tools/static-assets/skel-vue/imports/ui/{ => components}/Info.vue (100%) rename tools/static-assets/skel-vue/imports/ui/{ => views}/About.vue (100%) rename tools/static-assets/skel-vue/imports/ui/{ => views}/Home.vue (60%) diff --git a/tools/static-assets/skel-vue/imports/ui/App.vue b/tools/static-assets/skel-vue/imports/ui/App.vue index 7a775391cb..19a68a1ea1 100644 --- a/tools/static-assets/skel-vue/imports/ui/App.vue +++ b/tools/static-assets/skel-vue/imports/ui/App.vue @@ -1,5 +1,5 @@