Files
Harry Adel e8fee653c3 Meteor 3.4 migration: Phases 0-3
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
2026-03-22 17:17:48 +02:00

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();
});
}
});