diff --git a/.circleci/config.yml b/.circleci/config.yml index edea04ebbf..a3a67cd8d1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -178,7 +178,7 @@ jobs: command: | eval $PRE_TEST_COMMANDS; cd dev_bundle/lib - ../../meteor npm install @types/node@20.9.0 --save-dev + ../../meteor npm install @types/node@20.10.5 --save-dev # Ensure that meteor/tools has no TypeScript errors. ../../meteor npm install -g typescript cd ../../ @@ -390,7 +390,7 @@ jobs: ./meteor self-test \ "$TEST_GROUP" \ --retries ${METEOR_SELF_TEST_RETRIES} \ - --exclude "${SELF_TEST_EXCLUDE}|--svelte|--vue|--typescript|--apollo|--solid|--full" \ + --exclude "${SELF_TEST_EXCLUDE}" \ --headless \ --junit ./tmp/results/junit/3.xml \ --without-tag "custom-warehouse" diff --git a/.github/workflows/check-code-style.yml b/.github/workflows/check-code-style.yml index 0a136db59a..5b7dbbac4c 100644 --- a/.github/workflows/check-code-style.yml +++ b/.github/workflows/check-code-style.yml @@ -11,9 +11,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: - node-version: 14.x + node-version: 20.x - run: npm ci - name: Run ESLint@8 run: npx eslint@8 "./npm-packages/meteor-installer/**/*.js" diff --git a/.github/workflows/check-syntax.yml b/.github/workflows/check-syntax.yml index 91051b2789..1f9f151c94 100644 --- a/.github/workflows/check-syntax.yml +++ b/.github/workflows/check-syntax.yml @@ -7,9 +7,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: - node-version: 18.x + node-version: 20.x - run: cd scripts/admin/check-legacy-syntax && npm ci - name: Check syntax - run: cd scripts/admin/check-legacy-syntax && node check-syntax.js + run: cd scripts/admin/check-legacy-syntax && node check-syntax.js diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 3c7f7d5ec9..0b03766fce 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -11,7 +11,7 @@ jobs: working-directory: docs/ steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: 12.x - name: Build the Docs diff --git a/.github/workflows/guide.yml b/.github/workflows/guide.yml index bbc5bbd023..4cb09a3b97 100644 --- a/.github/workflows/guide.yml +++ b/.github/workflows/guide.yml @@ -11,7 +11,7 @@ jobs: working-directory: guide/ steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: 12.x - name: Build the Guide diff --git a/.github/workflows/npm-eslint-plugin-meteor.yml b/.github/workflows/npm-eslint-plugin-meteor.yml index 4361b5a788..f94c4786d9 100644 --- a/.github/workflows/npm-eslint-plugin-meteor.yml +++ b/.github/workflows/npm-eslint-plugin-meteor.yml @@ -18,11 +18,11 @@ jobs: working-directory: npm-packages/eslint-plugin-meteor strategy: matrix: - node-version: [16.x, 18.x] + node-version: 20.x steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: npm diff --git a/.github/workflows/npm-meteor-babel.yml b/.github/workflows/npm-meteor-babel.yml index f9dc6f3a5f..b1b9220002 100644 --- a/.github/workflows/npm-meteor-babel.yml +++ b/.github/workflows/npm-meteor-babel.yml @@ -18,11 +18,11 @@ jobs: working-directory: npm-packages/meteor-babel strategy: matrix: - node-version: [16.x, 18.x] + node-version: 20.x steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: npm diff --git a/.github/workflows/npm-meteor-promise.yml b/.github/workflows/npm-meteor-promise.yml index 4ad4f6df7c..fe25249075 100644 --- a/.github/workflows/npm-meteor-promise.yml +++ b/.github/workflows/npm-meteor-promise.yml @@ -18,11 +18,11 @@ jobs: working-directory: npm-packages/meteor-promise strategy: matrix: - node-version: [12.x, 14.x] + node-version: [14.x, 20.x] steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: npm diff --git a/.travis.yml b/.travis.yml index 860714f517..339caa097b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ dist: jammy sudo: required services: xvfb node_js: - - "18.16.0" + - "20.10.0" cache: directories: - ".meteor" diff --git a/docs/generators/changelog/versions/3.0.md b/docs/generators/changelog/versions/3.0.md index 0fdd7b8ad6..5eb9af3514 100644 --- a/docs/generators/changelog/versions/3.0.md +++ b/docs/generators/changelog/versions/3.0.md @@ -389,6 +389,7 @@ if the cursor is ready and if the callbacks are have been called. If you only use it in the `Client` or as a `LocalCollection` things have not changed. + - `cursor.observeChangesAsync` and `cursor.observeAsync` are added and resolve as promises, returning results similar to their synchronous counterparts. - `mobile-experience@2.0.0`: @@ -431,6 +432,7 @@ - Updated to unify methods, `update`,`insert`,`remove`, `fetch` are now async, they are the same as their `*Async` counterpart. - `ensureIndex` and `createIndex` are now async. + - `observeChangesAsync` and `observeAsync` are added and resolve as promises, returning results similar to their synchronous counterparts. - `npm-mongo@5.0.0`: @@ -665,6 +667,9 @@ - `Meteor.callAsync()` +- `meteor`: + - Added `Meteor.isDebug` to execute code in debug builds, activated with the --inspect mode. + - `minifier-css`: (2.9+) - `CssTools.minifyCssAsync()` diff --git a/docs/source/api/assets.md b/docs/source/api/assets.md index e748b5b49d..af4cd86124 100644 --- a/docs/source/api/assets.md +++ b/docs/source/api/assets.md @@ -10,8 +10,8 @@ assets, which are located in the `private` subdirectory of an application's tree. Assets are not processed as source files and are copied directly into your application's bundle. -{% apibox "Assets.getText" %} -{% apibox "Assets.getBinary" %} +{% apibox "Assets.getTextAsync" %} +{% apibox "Assets.getBinaryAsync" %} {% apibox "Assets.absoluteFilePath" %} Static server assets are included by placing them in the application's `private` @@ -20,7 +20,7 @@ directory called `nested` with a file called `data.txt` inside it, then server code can read `data.txt` by running: ```js -const data = Assets.getText('nested/data.txt'); +const data = await Assets.getTextAsync('nested/data.txt'); ``` Note: Packages can only access their own assets. If you need to read the assets of a different package, or of the enclosing app, you need to get a reference to that package's `Assets` object. diff --git a/docs/source/api/packagejs.md b/docs/source/api/packagejs.md index 7cc521073f..9feb02877f 100644 --- a/docs/source/api/packagejs.md +++ b/docs/source/api/packagejs.md @@ -80,7 +80,7 @@ package) so that Meteor will pick up the local dependency. > In a lifecycle of a package there might come time to end the development for various reasons, or it gets superseded. In either case Meteor allows you to easily notify the users of the package by setting the deprecated flag to true: `deprecated: true` in the package description. In addition, you -replace it with a string that tells the users where to find replacement or what to do. +replace it with a string that tells the users where to find replacement or what to do. Provide basic package information with `Package.describe(options)`. To publish a package, you must define `summary` and `version`. @@ -97,7 +97,7 @@ package is exported to. {% apibox "PackageAPI#versionsFrom" %} > Choose Meteor versions carefully. First determine the minimum version of Meteor you need for the API you use in your package. - This should be based on specific needs of your package like needed the *Async calls, which would require minimum version to be + This should be based on specific needs of your package like needed the *Async calls, which would require minimum version to be at least 2.8. Another example are where packages had a major version bump, for example this has happened with the accounts packages in Meteor 2.3. If you want to be backward and forward compatible it is good to include Meteor version before 2.3 and then 2.3.6 in the array. A general recommendation for most compatibility for accounts packages (unless you need API that was affected in Meteor 2.3) is to have the following @@ -315,7 +315,7 @@ methods are available: - `addAsset` - Add a file to serve as-is to the browser or to include on the browser, depending on the target. On the web, it will be served at the exact path requested. For server targets, it can be retrieved using - `Assets.getText` or `Assets.getBinary`. + `Assets.getTextAsync` or `Assets.getBinaryAsync`. - `addHtml` - Works in web targets only. Add markup to the `head` or `body` section of the document. - `hmrAvailable` - Returns true if the file can be updated with HMR. Among other things, diff --git a/docs/source/api/passwords.md b/docs/source/api/passwords.md index 0a643930d7..107b38d45a 100644 --- a/docs/source/api/passwords.md +++ b/docs/source/api/passwords.md @@ -37,7 +37,7 @@ id. On the client, you must pass `password` and at least one of `username` or `email` — enough information for the user to be able to log in again later. If there are existing users with a username or email only differing in case, `createUser` will fail. The callback's `error.reason` will be `'Username already exists.'` or `'Email already exists.'` In the latter case, the user can then either [login](accounts.html#Meteor-loginWithPassword) or [reset their password](#Accounts-resetPassword). -On the server, you do not need to specify `password`, but the user will not be able to log in until it has a password (eg, set with [`Accounts.setPassword`](#accounts_setpassword)). To create an account without a password on the server and still let the user pick their own password, call `createUser` with the `email` option and then call [`Accounts.sendEnrollmentEmail`](#accounts_sendenrollmentemail). This will send the user an email with a link to set their initial password. +On the server, you do not need to specify `password`, but the user will not be able to log in until it has a password (eg, set with [`Accounts.setPasswordAsync`](#accounts_setpasswordasync)). To create an account without a password on the server and still let the user pick their own password, call `createUser` with the `email` option and then call [`Accounts.sendEnrollmentEmail`](#accounts_sendenrollmentemail). This will send the user an email with a link to set their initial password. By default the `profile` option is added directly to the new user document. To override this behavior, use [`Accounts.onCreateUser`](#accounts_oncreateuser). @@ -100,7 +100,7 @@ This function accepts tokens passed into the callbacks registered with If the user trying to reset the password has 2FA enabled, this error will be thrown: * "Changed password, but user not logged in because 2FA is enabled [2fa-enabled]": No longer signing in the user automatically if the user has 2FA enabled. -{% apibox "Accounts.setPassword" %} +{% apibox "Accounts.setPasswordAsync" %} {% apibox "Accounts.sendResetPasswordEmail" %} diff --git a/docs/source/commandline.md b/docs/source/commandline.md index 9381e02d83..11138250d5 100644 --- a/docs/source/commandline.md +++ b/docs/source/commandline.md @@ -285,20 +285,6 @@ You can also use Vue 3 with Vite by using the [jorgenvatle:meteor-vite](https:// package. You can see an example on the [meteor-vite](https://github.com/JorgenVatle/meteor-vite/tree/release/examples/vue) repository. - -

--vue-2

