WIP: Meteor 2.5 -> 3.1 migration (package resolution done; build blocked)

Reaches release METEOR@3.1 with all package-version conflicts resolved against a
modern dockerized MongoDB 7 (replica set). NOT yet building — parked here.

Done:
- MongoDB 7 single-node replica set (docker, port 27019) as the fuegos DB,
  decoupled from the shared rsmain 3.2 (unblocks Meteor 3's mongodb driver).
- meteor update --release 3.1 resolves after swapping dead packages:
  mongo-livedata removed; facts -> facts-base; saucecode:timezoned-synced-cron
  -> quave:synced-cron; aldeed:collection2-core -> aldeed:collection2@4.0.4;
  mys:fonts removed (pinned caching-compiler@1.0.0); fourseven:scss 4.14.1 ->
  5.0.0 (Dart Sass, no node-sass) + sass installed; nimble-restivus vendored
  package loosened to accounts-password 2.x||3.x.
- Network: meteor-tool node 22 needs NODE_OPTIONS='--dns-result-order=ipv4first
  --no-network-family-autoselection' to reach warehouse.meteor.com (Happy
  Eyeballs picks an unreachable IPv6 otherwise).
- smoke/smoke.sh generalized to mongosh + configurable port for Mongo 7.

Blocked on (remaining Meteor 3 work):
1. Client bundle linker: 'Runtime is not available, but it uses features needing
   the runtime: underscore' — an old client atmosphere package needs replacing.
2. Server async/await migration (Rest.js + helpers + methods + publications +
   comments + subsUnion + migrations to *Async; no Fibers).
3. Patch vendored restivus to await async endpoint handlers.
4. cron.js SyncedCron import (quave), facts.js Facts import (facts-base).
5. React 16 -> 18 render root (createRoot).
6. SCSS @import/@use + lighten/darken -> color.adjust (dart-sass deprecations).
This commit is contained in:
vjrj 2026-07-13 23:25:29 +02:00
parent bddeca79a0
commit 8fa10e47c7
6 changed files with 154 additions and 150 deletions

View file

@ -4,34 +4,33 @@
# 'meteor add' and 'meteor remove' will edit this file for you, # 'meteor add' and 'meteor remove' will edit this file for you,
# but you can also edit it by hand. # but you can also edit it by hand.
meteor-base@1.5.1 # Packages every Meteor app needs to have meteor-base@1.5.2 # Packages every Meteor app needs to have
mobile-experience@1.1.0 # Packages for a great mobile UX mobile-experience@1.1.2 # Packages for a great mobile UX
mongo@1.13.0 # The database Meteor supports right now mongo@2.0.3 # The database Meteor supports right now
reactive-var@1.0.11 # Reactive variable for tracker reactive-var@1.0.13 # Reactive variable for tracker
tracker@1.2.0 # Meteor's client-side reactive programming library tracker@1.3.4 # Meteor's client-side reactive programming library
standard-minifier-css@1.7.4 # CSS minifier run for production mode standard-minifier-css@1.9.3 # CSS minifier run for production mode
standard-minifier-js@2.7.1 # JS minifier run for production mode standard-minifier-js@3.0.0 # JS minifier run for production mode
es5-shim@4.8.0 # ECMAScript 5 compatibility for older browsers. ecmascript@0.16.10 # Enable ECMAScript2015+ syntax in app code
ecmascript@0.16.0 # Enable ECMAScript2015+ syntax in app code shell-server@0.6.1 # Server-side component of the `meteor shell` command
shell-server@0.5.0 # Server-side component of the `meteor shell` command
react-meteor-data react-meteor-data
alanning:roles alanning:roles
fourseven:scss@4.14.1 fourseven:scss@5.0.0
accounts-base@2.2.0 accounts-base@3.0.3
accounts-password@2.2.0 accounts-password@3.0.3
service-configuration@1.3.0 service-configuration@1.3.5
accounts-facebook@1.3.3 accounts-facebook@1.3.4
accounts-github@1.5.0 accounts-github@1.5.1
accounts-google@1.4.0 accounts-google@1.4.1
themeteorchef:bert themeteorchef:bert
fortawesome:fontawesome fortawesome:fontawesome
aldeed:collection2-core@2.0.1 aldeed:collection2@4.0.4
audit-argument-checks@1.0.7 audit-argument-checks@1.0.8
ddp-rate-limiter@1.1.0 ddp-rate-limiter@1.2.2
dynamic-import@0.7.2 dynamic-import@0.7.4
static-html@1.3.2 static-html@1.4.0
alexwine:bootstrap-4 alexwine:bootstrap-4
selaias:cookie-consent # Cookie consent selaias:cookie-consent # Cookie consent
@ -42,19 +41,16 @@ flowkey:raven # js errors
vjrj:piwik # Stats vjrj:piwik # Stats
mdg:geolocation mdg:geolocation
natestrauser:publish-performant-counts natestrauser:publish-performant-counts
mys:fonts # fonst in npm
ostrio:mailer # mailer ostrio:mailer # mailer
# babrahams:constellation # dev utility # babrahams:constellation # dev utility
percolate:migrations # db migrations percolate:migrations # db migrations
ostrio:meteor-root ostrio:meteor-root
aldeed:schema-deny aldeed:schema-deny
dburles:collection-helpers dburles:collection-helpers
mongo-livedata@1.0.12
reywood:publish-composite reywood:publish-composite
facts@1.0.9 facts-base@1.0.2
gadicohen:sitemaps gadicohen:sitemaps
nspangler:autoreconnect nspangler:autoreconnect
saucecode:timezoned-synced-cron quave:synced-cron
# lmachens:kadira # lmachens:kadira
nimble:restivus@0.8.12 nimble:restivus@0.8.12
underscore@1.0.10

