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,
# but you can also edit it by hand.
meteor-base@1.5.1 # Packages every Meteor app needs to have
mobile-experience@1.1.0 # Packages for a great mobile UX
mongo@1.13.0 # The database Meteor supports right now
reactive-var@1.0.11 # Reactive variable for tracker
tracker@1.2.0 # Meteor's client-side reactive programming library
meteor-base@1.5.2 # Packages every Meteor app needs to have
mobile-experience@1.1.2 # Packages for a great mobile UX
mongo@2.0.3 # The database Meteor supports right now
reactive-var@1.0.13 # Reactive variable for tracker
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-js@2.7.1 # JS minifier run for production mode
es5-shim@4.8.0 # ECMAScript 5 compatibility for older browsers.
ecmascript@0.16.0 # Enable ECMAScript2015+ syntax in app code
shell-server@0.5.0 # Server-side component of the `meteor shell` command
standard-minifier-css@1.9.3 # CSS minifier run for production mode
standard-minifier-js@3.0.0 # JS minifier run for production mode
ecmascript@0.16.10 # Enable ECMAScript2015+ syntax in app code
shell-server@0.6.1 # Server-side component of the `meteor shell` command
react-meteor-data
alanning:roles
fourseven:scss@4.14.1
accounts-base@2.2.0
accounts-password@2.2.0
service-configuration@1.3.0
accounts-facebook@1.3.3
accounts-github@1.5.0
accounts-google@1.4.0
fourseven:scss@5.0.0
accounts-base@3.0.3
accounts-password@3.0.3
service-configuration@1.3.5
accounts-facebook@1.3.4
accounts-github@1.5.1
accounts-google@1.4.1
themeteorchef:bert
fortawesome:fontawesome
aldeed:collection2-core@2.0.1
audit-argument-checks@1.0.7
ddp-rate-limiter@1.1.0
dynamic-import@0.7.2
static-html@1.3.2
aldeed:collection2@4.0.4
audit-argument-checks@1.0.8
ddp-rate-limiter@1.2.2
dynamic-import@0.7.4
static-html@1.4.0
alexwine:bootstrap-4
selaias:cookie-consent # Cookie consent
@ -42,19 +41,16 @@ flowkey:raven # js errors
vjrj:piwik # Stats
mdg:geolocation
natestrauser:publish-performant-counts
mys:fonts # fonst in npm
ostrio:mailer # mailer
# babrahams:constellation # dev utility
percolate:migrations # db migrations
ostrio:meteor-root
aldeed:schema-deny
dburles:collection-helpers
mongo-livedata@1.0.12
reywood:publish-composite
facts@1.0.9
facts-base@1.0.2
gadicohen:sitemaps
nspangler:autoreconnect
saucecode:timezoned-synced-cron
quave:synced-cron
# lmachens:kadira
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
accounts-base@2.2.0
accounts-facebook@1.3.3
accounts-github@1.5.0
accounts-google@1.4.0
accounts-oauth@1.4.0
accounts-password@2.2.0
alanning:roles@1.3.0
aldeed:collection2-core@2.1.2
aldeed:schema-deny@2.0.1
accounts-base@3.0.3
accounts-facebook@1.3.4
accounts-github@1.5.1
accounts-google@1.4.1
accounts-oauth@1.4.5
accounts-password@3.0.3
alanning:roles@1.2.10
aldeed:collection2@4.2.0
aldeed:schema-deny@4.0.2
aldeed:simple-schema@1.13.1
alexwine:bootstrap-4@4.1.0
allow-deny@1.1.0
audit-argument-checks@1.0.7
autoupdate@1.8.0
babel-compiler@7.7.0
babel-runtime@1.5.0
base64@1.0.12
binary-heap@1.0.11
blaze@2.5.0
blaze-tools@1.1.2
boilerplate-generator@1.7.1
caching-compiler@1.2.2
caching-html-compiler@1.2.1
callback-hook@1.4.0
check@1.3.1
dburles:collection-helpers@1.1.0
ddp@1.4.0
ddp-client@2.5.0
ddp-common@1.4.0
ddp-rate-limiter@1.1.0
ddp-server@2.5.0
diff-sequence@1.1.1
dynamic-import@0.7.2
ecmascript@0.16.0
ecmascript-runtime@0.8.0
ecmascript-runtime-client@0.12.1
ecmascript-runtime-server@0.11.0
ejson@1.1.1
email@2.2.0
es5-shim@4.8.0
facebook-oauth@1.10.0
facts@1.0.9
fetch@0.1.1
allow-deny@2.0.0
audit-argument-checks@1.0.8
autoupdate@2.0.0
babel-compiler@7.11.2
babel-runtime@1.5.2
base64@1.0.13
binary-heap@1.0.12
blaze@3.0.3
blaze-tools@2.0.1
boilerplate-generator@2.0.0
caching-compiler@2.0.1
caching-html-compiler@2.0.1
callback-hook@1.6.0
check@1.4.4
core-runtime@1.0.0
dburles:collection-helpers@1.0.0
ddp@1.4.2
ddp-client@3.0.3
ddp-common@1.4.4
ddp-rate-limiter@1.2.2
ddp-server@3.0.3
diff-sequence@1.1.3
dynamic-import@0.7.4
ecmascript@0.16.10
ecmascript-runtime@0.8.3
ecmascript-runtime-client@0.12.2
ecmascript-runtime-server@0.11.1
ejson@1.1.4
email@3.1.1
es5-shim@4.8.1
facebook-oauth@1.11.4
facts-base@1.0.2
fetch@0.1.5
flowkey:raven@1.1.0
fortawesome:fontawesome@4.7.0
fourseven:scss@4.14.1
gadicc:blaze-react-component@1.4.0
gadicohen:robots-txt@0.0.10
gadicohen:sitemaps@0.0.26
geojson-utils@1.0.10
github-oauth@1.3.1
google-oauth@1.4.1
hot-code-push@1.0.4
html-tools@1.1.2
htmljs@1.1.0
http@2.0.0
id-map@1.1.1
inter-process-messaging@0.1.1
fourseven:scss@5.0.0
gadicc:blaze-react-component@2.0.1
gadicohen:sitemaps@0.0.17
geojson-utils@1.0.12
github-oauth@1.4.2
google-oauth@1.4.5
hot-code-push@1.0.5
html-tools@2.0.1
htmljs@2.0.2
id-map@1.2.0
inter-process-messaging@0.1.2
jquery@1.11.11
launch-screen@1.3.0
localstorage@1.2.0
logging@1.3.1
launch-screen@2.0.1
localstorage@1.2.1
logging@1.3.5
mdg:geolocation@1.3.0
meteor@1.10.0
meteor-base@1.5.1
minifier-css@1.6.0
minifier-js@2.7.1
minimongo@1.7.0
mobile-experience@1.1.0
mobile-status-bar@1.1.0
modern-browsers@0.1.7
modules@0.17.0
modules-runtime@0.12.0
mongo@1.13.0
mongo-decimal@0.1.2
mongo-dev-server@1.1.0
mongo-id@1.0.8
mongo-livedata@1.0.12
mys:fonts@0.0.2
meteor@2.0.2
meteor-base@1.5.2
minifier-css@2.0.0
minifier-js@3.0.1
minimongo@2.0.2
mobile-experience@1.1.2
mobile-status-bar@1.1.1
modern-browsers@0.1.11
modules@0.20.3
modules-runtime@0.13.2
mongo@2.0.3
mongo-decimal@0.2.0
mongo-dev-server@1.1.1
mongo-id@1.0.9
mongo-livedata@1.0.13
natestrauser:publish-performant-counts@0.1.2
nimble:restivus@0.8.12
npm-mongo@3.9.1
npm-mongo@6.10.0
nspangler:autoreconnect@0.0.1
oauth@2.1.0
oauth2@1.3.1
observe-sequence@1.0.16
ordered-dict@1.1.0
ostrio:cookies@2.7.0
ostrio:mailer@2.1.0
oauth@3.0.0
oauth2@1.3.3
observe-sequence@2.0.1
ordered-dict@1.2.0
ostrio:cookies@2.8.0
ostrio:mailer@2.5.0
ostrio:meteor-root@1.0.7
percolate:migrations@1.0.2
promise@0.12.0
raix:eventemitter@0.1.3
random@1.2.0
rate-limit@1.0.9
react-fast-refresh@0.2.0
percolate:migrations@2.0.1
promise@1.0.0
quave:synced-cron@2.4.0
raix:eventemitter@1.0.0
random@1.2.2
rate-limit@1.1.2
react-fast-refresh@0.2.9
react-meteor-data@0.2.16
reactive-dict@1.3.0
reactive-var@1.0.11
reload@1.3.1
retry@1.1.0
reactive-var@1.0.13
reload@1.3.2
retry@1.1.1
reywood:publish-composite@1.6.0
routepolicy@1.1.1
saucecode:timezoned-synced-cron@1.2.11
routepolicy@1.1.2
selaias:cookie-consent@0.4.0
service-configuration@1.3.0
session@1.2.0
sha@1.0.9
shell-server@0.5.0
simple:json-routes@1.0.4
socket-stream-client@0.4.0
spacebars@1.2.0
spacebars-compiler@1.3.0
standard-minifier-css@1.7.4
standard-minifier-js@2.7.1
static-html@1.3.2
templating@1.4.1
templating-compiler@1.4.1
templating-runtime@1.5.0
templating-tools@1.2.1
themeteorchef:bert@2.1.3
service-configuration@1.3.5
sha@1.0.10
shell-server@0.6.1
simple:json-routes@3.0.0
socket-stream-client@0.5.3
spacebars@2.0.1
spacebars-compiler@2.0.1
standard-minifier-css@1.9.3
standard-minifier-js@3.0.0
static-html@1.4.0
static-html-tools@1.0.0
templating@1.4.4
templating-compiler@2.0.1
templating-runtime@2.0.2
templating-tools@2.0.1
themeteorchef:bert@1.1.0
tmeasday:check-npm-versions@0.3.2
tracker@1.2.0
underscore@1.0.10
url@1.3.2
tracker@1.3.4
typescript@5.6.3
underscore@1.6.2
url@1.3.5
vjrj:piwik@0.3.1
webapp@1.13.0
webapp-hashing@1.1.0
webapp@2.0.4
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-meteor": "^4.1.6",
"eslint-plugin-react": "^7.4.0",
"jest": "^21.2.1"
"jest": "^21.2.1",
"sass": "^1.101.0"
},
"eslintConfig": {
"parserOptions": {

View file

@ -22,7 +22,7 @@ Package.onUse(function (api) {
api.use('check');
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');
// iron-router error helper defines the `ironRouterSendErrorToResponse` global

View file

@ -5,21 +5,28 @@
# smoke/smoke.sh --update # (re)generate the baseline snapshots
#
# 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_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)
#
# Mongo 3.2 (Meteor ≤ 2.5) parity example:
# MONGO_CONTAINER=tcef-mongo32 MONGO_SHELL=mongo MONGO_PORT=27017 smoke/smoke.sh
set -euo pipefail
cd "$(dirname "$0")/.."
MONGO_CONTAINER="${MONGO_CONTAINER:-tcef-mongo32}"
MONGO_CONTAINER="${MONGO_CONTAINER:-tcef-mongo7}"
MONGO_DB="${MONGO_DB:-fuegos}"
MONGO_SHELL="${MONGO_SHELL:-mongosh}"
MONGO_PORT="${MONGO_PORT:-27019}"
echo "== Seeding ${MONGO_DB} in ${MONGO_CONTAINER} =="
# Copy the script in and run it as a whole file: the mongo shell evaluates a
# file argument atomically (piping via stdin is line-by-line and breaks on
# multi-line comments / var scope).
echo "== Seeding ${MONGO_DB} in ${MONGO_CONTAINER} (${MONGO_SHELL}:${MONGO_PORT}) =="
# Copy the script in and run it as a whole file: the shell evaluates a file
# argument atomically (piping via stdin is line-by-line and breaks on multi-line
# comments / var scope).
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} =="
node smoke/run.js "$@"