- -The command `meteor create --vue-2 app-name` creates a Meteor app with [Vue 2](https://v2.vuejs.org/) and -[MongoDB](https://www.mongodb.com/). To create a complete app, including testing and deployment, follow the -[Vue 2 tutorial](https://vue-tutorial.meteor.com/). - -Npm packages included: `@babel/runtime`, `meteor-node-stubs`, `vue`, `vue-meteor-tracker`. - -Meteor packages included: `meteor-base`, `mobile-experience`, `mongo`, `reactive-var`, `standard-minifier-css`, -`standard-minifier-js`, `es5-shim`, `ecmascript`, `typescript`, `shell-server`, `tracker`, `static-html`, `akryum:vue-component`, -`meteortesting:mocha`, `johanbrook:publication-collector`. - -

meteor generate

``meteor generate`` is a command for generating scaffolds for your current project. When ran without arguments, it will ask diff --git a/docs/source/index.md b/docs/source/index.md index 6e196d5596..d9b65d9360 100644 --- a/docs/source/index.md +++ b/docs/source/index.md @@ -2,7 +2,6 @@ title: Docs --- -> Meteor 2.x runs on a deprecated Node.js version (14). Meteor 3.0 is in progress, and it will run on the latest Node.js version. For more information, please consult our [migration guide](https://guide.meteor.com/3.0-migration.html).

What is Meteor?

@@ -24,11 +23,11 @@ Meteor is a full-stack JavaScript platform for developing modern web and mobile 1. The place to get started with Meteor is the [tutorials page](https://www.meteor.com/developers/tutorials). 1. [Meteor Examples](https://github.com/meteor/examples) is a list of examples using Meteor. You can also include your example with Meteor. - + 1. Once you are familiar with the basics, the [Meteor Guide](http://guide.meteor.com) covers intermediate material on how to use Meteor in a larger scale app. 1. Visit the [Meteor discussion forums](https://forums.meteor.com) to announce projects, get help, talk about the community, or discuss changes to core. - + 1. [Meteor Slack Community](https://join.slack.com/t/meteor-community/shared_invite/enQtODA0NTU2Nzk5MTA3LWY5NGMxMWRjZDgzYWMyMTEyYTQ3MTcwZmU2YjM5MTY3MjJkZjQ0NWRjOGZlYmIxZjFlYTA5Mjg4OTk3ODRiOTc) is the best place to ask (and answer!) technical questions and also meet Meteor developers. 1. [Atmosphere](https://atmospherejs.com) is the repository of community packages designed especially for Meteor. diff --git a/docs/source/install.md b/docs/source/install.md index 8f26fa65d3..dfe2fb2c21 100644 --- a/docs/source/install.md +++ b/docs/source/install.md @@ -8,7 +8,6 @@ You need to install the Meteor command line tool to create, run, and manage your

Node.js version

-> Meteor 2.x runs on a deprecated Node.js version (14). Meteor 3.0 is in progress, and it will run on the latest Node.js version. For more information, please consult our [migration guide](https://guide.meteor.com/3.0-migration.html). - Node.js version >= 10 and <= 14 is required. - We recommend you using [nvm](https://github.com/nvm-sh/nvm) or [Volta](https://volta.sh/) for managing Node.js versions. diff --git a/guide/source/3.0-migration.md b/guide/source/3.0-migration.md index 7591356327..2d62c62561 100644 --- a/guide/source/3.0-migration.md +++ b/guide/source/3.0-migration.md @@ -3,19 +3,27 @@ title: Migrating to Meteor 3.0 description: How to migrate your application to Meteor 3.0. --- -> **This guide will be created as we get closer to the Meteor 3.0 beta release.** We are also evaluating new documentation platforms to improve our users' experience. +> This guide will be created as we approach the Meteor 3.0 release. +> We're in the process of moving our documentation to Vitepress, +> and updating the Meteor API docs for version 3.0. For the latest updates, +> visit https://v3-docs.meteor.com/. ## What's the status of version 3.0? -**Latest version:** `3.0-beta.0`
-**Node.js version:** `20.9.0 LTS` +**Latest version:** `3.0-beta.6`
+**Node.js version:** `20.11.1 LTS`
+**NPM version:** `10.2.4` -Meteor 3.0 is in alpha and not recommended for production. You can check the "[Release 3.0 Pull Request](https://github.com/meteor/meteor/pull/12359)" to see what is being changed. +Meteor 3.0 is in beta and not recommended for production. You can check the "[Release 3.0 Pull Request](https://github.com/meteor/meteor/pull/12359)" to see what is being changed. ## How to prepare for version 3.0? You can follow the guide "[How to migrate to Meteor Async in Meteor 2.x](/prepare-meteor-3.0.html)" to help you prepare your application for the new version by starting to use async methods. +## How to follow the progress on version 3? + +The best way to follow the progress is by checking the "[What's left until an official Meteor 3.0?](https://github.com/meteor/meteor/discussions/12865)" discussion. We have also been sharing constant updates on [this topic](https://forums.meteor.com/t/fibers-public-roadmap-and-meteor-3-0/59627/84) in our forum. + ## Frequently Asked Questions ### What is Fibers? @@ -112,7 +120,15 @@ findOne is not available on the server. Please use findOneAsync instead. You can create a new Meteor 3.0 project by running the command below: ```bash -meteor create my-new-project --release 3.0-beta.0 +meteor create my-new-project --release 3.0-beta.6 +``` + +or alternatively, you can use `npx` + +If you want to test Meteor v3, you can use the following command to install it: + +```bash +npx meteor@beta ``` ### How to update from version 2? @@ -120,13 +136,9 @@ meteor create my-new-project --release 3.0-beta.0 You can update your Meteor 2.x project by running the command below inside your project folder: ```bash -meteor update --release 3.0-beta.0 +meteor update --release 3.0-beta.6 ``` -### How to follow the progress on version 3? - -The best way to follow the progress is by checking the "[What's left until an official Meteor 3.0?](https://github.com/meteor/meteor/discussions/12865)" discussion. We have also been sharing constant updates on [this topic](https://forums.meteor.com/t/fibers-public-roadmap-and-meteor-3-0/59627/84) in our forum. - ### When will Meteor 3.0 be ready? We plan to release the beta version by the end of Q4 2023. An official version will depend a lot on user feedback, but we aim to release it by the end of Q1 2024. diff --git a/guide/source/index.md b/guide/source/index.md index 9963e638ff..252217d49a 100644 --- a/guide/source/index.md +++ b/guide/source/index.md @@ -3,7 +3,6 @@ title: Introduction description: This is the guide for using Meteor, a full-stack JavaScript platform for developing modern web and mobile applications. --- -> Meteor 2.x runs on a deprecated Node.js version (14). Meteor 3.0 is in progress, and it will run on the latest Node.js version. For more information, please consult our [migration guide](https://guide.meteor.com/3.0-migration.html).

What is Meteor?

@@ -44,11 +43,11 @@ meteor 1. The place to get started with Meteor is the [tutorials page](https://www.meteor.com/developers/tutorials). 1. [Meteor Examples](https://github.com/meteor/examples) is a list of examples using Meteor. You can also include your example with Meteor. - + 1. Once you are familiar with the basics, the [Meteor Guide](http://guide.meteor.com) covers intermediate material on how to use Meteor in a larger scale app. 1. Visit the [Meteor discussion forums](https://forums.meteor.com) to announce projects, get help, talk about the community, or discuss changes to core. - + 1. [Meteor Slack Community](https://join.slack.com/t/meteor-community/shared_invite/enQtODA0NTU2Nzk5MTA3LWY5NGMxMWRjZDgzYWMyMTEyYTQ3MTcwZmU2YjM5MTY3MjJkZjQ0NWRjOGZlYmIxZjFlYTA5Mjg4OTk3ODRiOTc) is the best place to ask (and answer!) technical questions and also meet Meteor developers. 1. [Atmosphere](https://atmospherejs.com) is the repository of community packages designed especially for Meteor. diff --git a/meteor b/meteor index da97e31d82..0f78f60411 100755 --- a/meteor +++ b/meteor @@ -1,6 +1,6 @@ #!/usr/bin/env bash -BUNDLE_VERSION=20.11.1.1 +BUNDLE_VERSION=20.11.1.2 # OS Check. Put here because here is where we download the precompiled diff --git a/npm-packages/meteor-babel/package-lock.json b/npm-packages/meteor-babel/package-lock.json index a449bab814..3e03e51b1c 100644 --- a/npm-packages/meteor-babel/package-lock.json +++ b/npm-packages/meteor-babel/package-lock.json @@ -1,12 +1,12 @@ { "name": "@meteorjs/babel", - "version": "7.19.0-beta.4", + "version": "7.20.0-beta.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@meteorjs/babel", - "version": "7.19.0-beta.4", + "version": "7.20.0-beta.4", "license": "MIT", "dependencies": { "@babel/core": "^7.17.2", @@ -26,7 +26,7 @@ "convert-source-map": "^1.6.0", "lodash": "^4.17.21", "meteor-babel-helpers": "0.0.3", - "typescript": "~5.3.3" + "typescript": "~5.4.3" }, "devDependencies": { "@babel/plugin-proposal-decorators": "7.14.5", @@ -3756,9 +3756,9 @@ } }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz", + "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/npm-packages/meteor-babel/package.json b/npm-packages/meteor-babel/package.json index bab47d92c9..ac7576ce8d 100644 --- a/npm-packages/meteor-babel/package.json +++ b/npm-packages/meteor-babel/package.json @@ -1,7 +1,7 @@ { "name": "@meteorjs/babel", "author": "Meteor ", - "version": "7.19.0-beta.4", + "version": "7.20.0-beta.4", "license": "MIT", "type": "commonjs", "description": "Babel wrapper package for use with Meteor", @@ -48,7 +48,7 @@ "convert-source-map": "^1.6.0", "lodash": "^4.17.21", "meteor-babel-helpers": "0.0.3", - "typescript": "~5.3.3" + "typescript": "~5.4.3" }, "devDependencies": { "@babel/plugin-proposal-decorators": "7.14.5", diff --git a/npm-packages/meteor-installer/cli.js b/npm-packages/meteor-installer/cli.js index ea3c2034cc..7bcc2f9eeb 100755 --- a/npm-packages/meteor-installer/cli.js +++ b/npm-packages/meteor-installer/cli.js @@ -1,10 +1,10 @@ #!/usr/bin/env node -const command = process.argv[2]; +const command = process.argv[2] || 'install'; if (!command) { console.log(` - Usage: meteor-installer + Usage: npx meteor@ Commands: install diff --git a/npm-packages/meteor-installer/config.js b/npm-packages/meteor-installer/config.js index 42326c52b7..57acdf1ad0 100644 --- a/npm-packages/meteor-installer/config.js +++ b/npm-packages/meteor-installer/config.js @@ -1,7 +1,7 @@ const os = require('os'); const path = require('path'); -const METEOR_LATEST_VERSION = '3.0-beta.6'; +const METEOR_LATEST_VERSION = '3.0-beta.7'; const sudoUser = process.env.SUDO_USER || ''; function isRoot() { return process.getuid && process.getuid() === 0; diff --git a/npm-packages/meteor-installer/install.js b/npm-packages/meteor-installer/install.js index 841a4615c3..2c0b8aca7f 100644 --- a/npm-packages/meteor-installer/install.js +++ b/npm-packages/meteor-installer/install.js @@ -45,7 +45,9 @@ if (!semver.satisfies(process.version, nodeVersion)) { ); } -const isInstalledGlobally = process.env.npm_config_global === 'true'; +const isInstalledGlobally = + process.env.npm_config_global === 'true' || + process.env.npm_lifecycle_event === 'npx'; if (!isInstalledGlobally) { console.error('******************************************'); @@ -55,7 +57,7 @@ if (!isInstalledGlobally) { console.error('Make sure you pass -g to npm install.'); console.error('Aborting...'); console.error('******************************************'); - process.exit(1); + process.exit(0); } process.on('unhandledRejection', err => { throw err; @@ -121,8 +123,8 @@ if (fs.existsSync(startedPath)) { console.log( `If you want to reinstall it, run: - $ meteor-installer uninstall - $ meteor-installer install + $ npx meteor uninstall + $ npx meteor@ install `, ); process.exit(); @@ -316,7 +318,7 @@ function showGettingStarted() { const exportCommand = `export PATH=${meteorPath}:$PATH`; const runCommand = isWindows() - ? `set path "${meteorPath}/;%path%` + ? `set path "${meteorPath}/;%path%"` : exportCommand; const message = ` *************************************** diff --git a/npm-packages/meteor-installer/package-lock.json b/npm-packages/meteor-installer/package-lock.json index e147e8d40a..4be543068e 100644 --- a/npm-packages/meteor-installer/package-lock.json +++ b/npm-packages/meteor-installer/package-lock.json @@ -1,12 +1,12 @@ { "name": "meteor", - "version": "2.14.0", + "version": "3.0.0-beta.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "meteor", - "version": "2.14.0", + "version": "3.0.0-beta.6", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -14,7 +14,7 @@ "cli-progress": "^3.11.1", "https-proxy-agent": "^5.0.1", "node-7z": "^2.1.2", - "node-downloader-helper": "^1.0.19", + "node-downloader-helper": "^2.1.9", "rimraf": "^3.0.2", "semver": "^7.3.7", "tar": "^6.1.11", @@ -24,8 +24,8 @@ "meteor-installer": "cli.js" }, "engines": { - "node": "<=14.x", - "npm": "<=6.x" + "node": "<=20.x", + "npm": "<=10.x" } }, "node_modules/7zip-bin": { @@ -289,13 +289,14 @@ } }, "node_modules/node-downloader-helper": { - "version": "1.0.19", - "license": "MIT", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/node-downloader-helper/-/node-downloader-helper-2.1.9.tgz", + "integrity": "sha512-FSvAol2Z8UP191sZtsUZwHIN0eGoGue3uEXGdWIH5228e9KH1YHXT7fN8Oa33UGf+FbqGTQg3sJfrRGzmVCaJA==", "bin": { "ndh": "bin/ndh" }, "engines": { - "node": ">=6.9" + "node": ">=14.18" } }, "node_modules/normalize-path": { diff --git a/npm-packages/meteor-installer/package.json b/npm-packages/meteor-installer/package.json index 0ef0921642..1f8e20e3f9 100644 --- a/npm-packages/meteor-installer/package.json +++ b/npm-packages/meteor-installer/package.json @@ -1,6 +1,6 @@ { "name": "meteor", - "version": "3.0.0-beta.6", + "version": "3.0.0-beta.8", "description": "Install Meteor", "main": "install.js", "scripts": { @@ -14,7 +14,7 @@ "cli-progress": "^3.11.1", "https-proxy-agent": "^5.0.1", "node-7z": "^2.1.2", - "node-downloader-helper": "^1.0.19", + "node-downloader-helper": "^2.1.9", "rimraf": "^3.0.2", "semver": "^7.3.7", "tar": "^6.1.11", diff --git a/packages/accounts-2fa/.npm/package/npm-shrinkwrap.json b/packages/accounts-2fa/.npm/package/npm-shrinkwrap.json index 18041fc859..b8706798a6 100644 --- a/packages/accounts-2fa/.npm/package/npm-shrinkwrap.json +++ b/packages/accounts-2fa/.npm/package/npm-shrinkwrap.json @@ -2,9 +2,9 @@ "lockfileVersion": 4, "dependencies": { "@types/node": { - "version": "20.11.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.19.tgz", - "integrity": "sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==" + "version": "20.11.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", + "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==" }, "@types/notp": { "version": "2.0.5", diff --git a/packages/accounts-2fa/package.js b/packages/accounts-2fa/package.js index d0cd5e15c3..d3c581fcad 100644 --- a/packages/accounts-2fa/package.js +++ b/packages/accounts-2fa/package.js @@ -1,5 +1,5 @@ Package.describe({ - version: '3.0.0-beta300.6', + version: '3.0.0-beta300.7', summary: 'Package used to enable two factor authentication through OTP protocol', }); diff --git a/packages/accounts-base/package.js b/packages/accounts-base/package.js index 86812b9193..97c4ecca8a 100644 --- a/packages/accounts-base/package.js +++ b/packages/accounts-base/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'A user account system', - version: '3.0.0-beta300.6', + version: '3.0.0-beta300.7', }); Package.onUse(api => { diff --git a/packages/accounts-facebook/package.js b/packages/accounts-facebook/package.js index bc5ef63ddc..3f68fc76d6 100644 --- a/packages/accounts-facebook/package.js +++ b/packages/accounts-facebook/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Facebook accounts", - version: "1.3.4-beta300.6", + version: "1.3.4-beta300.7", }); Package.onUse(api => { diff --git a/packages/accounts-github/package.js b/packages/accounts-github/package.js index dc98106c13..122605d6b5 100644 --- a/packages/accounts-github/package.js +++ b/packages/accounts-github/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Login service for Github accounts', - version: '1.5.1-beta300.6', + version: '1.5.1-beta300.7', }); Package.onUse(api => { diff --git a/packages/accounts-google/package.js b/packages/accounts-google/package.js index 8c0faad92b..ecb193d14d 100644 --- a/packages/accounts-google/package.js +++ b/packages/accounts-google/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Google accounts", - version: "1.4.1-beta300.6", + version: "1.4.1-beta300.7", }); Package.onUse(api => { diff --git a/packages/accounts-meetup/package.js b/packages/accounts-meetup/package.js index 7edccac298..de63885fd4 100644 --- a/packages/accounts-meetup/package.js +++ b/packages/accounts-meetup/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Login service for Meetup accounts', - version: '1.5.1-beta300.6', + version: '1.5.1-beta300.7', }); Package.onUse(api => { diff --git a/packages/accounts-meteor-developer/package.js b/packages/accounts-meteor-developer/package.js index 8ba1dc2424..3b0715d7c4 100644 --- a/packages/accounts-meteor-developer/package.js +++ b/packages/accounts-meteor-developer/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Login service for Meteor developer accounts', - version: '1.5.1-beta300.6', + version: '1.5.1-beta300.7', }); Package.onUse(api => { diff --git a/packages/accounts-oauth/package.js b/packages/accounts-oauth/package.js index a96babcf54..5296ef31c6 100644 --- a/packages/accounts-oauth/package.js +++ b/packages/accounts-oauth/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth-based login services", - version: "1.4.3-beta300.6", + version: "1.4.3-beta300.7", }); Package.onUse(api => { diff --git a/packages/accounts-password/package.js b/packages/accounts-password/package.js index e13ea71f81..8dc013eb17 100644 --- a/packages/accounts-password/package.js +++ b/packages/accounts-password/package.js @@ -5,7 +5,7 @@ Package.describe({ // 2.2.x in the future. The version was also bumped to 2.0.0 temporarily // during the Meteor 1.5.1 release process, so versions 2.0.0-beta.2 // through -beta.5 and -rc.0 have already been published. - version: '3.0.0-beta300.6', + version: '3.0.0-beta300.7', }); Npm.depends({ diff --git a/packages/accounts-passwordless/package.js b/packages/accounts-passwordless/package.js index 0d13a30a52..e3e079a419 100644 --- a/packages/accounts-passwordless/package.js +++ b/packages/accounts-passwordless/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'No-password login/sign-up support for accounts', - version: '3.0.0-beta300.6', + version: '3.0.0-beta300.7', }); Package.onUse(api => { diff --git a/packages/accounts-twitter/package.js b/packages/accounts-twitter/package.js index f1a826613a..95827d514e 100644 --- a/packages/accounts-twitter/package.js +++ b/packages/accounts-twitter/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Twitter accounts", - version: "1.5.1-beta300.6", + version: "1.5.1-beta300.7", }); Package.onUse(api => { diff --git a/packages/accounts-ui-unstyled/package.js b/packages/accounts-ui-unstyled/package.js index 4823365165..cb7d3c93fb 100644 --- a/packages/accounts-ui-unstyled/package.js +++ b/packages/accounts-ui-unstyled/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Unstyled version of login widgets', - version: '1.7.1-beta300.6', + version: '1.7.1-beta300.7', }); Package.onUse(function(api) { diff --git a/packages/accounts-ui/package.js b/packages/accounts-ui/package.js index 94529dff08..fb2c6deffd 100644 --- a/packages/accounts-ui/package.js +++ b/packages/accounts-ui/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Simple templates to add login widgets to an app", - version: "1.4.3-beta300.6", + version: "1.4.3-beta300.7", }); Package.onUse(api => { diff --git a/packages/accounts-weibo/package.js b/packages/accounts-weibo/package.js index c4e83b42ec..add4bb20cc 100644 --- a/packages/accounts-weibo/package.js +++ b/packages/accounts-weibo/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Sina Weibo accounts", - version: "1.4.1-beta300.6", + version: "1.4.1-beta300.7", }); Package.onUse(api => { diff --git a/packages/allow-deny/package.js b/packages/allow-deny/package.js index 3523834ae6..5995f39ccc 100644 --- a/packages/allow-deny/package.js +++ b/packages/allow-deny/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'allow-deny', - version: '2.0.0-beta300.6', + version: '2.0.0-beta300.7', // Brief, one-line summary of the package. summary: 'Implements functionality for allow/deny and client-side db operations', // URL to the Git repository containing the source code for this package. diff --git a/packages/audit-argument-checks/package.js b/packages/audit-argument-checks/package.js index 5f53f1a445..6ea2f50036 100644 --- a/packages/audit-argument-checks/package.js +++ b/packages/audit-argument-checks/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Try to detect inadequate input sanitization", - version: '1.0.8-beta300.6' + version: '1.0.8-beta300.7' }); // This package is empty; its presence is detected by livedata. diff --git a/packages/autopublish/package.js b/packages/autopublish/package.js index ceadc2ce10..f168284215 100644 --- a/packages/autopublish/package.js +++ b/packages/autopublish/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "(For prototyping only) Publish the entire database to all clients", - version: '1.0.8-beta300.6' + version: '1.0.8-beta300.7' }); // This package is empty; its presence is detected by several other packages diff --git a/packages/autoupdate/package.js b/packages/autoupdate/package.js index 8a8df9ca8f..0f33774e18 100644 --- a/packages/autoupdate/package.js +++ b/packages/autoupdate/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Update the client when new client code is available', - version: '2.0.0-beta300.6', + version: '2.0.0-beta300.7', }); Package.onUse(function(api) { diff --git a/packages/babel-compiler/package.js b/packages/babel-compiler/package.js index ac92f5197f..37d966cba6 100644 --- a/packages/babel-compiler/package.js +++ b/packages/babel-compiler/package.js @@ -1,11 +1,11 @@ Package.describe({ name: "babel-compiler", summary: "Parser/transpiler for ECMAScript 2015+ syntax", - version: '7.11.0-beta300.6', + version: '7.11.0-beta300.7', }); Npm.depends({ - '@meteorjs/babel': '7.19.0-beta.4', + '@meteorjs/babel': '7.20.0-beta.4', 'json5': '2.1.1', 'semver': '7.3.8' }); diff --git a/packages/babel-runtime/package.js b/packages/babel-runtime/package.js index 09a36f9b63..07dd338af0 100644 --- a/packages/babel-runtime/package.js +++ b/packages/babel-runtime/package.js @@ -1,7 +1,7 @@ Package.describe({ name: "babel-runtime", summary: "Runtime support for output of Babel transpiler", - version: '1.5.2-beta300.6', + version: '1.5.2-beta300.7', documentation: 'README.md' }); diff --git a/packages/base64/package.js b/packages/base64/package.js index cc519afa1a..86ed5df995 100644 --- a/packages/base64/package.js +++ b/packages/base64/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Base64 encoding and decoding", - version: '1.0.13-beta300.6', + version: '1.0.13-beta300.7', }); Package.onUse(api => { diff --git a/packages/binary-heap/package.js b/packages/binary-heap/package.js index ee9ea51bc3..d3c10380c5 100644 --- a/packages/binary-heap/package.js +++ b/packages/binary-heap/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Binary Heap datastructure implementation", - version: '1.0.12-beta300.6' + version: '1.0.12-beta300.7' }); Package.onUse(api => { diff --git a/packages/boilerplate-generator-tests/package.js b/packages/boilerplate-generator-tests/package.js index ac63df9ffd..4836ae05ce 100644 --- a/packages/boilerplate-generator-tests/package.js +++ b/packages/boilerplate-generator-tests/package.js @@ -2,7 +2,7 @@ Package.describe({ // These tests are in a separate package so that we can Npm.depend on // parse5, a html parsing library. summary: "Tests for the boilerplate-generator package", - version: '1.5.2-beta300.6', + version: '1.5.2-beta300.7', documentation: null }); diff --git a/packages/boilerplate-generator/package.js b/packages/boilerplate-generator/package.js index d227c06977..9e1bbf52e2 100644 --- a/packages/boilerplate-generator/package.js +++ b/packages/boilerplate-generator/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Generates the boilerplate html from program's manifest", - version: '2.0.0-beta300.6', + version: '2.0.0-beta300.7', }); Npm.depends({ diff --git a/packages/browser-policy-common/package.js b/packages/browser-policy-common/package.js index e2f06c5478..2664226731 100644 --- a/packages/browser-policy-common/package.js +++ b/packages/browser-policy-common/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for browser-policy packages", - version: '1.0.13-beta300.6', + version: '1.0.13-beta300.7', }); Package.onUse(function (api) { diff --git a/packages/browser-policy-content/package.js b/packages/browser-policy-content/package.js index 63c1dcf1e3..ecc8bb51c9 100644 --- a/packages/browser-policy-content/package.js +++ b/packages/browser-policy-content/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Configure content security policies", - version: '2.0.0-beta300.6', + version: '2.0.0-beta300.7', }); Package.onUse(function (api) { diff --git a/packages/browser-policy-framing/package.js b/packages/browser-policy-framing/package.js index fb4a7d30cf..f3ddea948b 100644 --- a/packages/browser-policy-framing/package.js +++ b/packages/browser-policy-framing/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Restrict which websites can frame your app", - version: '1.1.3-beta300.6' + version: '1.1.3-beta300.7' }); Package.onUse(function (api) { diff --git a/packages/browser-policy/package.js b/packages/browser-policy/package.js index 920ef9be41..b448a14393 100644 --- a/packages/browser-policy/package.js +++ b/packages/browser-policy/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Configure security policies enforced by the browser", - version: '1.1.3-beta300.6' + version: '1.1.3-beta300.7' }); Package.onUse(function (api) { diff --git a/packages/caching-compiler/package.js b/packages/caching-compiler/package.js index e81c6bfb50..5ce495df55 100644 --- a/packages/caching-compiler/package.js +++ b/packages/caching-compiler/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'caching-compiler', - version: '2.0.0-beta300.6', + version: '2.0.0-beta300.7', summary: 'An easy way to make compiler plugins cache', documentation: 'README.md' }); diff --git a/packages/callback-hook/package.js b/packages/callback-hook/package.js index 984795c00e..16c19000b5 100644 --- a/packages/callback-hook/package.js +++ b/packages/callback-hook/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Register callbacks on a hook", - version: '1.6.0-beta300.6', + version: '1.6.0-beta300.7', }); Package.onUse(function (api) { diff --git a/packages/check/package.js b/packages/check/package.js index c2bee27856..bb64b85f8f 100644 --- a/packages/check/package.js +++ b/packages/check/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Check whether a value matches a pattern', - version: '1.3.3-beta300.6', + version: '1.3.3-beta300.7', }); Package.onUse(api => { diff --git a/packages/constraint-solver/package.js b/packages/constraint-solver/package.js index d7ecb8311f..14516bca99 100644 --- a/packages/constraint-solver/package.js +++ b/packages/constraint-solver/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Given the set of the constraints, picks a satisfying configuration", - version: '2.0.0-beta300.6', + version: '2.0.0-beta300.7', }); Npm.depends({ diff --git a/packages/core-runtime/package.js b/packages/core-runtime/package.js index 6d5e4adad3..243635bd82 100644 --- a/packages/core-runtime/package.js +++ b/packages/core-runtime/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Core runtime to load packages and the app", - version: '1.0.0-beta300.6', + version: '1.0.0-beta300.7', documentation: null }); diff --git a/packages/crosswalk/package.js b/packages/crosswalk/package.js index d7eabec7d5..5ad4113eda 100644 --- a/packages/crosswalk/package.js +++ b/packages/crosswalk/package.js @@ -1,7 +1,7 @@ Package.describe({ summary: "Makes your Cordova application use the Crosswalk WebView \ instead of the System WebView on Android", - version: '1.7.2-beta300.6', + version: '1.7.2-beta300.7', documentation: null }); diff --git a/packages/ddp-client/client/queueStubsHelpers.js b/packages/ddp-client/client/queueStubsHelpers.js index 275756047a..9b3d405e4d 100644 --- a/packages/ddp-client/client/queueStubsHelpers.js +++ b/packages/ddp-client/client/queueStubsHelpers.js @@ -20,7 +20,7 @@ export const loadAsyncStubHelpers = () => { queue = queue.finally(() => { fn(resolve, reject); - return promise; + return promise.stubPromise; }); promise.finally(() => { @@ -89,25 +89,30 @@ export const loadAsyncStubHelpers = () => { return queueFunction( (resolve, reject) => { + let hasStub = false; let finished = false; Meteor._setImmediate(() => { const applyAsyncPromise = oldApplyAsync.apply(this, args); stubPromiseResolver(applyAsyncPromise.stubPromise); serverPromiseResolver(applyAsyncPromise.serverPromise); + hasStub = !!applyAsyncPromise.stubPromise; + if (hasStub) { + applyAsyncPromise.stubPromise.finally(() => { + finished = true; + }); + } applyAsyncPromise .then((result) => { - finished = true; resolve(result); }) .catch((err) => { - finished = true; reject(err); }); }); Meteor._setImmediate(() => { - if (!finished) { + if (hasStub && !finished) { console.warn( `Method stub (${name}) took too long and could cause unexpected problems. Learn more at https://github.com/zodern/fix-async-stubs/#limitations` ); diff --git a/packages/ddp-client/package.js b/packages/ddp-client/package.js index 7d95fd5eef..fbb680a83c 100644 --- a/packages/ddp-client/package.js +++ b/packages/ddp-client/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Meteor's latency-compensated distributed data client", - version: '3.0.0-beta300.6', + version: '3.0.0-beta300.7', documentation: null }); diff --git a/packages/ddp-client/test/async_stubs/client.js b/packages/ddp-client/test/async_stubs/client.js index a18aa525a3..60347931db 100644 --- a/packages/ddp-client/test/async_stubs/client.js +++ b/packages/ddp-client/test/async_stubs/client.js @@ -320,3 +320,22 @@ Tinytest.addAsync( test.equal(serverEvents, ["server-only-sync", "publication"]); } ); + +Tinytest.addAsync( + "method interaction with unblocking mechanism", + async function (test) { + await Meteor.callAsync("getAndResetEvents"); + + await Promise.all([ + Meteor.callAsync("unblockedMethod", { delay: 200 }), // unblock + sleep for 200 milliseconds + Meteor.callAsync("blockingMethod"), // run straight + block + ]); + + let serverEvents = await Meteor.callAsync("getAndResetEvents"); + test.equal( + serverEvents, + ["unblock start", "blockingMethod", "unblock end"], + "should have properly executed the unblocking mechanism" + ); + } +); diff --git a/packages/ddp-client/test/async_stubs/server_setup.js b/packages/ddp-client/test/async_stubs/server_setup.js index 2b734ca292..47a4f721f5 100644 --- a/packages/ddp-client/test/async_stubs/server_setup.js +++ b/packages/ddp-client/test/async_stubs/server_setup.js @@ -40,7 +40,16 @@ Meteor.methods({ events.push('callAsyncStubFromAsyncStub'); return 'server result'; - } + }, + async 'unblockedMethod'({ delay }) { + events.push('unblock start'); + this.unblock(); + await Meteor._sleepForMs(delay); + events.push('unblock end'); + }, + 'blockingMethod'() { + events.push('blockingMethod'); + }, }); Meteor.publish("simple-publication", function () { diff --git a/packages/ddp-common/package.js b/packages/ddp-common/package.js index a113b4b229..5b30d1392c 100644 --- a/packages/ddp-common/package.js +++ b/packages/ddp-common/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Code shared beween ddp-client and ddp-server", - version: '1.4.1-beta300.6', + version: '1.4.1-beta300.7', documentation: null }); diff --git a/packages/ddp-rate-limiter/package.js b/packages/ddp-rate-limiter/package.js index ff4c970995..302ca215fc 100644 --- a/packages/ddp-rate-limiter/package.js +++ b/packages/ddp-rate-limiter/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'ddp-rate-limiter', - version: '1.2.1-beta300.6', + version: '1.2.1-beta300.7', // Brief, one-line summary of the package. summary: 'The DDPRateLimiter allows users to add rate limits to DDP' + ' methods and subscriptions.', diff --git a/packages/ddp-server/package.js b/packages/ddp-server/package.js index 1f673feeca..7efd6307df 100644 --- a/packages/ddp-server/package.js +++ b/packages/ddp-server/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Meteor's latency-compensated distributed data server", - version: '3.0.0-beta300.6', + version: '3.0.0-beta300.7', documentation: null }); diff --git a/packages/ddp/package.js b/packages/ddp/package.js index 220261157f..4e0d37533c 100644 --- a/packages/ddp/package.js +++ b/packages/ddp/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Meteor's latency-compensated distributed data framework", - version: '1.4.2-beta300.6' + version: '1.4.2-beta300.7' }); Package.onUse(function (api) { diff --git a/packages/deprecated/appcache/package.js b/packages/deprecated/appcache/package.js index f745e757f4..f9e166fe4d 100644 --- a/packages/deprecated/appcache/package.js +++ b/packages/deprecated/appcache/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Enable the application cache in the browser", - version: '1.2.9-beta300.6', + version: '1.2.9-beta300.7', deprecated: true, }); diff --git a/packages/deprecated/context/package.js b/packages/deprecated/context/package.js index c84ccd6034..d7a3bca548 100644 --- a/packages/deprecated/context/package.js +++ b/packages/deprecated/context/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "context", - version: '1.0.0-beta300.6', + version: '1.0.0-beta300.7', summary: "Manage contextual information without passing objects around", documentation: "README.md", deprecated: 'You should not be needing this package in Meteor 3' diff --git a/packages/deprecated/http/package.js b/packages/deprecated/http/package.js index 776bb51231..405387d200 100644 --- a/packages/deprecated/http/package.js +++ b/packages/deprecated/http/package.js @@ -1,15 +1,15 @@ Package.describe({ summary: "Make HTTP calls to remote servers", - version: '3.0.0-beta300.6', + version: '3.0.0-beta300.7', deprecated: 'Please use the fetch package' }); Package.onUse(function (api) { api.use([ 'url@1.3.2', - 'ecmascript@0.16.8-beta300.6', - 'fetch@0.1.4-beta300.6', - 'modules@0.19.1-beta300.6' + 'ecmascript@0.16.8-beta300.7', + 'fetch@0.1.4-beta300.7', + 'modules@0.19.1-beta300.7' ]); api.mainModule('httpcall_client.js', 'client'); diff --git a/packages/deprecated/markdown/package.js b/packages/deprecated/markdown/package.js index 162e190c03..afeed76822 100644 --- a/packages/deprecated/markdown/package.js +++ b/packages/deprecated/markdown/package.js @@ -2,13 +2,13 @@ Package.describe({ summary: "Markdown-to-HTML processor", - version: "3.0.0-beta300.6", + version: "3.0.0-beta300.7", deprecated: true, documentation: 'README.md' }); Package.onUse(function (api) { - api.use('ecmascript@0.16.8-beta300.6'); + api.use('ecmascript@0.16.8-beta300.7'); api.use("templating@1.4.2", "client", {weak: true}); api.mainModule('template-integration.js', 'client'); }); diff --git a/packages/dev-error-overlay/package.js b/packages/dev-error-overlay/package.js index 12b97fcfc4..141ec6c90f 100644 --- a/packages/dev-error-overlay/package.js +++ b/packages/dev-error-overlay/package.js @@ -1,5 +1,5 @@ Package.describe({ - version: '0.1.3-beta300.6', + version: '0.1.3-beta300.7', summary: 'Show build errors in client when using HMR', documentation: 'README.md', devOnly: true diff --git a/packages/diff-sequence/package.js b/packages/diff-sequence/package.js index 7f4a1bad35..92c5497fb9 100644 --- a/packages/diff-sequence/package.js +++ b/packages/diff-sequence/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "An implementation of a diff algorithm on arrays and objects.", - version: '1.1.3-beta300.6', + version: '1.1.3-beta300.7', documentation: null }); diff --git a/packages/disable-oplog/package.js b/packages/disable-oplog/package.js index d1858764bb..f8dfc60c74 100644 --- a/packages/disable-oplog/package.js +++ b/packages/disable-oplog/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Disables oplog tailing", - version: '1.0.8-beta300.6' + version: '1.0.8-beta300.7' }); // This package is empty; its presence is detected by mongo-livedata. diff --git a/packages/dynamic-import/package.js b/packages/dynamic-import/package.js index 38cfccf2b6..492096cad6 100644 --- a/packages/dynamic-import/package.js +++ b/packages/dynamic-import/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "dynamic-import", - version: "0.7.4-beta300.6", + version: "0.7.4-beta300.7", summary: "Runtime support for Meteor 1.5 dynamic import(...) syntax", documentation: "README.md" }); diff --git a/packages/ecmascript-runtime-client/package.js b/packages/ecmascript-runtime-client/package.js index 7cd1c752e3..0b0bbaebb6 100644 --- a/packages/ecmascript-runtime-client/package.js +++ b/packages/ecmascript-runtime-client/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'ecmascript-runtime-client', - version: '0.12.2-beta300.6', + version: '0.12.2-beta300.7', summary: 'Polyfills for new ECMAScript 2015 APIs like Map and Set', git: 'https://github.com/meteor/meteor/tree/devel/packages/ecmascript-runtime-client', diff --git a/packages/ecmascript-runtime-server/package.js b/packages/ecmascript-runtime-server/package.js index 62e4f93c5c..68b69c666f 100644 --- a/packages/ecmascript-runtime-server/package.js +++ b/packages/ecmascript-runtime-server/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "ecmascript-runtime-server", - version: "0.11.1-beta300.6", + version: "0.11.1-beta300.7", summary: "Polyfills for new ECMAScript 2015 APIs like Map and Set", git: "https://github.com/meteor/meteor/tree/devel/packages/ecmascript-runtime-client", documentation: "README.md" diff --git a/packages/ecmascript-runtime/package.js b/packages/ecmascript-runtime/package.js index fc96c4428d..fafe6e9473 100644 --- a/packages/ecmascript-runtime/package.js +++ b/packages/ecmascript-runtime/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "ecmascript-runtime", - version: '0.8.2-beta300.6', + version: '0.8.2-beta300.7', summary: "Polyfills for new ECMAScript 2015 APIs like Map and Set", git: "https://github.com/meteor/ecmascript-runtime", documentation: "README.md" diff --git a/packages/ecmascript/package.js b/packages/ecmascript/package.js index 58d8ad63c5..bc0a9894f1 100644 --- a/packages/ecmascript/package.js +++ b/packages/ecmascript/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'ecmascript', - version: '0.16.8-beta300.6', + version: '0.16.8-beta300.7', summary: 'Compiler plugin that supports ES2015+ in all .js files', documentation: 'README.md', }); diff --git a/packages/ejson/package.js b/packages/ejson/package.js index b342e97d7e..e832769a0f 100644 --- a/packages/ejson/package.js +++ b/packages/ejson/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Extended and Extensible JSON library', - version: '1.1.4-beta300.6', + version: '1.1.4-beta300.7', }); Package.onUse(function onUse(api) { diff --git a/packages/email/.npm/package/npm-shrinkwrap.json b/packages/email/.npm/package/npm-shrinkwrap.json index f8801b10e9..49880962aa 100644 --- a/packages/email/.npm/package/npm-shrinkwrap.json +++ b/packages/email/.npm/package/npm-shrinkwrap.json @@ -2,9 +2,9 @@ "lockfileVersion": 4, "dependencies": { "@types/node": { - "version": "20.11.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.20.tgz", - "integrity": "sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==" + "version": "20.11.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", + "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==" }, "@types/nodemailer": { "version": "6.4.7", diff --git a/packages/email/email.js b/packages/email/email.js index ee17a2f7a2..911ca181f1 100644 --- a/packages/email/email.js +++ b/packages/email/email.js @@ -24,7 +24,7 @@ export const EmailInternals = { const MailComposer = EmailInternals.NpmModules.mailcomposer.module; -const makeTransport = async function (mailUrlString) { +const makeTransport = function (mailUrlString) { const mailUrl = new URL(mailUrlString); if (mailUrl.protocol !== 'smtp:' && mailUrl.protocol !== 'smtps:') { @@ -103,31 +103,31 @@ const knownHostsTransport = function (settings = undefined, url = undefined) { }; EmailTest.knowHostsTransport = knownHostsTransport; -const getTransport = async function () { +const getTransport = function () { const packageSettings = Meteor.settings.packages?.email || {}; // We delay this check until the first call to Email.send, in case someone // set process.env.MAIL_URL in startup code. Then we store in a cache until // process.env.MAIL_URL changes. const url = process.env.MAIL_URL; if ( - this.cacheKey === undefined || - this.cacheKey !== url || - this.cacheKey !== packageSettings.service || - this.cacheKey !== 'settings' + globalThis.cacheKey === undefined || + globalThis.cacheKey !== url || + globalThis.cacheKey !== packageSettings.service || + globalThis.cacheKey !== 'settings' ) { if ( (packageSettings.service && wellKnow(packageSettings.service)) || (url && wellKnow(new URL(url).hostname)) || wellKnow(url?.split(':')[0] || '') ) { - this.cacheKey = packageSettings.service || 'settings'; - this.cache = knownHostsTransport(packageSettings, url); + globalThis.cacheKey = packageSettings.service || 'settings'; + globalThis.cache = knownHostsTransport(packageSettings, url); } else { - this.cacheKey = url; - this.cache = url ? await makeTransport(url, packageSettings) : null; + globalThis.cacheKey = url; + globalThis.cache = url ? makeTransport(url, packageSettings) : null; } } - return this.cache; + return globalThis.cache; }; let nextDevModeMailId = 0; @@ -250,10 +250,9 @@ Email.sendAsync = async function (options) { } if (mailUrlEnv || mailUrlSettings) { - const transport = await getTransport(); - await transport.sendMail(email); - return; + return getTransport().sendMail(email); } + return devModeSendAsync(email, options); }; diff --git a/packages/email/package.js b/packages/email/package.js index 118821286b..fb3d8b4af5 100644 --- a/packages/email/package.js +++ b/packages/email/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Send email messages', - version: '3.0.0-beta300.6', + version: '3.0.0-beta300.7', }); Npm.depends({ diff --git a/packages/es5-shim/package.js b/packages/es5-shim/package.js index 65bc013341..09556176b7 100644 --- a/packages/es5-shim/package.js +++ b/packages/es5-shim/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "es5-shim", - version: "4.8.1-beta300.6", + version: "4.8.1-beta300.7", summary: "Shims and polyfills to improve ECMAScript 5 support", documentation: "README.md" }); diff --git a/packages/facebook-config-ui/package.js b/packages/facebook-config-ui/package.js index eb584a4b57..8a86470d54 100644 --- a/packages/facebook-config-ui/package.js +++ b/packages/facebook-config-ui/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Blaze configuration templates for Facebook OAuth.", - version: '1.0.4-beta300.6', + version: '1.0.4-beta300.7', }); Package.onUse(api => { diff --git a/packages/facebook-oauth/package.js b/packages/facebook-oauth/package.js index bc9c8a1ced..2feb926ac8 100644 --- a/packages/facebook-oauth/package.js +++ b/packages/facebook-oauth/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Facebook OAuth flow", - version: '1.11.3-beta300.6' + version: '1.11.3-beta300.7' }); Package.onUse(api => { diff --git a/packages/facts-base/package.js b/packages/facts-base/package.js index 03475f3ae8..b04eac6a49 100644 --- a/packages/facts-base/package.js +++ b/packages/facts-base/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Publish internal app statistics", - version: '1.0.2-beta300.6', + version: '1.0.2-beta300.7', }); Package.onUse(function (api) { diff --git a/packages/facts-ui/package.js b/packages/facts-ui/package.js index e930405f59..030cd82cfe 100644 --- a/packages/facts-ui/package.js +++ b/packages/facts-ui/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Display internal app statistics", - version: '1.0.2-beta300.6', + version: '1.0.2-beta300.7', }); Package.onUse(function (api) { diff --git a/packages/fetch/package.js b/packages/fetch/package.js index de06ce8fd9..759edfdf0f 100644 --- a/packages/fetch/package.js +++ b/packages/fetch/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "fetch", - version: '0.1.4-beta300.6', + version: '0.1.4-beta300.7', summary: "Isomorphic modern/legacy/Node polyfill for WHATWG fetch()", documentation: "README.md" }); diff --git a/packages/force-ssl-common/.npm/package/npm-shrinkwrap.json b/packages/force-ssl-common/.npm/package/npm-shrinkwrap.json index e18f06b28d..cc006ffa58 100644 --- a/packages/force-ssl-common/.npm/package/npm-shrinkwrap.json +++ b/packages/force-ssl-common/.npm/package/npm-shrinkwrap.json @@ -157,9 +157,9 @@ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==" }, "hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==" }, "ip": { "version": "0.3.3", @@ -299,9 +299,9 @@ "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==" }, "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==" }, "object-keys": { "version": "1.1.1", @@ -366,9 +366,9 @@ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" }, "set-function-length": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", - "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==" }, "set-function-name": { "version": "2.0.2", diff --git a/packages/force-ssl-common/package.js b/packages/force-ssl-common/package.js index 2c7ac98b3e..e8ba658840 100644 --- a/packages/force-ssl-common/package.js +++ b/packages/force-ssl-common/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Internal force-ssl common code.', - version: '1.1.1-beta300.6' + version: '1.1.1-beta300.7' }); Npm.depends({ diff --git a/packages/force-ssl/package.js b/packages/force-ssl/package.js index 8cbefdca81..29cb5ba622 100644 --- a/packages/force-ssl/package.js +++ b/packages/force-ssl/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Require this application to use HTTPS", - version: "1.1.1-beta300.6", + version: "1.1.1-beta300.7", prodOnly: true }); diff --git a/packages/geojson-utils/package.js b/packages/geojson-utils/package.js index 57c099218a..5dfc047796 100644 --- a/packages/geojson-utils/package.js +++ b/packages/geojson-utils/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'GeoJSON utility functions (from https://github.com/maxogden/geojson-js-utils)', - version: '1.0.12-beta300.6', + version: '1.0.12-beta300.7', }); Package.onUse(function (api) { diff --git a/packages/github-config-ui/package.js b/packages/github-config-ui/package.js index c024c302cb..43c827d8e7 100644 --- a/packages/github-config-ui/package.js +++ b/packages/github-config-ui/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Blaze configuration templates for GitHub OAuth.', - version: '1.0.3-beta300.6', + version: '1.0.3-beta300.7', }); Package.onUse(api => { diff --git a/packages/github-oauth/package.js b/packages/github-oauth/package.js index 29486d8453..7f2eadb240 100644 --- a/packages/github-oauth/package.js +++ b/packages/github-oauth/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'GitHub OAuth flow', - version: '1.4.2-beta300.6' + version: '1.4.2-beta300.7' }); Package.onUse(api => { diff --git a/packages/google-config-ui/package.js b/packages/google-config-ui/package.js index 359a35aa62..f10e46ae68 100644 --- a/packages/google-config-ui/package.js +++ b/packages/google-config-ui/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Blaze configuration templates for Google OAuth.', - version: '1.0.4-beta300.6', + version: '1.0.4-beta300.7', }); Package.onUse(api => { diff --git a/packages/google-oauth/package.js b/packages/google-oauth/package.js index d43d46ec73..381280e825 100644 --- a/packages/google-oauth/package.js +++ b/packages/google-oauth/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Google OAuth flow", - version: "1.4.5-beta300.6", + version: "1.4.5-beta300.7", }); Cordova.depends({ diff --git a/packages/hot-code-push/package.js b/packages/hot-code-push/package.js index cdb81ee35d..4e6d532a0e 100644 --- a/packages/hot-code-push/package.js +++ b/packages/hot-code-push/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'hot-code-push', - version: '1.0.5-beta300.6', + version: '1.0.5-beta300.7', // Brief, one-line summary of the package. summary: 'Update the client in place when new code is available.', // URL to the Git repository containing the source code for this package. diff --git a/packages/hot-module-replacement/package.js b/packages/hot-module-replacement/package.js index 4d9e34d9b5..6bc9aac6bc 100644 --- a/packages/hot-module-replacement/package.js +++ b/packages/hot-module-replacement/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'hot-module-replacement', - version: '0.5.4-beta300.6', + version: '0.5.4-beta300.7', summary: 'Update code in development without reloading the page', documentation: 'README.md', debugOnly: true, diff --git a/packages/id-map/package.js b/packages/id-map/package.js index ce7f95f6c9..da83398503 100644 --- a/packages/id-map/package.js +++ b/packages/id-map/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Dictionary data structure allowing non-string keys", - version: '1.2.0-beta300.6', + version: '1.2.0-beta300.7', }); Package.onUse(function (api) { diff --git a/packages/insecure/package.js b/packages/insecure/package.js index 1719fe14c9..9f0f7993c3 100644 --- a/packages/insecure/package.js +++ b/packages/insecure/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "(For prototyping only) Allow all database writes from the client", - version: '1.0.8-beta300.6' + version: '1.0.8-beta300.7' }); // This package is empty; its presence is detected by mongo-livedata. diff --git a/packages/inter-process-messaging/package.js b/packages/inter-process-messaging/package.js index 2f4af0cbf1..efb1742f0d 100644 --- a/packages/inter-process-messaging/package.js +++ b/packages/inter-process-messaging/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "inter-process-messaging", - version: "0.1.2-beta300.6", + version: "0.1.2-beta300.7", summary: "Support for sending messages from the build process to the server process", documentation: "README.md" }); diff --git a/packages/launch-screen/package.js b/packages/launch-screen/package.js index a4baff41a6..41be308f7c 100644 --- a/packages/launch-screen/package.js +++ b/packages/launch-screen/package.js @@ -6,7 +6,7 @@ Package.describe({ // between such packages and the build tool. name: 'launch-screen', summary: 'Default and customizable launch screen on mobile.', - version: '1.3.1-beta300.6', + version: '1.3.1-beta300.7', }); Cordova.depends({ diff --git a/packages/localstorage/package.js b/packages/localstorage/package.js index 833538d6fa..718f3d3cf0 100644 --- a/packages/localstorage/package.js +++ b/packages/localstorage/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Simulates local storage on IE 6,7 using userData", - version: "1.2.1-beta300.6", + version: "1.2.1-beta300.7", }); Package.onUse(function (api) { diff --git a/packages/logging/package.js b/packages/logging/package.js index a48d53d45d..288b77a9b8 100644 --- a/packages/logging/package.js +++ b/packages/logging/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Logging facility.', - version: '1.3.3-beta300.6', + version: '1.3.3-beta300.7', }); Npm.depends({ diff --git a/packages/logic-solver/package.js b/packages/logic-solver/package.js index 949f3ddec6..f156616d9a 100644 --- a/packages/logic-solver/package.js +++ b/packages/logic-solver/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "General satisfiability solver for logic problems", - version: '3.0.0-beta300.6', + version: '3.0.0-beta300.7', }); Npm.depends({ diff --git a/packages/meetup-config-ui/package.js b/packages/meetup-config-ui/package.js index f312025bcf..c3d5afc99b 100644 --- a/packages/meetup-config-ui/package.js +++ b/packages/meetup-config-ui/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Blaze configuration templates for the Meetup OAuth flow.', - version: '1.0.3-beta300.6', + version: '1.0.3-beta300.7', }); Package.onUse(api => { diff --git a/packages/meetup-oauth/package.js b/packages/meetup-oauth/package.js index aed4d943a3..2614d8f57e 100644 --- a/packages/meetup-oauth/package.js +++ b/packages/meetup-oauth/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Meetup OAuth flow', - version: '1.1.3-beta300.6' + version: '1.1.3-beta300.7' }); Package.onUse(api => { diff --git a/packages/meteor-base/package.js b/packages/meteor-base/package.js index 3ee90d52e7..565d8d8ce3 100644 --- a/packages/meteor-base/package.js +++ b/packages/meteor-base/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'meteor-base', - version: '1.5.2-beta300.6', + version: '1.5.2-beta300.7', // Brief, one-line summary of the package. summary: 'Packages that every Meteor app needs', // By default, Meteor will default to using README.md for documentation. diff --git a/packages/meteor-developer-config-ui/package.js b/packages/meteor-developer-config-ui/package.js index 5afad3c3dc..906a94009a 100644 --- a/packages/meteor-developer-config-ui/package.js +++ b/packages/meteor-developer-config-ui/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Blaze configuration templates for the Meteor developer accounts OAuth.', - version: '1.0.3-beta300.6', + version: '1.0.3-beta300.7', }); Package.onUse(api => { diff --git a/packages/meteor-developer-oauth/package.js b/packages/meteor-developer-oauth/package.js index 1a5935c036..12868755be 100644 --- a/packages/meteor-developer-oauth/package.js +++ b/packages/meteor-developer-oauth/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Meteor developer accounts OAuth flow', - version: '1.3.3-beta300.6' + version: '1.3.3-beta300.7' }); Package.onUse(api => { diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index 067096b222..c416218f9b 100644 --- a/packages/meteor-tool/package.js +++ b/packages/meteor-tool/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'The Meteor command-line tool', - version: '3.0.0-beta.6', + version: '3.0.0-beta.7', }); Package.includeTool(); diff --git a/packages/meteor/debug.js b/packages/meteor/debug.js index 8bb4fdb0a5..bf8837a4e8 100644 --- a/packages/meteor/debug.js +++ b/packages/meteor/debug.js @@ -1,3 +1,19 @@ +if (Meteor.isServer) { + if (typeof __meteor_runtime_config__ === 'object') { + __meteor_runtime_config__.debug = + !!process.env.NODE_INSPECTOR_IPC || + !!process.env.VSCODE_INSPECTOR_OPTIONS || + process.execArgv.some(function(_arg) { + return /^--(inspect|debug)(-brk)?(=\d+)?$/i.test(_arg); + }); + } +} + +Meteor.isDebug = Meteor.isClient + ? typeof window === 'object' && !!window.__meteor_runtime_config__.debug + : typeof __meteor_runtime_config__ === 'object' && + !!__meteor_runtime_config__.debug; + var suppress = 0; // replacement for console.log. This is a temporary API. We should @@ -61,4 +77,3 @@ Meteor._suppress_log = function (count) { Meteor._suppressed_log_expected = function () { return suppress !== 0; }; - diff --git a/packages/meteor/dynamics_browser.js b/packages/meteor/dynamics_browser.js index 13133c2776..438857314b 100644 --- a/packages/meteor/dynamics_browser.js +++ b/packages/meteor/dynamics_browser.js @@ -42,6 +42,7 @@ EVp.withValue = function (value, func) { } finally { currentValues[this.slot] = saved; } + return ret; }; diff --git a/packages/meteor/dynamics_nodejs.js b/packages/meteor/dynamics_nodejs.js index bdb147ca83..4a81bf7ba8 100644 --- a/packages/meteor/dynamics_nodejs.js +++ b/packages/meteor/dynamics_nodejs.js @@ -49,20 +49,22 @@ class EnvironmentVariableAsync { */ withValue(value, func, options = {}) { const self = this; - const slotCall = Meteor._getValueFromAslStore(SLOT_CALL_KEY); - const dynamics = - Meteor._getValueFromAslStore(UPPER_CALL_DYNAMICS_KEY_NAME) || {}; - dynamics[slotCall] = Meteor._getValueFromAslStore(CURRENT_VALUE_KEY_NAME); - self.upperCallDynamics = dynamics; + const slotCall = self.slot; + const dynamics = Object.assign( + {}, + Meteor._getValueFromAslStore(UPPER_CALL_DYNAMICS_KEY_NAME) || {} + ); + + if (slotCall) { + dynamics[slotCall] = value; + } + return Meteor._runAsync( async function () { let ret; try { - Meteor._updateAslStore( - UPPER_CALL_DYNAMICS_KEY_NAME, - this.upperCallDynamics, - ); Meteor._updateAslStore(CURRENT_VALUE_KEY_NAME, value); + Meteor._updateAslStore(UPPER_CALL_DYNAMICS_KEY_NAME, dynamics); ret = await func(); } finally { Meteor._updateAslStore(CURRENT_VALUE_KEY_NAME, undefined); @@ -80,7 +82,7 @@ class EnvironmentVariableAsync { [SLOT_CALL_KEY]: this.slot, }, options, - ) + ), ); } diff --git a/packages/meteor/dynamics_test.js b/packages/meteor/dynamics_test.js index dacbb04294..3d5763e7d1 100644 --- a/packages/meteor/dynamics_test.js +++ b/packages/meteor/dynamics_test.js @@ -16,6 +16,52 @@ Tinytest.add("environment - dynamic variables", function (test) { test.equal(CurrentFoo.get(), undefined); }); +if (Meteor.isServer) { + Tinytest.addAsync( + "environment - dynamic variables with two context (server)", + async function (test) { + const context1 = new Meteor.EnvironmentVariable(); + const context2 = new Meteor.EnvironmentVariable(); + + return context1.withValue(42, async () => { + test.equal(context2.get(), undefined); + await context2.withValue(1, async () => { + await context2.withValue(2, async () => { + test.equal(context2.get(), 2); + }); + test.equal(context1.get(), 42); + test.equal(context2.get(), 1); + }); + test.equal(context1.get(), 42); + test.equal(context2.get(), undefined); + }); + } + ); +} else { + // Basically the same test as the server one, but without async/await + // as we don't handle async on the client in this case + // due to the idea that we need to keep new EcmaScript features doesn't compile in older browsers + Tinytest.add( + "environment - dynamic variables with two context (client)", + function (test) { + const context1 = new Meteor.EnvironmentVariable(); + const context2 = new Meteor.EnvironmentVariable(); + + context1.withValue(42, () => { + test.equal(context2.get(), undefined); + context2.withValue(1, () => { + context2.withValue(2, () => { + test.equal(context2.get(), 2); + }); + test.equal(context1.get(), 42); + test.equal(context2.get(), 1); + }); + test.equal(context1.get(), 42); + test.equal(context2.get(), undefined); + }); + } + ); +} Tinytest.addAsync("environment - bindEnvironment", async function (test) { var raised_f; diff --git a/packages/meteor/helpers.js b/packages/meteor/helpers.js index e85bbecfca..ac6b801d83 100644 --- a/packages/meteor/helpers.js +++ b/packages/meteor/helpers.js @@ -70,11 +70,13 @@ Meteor._delete = function (obj /*, arguments */) { /** - * Takes a function that has a callback argument as the last one and promissify it. + * @memberOf Meteor + * @locus Anywhere + * @summary Takes a function that has a callback argument as the last one and promissify it. * One option would be to use node utils.promisify, but it won't work on the browser. - * @param fn - * @param context - * @param errorFirst - If the callback follows the errorFirst style + * @param {Function} fn + * @param {Object} [context] + * @param {Boolean} [errorFirst] - If the callback follows the errorFirst style, default to true * @returns {function(...[*]): Promise} */ Meteor.promisify = function (fn, context, errorFirst) { diff --git a/packages/meteor/package.js b/packages/meteor/package.js index 13a324563a..0e3defd728 100644 --- a/packages/meteor/package.js +++ b/packages/meteor/package.js @@ -2,7 +2,7 @@ Package.describe({ summary: "Core Meteor environment", - version: '2.0.0-beta300.6', + version: '2.0.0-beta300.7', }); Package.registerBuildPlugin({ diff --git a/packages/minifier-css/package.js b/packages/minifier-css/package.js index e395249d0e..ebd1385e4f 100644 --- a/packages/minifier-css/package.js +++ b/packages/minifier-css/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'CSS minifier', - version: '2.0.0-beta300.6', + version: '2.0.0-beta300.7', }); Npm.depends({ diff --git a/packages/minifier-js/.npm/package/npm-shrinkwrap.json b/packages/minifier-js/.npm/package/npm-shrinkwrap.json index c707cf0e5d..827d7a35ec 100644 --- a/packages/minifier-js/.npm/package/npm-shrinkwrap.json +++ b/packages/minifier-js/.npm/package/npm-shrinkwrap.json @@ -17,9 +17,9 @@ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" }, "@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==" + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==" }, "@jridgewell/sourcemap-codec": { "version": "1.4.15", diff --git a/packages/minifier-js/package.js b/packages/minifier-js/package.js index 79b5dfabe7..82adac0412 100644 --- a/packages/minifier-js/package.js +++ b/packages/minifier-js/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "JavaScript minifier", - version: '3.0.0-beta300.6', + version: '3.0.0-beta300.7', }); Npm.depends({ diff --git a/packages/minimongo/cursor.js b/packages/minimongo/cursor.js index 4db04d9734..e1d77d6cb4 100644 --- a/packages/minimongo/cursor.js +++ b/packages/minimongo/cursor.js @@ -216,6 +216,18 @@ export default class Cursor { return LocalCollection._observeFromObserveChanges(this, options); } + /** + * @summary Watch a query. Receive callbacks as the result set changes. + * @locus Anywhere + * @memberOf Mongo.Cursor + * @instance + * @param {Object} callbacks Functions to call to deliver the result set as it + * changes + */ + observeAsync(options) { + return new Promise(resolve => resolve(this.observe(options))); + } + /** * @summary Watch a query. Receive callbacks as the result set changes. Only * the differences between the old and new documents are passed to @@ -373,6 +385,23 @@ export default class Cursor { return handle; } + /** + * @summary Watch a query. Receive callbacks as the result set changes. Only + * the differences between the old and new documents are passed to + * the callbacks. + * @locus Anywhere + * @memberOf Mongo.Cursor + * @instance + * @param {Object} callbacks Functions to call to deliver the result set as it + * changes + */ + observeChangesAsync(options) { + return new Promise((resolve) => { + const handle = this.observeChanges(options); + handle.isReadyPromise.then(() => resolve(handle)); + }); + } + // XXX Maybe we need a version of observe that just calls a callback if // anything changed. _depend(changers, _allow_unordered) { diff --git a/packages/minimongo/local_collection.js b/packages/minimongo/local_collection.js index 4366d65645..ac14703cc8 100644 --- a/packages/minimongo/local_collection.js +++ b/packages/minimongo/local_collection.js @@ -660,6 +660,22 @@ export default class LocalCollection { this._observeQueue.drain(); + + // If we are doing an upsert, and we didn't modify any documents yet, then + // it's time to do an insert. Figure out what document we are inserting, and + // generate an id for it. + let insertedId; + if (updateCount === 0 && options.upsert) { + const doc = LocalCollection._createUpsertDocument(selector, mod); + if (!doc._id && options.insertedId) { + doc._id = options.insertedId; + } + + insertedId = this.insert(doc); + updateCount = 1; + } + + return this.finishUpdate({ options, updateCount, diff --git a/packages/minimongo/minimongo_tests_client.js b/packages/minimongo/minimongo_tests_client.js index fd14e99fa4..2546316119 100644 --- a/packages/minimongo/minimongo_tests_client.js +++ b/packages/minimongo/minimongo_tests_client.js @@ -212,6 +212,21 @@ Tinytest.addAsync('minimongo - basics', async test => { test.equal(after.d, undefined); }); + +Tinytest.addAsync('minimongo - upsert', async test => { + const c = new LocalCollection(); + + await c.upsertAsync({ name: 'doc' }, { name: 'doc' }); + + test.equal(c.find({}).count(), 1); + + await c.removeAsync({}); + + c.upsert({ name: 'doc' }, { name: 'doc' }); + test.equal(c.find({}).count(), 1); +}); + + Tinytest.add('minimongo - error - no options', test => { try { throw MinimongoError('Not fun to have errors'); diff --git a/packages/minimongo/package.js b/packages/minimongo/package.js index fde678bf55..737d8bcf32 100644 --- a/packages/minimongo/package.js +++ b/packages/minimongo/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Meteor's client-side datastore: a port of MongoDB to Javascript", - version: '2.0.0-beta300.6', + version: '2.0.0-beta300.7', }); Package.onUse(api => { diff --git a/packages/mobile-experience/package.js b/packages/mobile-experience/package.js index b39f600c72..754cb6cc66 100644 --- a/packages/mobile-experience/package.js +++ b/packages/mobile-experience/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'mobile-experience', - version: '1.1.1-beta300.6', + version: '1.1.1-beta300.7', summary: 'Packages for a great mobile user experience', documentation: 'README.md' }); diff --git a/packages/mobile-status-bar/package.js b/packages/mobile-status-bar/package.js index 3bdb4dd749..519e3a00f0 100644 --- a/packages/mobile-status-bar/package.js +++ b/packages/mobile-status-bar/package.js @@ -1,7 +1,7 @@ Package.describe({ name: 'mobile-status-bar', summary: "Good defaults for the mobile status bar", - version: "1.1.1-beta300.6", + version: "1.1.1-beta300.7", }); Cordova.depends({ diff --git a/packages/modern-browsers/package.js b/packages/modern-browsers/package.js index 6672675c7c..6a42cddf5b 100644 --- a/packages/modern-browsers/package.js +++ b/packages/modern-browsers/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'modern-browsers', - version: '0.1.10-beta300.6', + version: '0.1.10-beta300.7', summary: 'API for defining the boundary between modern and legacy ' + 'JavaScript clients', diff --git a/packages/modules-runtime-hot/package.js b/packages/modules-runtime-hot/package.js index 92aa9cb8b2..f2f2611386 100644 --- a/packages/modules-runtime-hot/package.js +++ b/packages/modules-runtime-hot/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'modules-runtime-hot', - version: '0.14.3-beta300.6', + version: '0.14.3-beta300.7', summary: 'Patches modules-runtime to support Hot Module Replacement', git: 'https://github.com/benjamn/install', documentation: 'README.md', diff --git a/packages/modules-runtime/package.js b/packages/modules-runtime/package.js index a775220eaa..79b6325c5b 100644 --- a/packages/modules-runtime/package.js +++ b/packages/modules-runtime/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "modules-runtime", - version: '0.13.2-beta300.6', + version: '0.13.2-beta300.7', summary: "CommonJS module system", git: "https://github.com/benjamn/install", documentation: "README.md" diff --git a/packages/modules/package.js b/packages/modules/package.js index 3d79c3c99c..e9f10010c5 100644 --- a/packages/modules/package.js +++ b/packages/modules/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "modules", - version: '0.19.1-beta300.6', + version: '0.19.1-beta300.7', summary: "CommonJS module system", documentation: "README.md" }); diff --git a/packages/mongo-dev-server/package.js b/packages/mongo-dev-server/package.js index 18c66818c6..4076d8651f 100644 --- a/packages/mongo-dev-server/package.js +++ b/packages/mongo-dev-server/package.js @@ -3,7 +3,7 @@ Package.describe({ documentation: 'README.md', name: 'mongo-dev-server', summary: 'Start MongoDB alongside Meteor, in development mode.', - version: '1.1.1-beta300.6', + version: '1.1.1-beta300.7', }); Package.onUse(function (api) { diff --git a/packages/mongo-id/package.js b/packages/mongo-id/package.js index c0219a7e8a..323a1e7e47 100644 --- a/packages/mongo-id/package.js +++ b/packages/mongo-id/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'JS simulation of MongoDB ObjectIDs', - version: '1.0.9-beta300.6', + version: '1.0.9-beta300.7', documentation: null }); diff --git a/packages/mongo-livedata/package.js b/packages/mongo-livedata/package.js index 828434bbbf..03dcacc85e 100644 --- a/packages/mongo-livedata/package.js +++ b/packages/mongo-livedata/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Moved to the 'mongo' package", - version: '1.0.13-beta300.6' + version: '1.0.13-beta300.7' }); Package.onUse(function (api) { diff --git a/packages/mongo/mongo_driver.js b/packages/mongo/mongo_driver.js index 0ac003a35b..d9f9c9a771 100644 --- a/packages/mongo/mongo_driver.js +++ b/packages/mongo/mongo_driver.js @@ -940,6 +940,10 @@ Cursor.prototype.observe = function (callbacks) { return LocalCollection._observeFromObserveChanges(self, callbacks); }; +Cursor.prototype.observeAsync = function (callbacks) { + return new Promise(resolve => resolve(this.observe(callbacks))); +}; + Cursor.prototype.observeChanges = function (callbacks, options = {}) { var self = this; var methods = [ @@ -965,6 +969,10 @@ Cursor.prototype.observeChanges = function (callbacks, options = {}) { self._cursorDescription, ordered, callbacks, options.nonMutatingCallbacks); }; +Cursor.prototype.observeChangesAsync = async function (callbacks, options = {}) { + return this.observeChanges(callbacks, options); +}; + MongoConnection.prototype._createSynchronousCursor = function( cursorDescription, options) { var self = this; @@ -1553,9 +1561,9 @@ Object.assign(MongoConnection.prototype, { // listenCallback is the same kind of (notification, complete) callback passed // to InvalidationCrossbar.listen. -listenAll = function (cursorDescription, listenCallback) { - var listeners = []; - forEachTrigger(cursorDescription, function (trigger) { +listenAll = async function (cursorDescription, listenCallback) { + const listeners = []; + await forEachTrigger(cursorDescription, function (trigger) { listeners.push(DDPServer._InvalidationCrossbar.listen( trigger, listenCallback)); }); @@ -1569,20 +1577,20 @@ listenAll = function (cursorDescription, listenCallback) { }; }; -forEachTrigger = function (cursorDescription, triggerCallback) { - var key = {collection: cursorDescription.collectionName}; - var specificIds = LocalCollection._idsMatchedBySelector( +forEachTrigger = async function (cursorDescription, triggerCallback) { + const key = {collection: cursorDescription.collectionName}; + const specificIds = LocalCollection._idsMatchedBySelector( cursorDescription.selector); if (specificIds) { - _.each(specificIds, function (id) { - triggerCallback(_.extend({id: id}, key)); - }); - triggerCallback(_.extend({dropCollection: true, id: null}, key)); + for (const id of specificIds) { + await triggerCallback(_.extend({id: id}, key)); + } + await triggerCallback(_.extend({dropCollection: true, id: null}, key)); } else { - triggerCallback(key); + await triggerCallback(key); } // Everyone cares about the database being dropped. - triggerCallback({ dropDatabase: true }); + await triggerCallback({ dropDatabase: true }); }; // observeChanges for tailable cursors on capped collections. diff --git a/packages/mongo/mongo_livedata_tests.js b/packages/mongo/mongo_livedata_tests.js index 4e50d5d507..86a41ce9d9 100644 --- a/packages/mongo/mongo_livedata_tests.js +++ b/packages/mongo/mongo_livedata_tests.js @@ -4276,29 +4276,222 @@ if (Meteor.isServer) { }); } -Tinytest.addAsync('mongo-livedata - maintained isomorphism using resolverType config for both client and server', async function(test, expect) { - const Collection = new Mongo.Collection(`resolver_type${test.runId()}`, { resolverType: 'stub' }); +Tinytest.addAsync( + 'mongo-livedata - maintained isomorphism on collection operations for both client and server', + async function (test) { + const Collection = new Mongo.Collection( + `maintained_col_op_iso${test.runId()}`, + { resolverType: 'stub' } + ); - await Collection.insertAsync({ _id: 'a' }); - await Collection.insertAsync({ _id: 'b' }); + await Collection.insertAsync({ _id: 'a' }); + await Collection.insertAsync({ _id: 'b' }); - let items = await Collection.find().fetchAsync(); - let itemIds = items.map(_item => _item._id); + let items = await Collection.find().fetchAsync(); + let itemIds = items.map(_item => _item._id); - test.equal(itemIds, ['a', 'b']); + test.equal(itemIds, ['a', 'b']); - await Collection.updateAsync({ _id: 'a' }, { $set: { num: 1 } }); - await Collection.updateAsync({ _id: 'b' }, { $set: { num: 2 } }); + await Collection.updateAsync({ _id: 'a' }, { $set: { num: 1 } }); + await Collection.updateAsync({ _id: 'b' }, { $set: { num: 2 } }); - items = await Collection.find().fetchAsync(); - itemIds = items.map(_item => _item.num); + items = await Collection.find().fetchAsync(); + itemIds = items.map(_item => _item.num); - test.equal(itemIds, [1, 2]); + test.equal(itemIds, [1, 2]); - await Collection.removeAsync({ _id: 'a' }); - await Collection.removeAsync({ _id: 'b' }); + await Collection.removeAsync({ _id: 'a' }); + await Collection.removeAsync({ _id: 'b' }); - items = await Collection.find().fetchAsync(); + items = await Collection.find().fetchAsync(); - test.equal(items, []); -}); + test.equal(items, []); + }, +); + +testAsyncMulti( + 'mongo-livedata - collection async operations data persistence', + [ + async function (test) { + // Using remote collection + const Collection = new Mongo.Collection( + `remoteop_persistence${test.runId()}`, + { + resolverType: Meteor.isClient ? 'stub' : 'server', + }, + ); + + await Collection.insertAsync({ _id: 'a' }); + await Collection.updateAsync({ _id: 'a' }, { $set: { num: 1 } }); + const insertedId = await Collection.insertAsync({ num: 2 }); + + let items = await Collection.find().fetchAsync(); + let itemIds = items.map(_item => _item._id); + test.equal(itemIds, ['a', insertedId]); // temporary data accessible + + const aItem = items[0]; + const insertedItem = items[1]; + test.equal(aItem?.num, 1); + test.equal(insertedItem?.num, 2); + + await Collection.removeAsync({ _id: insertedId }); + + items = await Collection.find().fetchAsync(); + itemIds = items.map(_item => _item._id); + + test.equal(itemIds, ['a']); // temporary data accessible + + if (Meteor.isClient) { + return new Promise(resolve => { + Meteor.setTimeout(async () => { + items = await Collection.find().fetchAsync(); + itemIds = items.map(_item => _item._id); + test.equal(itemIds, []); // data IS NOT persisted + resolve(); + }, 100); + }); + } + + return Promise.resolve(); + }, + async function (test) { + // Using local collection + const Collection = new Mongo.Collection( + `localop_persistence${test.runId()}`, + ); + + await Collection._collection.insertAsync({ _id: 'a' }); + await Collection._collection.updateAsync( + { _id: 'a' }, + { $set: { num: 1 } }, + ); + const insertedId = await Collection._collection.insertAsync({ num: 2 }); + + let items = await Collection.find().fetchAsync(); + let itemIds = items.map(_item => _item._id); + test.equal(itemIds, ['a', insertedId]); // temporary data accessible + + const aItem = items[0]; + const insertedItem = items[1]; + test.equal(aItem?.num, 1); + test.equal(insertedItem?.num, 2); + + await Collection._collection.removeAsync({ _id: insertedId }); + + items = await Collection.find().fetchAsync(); + itemIds = items.map(_item => _item._id); + + test.equal(itemIds, ['a']); // temporary data accessible + + if (Meteor.isClient) { + return new Promise(resolve => { + Meteor.setTimeout(async () => { + items = await Collection.find().fetchAsync(); + itemIds = items.map(_item => _item._id); + test.equal(itemIds, ['a']); // data is persisted + resolve(); + }, 100); + }); + } + + return Promise.resolve(); + }, + async function (test) { + // Using methods + const Collection = new Mongo.Collection( + `methodop_persistence${test.runId()}`, + ); + Collection.allow({ + insertAsync() { + return true; + }, + insert() { + return true; + }, + }); + + Meteor.methods({ + [`insertMethodPersistence${test.runId()}`]: async () => { + await Collection.insertAsync({ _id: 'a' }); + }, + }); + + const promise = Meteor.callAsync( + `insertMethodPersistence${test.runId()}`, + ); + + let items; + let itemIds; + if (Meteor.isServer) { + await promise; + + items = await Collection.find().fetchAsync(); + itemIds = items.map(_item => _item._id); + + test.equal(itemIds, ['a']); // temporary data accessible + } + + if (Meteor.isClient) { + await promise.stubPromise; + + items = await Collection.find().fetchAsync(); + itemIds = items.map(_item => _item._id); + + test.equal(itemIds, ['a']); // temporary data accessible + + try { + await promise.serverPromise; + } catch (e) { + // error as no insert method enabled on server + return new Promise(resolve => { + Meteor.setTimeout(async () => { + items = await Collection.find().fetchAsync(); + itemIds = items.map(_item => _item._id); + test.equal(itemIds, []); // data IS NOT persisted + resolve(); + }, 100); + }); + } + } else { + return Promise.resolve(); + } + }, + ], +); + +testAsyncMulti("mongo-livedata - support observeChangesAsync and observeAsync to keep isomorphism on client and server", [ + async (test) => { + const Collection = new Mongo.Collection(`observe_changes_async${test.runId()}`, { resolverType: 'stub' }); + const id = 'a'; + await Collection.insertAsync({ _id: id, foo: { bar: 123 } }); + + return new Promise(async resolve => { + const obs = await Collection.find(id).observeChangesAsync({ + async changed(_id, fields) { + await obs.stop(); + resolve(); + test.equal(_id, id); + test.equal(fields?.foo?.bar, 456); + }, + }); + await Collection.updateAsync(id, { $set: { 'foo.bar': 456 } }); + }); + }, + async (test) => { + const Collection = new Mongo.Collection(`observe_async${test.runId()}`, { resolverType: 'stub' }); + const id = 'a'; + await Collection.insertAsync({ _id: id, foo: { bar: 123 } }); + + return new Promise(async resolve => { + const obs = await Collection.find(id).observeAsync({ + async changed(newDocument) { + await obs.stop(); + test.equal(newDocument._id, id); + test.equal(newDocument?.foo?.bar, 456); + resolve(); + }, + }); + await Collection.updateAsync(id, { $set: { 'foo.bar': 456 } }); + }); + } +]); diff --git a/packages/mongo/oplog_observe_driver.js b/packages/mongo/oplog_observe_driver.js index 8a9cf111e9..77160e40e2 100644 --- a/packages/mongo/oplog_observe_driver.js +++ b/packages/mongo/oplog_observe_driver.js @@ -1,4 +1,5 @@ import { oplogV2V1Converter } from "./oplog_v2_converter"; +import { check, Match } from 'meteor/check'; var PHASE = { QUERYING: "QUERYING", @@ -28,7 +29,7 @@ var currentId = 0; // callbacks (and a ready() invocation) to the ObserveMultiplexer, and you stop // it by calling the stop() method. OplogObserveDriver = function (options) { - var self = this; + const self = this; self._usesOplog = true; // tests look at this self._id = currentId; @@ -42,10 +43,10 @@ OplogObserveDriver = function (options) { throw Error("OplogObserveDriver only supports unordered observeChanges"); } - var sorter = options.sorter; + const sorter = options.sorter; // We don't support $near and other geo-queries so it's OK to initialize the // comparator only once in the constructor. - var comparator = sorter && sorter.getComparator(); + const comparator = sorter && sorter.getComparator(); if (options.cursorDescription.options.limit) { // There are several properties ordered driver implements: @@ -57,7 +58,7 @@ OplogObserveDriver = function (options) { // into published set. // - _published - Max Heap (also implements IdMap methods) - var heapOptions = { IdMap: LocalCollection._IdMap }; + const heapOptions = { IdMap: LocalCollection._IdMap }; self._limit = self._cursorDescription.options.limit; self._comparator = comparator; self._sorter = sorter; @@ -79,6 +80,12 @@ OplogObserveDriver = function (options) { self._stopped = false; self._stopHandles = []; + self._addStopHandles = function (newStopHandles) { + const expectedPattern = Match.ObjectIncluding({ stop: Function }); + // Single item or array + check(newStopHandles, Match.OneOf([expectedPattern], expectedPattern)); + self._stopHandles.push(newStopHandles); + } Package['facts-base'] && Package['facts-base'].Facts.incrementServerFact( "mongo-livedata", "observe-drivers-oplog", 1); @@ -88,7 +95,7 @@ OplogObserveDriver = function (options) { self._matcher = options.matcher; // we are now using projection, not fields in the cursor description even if you pass {fields} // in the cursor construction - var projection = self._cursorDescription.options.fields || self._cursorDescription.options.projection || {}; + const projection = self._cursorDescription.options.fields || self._cursorDescription.options.projection || {}; self._projectionFn = LocalCollection._compileProjection(projection); // Projection function, result of combining important fields for selector and // existing fields projection @@ -105,90 +112,94 @@ OplogObserveDriver = function (options) { self._requeryWhenDoneThisQuery = false; self._writesToCommitWhenWeReachSteady = []; - // If the oplog handle tells us that it skipped some entries (because it got - // behind, say), re-poll. - self._stopHandles.push(self._mongoHandle._oplogHandle.onSkippedEntries( - finishIfNeedToPollQuery(function () { - return self._needToPollQuery(); - }) - )); - forEachTrigger(self._cursorDescription, function (trigger) { - self._stopHandles.push(self._mongoHandle._oplogHandle.onOplogEntry( - trigger, function (notification) { - finishIfNeedToPollQuery(function () { - var op = notification.op; - if (notification.dropCollection || notification.dropDatabase) { - // Note: this call is not allowed to block on anything (especially - // on waiting for oplog entries to catch up) because that will block - // onOplogEntry! - return self._needToPollQuery(); - } else { - // All other operators should be handled depending on phase - if (self._phase === PHASE.QUERYING) { - return self._handleOplogEntryQuerying(op); - } else { - return self._handleOplogEntrySteadyOrFetching(op); - } - } - })(); - } - )); - }); - // XXX ordering w.r.t. everything else? - self._stopHandles.push(listenAll( - self._cursorDescription, function () { - // If we're not in a pre-fire write fence, we don't have to do anything. - var fence = DDPServer._getCurrentFence(); - if (!fence || fence.fired) - return; - - if (fence._oplogObserveDrivers) { - fence._oplogObserveDrivers[self._id] = self; - return; - } - - fence._oplogObserveDrivers = {}; - fence._oplogObserveDrivers[self._id] = self; - - fence.onBeforeFire(async function () { - var drivers = fence._oplogObserveDrivers; - delete fence._oplogObserveDrivers; - - // This fence cannot fire until we've caught up to "this point" in the - // oplog, and all observers made it back to the steady state. - await self._mongoHandle._oplogHandle.waitUntilCaughtUp(); - - for (const driver of Object.values(drivers)) { - if (driver._stopped) - continue; - - var write = await fence.beginWrite(); - if (driver._phase === PHASE.STEADY) { - // Make sure that all of the callbacks have made it through the - // multiplexer and been delivered to ObserveHandles before committing - // writes. - await driver._multiplexer.onFlush(write.committed); - } else { - driver._writesToCommitWhenWeReachSteady.push(write); - } - } - }); - } - )); - - // When Mongo fails over, we need to repoll the query, in case we processed an - // oplog entry that got rolled back. - self._stopHandles.push(self._mongoHandle._onFailover(finishIfNeedToPollQuery( - function () { - return self._needToPollQuery(); - }))); -}; + }; _.extend(OplogObserveDriver.prototype, { - _init: function() { + _init: async function() { const self = this; + + // If the oplog handle tells us that it skipped some entries (because it got + // behind, say), re-poll. + self._addStopHandles(self._mongoHandle._oplogHandle.onSkippedEntries( + finishIfNeedToPollQuery(function () { + return self._needToPollQuery(); + }) + )); + + await forEachTrigger(self._cursorDescription, async function (trigger) { + self._addStopHandles(await self._mongoHandle._oplogHandle.onOplogEntry( + trigger, function (notification) { + finishIfNeedToPollQuery(function () { + const op = notification.op; + if (notification.dropCollection || notification.dropDatabase) { + // Note: this call is not allowed to block on anything (especially + // on waiting for oplog entries to catch up) because that will block + // onOplogEntry! + return self._needToPollQuery(); + } else { + // All other operators should be handled depending on phase + if (self._phase === PHASE.QUERYING) { + return self._handleOplogEntryQuerying(op); + } else { + return self._handleOplogEntrySteadyOrFetching(op); + } + } + })(); + } + )); + }); + + // XXX ordering w.r.t. everything else? + self._addStopHandles(await listenAll( + self._cursorDescription, function () { + // If we're not in a pre-fire write fence, we don't have to do anything. + const fence = DDPServer._getCurrentFence(); + if (!fence || fence.fired) + return; + + if (fence._oplogObserveDrivers) { + fence._oplogObserveDrivers[self._id] = self; + return; + } + + fence._oplogObserveDrivers = {}; + fence._oplogObserveDrivers[self._id] = self; + + fence.onBeforeFire(async function () { + const drivers = fence._oplogObserveDrivers; + delete fence._oplogObserveDrivers; + + // This fence cannot fire until we've caught up to "this point" in the + // oplog, and all observers made it back to the steady state. + await self._mongoHandle._oplogHandle.waitUntilCaughtUp(); + + for (const driver of Object.values(drivers)) { + if (driver._stopped) + continue; + + const write = await fence.beginWrite(); + if (driver._phase === PHASE.STEADY) { + // Make sure that all of the callbacks have made it through the + // multiplexer and been delivered to ObserveHandles before committing + // writes. + await driver._multiplexer.onFlush(write.committed); + } else { + driver._writesToCommitWhenWeReachSteady.push(write); + } + } + }); + } + )); + + // When Mongo fails over, we need to repoll the query, in case we processed an + // oplog entry that got rolled back. + self._addStopHandles(self._mongoHandle._onFailover(finishIfNeedToPollQuery( + function () { + return self._needToPollQuery(); + }))); + // Give _observeChanges a chance to add the new ObserveHandle to our // multiplexer, so that the added calls get streamed. return self._runInitialQuery(); diff --git a/packages/mongo/oplog_tailing.js b/packages/mongo/oplog_tailing.js index 5f61d06681..631991fe74 100644 --- a/packages/mongo/oplog_tailing.js +++ b/packages/mongo/oplog_tailing.js @@ -189,7 +189,7 @@ Object.assign(OplogHandle.prototype, { // currently visible. // XXX become convinced that this is actually safe even if oplogConnection // is some kind of pool - waitUntilCaughtUp: function () { + waitUntilCaughtUp: async function () { return this._waitUntilCaughtUp(); }, diff --git a/packages/mongo/package.js b/packages/mongo/package.js index 68e8ae87aa..12de5a7d53 100644 --- a/packages/mongo/package.js +++ b/packages/mongo/package.js @@ -9,7 +9,7 @@ Package.describe({ summary: "Adaptor for using MongoDB and Minimongo over DDP", - version: '2.0.0-beta300.6', + version: '2.0.0-beta300.7', }); Npm.depends({ diff --git a/packages/mongo/polling_observe_driver.js b/packages/mongo/polling_observe_driver.js index 3948a345fa..13da97b3c0 100644 --- a/packages/mongo/polling_observe_driver.js +++ b/packages/mongo/polling_observe_driver.js @@ -2,7 +2,8 @@ var POLLING_THROTTLE_MS = +process.env.METEOR_POLLING_THROTTLE_MS || 50; var POLLING_INTERVAL_MS = +process.env.METEOR_POLLING_INTERVAL_MS || 10 * 1000; PollingObserveDriver = function (options) { - var self = this; + const self = this; + self._options = options; self._cursorDescription = options.cursorDescription; self._mongoHandle = options.mongoHandle; @@ -37,47 +38,51 @@ PollingObserveDriver = function (options) { // XXX figure out if we still need a queue self._taskQueue = new Meteor._AsynchronousQueue(); - var listenersHandle = listenAll( - self._cursorDescription, function (notification) { - // When someone does a transaction that might affect us, schedule a poll - // of the database. If that transaction happens inside of a write fence, - // block the fence until we've polled and notified observers. - var fence = DDPServer._getCurrentFence(); - if (fence) - self._pendingWrites.push(fence.beginWrite()); - // Ensure a poll is scheduled... but if we already know that one is, - // don't hit the throttled _ensurePollIsScheduled function (which might - // lead to us calling it unnecessarily in ms). - if (self._pollsScheduledButNotStarted === 0) - self._ensurePollIsScheduled(); - } - ); - self._stopCallbacks.push(async function () { await listenersHandle.stop(); }); - - // every once and a while, poll even if we don't think we're dirty, for - // eventual consistency with database writes from outside the Meteor - // universe. - // - // For testing, there's an undocumented callback argument to observeChanges - // which disables time-based polling and gets called at the beginning of each - // poll. - if (options._testOnlyPollCallback) { - self._testOnlyPollCallback = options._testOnlyPollCallback; - } else { - var pollingInterval = - self._cursorDescription.options.pollingIntervalMs || - self._cursorDescription.options._pollingInterval || // COMPAT with 1.2 - POLLING_INTERVAL_MS; - var intervalHandle = Meteor.setInterval( - _.bind(self._ensurePollIsScheduled, self), pollingInterval); - self._stopCallbacks.push(function () { - Meteor.clearInterval(intervalHandle); - }); - } + }; _.extend(PollingObserveDriver.prototype, { _init: async function () { + const self = this; + const options = self._options; + const listenersHandle = await listenAll( + self._cursorDescription, function (notification) { + // When someone does a transaction that might affect us, schedule a poll + // of the database. If that transaction happens inside of a write fence, + // block the fence until we've polled and notified observers. + const fence = DDPServer._getCurrentFence(); + if (fence) + self._pendingWrites.push(fence.beginWrite()); + // Ensure a poll is scheduled... but if we already know that one is, + // don't hit the throttled _ensurePollIsScheduled function (which might + // lead to us calling it unnecessarily in ms). + if (self._pollsScheduledButNotStarted === 0) + self._ensurePollIsScheduled(); + } + ); + self._stopCallbacks.push(async function () { await listenersHandle.stop(); }); + + // every once and a while, poll even if we don't think we're dirty, for + // eventual consistency with database writes from outside the Meteor + // universe. + // + // For testing, there's an undocumented callback argument to observeChanges + // which disables time-based polling and gets called at the beginning of each + // poll. + if (options._testOnlyPollCallback) { + self._testOnlyPollCallback = options._testOnlyPollCallback; + } else { + const pollingInterval = + self._cursorDescription.options.pollingIntervalMs || + self._cursorDescription.options._pollingInterval || // COMPAT with 1.2 + POLLING_INTERVAL_MS; + const intervalHandle = Meteor.setInterval( + _.bind(self._ensurePollIsScheduled, self), pollingInterval); + self._stopCallbacks.push(function () { + Meteor.clearInterval(intervalHandle); + }); + } + // Make sure we actually poll soon! await this._unthrottledEnsurePollIsScheduled(); diff --git a/packages/non-core/mongo-decimal/.versions b/packages/non-core/mongo-decimal/.versions index 16c3a410d7..bdf63647d3 100644 --- a/packages/non-core/mongo-decimal/.versions +++ b/packages/non-core/mongo-decimal/.versions @@ -1,52 +1,52 @@ -allow-deny@2.0.0-beta300.6 -babel-compiler@7.11.0-beta300.6 -babel-runtime@1.5.2-beta300.6 -base64@1.0.13-beta300.6 -binary-heap@1.0.12-beta300.6 -boilerplate-generator@2.0.0-beta300.6 -callback-hook@1.6.0-beta300.6 -check@1.3.3-beta300.6 -core-runtime@1.0.0-beta300.6 -ddp@1.4.2-beta300.6 -ddp-client@3.0.0-beta300.6 -ddp-common@1.4.1-beta300.6 -ddp-server@3.0.0-beta300.6 -diff-sequence@1.1.3-beta300.6 -dynamic-import@0.7.4-beta300.6 -ecmascript@0.16.8-beta300.6 -ecmascript-runtime@0.8.2-beta300.6 -ecmascript-runtime-client@0.12.2-beta300.6 -ecmascript-runtime-server@0.11.1-beta300.6 -ejson@1.1.4-beta300.6 -facts-base@1.0.2-beta300.6 -fetch@0.1.4-beta300.6 -geojson-utils@1.0.12-beta300.6 -id-map@1.2.0-beta300.6 -insecure@1.0.8-beta300.6 -inter-process-messaging@0.1.2-beta300.6 -local-test:mongo-decimal@0.1.4-beta300.6 -logging@1.3.3-beta300.6 -meteor@2.0.0-beta300.6 -minimongo@2.0.0-beta300.6 -modern-browsers@0.1.10-beta300.6 -modules@0.19.1-beta300.6 -modules-runtime@0.13.2-beta300.6 -mongo@2.0.0-beta300.6 -mongo-decimal@0.1.4-beta300.6 -mongo-dev-server@1.1.1-beta300.6 -mongo-id@1.0.9-beta300.6 -npm-mongo@4.16.1-beta300.6 -ordered-dict@1.2.0-beta300.6 -promise@1.0.0-beta300.6 -random@1.2.2-beta300.6 -react-fast-refresh@0.2.8-beta300.6 -reload@1.3.2-beta300.6 -retry@1.1.1-beta300.6 -routepolicy@1.1.2-beta300.6 -socket-stream-client@0.5.2-beta300.6 -tinytest@2.0.0-beta300.6 -tracker@1.3.3-beta300.6 -typescript@5.3.3-beta300.6 -underscore@1.0.14-beta300.6 -webapp@2.0.0-beta300.6 -webapp-hashing@1.1.2-beta300.6 +allow-deny@2.0.0-beta300.7 +babel-compiler@7.11.0-beta300.7 +babel-runtime@1.5.2-beta300.7 +base64@1.0.13-beta300.7 +binary-heap@1.0.12-beta300.7 +boilerplate-generator@2.0.0-beta300.7 +callback-hook@1.6.0-beta300.7 +check@1.3.3-beta300.7 +core-runtime@1.0.0-beta300.7 +ddp@1.4.2-beta300.7 +ddp-client@3.0.0-beta300.7 +ddp-common@1.4.1-beta300.7 +ddp-server@3.0.0-beta300.7 +diff-sequence@1.1.3-beta300.7 +dynamic-import@0.7.4-beta300.7 +ecmascript@0.16.8-beta300.7 +ecmascript-runtime@0.8.2-beta300.7 +ecmascript-runtime-client@0.12.2-beta300.7 +ecmascript-runtime-server@0.11.1-beta300.7 +ejson@1.1.4-beta300.7 +facts-base@1.0.2-beta300.7 +fetch@0.1.4-beta300.7 +geojson-utils@1.0.12-beta300.7 +id-map@1.2.0-beta300.7 +insecure@1.0.8-beta300.7 +inter-process-messaging@0.1.2-beta300.7 +local-test:mongo-decimal@0.1.4-beta300.7 +logging@1.3.3-beta300.7 +meteor@2.0.0-beta300.7 +minimongo@2.0.0-beta300.7 +modern-browsers@0.1.10-beta300.7 +modules@0.19.1-beta300.7 +modules-runtime@0.13.2-beta300.7 +mongo@2.0.0-beta300.7 +mongo-decimal@0.1.4-beta300.7 +mongo-dev-server@1.1.1-beta300.7 +mongo-id@1.0.9-beta300.7 +npm-mongo@4.16.1-beta300.7 +ordered-dict@1.2.0-beta300.7 +promise@1.0.0-beta300.7 +random@1.2.2-beta300.7 +react-fast-refresh@0.2.8-beta300.7 +reload@1.3.2-beta300.7 +retry@1.1.1-beta300.7 +routepolicy@1.1.2-beta300.7 +socket-stream-client@0.5.2-beta300.7 +tinytest@2.0.0-beta300.7 +tracker@1.3.3-beta300.7 +typescript@5.4.3-beta300.7 +underscore@1.0.14-beta300.7 +webapp@2.0.0-beta300.7 +webapp-hashing@1.1.2-beta300.7 diff --git a/packages/non-core/mongo-decimal/package.js b/packages/non-core/mongo-decimal/package.js index 8d57b9ee4b..09ebd96da0 100644 --- a/packages/non-core/mongo-decimal/package.js +++ b/packages/non-core/mongo-decimal/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "JS simulation of MongoDB Decimal128 type", - version: '0.1.4-beta300.6', + version: '0.1.4-beta300.7', }); Npm.depends({ @@ -8,8 +8,8 @@ Npm.depends({ }); Package.onUse(function (api) { - api.use('ecmascript@0.16.8-beta300.6'); - api.use('ejson@1.1.4-beta300.6'); + api.use('ecmascript@0.16.8-beta300.7'); + api.use('ejson@1.1.4-beta300.7'); api.mainModule('decimal.js'); api.export('Decimal'); }); diff --git a/packages/npm-mongo/.npm/package/npm-shrinkwrap.json b/packages/npm-mongo/.npm/package/npm-shrinkwrap.json index c224b5dbda..2223499220 100644 --- a/packages/npm-mongo/.npm/package/npm-shrinkwrap.json +++ b/packages/npm-mongo/.npm/package/npm-shrinkwrap.json @@ -74,129 +74,129 @@ } }, "@aws-sdk/client-cognito-identity": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.525.0.tgz", - "integrity": "sha512-LxI9rfn6Vy/EX6I7as14PAKqAhUwVQviaMV/xCLQIubgdVj1xfexVURdiSk7GQshpcwtrs+GQWV21yP+3AX/7A==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.535.0.tgz", + "integrity": "sha512-7n9WAXAQzDgdaNkZlgdX+dmCW30tCrq3NpPs/f1WFWcF6g+s06ULkuWywTU+usG6ZTuRtajFKy2oMkMv9Wor0g==" }, "@aws-sdk/client-sso": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.525.0.tgz", - "integrity": "sha512-6KwGQWFoNLH1UupdWPFdKPfTgjSz1kN8/r8aCzuvvXBe4Pz+iDUZ6FEJzGWNc9AapjvZDNO1hs23slomM9rTaA==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.535.0.tgz", + "integrity": "sha512-h9eQRdFnjDRVBnPJIKXuX7D+isSAioIfZPC4PQwsL5BscTRlk4c90DX0R0uk64YUtp7LZu8TNtrosFZ/1HtTrQ==" }, "@aws-sdk/client-sso-oidc": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.525.0.tgz", - "integrity": "sha512-zz13k/6RkjPSLmReSeGxd8wzGiiZa4Odr2Tv3wTcxClM4wOjD+zOgGv4Fe32b9AMqaueiCdjbvdu7AKcYxFA4A==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.535.0.tgz", + "integrity": "sha512-M2cG4EQXDpAJQyq33ORIr6abmdX9p9zX0ssVy8XwFNB7lrgoIKxuVoGL+fX+XMgecl24x7ELz6b4QlILOevbCw==" }, "@aws-sdk/client-sts": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.525.0.tgz", - "integrity": "sha512-a8NUGRvO6rkfTZCbMaCsjDjLbERCwIUU9dIywFYcRgbFhkupJ7fSaZz3Het98U51M9ZbTEpaTa3fz0HaJv8VJw==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.535.0.tgz", + "integrity": "sha512-ii9OOm3TJwP3JmO1IVJXKWIShVKPl0VtdlgROc/SkDglO/kuAw9eDdlROgc+qbFl+gm6bBTguOVTUXt3tS3flw==" }, "@aws-sdk/core": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.525.0.tgz", - "integrity": "sha512-E3LtEtMWCriQOFZpVKpLYzbdw/v2PAOEAMhn2VRRZ1g0/g1TXzQrfhEU2yd8l/vQEJaCJ82ooGGg7YECviBUxA==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.535.0.tgz", + "integrity": "sha512-+Yusa9HziuaEDta1UaLEtMAtmgvxdxhPn7jgfRY6PplqAqgsfa5FR83sxy5qr2q7xjQTwHtV4MjQVuOjG9JsLw==" }, "@aws-sdk/credential-provider-cognito-identity": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.525.0.tgz", - "integrity": "sha512-0djjCN/zN6QFQt1xU64VBOSRP4wJckU6U7FjLPrGpL6w03hF0dUmVUXjhQZe5WKNPCicVc2S3BYPohl/PzCx1w==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.535.0.tgz", + "integrity": "sha512-Lc+RJTNzp22H31W/O7iSmCZUP+KYZMuzK8hKU4/RXo7D8t/cFLb4VpvvcCCa4UOZqdmxVqEhwc1oXyMkoszITQ==" }, "@aws-sdk/credential-provider-env": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.523.0.tgz", - "integrity": "sha512-Y6DWdH6/OuMDoNKVzZlNeBc6f1Yjk1lYMjANKpIhMbkRCvLJw/PYZKOZa8WpXbTYdgg9XLjKybnLIb3ww3uuzA==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.535.0.tgz", + "integrity": "sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==" }, "@aws-sdk/credential-provider-http": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.525.0.tgz", - "integrity": "sha512-RNWQGuSBQZhl3iqklOslUEfQ4br1V3DCPboMpeqFtddUWJV3m2u2extFur9/4Uy+1EHVF120IwZUKtd8dF+ibw==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.535.0.tgz", + "integrity": "sha512-kdj1wCmOMZ29jSlUskRqN04S6fJ4dvt0Nq9Z32SA6wO7UG8ht6Ot9h/au/eTWJM3E1somZ7D771oK7dQt9b8yw==" }, "@aws-sdk/credential-provider-ini": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.525.0.tgz", - "integrity": "sha512-JDnccfK5JRb9jcgpc9lirL9PyCwGIqY0nKdw3LlX5WL5vTpTG4E1q7rLAlpNh7/tFD1n66Itarfv2tsyHMIqCw==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.535.0.tgz", + "integrity": "sha512-bm3XOYlyCjtAb8eeHXLrxqRxYVRw2Iqv9IufdJb4gM13TbNSYniUT1WKaHxGIZ5p+FuNlXVhvk1OpHFM13+gXA==" }, "@aws-sdk/credential-provider-node": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.525.0.tgz", - "integrity": "sha512-RJXlO8goGXpnoHQAyrCcJ0QtWEOFa34LSbfdqBIjQX/fwnjUuEmiGdXTV3AZmwYQ7juk49tfBneHbtOP3AGqsQ==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.535.0.tgz", + "integrity": "sha512-6JXp/EuL6euUkH5k4d+lQFF6gBwukrcCOWfNHCmq14mNJf/cqT3HAX1VMtWFRSK20am0IxfYQGccb0/nZykdKg==" }, "@aws-sdk/credential-provider-process": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.523.0.tgz", - "integrity": "sha512-f0LP9KlFmMvPWdKeUKYlZ6FkQAECUeZMmISsv6NKtvPCI9e4O4cLTeR09telwDK8P0HrgcRuZfXM7E30m8re0Q==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.535.0.tgz", + "integrity": "sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==" }, "@aws-sdk/credential-provider-sso": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.525.0.tgz", - "integrity": "sha512-7V7ybtufxdD3plxeIeB6aqHZeFIUlAyPphXIUgXrGY10iNcosL970rQPBeggsohe4gCM6UvY2TfMeEcr+ZE8FA==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.535.0.tgz", + "integrity": "sha512-2Dw0YIr8ETdFpq65CC4zK8ZIEbX78rXoNRZXUGNQW3oSKfL0tj8O8ErY6kg1IdEnYbGnEQ35q6luZ5GGNKLgDg==" }, "@aws-sdk/credential-provider-web-identity": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.525.0.tgz", - "integrity": "sha512-sAukOjR1oKb2JXG4nPpuBFpSwGUhrrY17PG/xbTy8NAoLLhrqRwnErcLfdTfmj6tH+3094k6ws/Sh8a35ae7fA==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.535.0.tgz", + "integrity": "sha512-t2/JWrKY0H66A7JW7CqX06/DG2YkJddikt5ymdQvx/Q7dRMJ3d+o/vgjoKr7RvEx/pNruCeyM1599HCvwrVMrg==" }, "@aws-sdk/credential-providers": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.525.0.tgz", - "integrity": "sha512-zj439Ok1s44nahIJKpBM4jhAxnSw20flXQpMD2aeGdvUuKm2xmzZP0lX5z9a+XQWFtNh251ZcSt2p+RwtLKtiw==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.535.0.tgz", + "integrity": "sha512-rC3TguTFbeua3EyTwGm84xeARKE1RO0oIWdtuTmSS5ZCPwllcePGkOVg7gQiPRc01Ebj816S/6P2QbvAfSUxqA==" }, "@aws-sdk/middleware-host-header": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.523.0.tgz", - "integrity": "sha512-4g3q7Ta9sdD9TMUuohBAkbx/e3I/juTqfKi7TPgP+8jxcYX72MOsgemAMHuP6CX27eyj4dpvjH+w4SIVDiDSmg==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.535.0.tgz", + "integrity": "sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==" }, "@aws-sdk/middleware-logger": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.523.0.tgz", - "integrity": "sha512-PeDNJNhfiaZx54LBaLTXzUaJ9LXFwDFFIksipjqjvxMafnoVcQwKbkoPUWLe5ytT4nnL1LogD3s55mERFUsnwg==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.535.0.tgz", + "integrity": "sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==" }, "@aws-sdk/middleware-recursion-detection": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.523.0.tgz", - "integrity": "sha512-nZ3Vt7ehfSDYnrcg/aAfjjvpdE+61B3Zk68i6/hSUIegT3IH9H1vSW67NDKVp+50hcEfzWwM2HMPXxlzuyFyrw==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.535.0.tgz", + "integrity": "sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==" }, "@aws-sdk/middleware-user-agent": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.525.0.tgz", - "integrity": "sha512-4al/6uO+t/QIYXK2OgqzDKQzzLAYJza1vWFS+S0lJ3jLNGyLB5BMU5KqWjDzevYZ4eCnz2Nn7z0FveUTNz8YdQ==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.535.0.tgz", + "integrity": "sha512-Uvb2WJ+zdHdCOtsWVPI/M0BcfNrjOYsicDZWtaljucRJKLclY5gNWwD+RwIC+8b5TvfnVOlH+N5jhvpi5Impog==" }, "@aws-sdk/region-config-resolver": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.525.0.tgz", - "integrity": "sha512-8kFqXk6UyKgTMi7N7QlhA6qM4pGPWbiUXqEY2RgUWngtxqNFGeM9JTexZeuavQI+qLLe09VPShPNX71fEDcM6w==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.535.0.tgz", + "integrity": "sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==" }, "@aws-sdk/token-providers": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.525.0.tgz", - "integrity": "sha512-puVjbxuK0Dq7PTQ2HdddHy2eQjOH8GZbump74yWJa6JVpRW84LlOcNmP+79x4Kscvz2ldWB8XDFw/pcCiSDe5A==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.535.0.tgz", + "integrity": "sha512-4g+l/B9h1H/SiDtFRosW3pMwc+3PTXljZit+5NUBcET2XqcdUyHmgj3lBdu+CJ9CHdIMggRalYMAFXnRFe3Psg==" }, "@aws-sdk/types": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.523.0.tgz", - "integrity": "sha512-AqGIu4u+SxPiUuNBp2acCVcq80KDUFjxe6e3cMTvKWTzCbrVk1AXv0dAaJnCmdkWIha6zJDWxpIk/aL4EGhZ9A==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.535.0.tgz", + "integrity": "sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==" }, "@aws-sdk/util-endpoints": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.525.0.tgz", - "integrity": "sha512-DIW7WWU5tIGkeeKX6NJUyrEIdWMiqjLQG3XBzaUj+ufIENwNjdAHhlD8l2vX7Yr3JZRT6yN/84wBCj7Tw1xd1g==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.535.0.tgz", + "integrity": "sha512-c8TlaQsiPchOOmTTR6qvHCO2O7L7NJwlKWAoQJ2GqWDZuC5es/fyuF2rp1h+ZRrUVraUomS0YdGkAmaDC7hJQg==" }, "@aws-sdk/util-locate-window": { - "version": "3.495.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.495.0.tgz", - "integrity": "sha512-MfaPXT0kLX2tQaR90saBT9fWQq2DHqSSJRzW+MZWsmF+y5LGCOhO22ac/2o6TKSQm7h0HRc2GaADqYYYor62yg==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.535.0.tgz", + "integrity": "sha512-PHJ3SL6d2jpcgbqdgiPxkXpu7Drc2PYViwxSIqvvMKhDwzSB1W3mMvtpzwKM4IE7zLFodZo0GKjJ9AsoXndXhA==" }, "@aws-sdk/util-user-agent-browser": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.523.0.tgz", - "integrity": "sha512-6ZRNdGHX6+HQFqTbIA5+i8RWzxFyxsZv8D3soRfpdyWIKkzhSz8IyRKXRciwKBJDaC7OX2jzGE90wxRQft27nA==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.535.0.tgz", + "integrity": "sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==" }, "@aws-sdk/util-user-agent-node": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.525.0.tgz", - "integrity": "sha512-88Wjt4efyUSBGcyIuh1dvoMqY1k15jpJc5A/3yi67clBQEFsu9QCodQCQPqmRjV3VRcMtBOk+jeCTiUzTY5dRQ==" + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.535.0.tgz", + "integrity": "sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==" }, "@aws-sdk/util-utf8-browser": { "version": "3.259.0", @@ -204,214 +204,214 @@ "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==" }, "@mongodb-js/saslprep": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz", - "integrity": "sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==" + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.5.tgz", + "integrity": "sha512-XLNOMH66KhJzUJNwT/qlMnS4WsNDWD5ASdyaSH3EtK+F4r/CFGa3jT4GNi4mfOitGvWXtdLgQJkQjxSVrio+jA==" }, "@smithy/abort-controller": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.1.3.tgz", - "integrity": "sha512-c2aYH2Wu1RVE3rLlVgg2kQOBJGM0WbjReQi5DnPTm2Zb7F0gk7J2aeQeaX2u/lQZoHl6gv8Oac7mt9alU3+f4A==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz", + "integrity": "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==" }, "@smithy/config-resolver": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.1.4.tgz", - "integrity": "sha512-AW2WUZmBAzgO3V3ovKtsUbI3aBNMeQKFDumoqkNxaVDWF/xfnxAWqBKDr/NuG7c06N2Rm4xeZLPiJH/d+na0HA==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.2.0.tgz", + "integrity": "sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==" }, "@smithy/core": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.3.5.tgz", - "integrity": "sha512-Rrc+e2Jj6Gu7Xbn0jvrzZlSiP2CZocIOfZ9aNUA82+1sa6GBnxqL9+iZ9EKHeD9aqD1nU8EK4+oN2EiFpSv7Yw==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.4.0.tgz", + "integrity": "sha512-uu9ZDI95Uij4qk+L6kyFjdk11zqBkcJ3Lv0sc6jZrqHvLyr0+oeekD3CnqMafBn/5PRI6uv6ulW3kNLRBUHeVw==" }, "@smithy/credential-provider-imds": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.2.4.tgz", - "integrity": "sha512-DdatjmBZQnhGe1FhI8gO98f7NmvQFSDiZTwC3WMvLTCKQUY+Y1SVkhJqIuLu50Eb7pTheoXQmK+hKYUgpUWsNA==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.3.0.tgz", + "integrity": "sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==" }, "@smithy/eventstream-codec": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.1.3.tgz", - "integrity": "sha512-rGlCVuwSDv6qfKH4/lRxFjcZQnIE0LZ3D4lkMHg7ZSltK9rA74r0VuGSvWVQ4N/d70VZPaniFhp4Z14QYZsa+A==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.2.0.tgz", + "integrity": "sha512-8janZoJw85nJmQZc4L8TuePp2pk1nxLgkxIR0TUjKJ5Dkj5oelB9WtiSSGXCQvNsJl0VSTvK/2ueMXxvpa9GVw==" }, "@smithy/fetch-http-handler": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.4.3.tgz", - "integrity": "sha512-Fn/KYJFo6L5I4YPG8WQb2hOmExgRmNpVH5IK2zU3JKrY5FKW7y9ar5e0BexiIC9DhSKqKX+HeWq/Y18fq7Dkpw==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.5.0.tgz", + "integrity": "sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==" }, "@smithy/hash-node": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.1.3.tgz", - "integrity": "sha512-FsAPCUj7VNJIdHbSxMd5uiZiF20G2zdSDgrgrDrHqIs/VMxK85Vqk5kMVNNDMCZmMezp6UKnac0B4nAyx7HJ9g==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.2.0.tgz", + "integrity": "sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==" }, "@smithy/invalid-dependency": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.1.3.tgz", - "integrity": "sha512-wkra7d/G4CbngV4xsjYyAYOvdAhahQje/WymuQdVEnXFExJopEu7fbL5AEAlBPgWHXwu94VnCSG00gVzRfExyg==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.2.0.tgz", + "integrity": "sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==" }, "@smithy/is-array-buffer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.1.1.tgz", - "integrity": "sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==" }, "@smithy/middleware-content-length": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.1.3.tgz", - "integrity": "sha512-aJduhkC+dcXxdnv5ZpM3uMmtGmVFKx412R1gbeykS5HXDmRU6oSsyy2SoHENCkfOGKAQOjVE2WVqDJibC0d21g==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.2.0.tgz", + "integrity": "sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==" }, "@smithy/middleware-endpoint": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.4.4.tgz", - "integrity": "sha512-4yjHyHK2Jul4JUDBo2sTsWY9UshYUnXeb/TAK/MTaPEb8XQvDmpwSFnfIRDU45RY1a6iC9LCnmJNg/yHyfxqkw==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.5.0.tgz", + "integrity": "sha512-OBhI9ZEAG8Xen0xsFJwwNOt44WE2CWkfYIxTognC8x42Lfsdf0VN/wCMqpdkySMDio/vts10BiovAxQp0T0faA==" }, "@smithy/middleware-retry": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.1.4.tgz", - "integrity": "sha512-Cyolv9YckZTPli1EkkaS39UklonxMd08VskiuMhURDjC0HHa/AD6aK/YoD21CHv9s0QLg0WMLvk9YeLTKkXaFQ==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.2.0.tgz", + "integrity": "sha512-PsjDOLpbevgn37yJbawmfVoanru40qVA8UEf2+YA1lvOefmhuhL6ZbKtGsLAWDRnE1OlAmedsbA/htH6iSZjNA==" }, "@smithy/middleware-serde": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.1.3.tgz", - "integrity": "sha512-s76LId+TwASrHhUa9QS4k/zeXDUAuNuddKklQzRgumbzge5BftVXHXIqL4wQxKGLocPwfgAOXWx+HdWhQk9hTg==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.3.0.tgz", + "integrity": "sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==" }, "@smithy/middleware-stack": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.1.3.tgz", - "integrity": "sha512-opMFufVQgvBSld/b7mD7OOEBxF6STyraVr1xel1j0abVILM8ALJvRoFbqSWHGmaDlRGIiV9Q5cGbWi0sdiEaLQ==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.2.0.tgz", + "integrity": "sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==" }, "@smithy/node-config-provider": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.2.4.tgz", - "integrity": "sha512-nqazHCp8r4KHSFhRQ+T0VEkeqvA0U+RhehBSr1gunUuNW3X7j0uDrWBxB2gE9eutzy6kE3Y7L+Dov/UXT871vg==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.3.0.tgz", + "integrity": "sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==" }, "@smithy/node-http-handler": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.4.1.tgz", - "integrity": "sha512-HCkb94soYhJMxPCa61wGKgmeKpJ3Gftx1XD6bcWEB2wMV1L9/SkQu/6/ysKBnbOzWRE01FGzwrTxucHypZ8rdg==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.5.0.tgz", + "integrity": "sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==" }, "@smithy/property-provider": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.1.3.tgz", - "integrity": "sha512-bMz3se+ySKWNrgm7eIiQMa2HO/0fl2D0HvLAdg9pTMcpgp4SqOAh6bz7Ik6y7uQqSrk4rLjIKgbQ6yzYgGehCQ==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.2.0.tgz", + "integrity": "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==" }, "@smithy/protocol-http": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.2.1.tgz", - "integrity": "sha512-KLrQkEw4yJCeAmAH7hctE8g9KwA7+H2nSJwxgwIxchbp/L0B5exTdOQi9D5HinPLlothoervGmhpYKelZ6AxIA==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz", + "integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==" }, "@smithy/querystring-builder": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.1.3.tgz", - "integrity": "sha512-kFD3PnNqKELe6m9GRHQw/ftFFSZpnSeQD4qvgDB6BQN6hREHELSosVFUMPN4M3MDKN2jAwk35vXHLoDrNfKu0A==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.2.0.tgz", + "integrity": "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==" }, "@smithy/querystring-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.1.3.tgz", - "integrity": "sha512-3+CWJoAqcBMR+yvz6D+Fc5VdoGFtfenW6wqSWATWajrRMGVwJGPT3Vy2eb2bnMktJc4HU4bpjeovFa566P3knQ==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.2.0.tgz", + "integrity": "sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==" }, "@smithy/service-error-classification": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.3.tgz", - "integrity": "sha512-iUrpSsem97bbXHHT/v3s7vaq8IIeMo6P6cXdeYHrx0wOJpMeBGQF7CB0mbJSiTm3//iq3L55JiEm8rA7CTVI8A==" + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.5.tgz", + "integrity": "sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==" }, "@smithy/shared-ini-file-loader": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.3.4.tgz", - "integrity": "sha512-CiZmPg9GeDKbKmJGEFvJBsJcFnh0AQRzOtQAzj1XEa8N/0/uSN/v1LYzgO7ry8hhO8+9KB7+DhSW0weqBra4Aw==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.4.0.tgz", + "integrity": "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==" }, "@smithy/signature-v4": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.1.3.tgz", - "integrity": "sha512-Jq4iPPdCmJojZTsPePn4r1ULShh6ONkokLuxp1Lnk4Sq7r7rJp4HlA1LbPBq4bD64TIzQezIpr1X+eh5NYkNxw==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.2.0.tgz", + "integrity": "sha512-+B5TNzj/fRZzVW3z8UUJOkNx15+4E0CLuvJmJUA1JUIZFp3rdJ/M2H5r2SqltaVPXL0oIxv/6YK92T9TsFGbFg==" }, "@smithy/smithy-client": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.4.2.tgz", - "integrity": "sha512-ntAFYN51zu3N3mCd95YFcFi/8rmvm//uX+HnK24CRbI6k5Rjackn0JhgKz5zOx/tbNvOpgQIwhSX+1EvEsBLbA==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.5.0.tgz", + "integrity": "sha512-DDXWHWdimtS3y/Kw1Jo46KQ0ZYsDKcldFynQERUGBPDpkW1lXOTHy491ALHjwfiBQvzsVKVxl5+ocXNIgJuX4g==" }, "@smithy/types": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.10.1.tgz", - "integrity": "sha512-hjQO+4ru4cQ58FluQvKKiyMsFg0A6iRpGm2kqdH8fniyNd2WyanoOsYJfMX/IFLuLxEoW6gnRkNZy1y6fUUhtA==" + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", + "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==" }, "@smithy/url-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.1.3.tgz", - "integrity": "sha512-X1NRA4WzK/ihgyzTpeGvI9Wn45y8HmqF4AZ/FazwAv8V203Ex+4lXqcYI70naX9ETqbqKVzFk88W6WJJzCggTQ==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.2.0.tgz", + "integrity": "sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==" }, "@smithy/util-base64": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.1.1.tgz", - "integrity": "sha512-UfHVpY7qfF/MrgndI5PexSKVTxSZIdz9InghTFa49QOvuu9I52zLPLUHXvHpNuMb1iD2vmc6R+zbv/bdMipR/g==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.3.0.tgz", + "integrity": "sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==" }, "@smithy/util-body-length-browser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.1.1.tgz", - "integrity": "sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.2.0.tgz", + "integrity": "sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==" }, "@smithy/util-body-length-node": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.2.1.tgz", - "integrity": "sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.3.0.tgz", + "integrity": "sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==" }, "@smithy/util-buffer-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.1.1.tgz", - "integrity": "sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==" }, "@smithy/util-config-provider": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.2.1.tgz", - "integrity": "sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.3.0.tgz", + "integrity": "sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==" }, "@smithy/util-defaults-mode-browser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.1.4.tgz", - "integrity": "sha512-J6XAVY+/g7jf03QMnvqPyU+8jqGrrtXoKWFVOS+n1sz0Lg8HjHJ1ANqaDN+KTTKZRZlvG8nU5ZrJOUL6VdwgcQ==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.2.0.tgz", + "integrity": "sha512-2okTdZaCBvOJszAPU/KSvlimMe35zLOKbQpHhamFJmR7t95HSe0K3C92jQPjKY3PmDBD+7iMkOnuW05F5OlF4g==" }, "@smithy/util-defaults-mode-node": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.2.3.tgz", - "integrity": "sha512-ttUISrv1uVOjTlDa3nznX33f0pthoUlP+4grhTvOzcLhzArx8qHB94/untGACOG3nlf8vU20nI2iWImfzoLkYA==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.3.0.tgz", + "integrity": "sha512-hfKXnNLmsW9cmLb/JXKIvtuO6Cf4SuqN5PN1C2Ru/TBIws+m1wSgb+A53vo0r66xzB6E82inKG2J7qtwdi+Kkw==" }, "@smithy/util-endpoints": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.1.4.tgz", - "integrity": "sha512-/qAeHmK5l4yQ4/bCIJ9p49wDe9rwWtOzhPHblu386fwPNT3pxmodgcs9jDCV52yK9b4rB8o9Sj31P/7Vzka1cg==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.2.0.tgz", + "integrity": "sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==" }, "@smithy/util-hex-encoding": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.1.1.tgz", - "integrity": "sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.2.0.tgz", + "integrity": "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==" }, "@smithy/util-middleware": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.1.3.tgz", - "integrity": "sha512-/+2fm7AZ2ozl5h8wM++ZP0ovE9/tiUUAHIbCfGfb3Zd3+Dyk17WODPKXBeJ/TnK5U+x743QmA0xHzlSm8I/qhw==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.2.0.tgz", + "integrity": "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==" }, "@smithy/util-retry": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.1.3.tgz", - "integrity": "sha512-Kbvd+GEMuozbNUU3B89mb99tbufwREcyx2BOX0X2+qHjq6Gvsah8xSDDgxISDwcOHoDqUWO425F0Uc/QIRhYkg==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.2.0.tgz", + "integrity": "sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==" }, "@smithy/util-stream": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.1.3.tgz", - "integrity": "sha512-HvpEQbP8raTy9n86ZfXiAkf3ezp1c3qeeO//zGqwZdrfaoOpGKQgF2Sv1IqZp7wjhna7pvczWaGUHjcOPuQwKw==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.2.0.tgz", + "integrity": "sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==" }, "@smithy/util-uri-escape": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.1.1.tgz", - "integrity": "sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz", + "integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==" }, "@smithy/util-utf8": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.1.1.tgz", - "integrity": "sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==" }, "@types/node": { - "version": "20.11.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", - "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==" + "version": "20.11.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", + "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==" }, "@types/webidl-conversions": { "version": "7.0.3", diff --git a/packages/npm-mongo/package.js b/packages/npm-mongo/package.js index 3a4d710691..7c02cfc222 100644 --- a/packages/npm-mongo/package.js +++ b/packages/npm-mongo/package.js @@ -3,7 +3,7 @@ Package.describe({ summary: "Wrapper around the mongo npm package", - version: '4.16.1-beta300.6', + version: '4.16.1-beta300.7', documentation: null }); diff --git a/packages/oauth-encryption/package.js b/packages/oauth-encryption/package.js index 6f6fd6cc6c..c23c5ba105 100644 --- a/packages/oauth-encryption/package.js +++ b/packages/oauth-encryption/package.js @@ -1,11 +1,11 @@ Package.describe({ summary: "Encrypt account secrets stored in the database", - version: '1.3.3-beta300.6', + version: '1.3.3-beta300.7', }); Package.onUse(api => { api.use('ecmascript', 'server'); - api.use("modules@0.19.1-beta300.6", "server"); + api.use("modules@0.19.1-beta300.7", "server"); api.use("ejson@1.1.3", "server"); api.mainModule("encrypt.js", "server"); api.export("OAuthEncryption", "server"); diff --git a/packages/oauth/package.js b/packages/oauth/package.js index 22a5a10b42..1ca8e65495 100644 --- a/packages/oauth/package.js +++ b/packages/oauth/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth-based services", - version: '3.0.0-beta300.6', + version: '3.0.0-beta300.7', }); Package.onUse(api => { diff --git a/packages/oauth1/package.js b/packages/oauth1/package.js index 922f2e0a5f..cb00cc9dd2 100644 --- a/packages/oauth1/package.js +++ b/packages/oauth1/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth1-based login services", - version: '1.5.2-beta300.6', + version: '1.5.2-beta300.7', }); Package.onUse(api => { diff --git a/packages/oauth2/package.js b/packages/oauth2/package.js index 14c505b278..c94984a888 100644 --- a/packages/oauth2/package.js +++ b/packages/oauth2/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth2-based login services", - version: '1.3.3-beta300.6', + version: '1.3.3-beta300.7', }); Package.onUse(api => { diff --git a/packages/ordered-dict/package.js b/packages/ordered-dict/package.js index 2afce4e770..7838656699 100644 --- a/packages/ordered-dict/package.js +++ b/packages/ordered-dict/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Ordered traversable dictionary with a mutable ordering", - version: '1.2.0-beta300.6', + version: '1.2.0-beta300.7', documentation: null }); diff --git a/packages/package-stats-opt-out/package.js b/packages/package-stats-opt-out/package.js index 6401631a4d..21d495b161 100644 --- a/packages/package-stats-opt-out/package.js +++ b/packages/package-stats-opt-out/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Opt out of sending package stats", - version: '1.0.8-beta300.6' + version: '1.0.8-beta300.7' }); Package.onUse(function (api) { diff --git a/packages/package-version-parser/package.js b/packages/package-version-parser/package.js index 1e66bd8b9c..a586d601ca 100644 --- a/packages/package-version-parser/package.js +++ b/packages/package-version-parser/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Parses Meteor Smart Package version strings", - version: "3.2.2-beta300.6" + version: "3.2.2-beta300.7" }); Npm.depends({ diff --git a/packages/promise/package.js b/packages/promise/package.js index 6188fb5e46..3bddcbca09 100644 --- a/packages/promise/package.js +++ b/packages/promise/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "promise", - version: '1.0.0-beta300.6', + version: '1.0.0-beta300.7', summary: "ECMAScript 2015 Promise polyfill with Fiber support", git: "https://github.com/meteor/promise", documentation: "README.md" diff --git a/packages/random/package.js b/packages/random/package.js index e2b7448d24..a3ce4abc97 100644 --- a/packages/random/package.js +++ b/packages/random/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Random number generator and utilities', - version: '1.2.2-beta300.6', + version: '1.2.2-beta300.7', }); Package.onUse(function (api) { diff --git a/packages/rate-limit/package.js b/packages/rate-limit/package.js index 741d16fdad..7140a4b537 100644 --- a/packages/rate-limit/package.js +++ b/packages/rate-limit/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'rate-limit', - version: '1.1.2-beta300.6', + version: '1.1.2-beta300.7', // Brief, one-line summary of the package. summary: 'An algorithm for rate limiting anything', // URL to the Git repository containing the source code for this package. diff --git a/packages/react-fast-refresh/package.js b/packages/react-fast-refresh/package.js index e7e26c229e..3a73302d26 100644 --- a/packages/react-fast-refresh/package.js +++ b/packages/react-fast-refresh/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'react-fast-refresh', - version: '0.2.8-beta300.6', + version: '0.2.8-beta300.7', summary: 'Automatically update React components with HMR', documentation: 'README.md', devOnly: true, diff --git a/packages/reactive-dict/package.js b/packages/reactive-dict/package.js index ade0c5f0f7..b1614b742c 100644 --- a/packages/reactive-dict/package.js +++ b/packages/reactive-dict/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Reactive dictionary", - version: '1.3.2-beta300.6' + version: '1.3.2-beta300.7' }); Package.onUse(function (api) { diff --git a/packages/reactive-var/package.js b/packages/reactive-var/package.js index 35ab4ca5ed..ebd3b2172a 100644 --- a/packages/reactive-var/package.js +++ b/packages/reactive-var/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Reactive variable", - version: '1.0.13-beta300.6' + version: '1.0.13-beta300.7' }); Package.onUse(function (api) { diff --git a/packages/reload-safetybelt/package.js b/packages/reload-safetybelt/package.js index 80f1f0a860..d95d3b9019 100644 --- a/packages/reload-safetybelt/package.js +++ b/packages/reload-safetybelt/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Reload safety belt for multi-server deployments", - version: '2.0.0-beta300.6', + version: '2.0.0-beta300.7', }); Package.onUse(function (api) { diff --git a/packages/reload/package.js b/packages/reload/package.js index 8d1fb6e7e1..5068835de6 100644 --- a/packages/reload/package.js +++ b/packages/reload/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Reload the page while preserving application state.", - version: '1.3.2-beta300.6' + version: '1.3.2-beta300.7' }); Package.onUse(function (api) { diff --git a/packages/retry/package.js b/packages/retry/package.js index 6101f82fdc..63fecfeb70 100644 --- a/packages/retry/package.js +++ b/packages/retry/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Retry logic with exponential backoff", - version: '1.1.1-beta300.6' + version: '1.1.1-beta300.7' }); Package.onUse(function (api) { diff --git a/packages/routepolicy/package.js b/packages/routepolicy/package.js index ca0aa4dabc..9bc28b377e 100644 --- a/packages/routepolicy/package.js +++ b/packages/routepolicy/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "route policy declarations", - version: '1.1.2-beta300.6' + version: '1.1.2-beta300.7' }); Package.onUse(function (api) { diff --git a/packages/server-render/package.js b/packages/server-render/package.js index 1e27342dd4..7f872b9869 100644 --- a/packages/server-render/package.js +++ b/packages/server-render/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "server-render", - version: "0.4.2-beta300.6", + version: "0.4.2-beta300.7", summary: "Generic support for server-side rendering in Meteor apps", documentation: "README.md" }); diff --git a/packages/service-configuration/package.js b/packages/service-configuration/package.js index bdc96a01f5..911ff24870 100644 --- a/packages/service-configuration/package.js +++ b/packages/service-configuration/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Manage the configuration for third-party services', - version: '1.3.2-beta300.6', + version: '1.3.2-beta300.7', }); Package.onUse(function(api) { diff --git a/packages/session/package.js b/packages/session/package.js index 4a9d80b1e7..f61b4be1f8 100644 --- a/packages/session/package.js +++ b/packages/session/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Session variable", - version: '1.2.2-beta300.6' + version: '1.2.2-beta300.7' }); Package.onUse(function (api) { diff --git a/packages/sha/package.js b/packages/sha/package.js index 1a13dc1523..b31419ab1d 100644 --- a/packages/sha/package.js +++ b/packages/sha/package.js @@ -1,5 +1,5 @@ Package.describe({ - version: '1.0.10-beta300.6', + version: '1.0.10-beta300.7', summary: 'SHA256 implementation', git: 'https://github.com/meteor/meteor' }); diff --git a/packages/shell-server/package.js b/packages/shell-server/package.js index cf788819d6..955664683b 100644 --- a/packages/shell-server/package.js +++ b/packages/shell-server/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "shell-server", - version: '0.6.0-beta300.6', + version: '0.6.0-beta300.7', summary: "Server-side component of the `meteor shell` command.", documentation: "README.md" }); diff --git a/packages/socket-stream-client/package.js b/packages/socket-stream-client/package.js index 1839fc8cb0..a032162665 100644 --- a/packages/socket-stream-client/package.js +++ b/packages/socket-stream-client/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "socket-stream-client", - version: '0.5.2-beta300.6', + version: '0.5.2-beta300.7', summary: "Provides the ClientStream abstraction used by ddp-client", documentation: "README.md" }); diff --git a/packages/standard-minifier-css/package.js b/packages/standard-minifier-css/package.js index 1387ca0ba0..f5282266c0 100644 --- a/packages/standard-minifier-css/package.js +++ b/packages/standard-minifier-css/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'standard-minifier-css', - version: '1.9.3-beta300.6', + version: '1.9.3-beta300.7', summary: 'Standard css minifier used with Meteor apps by default.', documentation: 'README.md', }); diff --git a/packages/standard-minifier-js/package.js b/packages/standard-minifier-js/package.js index fec34d0db1..61e29e46d8 100644 --- a/packages/standard-minifier-js/package.js +++ b/packages/standard-minifier-js/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'standard-minifier-js', - version: '3.0.0-beta300.6', + version: '3.0.0-beta300.7', summary: 'Standard javascript minifiers used with Meteor apps by default.', documentation: 'README.md', }); diff --git a/packages/static-html/package.js b/packages/static-html/package.js index d7d0c00e14..8fdf5f1624 100644 --- a/packages/static-html/package.js +++ b/packages/static-html/package.js @@ -1,14 +1,14 @@ Package.describe({ name: 'static-html', summary: "Define static page content in .html files", - version: '1.3.3-beta300.6', + version: '1.3.3-beta300.7', git: 'https://github.com/meteor/meteor.git' }); Package.registerBuildPlugin({ name: "compileStaticHtmlBatch", use: [ - 'ecmascript@0.16.8-beta300.6', + 'ecmascript@0.16.8-beta300.7', 'caching-html-compiler@2.0.0-alpha300.16', 'templating-tools@2.0.0-alpha300.16' ], diff --git a/packages/test-helpers/package.js b/packages/test-helpers/package.js index ba3338f39b..cf2dde7bbd 100644 --- a/packages/test-helpers/package.js +++ b/packages/test-helpers/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Utility functions for tests", - version: '2.0.0-beta300.6', + version: '2.0.0-beta300.7', }); Package.onUse(function (api) { diff --git a/packages/test-in-browser/package.js b/packages/test-in-browser/package.js index 4a76578f5e..b4f2375472 100644 --- a/packages/test-in-browser/package.js +++ b/packages/test-in-browser/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Run tests interactively in the browser", - version: '1.4.0-beta300.6', + version: '1.4.0-beta300.7', documentation: null }); diff --git a/packages/test-in-console/package.js b/packages/test-in-console/package.js index cb2fe9b17d..725f02a92d 100644 --- a/packages/test-in-console/package.js +++ b/packages/test-in-console/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Run tests noninteractively, with results going to the console.', - version: '2.0.0-beta300.6', + version: '2.0.0-beta300.7', }); Package.onUse(function(api) { diff --git a/packages/tinytest/package.js b/packages/tinytest/package.js index 0577eacf91..9d0b0dc856 100644 --- a/packages/tinytest/package.js +++ b/packages/tinytest/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Tiny testing framework", - version: '2.0.0-beta300.6', + version: '2.0.0-beta300.7', }); Npm.depends({ diff --git a/packages/tracker/package.js b/packages/tracker/package.js index b657d336f8..e2f7190bbf 100644 --- a/packages/tracker/package.js +++ b/packages/tracker/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Dependency tracker to allow reactive callbacks", - version: '1.3.3-beta300.6', + version: '1.3.3-beta300.7', }); Package.onUse(function (api) { diff --git a/packages/twitter-config-ui/package.js b/packages/twitter-config-ui/package.js index c36fe74fc1..db565e5b34 100644 --- a/packages/twitter-config-ui/package.js +++ b/packages/twitter-config-ui/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Blaze configuration templates for Twitter OAuth.", - version: '1.0.2-beta300.6', + version: '1.0.2-beta300.7', }); Package.onUse(function(api) { diff --git a/packages/twitter-oauth/package.js b/packages/twitter-oauth/package.js index 3b31ceb7f4..4812d5b27e 100644 --- a/packages/twitter-oauth/package.js +++ b/packages/twitter-oauth/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Twitter OAuth flow", - version: '1.3.4-beta300.6' + version: '1.3.4-beta300.7' }); Package.onUse(function(api) { diff --git a/packages/typescript/package.js b/packages/typescript/package.js index 10f4199145..96b9a25a82 100644 --- a/packages/typescript/package.js +++ b/packages/typescript/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'typescript', - version: '5.3.3-beta300.6', + version: '5.4.3-beta300.7', summary: 'Compiler plugin that compiles TypeScript and ECMAScript in .ts and .tsx files', documentation: 'README.md', diff --git a/packages/underscore/package.js b/packages/underscore/package.js index 4af51fd167..db5401156c 100644 --- a/packages/underscore/package.js +++ b/packages/underscore/package.js @@ -1,7 +1,7 @@ Package.describe({ summary: "Collection of small helpers: _.map, _.each, ...", - version: '1.0.14-beta300.6', + version: '1.0.14-beta300.7', // next beta should go to 1.6.2-beta.300.7 }); Npm.depends({ diff --git a/packages/underscore/underscore.js b/packages/underscore/underscore.js index b7788b3a4b..6a9e39fe09 100644 --- a/packages/underscore/underscore.js +++ b/packages/underscore/underscore.js @@ -529,7 +529,7 @@ var rest = slice.call(arguments, 1); return _.filter(_.uniq(array), function(item) { return _.every(rest, function(other) { - return _.contains(other, item) >= 0; + return _.contains(other, item); }); }); }; diff --git a/packages/webapp-hashing/package.js b/packages/webapp-hashing/package.js index 6a3700d120..52bd2af192 100644 --- a/packages/webapp-hashing/package.js +++ b/packages/webapp-hashing/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Used internally by WebApp. Knows how to hash programs from manifests.", - version: '1.1.2-beta300.6' + version: '1.1.2-beta300.7' }); Package.onUse(function(api) { diff --git a/packages/webapp/.npm/package/npm-shrinkwrap.json b/packages/webapp/.npm/package/npm-shrinkwrap.json index 1a4c7bcf15..6e81033885 100644 --- a/packages/webapp/.npm/package/npm-shrinkwrap.json +++ b/packages/webapp/.npm/package/npm-shrinkwrap.json @@ -32,14 +32,14 @@ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" }, "@types/node": { - "version": "20.11.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", - "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==" + "version": "20.11.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", + "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==" }, "@types/qs": { - "version": "6.9.12", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.12.tgz", - "integrity": "sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg==" + "version": "6.9.14", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.14.tgz", + "integrity": "sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==" }, "@types/range-parser": { "version": "1.2.7", @@ -278,9 +278,9 @@ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==" }, "http-errors": { "version": "2.0.0", @@ -368,9 +368,9 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "nan": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", - "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", + "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==" }, "negotiator": { "version": "0.6.3", @@ -492,9 +492,9 @@ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==" }, "set-function-length": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", - "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==" }, "setprototypeof": { "version": "1.2.0", diff --git a/packages/webapp/package.js b/packages/webapp/package.js index 64f4ee405d..06b0fc2e4c 100644 --- a/packages/webapp/package.js +++ b/packages/webapp/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Serves a Meteor app over HTTP', - version: '2.0.0-beta300.6', + version: '2.0.0-beta300.7', }); Npm.depends({ diff --git a/packages/weibo-config-ui/package.js b/packages/weibo-config-ui/package.js index 895fdaafcd..2f9ce392df 100644 --- a/packages/weibo-config-ui/package.js +++ b/packages/weibo-config-ui/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Blaze configuration templates for Weibo OAuth.", - version: '1.0.3-beta300.6', + version: '1.0.3-beta300.7', }); Package.onUse(api => { diff --git a/scripts/admin/meteor-release-experimental.json b/scripts/admin/meteor-release-experimental.json index d42fecb2a4..8640780ebd 100644 --- a/scripts/admin/meteor-release-experimental.json +++ b/scripts/admin/meteor-release-experimental.json @@ -1,6 +1,6 @@ { "track": "METEOR", - "version": "3.0-beta.6", + "version": "3.0-beta.7", "recommended": false, "official": false, "description": "Meteor experimental release" diff --git a/scripts/dev-bundle-tool-package.js b/scripts/dev-bundle-tool-package.js index 6f631c21e0..25473e1130 100644 --- a/scripts/dev-bundle-tool-package.js +++ b/scripts/dev-bundle-tool-package.js @@ -13,7 +13,7 @@ var packageJson = { npm: "10.2.4", "node-gyp": "9.4.0", "@mapbox/node-pre-gyp": "1.0.11", - typescript: "5.3.3", + typescript: "5.4.3", "@meteorjs/babel": "7.19.0-beta.4", // Keep the versions of these packages consistent with the versions // found in dev-bundle-server-package.js. diff --git a/tools/cli/commands.js b/tools/cli/commands.js index 25e526d9fb..e6b8f43100 100644 --- a/tools/cli/commands.js +++ b/tools/cli/commands.js @@ -607,7 +607,6 @@ export const AVAILABLE_SKELETONS = [ DEFAULT_SKELETON, "typescript", "vue", - 'vue-2', "svelte", "tailwind", "chakra-ui", @@ -623,7 +622,6 @@ const SKELETON_INFO = { "react": "To create a basic React-based app", "typescript": "To create an app using TypeScript and React", "vue": "To create a basic Vue3-based app", - "vue-2": "To create a basic Vue2-based app", "svelte": "To create a basic Svelte app", "tailwind": "To create an app using React and Tailwind", "chakra-ui": "To create an app Chakra UI and React", @@ -644,7 +642,6 @@ main.registerCommand({ blaze: { type: Boolean }, react: { type: Boolean }, vue: { type: Boolean }, - 'vue-2': { type: Boolean }, typescript: { type: Boolean }, apollo: { type: Boolean }, svelte: { type: Boolean }, diff --git a/tools/cli/example-repositories.js b/tools/cli/example-repositories.js index 7bf472ec0d..f1d67151ef 100644 --- a/tools/cli/example-repositories.js +++ b/tools/cli/example-repositories.js @@ -1,5 +1,4 @@ export const EXAMPLE_REPOSITORIES = { - "vue-2": { "repo": "https://github.com/meteor/skel-vue-2" }, "vue": { "repo": "https://github.com/meteor/skel-vue" }, "react": { "repo": "https://github.com/meteor/skel-react" }, "full": { "repo": "https://github.com/meteor/skel-full" }, diff --git a/tools/cli/help.txt b/tools/cli/help.txt index 6820167a1e..1eff3661b6 100644 --- a/tools/cli/help.txt +++ b/tools/cli/help.txt @@ -152,7 +152,7 @@ Options: >>> create Create a new project. -Usage: meteor create [--release ] [--bare|--minimal|--full|--react|--vue|--vue-2|--apollo|--svelte|--blaze|--tailwind|--chakra-ui|--solid] +Usage: meteor create [--release ] [--bare|--minimal|--full|--react|--vue|--apollo|--svelte|--blaze|--tailwind|--chakra-ui|--solid] meteor create [--release ] --example [] meteor create [--release ] --from [] meteor create --list @@ -188,7 +188,6 @@ Options: --full Create a fully scaffolded app. --react Create a basic react-based app, same as default. --vue Create a basic vue3-based app. - --vue-2 Create a basic vue2-based app. --apollo Create a basic apollo-based app. --svelte Create a basic svelte-based app. --typescript Create a basic Typescript React-based app. diff --git a/tools/static-assets/README.md b/tools/static-assets/README.md index 1884abb1d6..6cef051b69 100644 --- a/tools/static-assets/README.md +++ b/tools/static-assets/README.md @@ -44,10 +44,6 @@ Similar to `skel`, `skel-solid` is copied on `meteor create --solid` command. Similar to `skel`, `skel-vue` is copied on `meteor create --vue` command. -## skel-vue-2 - Package Skeleton - -Similar to `skel`, `skel-vue-2` is copied on `meteor create --vue-2` command. - ## server - Bundled App's Bootstrap The `server` folder is copied by Isobuild when the app is bundled (on diff --git a/tools/static-assets/skel-apollo/.meteor/packages b/tools/static-assets/skel-apollo/.meteor/packages index 0addfea192..718d356e3d 100644 --- a/tools/static-assets/skel-apollo/.meteor/packages +++ b/tools/static-assets/skel-apollo/.meteor/packages @@ -19,4 +19,4 @@ hot-module-replacement # Update client in development without reloading the pag ~prototype~ static-html # Define static page content in .html files apollo # Basic Apollo integration for Meteor apps -swydo:graphql # Import .graphql files +compat:graphql # Import .graphql files diff --git a/tools/static-assets/skel-chakra-ui/.meteor/packages b/tools/static-assets/skel-chakra-ui/.meteor/packages index 90ce4b06dd..37f116fa2a 100644 --- a/tools/static-assets/skel-chakra-ui/.meteor/packages +++ b/tools/static-assets/skel-chakra-ui/.meteor/packages @@ -19,4 +19,4 @@ hot-module-replacement # Update client in development without reloading the pag ~prototype~ static-html # Define static page content in .html files -react-meteor-data # React higher-order component for reactively tracking Meteor data +react-meteor-data@3.0.0-beta300.1 # React higher-order component for reactively tracking Meteor data diff --git a/tools/static-assets/skel-react/.meteor/packages b/tools/static-assets/skel-react/.meteor/packages index 90ce4b06dd..37f116fa2a 100644 --- a/tools/static-assets/skel-react/.meteor/packages +++ b/tools/static-assets/skel-react/.meteor/packages @@ -19,4 +19,4 @@ hot-module-replacement # Update client in development without reloading the pag ~prototype~ static-html # Define static page content in .html files -react-meteor-data # React higher-order component for reactively tracking Meteor data +react-meteor-data@3.0.0-beta300.1 # React higher-order component for reactively tracking Meteor data diff --git a/tools/static-assets/skel-solid/.meteor/packages b/tools/static-assets/skel-solid/.meteor/packages index 492b563f76..8d50345989 100644 --- a/tools/static-assets/skel-solid/.meteor/packages +++ b/tools/static-assets/skel-solid/.meteor/packages @@ -19,4 +19,4 @@ hot-module-replacement # Update client in development without reloading the pag ~prototype~ static-html # Define static page content in .html files -vite:bundler +jorgenvatle:vite-bundler@2.0.0-beta.12 diff --git a/tools/static-assets/skel-solid/package.json b/tools/static-assets/skel-solid/package.json index 7e70da4e84..9ab02889ae 100644 --- a/tools/static-assets/skel-solid/package.json +++ b/tools/static-assets/skel-solid/package.json @@ -21,6 +21,7 @@ }, "devDependencies": { "babel-preset-solid": "^1.5.4", + "meteor-vite": "^1.10.2", "vite": "^3.0.9", "vite-plugin-solid": "^2.3.0", "vite-plugin-solid-svg": "^0.4.1" diff --git a/tools/static-assets/skel-tailwind/.meteor/packages b/tools/static-assets/skel-tailwind/.meteor/packages index 90ce4b06dd..37f116fa2a 100644 --- a/tools/static-assets/skel-tailwind/.meteor/packages +++ b/tools/static-assets/skel-tailwind/.meteor/packages @@ -19,4 +19,4 @@ hot-module-replacement # Update client in development without reloading the pag ~prototype~ static-html # Define static page content in .html files -react-meteor-data # React higher-order component for reactively tracking Meteor data +react-meteor-data@3.0.0-beta300.1 # React higher-order component for reactively tracking Meteor data diff --git a/tools/static-assets/skel-typescript/.meteor/packages b/tools/static-assets/skel-typescript/.meteor/packages index 033932891e..91e12d8bfe 100644 --- a/tools/static-assets/skel-typescript/.meteor/packages +++ b/tools/static-assets/skel-typescript/.meteor/packages @@ -19,5 +19,5 @@ hot-module-replacement # Update client in development without reloading the pag ~prototype~ static-html # Define static page content in .html files -react-meteor-data # React higher-order component for reactively tracking Meteor data +react-meteor-data@3.0.0-beta300.1 # React higher-order component for reactively tracking Meteor data zodern:types # Pull in type declarations from other Meteor packages diff --git a/tools/static-assets/skel-typescript/package.json b/tools/static-assets/skel-typescript/package.json index 39252afdd6..206eea8dad 100644 --- a/tools/static-assets/skel-typescript/package.json +++ b/tools/static-assets/skel-typescript/package.json @@ -18,7 +18,7 @@ "@types/node": "^18.16.5", "@types/react": "^18.2.5", "@types/react-dom": "^18.2.4", - "typescript": "^5.3.3" + "typescript": "^5.4.3" }, "meteor": { "mainModule": { diff --git a/tools/static-assets/skel-vue-2/.gitignore b/tools/static-assets/skel-vue-2/.gitignore deleted file mode 100644 index c2658d7d1b..0000000000 --- a/tools/static-assets/skel-vue-2/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/tools/static-assets/skel-vue-2/.meteor/.gitignore b/tools/static-assets/skel-vue-2/.meteor/.gitignore deleted file mode 100644 index 4083037423..0000000000 --- a/tools/static-assets/skel-vue-2/.meteor/.gitignore +++ /dev/null @@ -1 +0,0 @@ -local diff --git a/tools/static-assets/skel-vue-2/.meteor/packages b/tools/static-assets/skel-vue-2/.meteor/packages deleted file mode 100644 index 83be6b3a62..0000000000 --- a/tools/static-assets/skel-vue-2/.meteor/packages +++ /dev/null @@ -1,24 +0,0 @@ -# Meteor packages used by this project, one per line. -# Check this file (and the other files in this directory) into your repository. -# -# 'meteor add' and 'meteor remove' will edit this file for you, -# but you can also edit it by hand. - -meteor-base # Packages every Meteor app needs to have -mobile-experience # Packages for a great mobile UX -mongo # The database Meteor supports right now -reactive-var # Reactive variable for tracker - -standard-minifier-css # CSS minifier run for production mode -standard-minifier-js # JS minifier run for production mode -es5-shim # ECMAScript 5 compatibility for older browsers -ecmascript # Enable ECMAScript2015+ syntax in app code -typescript # Enable TypeScript syntax in .ts and .tsx modules -shell-server # Server-side component of the `meteor shell` command - -tracker # Dependency tracker to allow reactive callbacks -static-html # Define static page content in .html files -akryum:vue-component # Vue-CLI template to publish components - -meteortesting:mocha # A package for writing and running your meteor app and package tests with mocha -johanbrook:publication-collector # Test a Meteor publication by collecting its output diff --git a/tools/static-assets/skel-vue-2/.meteor/platforms b/tools/static-assets/skel-vue-2/.meteor/platforms deleted file mode 100644 index efeba1b50c..0000000000 --- a/tools/static-assets/skel-vue-2/.meteor/platforms +++ /dev/null @@ -1,2 +0,0 @@ -server -browser diff --git a/tools/static-assets/skel-vue-2/client/main.html b/tools/static-assets/skel-vue-2/client/main.html deleted file mode 100644 index 7a78efb67d..0000000000 --- a/tools/static-assets/skel-vue-2/client/main.html +++ /dev/null @@ -1,8 +0,0 @@ - - ~name~ - - - - -
- diff --git a/tools/static-assets/skel-vue-2/client/main.js b/tools/static-assets/skel-vue-2/client/main.js deleted file mode 100644 index 665c6aa1b1..0000000000 --- a/tools/static-assets/skel-vue-2/client/main.js +++ /dev/null @@ -1,12 +0,0 @@ -import Vue from 'vue' - -import '../imports/ui/plugins' - -import App from '../imports/ui/App.vue' - -Meteor.startup(() => { - new Vue({ - el: '#app', - ...App, - }) -}) diff --git a/tools/static-assets/skel-vue-2/imports/api/collections/Links.js b/tools/static-assets/skel-vue-2/imports/api/collections/Links.js deleted file mode 100644 index de6a43c4a4..0000000000 --- a/tools/static-assets/skel-vue-2/imports/api/collections/Links.js +++ /dev/null @@ -1,3 +0,0 @@ -import { Mongo } from 'meteor/mongo'; - -export default new Mongo.Collection('links'); diff --git a/tools/static-assets/skel-vue-2/imports/api/collections/Links.tests.js b/tools/static-assets/skel-vue-2/imports/api/collections/Links.tests.js deleted file mode 100644 index ce178512d0..0000000000 --- a/tools/static-assets/skel-vue-2/imports/api/collections/Links.tests.js +++ /dev/null @@ -1,24 +0,0 @@ -// Tests for the behavior of the links collection -// -// https://guide.meteor.com/testing.html - -import { Meteor } from 'meteor/meteor'; -import { assert } from 'chai'; -import Links from './Links.js'; - -if (Meteor.isServer) { - describe('links collection', function () { - it('insert correctly', function () { - const linkId = Links.insert({ - title: 'meteor homepage', - url: 'https://www.meteor.com', - }); - const added = Links.find({ _id: linkId }); - const collectionName = added._getCollectionName(); - const count = added.count(); - - assert.equal(collectionName, 'links'); - assert.equal(count, 1); - }); - }); -} diff --git a/tools/static-assets/skel-vue-2/imports/api/fixtures.js b/tools/static-assets/skel-vue-2/imports/api/fixtures.js deleted file mode 100644 index daa11f32f1..0000000000 --- a/tools/static-assets/skel-vue-2/imports/api/fixtures.js +++ /dev/null @@ -1,31 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import Links from './collections/Links.js'; - -async function insertLink({ title, url }) { - await Links.insertAsync({ title, url, createdAt: new Date() }); -} - -Meteor.startup(async () => { - // If the Links collection is empty, add some data. - if (await Links.find().countAsync() === 0) { - await insertLink({ - title: 'Do the Tutorial', - url: 'https://vue-tutorial.meteor.com/', - }); - - await insertLink({ - title: 'Follow the Guide', - url: 'https://guide.meteor.com', - }); - - await insertLink({ - title: 'Read the Docs', - url: 'https://docs.meteor.com', - }); - - await insertLink({ - title: 'Discussions', - url: 'https://forums.meteor.com', - }); - } -}); diff --git a/tools/static-assets/skel-vue-2/imports/api/methods/createLink.js b/tools/static-assets/skel-vue-2/imports/api/methods/createLink.js deleted file mode 100644 index 876f710978..0000000000 --- a/tools/static-assets/skel-vue-2/imports/api/methods/createLink.js +++ /dev/null @@ -1,16 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { check } from 'meteor/check'; -import Links from '../collections/Links.js'; - -Meteor.methods({ - 'createLink'(title, url) { - check(url, String); - check(title, String); - - return Links.insert({ - url, - title, - createdAt: new Date(), - }); - }, -}); diff --git a/tools/static-assets/skel-vue-2/imports/api/methods/createLink.tests.js b/tools/static-assets/skel-vue-2/imports/api/methods/createLink.tests.js deleted file mode 100644 index d899a7338f..0000000000 --- a/tools/static-assets/skel-vue-2/imports/api/methods/createLink.tests.js +++ /dev/null @@ -1,20 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { assert } from 'chai'; -import Links from '../collections/Links.js'; -import './methods.js'; - -if (Meteor.isServer) { - describe('method: createLink', function () { - beforeEach(function () { - Links.remove({}); - }); - - it('can add a new link', function () { - const addLink = Meteor.server.method_handlers['createLink']; - - addLink.apply({}, ['meteor.com', 'https://www.meteor.com']); - - assert.equal(Links.find().count(), 1); - }); - }); -} diff --git a/tools/static-assets/skel-vue-2/imports/api/methods/index.js b/tools/static-assets/skel-vue-2/imports/api/methods/index.js deleted file mode 100644 index c52403a2e8..0000000000 --- a/tools/static-assets/skel-vue-2/imports/api/methods/index.js +++ /dev/null @@ -1 +0,0 @@ -import './createLink' diff --git a/tools/static-assets/skel-vue-2/imports/api/publications/index.js b/tools/static-assets/skel-vue-2/imports/api/publications/index.js deleted file mode 100644 index d161b580e7..0000000000 --- a/tools/static-assets/skel-vue-2/imports/api/publications/index.js +++ /dev/null @@ -1 +0,0 @@ -import './links' diff --git a/tools/static-assets/skel-vue-2/imports/api/publications/links.js b/tools/static-assets/skel-vue-2/imports/api/publications/links.js deleted file mode 100644 index f085d75045..0000000000 --- a/tools/static-assets/skel-vue-2/imports/api/publications/links.js +++ /dev/null @@ -1,6 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import Links from '../collections/Links.js'; - -Meteor.publish('links', function () { - return Links.find(); -}); diff --git a/tools/static-assets/skel-vue-2/imports/api/publications/links.tests.js b/tools/static-assets/skel-vue-2/imports/api/publications/links.tests.js deleted file mode 100644 index 37f337c869..0000000000 --- a/tools/static-assets/skel-vue-2/imports/api/publications/links.tests.js +++ /dev/null @@ -1,22 +0,0 @@ -import { assert } from 'chai' -import { PublicationCollector } from 'meteor/johanbrook:publication-collector' -import Links from '../collections/Links.js' -import './publications.js' - -describe('Publish links', function () { - beforeEach(function () { - Links.remove({}) - Links.insert({ - title: 'meteor homepage', - url: 'https://www.meteor.com' - }) - }) - - it('sends all links', function (done) { - const collector = new PublicationCollector() - collector.collect('links', (collections) => { - assert.equal(collections.links.length, 1) - done() - }) - }) -}) diff --git a/tools/static-assets/skel-vue-2/imports/ui/App.vue b/tools/static-assets/skel-vue-2/imports/ui/App.vue deleted file mode 100644 index e126098ccb..0000000000 --- a/tools/static-assets/skel-vue-2/imports/ui/App.vue +++ /dev/null @@ -1,26 +0,0 @@ - - - - - diff --git a/tools/static-assets/skel-vue-2/imports/ui/components/Hello.vue b/tools/static-assets/skel-vue-2/imports/ui/components/Hello.vue deleted file mode 100644 index 64947eb06a..0000000000 --- a/tools/static-assets/skel-vue-2/imports/ui/components/Hello.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - - - diff --git a/tools/static-assets/skel-vue-2/imports/ui/components/Info.vue b/tools/static-assets/skel-vue-2/imports/ui/components/Info.vue deleted file mode 100644 index b52b2be838..0000000000 --- a/tools/static-assets/skel-vue-2/imports/ui/components/Info.vue +++ /dev/null @@ -1,59 +0,0 @@ - - - - - diff --git a/tools/static-assets/skel-vue-2/imports/ui/plugins.js b/tools/static-assets/skel-vue-2/imports/ui/plugins.js deleted file mode 100644 index eb976c92e5..0000000000 --- a/tools/static-assets/skel-vue-2/imports/ui/plugins.js +++ /dev/null @@ -1,4 +0,0 @@ -import Vue from 'vue' -import VueMeteorTracker from 'vue-meteor-tracker' - -Vue.use(VueMeteorTracker) diff --git a/tools/static-assets/skel-vue-2/package.json b/tools/static-assets/skel-vue-2/package.json deleted file mode 100644 index affdeee60e..0000000000 --- a/tools/static-assets/skel-vue-2/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "~name~", - "private": true, - "scripts": { - "start": "meteor run", - "test": "meteor test --once --driver-package meteortesting:mocha", - "test-app": "TEST_WATCH=1 meteor test --full-app --driver-package meteortesting:mocha", - "visualize": "meteor --production --extra-packages bundle-visualizer" - }, - "dependencies": { - "@babel/runtime": "^7.23.5", - "meteor-node-stubs": "^1.2.7", - "vue": "^2.7.15", - "vue-meteor-tracker": "^3.0.0-beta.7" - }, - "meteor": { - "mainModule": { - "client": "client/main.js", - "server": "server/main.js" - }, - "testModule": "tests/main.js" - } -} diff --git a/tools/static-assets/skel-vue-2/server/main.js b/tools/static-assets/skel-vue-2/server/main.js deleted file mode 100644 index 42950618b6..0000000000 --- a/tools/static-assets/skel-vue-2/server/main.js +++ /dev/null @@ -1,3 +0,0 @@ -import '../imports/api/fixtures' -import '../imports/api/methods' -import '../imports/api/publications' diff --git a/tools/static-assets/skel-vue-2/tests/main.js b/tools/static-assets/skel-vue-2/tests/main.js deleted file mode 100644 index 6d2a32e09d..0000000000 --- a/tools/static-assets/skel-vue-2/tests/main.js +++ /dev/null @@ -1,20 +0,0 @@ -import assert from "assert"; - -describe("skel", function () { - it("package.json has correct name", async function () { - const { name } = await import("../package.json"); - assert.strictEqual(name, "skel"); - }); - - if (Meteor.isClient) { - it("client is not server", function () { - assert.strictEqual(Meteor.isServer, false); - }); - } - - if (Meteor.isServer) { - it("server is not client", function () { - assert.strictEqual(Meteor.isClient, false); - }); - } -}); diff --git a/tools/static-assets/skel-vue/.meteor/packages b/tools/static-assets/skel-vue/.meteor/packages index 3ae6a18b5f..c6c928e0d1 100644 --- a/tools/static-assets/skel-vue/.meteor/packages +++ b/tools/static-assets/skel-vue/.meteor/packages @@ -18,6 +18,6 @@ shell-server # Server-side component of the `meteor shell` com hot-module-replacement # Update client in development without reloading the page static-html # Define static page content in .html files -jorgenvatle:vite-bundler +jorgenvatle:vite-bundler@2.0.0-beta.12 ~prototype~ diff --git a/tools/tests/apps/ecmascript-regression/.meteor/packages b/tools/tests/apps/ecmascript-regression/.meteor/packages index 7ae3a26358..2c648654f5 100644 --- a/tools/tests/apps/ecmascript-regression/.meteor/packages +++ b/tools/tests/apps/ecmascript-regression/.meteor/packages @@ -13,7 +13,7 @@ standard-minifier-css@1.9.3-alpha300.11 # CSS minifier run for production mod standard-minifier-js@3.0.0-alpha300.10 # JS minifier run for production mode es5-shim@4.8.0 # ECMAScript 5 compatibility for older browsers ecmascript@0.16.8-alpha300.11 # Enable ECMAScript2015+ syntax in app code -typescript@5.3.3-beta300.6 # Enable TypeScript syntax in .ts and .tsx modules +typescript@5.3.3-beta300.7 # Enable TypeScript syntax in .ts and .tsx modules shell-server@0.6.0-alpha300.11 # Server-side component of the `meteor shell` command hot-module-replacement@0.5.4-alpha300.11 # Update client in development without reloading the page diff --git a/v3-docs/docs/.vitepress/theme/theme.css b/v3-docs/docs/.vitepress/theme/theme.css index 9fb81aef42..9b35d1dafc 100644 --- a/v3-docs/docs/.vitepress/theme/theme.css +++ b/v3-docs/docs/.vitepress/theme/theme.css @@ -554,4 +554,6 @@ background: var(--vp-c-brand-soft); } - +:root { + --vp-z-index-nav: 100; +} diff --git a/v3-docs/docs/about/install.md b/v3-docs/docs/about/install.md index e503b6402f..cde7e6e4e0 100644 --- a/v3-docs/docs/about/install.md +++ b/v3-docs/docs/about/install.md @@ -6,13 +6,6 @@ You need to install the Meteor command line tool to create, run, and manage your ## Prerequisites {#prereqs} -### Node.js version {#prereqs-node} - -> Meteor 2.x runs on a deprecated Node.js version (14). Meteor 3.0 is in progress, and it will run on the latest Node.js version. For more information, please consult our [migration guide](https://guide.meteor.com/3.0-migration.html). - -- Node.js version >= 10 and <= 14 is required. -- We recommend you using [nvm](https://github.com/nvm-sh/nvm) or [Volta](https://volta.sh/) for managing Node.js versions. - ### Operating System (OS) {#prereqs-os} @@ -33,12 +26,10 @@ You need to install the Meteor command line tool to create, run, and manage your Install the latest official version of Meteor.js from your terminal by running one of the commands below. You can check our [changelog](https://docs.meteor.com/changelog.html) for the release notes. -> Run `node -v` to ensure you are using Node.js 14. Meteor 3.0 is in progress, and it will run on the latest Node.js version. - For Windows, Linux and OS X, you can run the following command: ```bash -npm install -g meteor +npx meteor ``` An alternative for Linux and OS X, is to install Meteor by using curl: @@ -77,9 +68,11 @@ In some cases you can get this error `npm WARN checkPermissions Missing write ac By default, the Meteor installer adds its install path (by default, `~/.meteor/`) to your PATH by updating either your `.bashrc`, `.bash_profile`, or `.zshrc` as appropriate. To disable this behavior, install Meteor by running: ```bash -npm install -g meteor --ignore-meteor-setup-exec-path +npm install -g meteor --ignore-meteor-setup-exec-path --foreground-script ``` + + (or by setting the environment variable `npm_config_ignore_meteor_setup_exec_path=true`) diff --git a/v3-docs/docs/about/what-is.md b/v3-docs/docs/about/what-is.md index f57316e1cf..d6049d073e 100644 --- a/v3-docs/docs/about/what-is.md +++ b/v3-docs/docs/about/what-is.md @@ -1,6 +1,5 @@ -> Meteor 2.x runs on a deprecated Node.js version (14). Meteor 3.0 is in progress, and it will run on the latest Node.js version. For more information, please consult our [migration guide](https://guide.meteor.com/3.0-migration.html). # What is Meteor? {#what-is-meteor} diff --git a/v3-docs/docs/api/accounts.md b/v3-docs/docs/api/accounts.md index 039d4c42ad..e505003a6b 100644 --- a/v3-docs/docs/api/accounts.md +++ b/v3-docs/docs/api/accounts.md @@ -779,7 +779,7 @@ id. On the client, you must pass `password` and at least one of `username` or `email` — enough information for the user to be able to log in again later. If there are existing users with a username or email only differing in case, `createUser` will fail. The callback's `error.reason` will be `'Username already exists.'` or `'Email already exists.'` In the latter case, the user can then either [login](accounts.html#Meteor-loginWithPassword) or [reset their password](#Accounts-resetPassword). -On the server, you do not need to specify `password`, but the user will not be able to log in until it has a password (eg, set with [`Accounts.setPassword`](#Accounts-setPassword)). To create an account without a password on the server and still let the user pick their own password, call `createUser` with the `email` option and then call [`Accounts.sendEnrollmentEmail`](#Accounts-sendEnrollmentEmail). This will send the user an email with a link to set their initial password. +On the server, you do not need to specify `password`, but the user will not be able to log in until it has a password (eg, set with [`Accounts.setPasswordAsync`](#Accounts-setPasswordAsync)). To create an account without a password on the server and still let the user pick their own password, call `createUser` with the `email` option and then call [`Accounts.sendEnrollmentEmail`](#Accounts-sendEnrollmentEmail). This will send the user an email with a link to set their initial password. By default the `profile` option is added directly to the new user document. To override this behavior, use [`Accounts.onCreateUser`](#Accounts-onCreateUser). @@ -845,7 +845,7 @@ If the user trying to reset the password has 2FA enabled, this error will be thr - "Changed password, but user not logged in because 2FA is enabled [2fa-enabled]": No longer signing in the user automatically if the user has 2FA enabled. - + diff --git a/v3-docs/docs/api/assets.md b/v3-docs/docs/api/assets.md index 8f7c76fb53..42e80af68f 100644 --- a/v3-docs/docs/api/assets.md +++ b/v3-docs/docs/api/assets.md @@ -7,8 +7,8 @@ assets, which are located in the `private` subdirectory of an application's tree. Assets are not processed as source files and are copied directly into your application's bundle. - - + + Static server assets are included by placing them in the application's `private` @@ -17,7 +17,7 @@ directory called `nested` with a file called `data.txt` inside it, then server code can read `data.txt` by running: ```js -const data = Assets.getText('nested/data.txt'); +const data = await Assets.getTextAsync('nested/data.txt'); ``` Note: Packages can only access their own assets. If you need to read the assets of a different package, or of the enclosing app, you need to get a reference to that package's `Assets` object. diff --git a/v3-docs/docs/api/collections.md b/v3-docs/docs/api/collections.md index 9db185defd..4fab3b7e92 100644 --- a/v3-docs/docs/api/collections.md +++ b/v3-docs/docs/api/collections.md @@ -191,8 +191,8 @@ Read more about collections and how to use them in the [Collections](http://guid `find` returns a cursor. It does not immediately access the database or return documents. Cursors provide `fetch` to return all matching documents, `map` and -`forEach` to iterate over all matching documents, and `observe` and -`observeChanges` to register callbacks when the set of matching documents +`forEach` to iterate over all matching documents, and `observeAsync` and +`observeChangesAsync` to register callbacks when the set of matching documents changes. Cursors also implement ES2015's [iteration protocols](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols). ::: warning @@ -212,7 +212,7 @@ disable this behavior, pass `{reactive: false}` as an option to `find`. Note that when `fields` are specified, only changes to the included -fields will trigger callbacks in `observe`, `observeChanges` and +fields will trigger callbacks in `observeAsync`, `observeChangesAsync` and invalidations in reactive computations using this cursor. Careful use of `fields` allows for more fine-grained reactivity for computations that don't depend on an entire document. @@ -756,13 +756,13 @@ For server/isomorphic usage see [countAsync](#Mongo-Cursor-countAsync). Async version of [`count`](#Mongo-Cursor-count) that return a `Promise`. - + Establishes a _live query_ that invokes callbacks when the result of the query changes. The callbacks receive the entire contents of the document that was affected, as well as its old contents, if applicable. If you only need to receive the fields that changed, see -[`observeChanges`](#Mongo-Cursor-observeChanges). +[`observeChangesAsync`](#Mongo-Cursor-observeChangesAsync). `callbacks` may have the following functions as properties: @@ -792,21 +792,20 @@ Use `added`, `changed`, and `removed` when you don't care about the order of the documents in the result set. They are more efficient than `addedAt`, `changedAt`, and `removedAt`. -Before `observe` returns, `added` (or `addedAt`) will be called zero +Before `observeAsync` returns, `added` (or `addedAt`) will be called zero or more times to deliver the initial results of the query. -`observe` returns a live query handle, which is an object with a `stop` method. +`observeAsync` returns a promise of the live query handle, which is an object with a `stop` method. Call `stop` with no arguments to stop calling the callback functions and tear down the query. **The query will run forever until you call this.** If -`observe` is called from a `Tracker.autorun` computation, it is automatically +`observeAsync` is called from a `Tracker.autorun` computation, it is automatically stopped when the computation is rerun or stopped. -Live query handles have also `isReady` and `isReadyPromise` properties that -indicate if the cursor is ready to be observed. +::: tip +`observeAsync` is recommended to keep code isomorphism in the client and server. -::: warning -`observe` in server returns a promise. +`observe` stays sync for easier client-side handler management. ::: (If the cursor was created with the option `reactive` set to false, it will @@ -814,11 +813,11 @@ only deliver the initial results and will not call any further callbacks; it is not necessary to call `stop` on the handle.) - + Establishes a _live query_ that invokes callbacks when the result of -the query changes. In contrast to [`observe`](#Mongo-Cursor-observe), -`observeChanges` provides only the difference between the old and new +the query changes. In contrast to [`observeAsync`](#Mongo-Cursor-observeAsync), +`observeChangesAsync` provides only the difference between the old and new result set, not the entire contents of the document that changed. `callbacks` may have the following functions as properties: @@ -845,31 +844,30 @@ result set, not the entire contents of the document that changed. The document identified by `id` changed its position in the result set, and now appears before the document identified by `before`. -`observeChanges` is significantly more efficient if you do not use +`observeChangesAsync` is significantly more efficient if you do not use `addedBefore` or `movedBefore`. -Before `observeChanges` returns, `added` (or `addedBefore`) will be called +Before `observeChangesAsync` returns, `added` (or `addedBefore`) will be called zero or more times to deliver the initial results of the query. -`observeChanges` returns a live query handle, which is an object with a `stop` +`observeChangesAsync` returns a promise of the live query handle, which is an object with a `stop` method. Call `stop` with no arguments to stop calling the callback functions and tear down the query. **The query will run forever until you call this.** If -`observeChanges` is called from a `Tracker.autorun` computation, it is automatically +`observeChangesAsync` is called from a `Tracker.autorun` computation, it is automatically stopped when the computation is rerun or stopped. -Live query handles have also `isReady` and `isReadyPromise` properties that -indicate if the cursor is ready to be observed. +::: tip +`observeChangesAsync` is recommended to keep code isomorphism in the client and server. -::: warning -`observe` in server returns a promise. +`observeChanges` stays sync for easier client-side handler management. ::: (If the cursor was created with the option `reactive` set to false, it will only deliver the initial results and will not call any further callbacks; it is not necessary to call `stop` on the handle.) -> Unlike `observe`, `observeChanges` does not provide absolute position +> Unlike `observeAsync`, `observeChangesAsync` does not provide absolute position > information (that is, `atIndex` positions rather than `before` > positions.) This is for efficiency. @@ -880,7 +878,7 @@ Example: let count = 0; const cursor = Users.find({ admin: true, onlineNow: true }); -const handle = cursor.observeChanges({ +const handle = await cursor.observeChangesAsync({ added(id, user) { count += 1; console.log(`${user.name} brings the total to ${count} admins.`); @@ -1035,7 +1033,7 @@ With one exception, it is not possible to mix inclusion and exclusion styles: the keys must either be all 1 or all 0. The exception is that you may specify `_id: 0` in an inclusion specifier, which will leave `_id` out of the result object as well. However, such field specifiers can not be used with -[`observeChanges`](#Mongo-Cursor-observeChanges), [`observe`](#Mongo-Cursor-observe), cursors returned +[`observeChangesAsync`](#Mongo-Cursor-observeChangesAsync), [`observeAsync`](#Mongo-Cursor-observeAsync), cursors returned from a [publish function](./meteor.md#Meteor-publish). They may be used with [`fetch`](#Mongo-Cursor-fetch), [`findOne`](#Mongo-Collection-findOne), [`forEach`](#Mongo-Cursor-forEach), and [`map`](#Mongo-Cursor-map). diff --git a/v3-docs/docs/api/meteor.md b/v3-docs/docs/api/meteor.md index 4afc4ce547..1040e2e25b 100644 --- a/v3-docs/docs/api/meteor.md +++ b/v3-docs/docs/api/meteor.md @@ -52,7 +52,7 @@ Meteor.startup(() => { ::: - + diff --git a/v3-docs/docs/api/package.md b/v3-docs/docs/api/package.md index 387906174d..606f0c8f1a 100644 --- a/v3-docs/docs/api/package.md +++ b/v3-docs/docs/api/package.md @@ -315,7 +315,7 @@ methods are available: - `addAsset` - Add a file to serve as-is to the browser or to include on the browser, depending on the target. On the web, it will be served at the exact path requested. For server targets, it can be retrieved using - `Assets.getText` or `Assets.getBinary`. + `Assets.getTextAsync` or `Assets.getBinaryAsync`. - `addHtml` - Works in web targets only. Add markup to the `head` or `body` section of the document. - `hmrAvailable` - Returns true if the file can be updated with HMR. Among other things, diff --git a/v3-docs/docs/cli/index.md b/v3-docs/docs/cli/index.md index 97af8129a5..40ecd77a1a 100644 --- a/v3-docs/docs/cli/index.md +++ b/v3-docs/docs/cli/index.md @@ -277,13 +277,6 @@ You can also use Vue 3 with Vite by using the [jorgenvatle:meteor-vite](https:// package. You can see an example on the [meteor-vite](https://github.com/JorgenVatle/meteor-vite/tree/release/examples/vue) repository. - -## --vue-2 {vue-2} - -The command `meteor create --vue-2 app-name` creates a Meteor app with [Vue 2](https://v2.vuejs.org/) and -[MongoDB](https://www.mongodb.com/). To create a complete app, including testing and deployment, follow the -[Vue 2 tutorial](https://vue-tutorial.meteor.com/). - Npm packages included: `@babel/runtime`, `meteor-node-stubs`, `vue`, `vue-meteor-tracker`. Meteor packages included: `meteor-base`, `mobile-experience`, `mongo`, `reactive-var`, `standard-minifier-css`, diff --git a/v3-docs/docs/generators/changelog/versions/3.0.md b/v3-docs/docs/generators/changelog/versions/3.0.md index ae1edaf6ec..a22f83e5cf 100644 --- a/v3-docs/docs/generators/changelog/versions/3.0.md +++ b/v3-docs/docs/generators/changelog/versions/3.0.md @@ -61,7 +61,7 @@ - `Accounts.generateVerificationToken` - `Accounts.generateResetToken` - `Accounts.forgotPassword` - - `Accounts.setPassword` + - `Accounts.setPassword` -- no longer exists, you should use Accounts.setPasswordAsync [PR](https://github.com/meteor/meteor/pull/13030) - `Accounts.changePassword` - `Accounts.setUsername` - `Accounts.findUserByEmail` @@ -124,6 +124,10 @@ - Package was bumped due to a dependency update. No code changes were made. +- Build system: + - removed `Assets.getText` + - removed `Assets.getBinary` + - `blaze@3.0.0`: - Todo @@ -648,6 +652,9 @@ #### New Public API +- `Build system` [PR](https://github.com/meteor/meteor/pull/13030): + - Assets.getTextAsync + - Assets.getBinaryAsync - `accounts-base`: (2.9+) diff --git a/v3-docs/docs/history.md b/v3-docs/docs/history.md index 5aee6fc1ac..d1e467c6f0 100644 --- a/v3-docs/docs/history.md +++ b/v3-docs/docs/history.md @@ -75,7 +75,7 @@ This is a complete history of changes for Meteor releases. - `Accounts.generateVerificationToken` - `Accounts.generateResetToken` - `Accounts.forgotPassword` - - `Accounts.setPassword` + - `Accounts.setPassword` -- no longer exists, you should use Accounts.setPasswordAsync [PR](https://github.com/meteor/meteor/pull/13030) - `Accounts.changePassword` - `Accounts.setUsername` - `Accounts.findUserByEmail` @@ -138,6 +138,10 @@ This is a complete history of changes for Meteor releases. - Package was bumped due to a dependency update. No code changes were made. +- Build system: + - removed `Assets.getText` + - removed `Assets.getBinary` + - `blaze@3.0.0`: - Todo @@ -662,6 +666,9 @@ This is a complete history of changes for Meteor releases. #### New Public API +- `Build system` [PR](https://github.com/meteor/meteor/pull/13030): + - Assets.getTextAsync + - Assets.getBinaryAsync - `accounts-base`: (2.9+) diff --git a/v3-docs/docs/package-lock.json b/v3-docs/docs/package-lock.json index e59ffd9eaa..55d9e175c4 100644 --- a/v3-docs/docs/package-lock.json +++ b/v3-docs/docs/package-lock.json @@ -10,7 +10,7 @@ "devDependencies": { "canonical-json": "^0.0.4", "jsdoc": "^4.0.2", - "vitepress": "1.0.0-rc.31" + "vitepress": "1.0.1" } }, "node_modules/@algolia/autocomplete-core": { @@ -59,138 +59,138 @@ } }, "node_modules/@algolia/cache-browser-local-storage": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.20.0.tgz", - "integrity": "sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.22.1.tgz", + "integrity": "sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.20.0" + "@algolia/cache-common": "4.22.1" } }, "node_modules/@algolia/cache-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.20.0.tgz", - "integrity": "sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.22.1.tgz", + "integrity": "sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA==", "dev": true }, "node_modules/@algolia/cache-in-memory": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.20.0.tgz", - "integrity": "sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.22.1.tgz", + "integrity": "sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.20.0" + "@algolia/cache-common": "4.22.1" } }, "node_modules/@algolia/client-account": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.20.0.tgz", - "integrity": "sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.22.1.tgz", + "integrity": "sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw==", "dev": true, "dependencies": { - "@algolia/client-common": "4.20.0", - "@algolia/client-search": "4.20.0", - "@algolia/transporter": "4.20.0" + "@algolia/client-common": "4.22.1", + "@algolia/client-search": "4.22.1", + "@algolia/transporter": "4.22.1" } }, "node_modules/@algolia/client-analytics": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.20.0.tgz", - "integrity": "sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.22.1.tgz", + "integrity": "sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg==", "dev": true, "dependencies": { - "@algolia/client-common": "4.20.0", - "@algolia/client-search": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" + "@algolia/client-common": "4.22.1", + "@algolia/client-search": "4.22.1", + "@algolia/requester-common": "4.22.1", + "@algolia/transporter": "4.22.1" } }, "node_modules/@algolia/client-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.20.0.tgz", - "integrity": "sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.22.1.tgz", + "integrity": "sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" + "@algolia/requester-common": "4.22.1", + "@algolia/transporter": "4.22.1" } }, "node_modules/@algolia/client-personalization": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.20.0.tgz", - "integrity": "sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.22.1.tgz", + "integrity": "sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ==", "dev": true, "dependencies": { - "@algolia/client-common": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" + "@algolia/client-common": "4.22.1", + "@algolia/requester-common": "4.22.1", + "@algolia/transporter": "4.22.1" } }, "node_modules/@algolia/client-search": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.20.0.tgz", - "integrity": "sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.22.1.tgz", + "integrity": "sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA==", "dev": true, "dependencies": { - "@algolia/client-common": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" + "@algolia/client-common": "4.22.1", + "@algolia/requester-common": "4.22.1", + "@algolia/transporter": "4.22.1" } }, "node_modules/@algolia/logger-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.20.0.tgz", - "integrity": "sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.22.1.tgz", + "integrity": "sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg==", "dev": true }, "node_modules/@algolia/logger-console": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.20.0.tgz", - "integrity": "sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.22.1.tgz", + "integrity": "sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA==", "dev": true, "dependencies": { - "@algolia/logger-common": "4.20.0" + "@algolia/logger-common": "4.22.1" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.20.0.tgz", - "integrity": "sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.22.1.tgz", + "integrity": "sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.20.0" + "@algolia/requester-common": "4.22.1" } }, "node_modules/@algolia/requester-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.20.0.tgz", - "integrity": "sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.22.1.tgz", + "integrity": "sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg==", "dev": true }, "node_modules/@algolia/requester-node-http": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.20.0.tgz", - "integrity": "sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.22.1.tgz", + "integrity": "sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.20.0" + "@algolia/requester-common": "4.22.1" } }, "node_modules/@algolia/transporter": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.20.0.tgz", - "integrity": "sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.22.1.tgz", + "integrity": "sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.20.0", - "@algolia/logger-common": "4.20.0", - "@algolia/requester-common": "4.20.0" + "@algolia/cache-common": "4.22.1", + "@algolia/logger-common": "4.22.1", + "@algolia/requester-common": "4.22.1" } }, "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", + "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -200,30 +200,30 @@ } }, "node_modules/@docsearch/css": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz", - "integrity": "sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.0.tgz", + "integrity": "sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==", "dev": true }, "node_modules/@docsearch/js": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.5.2.tgz", - "integrity": "sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.6.0.tgz", + "integrity": "sha512-QujhqINEElrkIfKwyyyTfbsfMAYCkylInLYMRqHy7PHc8xTBQCow73tlo/Kc7oIwBrCLf0P3YhjlOeV4v8hevQ==", "dev": true, "dependencies": { - "@docsearch/react": "3.5.2", + "@docsearch/react": "3.6.0", "preact": "^10.0.0" } }, "node_modules/@docsearch/react": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz", - "integrity": "sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.0.tgz", + "integrity": "sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==", "dev": true, "dependencies": { "@algolia/autocomplete-core": "1.9.3", "@algolia/autocomplete-preset-algolia": "1.9.3", - "@docsearch/css": "3.5.2", + "@docsearch/css": "3.6.0", "algoliasearch": "^4.19.1" }, "peerDependencies": { @@ -248,9 +248,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", "cpu": [ "ppc64" ], @@ -264,9 +264,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", "cpu": [ "arm" ], @@ -280,9 +280,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", "cpu": [ "arm64" ], @@ -296,9 +296,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", "cpu": [ "x64" ], @@ -312,9 +312,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", "cpu": [ "arm64" ], @@ -328,9 +328,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", "cpu": [ "x64" ], @@ -344,9 +344,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", "cpu": [ "arm64" ], @@ -360,9 +360,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", "cpu": [ "x64" ], @@ -376,9 +376,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", "cpu": [ "arm" ], @@ -392,9 +392,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", "cpu": [ "arm64" ], @@ -408,9 +408,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", "cpu": [ "ia32" ], @@ -424,9 +424,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", "cpu": [ "loong64" ], @@ -440,9 +440,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", "cpu": [ "mips64el" ], @@ -456,9 +456,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", "cpu": [ "ppc64" ], @@ -472,9 +472,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", "cpu": [ "riscv64" ], @@ -488,9 +488,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", "cpu": [ "s390x" ], @@ -504,9 +504,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", "cpu": [ "x64" ], @@ -520,9 +520,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", "cpu": [ "x64" ], @@ -536,9 +536,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", "cpu": [ "x64" ], @@ -552,9 +552,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", "cpu": [ "x64" ], @@ -568,9 +568,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", "cpu": [ "arm64" ], @@ -584,9 +584,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", "cpu": [ "ia32" ], @@ -600,9 +600,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", "cpu": [ "x64" ], @@ -634,9 +634,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", - "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz", + "integrity": "sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==", "cpu": [ "arm" ], @@ -647,9 +647,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", - "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz", + "integrity": "sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==", "cpu": [ "arm64" ], @@ -660,9 +660,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", - "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz", + "integrity": "sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==", "cpu": [ "arm64" ], @@ -673,9 +673,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", - "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz", + "integrity": "sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==", "cpu": [ "x64" ], @@ -686,9 +686,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", - "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz", + "integrity": "sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==", "cpu": [ "arm" ], @@ -699,9 +699,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", - "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz", + "integrity": "sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==", "cpu": [ "arm64" ], @@ -712,9 +712,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", - "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz", + "integrity": "sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==", "cpu": [ "arm64" ], @@ -725,9 +725,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", - "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz", + "integrity": "sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==", "cpu": [ "riscv64" ], @@ -738,9 +738,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", - "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.0.tgz", + "integrity": "sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==", "cpu": [ "x64" ], @@ -751,9 +751,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", - "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.0.tgz", + "integrity": "sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==", "cpu": [ "x64" ], @@ -764,9 +764,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", - "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz", + "integrity": "sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==", "cpu": [ "arm64" ], @@ -777,9 +777,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", - "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz", + "integrity": "sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==", "cpu": [ "ia32" ], @@ -790,9 +790,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", - "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz", + "integrity": "sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==", "cpu": [ "x64" ], @@ -802,21 +802,27 @@ "win32" ] }, + "node_modules/@shikijs/core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.2.0.tgz", + "integrity": "sha512-OlFvx+nyr5C8zpcMBnSGir0YPD6K11uYhouqhNmm1qLiis4GA7SsGtu07r9gKS9omks8RtQqHrJL4S+lqWK01A==", + "dev": true + }, + "node_modules/@shikijs/transformers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.2.0.tgz", + "integrity": "sha512-xKn7DtA65DQV4FOfYsrvqM80xOy2xuXnxWWKsZmHv1VII/IOuDUDsWDu3KnpeLH6wqNJWp1GRoNUsHR1aw/VhQ==", + "dev": true, + "dependencies": { + "shiki": "1.2.0" + } + }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, - "node_modules/@types/hast": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", - "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", - "dev": true, - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/@types/linkify-it": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", @@ -833,176 +839,183 @@ "@types/mdurl": "*" } }, - "node_modules/@types/mdast": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", - "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", - "dev": true, - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/@types/mdurl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==", "dev": true }, - "node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", - "dev": true - }, "node_modules/@types/web-bluetooth": { "version": "0.0.20", "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", "dev": true }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, "node_modules/@vitejs/plugin-vue": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz", - "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz", + "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==", "dev": true, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^18.0.0 || >=20.0.0" }, "peerDependencies": { - "vite": "^4.0.0 || ^5.0.0", + "vite": "^5.0.0", "vue": "^3.2.25" } }, "node_modules/@vue/compiler-core": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.15.tgz", - "integrity": "sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.21.tgz", + "integrity": "sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==", "dev": true, "dependencies": { - "@babel/parser": "^7.23.6", - "@vue/shared": "3.4.15", + "@babel/parser": "^7.23.9", + "@vue/shared": "3.4.21", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-dom": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.15.tgz", - "integrity": "sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz", + "integrity": "sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==", "dev": true, "dependencies": { - "@vue/compiler-core": "3.4.15", - "@vue/shared": "3.4.15" + "@vue/compiler-core": "3.4.21", + "@vue/shared": "3.4.21" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.15.tgz", - "integrity": "sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz", + "integrity": "sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==", "dev": true, "dependencies": { - "@babel/parser": "^7.23.6", - "@vue/compiler-core": "3.4.15", - "@vue/compiler-dom": "3.4.15", - "@vue/compiler-ssr": "3.4.15", - "@vue/shared": "3.4.15", + "@babel/parser": "^7.23.9", + "@vue/compiler-core": "3.4.21", + "@vue/compiler-dom": "3.4.21", + "@vue/compiler-ssr": "3.4.21", + "@vue/shared": "3.4.21", "estree-walker": "^2.0.2", - "magic-string": "^0.30.5", - "postcss": "^8.4.33", + "magic-string": "^0.30.7", + "postcss": "^8.4.35", "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.15.tgz", - "integrity": "sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz", + "integrity": "sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==", "dev": true, "dependencies": { - "@vue/compiler-dom": "3.4.15", - "@vue/shared": "3.4.15" + "@vue/compiler-dom": "3.4.21", + "@vue/shared": "3.4.21" } }, "node_modules/@vue/devtools-api": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", - "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==", - "dev": true - }, - "node_modules/@vue/reactivity": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.15.tgz", - "integrity": "sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==", + "version": "7.0.16", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.0.16.tgz", + "integrity": "sha512-fZG2CG8624qphMf4aj59zNHckMx1G3lxODUuyM9USKuLznXCh66TP+tEbPOCcml16hA0GizJ4D8w6F34hrfbcw==", "dev": true, "dependencies": { - "@vue/shared": "3.4.15" + "@vue/devtools-kit": "^7.0.16" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.0.16", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.0.16.tgz", + "integrity": "sha512-IA8SSGiZbNgOi4wLT3mRvd71Q9KE0KvMfGk6haa2GZ6bL2K/xMA8Fvvj3o1maspfUXrGcCXutaqbLqbGx/espQ==", + "dev": true, + "dependencies": { + "@vue/devtools-shared": "^7.0.16", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.0.16", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.0.16.tgz", + "integrity": "sha512-Lew4FrGjDjmanaUWSueNE1Rre83k7jQpttc17MaoVw0eARWU5DgZ1F/g9GNUMZXVjbP9rwE+LL3gd9XfXCfkvA==", + "dev": true, + "dependencies": { + "rfdc": "^1.3.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.21.tgz", + "integrity": "sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==", + "dev": true, + "dependencies": { + "@vue/shared": "3.4.21" } }, "node_modules/@vue/runtime-core": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.15.tgz", - "integrity": "sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.21.tgz", + "integrity": "sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==", "dev": true, "dependencies": { - "@vue/reactivity": "3.4.15", - "@vue/shared": "3.4.15" + "@vue/reactivity": "3.4.21", + "@vue/shared": "3.4.21" } }, "node_modules/@vue/runtime-dom": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.15.tgz", - "integrity": "sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz", + "integrity": "sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==", "dev": true, "dependencies": { - "@vue/runtime-core": "3.4.15", - "@vue/shared": "3.4.15", + "@vue/runtime-core": "3.4.21", + "@vue/shared": "3.4.21", "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.15.tgz", - "integrity": "sha512-3HYzaidu9cHjrT+qGUuDhFYvF/j643bHC6uUN9BgM11DVy+pM6ATsG6uPBLnkwOgs7BpJABReLmpL3ZPAsUaqw==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.21.tgz", + "integrity": "sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==", "dev": true, "dependencies": { - "@vue/compiler-ssr": "3.4.15", - "@vue/shared": "3.4.15" + "@vue/compiler-ssr": "3.4.21", + "@vue/shared": "3.4.21" }, "peerDependencies": { - "vue": "3.4.15" + "vue": "3.4.21" } }, "node_modules/@vue/shared": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.15.tgz", - "integrity": "sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.21.tgz", + "integrity": "sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==", "dev": true }, "node_modules/@vueuse/core": { - "version": "10.7.2", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.7.2.tgz", - "integrity": "sha512-AOyAL2rK0By62Hm+iqQn6Rbu8bfmbgaIMXcE3TSr7BdQ42wnSFlwIdPjInO62onYsEMK/yDMU8C6oGfDAtZ2qQ==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.9.0.tgz", + "integrity": "sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==", "dev": true, "dependencies": { "@types/web-bluetooth": "^0.0.20", - "@vueuse/metadata": "10.7.2", - "@vueuse/shared": "10.7.2", - "vue-demi": ">=0.14.6" + "@vueuse/metadata": "10.9.0", + "@vueuse/shared": "10.9.0", + "vue-demi": ">=0.14.7" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@vueuse/core/node_modules/vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", "dev": true, "hasInstallScript": true, "bin": { @@ -1026,14 +1039,14 @@ } }, "node_modules/@vueuse/integrations": { - "version": "10.7.2", - "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.7.2.tgz", - "integrity": "sha512-+u3RLPFedjASs5EKPc69Ge49WNgqeMfSxFn+qrQTzblPXZg6+EFzhjarS5edj2qAf6xQ93f95TUxRwKStXj/sQ==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.9.0.tgz", + "integrity": "sha512-acK+A01AYdWSvL4BZmCoJAcyHJ6EqhmkQEXbQLwev1MY7NBnS+hcEMx/BzVoR9zKI+UqEPMD9u6PsyAuiTRT4Q==", "dev": true, "dependencies": { - "@vueuse/core": "10.7.2", - "@vueuse/shared": "10.7.2", - "vue-demi": ">=0.14.6" + "@vueuse/core": "10.9.0", + "@vueuse/shared": "10.9.0", + "vue-demi": ">=0.14.7" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -1092,9 +1105,9 @@ } }, "node_modules/@vueuse/integrations/node_modules/vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", "dev": true, "hasInstallScript": true, "bin": { @@ -1118,30 +1131,30 @@ } }, "node_modules/@vueuse/metadata": { - "version": "10.7.2", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.7.2.tgz", - "integrity": "sha512-kCWPb4J2KGrwLtn1eJwaJD742u1k5h6v/St5wFe8Quih90+k2a0JP8BS4Zp34XUuJqS2AxFYMb1wjUL8HfhWsQ==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.9.0.tgz", + "integrity": "sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==", "dev": true, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@vueuse/shared": { - "version": "10.7.2", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.7.2.tgz", - "integrity": "sha512-qFbXoxS44pi2FkgFjPvF4h7c9oMDutpyBdcJdMYIMg9XyXli2meFMuaKn+UMgsClo//Th6+beeCgqweT/79BVA==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.9.0.tgz", + "integrity": "sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==", "dev": true, "dependencies": { - "vue-demi": ">=0.14.6" + "vue-demi": ">=0.14.7" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@vueuse/shared/node_modules/vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", "dev": true, "hasInstallScript": true, "bin": { @@ -1165,25 +1178,25 @@ } }, "node_modules/algoliasearch": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.20.0.tgz", - "integrity": "sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.22.1.tgz", + "integrity": "sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg==", "dev": true, "dependencies": { - "@algolia/cache-browser-local-storage": "4.20.0", - "@algolia/cache-common": "4.20.0", - "@algolia/cache-in-memory": "4.20.0", - "@algolia/client-account": "4.20.0", - "@algolia/client-analytics": "4.20.0", - "@algolia/client-common": "4.20.0", - "@algolia/client-personalization": "4.20.0", - "@algolia/client-search": "4.20.0", - "@algolia/logger-common": "4.20.0", - "@algolia/logger-console": "4.20.0", - "@algolia/requester-browser-xhr": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/requester-node-http": "4.20.0", - "@algolia/transporter": "4.20.0" + "@algolia/cache-browser-local-storage": "4.22.1", + "@algolia/cache-common": "4.22.1", + "@algolia/cache-in-memory": "4.22.1", + "@algolia/client-account": "4.22.1", + "@algolia/client-analytics": "4.22.1", + "@algolia/client-common": "4.22.1", + "@algolia/client-personalization": "4.22.1", + "@algolia/client-search": "4.22.1", + "@algolia/logger-common": "4.22.1", + "@algolia/logger-console": "4.22.1", + "@algolia/requester-browser-xhr": "4.22.1", + "@algolia/requester-common": "4.22.1", + "@algolia/requester-node-http": "4.22.1", + "@algolia/transporter": "4.22.1" } }, "node_modules/argparse": { @@ -1216,74 +1229,12 @@ "node": ">= 10" } }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "dev": true }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "dev": true, - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -1297,9 +1248,9 @@ } }, "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", "dev": true, "hasInstallScript": true, "bin": { @@ -1309,29 +1260,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" } }, "node_modules/escape-string-regexp": { @@ -1378,146 +1329,11 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "node_modules/hast-util-from-parse5": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", - "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "hastscript": "^8.0.0", - "property-information": "^6.0.0", - "vfile": "^6.0.0", - "vfile-location": "^5.0.0", - "web-namespaces": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-parse-selector": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", - "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.2.tgz", - "integrity": "sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "@ungap/structured-clone": "^1.0.0", - "hast-util-from-parse5": "^8.0.0", - "hast-util-to-parse5": "^8.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "parse5": "^7.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-html": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.0.tgz", - "integrity": "sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-raw": "^9.0.0", - "hast-util-whitespace": "^3.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-parse5": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", - "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hastscript": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", - "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^4.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/html-void-elements": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", - "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true }, "node_modules/js2xmlparser": { "version": "4.0.2", @@ -1592,9 +1408,9 @@ "dev": true }, "node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", + "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -1656,128 +1472,24 @@ "node": ">= 12" } }, - "node_modules/mdast-util-to-hast": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.1.0.tgz", - "integrity": "sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, - "node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, "node_modules/minisearch": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.3.0.tgz", "integrity": "sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==", "dev": true }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -1790,15 +1502,6 @@ "node": ">=10" } }, - "node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -1817,17 +1520,11 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true }, "node_modules/picocolors": { "version": "1.0.0", @@ -1836,9 +1533,9 @@ "dev": true }, "node_modules/postcss": { - "version": "8.4.33", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", - "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "dev": true, "funding": [ { @@ -1857,32 +1554,22 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" } }, "node_modules/preact": { - "version": "10.19.2", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.19.2.tgz", - "integrity": "sha512-UA9DX/OJwv6YwP9Vn7Ti/vF80XL+YA5H2l7BpCtUr3ya8LWHFzpiO5R+N7dN16ujpIxhekRFuOOF82bXX7K/lg==", + "version": "10.20.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.20.0.tgz", + "integrity": "sha512-wU7iZw2BjsaKDal3pDRDy/HpPB6cuFOnVUCcw9aIPKG98+ZrXx3F+szkos8BVME5bquyKDKvRlOJFG8kMkcAbg==", "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" } }, - "node_modules/property-information": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.0.tgz", - "integrity": "sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/requizzle": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz", @@ -1892,10 +1579,16 @@ "lodash": "^4.17.21" } }, + "node_modules/rfdc": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", + "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", + "dev": true + }, "node_modules/rollup": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", - "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz", + "integrity": "sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -1908,78 +1601,54 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.9.6", - "@rollup/rollup-android-arm64": "4.9.6", - "@rollup/rollup-darwin-arm64": "4.9.6", - "@rollup/rollup-darwin-x64": "4.9.6", - "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", - "@rollup/rollup-linux-arm64-gnu": "4.9.6", - "@rollup/rollup-linux-arm64-musl": "4.9.6", - "@rollup/rollup-linux-riscv64-gnu": "4.9.6", - "@rollup/rollup-linux-x64-gnu": "4.9.6", - "@rollup/rollup-linux-x64-musl": "4.9.6", - "@rollup/rollup-win32-arm64-msvc": "4.9.6", - "@rollup/rollup-win32-ia32-msvc": "4.9.6", - "@rollup/rollup-win32-x64-msvc": "4.9.6", + "@rollup/rollup-android-arm-eabi": "4.13.0", + "@rollup/rollup-android-arm64": "4.13.0", + "@rollup/rollup-darwin-arm64": "4.13.0", + "@rollup/rollup-darwin-x64": "4.13.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.13.0", + "@rollup/rollup-linux-arm64-gnu": "4.13.0", + "@rollup/rollup-linux-arm64-musl": "4.13.0", + "@rollup/rollup-linux-riscv64-gnu": "4.13.0", + "@rollup/rollup-linux-x64-gnu": "4.13.0", + "@rollup/rollup-linux-x64-musl": "4.13.0", + "@rollup/rollup-win32-arm64-msvc": "4.13.0", + "@rollup/rollup-win32-ia32-msvc": "4.13.0", + "@rollup/rollup-win32-x64-msvc": "4.13.0", "fsevents": "~2.3.2" } }, "node_modules/search-insights": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.11.0.tgz", - "integrity": "sha512-Uin2J8Bpm3xaZi9Y8QibSys6uJOFZ+REMrf42v20AA3FUDUrshKkMEP6liJbMAHCm71wO6ls4mwAf7a3gFVxLw==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.13.0.tgz", + "integrity": "sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==", "dev": true, "peer": true }, - "node_modules/shikiji": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/shikiji/-/shikiji-0.7.6.tgz", - "integrity": "sha512-KzEtvSGQtBvfwVIB70kOmIfl/5rz1LC8j+tvlHXsJKAIdONNQvG1at7ivUUq3xUctqgO6fsO3AGomUSh0F+wsQ==", + "node_modules/shiki": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.2.0.tgz", + "integrity": "sha512-xLhiTMOIUXCv5DqJ4I70GgQCtdlzsTqFLZWcMHHG3TAieBUbvEGthdrlPDlX4mL/Wszx9C6rEcxU6kMlg4YlxA==", "dev": true, "dependencies": { - "hast-util-to-html": "^9.0.0" - } - }, - "node_modules/shikiji-transformers": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/shikiji-transformers/-/shikiji-transformers-0.7.6.tgz", - "integrity": "sha512-yTp+7JMD/aXbV9ndn14eo9IK/UNt8iDsLNyqlOmCtcldlkqWE9T2YKAlOHOTVaeDfYWUWZa2EgSXb/CBfepBrw==", - "dev": true, - "dependencies": { - "shikiji": "0.7.6" + "@shikijs/core": "1.2.0" } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/stringify-entities": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", - "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", - "dev": true, - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=0.10.0" } }, "node_modules/strip-json-comments": { @@ -2000,16 +1669,6 @@ "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", "dev": true }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/uc.micro": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", @@ -2022,126 +1681,15 @@ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", "dev": true }, - "node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", - "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-location": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", - "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/vite": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz", - "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.3.tgz", + "integrity": "sha512-+i1oagbvkVIhEy9TnEV+fgXsng13nZM90JQbrcPrf6DvW2mXARlz+DK7DLiDP+qeKoD1FCVx/1SpFL1CLq9Mhw==", "dev": true, "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.32", - "rollup": "^4.2.0" + "esbuild": "^0.20.1", + "postcss": "^8.4.36", + "rollup": "^4.13.0" }, "bin": { "vite": "bin/vite.js" @@ -2189,33 +1737,33 @@ } }, "node_modules/vitepress": { - "version": "1.0.0-rc.31", - "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-rc.31.tgz", - "integrity": "sha512-ikH9pIjOOAbyoYAGBVfTz8TzuXp+UoWaIRMU4bw/oiTg8R65SbAaGKY84xx6TuL+f4VqUJ8lhzW82YyxSLvstA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.1.tgz", + "integrity": "sha512-eNr5pOBppYUUjEhv8S0S2t9Tv95LQ6mMeHj6ivaGwfHxpov70Vduuwl/QQMDRznKDSaP0WKV7a82Pb4JVOaqEw==", "dev": true, "dependencies": { - "@docsearch/css": "^3.5.2", - "@docsearch/js": "^3.5.2", + "@docsearch/css": "^3.6.0", + "@docsearch/js": "^3.6.0", + "@shikijs/core": "^1.2.0", + "@shikijs/transformers": "^1.2.0", "@types/markdown-it": "^13.0.7", - "@vitejs/plugin-vue": "^4.5.0", - "@vue/devtools-api": "^6.5.1", - "@vueuse/core": "^10.6.1", - "@vueuse/integrations": "^10.6.1", + "@vitejs/plugin-vue": "^5.0.4", + "@vue/devtools-api": "^7.0.16", + "@vueuse/core": "^10.9.0", + "@vueuse/integrations": "^10.9.0", "focus-trap": "^7.5.4", "mark.js": "8.11.1", "minisearch": "^6.3.0", - "mrmime": "^1.0.1", - "shikiji": "^0.7.4", - "shikiji-transformers": "^0.7.4", - "vite": "^5.0.2", - "vue": "^3.3.8" + "shiki": "^1.2.0", + "vite": "^5.2.2", + "vue": "^3.4.21" }, "bin": { "vitepress": "bin/vitepress.js" }, "peerDependencies": { - "markdown-it-mathjax3": "^4.3.2", - "postcss": "^8.4.31" + "markdown-it-mathjax3": "^4", + "postcss": "^8" }, "peerDependenciesMeta": { "markdown-it-mathjax3": { @@ -2227,16 +1775,16 @@ } }, "node_modules/vue": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.15.tgz", - "integrity": "sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.21.tgz", + "integrity": "sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==", "dev": true, "dependencies": { - "@vue/compiler-dom": "3.4.15", - "@vue/compiler-sfc": "3.4.15", - "@vue/runtime-dom": "3.4.15", - "@vue/server-renderer": "3.4.15", - "@vue/shared": "3.4.15" + "@vue/compiler-dom": "3.4.21", + "@vue/compiler-sfc": "3.4.21", + "@vue/runtime-dom": "3.4.21", + "@vue/server-renderer": "3.4.21", + "@vue/shared": "3.4.21" }, "peerDependencies": { "typescript": "*" @@ -2252,31 +1800,11 @@ "resolved": "https://registry.npmjs.org/vue-collapsed/-/vue-collapsed-1.3.0.tgz", "integrity": "sha512-d2qwv0fj4aaoekI+6x1RgxpoK0s5K8HLj70E+dWxIKkgzADcZ9kUrnXRazgIz9ETYkKOi6j2CWv/8+rS8Kr3LQ==" }, - "node_modules/web-namespaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", - "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/xmlcreate": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", "dev": true - }, - "node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } } } } diff --git a/v3-docs/docs/package.json b/v3-docs/docs/package.json index 0f348bd8d3..748ffdba66 100644 --- a/v3-docs/docs/package.json +++ b/v3-docs/docs/package.json @@ -10,7 +10,7 @@ "devDependencies": { "canonical-json": "^0.0.4", "jsdoc": "^4.0.2", - "vitepress": "1.0.0-rc.31" + "vitepress": "1.0.1" }, "dependencies": { "vue-collapsed": "^1.3.0" diff --git a/v3-docs/docs/packages/fetch.md b/v3-docs/docs/packages/fetch.md index e7385334cd..7eaf90bfa5 100644 --- a/v3-docs/docs/packages/fetch.md +++ b/v3-docs/docs/packages/fetch.md @@ -38,7 +38,6 @@ import { fetch, Headers, Request, Response } from "meteor/fetch"; For the most part though, you will only need to import `fetch` and `Headers`. ```js -import { Meteor } from 'meteor/meteor'; import { fetch, Headers } from 'meteor/fetch'; async function postData (url, data) { @@ -63,7 +62,6 @@ async function postData (url, data) { } } -const postDataCall = Meteor.wrapAsync(postData); -const results = postDataCall('https://www.example.org/statsSubmission', { totalUsers: 55 })); +const result = await postData('https://www.example.org/statsSubmission', { totalUsers: 55 }); ``` diff --git a/v3-docs/docs/packages/webapp.md b/v3-docs/docs/packages/webapp.md index 38738b5c7f..09f4454e15 100644 --- a/v3-docs/docs/packages/webapp.md +++ b/v3-docs/docs/packages/webapp.md @@ -68,8 +68,8 @@ import express from "express"; const router = express.Router(); -router.get("/", function (req, res, next) { - const buf = Assets.getText("index.html"); +router.get("/", async function (req, res, next) { + const buf = await Assets.getTextAsync("index.html"); if (buf.length > 0) { const eTag = crypto.createHash("md5").update(buf).digest("hex");