View file

@ -1 +1 @@
METEOR@2.5 METEOR@3.1

View file

@ -1,128 +1,128 @@
255kb:meteor-status@1.5.0 255kb:meteor-status@1.5.0
accounts-base@2.2.0 accounts-base@3.0.3
accounts-facebook@1.3.3 accounts-facebook@1.3.4
accounts-github@1.5.0 accounts-github@1.5.1
accounts-google@1.4.0 accounts-google@1.4.1
accounts-oauth@1.4.0 accounts-oauth@1.4.5
accounts-password@2.2.0 accounts-password@3.0.3
alanning:roles@1.3.0 alanning:roles@1.2.10
aldeed:collection2-core@2.1.2 aldeed:collection2@4.2.0
aldeed:schema-deny@2.0.1 aldeed:schema-deny@4.0.2
aldeed:simple-schema@1.13.1
alexwine:bootstrap-4@4.1.0 alexwine:bootstrap-4@4.1.0
allow-deny@1.1.0 allow-deny@2.0.0
audit-argument-checks@1.0.7 audit-argument-checks@1.0.8
autoupdate@1.8.0 autoupdate@2.0.0
babel-compiler@7.7.0 babel-compiler@7.11.2
babel-runtime@1.5.0 babel-runtime@1.5.2
base64@1.0.12 base64@1.0.13
binary-heap@1.0.11 binary-heap@1.0.12
blaze@2.5.0 blaze@3.0.3
blaze-tools@1.1.2 blaze-tools@2.0.1
boilerplate-generator@1.7.1 boilerplate-generator@2.0.0
caching-compiler@1.2.2 caching-compiler@2.0.1
caching-html-compiler@1.2.1 caching-html-compiler@2.0.1
callback-hook@1.4.0 callback-hook@1.6.0
check@1.3.1 check@1.4.4
dburles:collection-helpers@1.1.0 core-runtime@1.0.0
ddp@1.4.0 dburles:collection-helpers@1.0.0
ddp-client@2.5.0 ddp@1.4.2
ddp-common@1.4.0 ddp-client@3.0.3
ddp-rate-limiter@1.1.0 ddp-common@1.4.4
ddp-server@2.5.0 ddp-rate-limiter@1.2.2
diff-sequence@1.1.1 ddp-server@3.0.3
dynamic-import@0.7.2 diff-sequence@1.1.3
ecmascript@0.16.0 dynamic-import@0.7.4
ecmascript-runtime@0.8.0 ecmascript@0.16.10
ecmascript-runtime-client@0.12.1 ecmascript-runtime@0.8.3
ecmascript-runtime-server@0.11.0 ecmascript-runtime-client@0.12.2
ejson@1.1.1 ecmascript-runtime-server@0.11.1
email@2.2.0 ejson@1.1.4
es5-shim@4.8.0 email@3.1.1
facebook-oauth@1.10.0 es5-shim@4.8.1
facts@1.0.9 facebook-oauth@1.11.4
fetch@0.1.1 facts-base@1.0.2
fetch@0.1.5
flowkey:raven@1.1.0 flowkey:raven@1.1.0
fortawesome:fontawesome@4.7.0 fortawesome:fontawesome@4.7.0
fourseven:scss@4.14.1 fourseven:scss@5.0.0
gadicc:blaze-react-component@1.4.0 gadicc:blaze-react-component@2.0.1
gadicohen:robots-txt@0.0.10 gadicohen:sitemaps@0.0.17
gadicohen:sitemaps@0.0.26 geojson-utils@1.0.12
geojson-utils@1.0.10 github-oauth@1.4.2
github-oauth@1.3.1 google-oauth@1.4.5
google-oauth@1.4.1 hot-code-push@1.0.5
hot-code-push@1.0.4 html-tools@2.0.1
html-tools@1.1.2 htmljs@2.0.2
htmljs@1.1.0 id-map@1.2.0
http@2.0.0 inter-process-messaging@0.1.2
id-map@1.1.1
inter-process-messaging@0.1.1
jquery@1.11.11 jquery@1.11.11
launch-screen@1.3.0 launch-screen@2.0.1
localstorage@1.2.0 localstorage@1.2.1
logging@1.3.1 logging@1.3.5
mdg:geolocation@1.3.0 mdg:geolocation@1.3.0
meteor@1.10.0 meteor@2.0.2
meteor-base@1.5.1 meteor-base@1.5.2
minifier-css@1.6.0 minifier-css@2.0.0
minifier-js@2.7.1 minifier-js@3.0.1
minimongo@1.7.0 minimongo@2.0.2
mobile-experience@1.1.0 mobile-experience@1.1.2
mobile-status-bar@1.1.0 mobile-status-bar@1.1.1
modern-browsers@0.1.7 modern-browsers@0.1.11
modules@0.17.0 modules@0.20.3
modules-runtime@0.12.0 modules-runtime@0.13.2
mongo@1.13.0 mongo@2.0.3
mongo-decimal@0.1.2 mongo-decimal@0.2.0
mongo-dev-server@1.1.0 mongo-dev-server@1.1.1
mongo-id@1.0.8 mongo-id@1.0.9
mongo-livedata@1.0.12 mongo-livedata@1.0.13
mys:fonts@0.0.2
natestrauser:publish-performant-counts@0.1.2 natestrauser:publish-performant-counts@0.1.2
nimble:restivus@0.8.12 nimble:restivus@0.8.12
npm-mongo@3.9.1 npm-mongo@6.10.0
nspangler:autoreconnect@0.0.1 nspangler:autoreconnect@0.0.1
oauth@2.1.0 oauth@3.0.0
oauth2@1.3.1 oauth2@1.3.3
observe-sequence@1.0.16 observe-sequence@2.0.1
ordered-dict@1.1.0 ordered-dict@1.2.0
ostrio:cookies@2.7.0 ostrio:cookies@2.8.0
ostrio:mailer@2.1.0 ostrio:mailer@2.5.0
ostrio:meteor-root@1.0.7 ostrio:meteor-root@1.0.7
percolate:migrations@1.0.2 percolate:migrations@2.0.1
promise@0.12.0 promise@1.0.0
raix:eventemitter@0.1.3 quave:synced-cron@2.4.0
random@1.2.0 raix:eventemitter@1.0.0
rate-limit@1.0.9 random@1.2.2
react-fast-refresh@0.2.0 rate-limit@1.1.2
react-fast-refresh@0.2.9
react-meteor-data@0.2.16 react-meteor-data@0.2.16
reactive-dict@1.3.0 reactive-var@1.0.13
reactive-var@1.0.11 reload@1.3.2
reload@1.3.1 retry@1.1.1
retry@1.1.0
reywood:publish-composite@1.6.0 reywood:publish-composite@1.6.0
routepolicy@1.1.1 routepolicy@1.1.2
saucecode:timezoned-synced-cron@1.2.11
selaias:cookie-consent@0.4.0 selaias:cookie-consent@0.4.0
service-configuration@1.3.0 service-configuration@1.3.5
session@1.2.0 sha@1.0.10
sha@1.0.9 shell-server@0.6.1
shell-server@0.5.0 simple:json-routes@3.0.0
simple:json-routes@1.0.4 socket-stream-client@0.5.3
socket-stream-client@0.4.0 spacebars@2.0.1
spacebars@1.2.0 spacebars-compiler@2.0.1
spacebars-compiler@1.3.0 standard-minifier-css@1.9.3
standard-minifier-css@1.7.4 standard-minifier-js@3.0.0
standard-minifier-js@2.7.1 static-html@1.4.0
static-html@1.3.2 static-html-tools@1.0.0
templating@1.4.1 templating@1.4.4
templating-compiler@1.4.1 templating-compiler@2.0.1
templating-runtime@1.5.0 templating-runtime@2.0.2
templating-tools@1.2.1 templating-tools@2.0.1
themeteorchef:bert@2.1.3 themeteorchef:bert@1.1.0
tmeasday:check-npm-versions@0.3.2 tmeasday:check-npm-versions@0.3.2
tracker@1.2.0 tracker@1.3.4
underscore@1.0.10 typescript@5.6.3
url@1.3.2 underscore@1.6.2
url@1.3.5
vjrj:piwik@0.3.1 vjrj:piwik@0.3.1
webapp@1.13.0 webapp@2.0.4
webapp-hashing@1.1.0 webapp-hashing@1.1.2
zodern:types@1.0.13

