escala 2+3: Meteor 1.8.3 -> 2.3 (Mongo 3.2 compatible), dead-package remediation

Reaches Meteor 2.3 building + running against Mongo 3.2, REST smoke test
byte-identical to the 1.6.1.1 baseline (all 12 Flutter endpoints green).

Dead/abandoned Atmosphere packages removed or replaced (the upgrade blockers):
- arkham:comments-ui (no Meteor 2.x build; pinned accounts-password@1.x):
  reimplemented the fire-page comments as a React feature:
    imports/api/Comments/ (collection, server methods, publication, media
    analyzers, new-fire-comment email) + imports/ui/components/Comments/CommentsBox.
    Comment text now rendered as safe plain text + image/youtube embed (was
    markdown-to-HTML). Wired into Fires.js; sitemaps.js + migration v11 updated
    to the new collection. Old Blaze/startup comments files deleted.
- nimble:restivus (REST API; pinned accounts-password@1.3.3, CoffeeScript source
  that crashes this build host): vendored as a local package
  packages/nimble-restivus with the .coffee precompiled to plain JS and the
  accounts-password constraint loosened to 2.x. REST behavior unchanged
  (verified by smoke test). This also dropped the entire iron:router stack.
- maximum:server-transform (+ peerlibrary:*, meteorhacks:zones/inject-initial):
  unused; removal broke Meteor.publishTransformed in FalsePositives publications
  -> replaced with plain Meteor.publish (no transform was configured).
- less, markdown (no source files), and the dead test stack
  (meteortesting:mocha, practicalmeteor:chai, xolvio:cleaner) which transitively
  pulled coffeescript@1.0.17 — the build plugin that crashed meteor-tool
  (node_contextify assertion) on this machine. Removing it unblocked the build.
- fourseven:scss 4.5.4 -> 4.14.1 (node-sass 4.5.3 doesn't build on node 12).

npm-mongo driver at 2.3 is 3.9.x — still compatible with the production Mongo
3.2 replica set.
This commit is contained in:
vjrj 2026-07-13 22:24:09 +02:00
parent ccfc80547a
commit cd570b9d9c
24 changed files with 1638 additions and 312 deletions

View file

@ -1,42 +0,0 @@
/* global Comments */
/* eslint-disable import/no-absolute-path */
import i18n from '/imports/startup/client/i18n';
import '/imports/startup/common/comments';
import './comments.scss';
i18n.init((err, t) => {
Comments.ui.setContent({
title: ' ', // i18n.t('Comentarios'),
save: t('Guardar'),
reply: t('Responder'),
edit: t('Editar'),
remove: t('Borrar'),
'placeholder-textarea': t('Añadir un comentario'),
'add-button-reply': t('Añadir una respuesta'),
'add-button': t('Añadir comentario'),
'you-need-to-login': t('Necesitas iniciar sesión para'),
'add comments': t('añadir comentarios'),
'like comments': t('puntuar comentarios'),
'rate comments': t('puntuar comentarios'),
'add replies': t('responder'),
'load-more': t('Más comentarios')
});
/* This in client side */
Comments.ui.config({
limit: 20, // default 10
loadMoreCount: 20, // default 20
/* generateAvatar: function genAvatar(user, isAnonymous) {
if (isAnonymous) {
return i18n.t('Anónimo');
}
return user.profile && user.profile.name && user.profile.name.first ? user.profile.name.first : null;
}, */
template: 'bootstrap', // default 'semantic-ui'
// default 'http://s3.amazonaws.com/37assets/svn/765-default-avatar.png'
defaultAvatar: '/default-avatar.png',
markdown: true
});
});

View file

@ -1,29 +0,0 @@
.comments-section {
width: 100%;
}
.comments-box {
max-width: inherit;
padding: 0;
}
p.comment-content {
/* white-space: pre-line; */
}
/* remove comment btn danger style */
div.media-body.comment> div> div> div.btn.btn-danger.remove-action {
background-color: white;
border: 1px solid rgb(204, 204, 204);
color: rgb(51, 51, 51);
}
/* text-area height */
.form-control .create-comment {
height: 9em;
}
.img-avatar {
margin-right: 5px;
}