Phase 0 - Pre-migration cleanup: - Remove msavin:usercache (unused), es5-shim, http@2.0.0, fibers - Replace Meteor.wrapAsync in counters.js, exporter.js, attachmentUrlValidation.js - Replace meteorhacks:subs-manager with Meteor.subscribe in 6 client files Phase 1 - Create meteor-jade-loader: - Custom Rspack/webpack loader for .jade templates - Extracts mquandalle:jade-compiler pipeline (lexer, parser, transpiler) - Bundles Meteor vendor packages (htmljs, html-tools, blaze-tools, spacebars-compiler) Phase 2 - Package version bumps & replacements: - Remove mquandalle:jade, dburles:collection-helpers, aldeed:simple-schema - Remove communitypackages:picker (Meteor 3 bundles Express) - Replace simple:json-routes -> communitypackages:json-routes - Replace simple:rest-accounts-password -> communitypackages:rest-accounts-password - Add collection-helpers shim at imports/collectionHelpers.js - Convert Picker.route() to WebApp.handlers.get() in export files + sandstorm.js - Add api.versionsFrom(['2.16', '3.0']) to all 9 custom packages - Remove version pins from .meteor/packages Phase 3 - Express 5 migration: - Rename WebApp.connectHandlers -> WebApp.handlers (20 occurrences) - Rename WebApp.rawConnectHandlers -> WebApp.rawHandlers (5 occurrences) - Convert regexp route patterns to Express 5 named params in attachmentApi.js, avatarServer.js
36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
Meteor.startup(() => {
|
|
// Optional: Set Permissions-Policy only if explicitly provided to avoid browser warnings about unrecognized features
|
|
if (process.env.PERMISSIONS_POLICY && process.env.PERMISSIONS_POLICY.trim() !== '') {
|
|
WebApp.rawHandlers.use(function(req, res, next) {
|
|
res.setHeader('Permissions-Policy', process.env.PERMISSIONS_POLICY);
|
|
return next();
|
|
});
|
|
}
|
|
|
|
if (process.env.CORS) {
|
|
// Listen to incoming HTTP requests, can only be used on the server
|
|
WebApp.rawHandlers.use(function(req, res, next) {
|
|
res.setHeader('Access-Control-Allow-Origin', process.env.CORS);
|
|
return next();
|
|
});
|
|
}
|
|
if (process.env.CORS_ALLOW_HEADERS) {
|
|
WebApp.rawHandlers.use(function(req, res, next) {
|
|
res.setHeader(
|
|
'Access-Control-Allow-Headers',
|
|
process.env.CORS_ALLOW_HEADERS,
|
|
);
|
|
return next();
|
|
});
|
|
}
|
|
if (process.env.CORS_EXPOSE_HEADERS) {
|
|
WebApp.rawHandlers.use(function(req, res, next) {
|
|
res.setHeader(
|
|
'Access-Control-Expose-Headers',
|
|
process.env.CORS_EXPOSE_HEADERS,
|
|
);
|
|
return next();
|
|
});
|
|
}
|
|
});
|