WIP(meteor3): server BOOTS on 3.1 + Mongo 7; restivus async-patched
Major milestone: the Meteor 3.1 server boots and runs against dockerized MongoDB 7, and the REST framework responds (status/uptime OK). - collection2 v4: import its eager entry 'meteor/aldeed:collection2/static.js' from new eager files server|client/00-collection2-init.js so main.js runs and patches attachSchema before collections load (v4 is fully lazy, no main module). - fixtures.js disabled: @cleverbeagle/seeder uses sync Mongo, no Meteor 3 support (dev fixtures, not needed for smoke). Debt. - sitemaps.js disabled: gadicohen:sitemaps@0.0.17 pre-0.9 API, no 'sitemaps' global on Meteor 3. Debt (SEO). - Vendored restivus patched for async endpoints: route handler is async and awaits _callEndpoint; _callEndpoint awaits the action + auth/role checks. NEXT: Rest.js endpoints + helpers (countRealFires/firesUnion/whichAreFalsePositives/ fireFromHash/subscriptionsInsert/upsertFalsePositive) still use sync Mongo (.count()/.findOne()/.fetch()/.insert()/.upsert()) -> convert to *Async, then smoke test against Mongo 7.
This commit is contained in:
parent
25dc1b99c0
commit
b37069c3e5
6 changed files with 30 additions and 8 deletions
3
client/00-collection2-init.js
Normal file
3
client/00-collection2-init.js
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
// See server/00-collection2-init.js. collection2 v4's static.js is the eager
|
||||||
|
// entry that runs main.js (patches attachSchema) before any collection loads.
|
||||||
|
import 'meteor/aldeed:collection2/static.js';
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
// collection2 v4 is lazy with no main module: import the exported Collection2
|
||||||
|
// so main.js runs and patches attachSchema before any collection loads.
|
||||||
import '../imports/startup/client';
|
import '../imports/startup/client';
|
||||||
|
|
||||||
// https://github.com/GoogleChrome/rendertron#rendering-budget-timeout
|
// https://github.com/GoogleChrome/rendertron#rendering-budget-timeout
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,19 @@ import './catchExceptions';
|
||||||
import './i18n';
|
import './i18n';
|
||||||
import './accounts';
|
import './accounts';
|
||||||
import './api';
|
import './api';
|
||||||
import './fixtures';
|
// Meteor 3 debt: '@cleverbeagle/seeder' (dev/staging fixtures) uses sync Mongo
|
||||||
|
// (findOne) and has no Meteor 3 async support. Disabled — not needed for the
|
||||||
|
// REST smoke test. Re-implement dev fixtures with *Async if desired.
|
||||||
|
// import './fixtures';
|
||||||
import './email';
|
import './email';
|
||||||
import '/imports/api/Comments/server';
|
import '/imports/api/Comments/server';
|
||||||
import './IPGeocoder';
|
import './IPGeocoder';
|
||||||
import './migrations';
|
import './migrations';
|
||||||
import './facts';
|
import './facts';
|
||||||
import './sitemaps';
|
// Meteor 3 debt: gadicohen:sitemaps@0.0.17 uses the pre-0.9 package API and no
|
||||||
|
// longer exports the `sitemaps` global on Meteor 3. Disabled (SEO sitemap, not
|
||||||
|
// on the REST path). Replace with a maintained sitemap approach if needed.
|
||||||
|
// import './sitemaps';
|
||||||
import './subsUnion';
|
import './subsUnion';
|
||||||
import './prerender';
|
import './prerender';
|
||||||
import './feedback';
|
import './feedback';
|
||||||
|
|
|
||||||
|
|
@ -127,7 +127,7 @@ Route = (function() {
|
||||||
_.each(allowedMethods, function(method) {
|
_.each(allowedMethods, function(method) {
|
||||||
var endpoint;
|
var endpoint;
|
||||||
endpoint = self.endpoints[method];
|
endpoint = self.endpoints[method];
|
||||||
return JsonRoutes.add(method, fullPath, function(req, res) {
|
return JsonRoutes.add(method, fullPath, async function(req, res) {
|
||||||
var doneFunc, endpointContext, error, responseData, responseInitiated;
|
var doneFunc, endpointContext, error, responseData, responseInitiated;
|
||||||
responseInitiated = false;
|
responseInitiated = false;
|
||||||
doneFunc = function() {
|
doneFunc = function() {
|
||||||
|
|
@ -144,7 +144,8 @@ Route = (function() {
|
||||||
_.extend(endpointContext, endpoint);
|
_.extend(endpointContext, endpoint);
|
||||||
responseData = null;
|
responseData = null;
|
||||||
try {
|
try {
|
||||||
responseData = self._callEndpoint(endpointContext, endpoint);
|
// Meteor 3: endpoint actions are async (they use *Async Mongo).
|
||||||
|
responseData = await self._callEndpoint(endpointContext, endpoint);
|
||||||
} catch (error1) {
|
} catch (error1) {
|
||||||
error = error1;
|
error = error1;
|
||||||
ironRouterSendErrorToResponse(error, req, res);
|
ironRouterSendErrorToResponse(error, req, res);
|
||||||
|
|
@ -250,12 +251,12 @@ Route = (function() {
|
||||||
@returns The endpoint response or a 401 if authentication fails
|
@returns The endpoint response or a 401 if authentication fails
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Route.prototype._callEndpoint = function(endpointContext, endpoint) {
|
Route.prototype._callEndpoint = async function(endpointContext, endpoint) {
|
||||||
var auth;
|
var auth;
|
||||||
auth = this._authAccepted(endpointContext, endpoint);
|
auth = await this._authAccepted(endpointContext, endpoint);
|
||||||
if (auth.success) {
|
if (auth.success) {
|
||||||
if (this._roleAccepted(endpointContext, endpoint)) {
|
if (await this._roleAccepted(endpointContext, endpoint)) {
|
||||||
return endpoint.action.call(endpointContext);
|
return await endpoint.action.call(endpointContext);
|
||||||
} else {
|
} else {
|
||||||
return {
|
return {
|
||||||
statusCode: 403,
|
statusCode: 403,
|
||||||
|
|
|
||||||
6
server/00-collection2-init.js
Normal file
6
server/00-collection2-init.js
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
// Meteor 3 / aldeed:collection2 v4: all package files are lazy and there is no
|
||||||
|
// main module, so nothing patches Mongo.Collection.prototype.attachSchema until
|
||||||
|
// its `main.js` runs. The package ships `static.js` (`import './main'`) as the
|
||||||
|
// eager entry point — importing it here (from an eager server file that loads
|
||||||
|
// before server/main.js) patches attachSchema before any collection loads.
|
||||||
|
import 'meteor/aldeed:collection2/static.js';
|
||||||
|
|
@ -1 +1,5 @@
|
||||||
|
// Meteor 3 / collection2 v4: the package's files are lazy and it has no main
|
||||||
|
// module, so a bare side-effect import loads nothing. Importing the exported
|
||||||
|
// `Collection2` forces main.js to run, which patches
|
||||||
|
// Mongo.Collection.prototype.attachSchema before any collection loads.
|
||||||
import '../imports/startup/server';
|
import '../imports/startup/server';
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue