diff --git a/.circleci/config.yml b/.circleci/config.yml
index 3396ca95a0..be2fe2cae4 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -76,8 +76,8 @@ run_save_node_bin: &run_save_node_bin
fi
# This environment is set to every job (and the initial build).
-build_machine_environment: &build_machine_environment
- # Specify that we want an actual machine (ala Circle 1.0), not a Docker image.
+build_machine_environment:
+ &build_machine_environment # Specify that we want an actual machine (ala Circle 1.0), not a Docker image.
docker:
- image: meteor/circleci:2024.09.11-android-34-node-20
resource_class: large
@@ -104,8 +104,8 @@ build_machine_environment: &build_machine_environment
# These will be evaled before each command.
PRE_TEST_COMMANDS: |-
- ulimit -c unlimited; # Set core dump size as Ubuntu 14.04 lacks prlimit.
- ulimit -a # Display all ulimit settings for transparency.
+ ulimit -c unlimited; # Set core dump size as Ubuntu 14.04 lacks prlimit.
+ ulimit -a # Display all ulimit settings for transparency.
# This is only to make Meteor self-test not remind us that we can set
# this argument for self-tests.
@@ -765,7 +765,9 @@ jobs:
if [[ -n "$CIRCLE_PULL_REQUEST" ]]; then
PR_NUMBER=$(echo $CIRCLE_PULL_REQUEST | sed 's|.*/pull/\([0-9]*\)|\1|')
PR_BRANCH=$(curl -s https://api.github.com/repos/meteor/meteor/pulls/$PR_NUMBER | jq -r .head.ref)
- git clone --branch $PR_BRANCH https://github.com/meteor/meteor.git ${CHECKOUT_METEOR_DOCS}
+ git clone https://github.com/meteor/meteor.git ${CHECKOUT_METEOR_DOCS}
+ cd ${CHECKOUT_METEOR_DOCS}
+ git fetch origin pull/$PR_NUMBER/head:$PR_BRANCH
else
git clone --branch $CIRCLE_BRANCH https://github.com/meteor/meteor.git ${CHECKOUT_METEOR_DOCS}
fi
diff --git a/.envrc b/.envrc
index f1b1524541..e023176dc5 100644
--- a/.envrc
+++ b/.envrc
@@ -71,3 +71,43 @@ function @summarize-changes {
echo "$changes" | llm -s "Summarize the following changes in a few sentences:"
}
+
+function @packages-bumped {
+ git diff --name-only devel...$(git branch --show-current) | grep "packages/.*/package.js$" | while IFS= read -r file; do
+ if ! git show devel:$file > /dev/null 2>&1; then
+ continue
+ fi
+
+ old=$(git show devel:$file | grep -o "version: *['\"][^'\"]*['\"]" | sed "s/version: *.['\"]//;s/['\"].*//")
+ version=$(grep -o "version: *['\"][^'\"]*['\"]" "$file" | sed "s/version: *.['\"]//;s/['\"].*//")
+ name=$(grep -o "name: *['\"][^'\"]*['\"]" "$file" | sed "s/name: *.['\"]//;s/['\"].*//")
+
+ pkg_name=$(echo "$file" | sed -E 's|packages/([^/]*/)?([^/]*)/package\.js|\2|')
+
+ version_in_red=$(tput setaf 1)$version$(tput sgr0)
+
+ if [[ "$version" != "$old" ]]; then
+ echo "- $pkg_name@$version_in_red"
+ fi
+ done
+}
+
+function @packages-bumped-npm {
+ git diff --name-only devel...$(git branch --show-current) | grep "npm-packages/.*/package.json$" | while IFS= read -r file; do
+ if ! git show devel:$file > /dev/null 2>&1; then
+ continue
+ fi
+
+ old=$(git show devel:$file | grep -o "version: *['\"][^'\"]*['\"]" | sed "s/version: *.['\"]//;s/['\"].*//")
+ version=$(grep -o "\"version\": *['\"][^'\"]*['\"]" "$file" | sed "s/\"version\": *.['\"]//;s/['\"].*//")
+ name=$(grep -o "\"name\": *['\"][^'\"]*['\"]" "$file" | sed "s/\"name\": *.['\"]//;s/['\"].*//")
+
+ pkg_name=$(echo "$file" | sed -E 's|npm-packages/([^/]*/)?([^/]*)/package\.json|\2|')
+
+ version_in_red=$(tput setaf 1)$version$(tput sgr0)
+
+ if [[ "$version" != "$old" ]]; then
+ echo "- $pkg_name@$version_in_red"
+ fi
+ done
+}
diff --git a/meteor b/meteor
index 04c1d9d179..446c6c4f25 100755
--- a/meteor
+++ b/meteor
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-BUNDLE_VERSION=22.11.0.2
+BUNDLE_VERSION=22.11.0.4
# OS Check. Put here because here is where we download the precompiled
diff --git a/npm-packages/meteor-installer/config.js b/npm-packages/meteor-installer/config.js
index 95894f17d6..59915c2a56 100644
--- a/npm-packages/meteor-installer/config.js
+++ b/npm-packages/meteor-installer/config.js
@@ -1,7 +1,7 @@
const os = require('os');
const path = require('path');
-const METEOR_LATEST_VERSION = '3.1-beta.0';
+const METEOR_LATEST_VERSION = '3.1';
const sudoUser = process.env.SUDO_USER || '';
function isRoot() {
return process.getuid && process.getuid() === 0;
diff --git a/npm-packages/meteor-installer/package-lock.json b/npm-packages/meteor-installer/package-lock.json
index c03f2f402c..15a83f9214 100644
--- a/npm-packages/meteor-installer/package-lock.json
+++ b/npm-packages/meteor-installer/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "meteor",
- "version": "3.1.0-beta.0",
+ "version": "3.1.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "meteor",
- "version": "3.1.0-beta.0",
+ "version": "3.1.0",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
diff --git a/npm-packages/meteor-installer/package.json b/npm-packages/meteor-installer/package.json
index 6b7a18097b..a20d4735a0 100644
--- a/npm-packages/meteor-installer/package.json
+++ b/npm-packages/meteor-installer/package.json
@@ -1,6 +1,6 @@
{
"name": "meteor",
- "version": "3.1.0-beta.1",
+ "version": "3.1.0",
"description": "Install Meteor",
"main": "install.js",
"scripts": {
diff --git a/packages/accounts-password/package.js b/packages/accounts-password/package.js
index eb63b6182c..b86e57dff1 100644
--- a/packages/accounts-password/package.js
+++ b/packages/accounts-password/package.js
@@ -1,49 +1,49 @@
-Package.describe({
- summary: "Password support for accounts",
- // Note: 2.2.0-beta.3 was published during the Meteor 1.6 prerelease
- // process, so it might be best to skip to 2.3.x instead of reusing
- // 2.2.x in the future. The version was also bumped to 2.0.0 temporarily
- // during the Meteor 1.5.1 release process, so versions 2.0.0-beta.2
- // through -beta.5 and -rc.0 have already been published.
- version: "3.0.2",
-});
-
-Npm.depends({
- bcrypt: "5.0.1",
-});
-
-Package.onUse((api) => {
- api.use(["accounts-base", "sha", "ejson", "ddp"], ["client", "server"]);
-
- // Export Accounts (etc) to packages using this one.
- api.imply("accounts-base", ["client", "server"]);
-
- api.use("email", "server");
- api.use("random", "server");
- api.use("check", "server");
- api.use("ecmascript");
-
- api.addFiles("email_templates.js", "server");
- api.addFiles("password_server.js", "server");
- api.addFiles("password_client.js", "client");
-});
-
-Package.onTest((api) => {
- api.use([
- "accounts-password",
- "sha",
- "tinytest",
- "test-helpers",
- "tracker",
- "accounts-base",
- "random",
- "email",
- "check",
- "ddp",
- "ecmascript",
- ]);
- api.addFiles("password_tests_setup.js", "server");
- api.addFiles("password_tests.js", ["client", "server"]);
- api.addFiles("email_tests_setup.js", "server");
- api.addFiles("email_tests.js", "client");
-});
+Package.describe({
+ summary: "Password support for accounts",
+ // Note: 2.2.0-beta.3 was published during the Meteor 1.6 prerelease
+ // process, so it might be best to skip to 2.3.x instead of reusing
+ // 2.2.x in the future. The version was also bumped to 2.0.0 temporarily
+ // during the Meteor 1.5.1 release process, so versions 2.0.0-beta.2
+ // through -beta.5 and -rc.0 have already been published.
+ version: "3.0.3",
+});
+
+Npm.depends({
+ bcrypt: "5.0.1",
+});
+
+Package.onUse((api) => {
+ api.use(["accounts-base", "sha", "ejson", "ddp"], ["client", "server"]);
+
+ // Export Accounts (etc) to packages using this one.
+ api.imply("accounts-base", ["client", "server"]);
+
+ api.use("email", "server");
+ api.use("random", "server");
+ api.use("check", "server");
+ api.use("ecmascript");
+
+ api.addFiles("email_templates.js", "server");
+ api.addFiles("password_server.js", "server");
+ api.addFiles("password_client.js", "client");
+});
+
+Package.onTest((api) => {
+ api.use([
+ "accounts-password",
+ "sha",
+ "tinytest",
+ "test-helpers",
+ "tracker",
+ "accounts-base",
+ "random",
+ "email",
+ "check",
+ "ddp",
+ "ecmascript",
+ ]);
+ api.addFiles("password_tests_setup.js", "server");
+ api.addFiles("password_tests.js", ["client", "server"]);
+ api.addFiles("email_tests_setup.js", "server");
+ api.addFiles("email_tests.js", "client");
+});
diff --git a/packages/babel-compiler/package.js b/packages/babel-compiler/package.js
index b7a67af44f..44b6fb8f30 100644
--- a/packages/babel-compiler/package.js
+++ b/packages/babel-compiler/package.js
@@ -1,7 +1,7 @@
Package.describe({
name: "babel-compiler",
summary: "Parser/transpiler for ECMAScript 2015+ syntax",
- version: '7.11.2-beta310.0',
+ version: '7.11.2',
});
Npm.depends({
diff --git a/packages/boilerplate-generator-tests/package.js b/packages/boilerplate-generator-tests/package.js
index 19393bccf2..8c95f5f034 100644
--- a/packages/boilerplate-generator-tests/package.js
+++ b/packages/boilerplate-generator-tests/package.js
@@ -2,7 +2,7 @@ Package.describe({
// These tests are in a separate package so that we can Npm.depend on
// parse5, a html parsing library.
summary: "Tests for the boilerplate-generator package",
- version: '1.5.3-beta310.0',
+ version: '1.5.3',
documentation: null
});
diff --git a/packages/ddp-client/package.js b/packages/ddp-client/package.js
index fbf357d0a9..e0cb8bffe5 100644
--- a/packages/ddp-client/package.js
+++ b/packages/ddp-client/package.js
@@ -1,6 +1,6 @@
Package.describe({
summary: "Meteor's latency-compensated distributed data client",
- version: "3.0.3-beta310.0",
+ version: "3.0.3",
documentation: null,
});
diff --git a/packages/ddp-server/livedata_server.js b/packages/ddp-server/livedata_server.js
index d9b49a164c..23ca1cce52 100644
--- a/packages/ddp-server/livedata_server.js
+++ b/packages/ddp-server/livedata_server.js
@@ -1351,33 +1351,33 @@ Object.assign(Server.prototype, {
},
/**
- * @summary Set publication strategy for the given publication. Publications strategies are available from `DDPServer.publicationStrategies`. You call this method from `Meteor.server`, like `Meteor.server.setPublicationStrategy()`
+ * @summary Set publication strategy for the given collection. Publications strategies are available from `DDPServer.publicationStrategies`. You call this method from `Meteor.server`, like `Meteor.server.setPublicationStrategy()`
* @locus Server
* @alias setPublicationStrategy
- * @param publicationName {String}
+ * @param collectionName {String}
* @param strategy {{useCollectionView: boolean, doAccountingForCollection: boolean}}
* @memberOf Meteor.server
* @importFromPackage meteor
*/
- setPublicationStrategy(publicationName, strategy) {
+ setPublicationStrategy(collectionName, strategy) {
if (!Object.values(publicationStrategies).includes(strategy)) {
throw new Error(`Invalid merge strategy: ${strategy}
- for collection ${publicationName}`);
+ for collection ${collectionName}`);
}
- this._publicationStrategies[publicationName] = strategy;
+ this._publicationStrategies[collectionName] = strategy;
},
/**
- * @summary Gets the publication strategy for the requested publication. You call this method from `Meteor.server`, like `Meteor.server.getPublicationStrategy()`
+ * @summary Gets the publication strategy for the requested collection. You call this method from `Meteor.server`, like `Meteor.server.getPublicationStrategy()`
* @locus Server
* @alias getPublicationStrategy
- * @param publicationName {String}
+ * @param collectionName {String}
* @memberOf Meteor.server
* @importFromPackage meteor
* @return {{useCollectionView: boolean, doAccountingForCollection: boolean}}
*/
- getPublicationStrategy(publicationName) {
- return this._publicationStrategies[publicationName]
+ getPublicationStrategy(collectionName) {
+ return this._publicationStrategies[collectionName]
|| this.options.defaultPublicationStrategy;
},
diff --git a/packages/ddp-server/package.js b/packages/ddp-server/package.js
index e9aadfc9e4..7b3408d31b 100644
--- a/packages/ddp-server/package.js
+++ b/packages/ddp-server/package.js
@@ -1,6 +1,6 @@
Package.describe({
summary: "Meteor's latency-compensated distributed data server",
- version: "3.0.3-beta310.0",
+ version: "3.0.3",
documentation: null,
});
diff --git a/packages/ecmascript/package.js b/packages/ecmascript/package.js
index 1d171485ae..e74159738d 100644
--- a/packages/ecmascript/package.js
+++ b/packages/ecmascript/package.js
@@ -1,6 +1,6 @@
Package.describe({
name: 'ecmascript',
- version: '0.16.10-beta310.1',
+ version: '0.16.10',
summary: 'Compiler plugin that supports ES2015+ in all .js files',
documentation: 'README.md',
});
diff --git a/packages/email/package.js b/packages/email/package.js
index 99977f7d14..27ae6d4546 100644
--- a/packages/email/package.js
+++ b/packages/email/package.js
@@ -1,6 +1,6 @@
Package.describe({
summary: "Send email messages",
- version: "3.1.1-beta310.0",
+ version: "3.1.1",
});
Npm.depends({
diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js
index f7cf32d304..1656dc9b45 100644
--- a/packages/meteor-tool/package.js
+++ b/packages/meteor-tool/package.js
@@ -1,6 +1,6 @@
Package.describe({
- summary: 'The Meteor command-line tool',
- version: '3.1.0-beta310.0',
+ summary: "The Meteor command-line tool",
+ version: "3.1.0",
});
Package.includeTool();
diff --git a/packages/meteor/package.js b/packages/meteor/package.js
index 19124f1d58..f9e81a4def 100644
--- a/packages/meteor/package.js
+++ b/packages/meteor/package.js
@@ -2,7 +2,7 @@
Package.describe({
summary: "Core Meteor environment",
- version: '2.0.2-beta310.0',
+ version: '2.0.2',
});
Package.registerBuildPlugin({
diff --git a/packages/minifier-js/package.js b/packages/minifier-js/package.js
index c4e1973b19..80b0a54ff5 100644
--- a/packages/minifier-js/package.js
+++ b/packages/minifier-js/package.js
@@ -1,6 +1,6 @@
Package.describe({
summary: "JavaScript minifier",
- version: '3.0.1-beta310.0',
+ version: '3.0.1',
});
Npm.depends({
diff --git a/packages/minimongo/package.js b/packages/minimongo/package.js
index a83f197782..280fea958b 100644
--- a/packages/minimongo/package.js
+++ b/packages/minimongo/package.js
@@ -1,6 +1,6 @@
Package.describe({
summary: "Meteor's client-side datastore: a port of MongoDB to Javascript",
- version: "2.0.2-beta310.0",
+ version: "2.0.2",
});
Package.onUse((api) => {
diff --git a/packages/modules/package.js b/packages/modules/package.js
index d657cffed4..a49d67488a 100644
--- a/packages/modules/package.js
+++ b/packages/modules/package.js
@@ -1,6 +1,6 @@
Package.describe({
name: "modules",
- version: '0.20.3-beta310.0',
+ version: '0.20.3',
summary: "CommonJS module system",
documentation: "README.md"
});
diff --git a/packages/mongo/package.js b/packages/mongo/package.js
index 8320727ae1..5d7a744985 100644
--- a/packages/mongo/package.js
+++ b/packages/mongo/package.js
@@ -9,7 +9,7 @@
Package.describe({
summary: "Adaptor for using MongoDB and Minimongo over DDP",
- version: "2.0.3-beta310.0",
+ version: "2.0.3",
});
Npm.depends({
diff --git a/packages/non-core/coffeescript-compiler/package.js b/packages/non-core/coffeescript-compiler/package.js
index 3bb80863c5..91a790c4a4 100644
--- a/packages/non-core/coffeescript-compiler/package.js
+++ b/packages/non-core/coffeescript-compiler/package.js
@@ -3,7 +3,7 @@ Package.describe({
summary: 'Compiler for CoffeeScript code, supporting the coffeescript package',
// This version of NPM `coffeescript` module, with _1, _2 etc.
// If you change this, make sure to also update ../coffeescript/package.js to match.
- version: '2.4.2-beta310.0'
+ version: '2.4.2'
});
Npm.depends({
diff --git a/packages/non-core/coffeescript/package.js b/packages/non-core/coffeescript/package.js
index 230c19f999..5d10541f80 100644
--- a/packages/non-core/coffeescript/package.js
+++ b/packages/non-core/coffeescript/package.js
@@ -6,7 +6,7 @@ Package.describe({
// so bumping the version of this package will be how they get newer versions
// of `coffeescript-compiler`. If you change this, make sure to also update
// ../coffeescript-compiler/package.js to match.
- version: '2.7.2-beta310.0'
+ version: '2.7.2'
});
Package.registerBuildPlugin({
diff --git a/packages/non-core/mongo-decimal/.versions b/packages/non-core/mongo-decimal/.versions
index 709e9dc14b..8f0bdb4c53 100644
--- a/packages/non-core/mongo-decimal/.versions
+++ b/packages/non-core/mongo-decimal/.versions
@@ -1,5 +1,5 @@
allow-deny@2.0.0
-babel-compiler@7.11.2-beta310.0
+babel-compiler@7.11.2
babel-runtime@1.5.2
base64@1.0.13
binary-heap@1.0.12
@@ -8,12 +8,12 @@ callback-hook@1.6.0
check@1.4.4
core-runtime@1.0.0
ddp@1.4.2
-ddp-client@3.0.3-beta310.0
+ddp-client@3.0.3
ddp-common@1.4.4
-ddp-server@3.0.3-beta310.0
+ddp-server@3.0.3
diff-sequence@1.1.3
dynamic-import@0.7.4
-ecmascript@0.16.9
+ecmascript@0.16.10
ecmascript-runtime@0.8.3
ecmascript-runtime-client@0.12.2
ecmascript-runtime-server@0.11.1
@@ -24,18 +24,18 @@ geojson-utils@1.0.12
id-map@1.2.0
insecure@1.0.8
inter-process-messaging@0.1.2
-local-test:mongo-decimal@0.1.6-beta310.0
+local-test:mongo-decimal@0.2.0
logging@1.3.5
-meteor@2.0.2-beta310.0
-minimongo@2.0.2-beta310.0
+meteor@2.0.2
+minimongo@2.0.2
modern-browsers@0.1.11
-modules@0.20.3-beta310.0
+modules@0.20.3
modules-runtime@0.13.2
-mongo@2.0.3-beta310.0
-mongo-decimal@0.1.6-beta310.0
+mongo@2.0.3
+mongo-decimal@0.2.0
mongo-dev-server@1.1.1
mongo-id@1.0.9
-npm-mongo@4.17.3-beta310.0
+npm-mongo@6.10.0
ordered-dict@1.2.0
promise@1.0.0
random@1.2.2
@@ -44,8 +44,8 @@ reload@1.3.2
retry@1.1.1
routepolicy@1.1.2
socket-stream-client@0.5.3
-tinytest@1.3.1-beta310.0
+tinytest@1.3.1
tracker@1.3.4
-typescript@5.6.3-beta310.0
-webapp@2.0.4-beta310.0
+typescript@5.6.3
+webapp@2.0.4
webapp-hashing@1.1.2
diff --git a/packages/non-core/mongo-decimal/package.js b/packages/non-core/mongo-decimal/package.js
index 0190ab8c60..e587275fb6 100644
--- a/packages/non-core/mongo-decimal/package.js
+++ b/packages/non-core/mongo-decimal/package.js
@@ -1,6 +1,6 @@
Package.describe({
summary: "JS simulation of MongoDB Decimal128 type",
- version: '0.1.6-beta310.0',
+ version: '0.2.0',
});
Npm.depends({
diff --git a/packages/npm-mongo/package.js b/packages/npm-mongo/package.js
index f7dee16098..cc7a598051 100644
--- a/packages/npm-mongo/package.js
+++ b/packages/npm-mongo/package.js
@@ -3,7 +3,7 @@
Package.describe({
summary: "Wrapper around the mongo npm package",
- version: "4.17.3-beta310.0",
+ version: "6.10.0",
documentation: null,
});
diff --git a/packages/roles/package.js b/packages/roles/package.js
index d7bfdf7b83..2ff58f3dee 100644
--- a/packages/roles/package.js
+++ b/packages/roles/package.js
@@ -2,8 +2,9 @@
Package.describe({
summary: "Authorization package for Meteor",
- version: "1.0.0-beta310.0",
+ version: "1.0.0",
name: "roles",
+ documentation: null,
});
Package.onUse(function (api) {
diff --git a/packages/shell-server/package.js b/packages/shell-server/package.js
index 99d54f9bcc..3bdcb189ed 100644
--- a/packages/shell-server/package.js
+++ b/packages/shell-server/package.js
@@ -1,6 +1,6 @@
Package.describe({
name: "shell-server",
- version: '0.6.1-beta310.0',
+ version: '0.6.1',
summary: "Server-side component of the `meteor shell` command.",
documentation: "README.md"
});
diff --git a/packages/test-helpers/package.js b/packages/test-helpers/package.js
index 3012633763..7d68b8e182 100644
--- a/packages/test-helpers/package.js
+++ b/packages/test-helpers/package.js
@@ -1,6 +1,6 @@
Package.describe({
summary: "Utility functions for tests",
- version: "2.0.2-beta310.0",
+ version: "2.0.2",
});
Npm.depends({
diff --git a/packages/test-in-console/package.js b/packages/test-in-console/package.js
index 49005450a0..ebf1b6eff9 100644
--- a/packages/test-in-console/package.js
+++ b/packages/test-in-console/package.js
@@ -1,6 +1,6 @@
Package.describe({
summary: 'Run tests noninteractively, with results going to the console.',
- version: '2.0.1-beta310.0',
+ version: '2.0.1',
});
Package.onUse(function(api) {
diff --git a/packages/tinytest/package.js b/packages/tinytest/package.js
index 90b3833d0c..e869b316ea 100644
--- a/packages/tinytest/package.js
+++ b/packages/tinytest/package.js
@@ -1,6 +1,6 @@
Package.describe({
summary: "Tiny testing framework",
- version: '1.3.1-beta310.0',
+ version: '1.3.1',
});
Npm.depends({
diff --git a/packages/typescript/package.js b/packages/typescript/package.js
index 47d1d8caa6..ea41a3604a 100644
--- a/packages/typescript/package.js
+++ b/packages/typescript/package.js
@@ -1,6 +1,6 @@
Package.describe({
name: 'typescript',
- version: '5.6.3-beta310.0',
+ version: '5.6.3',
summary:
'Compiler plugin that compiles TypeScript and ECMAScript in .ts and .tsx files',
documentation: 'README.md',
diff --git a/packages/url/legacy.js b/packages/url/legacy.js
index d88cf97e4b..6f97c73e56 100644
--- a/packages/url/legacy.js
+++ b/packages/url/legacy.js
@@ -1,5 +1,11 @@
try {
+ require("url-search-params-polyfill");
+ URLSearchParams = window.URLSearchParams;
+ exports.URLSearchParams = URLSearchParams;
+
require("core-js/proposals/url");
+ URL = window.URL;
+ exports.URL = URL;
} catch (e) {
throw new Error([
"The core-js npm package could not be found in your node_modules ",
diff --git a/packages/url/package.js b/packages/url/package.js
index c3cbe03f5c..6804f101d7 100644
--- a/packages/url/package.js
+++ b/packages/url/package.js
@@ -1,12 +1,13 @@
Package.describe({
name: "url",
- version: '1.3.4',
+ version: '1.3.5',
summary: "Isomorphic modern/legacy/Node polyfill for WHATWG URL/URLSearchParams",
documentation: "README.md"
});
Npm.depends({
- "core-js": "3.38.1"
+ "core-js": "3.39.0",
+ "url-search-params-polyfill": "8.2.5",
});
Package.onUse(function(api) {
diff --git a/packages/webapp/package.js b/packages/webapp/package.js
index 42203ad3a2..615b57d5b2 100644
--- a/packages/webapp/package.js
+++ b/packages/webapp/package.js
@@ -1,6 +1,6 @@
Package.describe({
summary: "Serves a Meteor app over HTTP",
- version: "2.0.4-beta310.0",
+ version: "2.0.4",
});
Npm.depends({
diff --git a/scripts/admin/meteor-release-experimental.json b/scripts/admin/meteor-release-experimental.json
index f8ff292c0f..a1a63161ed 100644
--- a/scripts/admin/meteor-release-experimental.json
+++ b/scripts/admin/meteor-release-experimental.json
@@ -1,6 +1,6 @@
{
"track": "METEOR",
- "version": "3.1-beta.0",
+ "version": "3.1-rc.0",
"recommended": false,
"official": false,
"description": "Meteor experimental release"
diff --git a/scripts/admin/meteor-release-official.json b/scripts/admin/meteor-release-official.json
index db3db5140f..504225e62c 100644
--- a/scripts/admin/meteor-release-official.json
+++ b/scripts/admin/meteor-release-official.json
@@ -1,6 +1,6 @@
{
"track": "METEOR",
- "version": "3.0.4",
+ "version": "3.1",
"recommended": false,
"official": true,
"description": "The Official Meteor Distribution"
diff --git a/tools/cordova/project.js b/tools/cordova/project.js
index b6830ac394..27a6891bfd 100644
--- a/tools/cordova/project.js
+++ b/tools/cordova/project.js
@@ -463,6 +463,8 @@ to Cordova project`, async () => {
let platformSpec = version ? `${platform}@${version}` : platform;
await cordova_lib.platform('add', platformSpec, this.defaultOptions);
+ const installedPlugins = this.listInstalledPluginVersions();
+
// As per Npm 8, we need now do inject a package.json file
// with the dependencies so that when running any npm command
// it keeps the dependencies installed.
@@ -482,10 +484,11 @@ to Cordova project`, async () => {
const packageJsonObj = Object.entries(packages).reduce((acc, [key, value]) => {
const name = getPackageName(key);
+ const originalPluginVersion = installedPlugins[name];
return ({
dependencies: {
...acc.dependencies,
- [name]: value.version,
+ [name]: originalPluginVersion || value.version,
}
});
}, { dependencies: { [`cordova-${platform}`]: version } });
diff --git a/tools/packaging/package-client.js b/tools/packaging/package-client.js
index 0a10007e06..c79a2463df 100644
--- a/tools/packaging/package-client.js
+++ b/tools/packaging/package-client.js
@@ -466,7 +466,7 @@ exports.handlePackageServerConnectionError = function (error) {
};
-// Update the package metdata in the server catalog. Chane the docs,
+// Update the package metadata in the server catalog. Change the docs,
// descriptions and the Git URL to new values.
//
// options:
@@ -537,7 +537,7 @@ exports.updatePackageMetadata = async function (options) {
// Upload the new Readme.
await buildmessage.enterJob('uploading documentation', async function () {
- var readmePath = saveReadmeToTmp(readmeInfo);
+ var readmePath = await saveReadmeToTmp(readmeInfo);
var uploadInfo =
await callPackageServerBM(conn, "createReadme", versionIdentifier);
if (!uploadInfo) {
diff --git a/v3-docs/docs/.vitepress/config.mts b/v3-docs/docs/.vitepress/config.mts
index 653f1b3b21..a004c2867b 100644
--- a/v3-docs/docs/.vitepress/config.mts
+++ b/v3-docs/docs/.vitepress/config.mts
@@ -1,4 +1,5 @@
import { defineConfig } from "vitepress";
+import metadata from "../generators/meteor-versions/metadata.generated";
// https://vitepress.dev/reference/site-config
export default defineConfig({
@@ -127,6 +128,22 @@ export default defineConfig({
},
{ text: "API", link: "/api/" },
{ text: "Galaxy Cloud", link: "https://www.meteor.com/cloud" },
+ {
+ text: metadata.currentVersion,
+ items: metadata.versions.reverse().map((v) => {
+ if (v.isCurrent) {
+ return {
+ text: `${v.version} (Current)`,
+ link: "/",
+ activeMatch: "/",
+ };
+ }
+ return {
+ text: v.version,
+ link: v.url,
+ };
+ }),
+ },
],
sidebar: [
{
diff --git a/v3-docs/docs/.vitepress/theme/GoToLatest.vue b/v3-docs/docs/.vitepress/theme/GoToLatest.vue
new file mode 100644
index 0000000000..cf67d76863
--- /dev/null
+++ b/v3-docs/docs/.vitepress/theme/GoToLatest.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
Warning
+
You are viewing an old version of the Meteor documentation. Click here to
+ go to the latest version.
+
+
+
\ No newline at end of file
diff --git a/v3-docs/docs/.vitepress/theme/Layout.vue b/v3-docs/docs/.vitepress/theme/Layout.vue
index 91cf0e928e..4b21e79933 100644
--- a/v3-docs/docs/.vitepress/theme/Layout.vue
+++ b/v3-docs/docs/.vitepress/theme/Layout.vue
@@ -1,8 +1,9 @@
-
+
+
+
+
@@ -82,4 +94,4 @@ provide('toggle-appearance', async ({ clientX: x, clientY: y }: MouseEvent) => {
.VPSwitchAppearance .check {
transform: none !important;
}
-
+
\ No newline at end of file
diff --git a/v3-docs/docs/about/install.md b/v3-docs/docs/about/install.md
index f12c459444..dd8331d501 100644
--- a/v3-docs/docs/about/install.md
+++ b/v3-docs/docs/about/install.md
@@ -1,4 +1,3 @@
-
# Install
You need to install the Meteor command line tool to create, run, and manage your Meteor.js projects. Check the prerequisites and follow the installation process below.
@@ -9,7 +8,6 @@ npx meteor
## Prerequisites {#prereqs}
-
### Operating System (OS) {#prereqs-os}
- Meteor currently supports **OS X, Windows, and Linux**. Only 64-bit is supported.
@@ -19,12 +17,10 @@ npx meteor
- Disabling antivirus (Windows Defender, etc.) will improve performance.
- For compatibility, Linux binaries are built with CentOS 6.4 i386/amd64.
-
### Mobile Development {#prereqs-mobile}
- iOS development requires the latest Xcode.
-
## Installation
Install the latest official version of Meteor.js from your terminal by running one of the commands below. You can check our [changelog](https://v3-docs.meteor.com/history.html) for the release notes.
@@ -65,10 +61,9 @@ curl https://install.meteor.com/\?release\=2.8 | sh
> Do not install the npm Meteor Tool in your project's package.json. This library is just an installer.
-
## Troubleshooting {#troubleshooting}
-If your user doesn't have permission to install global binaries, and you need to use sudo, it's necessary to append *--unsafe-perm* to the above command:
+If your user doesn't have permission to install global binaries, and you need to use sudo, it's necessary to append _--unsafe-perm_ to the above command:
```bash
sudo npm install -g meteor --unsafe-perm
@@ -81,7 +76,6 @@ If you only use sudo because of a distribution default permission system, [check
In some cases you can get this error `npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules` because your Node.js installation was performed with wrong permissions. An easy way to fix this is to install Node.js using [nvm](https://github.com/nvm-sh/nvm) and forcing it to be used in your terminal. You can force it in the current session of your terminal by running `nvm use 14`.
-
## PATH management {#path-management}
By default, the Meteor installer adds its install path (by default, `~/.meteor/`) to your PATH by updating either your `.bashrc`, `.bash_profile`, or `.zshrc` as appropriate. To disable this behavior, install Meteor by running:
@@ -90,11 +84,8 @@ By default, the Meteor installer adds its install path (by default, `~/.meteor/`
npm install -g meteor --ignore-meteor-setup-exec-path --foreground-script
```
-
-
(or by setting the environment variable `npm_config_ignore_meteor_setup_exec_path=true`)
-
## Old Versions on Apple M1 {#old-versions-m1}
For Apple M1 computers, you can append Rosetta prefix as following, if you need to run older versions of Meteor (before 2.5.1):
@@ -105,7 +96,6 @@ arch -x86_64 npm install -g meteor
or select Terminal in the Applications folder, press CMD(⌘)+I and check the "Open using Rosetta" option.
-
## Meteor Docker image {#meteor-docker}
You can also use a Docker container for running Meteor inside your CI, or even in your local development toolchain.
@@ -114,26 +104,20 @@ We do provide the meteor/meteor-base ubuntu-based Docker image, that comes pre-b
You can refer to our meteor/galaxy-images repository to see how to use it, and the latest version. [More about meteor-base here.](https://github.com/meteor/galaxy-images/blob/master/meteor-base/README.md)
-
-
## Note for Windows users {#windows}
On Windows, the installer runs faster when [Windows Developer Mode](https://docs.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development) is enabled. The installation extracts a large number of small files, which Windows Defender can cause to be very slow.
-
-
## Node version manager {#nvm}
If you use a node version manager that uses a separate global `node_modules` folder for each Node version, you will need to re-install the `meteor` npm package when changing to a Node version for the first time. Otherwise, the `meteor` command will no longer be found.
-
## Note for fish shell users (Linux) {#fish-shell}
To be able to use the `meteor` command from fish it's needed to include `/home//.meteor` in `$PATH`; to do that just add this line in `/home//.config/fish/config.fish` file (replace `` with your username):
`set PATH /home//.meteor $PATH`
-
## Uninstalling Meteor {#uninstall}
If you installed Meteor using npx, you can remove it by running:
@@ -145,4 +129,4 @@ npx meteor uninstall
If you installed Meteor using curl or as a fallback solution, run:
`rm -rf ~/.meteor`
-`sudo rm /usr/local/bin/meteor`
+`sudo rm /usr/local/bin/meteor`
diff --git a/v3-docs/docs/api/packages-listing.md b/v3-docs/docs/api/packages-listing.md
index 2490d02ed4..40d21881ff 100644
--- a/v3-docs/docs/api/packages-listing.md
+++ b/v3-docs/docs/api/packages-listing.md
@@ -123,6 +123,7 @@
### [reload](https://github.com/meteor/meteor/tree/devel/packages/reload) {#reload}
### [reload-safetybelt](https://github.com/meteor/meteor/tree/devel/packages/reload-safetybelt) {#reload-safetybelt}
### [retry](https://github.com/meteor/meteor/tree/devel/packages/retry) {#retry}
+### [roles](https://github.com/meteor/meteor/tree/devel/packages/roles) {#roles}
### [routepolicy](https://github.com/meteor/meteor/tree/devel/packages/routepolicy) {#routepolicy}
### [server-render](https://github.com/meteor/meteor/tree/devel/packages/server-render) {#server-render}
### [service-configuration](https://github.com/meteor/meteor/tree/devel/packages/service-configuration) {#service-configuration}
diff --git a/v3-docs/docs/generators/changelog/README.md b/v3-docs/docs/generators/changelog/README.md
index bd795db186..6af9fc099d 100644
--- a/v3-docs/docs/generators/changelog/README.md
+++ b/v3-docs/docs/generators/changelog/README.md
@@ -32,7 +32,7 @@ organized changelog, since all the files will be reflecting at least one version
## Update ordering.
-If you want to make sure that the changelog is correcly ordered, take a look at the `order-packages.js` file.
+If you want to make sure that the changelog is correctly ordered, take a look at the `order-packages.js` file.
to use it, run the command below:
```bash
diff --git a/v3-docs/docs/generators/changelog/versions/3.1.0.md b/v3-docs/docs/generators/changelog/versions/3.1.0.md
index f7d6ce4f7f..fa1bc45e01 100644
--- a/v3-docs/docs/generators/changelog/versions/3.1.0.md
+++ b/v3-docs/docs/generators/changelog/versions/3.1.0.md
@@ -1,12 +1,24 @@
-## v3.1.0, 2024-xx-xx
+## v3.1.0, 2024-11-20
### Highlights
-N/A
+- Upgrade to Node v22
+- Upgrade Mongo Driver to v6
+- Upgrade Express to v5
+- HMR performance improvements
+- Bring the `roles` package into the core
+- Solve remaining issues with Top Level Await and Reify
+- Refactor part of the real-time code in the `mongo` package into TypeScript
+- Deprecate `underscore` and eliminate it from packages
+- Fix Cordova dependency issues
+- Simplify Meteor.EnvironmentVariable and make sure it works in all cases
+- Stop using Rosetta for development MongoDB on Apple Silicon
+- Test improvements
+- Bump `http` package to 3.0.0
#### Breaking Changes
-N/A
+- Express is now at v5 and some it's APIs have changed.
#### Internal API changes
@@ -18,16 +30,67 @@ Please run the following command to update your project:
```bash
-meteor update --release 3.1.0
+meteor update --release 3.1
```
+Make sure to migrate userland code to use the new Express APIs:
+
+https://expressjs.com/en/guide/migrating-5.html
+
+The MongoDB Node.js driver implemented a significant breaking change regarding operation handling. Applications leveraging `rawCollection()` or `rawDatabase()` methods must now utilize Promise-based syntax exclusively, as the callback-pattern API has been deprecated and removed. This modification affects all direct MongoDB operations previously using callback functions.
-#### Meteor Version Release
+#### Bumped Meteor Packages
+
+- accounts-password@3.0.3
+- babel-compiler@7.11.2
+- boilerplate-generator-tests@1.5.3
+- ddp-client@3.0.3
+- ddp-server@3.0.3
+- http@3.0.0
+- ecmascript@0.16.10
+- email@3.1.1
+- meteor-tool@3.1.0
+- meteor@2.0.2
+- minifier-js@3.0.1
+- minimongo@2.0.2
+- modules@0.20.3
+- mongo@2.0.3
+- coffeescript-compiler@2.4.2
+- coffeescript@2.7.2
+- mongo-decimal@0.2.0
+- npm-mongo@6.10.0
+- shell-server@0.6.1
+- test-helpers@2.0.2
+- test-in-console@2.0.1
+- tinytest@1.3.1
+- typescript@5.6.3
+- url@1.3.5
+- webapp@2.0.4
+
+
+#### Bumped NPM Packages
+
+- meteor-babel@7.20.1
+- meteor-installer@3.1.0
+- meteor-node-stubs@1.2.12
-N/A
#### Special thanks to
-N/A
+✨✨✨
+
+- [@denihs](https://github.com/denihs)
+- [@nachocodoner](https://github.com/nachocodoner)
+- [@leonardoventurini](https://github.com/leonardoventurini)
+- [@StorytellerCZ](https://github.com/StorytellerCZ)
+- [@zodern](https://github.com/zodern)
+- [@harry97](https://github.com/harry97)
+- [@permb](https://github.com/permb)
+- [@9Morello](https://github.com/9Morello)
+- [@wreiske](https://github.com/wreiske)
+- [@MarcoTribuz](https://github.com/MarcoTribuz)
+- [@MeteorCoder](https://forums.meteor.com/u/meteorcoder/summary)
+
+✨✨✨
diff --git a/v3-docs/docs/generators/codegen.js b/v3-docs/docs/generators/codegen.js
index f740041028..a6ed7ab00a 100644
--- a/v3-docs/docs/generators/codegen.js
+++ b/v3-docs/docs/generators/codegen.js
@@ -1,10 +1,11 @@
const { generateChangelog } = require("./changelog/script.js");
const { listPackages } = require("./packages-listing/script.js");
-
+const { generateMeteorVersions } = require("./meteor-versions/script.js");
async function main() {
console.log("🚂 Started codegen 🚂");
await generateChangelog();
await listPackages();
+ await generateMeteorVersions();
console.log("🚀 Done codegen 🚀");
}
diff --git a/v3-docs/docs/generators/meteor-versions/README.md b/v3-docs/docs/generators/meteor-versions/README.md
new file mode 100644
index 0000000000..6307b198bf
--- /dev/null
+++ b/v3-docs/docs/generators/meteor-versions/README.md
@@ -0,0 +1,22 @@
+## Meteor version generator for docs
+
+This is a generator for the meteor versions for the docs, this is used to generate the links in the docs
+to the correct version of the meteor release and docs version.
+
+
+## Why?
+
+This is a way to ensure that the links in the docs are always pointing to the correct version of the docs and release.
+In an automated way.
+
+
+## How to use
+
+To use this generator you must run the following command:
+
+```bash
+node script.js
+```
+
+and it will check in the `changelog` dir for every version and generate a `versions.generated.json` file that will be used by the docs to generate the links to the correct version of the docs.
+
diff --git a/v3-docs/docs/generators/meteor-versions/metadata.generated.js b/v3-docs/docs/generators/meteor-versions/metadata.generated.js
new file mode 100644
index 0000000000..7c96bb4029
--- /dev/null
+++ b/v3-docs/docs/generators/meteor-versions/metadata.generated.js
@@ -0,0 +1,26 @@
+export default {
+ "versions": [
+ {
+ "version": "v3.0",
+ "url": "https://release-3-0.docs.meteor.com/"
+ },
+ {
+ "version": "v3.0.2",
+ "url": "https://release-3-0-2.docs.meteor.com/"
+ },
+ {
+ "version": "v3.0.3",
+ "url": "https://release-3-0-3.docs.meteor.com/"
+ },
+ {
+ "version": "v3.0.4",
+ "url": "https://release-3-0-4.docs.meteor.com/"
+ },
+ {
+ "version": "v3.1.0",
+ "url": "https://release-3-1-0.docs.meteor.com/",
+ "isCurrent": true
+ }
+ ],
+ "currentVersion": "v3.1.0"
+}
\ No newline at end of file
diff --git a/v3-docs/docs/generators/meteor-versions/script.js b/v3-docs/docs/generators/meteor-versions/script.js
new file mode 100644
index 0000000000..ad3900fa9e
--- /dev/null
+++ b/v3-docs/docs/generators/meteor-versions/script.js
@@ -0,0 +1,44 @@
+const _fs = require("fs");
+const fs = _fs.promises;
+
+const getDocsUrl = (version = "") =>
+ `https://release-${version}.docs.meteor.com/`;
+
+exports.generateMeteorVersions = async () => {
+ console.log("Reading meteor versions...");
+ const files = await fs.readdir("./generators/changelog/versions", "utf8");
+
+ const versions = files
+ .filter((f) => f.startsWith("3."))
+ .map((f) => f.replace(".md", ""))
+ .filter((v) => v !== "3.0.1") // there is no 3.0.1 version
+ .map((v) => (v === "3.0.0" ? v.slice(0, -2) : v)) // 3.0 doesn't have a patch version in the URL
+ .map((version) => {
+ return {
+ version: `v${version}`,
+ url: getDocsUrl(`${version}`.replaceAll(".", "-")),
+ };
+ })
+ .map((v, index, arr) => {
+ const isLast = index === arr.length - 1;
+ if (isLast) {
+ v.isCurrent = true;
+ }
+ return v;
+ });
+ const { version: currentVersion } = versions.find((v) => v.isCurrent);
+
+ console.log("Writing meteor versions...");
+ await fs.writeFile(
+ "./generators/meteor-versions/metadata.generated.js",
+ `export default ${JSON.stringify(
+ {
+ versions,
+ currentVersion,
+ },
+ null,
+ 2
+ )}`
+ );
+ console.log("Meteor versions generated!");
+};
diff --git a/v3-docs/docs/history.md b/v3-docs/docs/history.md
index 76e1de7641..8ae1cb1c32 100644
--- a/v3-docs/docs/history.md
+++ b/v3-docs/docs/history.md
@@ -12,15 +12,27 @@ This is a complete history of changes for Meteor releases.
-## v3.1.0, 2024-xx-xx
+## v3.1.0, 2024-11-20
### Highlights
-N/A
+- Upgrade to Node v22
+- Upgrade Mongo Driver to v6
+- Upgrade Express to v5
+- HMR performance improvements
+- Bring the `roles` package into the core
+- Solve remaining issues with Top Level Await and Reify
+- Refactor part of the real-time code in the `mongo` package into TypeScript
+- Deprecate `underscore` and eliminate it from packages
+- Fix Cordova dependency issues
+- Simplify Meteor.EnvironmentVariable and make sure it works in all cases
+- Stop using Rosetta for development MongoDB on Apple Silicon
+- Test improvements
+- Bump `http` package to 3.0.0
#### Breaking Changes
-N/A
+- Express is now at v5 and some it's APIs have changed.
#### Internal API changes
@@ -32,19 +44,70 @@ Please run the following command to update your project:
```bash
-meteor update --release 3.1.0
+meteor update --release 3.1
```
+Make sure to migrate userland code to use the new Express APIs:
+
+https://expressjs.com/en/guide/migrating-5.html
+
+The MongoDB Node.js driver implemented a significant breaking change regarding operation handling. Applications leveraging `rawCollection()` or `rawDatabase()` methods must now utilize Promise-based syntax exclusively, as the callback-pattern API has been deprecated and removed. This modification affects all direct MongoDB operations previously using callback functions.
-#### Meteor Version Release
+#### Bumped Meteor Packages
+
+- accounts-password@3.0.3
+- babel-compiler@7.11.2
+- boilerplate-generator-tests@1.5.3
+- ddp-client@3.0.3
+- ddp-server@3.0.3
+- http@3.0.0
+- ecmascript@0.16.10
+- email@3.1.1
+- meteor-tool@3.1.0
+- meteor@2.0.2
+- minifier-js@3.0.1
+- minimongo@2.0.2
+- modules@0.20.3
+- mongo@2.0.3
+- coffeescript-compiler@2.4.2
+- coffeescript@2.7.2
+- mongo-decimal@0.2.0
+- npm-mongo@6.10.0
+- shell-server@0.6.1
+- test-helpers@2.0.2
+- test-in-console@2.0.1
+- tinytest@1.3.1
+- typescript@5.6.3
+- url@1.3.5
+- webapp@2.0.4
+
+
+#### Bumped NPM Packages
+
+- meteor-babel@7.20.1
+- meteor-installer@3.1.0
+- meteor-node-stubs@1.2.12
-N/A
#### Special thanks to
-N/A
+✨✨✨
+
+- [@denihs](https://github.com/denihs)
+- [@nachocodoner](https://github.com/nachocodoner)
+- [@leonardoventurini](https://github.com/leonardoventurini)
+- [@StorytellerCZ](https://github.com/StorytellerCZ)
+- [@zodern](https://github.com/zodern)
+- [@harry97](https://github.com/harry97)
+- [@permb](https://github.com/permb)
+- [@9Morello](https://github.com/9Morello)
+- [@wreiske](https://github.com/wreiske)
+- [@MarcoTribuz](https://github.com/MarcoTribuz)
+- [@MeteorCoder](https://forums.meteor.com/u/meteorcoder/summary)
+
+✨✨✨
## v3.0.4, 2024-10-15
### Highlights
diff --git a/v3-docs/v3-migration-docs/breaking-changes/index.md b/v3-docs/v3-migration-docs/breaking-changes/index.md
index cc822958fa..0c3cd4b397 100644
--- a/v3-docs/v3-migration-docs/breaking-changes/index.md
+++ b/v3-docs/v3-migration-docs/breaking-changes/index.md
@@ -40,10 +40,10 @@ The `meteor reset` command clears only the local cache by default. Using the `--
This command is often recommended to fix your development project by clearing the cache. Previously, it also cleared the local MongoDB, which could accidentally delete important data.
-## Node v20
+## Node v22
-Meteor 3.0 is now using Node v20. This means that if you have any dependencies or usages
-of Node v14, you will need to update them to be compatible with Node v20.
+Meteor 3.0 is now using Node v22. This means that if you have any dependencies or usages
+of Node v14, you will need to update them to be compatible with Node v22.
## NPM Installer Update
@@ -119,7 +119,8 @@ await Meteor.callAsync('otherMethod') // [!code highlight]
```
-## WebApp Switches to Express
+## WebApp Switches to Express 5
+
::: tip
@@ -128,6 +129,12 @@ If you've customized the WebApp package before, please verify if those customiza
:::
+::: tip
+
+Starting with Meteor 3.1, Express has been updated to version 5. If you're upgrading from an earlier version, [refer to the migration guide](https://expressjs.com/en/guide/migrating-5.html).
+
+:::
+
The `webapp` package now exports these new properties:
```ts
@@ -331,3 +338,9 @@ function patchPublish(publish: typeof Meteor.publish) {
```
This example demonstrates the migration applied to the [`universe:i18n` package](https://github.com/vazco/meteor-universe-i18n/pull/191).
+
+## Mongo driver
+
+In Meteor 3, the MongoDB driver has been updated to version 6.x. This version removes callbacks for async operations, replacing them with standard promises. If you use rawCollection or rawDatabase, ensure your code is updated to use promises.
+
+For details on breaking changes, see [here](https://github.com/mongodb/node-mongodb-native/blob/HEAD/HISTORY.md).
diff --git a/v3-docs/v3-migration-docs/index.md b/v3-docs/v3-migration-docs/index.md
index cf07f5ffe7..4aa566b6fb 100644
--- a/v3-docs/v3-migration-docs/index.md
+++ b/v3-docs/v3-migration-docs/index.md
@@ -1,3 +1,8 @@
+---
+meteor_version: 3.1.0
+node_version: 22.11.0
+npm_version: 10.9.0
+---
# Meteor 3.0 Migration Guide
:::info You are reading the migration guide for Meteor 3!
@@ -11,24 +16,24 @@ This guide is for users with Meteor 2.x projects understand the changes between
Meteor 3.0 is currently in its official version!
-**Latest version:** `3.0.4`
-**Node.js version:** `20.18.0 LTS`
-**NPM version:** `10.8.2`
+**Latest version:** `{{ $frontmatter.meteor_version }}`
+**Node.js version:** `{{ $frontmatter.node_version }} LTS`
+**NPM version:** `{{ $frontmatter.npm_version }}`
## How to try Meteor 3.0?
You can create a new Meteor 3.0 project by running the command below:
-```bash
-meteor create my-new-project --release 3.0.4
+```bash-vue
+ meteor create my-new-project --release {{ $frontmatter.meteor_version }}
```
## How to upgrade from Meteor 2.x?
You can upgrade your Meteor 2.x project by running the command below inside your project folder:
-```bash
-meteor update --release 3.0.4
+```bash-vue
+meteor update --release {{ $frontmatter.meteor_version }}
meteor reset # resets project to a fresh state
```
@@ -53,6 +58,7 @@ This guide covers the necessary topics for migrating your application from Meteo
- [Frequently Asked Questions](./frequently-asked-questions/index.md), answers to common questions.
- [Breaking Changes](./breaking-changes/index.md), an overview of the changes that will affect your application.
+
- [Meteor.call x Meteor.callAsync](./breaking-changes/call-x-callAsync.md), why should you change your methods to use `Async` methods.
- [Upgrading packages](./breaking-changes/upgrading-packages.md), how to upgrade your packages to the be compatible with Meteor v3.
@@ -69,14 +75,15 @@ This guide covers the necessary topics for migrating your application from Meteo
We are aware of these articles and guides to assist with your migration:
- - [Prepare your Meteor.js project for the big 3.0 release](https://dev.to/jankapunkt/prepare-your-meteorjs-project-for-the-big-30-release-14bf)
- - [Gradually upgrading a Meteor.js project to 3.0](https://dev.to/meteor/gradually-upgrading-a-meteorjs-project-to-30-5aj0)
- - [Meteor 3.0 Migration Guide, from Daniel](https://docs.google.com/document/d/1XxHE5MQaS0-85HQ-bkiXxmGlYi41ggkX3F-9Rjb9HhE/edit#heading=h.65xi3waq9bb)
- - [Illustreets Migration Guide, large SaaS migrated to 3.0](https://forums.meteor.com/t/large-saas-migrated-to-3-0/61113) & their how-to [post](https://forums.meteor.com/t/meteor-3-0-beta-6-is-out/61277/12)
-
+- [Prepare your Meteor.js project for the big 3.0 release](https://dev.to/jankapunkt/prepare-your-meteorjs-project-for-the-big-30-release-14bf)
+- [Gradually upgrading a Meteor.js project to 3.0](https://dev.to/meteor/gradually-upgrading-a-meteorjs-project-to-30-5aj0)
+- [Meteor 3.0 Migration Guide, from Daniel](https://docs.google.com/document/d/1XxHE5MQaS0-85HQ-bkiXxmGlYi41ggkX3F-9Rjb9HhE/edit#heading=h.65xi3waq9bb)
+- [Illustreets Migration Guide, large SaaS migrated to 3.0](https://forums.meteor.com/t/large-saas-migrated-to-3-0/61113) & their how-to [post](https://forums.meteor.com/t/meteor-3-0-beta-6-is-out/61277/12)
+
### Videos
Migrating apps to Meteor 3.0:
+
- TicTacToe & others: [YouTube](https://www.youtube.com/watch?v=MtStd0aeyQA)
- Complex Svelte todo list & others: [YouTube](https://www.youtube.com/watch?v=-XW8xwSk-zU)
- Meteor University with v3
diff --git a/v3-docs/v3-migration-docs/package.json b/v3-docs/v3-migration-docs/package.json
index 23a9213fd2..a84b26ec04 100644
--- a/v3-docs/v3-migration-docs/package.json
+++ b/v3-docs/v3-migration-docs/package.json
@@ -5,9 +5,10 @@
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
- "docs:dev": "vitepress dev",
- "docs:build": "vitepress build",
- "docs:preview": "vitepress preview",
+ "generators:versions": "node ./versions-generator.js",
+ "docs:dev": "npm run generators:versions && vitepress dev",
+ "docs:build": "npm run generators:versions && vitepress build",
+ "docs:preview": "npm run generators:versions && vitepress preview",
"deploy:preview": "npm run docs:build && npm run docs:preview"
},
"repository": {
diff --git a/v3-docs/v3-migration-docs/versions-generator.js b/v3-docs/v3-migration-docs/versions-generator.js
new file mode 100644
index 0000000000..8573648b46
--- /dev/null
+++ b/v3-docs/v3-migration-docs/versions-generator.js
@@ -0,0 +1,43 @@
+const fs = require("node:fs");
+
+const develDevBundleLink =
+ "https://raw.githubusercontent.com/meteor/meteor/refs/heads/devel/scripts/build-dev-bundle-common.sh";
+
+const meteorToolLink =
+ "https://raw.githubusercontent.com/meteor/meteor/refs/heads/devel/packages/meteor-tool/package.js";
+
+const getMeteorVersionFromDevel = async () => {
+ const response = await fetch(meteorToolLink);
+ const text = await response.text();
+ const version = text
+ .match(/version: (.*)/)[1]
+ .replaceAll("'", "")
+ .replaceAll('"', "")
+ .replaceAll(",", "");
+ return version;
+};
+
+const getNodeAndNpmVersionFromDevel = async () => {
+ const response = await fetch(develDevBundleLink);
+ const text = await response.text();
+ const nodeVersion = text.match(/NODE_VERSION=(.*)/)[1];
+ const npmVersion = text.match(/NPM_VERSION=(.*)/)[1];
+ return { nodeVersion, npmVersion };
+};
+
+async function main() {
+ const [meteorVersion, { nodeVersion, npmVersion }] = await Promise.all([
+ getMeteorVersionFromDevel(),
+ getNodeAndNpmVersionFromDevel(),
+ ]);
+
+ const newIndexFile = fs
+ .readFileSync("index.md", "utf8")
+ .replace(/meteor_version: (.*)/, `meteor_version: ${meteorVersion}`)
+ .replace(/node_version: (.*)/, `node_version: ${nodeVersion}`)
+ .replace(/npm_version: (.*)/, `npm_version: ${npmVersion}`);
+
+ fs.writeFileSync("index.md", newIndexFile);
+}
+
+main();