mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
Merge branch 'release-2.3' into remove-compat-bellow-1.0
This commit is contained in:
@@ -111,8 +111,8 @@ jobs:
|
||||
command: (git submodule sync && git submodule update --init --recursive) || (rm -fr .git/config .git/modules && git submodule deinit -f . && git submodule update --init --recursive)
|
||||
- restore_cache:
|
||||
keys:
|
||||
- v1-dev-bundle-cache-{{ checksum "meteor" }}
|
||||
- v1-dev-bundle-cache-
|
||||
- v3-dev-bundle-cache-{{ checksum "meteor" }}
|
||||
- v3-dev-bundle-cache-
|
||||
- run:
|
||||
name: Combine NPM Shrinkwrap Files
|
||||
command: |
|
||||
@@ -120,21 +120,21 @@ jobs:
|
||||
for d in packages/*/.npm/plugin/*; do cat $d/npm-shrinkwrap.json >> shrinkwraps.txt; done
|
||||
- restore_cache:
|
||||
keys:
|
||||
- package-npm-deps-cache-group1-v1-{{ checksum "shrinkwraps.txt" }}
|
||||
- package-npm-deps-cache-group1-v1-
|
||||
- package-npm-deps-cache-group1-v3-{{ checksum "shrinkwraps.txt" }}
|
||||
- package-npm-deps-cache-group1-v3-
|
||||
- restore_cache:
|
||||
keys:
|
||||
- package-npm-deps-cache-group2-v3-{{ checksum "shrinkwraps.txt" }}
|
||||
- package-npm-deps-cache-group2-v3-
|
||||
- package-npm-deps-cache-group2-v5-{{ checksum "shrinkwraps.txt" }}
|
||||
- package-npm-deps-cache-group2-v5-
|
||||
- restore_cache:
|
||||
keys:
|
||||
- v5-other-deps-cache-{{ .Branch }}-{{ checksum "meteor" }}-{{ .Revision }}
|
||||
- v5-other-deps-cache-{{ .Branch }}-{{ checksum "meteor" }}-
|
||||
- v5-other-deps-cache-{{ .Branch }}-
|
||||
- v7-other-deps-cache-{{ .Branch }}-{{ checksum "meteor" }}-{{ .Revision }}
|
||||
- v7-other-deps-cache-{{ .Branch }}-{{ checksum "meteor" }}-
|
||||
- v7-other-deps-cache-{{ .Branch }}-
|
||||
- restore_cache:
|
||||
keys:
|
||||
- v1-test-groups-{{ .Branch }}
|
||||
- v1-test-groups-
|
||||
- v4-test-groups-{{ .Branch }}
|
||||
- v4-test-groups-
|
||||
- run:
|
||||
name: Create Test Results Directory
|
||||
command: |
|
||||
@@ -149,8 +149,9 @@ jobs:
|
||||
command: |
|
||||
eval $PRE_TEST_COMMANDS;
|
||||
pushd tools
|
||||
npm install @types/node --save-dev
|
||||
# Ensure that meteor/tools has no TypeScript errors.
|
||||
../meteor npx tsc --noEmit
|
||||
../meteor npx tsc --noEmit --skipLibCheck
|
||||
popd
|
||||
./meteor --get-ready
|
||||
# shouldn't take longer than 60 minutes
|
||||
@@ -706,14 +707,14 @@ jobs:
|
||||
- ./tmp/test-groups
|
||||
when: on_success
|
||||
- save_cache:
|
||||
key: v1-dev-bundle-cache-{{ checksum "meteor" }}
|
||||
key: v3-dev-bundle-cache-{{ checksum "meteor" }}
|
||||
paths:
|
||||
- "dev_bundle"
|
||||
# The package npm dependencies are split into two caches to avoid an AWS
|
||||
# `MetadataTooLarge` error that consistently appears if we put all of
|
||||
# these folders in the same cache
|
||||
- save_cache:
|
||||
key: package-npm-deps-cache-group1-v1-{{ checksum "shrinkwraps.txt" }}
|
||||
key: package-npm-deps-cache-group1-v3-{{ checksum "shrinkwraps.txt" }}
|
||||
paths:
|
||||
- packages/meteor/.npm/package/node_modules
|
||||
- packages/modules-runtime/.npm/package/node_modules
|
||||
@@ -729,7 +730,7 @@ jobs:
|
||||
- packages/package-version-parser/.npm/package/node_modules
|
||||
- packages/boilerplate-generator/.npm/package/node_modules
|
||||
- save_cache:
|
||||
key: package-npm-deps-cache-group2-v3-{{ checksum "shrinkwraps.txt" }}
|
||||
key: package-npm-deps-cache-group2-v5-{{ checksum "shrinkwraps.txt" }}
|
||||
paths:
|
||||
- packages/xmlbuilder/.npm/package/node_modules
|
||||
- packages/logging/.npm/package/node_modules
|
||||
@@ -756,7 +757,7 @@ jobs:
|
||||
- packages/fetch/.npm/package/node_modules
|
||||
- packages/non-core/mongo-decimal/.npm/package/node_modules
|
||||
- save_cache:
|
||||
key: v5-other-deps-cache-{{ .Branch }}-{{ checksum "meteor" }}-{{ .Revision }}
|
||||
key: v7-other-deps-cache-{{ .Branch }}-{{ checksum "meteor" }}-{{ .Revision }}
|
||||
paths:
|
||||
- ".babel-cache"
|
||||
- ".meteor"
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -24,6 +24,7 @@ TAGS
|
||||
npm-debug.log
|
||||
universe
|
||||
.babel-cache
|
||||
.reify-cache
|
||||
mongo-test-output
|
||||
|
||||
# core packages shouldn't have .versions files
|
||||
|
||||
@@ -24,7 +24,7 @@ can run Meteor directly from a Git checkout using these steps:
|
||||
>
|
||||
> $ git submodule update --init --recursive
|
||||
|
||||
0. **Run a Meteor command to install dependencies**
|
||||
2. **Run a Meteor command to install dependencies**
|
||||
|
||||
> If you did not compile dependencies above, this will also download the binaries.
|
||||
|
||||
@@ -33,7 +33,7 @@ can run Meteor directly from a Git checkout using these steps:
|
||||
$ ./meteor --help
|
||||
```
|
||||
|
||||
0. **Ready to Go!**
|
||||
3. **Ready to Go!**
|
||||
|
||||
Your local Meteor checkout is now ready to use! You can use this `./meteor`
|
||||
anywhere you would normally call the system `meteor`. For example,:
|
||||
|
||||
97
History.md
97
History.md
@@ -1,4 +1,50 @@
|
||||
## v2.3.0, UNRELEASED
|
||||
## v2.3, UNRELEASED
|
||||
|
||||
#### Highlights
|
||||
|
||||
* Node.js update to 14.17.0 from 12.22.1 :tada:
|
||||
|
||||
* Typescript update to 4.2.4
|
||||
|
||||
* New env variable `METEOR_TOOL_ENABLE_REIFY_RUNTIME_CACHE` to improve runtime performance on restarts.
|
||||
|
||||
* New flag `--platforms` has been added to the `build` command to specify the platform you want to build for. `meteor build . --platforms=android`.
|
||||
|
||||
* Skeletons dependencies updated to latest version
|
||||
|
||||
### Breaking changes
|
||||
|
||||
- As Node.js version was upgraded to a new major version we recommend that you review if your npm dependencies are compatible with Node.js 14.
|
||||
- If we receive reports from breaking changes we are going to list them here but so far we are not aware of any.
|
||||
- We recommend that you read Node.js [release notes](https://nodejs.org/en/blog/release/v14.0.0/) though.
|
||||
|
||||
### Migration steps
|
||||
|
||||
- As Node.js version was upgraded we recommend that you remove your `node_modules` folder (`rm -rf node_modules`) and run `meteor reset` to be sure you compile all the binary dependencies again using the new Node.js version.
|
||||
- Maybe you also want to recreate your lock file.
|
||||
|
||||
#### Meteor Version Release
|
||||
|
||||
* `meteor-tool@2.3`
|
||||
- Node.js update to 14.17.0 from 12.22.1 :tada:
|
||||
- This is a major upgrade in Node.js. See the [release notes](https://nodejs.org/en/blog/release/v14.0.0/) for more details.
|
||||
- npm update to 6.14.13.
|
||||
- New env variable `METEOR_TOOL_ENABLE_REIFY_RUNTIME_CACHE` that improves restarts by caching reify data. This new cache should help with runtime performance when restarting server, but it is not yet ready for general use. By default it is disabled but you can enable it setting `true` in this env var. Learn more in the [PR](https://github.com/meteor/meteor/pull/11400).
|
||||
- New flag `--platforms` has been added to the `build` command to specify the platform you want to build for. `meteor build . --platforms=android`. This is useful for example when you are not using a MacOS and you want to build your app only for Android. Also to save time on CI not building all the platforms all the time. See [PR](https://github.com/meteor/meteor/pull/11437) for details.
|
||||
- The undocumented environment variable `DDP_DEFAULT_CONNECTION_URL` behavior has changed. Setting `DDP_DEFAULT_CONNECTION_URL` when running the server (development: `meteor run` or production: `node main.js`) sets the default DDP server value for meteor. But this did not work for `cordova` apps. Now you can define the `cordova` app default DDP server value by setting `DDP_DEFAULT_CONNECTION_URL` when building (`meteor build`).
|
||||
|
||||
* `launch-screen@1.3.0`
|
||||
- Removes LaunchScreen from web clients.
|
||||
|
||||
* `meteor-babel@7.11.0 (@meteorjs/babel)`
|
||||
- Fixes for Samsung Internet v6.2+ to be considered modern browser and addition of [logical assingment operators](https://github.com/tc39/proposal-logical-assignment) via `babel-presets-meteor`.
|
||||
- This package was renamed to `@meteorjs/babel`.
|
||||
|
||||
* `hot-module-replacement@0.3.0`
|
||||
- Fixes various HMR bugs and edge cases see [PR for more](https://github.com/meteor/meteor/pull/11405).
|
||||
|
||||
* `email@2.1.0`
|
||||
- Updates `nodemailer` to `6.6.0` and it now adds `charset=utf-8` to `text/plain` messages by default.
|
||||
|
||||
### Breaking changes
|
||||
* Removed deprecated `mobile-port` flag
|
||||
@@ -33,17 +79,32 @@
|
||||
|
||||
#### Independent Releases
|
||||
|
||||
* Updated `ddp-server@2.3.3` and `socket-stream-client@0.3.2` dependencies which removes Node's HTTP deprecation warning.
|
||||
* `ddp-server@2.3.3`
|
||||
- Updates dependencies which removes Node's HTTP deprecation warning.
|
||||
|
||||
* `socket-stream-client@0.3.2`
|
||||
- Updates dependencies which removes Node's HTTP deprecation warning.
|
||||
|
||||
* Released `ddp-client@2.4.1` re-ordering fields in DDP message for better client readability.
|
||||
* `ddp-client@2.4.1`
|
||||
- Re-ordering fields in DDP message for better client readability.
|
||||
|
||||
* Released `mongo@1.11.1` fixing a `Timestamp.ONE is undefined` bug.
|
||||
* `mongo@1.11.1`
|
||||
- Fixes a `Timestamp.ONE is undefined` bug.
|
||||
|
||||
* Released `mongo-id@1.0.8` removing unused dependency `id-map`.
|
||||
* `mongo-id@1.0.8`
|
||||
- Removes unused dependency `id-map`.
|
||||
|
||||
* Released `dev-error-overlay@0.1.1` fixing sometimes page content being on top of error overlay
|
||||
* `accounts-server@1.7.1`
|
||||
- To better test password format & limit password to 256 characters, you can change this limit by setting `Meteor.settings.packages.accounts.passwordMaxLength`.
|
||||
|
||||
* Released `id-map@1.1.1` removing unused dependencies and modernizing the code
|
||||
* `static-html@1.3.1`
|
||||
- Removes `underscore` dependency.
|
||||
|
||||
* `dev-error-overlay@0.1.1`
|
||||
- Fixes sometimes page content being on top of error overlay.
|
||||
|
||||
* `id-map@1.1.1`
|
||||
- Removes unused dependencies and modernizing the code.
|
||||
|
||||
* `http@1.4.4`
|
||||
- Used the new deprecation package flag instead of loud console warning.
|
||||
@@ -143,7 +204,7 @@
|
||||
* `meteor-tool@2.1`
|
||||
- Node.js security [update](https://nodejs.org/en/blog/vulnerability/february-2021-security-releases/) to 12.21.0
|
||||
- `meteor create my-app --plan professional` new flag `plan` to enable you to choose a plan from the deploy command.
|
||||
|
||||
|
||||
### Breaking changes
|
||||
|
||||
* N/A
|
||||
@@ -159,10 +220,10 @@
|
||||
#### Highlights
|
||||
|
||||
- Free deploy on [Cloud](https://www.meteor.com/cloud): Deploy for free to Cloud with one command: `meteor deploy myapp.meteorapp.com --free`. ([docs](https://docs.meteor.com/commandline.html#meteordeploy))
|
||||
|
||||
|
||||
|
||||
- Deploy including MongoDB on [Cloud](https://www.meteor.com/cloud): Deploy including MongoDB in a shared instance for free to Cloud with one command: `meteor deploy myapp.meteorapp.com --free --mongo`. ([docs](https://docs.meteor.com/commandline.html#meteordeploy))
|
||||
|
||||
|
||||
|
||||
- Hot Module Replacement (HMR): Updates the javascript modules in a running app that were modified during a rebuild. Reduces the feedback cycle while developing so you can view and test changes quicker (it even updates the app before the build has finished). Enabled by adding the `hot-module-replacement` package to an app. React components are automatically updated by default using React Fast Refresh. Integrations with other libraries and view layers can be provided by third party packages. Support for Blaze is coming soon. This first version supports app code in the modern web architecture. ([docs](https://guide.meteor.com/build-tool.html#hot-module-replacement)) [#11117](https://github.com/meteor/meteor/pull/11117)
|
||||
|
||||
@@ -181,12 +242,12 @@
|
||||
|
||||
* `hot-module-replacement@1.0.0`
|
||||
- New package that enables Hot Module Replacement for the Meteor app and provides an API to configure how updates are applied. HMR reduces the feedback cycle while developing by updating modified javascript modules within the running application. ([docs](https://docs.meteor.com/packages/hot-module-replacement.html)) [#11117](https://github.com/meteor/meteor/pull/11117)
|
||||
- These packages have been updated to support HMR: `autoupdate@1.7.0`, `babel-compiler@7.6.0`, `ddp-client@2.4.0`, `dynamic-import@0.6.0`, `ecmascript@0.15.0`, `modules@0.16.0`, `modules-runtime-hot@0.13.0`, `standard-minifier-css@1.7.2`, `webapp@1.10.0`, `webapp-hashing@1.1.0`
|
||||
|
||||
- These packages have been updated to support HMR: `autoupdate@1.7.0`, `babel-compiler@7.6.0`, `ddp-client@2.4.0`, `dynamic-import@0.6.0`, `ecmascript@0.15.0`, `modules@0.16.0`, `modules-runtime-hot@0.13.0`, `standard-minifier-css@1.7.2`, `webapp@1.10.0`, `webapp-hashing@1.1.0`
|
||||
|
||||
|
||||
* `react-fast-refresh@0.1.0`
|
||||
- New package that updates React components using HMR. This is enabled by default in apps that have HMR enabled and use a supported React version. ([docs](https://atmospherejs.com/meteor/react-fast-refresh)) [#11117](https://github.com/meteor/meteor/pull/11117)
|
||||
|
||||
|
||||
|
||||
* `dev-error-overlay@0.1.0`
|
||||
- New package that allows you to see build errors and server crashes in your browser during development. Requires the app to have HMR enabled. [#11117](https://github.com/meteor/meteor/pull/11117)
|
||||
@@ -194,7 +255,7 @@
|
||||
|
||||
* `accounts-base@1.8.0` and `accounts-password@1.7.0`
|
||||
- Extra parameters can now be added to reset password, verify e-mail and enroll account links that are generated for account e-mails. By default, these are added as search parameters to the generated url. You can pass them as an object in the appropriate functions. E.g. `Accounts.sendEnrollmentEmail(userId, email, null, extraParams);`. [#11288](https://github.com/meteor/meteor/pull/11288)
|
||||
|
||||
|
||||
|
||||
* `logging@1.2.0`
|
||||
- Updates dependencies and make debug available for use in non production environments. [#11068](https://github.com/meteor/meteor/pull/11068)
|
||||
@@ -203,7 +264,7 @@
|
||||
* `react-meteor-data@2.2.0`
|
||||
- Fix issue with useTracker and Subscriptions when using deps. [#306](https://github.com/meteor/react-packages/pull/306)
|
||||
- Remove version constraint on core TypeScript package [#308](https://github.com/meteor/react-packages/pull/308)
|
||||
|
||||
|
||||
|
||||
* `http`
|
||||
- It has been deprecated. [#11068](https://github.com/meteor/meteor/pull/11068)
|
||||
@@ -239,10 +300,10 @@ N/A
|
||||
|
||||
* `dynamic-import@0.5.5`
|
||||
- Fixes problem on IE because of modern syntax (arrow function).
|
||||
|
||||
|
||||
* `meteor-babel@7.10.6`
|
||||
- Allows to disable sourceMap generation [#36](https://github.com/meteor/babel/pull/36)
|
||||
|
||||
|
||||
* `babel-compiler@7.5.5`
|
||||
- Allows to disable sourceMap generation [#36](https://github.com/meteor/babel/pull/36)
|
||||
|
||||
@@ -278,7 +339,7 @@ N/A
|
||||
- adds new options for `meteor list` command (TODO pending link to updated doc). [#11165](https://github.com/meteor/meteor/pull/11165)
|
||||
- supports Cordova add plugin command working again with plugin id or plugin name in the git URL as it was before Meteor 1.11. [#11202](https://github.com/meteor/meteor/pull/11202)
|
||||
- avoids MiTM by downloading through https. [#11188](https://github.com/meteor/meteor/pull/11188)
|
||||
|
||||
|
||||
* `meteor-babel@7.10.5`
|
||||
- updates TypeScript to 4.1.2 and enables decorators and metadata reflection. [#11225](https://github.com/meteor/meteor/pull/11225) and [#11255](https://github.com/meteor/meteor/pull/11255)
|
||||
|
||||
|
||||
2
meteor
2
meteor
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
BUNDLE_VERSION=12.22.1.2
|
||||
BUNDLE_VERSION=14.17.0.0
|
||||
|
||||
# OS Check. Put here because here is where we download the precompiled
|
||||
# bundles that are arch specific.
|
||||
|
||||
@@ -1087,6 +1087,7 @@ export class AccountsServer extends AccountsCommon {
|
||||
} catch (e) {
|
||||
// XXX string parsing sucks, maybe
|
||||
// https://jira.mongodb.org/browse/SERVER-3069 will get fixed one day
|
||||
// https://jira.mongodb.org/browse/SERVER-4637
|
||||
if (!e.errmsg) throw e;
|
||||
if (e.errmsg.includes('emails.address'))
|
||||
throw new Meteor.Error(403, "Email already exists.");
|
||||
|
||||
272
packages/babel-compiler/.npm/package/npm-shrinkwrap.json
generated
272
packages/babel-compiler/.npm/package/npm-shrinkwrap.json
generated
@@ -7,14 +7,14 @@
|
||||
"integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g=="
|
||||
},
|
||||
"@babel/compat-data": {
|
||||
"version": "7.13.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz",
|
||||
"integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ=="
|
||||
"version": "7.14.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz",
|
||||
"integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q=="
|
||||
},
|
||||
"@babel/core": {
|
||||
"version": "7.13.14",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz",
|
||||
"integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==",
|
||||
"version": "7.14.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.3.tgz",
|
||||
"integrity": "sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg==",
|
||||
"dependencies": {
|
||||
"json5": {
|
||||
"version": "2.2.0",
|
||||
@@ -24,9 +24,9 @@
|
||||
}
|
||||
},
|
||||
"@babel/generator": {
|
||||
"version": "7.13.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz",
|
||||
"integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw=="
|
||||
"version": "7.14.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.3.tgz",
|
||||
"integrity": "sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA=="
|
||||
},
|
||||
"@babel/helper-annotate-as-pure": {
|
||||
"version": "7.12.13",
|
||||
@@ -39,24 +39,24 @@
|
||||
"integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA=="
|
||||
},
|
||||
"@babel/helper-compilation-targets": {
|
||||
"version": "7.13.13",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz",
|
||||
"integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ=="
|
||||
"version": "7.13.16",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz",
|
||||
"integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA=="
|
||||
},
|
||||
"@babel/helper-create-class-features-plugin": {
|
||||
"version": "7.13.11",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz",
|
||||
"integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw=="
|
||||
"version": "7.14.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.3.tgz",
|
||||
"integrity": "sha512-BnEfi5+6J2Lte9LeiL6TxLWdIlEv9Woacc1qXzXBgbikcOzMRM2Oya5XGg/f/ngotv1ej2A/b+3iJH8wbS1+lQ=="
|
||||
},
|
||||
"@babel/helper-create-regexp-features-plugin": {
|
||||
"version": "7.12.17",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz",
|
||||
"integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg=="
|
||||
"version": "7.14.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.3.tgz",
|
||||
"integrity": "sha512-JIB2+XJrb7v3zceV2XzDhGIB902CmKGSpSl4q2C6agU9SNLG/2V1RtFRGPG1Ajh9STj3+q6zJMOC+N/pp2P9DA=="
|
||||
},
|
||||
"@babel/helper-define-polyfill-provider": {
|
||||
"version": "0.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz",
|
||||
"integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg=="
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz",
|
||||
"integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw=="
|
||||
},
|
||||
"@babel/helper-explode-assignable-expression": {
|
||||
"version": "7.13.0",
|
||||
@@ -64,9 +64,9 @@
|
||||
"integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA=="
|
||||
},
|
||||
"@babel/helper-function-name": {
|
||||
"version": "7.12.13",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz",
|
||||
"integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA=="
|
||||
"version": "7.14.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz",
|
||||
"integrity": "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ=="
|
||||
},
|
||||
"@babel/helper-get-function-arity": {
|
||||
"version": "7.12.13",
|
||||
@@ -84,9 +84,9 @@
|
||||
"integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA=="
|
||||
},
|
||||
"@babel/helper-module-transforms": {
|
||||
"version": "7.13.14",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz",
|
||||
"integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g=="
|
||||
"version": "7.14.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz",
|
||||
"integrity": "sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA=="
|
||||
},
|
||||
"@babel/helper-optimise-call-expression": {
|
||||
"version": "7.12.13",
|
||||
@@ -104,9 +104,9 @@
|
||||
"integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg=="
|
||||
},
|
||||
"@babel/helper-replace-supers": {
|
||||
"version": "7.13.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz",
|
||||
"integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw=="
|
||||
"version": "7.14.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.3.tgz",
|
||||
"integrity": "sha512-Rlh8qEWZSTfdz+tgNV/N4gz1a0TMNwCUcENhMjHTHKp3LseYH5Jha0NSlyTQWMnjbYcwFt+bqAMqSLHVXkQ6UA=="
|
||||
},
|
||||
"@babel/helper-simple-access": {
|
||||
"version": "7.13.12",
|
||||
@@ -124,9 +124,9 @@
|
||||
"integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg=="
|
||||
},
|
||||
"@babel/helper-validator-identifier": {
|
||||
"version": "7.12.11",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz",
|
||||
"integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw=="
|
||||
"version": "7.14.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz",
|
||||
"integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A=="
|
||||
},
|
||||
"@babel/helper-validator-option": {
|
||||
"version": "7.12.17",
|
||||
@@ -139,49 +139,54 @@
|
||||
"integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA=="
|
||||
},
|
||||
"@babel/helpers": {
|
||||
"version": "7.13.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz",
|
||||
"integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ=="
|
||||
"version": "7.14.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz",
|
||||
"integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg=="
|
||||
},
|
||||
"@babel/highlight": {
|
||||
"version": "7.13.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz",
|
||||
"integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg=="
|
||||
"version": "7.14.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz",
|
||||
"integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg=="
|
||||
},
|
||||
"@babel/parser": {
|
||||
"version": "7.13.13",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz",
|
||||
"integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw=="
|
||||
"version": "7.14.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.3.tgz",
|
||||
"integrity": "sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ=="
|
||||
},
|
||||
"@babel/plugin-proposal-async-generator-functions": {
|
||||
"version": "7.13.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz",
|
||||
"integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA=="
|
||||
"version": "7.14.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.2.tgz",
|
||||
"integrity": "sha512-b1AM4F6fwck4N8ItZ/AtC4FP/cqZqmKRQ4FaTDutwSYyjuhtvsGEMLK4N/ztV/ImP40BjIDyMgBQAeAMsQYVFQ=="
|
||||
},
|
||||
"@babel/plugin-proposal-class-properties": {
|
||||
"version": "7.13.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz",
|
||||
"integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg=="
|
||||
},
|
||||
"@babel/plugin-proposal-logical-assignment-operators": {
|
||||
"version": "7.14.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.2.tgz",
|
||||
"integrity": "sha512-1JAZtUrqYyGsS7IDmFeaem+/LJqujfLZ2weLR9ugB0ufUPjzf8cguyVT1g5im7f7RXxuLq1xUxEzvm68uYRtGg=="
|
||||
},
|
||||
"@babel/plugin-proposal-nullish-coalescing-operator": {
|
||||
"version": "7.13.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz",
|
||||
"integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A=="
|
||||
"version": "7.14.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz",
|
||||
"integrity": "sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q=="
|
||||
},
|
||||
"@babel/plugin-proposal-object-rest-spread": {
|
||||
"version": "7.13.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz",
|
||||
"integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g=="
|
||||
"version": "7.14.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.2.tgz",
|
||||
"integrity": "sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw=="
|
||||
},
|
||||
"@babel/plugin-proposal-optional-catch-binding": {
|
||||
"version": "7.13.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz",
|
||||
"integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA=="
|
||||
"version": "7.14.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz",
|
||||
"integrity": "sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ=="
|
||||
},
|
||||
"@babel/plugin-proposal-optional-chaining": {
|
||||
"version": "7.13.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz",
|
||||
"integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ=="
|
||||
"version": "7.14.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz",
|
||||
"integrity": "sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA=="
|
||||
},
|
||||
"@babel/plugin-syntax-async-generators": {
|
||||
"version": "7.8.4",
|
||||
@@ -203,6 +208,11 @@
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz",
|
||||
"integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g=="
|
||||
},
|
||||
"@babel/plugin-syntax-logical-assignment-operators": {
|
||||
"version": "7.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
|
||||
"integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig=="
|
||||
},
|
||||
"@babel/plugin-syntax-nullish-coalescing-operator": {
|
||||
"version": "7.8.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
|
||||
@@ -239,14 +249,14 @@
|
||||
"integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg=="
|
||||
},
|
||||
"@babel/plugin-transform-block-scoping": {
|
||||
"version": "7.12.13",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz",
|
||||
"integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ=="
|
||||
"version": "7.14.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.2.tgz",
|
||||
"integrity": "sha512-neZZcP19NugZZqNwMTH+KoBjx5WyvESPSIOQb4JHpfd+zPfqcH65RMu5xJju5+6q/Y2VzYrleQTr+b6METyyxg=="
|
||||
},
|
||||
"@babel/plugin-transform-classes": {
|
||||
"version": "7.13.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz",
|
||||
"integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g=="
|
||||
"version": "7.14.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.2.tgz",
|
||||
"integrity": "sha512-7oafAVcucHquA/VZCsXv/gmuiHeYd64UJyyTYU+MPfNu0KeNlxw06IeENBO8bJjXVbolu+j1MM5aKQtH1OMCNg=="
|
||||
},
|
||||
"@babel/plugin-transform-computed-properties": {
|
||||
"version": "7.13.0",
|
||||
@@ -254,9 +264,9 @@
|
||||
"integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg=="
|
||||
},
|
||||
"@babel/plugin-transform-destructuring": {
|
||||
"version": "7.13.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz",
|
||||
"integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA=="
|
||||
"version": "7.13.17",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz",
|
||||
"integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA=="
|
||||
},
|
||||
"@babel/plugin-transform-exponentiation-operator": {
|
||||
"version": "7.12.13",
|
||||
@@ -274,9 +284,9 @@
|
||||
"integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ=="
|
||||
},
|
||||
"@babel/plugin-transform-modules-commonjs": {
|
||||
"version": "7.13.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz",
|
||||
"integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw=="
|
||||
"version": "7.14.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz",
|
||||
"integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ=="
|
||||
},
|
||||
"@babel/plugin-transform-object-super": {
|
||||
"version": "7.12.13",
|
||||
@@ -284,9 +294,9 @@
|
||||
"integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ=="
|
||||
},
|
||||
"@babel/plugin-transform-parameters": {
|
||||
"version": "7.13.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz",
|
||||
"integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw=="
|
||||
"version": "7.14.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz",
|
||||
"integrity": "sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A=="
|
||||
},
|
||||
"@babel/plugin-transform-property-literals": {
|
||||
"version": "7.12.13",
|
||||
@@ -294,14 +304,14 @@
|
||||
"integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A=="
|
||||
},
|
||||
"@babel/plugin-transform-react-display-name": {
|
||||
"version": "7.12.13",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz",
|
||||
"integrity": "sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA=="
|
||||
"version": "7.14.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.2.tgz",
|
||||
"integrity": "sha512-zCubvP+jjahpnFJvPaHPiGVfuVUjXHhFvJKQdNnsmSsiU9kR/rCZ41jHc++tERD2zV+p7Hr6is+t5b6iWTCqSw=="
|
||||
},
|
||||
"@babel/plugin-transform-react-jsx": {
|
||||
"version": "7.13.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.13.12.tgz",
|
||||
"integrity": "sha512-jcEI2UqIcpCqB5U5DRxIl0tQEProI2gcu+g8VTIqxLO5Iidojb4d77q+fwGseCvd8af/lJ9masp4QWzBXFE2xA=="
|
||||
"version": "7.14.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.3.tgz",
|
||||
"integrity": "sha512-uuxuoUNVhdgYzERiHHFkE4dWoJx+UFVyuAl0aqN8P2/AKFHwqgUC5w2+4/PjpKXJsFgBlYAFXlUmDQ3k3DUkXw=="
|
||||
},
|
||||
"@babel/plugin-transform-react-jsx-development": {
|
||||
"version": "7.12.17",
|
||||
@@ -314,14 +324,14 @@
|
||||
"integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg=="
|
||||
},
|
||||
"@babel/plugin-transform-regenerator": {
|
||||
"version": "7.12.13",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz",
|
||||
"integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA=="
|
||||
"version": "7.13.15",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz",
|
||||
"integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ=="
|
||||
},
|
||||
"@babel/plugin-transform-runtime": {
|
||||
"version": "7.13.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.10.tgz",
|
||||
"integrity": "sha512-Y5k8ipgfvz5d/76tx7JYbKQTcgFSU6VgJ3kKQv4zGTKr+a9T/KBvfRvGtSFgKDQGt/DBykQixV0vNWKIdzWErA=="
|
||||
"version": "7.14.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.3.tgz",
|
||||
"integrity": "sha512-t960xbi8wpTFE623ef7sd+UpEC5T6EEguQlTBJDEO05+XwnIWVfuqLw/vdLWY6IdFmtZE+65CZAfByT39zRpkg=="
|
||||
},
|
||||
"@babel/plugin-transform-shorthand-properties": {
|
||||
"version": "7.12.13",
|
||||
@@ -359,9 +369,9 @@
|
||||
"integrity": "sha512-gx+tDLIE06sRjKJkVtpZ/t3mzCDOnPG+ggHZG9lffUbX8+wC739x20YQc9V35Do6ZAxaUc/HhVHIiOzz5MvDmA=="
|
||||
},
|
||||
"@babel/runtime": {
|
||||
"version": "7.13.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz",
|
||||
"integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw=="
|
||||
"version": "7.14.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz",
|
||||
"integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA=="
|
||||
},
|
||||
"@babel/template": {
|
||||
"version": "7.12.13",
|
||||
@@ -369,14 +379,19 @@
|
||||
"integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA=="
|
||||
},
|
||||
"@babel/traverse": {
|
||||
"version": "7.13.13",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz",
|
||||
"integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg=="
|
||||
"version": "7.14.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz",
|
||||
"integrity": "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA=="
|
||||
},
|
||||
"@babel/types": {
|
||||
"version": "7.13.14",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz",
|
||||
"integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ=="
|
||||
"version": "7.14.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.2.tgz",
|
||||
"integrity": "sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw=="
|
||||
},
|
||||
"@meteorjs/babel": {
|
||||
"version": "7.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@meteorjs/babel/-/babel-7.11.0.tgz",
|
||||
"integrity": "sha512-/6qog7HOFSCs42/5Svw4VbchZ4B83E7hRwjP1mDPahHqDYer3rFAipYpI6ViM/RwZSeo4MHspHUJYkENYz+JLw=="
|
||||
},
|
||||
"acorn": {
|
||||
"version": "6.4.2",
|
||||
@@ -489,19 +504,19 @@
|
||||
"integrity": "sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA="
|
||||
},
|
||||
"babel-plugin-polyfill-corejs2": {
|
||||
"version": "0.1.10",
|
||||
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz",
|
||||
"integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA=="
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz",
|
||||
"integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg=="
|
||||
},
|
||||
"babel-plugin-polyfill-corejs3": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz",
|
||||
"integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw=="
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz",
|
||||
"integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg=="
|
||||
},
|
||||
"babel-plugin-polyfill-regenerator": {
|
||||
"version": "0.1.6",
|
||||
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz",
|
||||
"integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg=="
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz",
|
||||
"integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg=="
|
||||
},
|
||||
"babel-plugin-transform-inline-consecutive-adds": {
|
||||
"version": "0.4.3",
|
||||
@@ -559,9 +574,9 @@
|
||||
"integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA="
|
||||
},
|
||||
"babel-preset-meteor": {
|
||||
"version": "7.9.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-preset-meteor/-/babel-preset-meteor-7.9.0.tgz",
|
||||
"integrity": "sha512-SB2hGHZ2wKFiqaovO5DlgoYEUjNGP9FytZlLXppDKKP+TGpoGSQUyNhQ/ACSPFbTEBhKSuyV1LCEmHS+yK7FyQ=="
|
||||
"version": "7.10.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-preset-meteor/-/babel-preset-meteor-7.10.0.tgz",
|
||||
"integrity": "sha512-bcdNfRCQAjTV42cUcmaG5/ltLZZQLpZajUcP+o0Lr+aLTY/XLNkGfASM5383wdXiAkEFl0sDOXeknnLlQtrmdg=="
|
||||
},
|
||||
"babel-preset-minify": {
|
||||
"version": "0.5.1",
|
||||
@@ -569,9 +584,9 @@
|
||||
"integrity": "sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg=="
|
||||
},
|
||||
"browserslist": {
|
||||
"version": "4.16.3",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz",
|
||||
"integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw=="
|
||||
"version": "4.16.6",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz",
|
||||
"integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ=="
|
||||
},
|
||||
"call-bind": {
|
||||
"version": "1.0.2",
|
||||
@@ -579,9 +594,9 @@
|
||||
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA=="
|
||||
},
|
||||
"caniuse-lite": {
|
||||
"version": "1.0.30001205",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz",
|
||||
"integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og=="
|
||||
"version": "1.0.30001228",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz",
|
||||
"integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A=="
|
||||
},
|
||||
"chalk": {
|
||||
"version": "2.4.2",
|
||||
@@ -609,9 +624,9 @@
|
||||
"integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA=="
|
||||
},
|
||||
"core-js-compat": {
|
||||
"version": "3.10.0",
|
||||
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz",
|
||||
"integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==",
|
||||
"version": "3.12.1",
|
||||
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.12.1.tgz",
|
||||
"integrity": "sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ==",
|
||||
"dependencies": {
|
||||
"semver": {
|
||||
"version": "7.0.0",
|
||||
@@ -631,9 +646,9 @@
|
||||
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ=="
|
||||
},
|
||||
"electron-to-chromium": {
|
||||
"version": "1.3.703",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.703.tgz",
|
||||
"integrity": "sha512-SVBVhNB+4zPL+rvtWLw7PZQkw/Eqj1HQZs22xtcqW36+xoifzEOEEDEpkxSMfB6RFeSIOcG00w6z5mSqLr1Y6w=="
|
||||
"version": "1.3.734",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.734.tgz",
|
||||
"integrity": "sha512-iQF2mjPZ6zNNq45kbJ6MYZYCBNdv2JpGiJC/lVx4tGJWi9MNg73KkL9sWGN4X4I/CP2SBLWsT8nPADZZpAHIyw=="
|
||||
},
|
||||
"escalade": {
|
||||
"version": "3.1.1",
|
||||
@@ -686,9 +701,9 @@
|
||||
"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
|
||||
},
|
||||
"is-core-module": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
|
||||
"integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ=="
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz",
|
||||
"integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A=="
|
||||
},
|
||||
"js-tokens": {
|
||||
"version": "4.0.0",
|
||||
@@ -720,11 +735,6 @@
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
|
||||
"integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA=="
|
||||
},
|
||||
"meteor-babel": {
|
||||
"version": "7.10.7",
|
||||
"resolved": "https://registry.npmjs.org/meteor-babel/-/meteor-babel-7.10.7.tgz",
|
||||
"integrity": "sha512-Ed9ckTjKjItwWA15AANvGpLKP1LwW8xiyt1kAEOGVVRjtBraLbt7U0dm1meT5jSRF53A5bk+aQtlReninIDf8A=="
|
||||
},
|
||||
"meteor-babel-helpers": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/meteor-babel-helpers/-/meteor-babel-helpers-0.0.3.tgz",
|
||||
@@ -741,9 +751,9 @@
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"node-releases": {
|
||||
"version": "1.1.71",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz",
|
||||
"integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg=="
|
||||
"version": "1.1.72",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz",
|
||||
"integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw=="
|
||||
},
|
||||
"object-keys": {
|
||||
"version": "1.1.1",
|
||||
@@ -850,9 +860,9 @@
|
||||
"integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
|
||||
},
|
||||
"typescript": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz",
|
||||
"integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw=="
|
||||
"version": "4.2.4",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz",
|
||||
"integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg=="
|
||||
},
|
||||
"unicode-canonical-property-names-ecmascript": {
|
||||
"version": "1.0.4",
|
||||
|
||||
@@ -20,8 +20,8 @@ Meteor's Babel support consists of the following core packages:
|
||||
|
||||
The `babel-compiler` package exports the `Babel` symbol, which exposes
|
||||
functionality provided by the
|
||||
[`meteor-babel`](https://www.npmjs.com/package/meteor-babel) NPM package,
|
||||
which is in turn implemented using the
|
||||
[`@meteorjs/babel`](https://www.npmjs.com/package/@meteorjs/babel) NPM package,
|
||||
which is in turn implmented using the
|
||||
[`babel-core`](https://www.npmjs.com/package/babel-core) NPM package.
|
||||
Note that you can only use the `babel-compiler` package on the server.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
var meteorBabel = null;
|
||||
function getMeteorBabel() {
|
||||
return meteorBabel || (meteorBabel = Npm.require("meteor-babel"));
|
||||
return meteorBabel || (meteorBabel = Npm.require("@meteorjs/babel"));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -46,6 +46,6 @@ Babel = {
|
||||
},
|
||||
|
||||
getMinimumModernBrowserVersions: function () {
|
||||
return Npm.require("meteor-babel/modern-versions.js").get();
|
||||
return Npm.require("@meteorjs/babel/modern-versions.js").get();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -6,11 +6,11 @@ Package.describe({
|
||||
// isn't possible because you can't publish a non-recommended
|
||||
// release with package versions that don't have a pre-release
|
||||
// identifier at the end (eg, -dev)
|
||||
version: '7.6.1'
|
||||
version: '7.6.2-beta230.0'
|
||||
});
|
||||
|
||||
Npm.depends({
|
||||
'meteor-babel': '7.10.7',
|
||||
'@meteorjs/babel': '7.11.0',
|
||||
'json5': '2.1.1'
|
||||
});
|
||||
|
||||
|
||||
@@ -241,6 +241,8 @@ var Session = function (server, version, socket, options) {
|
||||
self.blocked = false;
|
||||
self.workerRunning = false;
|
||||
|
||||
self.cachedUnblock = null;
|
||||
|
||||
// Sub objects for active subscriptions
|
||||
self._namedSubs = new Map();
|
||||
self._universalSubs = [];
|
||||
@@ -567,9 +569,13 @@ _.extend(Session.prototype, {
|
||||
},
|
||||
|
||||
protocol_handlers: {
|
||||
sub: function (msg) {
|
||||
sub: function (msg, unblock) {
|
||||
var self = this;
|
||||
|
||||
// cacheUnblock temporarly, so we can capture it later
|
||||
// we will use unblock in current eventLoop, so this is safe
|
||||
self.cachedUnblock = unblock;
|
||||
|
||||
// reject malformed messages
|
||||
if (typeof (msg.id) !== "string" ||
|
||||
typeof (msg.name) !== "string" ||
|
||||
@@ -624,6 +630,8 @@ _.extend(Session.prototype, {
|
||||
|
||||
self._startSubscription(handler, msg.id, msg.params, msg.name);
|
||||
|
||||
// cleaning cached unblock
|
||||
self.cachedUnblock = null;
|
||||
},
|
||||
|
||||
unsub: function (msg) {
|
||||
@@ -852,6 +860,13 @@ _.extend(Session.prototype, {
|
||||
|
||||
var sub = new Subscription(
|
||||
self, handler, subId, params, name);
|
||||
|
||||
let unblockHander = self.cachedUnblock;
|
||||
// _startSubscription may call from a lot places
|
||||
// so cachedUnblock might be null in somecases
|
||||
// assign the cachedUnblock
|
||||
sub.unblock = unblockHander || (() => {});
|
||||
|
||||
if (subId)
|
||||
self._namedSubs.set(subId, sub);
|
||||
else
|
||||
@@ -1039,6 +1054,10 @@ _.extend(Subscription.prototype, {
|
||||
// methods waiting on data from Mongo (or whatever else the function
|
||||
// blocks on). This probably slows page load in common cases.
|
||||
|
||||
if (!this.unblock) {
|
||||
this.unblock = () => {};
|
||||
}
|
||||
|
||||
var self = this;
|
||||
try {
|
||||
var res = DDP._CurrentPublicationInvocation.withValue(
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Package.describe({
|
||||
name: "dynamic-import",
|
||||
version: "0.6.0",
|
||||
version: "0.7.0-beta230.0",
|
||||
summary: "Runtime support for Meteor 1.5 dynamic import(...) syntax",
|
||||
documentation: "README.md"
|
||||
});
|
||||
|
||||
@@ -67,6 +67,8 @@ function middleware(request, response) {
|
||||
|
||||
if (request.method === "OPTIONS") {
|
||||
const acrh = request.headers["access-control-request-headers"];
|
||||
response.setHeader('Allow', 'OPTIONS, POST');
|
||||
response.setHeader('Content-Length', '0');
|
||||
response.setHeader(
|
||||
"Access-Control-Allow-Headers",
|
||||
typeof acrh === "string" ? acrh : "*"
|
||||
@@ -102,11 +104,13 @@ function middleware(request, response) {
|
||||
});
|
||||
|
||||
} else {
|
||||
const body = `method ${request.method} not allowed`;
|
||||
response.writeHead(405, {
|
||||
Allow: "OPTIONS, POST",
|
||||
'Content-Length': Buffer.byteLength(body),
|
||||
"Cache-Control": "no-cache"
|
||||
});
|
||||
|
||||
response.end(`method ${request.method} not allowed`);
|
||||
response.end(body);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
6
packages/email/.npm/package/npm-shrinkwrap.json
generated
6
packages/email/.npm/package/npm-shrinkwrap.json
generated
@@ -2,9 +2,9 @@
|
||||
"lockfileVersion": 1,
|
||||
"dependencies": {
|
||||
"nodemailer": {
|
||||
"version": "6.4.6",
|
||||
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.6.tgz",
|
||||
"integrity": "sha512-/kJ+FYVEm2HuUlw87hjSqTss+GU35D4giOpdSfGp7DO+5h6RlJj7R94YaYHOkoxu1CSaM0d3WRBtCzwXrY6MKA=="
|
||||
"version": "6.6.0",
|
||||
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.6.0.tgz",
|
||||
"integrity": "sha512-ikSMDU1nZqpo2WUPE0wTTw/NGGImTkwpJKDIFPZT+YvvR9Sj+ze5wzu95JHkBMglQLoG2ITxU21WukCC/XsFkg=="
|
||||
},
|
||||
"stream-buffers": {
|
||||
"version": "3.0.2",
|
||||
|
||||
@@ -42,7 +42,7 @@ Tinytest.add("email - fully customizable", function (test) {
|
||||
test.equal(canonicalize(stream.getContentsAsString("utf8")),
|
||||
"====== BEGIN MAIL #0 ======\n" +
|
||||
devWarningBanner +
|
||||
"Content-Type: text/plain\r\n" +
|
||||
"Content-Type: text/plain; charset=utf-8\r\n" +
|
||||
"X-Meteor-Test: a custom header\r\n" +
|
||||
"Date: dummy\r\n" +
|
||||
"From: foo@example.com\r\n" +
|
||||
@@ -116,7 +116,7 @@ Tinytest.add("email - using mail composer", function (test) {
|
||||
test.equal(canonicalize(stream.getContentsAsString("utf8")),
|
||||
"====== BEGIN MAIL #0 ======\n" +
|
||||
devWarningBanner +
|
||||
"Content-Type: text/plain\r\n" +
|
||||
"Content-Type: text/plain; charset=utf-8\r\n" +
|
||||
"From: a@b.com\r\n" +
|
||||
"Message-ID: <...>\r\n" +
|
||||
"Content-Transfer-Encoding: 7bit\r\n" +
|
||||
@@ -160,7 +160,7 @@ Tinytest.add("email - long lines", function (test) {
|
||||
test.equal(canonicalize(stream.getContentsAsString("utf8")),
|
||||
"====== BEGIN MAIL #0 ======\n" +
|
||||
devWarningBanner +
|
||||
"Content-Type: text/plain\r\n" +
|
||||
"Content-Type: text/plain; charset=utf-8\r\n" +
|
||||
"From: foo@example.com\r\n" +
|
||||
"To: bar@example.com\r\n" +
|
||||
"Subject: This is a very very very very very very very very " +
|
||||
@@ -225,12 +225,12 @@ Tinytest.add("email - text and html", function (test) {
|
||||
"MIME-Version: 1.0\r\n" +
|
||||
"\r\n" +
|
||||
"----...-Part_1\r\n" +
|
||||
"Content-Type: text/plain\r\n" +
|
||||
"Content-Type: text/plain; charset=utf-8\r\n" +
|
||||
"Content-Transfer-Encoding: 7bit\r\n" +
|
||||
"\r\n" +
|
||||
"*Cool*, man\r\n" +
|
||||
"----...-Part_1\r\n" +
|
||||
"Content-Type: text/html\r\n" +
|
||||
"Content-Type: text/html; charset=utf-8\r\n" +
|
||||
"Content-Transfer-Encoding: 7bit\r\n" +
|
||||
"\r\n" +
|
||||
"<i>Cool</i>, man\r\n" +
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
Package.describe({
|
||||
summary: "Send email messages",
|
||||
version: "2.0.0"
|
||||
version: "2.1.0-beta230.0"
|
||||
});
|
||||
|
||||
Npm.depends({
|
||||
nodemailer: "6.4.6",
|
||||
nodemailer: "6.6.0",
|
||||
"stream-buffers": "3.0.2"
|
||||
});
|
||||
|
||||
|
||||
@@ -11,12 +11,17 @@ let appliedChangeSets = [];
|
||||
let removeErrorMessage = null;
|
||||
|
||||
let arch = __meteor_runtime_config__.isModern ? 'web.browser' : 'web.browser.legacy';
|
||||
let enabled = arch === 'web.browser';
|
||||
const hmrSecret = __meteor_runtime_config__._hmrSecret;
|
||||
let supportedArch = arch === 'web.browser';
|
||||
const enabled = hmrSecret && supportedArch;
|
||||
|
||||
if (!enabled) {
|
||||
if (!supportedArch) {
|
||||
console.log(`HMR is not supported in ${arch}`);
|
||||
}
|
||||
|
||||
if (!hmrSecret) {
|
||||
console.log('Restart Meteor to enable HMR');
|
||||
}
|
||||
|
||||
const imported = Object.create(null);
|
||||
const importedBy = Object.create(null);
|
||||
@@ -41,6 +46,10 @@ if (module._onRequire) {
|
||||
|
||||
let pendingReload = () => Reload._reload({ immediateMigration: true });
|
||||
let mustReload = false;
|
||||
// Once an eager update fails, we stop processing future updates since they
|
||||
// might depend on the failed update. This gets reset when we re-try applying
|
||||
// the changes as non-eager updates.
|
||||
let applyEagerUpdates = true;
|
||||
|
||||
function handleMessage(message) {
|
||||
if (message.type === 'register-failed') {
|
||||
@@ -48,13 +57,9 @@ function handleMessage(message) {
|
||||
console.log('HMR: A different app is running on', Meteor.absoluteUrl());
|
||||
console.log('HMR: Once you start this app again reload the page to re-enable HMR');
|
||||
} else if (message.reason === 'wrong-secret') {
|
||||
// TODO: we could wait until the first update to use hot code push
|
||||
// instead of reloading the page immediately in case the user has any
|
||||
// client state they want to keep for now.
|
||||
console.log('HMR: Have the wrong secret, possibly because Meteor was restarted');
|
||||
console.log('HMR: Reloading page to get new secret');
|
||||
console.log('HMR: Have the wrong secret, probably because Meteor was restarted');
|
||||
console.log('HMR: Will enable HMR the next time the page is loaded');
|
||||
mustReload = true;
|
||||
pendingReload();
|
||||
} else {
|
||||
console.log(`HMR: Register failed for unknown reason`, message);
|
||||
}
|
||||
@@ -77,6 +82,16 @@ function handleMessage(message) {
|
||||
throw new Error(`Unknown HMR message type ${message.type}`);
|
||||
}
|
||||
|
||||
if (message.eager && !applyEagerUpdates) {
|
||||
return;
|
||||
} else if (!message.eager) {
|
||||
// Now that the build has finished, we will finish handling any updates
|
||||
// that failed while being eagerly applied. Afterwards, we will either
|
||||
// fall back to hot code push, or be in a state where we can start handling
|
||||
// eager updates again
|
||||
applyEagerUpdates = true;
|
||||
}
|
||||
|
||||
const hasUnreloadable = message.changeSets.find(changeSet => {
|
||||
return !changeSet.reloadable;
|
||||
});
|
||||
@@ -89,6 +104,9 @@ function handleMessage(message) {
|
||||
if (message.eager) {
|
||||
// This was an attempt to reload before the build finishes
|
||||
// If we can't, we will wait until the build finishes to properly handle it
|
||||
// For now, we will disable eager updates in case future updates depended
|
||||
// on these
|
||||
applyEagerUpdates = false;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -117,8 +135,9 @@ function handleMessage(message) {
|
||||
});
|
||||
|
||||
if (message.eager) {
|
||||
// We will ignore any failures at this time
|
||||
// and wait to handle them until the build finishes
|
||||
// If there were any failures, we will stop applying eager updates for now
|
||||
// and wait until after the build finishes to handle the failures
|
||||
applyEagerUpdates = succeeded;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -138,6 +157,7 @@ function handleMessage(message) {
|
||||
}
|
||||
|
||||
let socket;
|
||||
let disconnected = false;
|
||||
let pendingMessages = [];
|
||||
|
||||
function send(message) {
|
||||
@@ -155,23 +175,34 @@ function connect() {
|
||||
return;
|
||||
}
|
||||
|
||||
let wsUrl = Meteor.absoluteUrl('/__meteor__hmr__/websocket');
|
||||
// If we've successfully connected and then was disconnected, we avoid showing
|
||||
// any more connection errors in the console until we've connected again
|
||||
let logDisconnect = !disconnected;
|
||||
let wsUrl = Meteor.absoluteUrl('__meteor__hmr__/websocket');
|
||||
const protocol = wsUrl.startsWith('https://') ? 'wss://' : 'ws://';
|
||||
wsUrl = wsUrl.replace(/^.+\/\//, protocol);
|
||||
socket = new WebSocket(wsUrl);
|
||||
|
||||
socket.addEventListener('close', function () {
|
||||
socket = null;
|
||||
console.log('HMR: websocket closed');
|
||||
|
||||
if (logDisconnect) {
|
||||
console.log('HMR: websocket closed');
|
||||
}
|
||||
|
||||
disconnected = true;
|
||||
setTimeout(connect, 2000);
|
||||
});
|
||||
|
||||
socket.addEventListener('open', function () {
|
||||
logDisconnect = true;
|
||||
disconnected = false;
|
||||
|
||||
console.log('HMR: connected');
|
||||
socket.send(JSON.stringify({
|
||||
type: 'register',
|
||||
arch,
|
||||
secret: __meteor_runtime_config__._hmrSecret,
|
||||
secret: hmrSecret,
|
||||
appId: __meteor_runtime_config__.appId,
|
||||
}));
|
||||
|
||||
@@ -186,11 +217,14 @@ function connect() {
|
||||
socket.addEventListener('message', function (event) {
|
||||
handleMessage(JSON.parse(event.data));
|
||||
});
|
||||
|
||||
socket.addEventListener('error', console.error);
|
||||
}
|
||||
|
||||
connect();
|
||||
if (enabled) {
|
||||
connect();
|
||||
} else {
|
||||
// Always fall back to hot code push if HMR is disabled
|
||||
mustReload = true;
|
||||
}
|
||||
|
||||
function requestChanges() {
|
||||
send({
|
||||
@@ -441,7 +475,7 @@ let nonRefreshableVersion = initialVersions.versionNonRefreshable;
|
||||
let replaceableVersion = initialVersions.versionReplaceable;
|
||||
|
||||
Meteor.startup(() => {
|
||||
if (!enabled) {
|
||||
if (!supportedArch) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -457,7 +491,12 @@ Meteor.startup(() => {
|
||||
pendingReload();
|
||||
} else if (doc.versionReplaceable !== replaceableVersion) {
|
||||
replaceableVersion = doc.versionReplaceable;
|
||||
requestChanges();
|
||||
if (enabled && !mustReload) {
|
||||
requestChanges();
|
||||
} else {
|
||||
mustReload = true;
|
||||
pendingReload();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Package.describe({
|
||||
name: 'hot-module-replacement',
|
||||
version: '0.2.0',
|
||||
version: '0.3.0-beta230.0',
|
||||
summary: 'Update code in development without reloading the page',
|
||||
documentation: 'README.md',
|
||||
debugOnly: true
|
||||
|
||||
@@ -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.2.1'
|
||||
version: '1.3.0-beta230.0'
|
||||
});
|
||||
|
||||
Cordova.depends({
|
||||
@@ -14,9 +14,9 @@ Cordova.depends({
|
||||
});
|
||||
|
||||
Package.onUse(function(api) {
|
||||
api.addFiles('mobile-launch-screen.js', 'web');
|
||||
api.addFiles('default-behavior.js', 'web');
|
||||
api.use(['blaze', 'templating'], 'web', { weak: true });
|
||||
api.addFiles('mobile-launch-screen.js', 'web.cordova');
|
||||
api.addFiles('default-behavior.js', 'web.cordova');
|
||||
api.use(['blaze', 'templating'], 'web.cordova', { weak: true });
|
||||
|
||||
api.export('LaunchScreen');
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Package.describe({
|
||||
summary: "The Meteor command-line tool",
|
||||
version: '2.2.0'
|
||||
version: '2.3.0-beta.0'
|
||||
});
|
||||
|
||||
Package.includeTool();
|
||||
|
||||
12
packages/promise/.npm/package/npm-shrinkwrap.json
generated
12
packages/promise/.npm/package/npm-shrinkwrap.json
generated
@@ -7,14 +7,14 @@
|
||||
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
|
||||
},
|
||||
"meteor-promise": {
|
||||
"version": "0.8.7",
|
||||
"resolved": "https://registry.npmjs.org/meteor-promise/-/meteor-promise-0.8.7.tgz",
|
||||
"integrity": "sha512-wAu9XI3+35H1YyhTnnk5QXCfdrho5n/0Ltj65DhsUwtFCuktV7hre92FjtJgBbs+RHj5/iZ8Zcbml40EGLcFTQ=="
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/meteor-promise/-/meteor-promise-0.9.0.tgz",
|
||||
"integrity": "sha512-O1Fj1Oa5FfyIkAkDtZVnoYYEIC3miy7lvEeIQZVYunGSbOuivSbfAiPPsD+P45WNlcBALhUo94UzlHeIKBYNuQ=="
|
||||
},
|
||||
"promise": {
|
||||
"version": "8.0.2",
|
||||
"resolved": "https://registry.npmjs.org/promise/-/promise-8.0.2.tgz",
|
||||
"integrity": "sha512-EIyzM39FpVOMbqgzEHhxdrEhtOSDOtjMZQ0M6iVfCE+kWNgCkAyOdnuCWqfmflylftfadU6FkiMgHZA2kUzwRw=="
|
||||
"version": "8.1.0",
|
||||
"resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz",
|
||||
"integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
Package.describe({
|
||||
name: "promise",
|
||||
version: "0.11.2",
|
||||
version: "0.12.0-beta230.0",
|
||||
summary: "ECMAScript 2015 Promise polyfill with Fiber support",
|
||||
git: "https://github.com/meteor/promise",
|
||||
documentation: "README.md"
|
||||
});
|
||||
|
||||
Npm.depends({
|
||||
"meteor-promise": "0.8.7",
|
||||
"promise": "8.0.2"
|
||||
"meteor-promise": "0.9.0",
|
||||
"promise": "8.1.0"
|
||||
});
|
||||
|
||||
Package.onUse(function(api) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Package.describe({
|
||||
name: "typescript",
|
||||
version: "4.2.2",
|
||||
version: "4.2.4-beta230.0",
|
||||
summary: "Compiler plugin that compiles TypeScript and ECMAScript in .ts and .tsx files",
|
||||
documentation: "README.md"
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Package.describe({
|
||||
summary: "Serves a Meteor app over HTTP",
|
||||
version: '1.10.1'
|
||||
version: '1.11.0-beta230.0'
|
||||
});
|
||||
|
||||
Npm.depends({"basic-auth-connect": "1.0.0",
|
||||
|
||||
@@ -18,7 +18,7 @@ const removeTestSocketFile = () => {
|
||||
}
|
||||
|
||||
Tinytest.add("socket file - don't remove a non-socket file", test => {
|
||||
writeFileSync(testSocketFile);
|
||||
writeFileSync(testSocketFile, "");
|
||||
test.throws(
|
||||
() => { removeExistingSocketFile(testSocketFile); },
|
||||
/An existing file was found/
|
||||
@@ -58,7 +58,7 @@ Tinytest.add('socket file - remove socket file on exit', test => {
|
||||
const testEventEmitter = new EventEmitter();
|
||||
registerSocketFileCleanup(testSocketFile, testEventEmitter);
|
||||
['exit', 'SIGINT', 'SIGHUP', 'SIGTERM'].forEach(signal => {
|
||||
writeFileSync(testSocketFile);
|
||||
writeFileSync(testSocketFile, "");
|
||||
test.isNotUndefined(statSync(testSocketFile));
|
||||
testEventEmitter.emit(signal);
|
||||
test.throws(
|
||||
|
||||
@@ -428,10 +428,6 @@ WebAppInternals.staticFilesMiddleware = async function (
|
||||
res,
|
||||
next,
|
||||
) {
|
||||
if ('GET' != req.method && 'HEAD' != req.method && 'OPTIONS' != req.method) {
|
||||
next();
|
||||
return;
|
||||
}
|
||||
var pathname = parseRequest(req).pathname;
|
||||
try {
|
||||
pathname = decodeURIComponent(pathname);
|
||||
@@ -441,11 +437,21 @@ WebAppInternals.staticFilesMiddleware = async function (
|
||||
}
|
||||
|
||||
var serveStaticJs = function (s) {
|
||||
res.writeHead(200, {
|
||||
'Content-type': 'application/javascript; charset=UTF-8'
|
||||
});
|
||||
res.write(s);
|
||||
res.end();
|
||||
if (req.method === 'GET' || req.method === 'HEAD') {
|
||||
res.writeHead(200, {
|
||||
'Content-type': 'application/javascript; charset=UTF-8',
|
||||
'Content-Length': Buffer.byteLength(s),
|
||||
});
|
||||
res.write(s);
|
||||
res.end();
|
||||
} else {
|
||||
const status = req.method === 'OPTIONS' ? 200 : 405;
|
||||
res.writeHead(status, {
|
||||
'Allow': 'OPTIONS, GET, HEAD',
|
||||
'Content-Length': '0',
|
||||
});
|
||||
res.end();
|
||||
}
|
||||
};
|
||||
|
||||
if (_.has(additionalStaticJs, pathname) &&
|
||||
@@ -478,6 +484,16 @@ WebAppInternals.staticFilesMiddleware = async function (
|
||||
next();
|
||||
return;
|
||||
}
|
||||
// "send" will handle HEAD & GET requests
|
||||
if (req.method !== 'HEAD' && req.method !== 'GET') {
|
||||
const status = req.method === 'OPTIONS' ? 200 : 405;
|
||||
res.writeHead(status, {
|
||||
'Allow': 'OPTIONS, GET, HEAD',
|
||||
'Content-Length': '0',
|
||||
})
|
||||
res.end();
|
||||
return;
|
||||
}
|
||||
|
||||
// We don't need to call pause because, unlike 'static', once we call into
|
||||
// 'send' and yield to the event loop, we never call another handler with
|
||||
@@ -524,6 +540,7 @@ WebAppInternals.staticFilesMiddleware = async function (
|
||||
}
|
||||
|
||||
if (info.content) {
|
||||
res.setHeader('Content-Length', Buffer.byteLength(info.content));
|
||||
res.write(info.content);
|
||||
res.end();
|
||||
} else {
|
||||
@@ -973,6 +990,13 @@ function runWebAppServer() {
|
||||
if (! appUrl(req.url)) {
|
||||
return next();
|
||||
|
||||
} else if (req.method !== 'HEAD' && req.method !== 'GET') {
|
||||
const status = req.method === 'OPTIONS' ? 200 : 405;
|
||||
res.writeHead(status, {
|
||||
'Allow': 'OPTIONS, GET, HEAD',
|
||||
'Content-Length': '0',
|
||||
})
|
||||
res.end();
|
||||
} else {
|
||||
var headers = {
|
||||
'Content-Type': 'text/html; charset=utf-8'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"track": "METEOR",
|
||||
"version": "2.2",
|
||||
"version": "2.3-beta.0",
|
||||
"recommended": false,
|
||||
"official": false,
|
||||
"description": "Meteor"
|
||||
|
||||
@@ -5,10 +5,10 @@ set -u
|
||||
|
||||
UNAME=$(uname)
|
||||
ARCH=$(uname -m)
|
||||
NODE_VERSION=12.22.1
|
||||
NODE_VERSION=14.17.0
|
||||
MONGO_VERSION_64BIT=4.4.4
|
||||
MONGO_VERSION_32BIT=3.2.22
|
||||
NPM_VERSION=6.14.12
|
||||
NPM_VERSION=6.14.13
|
||||
|
||||
# If we built Node from source on Jenkins, this is the build number.
|
||||
NODE_BUILD_NUMBER=
|
||||
|
||||
55
scripts/ci/run-selftest-ci.sh
Normal file
55
scripts/ci/run-selftest-ci.sh
Normal file
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
||||
ulimit -c unlimited; # Set core dump size as Ubuntu 14.04 lacks prlimit.
|
||||
ulimit -a # Display all ulimit settings for transparency.
|
||||
|
||||
METEOR_SELF_TEST_RETRIES=0
|
||||
|
||||
pushd tools
|
||||
# Ensure that meteor/tools has no TypeScript errors.
|
||||
echo "install @types/node"
|
||||
npm install @types/node --save-dev
|
||||
echo "typescript compiler starting"
|
||||
../meteor npx tsc --noEmit
|
||||
echo "typescript compiler finished"
|
||||
popd
|
||||
echo "meteor get-ready starting"
|
||||
./meteor --get-ready
|
||||
echo "meteor get-ready finished"
|
||||
|
||||
# selftest
|
||||
echo "meteor self-test first 0-50 starting"
|
||||
./meteor self-test \
|
||||
--headless \
|
||||
--without-tag "custom-warehouse" \
|
||||
--retries ${METEOR_SELF_TEST_RETRIES} \
|
||||
--exclude "add debugOnly and prodOnly packages" \
|
||||
--limit 50 \
|
||||
--skip 0
|
||||
echo "meteor self-test first 0-50 finished"
|
||||
echo "meteor self-test first 51-100 starting"
|
||||
./meteor self-test \
|
||||
--headless \
|
||||
--without-tag "custom-warehouse" \
|
||||
--retries ${METEOR_SELF_TEST_RETRIES} \
|
||||
--exclude "add debugOnly and prodOnly packages" \
|
||||
--limit 100 \
|
||||
--skip 50
|
||||
echo "meteor self-test first 51-100 finished"
|
||||
echo "meteor self-test first 101- starting"
|
||||
./meteor self-test \
|
||||
--headless \
|
||||
--without-tag "custom-warehouse" \
|
||||
--retries ${METEOR_SELF_TEST_RETRIES} \
|
||||
--exclude "add debugOnly and prodOnly packages" \
|
||||
--skip 100
|
||||
echo "meteor self-test first 101- finished"
|
||||
echo "meteor self-test isolated starting"
|
||||
./meteor self-test \
|
||||
'add debugOnly and prodOnly packages' \
|
||||
--retries ${METEOR_SELF_TEST_RETRIES} \
|
||||
--headless
|
||||
echo "meteor self-test isolated finished"
|
||||
@@ -10,13 +10,13 @@ var packageJson = {
|
||||
dependencies: {
|
||||
// Keep the versions of these packages consistent with the versions
|
||||
// found in dev-bundle-tool-package.js.
|
||||
fibers: "4.0.3",
|
||||
"meteor-promise": "0.8.7",
|
||||
promise: "8.0.2",
|
||||
fibers: "5.0.0",
|
||||
"meteor-promise": "0.9.0",
|
||||
promise: "8.1.0",
|
||||
reify: "0.20.12",
|
||||
"@babel/parser": "7.9.4",
|
||||
"@types/underscore": "1.9.2",
|
||||
underscore: "1.9.1",
|
||||
"@babel/parser": "7.11.5",
|
||||
"@types/underscore": "1.10.24",
|
||||
underscore: "1.11.0",
|
||||
"source-map-support": "https://github.com/meteor/node-source-map-support/tarball/1912478769d76e5df4c365e147f25896aee6375e",
|
||||
"@types/semver": "5.4.0",
|
||||
semver: "5.4.1"
|
||||
@@ -24,7 +24,7 @@ var packageJson = {
|
||||
// These are only used in dev mode (by shell.js) so end-users can avoid
|
||||
// needing to install them if they use `npm install --production`.
|
||||
devDependencies: {
|
||||
split2: "2.1.1",
|
||||
split2: "2.2.0",
|
||||
multipipe: "1.0.2",
|
||||
chalk: "0.5.1"
|
||||
}
|
||||
|
||||
@@ -10,61 +10,62 @@ var packageJson = {
|
||||
dependencies: {
|
||||
// Explicit dependency because we are replacing it with a bundled version
|
||||
// and we want to make sure there are no dependencies on a higher version
|
||||
npm: "6.14.12",
|
||||
npm: "6.14.13",
|
||||
pacote: "https://github.com/meteor/pacote/tarball/a81b0324686e85d22c7688c47629d4009000e8b8",
|
||||
"node-gyp": "6.0.1",
|
||||
"node-pre-gyp": "0.14.0",
|
||||
typescript: "4.2.2",
|
||||
"meteor-babel": "7.10.7",
|
||||
"node-gyp": "8.0.0",
|
||||
"node-pre-gyp": "0.15.0",
|
||||
typescript: "4.2.4",
|
||||
"@meteorjs/babel": "7.11.0",
|
||||
// Keep the versions of these packages consistent with the versions
|
||||
// found in dev-bundle-server-package.js.
|
||||
"meteor-promise": "0.8.7",
|
||||
fibers: "4.0.3",
|
||||
"meteor-promise": "0.9.0",
|
||||
fibers: "5.0.0",
|
||||
reify: "0.20.12",
|
||||
// So that Babel can emit require("@babel/runtime/helpers/...") calls.
|
||||
"@babel/runtime": "7.9.2",
|
||||
"@babel/runtime": "7.13.17",
|
||||
// For backwards compatibility with isopackets that still depend on
|
||||
// babel-runtime rather than @babel/runtime.
|
||||
"babel-runtime": "7.0.0-beta.3",
|
||||
"@types/underscore": "1.9.2",
|
||||
underscore: "1.9.1",
|
||||
"@types/underscore": "1.11.1",
|
||||
underscore: "1.13.1",
|
||||
"source-map-support": "https://github.com/meteor/node-source-map-support/tarball/1912478769d76e5df4c365e147f25896aee6375e",
|
||||
"@types/semver": "5.4.0",
|
||||
semver: "5.4.1",
|
||||
request: "2.88.0",
|
||||
uuid: "3.3.2",
|
||||
"graceful-fs": "4.2.2",
|
||||
request: "2.88.2",
|
||||
uuid: "3.4.0",
|
||||
"graceful-fs": "4.2.6",
|
||||
fstream: "https://github.com/meteor/fstream/tarball/cf4ea6c175355cec7bee38311e170d08c4078a5d",
|
||||
tar: "2.2.1",
|
||||
tar: "2.2.2",
|
||||
// Fork of kexec@3.0.0 with my Node.js 12 compatibility PR
|
||||
// https://github.com/jprichardson/node-kexec/pull/37 applied.
|
||||
// TODO: We should replace this with: https://github.com/jprichardson/node-kexec/pull/38
|
||||
kexec: "https://github.com/meteor/node-kexec/tarball/f29f54037c7db6ad29e1781463b182e5929215a0",
|
||||
"source-map": "0.7.3",
|
||||
chalk: "0.5.1",
|
||||
sqlite3: "4.1.0",
|
||||
"http-proxy": "1.16.2",
|
||||
sqlite3: "5.0.2",
|
||||
"http-proxy": "1.18.1",
|
||||
"is-reachable": "3.1.0",
|
||||
"wordwrap": "0.0.2",
|
||||
"moment": "2.20.1",
|
||||
"wordwrap": "1.0.0",
|
||||
"moment": "2.29.1",
|
||||
"rimraf": "2.6.2",
|
||||
"glob": "7.1.2",
|
||||
"glob": "7.1.6",
|
||||
ignore: "3.3.7",
|
||||
// XXX: When we update this, see if it fixes this Github issue:
|
||||
// https://github.com/jgm/CommonMark/issues/276 . If it does, remove the
|
||||
// workaround from the tool.
|
||||
"commonmark": "0.15.0",
|
||||
escope: "3.6.0",
|
||||
split2: "2.2.0",
|
||||
split2: "3.2.2",
|
||||
multipipe: "2.0.1",
|
||||
pathwatcher: "8.1.0",
|
||||
// The @wry/context package version must be compatible with the
|
||||
// version constraint imposed by optimism/package.json.
|
||||
optimism: "0.11.3",
|
||||
"@wry/context": "0.4.4",
|
||||
'lru-cache': '4.1.3',
|
||||
"anser": "1.4.8",
|
||||
'xmlbuilder2': '1.3.0',
|
||||
"ws": "7.2.5"
|
||||
optimism: "0.12.2",
|
||||
"@wry/context": "0.5.2",
|
||||
'lru-cache': '4.1.5',
|
||||
"anser": "2.0.1",
|
||||
'xmlbuilder2': '1.8.1',
|
||||
"ws": "7.4.5"
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -4,7 +4,8 @@ $DebugPreference = "Continue"
|
||||
Import-Module -Force "$PSScriptRoot\windows\dev-bundle-lib.psm1"
|
||||
$PLATFORM = Get-MeteorPlatform
|
||||
|
||||
$PYTHON_VERSION = "2.7.14" # For node-gyp
|
||||
$PYTHON_VERSION = "3.9.5" # For node-gyp
|
||||
& cmd /c 'du 2>&1'
|
||||
|
||||
$dirCheckout = (Get-Item $PSScriptRoot).parent.FullName
|
||||
$shCommon = Join-Path $PSScriptRoot 'build-dev-bundle-common.sh'
|
||||
@@ -19,7 +20,6 @@ $BUNDLE_VERSION = Read-VariableFromShellScript "${dirCheckout}\meteor" 'BUNDLE_V
|
||||
|
||||
# extract the major package versions from the build-dev-bundle-common script.
|
||||
$MONGO_VERSION_64BIT = Read-VariableFromShellScript $shCommon 'MONGO_VERSION_64BIT'
|
||||
$MONGO_VERSION_32BIT = Read-VariableFromShellScript $shCommon 'MONGO_VERSION_32BIT'
|
||||
|
||||
$NPM_VERSION = Read-VariableFromShellScript $shCommon 'NPM_VERSION'
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@ export PATH="$DIR/bin:$PATH"
|
||||
cd "$DIR/lib"
|
||||
# Overwrite the bundled version with the latest version of npm.
|
||||
npm install "npm@$NPM_VERSION"
|
||||
|
||||
npm config set python `which python3`
|
||||
which node
|
||||
which npm
|
||||
npm version
|
||||
@@ -176,7 +176,7 @@ find . -path '*/esprima-fb/test' | xargs rm -rf
|
||||
INSTALLED_NPM_VERSION=$(cat "$DIR/lib/node_modules/npm/package.json" |
|
||||
xargs -0 node -e "console.log(JSON.parse(process.argv[1]).version)")
|
||||
if [ "$INSTALLED_NPM_VERSION" != "$NPM_VERSION" ]; then
|
||||
echo "Unexpected NPM version in lib/node_modules: $INSTALLED_NPM_VERSION"
|
||||
echo "Error: Unexpected NPM version in lib/node_modules: $INSTALLED_NPM_VERSION"
|
||||
echo "Update this check if you know what you're doing."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -219,7 +219,7 @@ var updatePackageMetadata = function (packageSource, conn) {
|
||||
// Refresh, so that we actually learn about the thing we just published.
|
||||
refreshOfficialCatalogOrDie();
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
main.registerCommand({
|
||||
name: 'publish',
|
||||
@@ -2302,9 +2302,18 @@ main.registerCommand({
|
||||
var version = projectContext.packageMap.getInfo(constraint.package).version;
|
||||
var versionRecord = projectContext.projectCatalog.getVersion(
|
||||
constraint.package, version);
|
||||
var deprecatedMessage = ""
|
||||
if (versionRecord.deprecated) {
|
||||
if (versionRecord.deprecatedMessage) {
|
||||
deprecatedMessage = ` - DEPRECATED: ${versionRecord.deprecatedMessage}`
|
||||
} else {
|
||||
deprecatedMessage = ' - DEPRECATED'
|
||||
}
|
||||
}
|
||||
Console.info(
|
||||
constraint.package +
|
||||
(versionRecord.description ? (": " + versionRecord.description) : ""));
|
||||
(versionRecord.description ? (": " + versionRecord.description) : "") + deprecatedMessage
|
||||
);
|
||||
});
|
||||
|
||||
return exitCode;
|
||||
|
||||
@@ -929,7 +929,8 @@ var buildCommands = {
|
||||
// like progress bars and spinners are unimportant.
|
||||
headless: { type: Boolean },
|
||||
verbose: { type: Boolean, short: "v" },
|
||||
'allow-incompatible-update': { type: Boolean }
|
||||
'allow-incompatible-update': { type: Boolean },
|
||||
platforms: { type: String }
|
||||
},
|
||||
catalogRefresh: new catalog.Refresh.Never()
|
||||
};
|
||||
@@ -1017,13 +1018,29 @@ var buildCommand = function (options) {
|
||||
}
|
||||
|
||||
const appName = files.pathBasename(options.appDir);
|
||||
let parsedCordovaServerPort;
|
||||
let selectedPlatforms = null;
|
||||
if (options.platforms) {
|
||||
const platformsArray = options.platforms.split(",");
|
||||
|
||||
platformsArray.forEach(plat => {
|
||||
if (![...excludableWebArchs, 'android', 'ios'].includes(plat)) {
|
||||
throw new Error(`Not allowed platform on '--platforms' flag: ${plat}`)
|
||||
}
|
||||
})
|
||||
|
||||
selectedPlatforms = platformsArray;
|
||||
}
|
||||
|
||||
let cordovaPlatforms;
|
||||
let parsedMobileServerUrl;
|
||||
let parsedCordovaServerPort;
|
||||
if (!serverOnly) {
|
||||
cordovaPlatforms = projectContext.platformList.getCordovaPlatforms();
|
||||
|
||||
if (selectedPlatforms) {
|
||||
cordovaPlatforms = _.intersection(selectedPlatforms, cordovaPlatforms)
|
||||
}
|
||||
|
||||
if (process.platform !== 'darwin' && _.contains(cordovaPlatforms, 'ios')) {
|
||||
cordovaPlatforms = _.without(cordovaPlatforms, 'ios');
|
||||
Console.warn("Currently, it is only possible to build iOS apps \
|
||||
@@ -1048,6 +1065,25 @@ on an OS X system.");
|
||||
cordovaPlatforms = [];
|
||||
}
|
||||
|
||||
// If we specified some platforms, we need to build what was specified.
|
||||
// For example, if we want to build only android, there is no need to build
|
||||
// web.browser.
|
||||
let webArchs;
|
||||
if (selectedPlatforms) {
|
||||
const filteredArchs = projectContext.platformList
|
||||
.getWebArchs()
|
||||
.filter(arch => selectedPlatforms.includes(arch));
|
||||
|
||||
if (
|
||||
!_.isEmpty(cordovaPlatforms) &&
|
||||
!filteredArchs.includes('web.cordova')
|
||||
) {
|
||||
filteredArchs.push('web.cordova');
|
||||
}
|
||||
|
||||
webArchs = filteredArchs.length ? filteredArchs : undefined;
|
||||
}
|
||||
|
||||
var buildDir = projectContext.getProjectLocalDirectory('build_tar');
|
||||
var outputPath = files.pathResolve(options.args[0]); // get absolute path
|
||||
|
||||
@@ -1088,6 +1124,7 @@ ${Console.command("meteor build ../output")}`,
|
||||
// packages with binary npm dependencies
|
||||
serverArch: bundleArch,
|
||||
buildMode: options.debug ? 'development' : 'production',
|
||||
webArchs,
|
||||
},
|
||||
});
|
||||
if (bundleResult.errors) {
|
||||
|
||||
@@ -425,6 +425,8 @@ Options:
|
||||
downgraded to versions that are potentially incompatible
|
||||
with the current versions, if required to satisfy all
|
||||
package version constraints.
|
||||
--platforms Builds only the specified platforms (when available).
|
||||
|
||||
|
||||
|
||||
>>> lint
|
||||
|
||||
@@ -604,7 +604,7 @@ Fiber(function () {
|
||||
|
||||
// Check required Node version.
|
||||
// This code is duplicated in tools/server/boot.js.
|
||||
var MIN_NODE_VERSION = 'v12.0.0';
|
||||
var MIN_NODE_VERSION = 'v14.0.0';
|
||||
if (require('semver').lt(process.version, MIN_NODE_VERSION)) {
|
||||
Console.error(
|
||||
'Meteor requires Node ' + MIN_NODE_VERSION + ' or later.');
|
||||
|
||||
@@ -78,10 +78,6 @@ const CARRIAGE_RETURN = process.platform === 'win32' &&
|
||||
const FORCE_PRETTY = process.env.METEOR_PRETTY_OUTPUT &&
|
||||
process.env.METEOR_PRETTY_OUTPUT != '0';
|
||||
|
||||
if (! process.env.METEOR_COLOR) {
|
||||
chalk.enabled = false;
|
||||
}
|
||||
|
||||
const STATUS_MAX_LENGTH = 40;
|
||||
|
||||
const PROGRESS_MAX_WIDTH = 40;
|
||||
|
||||
2
tools/cordova/builder.js
vendored
2
tools/cordova/builder.js
vendored
@@ -496,7 +496,7 @@ export class CordovaBuilder {
|
||||
ROOT_URL: mobileServerUrl,
|
||||
// XXX propagate it from this.options?
|
||||
ROOT_URL_PATH_PREFIX: parsedUrl.pathname.replace(/\/$/,"") || '',
|
||||
DDP_DEFAULT_CONNECTION_URL: mobileServerUrl,
|
||||
DDP_DEFAULT_CONNECTION_URL: process.env.DDP_DEFAULT_CONNECTION_URL || mobileServerUrl,
|
||||
autoupdate: {
|
||||
versions: {
|
||||
"web.cordova": {
|
||||
|
||||
4
tools/cordova/project.js
vendored
4
tools/cordova/project.js
vendored
@@ -266,9 +266,9 @@ outdated platforms`);
|
||||
builder.writeConfigXmlAndCopyResources();
|
||||
builder.copyWWW(bundlePath);
|
||||
|
||||
this.ensurePlatformsAreSynchronized();
|
||||
this.ensurePluginsAreSynchronized(pluginVersions,
|
||||
builder.pluginsConfiguration);
|
||||
builder.pluginsConfiguration);
|
||||
this.ensurePlatformsAreSynchronized();
|
||||
|
||||
// Temporary workaround for Cordova iOS bug until
|
||||
// https://issues.apache.org/jira/browse/CB-10885 is fixed
|
||||
|
||||
@@ -390,25 +390,25 @@ export function treeHash(root: string, optionsParams: {
|
||||
var absPath = pathJoin(root, relativePath);
|
||||
var stat = lstat(absPath);
|
||||
|
||||
if (stat.isDirectory()) {
|
||||
if (stat?.isDirectory()) {
|
||||
if (relativePath) {
|
||||
hash.update('dir ' + JSON.stringify(relativePath) + '\n');
|
||||
}
|
||||
readdir(absPath).forEach(entry => {
|
||||
traverse(pathJoin(relativePath, entry));
|
||||
});
|
||||
} else if (stat.isFile()) {
|
||||
} else if (stat?.isFile()) {
|
||||
if (!relativePath) {
|
||||
throw Error("must call files.treeHash on a directory");
|
||||
}
|
||||
hash.update('file ' + JSON.stringify(relativePath) + ' ' +
|
||||
stat.size + ' ' + fileHash(absPath) + '\n');
|
||||
stat?.size + ' ' + fileHash(absPath) + '\n');
|
||||
|
||||
// @ts-ignore
|
||||
if (stat.mode & 0o100) {
|
||||
hash.update('exec\n');
|
||||
}
|
||||
} else if (stat.isSymbolicLink()) {
|
||||
} else if (stat?.isSymbolicLink()) {
|
||||
if (!relativePath) {
|
||||
throw Error("must call files.treeHash on a directory");
|
||||
}
|
||||
@@ -416,7 +416,7 @@ export function treeHash(root: string, optionsParams: {
|
||||
JSON.stringify(readlink(absPath)) + '\n');
|
||||
}
|
||||
// ignore anything weirder
|
||||
};
|
||||
}
|
||||
|
||||
traverse('');
|
||||
|
||||
@@ -574,7 +574,7 @@ Profile("files.symlinkWithOverwrite", function symlinkWithOverwrite(
|
||||
return convertToOSPath(path).replace(/[\/\\]$/, "")
|
||||
}
|
||||
|
||||
if (lstat(target).isSymbolicLink() &&
|
||||
if (lstat(target)?.isSymbolicLink() &&
|
||||
normalizePath(readlink(target)) === normalizePath(source)) {
|
||||
// If the target already points to the desired source, we don't
|
||||
// need to do anything.
|
||||
@@ -622,7 +622,7 @@ export function getPathsInDir(dir: string, options: {
|
||||
|
||||
function pathIsDirectory(path: string) {
|
||||
var stat = lstat(path);
|
||||
return stat.isDirectory();
|
||||
return stat?.isDirectory() || false;
|
||||
}
|
||||
|
||||
readdir(absoluteDir).forEach(entry => {
|
||||
@@ -1235,7 +1235,7 @@ export function runJavaScript(code: string, {
|
||||
// node to run the code and parse its output. We instead run an
|
||||
// entirely different JS parser, from the Babel project, but
|
||||
// which at least has a nice API for reporting errors.
|
||||
const { parse } = require('meteor-babel');
|
||||
const { parse } = require('@meteorjs/babel');
|
||||
try {
|
||||
parse(wrapped, { strictMode: false });
|
||||
} catch (parseError) {
|
||||
|
||||
@@ -398,7 +398,7 @@ wrap((absRootDir: string, relDir: string) => {
|
||||
|
||||
const optimisticIsSymbolicLink = wrap((path: string) => {
|
||||
try {
|
||||
return lstat(path).isSymbolicLink();
|
||||
return lstat(path)?.isSymbolicLink();
|
||||
} catch (e) {
|
||||
if (e.code !== "ENOENT") throw e;
|
||||
dependOnParentDirectory(path);
|
||||
|
||||
@@ -89,7 +89,7 @@ function acquireWatcher(absPath: string, callback: EntryCallback) {
|
||||
}
|
||||
|
||||
function startNewWatcher(absPath: string): Entry {
|
||||
let stat: Stats | BigIntStats | null = null;
|
||||
let stat: Stats | BigIntStats | null | undefined = null;
|
||||
|
||||
if (DEDUPLICATE_BY_INO) {
|
||||
stat = statOrNull(absPath);
|
||||
|
||||
@@ -351,7 +351,7 @@ function readAndStatDirectory(absPath: string) {
|
||||
// Add slashes to the end of directories.
|
||||
const contentsWithSlashes: string[] = [];
|
||||
contents.forEach(entry => {
|
||||
let stat: Dirent | Stats | BigIntStats | null = entry;
|
||||
let stat: Dirent | Stats | BigIntStats | null | undefined = entry;
|
||||
let name = entry.name;
|
||||
|
||||
if (entry.isSymbolicLink()) {
|
||||
|
||||
@@ -363,7 +363,7 @@ Previous builder: ${previousBuilder.outputPath}, this builder: ${outputPath}`
|
||||
return;
|
||||
}
|
||||
|
||||
const babel = require("meteor-babel");
|
||||
const babel = require("@meteorjs/babel");
|
||||
const commonBabelOptions = babel.getDefaultOptions({
|
||||
nodeMajorVersion: parseInt(process.versions.node),
|
||||
typescript: true
|
||||
|
||||
@@ -212,7 +212,7 @@ exports._mainJsContents = [
|
||||
"",
|
||||
"process.argv.splice(2, 0, 'program.json');",
|
||||
"process.chdir(require('path').join(__dirname, 'programs', 'server'));",
|
||||
'require("./programs/server/runtime.js");',
|
||||
'require("./programs/server/runtime.js")({ cachePath: process.env.METEOR_REIFY_CACHE_DIR });',
|
||||
"require('./programs/server/boot.js');",
|
||||
].join("\n");
|
||||
|
||||
@@ -223,7 +223,7 @@ exports._mainJsContents = [
|
||||
// Represents a node_modules directory that we need to copy into the
|
||||
// bundle or otherwise make available at runtime.
|
||||
|
||||
export class NodeModulesDirectory {
|
||||
class NodeModulesDirectory {
|
||||
constructor({
|
||||
packageName,
|
||||
sourceRoot,
|
||||
@@ -874,7 +874,7 @@ class Target {
|
||||
hmrAvailable: sourceBatch.hmrAvailable,
|
||||
cacheKey
|
||||
},
|
||||
getFileOutput
|
||||
getFileOutput
|
||||
);
|
||||
});
|
||||
|
||||
@@ -1420,7 +1420,7 @@ class Target {
|
||||
if (typeof file.data === 'string') {
|
||||
file.data = Buffer.from(file.data, "utf8");
|
||||
}
|
||||
const replaceable = possiblyReplaceable &&
|
||||
const replaceable = possiblyReplaceable &&
|
||||
file.data.equals(source._source.contents());
|
||||
|
||||
const newFile = new File({
|
||||
@@ -2868,7 +2868,7 @@ function addSourceMappingURL(data, url, targetPath) {
|
||||
|
||||
parts.push(
|
||||
newLineBuffer,
|
||||
Buffer.from("//# sourceMappingURL=" + url, "utf8"),
|
||||
Buffer.from("//# sourceMappingURL=" + (process.env.ROOT_URL || "") + url, "utf8"),
|
||||
newLineBuffer // trailing newline
|
||||
);
|
||||
|
||||
@@ -3130,7 +3130,7 @@ Find out more about Meteor at meteor.com.
|
||||
* - onJsOutputFiles Called for each unibuild in a client arch with a list of js files
|
||||
* that will be linked, and a function to get their prelink output with their closure
|
||||
* and banner.
|
||||
*
|
||||
*
|
||||
* Returns an object with keys:
|
||||
* - errors: A buildmessage.MessageSet, or falsy if bundling succeeded.
|
||||
* - serverWatchSet: Information about server files and paths that were
|
||||
@@ -3567,3 +3567,5 @@ exports.readJsImage = Profile(
|
||||
"bundler.readJsImage", function (controlFilePath) {
|
||||
return JsImage.readFromDisk(controlFilePath);
|
||||
});
|
||||
|
||||
exports.NodeModulesDirectory = NodeModulesDirectory;
|
||||
|
||||
@@ -2,7 +2,6 @@ var _ = require('underscore');
|
||||
|
||||
var archinfo = require('../utils/archinfo');
|
||||
var buildmessage = require('../utils/buildmessage.js');
|
||||
var bundler = require('./bundler.js');
|
||||
var isopack = require('./isopack.js');
|
||||
var meteorNpm = require('./meteor-npm.js');
|
||||
var watch = require('../fs/watch');
|
||||
@@ -13,6 +12,7 @@ var linterPluginModule = require('./linter-plugin.js');
|
||||
var compileStepModule = require('./compiler-deprecated-compile-step.js');
|
||||
var Profile = require('../tool-env/profile').Profile;
|
||||
import { SourceProcessorSet } from './build-plugin.js';
|
||||
import { NodeModulesDirectory, buildJsImage } from './bundler.js';
|
||||
|
||||
import {
|
||||
optimisticReadFile,
|
||||
@@ -66,7 +66,7 @@ compiler.compile = Profile(function (packageSource, options) {
|
||||
"` in package `" + packageSource.name + "`",
|
||||
rootPath: packageSource.sourceRoot
|
||||
}, function () {
|
||||
var buildResult = bundler.buildJsImage({
|
||||
var buildResult = buildJsImage({
|
||||
name: info.name,
|
||||
packageMap: packageMap,
|
||||
isopackCache: isopackCache,
|
||||
@@ -410,7 +410,7 @@ var compileUnibuild = Profile(function (options) {
|
||||
const nodeModulesDirectories = Object.create(null);
|
||||
|
||||
function addNodeModulesDirectory(options) {
|
||||
const nmd = new bundler.NodeModulesDirectory(options);
|
||||
const nmd = new NodeModulesDirectory(options);
|
||||
nodeModulesDirectories[nmd.sourcePath] = nmd;
|
||||
}
|
||||
|
||||
@@ -998,65 +998,3 @@ compiler.eachUsedUnibuild = function (
|
||||
export function isIsobuildFeaturePackage(packageName) {
|
||||
return packageName.startsWith('isobuild:');
|
||||
}
|
||||
|
||||
// If you update this data structure to add more feature packages, you should
|
||||
// update the wiki page here:
|
||||
// https://docs.meteor.com/api/packagejs.html#isobuild-features
|
||||
export const KNOWN_ISOBUILD_FEATURE_PACKAGES = {
|
||||
// This package directly calls Plugin.registerCompiler. Package authors
|
||||
// must explicitly depend on this feature package to use the API.
|
||||
'isobuild:compiler-plugin': ['1.0.0'],
|
||||
|
||||
// This package directly calls Plugin.registerMinifier. Package authors
|
||||
// must explicitly depend on this feature package to use the API.
|
||||
'isobuild:minifier-plugin': ['1.0.0'],
|
||||
|
||||
// This package directly calls Plugin.registerLinter. Package authors
|
||||
// must explicitly depend on this feature package to use the API.
|
||||
'isobuild:linter-plugin': ['1.0.0'],
|
||||
|
||||
// This package is only published in the isopack-2 format, not isopack-1 or
|
||||
// older. ie, it contains "source" files for compiler plugins, not just
|
||||
// JS/CSS/static assets/head/body.
|
||||
// This is implicitly added at publish time to any such package; package
|
||||
// authors don't have to add it explicitly. It isn't relevant for local
|
||||
// packages, which can be rebuilt if possible by the older tool.
|
||||
//
|
||||
// Specifically, this is to avoid the case where a package is published with a
|
||||
// dependency like `api.use('less@1.0.0 || 2.0.0')` and the publication
|
||||
// selects the newer compiler plugin version to generate the isopack. The
|
||||
// published package (if this feature package wasn't implicitly included)
|
||||
// could still be selected by the Version Solver to be used with an old
|
||||
// Isobuild... just because less@2.0.0 depends on isobuild:compiler-plugin
|
||||
// doesn't mean it couldn't choose less@1.0.0, which is not actually
|
||||
// compatible with this published package. (Constraints of the form described
|
||||
// above are not very helpful, but at least we can prevent old Isobuilds from
|
||||
// choking on confusing packages.)
|
||||
//
|
||||
// (Why not isobuild:isopack@2.0.0? Well, that would imply that Version Solver
|
||||
// would have to choose only one isobuild:isopack feature version, which
|
||||
// doesn't make sense here.)
|
||||
'isobuild:isopack-2': ['1.0.0'],
|
||||
|
||||
// This package uses the `prodOnly` metadata flag, which causes it to
|
||||
// automatically depend on the `isobuild:prod-only` feature package.
|
||||
'isobuild:prod-only': ['1.0.0'],
|
||||
|
||||
// This package depends on a specific version of Cordova. Package authors must
|
||||
// explicitly depend on this feature package to indicate that they are not
|
||||
// compatible with earlier Cordova versions, which is most likely a result of
|
||||
// the Cordova plugins they depend on.
|
||||
// One scenario is a package depending on a Cordova plugin or version
|
||||
// that is only available on npm, which means downloading the plugin is not
|
||||
// supported on versions of Cordova below 5.0.0.
|
||||
'isobuild:cordova': ['5.4.0'],
|
||||
|
||||
// This package requires functionality introduced in meteor-tool@1.5.0
|
||||
// to enable dynamic module fetching via import(...).
|
||||
'isobuild:dynamic-import': ['1.5.0'],
|
||||
|
||||
// This package ensures that processFilesFor{Bundle,Target,Package} are
|
||||
// allowed to return a Promise instead of having to await async
|
||||
// compilation using fibers and/or futures.
|
||||
'isobuild:async-plugins': ['1.6.1'],
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { parse } from 'meteor-babel';
|
||||
import { parse } from '@meteorjs/babel';
|
||||
import { analyze as analyzeScope } from 'escope';
|
||||
import LRU from "lru-cache";
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ class NpmDiscards {
|
||||
|
||||
shouldDiscard(candidatePath: string, isDirectory?: boolean): boolean {
|
||||
if (isDirectory === void 0) {
|
||||
isDirectory = files.lstat(candidatePath).isDirectory();
|
||||
isDirectory = files.lstat(candidatePath)?.isDirectory();
|
||||
}
|
||||
|
||||
for (let currentPath = candidatePath, parentPath;
|
||||
|
||||
@@ -63,7 +63,7 @@ export default class Resolver {
|
||||
private nodeModulesPaths: string[];
|
||||
private mainFields: string[];
|
||||
|
||||
public statOrNull = optimisticStatOrNull as (path: string) => Stats | BigIntStats | null;
|
||||
public statOrNull = optimisticStatOrNull as (path: string) => Stats | BigIntStats | null | undefined;
|
||||
|
||||
constructor({
|
||||
sourceRoot,
|
||||
|
||||
@@ -1,15 +1,78 @@
|
||||
|
||||
var _ = require('underscore');
|
||||
var buildmessage = require('../../utils/buildmessage.js');
|
||||
var files = require('../../fs/files');
|
||||
var watch = require('../../fs/watch');
|
||||
|
||||
var PackageSource = require('../../isobuild/package-source.js');
|
||||
import { KNOWN_ISOBUILD_FEATURE_PACKAGES } from '../../isobuild/compiler.js';
|
||||
import { sync as glob } from "glob";
|
||||
import { Profile } from "../../tool-env/profile";
|
||||
import {
|
||||
optimisticHashOrNull,
|
||||
} from "../../fs/optimistic";
|
||||
|
||||
// This variable was duplicated due to an issue on importing it.
|
||||
// The issue only happens on node 14, and is most surely related to this: https://nodejs.org/en/blog/release/v14.0.0/
|
||||
// !!! When changing this, also change on tools/project-context.js !!!
|
||||
const KNOWN_ISOBUILD_FEATURE_PACKAGES = {
|
||||
// This package directly calls Plugin.registerCompiler. Package authors
|
||||
// must explicitly depend on this feature package to use the API.
|
||||
'isobuild:compiler-plugin': ['1.0.0'],
|
||||
|
||||
// This package directly calls Plugin.registerMinifier. Package authors
|
||||
// must explicitly depend on this feature package to use the API.
|
||||
'isobuild:minifier-plugin': ['1.0.0'],
|
||||
|
||||
// This package directly calls Plugin.registerLinter. Package authors
|
||||
// must explicitly depend on this feature package to use the API.
|
||||
'isobuild:linter-plugin': ['1.0.0'],
|
||||
|
||||
// This package is only published in the isopack-2 format, not isopack-1 or
|
||||
// older. ie, it contains "source" files for compiler plugins, not just
|
||||
// JS/CSS/static assets/head/body.
|
||||
// This is implicitly added at publish time to any such package; package
|
||||
// authors don't have to add it explicitly. It isn't relevant for local
|
||||
// packages, which can be rebuilt if possible by the older tool.
|
||||
//
|
||||
// Specifically, this is to avoid the case where a package is published with a
|
||||
// dependency like `api.use('less@1.0.0 || 2.0.0')` and the publication
|
||||
// selects the newer compiler plugin version to generate the isopack. The
|
||||
// published package (if this feature package wasn't implicitly included)
|
||||
// could still be selected by the Version Solver to be used with an old
|
||||
// Isobuild... just because less@2.0.0 depends on isobuild:compiler-plugin
|
||||
// doesn't mean it couldn't choose less@1.0.0, which is not actually
|
||||
// compatible with this published package. (Constraints of the form described
|
||||
// above are not very helpful, but at least we can prevent old Isobuilds from
|
||||
// choking on confusing packages.)
|
||||
//
|
||||
// (Why not isobuild:isopack@2.0.0? Well, that would imply that Version Solver
|
||||
// would have to choose only one isobuild:isopack feature version, which
|
||||
// doesn't make sense here.)
|
||||
'isobuild:isopack-2': ['1.0.0'],
|
||||
|
||||
// This package uses the `prodOnly` metadata flag, which causes it to
|
||||
// automatically depend on the `isobuild:prod-only` feature package.
|
||||
'isobuild:prod-only': ['1.0.0'],
|
||||
|
||||
// This package depends on a specific version of Cordova. Package authors must
|
||||
// explicitly depend on this feature package to indicate that they are not
|
||||
// compatible with earlier Cordova versions, which is most likely a result of
|
||||
// the Cordova plugins they depend on.
|
||||
// One scenario is a package depending on a Cordova plugin or version
|
||||
// that is only available on npm, which means downloading the plugin is not
|
||||
// supported on versions of Cordova below 5.0.0.
|
||||
'isobuild:cordova': ['5.4.0'],
|
||||
|
||||
// This package requires functionality introduced in meteor-tool@1.5.0
|
||||
// to enable dynamic module fetching via import(...).
|
||||
'isobuild:dynamic-import': ['1.5.0'],
|
||||
|
||||
// This package ensures that processFilesFor{Bundle,Target,Package} are
|
||||
// allowed to return a Promise instead of having to await async
|
||||
// compilation using fibers and/or futures.
|
||||
'isobuild:async-plugins': ['1.6.1'],
|
||||
}
|
||||
|
||||
// LocalCatalog represents packages located in the application's
|
||||
// package directory, other package directories specified via an
|
||||
// environment variable, and core packages in the repo if meteor is
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
var assert = require("assert");
|
||||
var _ = require('underscore');
|
||||
|
||||
@@ -15,7 +16,68 @@ var tropohouse = require('./packaging/tropohouse.js');
|
||||
var utils = require('./utils/utils.js');
|
||||
var watch = require('./fs/watch');
|
||||
var Profile = require('./tool-env/profile').Profile;
|
||||
import { KNOWN_ISOBUILD_FEATURE_PACKAGES } from './isobuild/compiler.js';
|
||||
|
||||
// This variable was duplicated due to an issue on importing it.
|
||||
// The issue only happens on node 14, and is most surely related to this: https://nodejs.org/en/blog/release/v14.0.0/
|
||||
// !!! When changing this, also change on tools/packaging/catalog/catalog-local.js !!!
|
||||
const KNOWN_ISOBUILD_FEATURE_PACKAGES = {
|
||||
// This package directly calls Plugin.registerCompiler. Package authors
|
||||
// must explicitly depend on this feature package to use the API.
|
||||
'isobuild:compiler-plugin': ['1.0.0'],
|
||||
|
||||
// This package directly calls Plugin.registerMinifier. Package authors
|
||||
// must explicitly depend on this feature package to use the API.
|
||||
'isobuild:minifier-plugin': ['1.0.0'],
|
||||
|
||||
// This package directly calls Plugin.registerLinter. Package authors
|
||||
// must explicitly depend on this feature package to use the API.
|
||||
'isobuild:linter-plugin': ['1.0.0'],
|
||||
|
||||
// This package is only published in the isopack-2 format, not isopack-1 or
|
||||
// older. ie, it contains "source" files for compiler plugins, not just
|
||||
// JS/CSS/static assets/head/body.
|
||||
// This is implicitly added at publish time to any such package; package
|
||||
// authors don't have to add it explicitly. It isn't relevant for local
|
||||
// packages, which can be rebuilt if possible by the older tool.
|
||||
//
|
||||
// Specifically, this is to avoid the case where a package is published with a
|
||||
// dependency like `api.use('less@1.0.0 || 2.0.0')` and the publication
|
||||
// selects the newer compiler plugin version to generate the isopack. The
|
||||
// published package (if this feature package wasn't implicitly included)
|
||||
// could still be selected by the Version Solver to be used with an old
|
||||
// Isobuild... just because less@2.0.0 depends on isobuild:compiler-plugin
|
||||
// doesn't mean it couldn't choose less@1.0.0, which is not actually
|
||||
// compatible with this published package. (Constraints of the form described
|
||||
// above are not very helpful, but at least we can prevent old Isobuilds from
|
||||
// choking on confusing packages.)
|
||||
//
|
||||
// (Why not isobuild:isopack@2.0.0? Well, that would imply that Version Solver
|
||||
// would have to choose only one isobuild:isopack feature version, which
|
||||
// doesn't make sense here.)
|
||||
'isobuild:isopack-2': ['1.0.0'],
|
||||
|
||||
// This package uses the `prodOnly` metadata flag, which causes it to
|
||||
// automatically depend on the `isobuild:prod-only` feature package.
|
||||
'isobuild:prod-only': ['1.0.0'],
|
||||
|
||||
// This package depends on a specific version of Cordova. Package authors must
|
||||
// explicitly depend on this feature package to indicate that they are not
|
||||
// compatible with earlier Cordova versions, which is most likely a result of
|
||||
// the Cordova plugins they depend on.
|
||||
// One scenario is a package depending on a Cordova plugin or version
|
||||
// that is only available on npm, which means downloading the plugin is not
|
||||
// supported on versions of Cordova below 5.0.0.
|
||||
'isobuild:cordova': ['5.4.0'],
|
||||
|
||||
// This package requires functionality introduced in meteor-tool@1.5.0
|
||||
// to enable dynamic module fetching via import(...).
|
||||
'isobuild:dynamic-import': ['1.5.0'],
|
||||
|
||||
// This package ensures that processFilesFor{Bundle,Target,Package} are
|
||||
// allowed to return a Promise instead of having to await async
|
||||
// compilation using fibers and/or futures.
|
||||
'isobuild:async-plugins': ['1.6.1'],
|
||||
}
|
||||
|
||||
import {
|
||||
optimisticReadJsonOrNull,
|
||||
|
||||
@@ -65,7 +65,8 @@ class Runner {
|
||||
});
|
||||
}
|
||||
|
||||
const HMRPath = '/__meteor__hmr__/websocket';
|
||||
const basePath = utils.parseUrl(self.rootUrl).pathname || '';
|
||||
const HMRPath = basePath + '/__meteor__hmr__/websocket';
|
||||
|
||||
self.proxy = new Proxy({
|
||||
listenPort,
|
||||
|
||||
@@ -217,9 +217,18 @@ _.extend(AppProcess.prototype, {
|
||||
var shellDir = self.projectContext.getMeteorShellDirectory();
|
||||
files.mkdir_p(shellDir);
|
||||
|
||||
var reifyCacheVersion = watch.sha1(
|
||||
self.projectContext.releaseFile.fullReleaseName,
|
||||
);
|
||||
var reifyCacheDir = self.projectContext.getProjectLocalDirectory(
|
||||
`server-cache/reify/${reifyCacheVersion}`
|
||||
);
|
||||
files.mkdir_p(reifyCacheDir);
|
||||
|
||||
// We need to convert to OS path here because the running app doesn't
|
||||
// have access to path translation functions
|
||||
env.METEOR_SHELL_DIR = files.convertToOSPath(shellDir);
|
||||
env.METEOR_REIFY_CACHE_DIR = files.convertToOSPath(reifyCacheDir);
|
||||
|
||||
env.METEOR_PARENT_PID =
|
||||
process.env.METEOR_BAD_PARENT_PID_FOR_TEST ? "foobar" : process.pid;
|
||||
|
||||
@@ -177,18 +177,37 @@ export class HMRServer {
|
||||
return;
|
||||
}
|
||||
|
||||
// Try to do HMR without waiting for the build to finish
|
||||
// If it fails, the client will retry after the build finishes so
|
||||
// it can fall back to hot code push
|
||||
const sendEagerUpdate = (changeset) => {
|
||||
if (!this.connByArch[arch]) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.connByArch[arch].forEach(conn => {
|
||||
conn.send(JSON.stringify({
|
||||
type: 'changes',
|
||||
changeSets: [changeset],
|
||||
eager: true
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
this.cacheKeys[`${arch}-${name}`] = cacheKey;
|
||||
const previous = this.findLastChangeset(name, arch) || {};
|
||||
|
||||
if (!hmrAvailable) {
|
||||
this.changeSetsByArch[arch].push({
|
||||
let changeset = {
|
||||
name,
|
||||
reloadable: false,
|
||||
cacheKey,
|
||||
// TODO: use more accurate name
|
||||
linkedAt: Date.now()
|
||||
});
|
||||
};
|
||||
this.changeSetsByArch[arch].push(changeset);
|
||||
this._trimChangeSets(arch);
|
||||
sendEagerUpdate(changeset);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -235,19 +254,7 @@ export class HMRServer {
|
||||
this.changeSetsByArch[arch].push(result);
|
||||
this._trimChangeSets(arch);
|
||||
|
||||
// Try to do HMR without waiting for the build to finish
|
||||
// If it fails, it will retry after the build finishes so
|
||||
// it can fall back to hot code push
|
||||
if (this.connByArch[arch]) {
|
||||
this.connByArch[arch].forEach(conn => {
|
||||
conn.send(JSON.stringify({
|
||||
type: 'changes',
|
||||
changeSets: [result],
|
||||
eager: true
|
||||
}));
|
||||
});
|
||||
}
|
||||
return;
|
||||
sendEagerUpdate(result);
|
||||
}
|
||||
|
||||
_trimChangeSets(arch) {
|
||||
|
||||
@@ -10,7 +10,7 @@ var npmRequire = require('./npm-require.js').require;
|
||||
var Profile = require('./profile').Profile;
|
||||
|
||||
// This code is duplicated in tools/main.js.
|
||||
var MIN_NODE_VERSION = 'v12.0.0';
|
||||
var MIN_NODE_VERSION = 'v14.0.0';
|
||||
|
||||
var hasOwn = Object.prototype.hasOwnProperty;
|
||||
|
||||
|
||||
@@ -1,43 +1,139 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { createHash } = require("crypto");
|
||||
const Module = module.constructor;
|
||||
const Mp = Module.prototype;
|
||||
|
||||
Mp.resolve = function (id) {
|
||||
return Module._resolveFilename(id, this);
|
||||
};
|
||||
module.exports = function enable ({ cachePath, createLoader = true } = {}) {
|
||||
let cacheEnabled = !!cachePath;
|
||||
let cacheEntries = Object.create(null);
|
||||
|
||||
// Enable the module.{watch,export,...} runtime API needed by Reify.
|
||||
require("reify/lib/runtime").enable(Mp);
|
||||
|
||||
const moduleLoad = Mp.load;
|
||||
Mp.load = function (filename) {
|
||||
const result = moduleLoad.apply(this, arguments);
|
||||
if (typeof this.runSetters === "function") {
|
||||
// Make sure we call module.runSetters (or module.runModuleSetters, a
|
||||
// legacy synonym) whenever a module finishes loading.
|
||||
this.runSetters();
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
const resolved = Promise.resolve();
|
||||
Mp.dynamicImport = function (id) {
|
||||
return resolved.then(() => require(id));
|
||||
};
|
||||
|
||||
const reifyBabelParse = require("reify/lib/parsers/babel").parse;
|
||||
const reifyCompile = require("reify/lib/compiler").compile;
|
||||
const _compile = Mp._compile;
|
||||
Mp._compile = function (content, filename) {
|
||||
try {
|
||||
const result = reifyCompile(content, {
|
||||
parse: reifyBabelParse,
|
||||
generateLetDeclarations: false,
|
||||
ast: false,
|
||||
});
|
||||
if (!result.identical) {
|
||||
content = result.code;
|
||||
if (cachePath) {
|
||||
try {
|
||||
fs.readdirSync(cachePath).forEach(name => {
|
||||
cacheEntries[name] = true;
|
||||
});
|
||||
} catch (e) {
|
||||
if (e.code === 'ENOENT') {
|
||||
fs.mkdirSync(cachePath);
|
||||
} else {
|
||||
cacheEnabled = false;
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
return _compile.call(this, content, filename);
|
||||
}
|
||||
};
|
||||
|
||||
const Mp = Module.prototype;
|
||||
|
||||
Mp.resolve = function (id) {
|
||||
return Module._resolveFilename(id, this);
|
||||
};
|
||||
|
||||
// Enable the module.{watch,export,...} runtime API needed by Reify.
|
||||
require("reify/lib/runtime").enable(Mp);
|
||||
|
||||
const moduleLoad = Mp.load;
|
||||
Mp.load = function (filename) {
|
||||
const result = moduleLoad.apply(this, arguments);
|
||||
if (typeof this.runSetters === "function") {
|
||||
// Make sure we call module.runSetters (or module.runModuleSetters, a
|
||||
// legacy synonym) whenever a module finishes loading.
|
||||
this.runSetters();
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
const resolved = Promise.resolve();
|
||||
Mp.dynamicImport = function (id) {
|
||||
return resolved.then(() => require(id));
|
||||
};
|
||||
|
||||
const reifyVersion = require("reify/package.json").version;
|
||||
const reifyBabelParse = require("reify/lib/parsers/babel").parse;
|
||||
const reifyCompile = require("reify/lib/compiler").compile;
|
||||
|
||||
function compileContent (content) {
|
||||
let identical = true;
|
||||
|
||||
try {
|
||||
const result = reifyCompile(content, {
|
||||
parse: reifyBabelParse,
|
||||
generateLetDeclarations: false,
|
||||
ast: false,
|
||||
});
|
||||
if (!result.identical) {
|
||||
identical = false;
|
||||
content = result.code;
|
||||
}
|
||||
} finally {
|
||||
return { content, identical };
|
||||
}
|
||||
}
|
||||
|
||||
const _compile = Mp._compile;
|
||||
Mp._compile = function (content, filename, options) {
|
||||
// When cache is enabled, the file has already been compiled
|
||||
if (!options || !options.compiledWithReify) {
|
||||
content = compileContent(content).content;
|
||||
}
|
||||
|
||||
return _compile.call(this, content, filename);
|
||||
};
|
||||
|
||||
if (cacheEnabled) {
|
||||
const jsExt = Module._extensions.js;
|
||||
Module._extensions['.js'] = function (module, filename) {
|
||||
let stat = fs.statSync(filename);
|
||||
let baseKey = createHash("sha1")
|
||||
.update(`${reifyVersion}\0${filename}\0${stat.mtimeMs}\0${stat.ino}\0${stat.size}\0`)
|
||||
.digest('hex');
|
||||
|
||||
// When files don't use import/export, there is no reason to store
|
||||
// an identical copy of the file in the cache. Instead, it stores an empty
|
||||
// file with a different suffix to indicate the original file should be used
|
||||
let identicalKey = baseKey + '-identical.json';
|
||||
let key = baseKey + '.json';
|
||||
|
||||
let content;
|
||||
if (cacheEntries[key]) {
|
||||
content = fs.readFileSync(path.join(cachePath, key), 'utf8');
|
||||
} else if (cacheEntries[identicalKey]) {
|
||||
content = fs.readFileSync(filename, 'utf8');
|
||||
} else {
|
||||
let origContent = fs.readFileSync(filename, 'utf8');
|
||||
let result = compileContent(origContent);
|
||||
content = result.content;
|
||||
|
||||
if (result.identical) {
|
||||
writeFileLater(identicalKey, '');
|
||||
} else {
|
||||
writeFileLater(key, content);
|
||||
}
|
||||
}
|
||||
|
||||
return module._compile(content, filename, { compiledWithReify: true });
|
||||
}
|
||||
}
|
||||
|
||||
let immediateTimer = null;
|
||||
let pendingWrites = Object.create(null);
|
||||
function writeFileLater(key, content) {
|
||||
pendingWrites[key] = content;
|
||||
if (immediateTimer !== null) {
|
||||
return;
|
||||
}
|
||||
|
||||
immediateTimer = setImmediate(() => {
|
||||
immediateTimer = null;
|
||||
Object.keys(pendingWrites).forEach(key => {
|
||||
try {
|
||||
let targetPath = path.resolve(cachePath, key);
|
||||
let tempPath = targetPath + '.tmp';
|
||||
fs.writeFileSync(tempPath, pendingWrites[key]);
|
||||
fs.renameSync(tempPath, targetPath);
|
||||
} catch (err) {
|
||||
}
|
||||
});
|
||||
|
||||
pendingWrites = Object.create(null);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@apollo/client": "^3.1.5",
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"apollo-boost": "^0.4.9",
|
||||
"apollo-server-express": "^2.17.0",
|
||||
"graphql": "^15.3.0",
|
||||
"meteor-node-stubs": "^1.0.1",
|
||||
"meteor-node-stubs": "^1.0.3",
|
||||
"react": "^16.13.1",
|
||||
"react-dom": "^16.13.1"
|
||||
},
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"start": "meteor run"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"meteor-node-stubs": "^1.0.1"
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"meteor-node-stubs": "^1.0.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
"visualize": "meteor --production --extra-packages bundle-visualizer"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"jquery": "^3.5.1",
|
||||
"meteor-node-stubs": "^1.0.1"
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"jquery": "^3.6.0",
|
||||
"meteor-node-stubs": "^1.0.3"
|
||||
},
|
||||
"meteor": {
|
||||
"mainModule": {
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
"test": "meteor test --once --driver-package meteortesting:mocha"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"jquery": "^3.5.1",
|
||||
"meteor-node-stubs": "^1.0.1"
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"jquery": "^3.6.0",
|
||||
"meteor-node-stubs": "^1.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"chai": "^4.2.0"
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
"visualize": "meteor --production --extra-packages bundle-visualizer"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"meteor-node-stubs": "^1.0.1"
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"meteor-node-stubs": "^1.0.3"
|
||||
},
|
||||
"meteor": {
|
||||
"mainModule": {
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
"visualize": "meteor --production --extra-packages bundle-visualizer"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"meteor-node-stubs": "^1.0.1",
|
||||
"react": "^16.13.1",
|
||||
"react-dom": "^16.13.1"
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"meteor-node-stubs": "^1.0.3",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2"
|
||||
},
|
||||
"meteor": {
|
||||
"mainModule": {
|
||||
|
||||
@@ -19,5 +19,6 @@ shell-server # Server-side component of the `meteor shell` command
|
||||
autopublish # Publish all data to the clients (for prototyping)
|
||||
insecure # Allow all DB writes from clients (for prototyping)
|
||||
static-html # Define static page content in .html files
|
||||
svelte:compiler # Meteor package to allow us to create files with the .svelte extension
|
||||
rdb:svelte-meteor-data # Meteor package which allows us to consume Meteor's reactive data sources inside of our Svelte components
|
||||
zodern:melte # Meteor package to allow us to create files with the .svelte extension
|
||||
rdb:svelte-meteor-data # Meteor package which allows us to consume Meteor's reactive data sources inside of our Svelte components
|
||||
hot-module-replacement # Update client in development without reloading the page
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
<h2>Learn Meteor!</h2>
|
||||
<ul>
|
||||
<li><a href="https://www.meteor.com/tutorials/svelte/" target="_blank">Do the Tutorial</a></li>
|
||||
<li><a href="https://svelte-tutorial.meteor.com/" target="_blank">Do the Tutorial</a></li>
|
||||
<li><a href="http://guide.meteor.com" target="_blank">Follow the Guide</a></li>
|
||||
<li><a href="https://docs.meteor.com" target="_blank">Read the Docs</a></li>
|
||||
<li><a href="https://forums.meteor.com" target="_blank">Discussions</a></li>
|
||||
|
||||
@@ -8,17 +8,17 @@
|
||||
"visualize": "meteor --production --extra-packages bundle-visualizer"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"meteor-node-stubs": "^1.0.1",
|
||||
"react": "^16.13.1",
|
||||
"react-dom": "^16.13.1"
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"meteor-node-stubs": "^1.0.3",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/meteor": "^1.4.49",
|
||||
"@types/mocha": "^8.0.3",
|
||||
"@types/react": "^16.9.49",
|
||||
"@types/react-dom": "^16.9.8",
|
||||
"typescript": "^4.2.2"
|
||||
"@types/react": "^17.0.3",
|
||||
"@types/react-dom": "^17.0.3",
|
||||
"typescript": "^4.2.4"
|
||||
},
|
||||
"meteor": {
|
||||
"mainModule": {
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
"visualize": "meteor --production --extra-packages bundle-visualizer"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"meteor-node-stubs": "^1.0.1",
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"meteor-node-stubs": "^1.0.3",
|
||||
"vue": "^2.6.12",
|
||||
"vue-meteor-tracker": "^2.0.0-beta.5"
|
||||
},
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
"start": "meteor run"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.5.0",
|
||||
"meteor-node-stubs": "^1.0.1",
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"meteor-node-stubs": "^1.0.3",
|
||||
"puppeteer": "^2.1.1"
|
||||
},
|
||||
"meteor": {
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
"visualize": "meteor --production --extra-packages bundle-visualizer"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.5.5",
|
||||
"meteor-node-stubs": "^1.0.1"
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"meteor-node-stubs": "^1.0.3"
|
||||
},
|
||||
"meteor": {
|
||||
"mainModule": {
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
"visualize": "meteor --production --extra-packages bundle-visualizer"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.7.4",
|
||||
"jquery": "^3.5.1",
|
||||
"meteor-node-stubs": "^1.0.1"
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"jquery": "^3.6.0",
|
||||
"meteor-node-stubs": "^1.0.3"
|
||||
},
|
||||
"meteor": {
|
||||
"mainModule": "code.js"
|
||||
|
||||
@@ -6,16 +6,16 @@
|
||||
"test": "TEST_BROWSER_DRIVER=puppeteer meteor test --full-app --driver-package meteortesting:mocha"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.9.2",
|
||||
"acorn": "^7.1.1",
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"acorn": "^7.4.1",
|
||||
"arson": "^0.2.6",
|
||||
"jquery": "^3.5.1",
|
||||
"meteor-node-stubs": "^1.0.1",
|
||||
"moment": "^2.24.0",
|
||||
"jquery": "^3.6.0",
|
||||
"meteor-node-stubs": "^1.0.3",
|
||||
"moment": "^2.29.1",
|
||||
"optimism": "^0.11.5",
|
||||
"private": "^0.1.8",
|
||||
"puppeteer": "^2.1.1",
|
||||
"react": "^16.13.1",
|
||||
"react": "^17.0.2",
|
||||
"regenerator-runtime": "^0.13.5",
|
||||
"uuid": "^7.0.2"
|
||||
}
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
"test": "TEST_BROWSER_DRIVER=puppeteer meteor test --once --full-app --driver-package meteortesting:mocha"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.5.0",
|
||||
"meteor-node-stubs": "^1.0.1",
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"meteor-node-stubs": "^1.0.3",
|
||||
"puppeteer": "^2.1.1"
|
||||
},
|
||||
"meteor": {
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
"visualize": "meteor --production --extra-packages bundle-visualizer"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.5.0",
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"config": "file:../config-package",
|
||||
"meteor-node-stubs": "^1.0.1"
|
||||
"meteor-node-stubs": "^1.0.3"
|
||||
},
|
||||
"meteor": {
|
||||
"mainModule": {
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
"visualize": "meteor --production --extra-packages bundle-visualizer"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.5.0",
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"external-package": "file:../external-package",
|
||||
"meteor-node-stubs": "^1.0.1"
|
||||
"meteor-node-stubs": "^1.0.3"
|
||||
},
|
||||
"meteor": {
|
||||
"mainModule": {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"start": "meteor run"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.5.0",
|
||||
"meteor-node-stubs": "^1.0.1"
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"meteor-node-stubs": "^1.0.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
"regenerator-runtime": "^0.11.1",
|
||||
"stripe": "^4.4.0",
|
||||
"styled-components": "^4.3.2",
|
||||
"uuid": "^3.1.0",
|
||||
"uuid": "^3.4.0",
|
||||
"winston": "^2.3.1"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
"start": "meteor run"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.5.0"
|
||||
"@babel/runtime": "^7.13.17"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"start": "meteor run"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.5.0",
|
||||
"meteor-node-stubs": "^1.0.1"
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"meteor-node-stubs": "^1.0.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
"visualize": "meteor --production --extra-packages bundle-visualizer"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.5.0",
|
||||
"meteor-node-stubs": "^1.0.1"
|
||||
"@babel/runtime": "^7.13.17",
|
||||
"meteor-node-stubs": "^1.0.3"
|
||||
},
|
||||
"meteor": {
|
||||
"mainModule": false,
|
||||
|
||||
@@ -35,7 +35,8 @@ selftest.define("'meteor update' alters constraints in `.meteor/packages`", () =
|
||||
});
|
||||
|
||||
s.createApp("myapp", "very-simple-app-with-no-package-constraints", {
|
||||
release: DEFAULT_RELEASE_TRACK + '@v1'
|
||||
release: DEFAULT_RELEASE_TRACK + '@v1',
|
||||
dontPrepareApp: true,
|
||||
});
|
||||
s.cd("myapp");
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"use strict";
|
||||
|
||||
function babelRegister() {
|
||||
const meteorBabel = require("meteor-babel");
|
||||
const meteorBabel = require("@meteorjs/babel");
|
||||
const path = require("path");
|
||||
const toolsPath = path.dirname(__dirname);
|
||||
const meteorPath = path.dirname(toolsPath);
|
||||
@@ -18,7 +18,7 @@ function babelRegister() {
|
||||
// meteor/tools modules.
|
||||
babelOptions.sourceMaps = "inline";
|
||||
|
||||
require('meteor-babel/register')
|
||||
require('@meteorjs/babel/register')
|
||||
.setCacheDirectory(cacheDir)
|
||||
.setSourceMapRootPath(meteorPath)
|
||||
.allowDirectory(toolsPath)
|
||||
@@ -28,6 +28,7 @@ function babelRegister() {
|
||||
.excludeFile(path.join(toolsPath, "index.js"))
|
||||
.excludeFile(path.join(__dirname, "install-promise.js"))
|
||||
.excludeFile(path.join(__dirname, "wrap-fibers.js"))
|
||||
.excludeFile(path.join(__dirname, "install-reify.js"))
|
||||
.excludeFile(path.join(toolsPath, "cli", "dev-bundle-bin-commands.js"))
|
||||
.excludeFile(path.join(toolsPath, "cli", "dev-bundle-bin-helpers.js"))
|
||||
.excludeFile(path.join(toolsPath, "cli", "flush-buffers-on-exit-in-windows.js"))
|
||||
@@ -35,6 +36,9 @@ function babelRegister() {
|
||||
.excludeFile(__filename);
|
||||
}
|
||||
|
||||
// Install reify first so babel falls back to it
|
||||
require('./install-reify.js');
|
||||
|
||||
babelRegister(); // #RemoveInProd this line is removed in isopack.js
|
||||
|
||||
require("./install-runtime.js");
|
||||
|
||||
12
tools/tool-env/install-reify.js
Normal file
12
tools/tool-env/install-reify.js
Normal file
@@ -0,0 +1,12 @@
|
||||
let cacheDir;
|
||||
|
||||
if (process.env.METEOR_TOOL_ENABLE_REIFY_RUNTIME_CACHE === 'true') {
|
||||
const path = require("path");
|
||||
const toolsPath = path.dirname(__dirname);
|
||||
const meteorPath = path.dirname(toolsPath);
|
||||
cacheDir = path.join(meteorPath, ".reify-cache");
|
||||
}
|
||||
|
||||
// Enable the Reify module runtime: Module.prototype.{link,export,...}.
|
||||
// The same runtime.js code is used by server code (see boot.js).
|
||||
require("../static-assets/server/runtime.js")({ cachePath: cacheDir });
|
||||
@@ -9,10 +9,6 @@ require("./wrap-fibers.js");
|
||||
// they are available.
|
||||
require("./install-promise.js");
|
||||
|
||||
// Enable the Reify module runtime: Module.prototype.{link,export,...}.
|
||||
// The same runtime.js code is used by server code (see boot.js).
|
||||
require("../static-assets/server/runtime.js");
|
||||
|
||||
// Installs source map support with a hook to add functions to look for
|
||||
// source maps in custom places.
|
||||
require('./source-map-retriever-stack.js');
|
||||
|
||||
@@ -75,5 +75,5 @@ Error.METEOR_prepareStackTrace = Error.prepareStackTrace;
|
||||
push(sourceMapSupport.retrieveSourceMap);
|
||||
|
||||
/* eslint-disable max-len */
|
||||
push(require('meteor-babel/register').retrieveSourceMap); // #RemoveInProd this line is removed in isopack.js
|
||||
push(require('@meteorjs/babel/register').retrieveSourceMap); // #RemoveInProd this line is removed in isopack.js
|
||||
/* eslint-enable max-len */
|
||||
|
||||
@@ -448,7 +448,14 @@ export default class Run {
|
||||
test.durationMs = +(new Date) - startTime;
|
||||
|
||||
if (failure) {
|
||||
Console.error(`... fail! (${test.durationMs} ms)`, Console.options({ indent: 2 }));
|
||||
let checkmark;
|
||||
if (process.platform === "win32") {
|
||||
checkmark = 'FAIL';
|
||||
} else {
|
||||
checkmark = '\u2717'; // CROSS
|
||||
}
|
||||
|
||||
Console.error(`... fail! (${test.durationMs} ms)`, Console.options({ bulletPoint: `${checkmark} ` }));
|
||||
|
||||
if (failure instanceof TestFailure) {
|
||||
const frames = parseStackParse(failure).outsideFiber;
|
||||
@@ -544,7 +551,7 @@ export default class Run {
|
||||
|
||||
testList.notifyFailed(test, failure);
|
||||
} else {
|
||||
Console.error(`... ok! (${test.durationMs} ms)`,
|
||||
Console.success(`... ok! (${test.durationMs} ms)`,
|
||||
Console.options({ indent: 2 }));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -279,7 +279,7 @@ function getFilteredTests(options) {
|
||||
|
||||
const tagsToMatch = options['with-tag'] ? [options['with-tag']] : [];
|
||||
return new TestList(allTests, tagsToSkip, tagsToMatch, testState);
|
||||
};
|
||||
}
|
||||
|
||||
function groupTestsByFile(tests) {
|
||||
const grouped = {};
|
||||
@@ -514,7 +514,7 @@ class TestList {
|
||||
|
||||
function getTestStateFilePath() {
|
||||
return files.pathJoin(files.getHomeDir(), '.meteortest');
|
||||
};
|
||||
}
|
||||
|
||||
function readTestState() {
|
||||
const testStateFile = getTestStateFilePath();
|
||||
@@ -526,7 +526,7 @@ function readTestState() {
|
||||
testState = { version: 1, lastPassedHashes: {} };
|
||||
}
|
||||
return testState;
|
||||
};
|
||||
}
|
||||
|
||||
function writeTestState(testState) {
|
||||
const testStateFile = getTestStateFilePath();
|
||||
@@ -609,7 +609,7 @@ export function runTests(options) {
|
||||
: 'running';
|
||||
const countMessage = `(${index + 1}/${testList.filteredTests.length})`;
|
||||
const testMessage = `${test.file}.js test:${test.name} ...`;
|
||||
Console.error(`${skipMessage} ${countMessage} ${testMessage}`);
|
||||
Console.info(`${skipMessage} ${countMessage} ${testMessage}`);
|
||||
|
||||
if (shouldSkip || options.preview) {
|
||||
return;
|
||||
|
||||
@@ -3,8 +3,7 @@ import { timeoutScaleFactor } from '../utils/utils.js';
|
||||
import { withAccountsConnection } from '../meteor-services/auth.js';
|
||||
import { fail, markStack } from './selftest.js';
|
||||
import { request } from '../utils/http-helpers.js';
|
||||
import { isEqual } from 'underscore';
|
||||
import { loadIsopackage } from '../tool-env/isopackets.js'
|
||||
import { loadIsopackage } from '../tool-env/isopackets.js';
|
||||
|
||||
export function randomString(charsCount) {
|
||||
var chars = 'abcdefghijklmnopqrstuvwxyz';
|
||||
|
||||
@@ -299,7 +299,7 @@ export function leastSpecificDescription(programs: string[]): string {
|
||||
}
|
||||
|
||||
// Find the longest string
|
||||
const longest = max(programs, (p: string) => p.length);
|
||||
const longest = String(max(programs, (p: string) => p.length));
|
||||
|
||||
// If everything else in the list is compatible with the longest,
|
||||
// then it must be the most specific, and if everything is
|
||||
|
||||
Reference in New Issue
Block a user