View file

@ -99,7 +99,8 @@
"eslint-plugin-jsx-a11y": "^6.0.2", "eslint-plugin-jsx-a11y": "^6.0.2",
"eslint-plugin-meteor": "^4.1.6", "eslint-plugin-meteor": "^4.1.6",
"eslint-plugin-react": "^7.4.0", "eslint-plugin-react": "^7.4.0",
"jest": "^21.2.1" "jest": "^21.2.1",
"sass": "^1.101.0"
}, },
"eslintConfig": { "eslintConfig": {
"parserOptions": { "parserOptions": {

View file

@ -22,7 +22,7 @@ Package.onUse(function (api) {
api.use('check'); api.use('check');
api.use('underscore'); api.use('underscore');
api.use('accounts-password@2.0.0'); api.use('accounts-password@2.0.0 || 3.0.0');
api.use('simple:json-routes'); api.use('simple:json-routes');
// iron-router error helper defines the `ironRouterSendErrorToResponse` global // iron-router error helper defines the `ironRouterSendErrorToResponse` global

View file

@ -5,21 +5,28 @@
# smoke/smoke.sh --update # (re)generate the baseline snapshots # smoke/smoke.sh --update # (re)generate the baseline snapshots
# #
# Env overrides: # Env overrides:
# MONGO_CONTAINER docker container running the dev Mongo (default tcef-mongo32) # MONGO_CONTAINER docker container running the dev Mongo (default tcef-mongo7)
# MONGO_DB database name (default fuegos) # MONGO_DB database name (default fuegos)
# MONGO_SHELL mongosh (Mongo 5+) or mongo (Mongo <5) (default mongosh)
# MONGO_PORT port mongod listens on inside the container (default 27019)
# BASE_URL dev server URL (default http://localhost:3100) # BASE_URL dev server URL (default http://localhost:3100)
#
# Mongo 3.2 (Meteor ≤ 2.5) parity example:
# MONGO_CONTAINER=tcef-mongo32 MONGO_SHELL=mongo MONGO_PORT=27017 smoke/smoke.sh
set -euo pipefail set -euo pipefail
cd "$(dirname "$0")/.." cd "$(dirname "$0")/.."
MONGO_CONTAINER="${MONGO_CONTAINER:-tcef-mongo32}" MONGO_CONTAINER="${MONGO_CONTAINER:-tcef-mongo7}"
MONGO_DB="${MONGO_DB:-fuegos}" MONGO_DB="${MONGO_DB:-fuegos}"
MONGO_SHELL="${MONGO_SHELL:-mongosh}"
MONGO_PORT="${MONGO_PORT:-27019}"
echo "== Seeding ${MONGO_DB} in ${MONGO_CONTAINER} ==" echo "== Seeding ${MONGO_DB} in ${MONGO_CONTAINER} (${MONGO_SHELL}:${MONGO_PORT}) =="
# Copy the script in and run it as a whole file: the mongo shell evaluates a # Copy the script in and run it as a whole file: the shell evaluates a file
# file argument atomically (piping via stdin is line-by-line and breaks on # argument atomically (piping via stdin is line-by-line and breaks on multi-line
# multi-line comments / var scope). # comments / var scope).
docker cp smoke/seed.js "${MONGO_CONTAINER}:/tmp/tcef-seed.js" docker cp smoke/seed.js "${MONGO_CONTAINER}:/tmp/tcef-seed.js"
docker exec "${MONGO_CONTAINER}" mongo "${MONGO_DB}" /tmp/tcef-seed.js | tail -1 docker exec "${MONGO_CONTAINER}" "${MONGO_SHELL}" --port "${MONGO_PORT}" "${MONGO_DB}" /tmp/tcef-seed.js | tail -1
echo "== Running REST smoke test against ${BASE_URL:-http://localhost:3100} ==" echo "== Running REST smoke test against ${BASE_URL:-http://localhost:3100} =="
node smoke/run.js "$@" node smoke/run.js "$@"