diff --git a/packages/meteor/asl-helpers-client.js b/packages/meteor/asl-helpers-client.js index 688ae22205..1026afcb80 100644 --- a/packages/meteor/asl-helpers-client.js +++ b/packages/meteor/asl-helpers-client.js @@ -1,3 +1,5 @@ +Meteor.fibersDisabled = true; + Meteor._isPromise = (r) => { return r && typeof r.then === 'function'; }; diff --git a/packages/meteor/asl-helpers.js b/packages/meteor/asl-helpers.js index f140cc9a3c..1ae0571e7f 100644 --- a/packages/meteor/asl-helpers.js +++ b/packages/meteor/asl-helpers.js @@ -2,7 +2,9 @@ const getAslStore = () => (Meteor.isServer && global?.asyncLocalStorage?.getStor const getValueFromAslStore = key => getAslStore()[key]; const updateAslStore = (key, value) => getAslStore()[key] = value; -Meteor._isFibersEnabled = !process.env.DISABLE_FIBERS && Meteor.isServer; +Meteor.fibersDisabled = !!__meteor_bootstrap__.fibersDisabled; +Meteor._isFibersEnabled = !Meteor.fibersDisabled; + Meteor._getAslStore = getAslStore; Meteor._getValueFromAslStore = getValueFromAslStore; Meteor._updateAslStore = updateAslStore; diff --git a/tools/isobuild/isopack.js b/tools/isobuild/isopack.js index b1925feaf4..e366afd1b2 100644 --- a/tools/isobuild/isopack.js +++ b/tools/isobuild/isopack.js @@ -472,8 +472,19 @@ Object.assign(Isopack.prototype, { // case right.) }, async function () { // Make a new Plugin API object for this plugin. - var Plugin = self._makePluginApi(name); - await plugin.load({ Plugin: Plugin, Profile: Profile }); + const Plugin = self._makePluginApi(name); + const __meteor_bootstrap__ = { + fibersDisabled: true, + // Set to null to tell Meteor.startup to call hooks immediately + // XXX: should we fully support startup hooks in build plugins? + startupHooks: null + }; + + await plugin.load({ + Plugin, + Profile, + __meteor_bootstrap__ + }); }); } diff --git a/tools/static-assets/server/boot.js b/tools/static-assets/server/boot.js index ca6f586c25..453d30e779 100644 --- a/tools/static-assets/server/boot.js +++ b/tools/static-assets/server/boot.js @@ -33,7 +33,8 @@ var starJson = JSON.parse(fs.readFileSync(path.join(buildDir, "star.json"))); __meteor_bootstrap__ = { startupHooks: [], serverDir: serverDir, - configJson: configJson + configJson: configJson, + fibersDisabled: true }; __meteor_runtime_config__ = { @@ -504,4 +505,3 @@ var runMain = Profile("Run main()", async function () { }); }); })().catch(e => console.log('error on boot.js', e)); - diff --git a/tools/tool-env/isopackets.js b/tools/tool-env/isopackets.js index d2c21afd6d..acd59e7a40 100644 --- a/tools/tool-env/isopackets.js +++ b/tools/tool-env/isopackets.js @@ -303,7 +303,10 @@ var loadIsopacketFromDisk = async function (isopacketName) { // An incredibly minimalist version of the environment from // tools/server/boot.js. Kind of a hack. var env = { - __meteor_bootstrap__: { startupHooks: [] }, + __meteor_bootstrap__: { + startupHooks: [], + fibersDisabled: true + }, __meteor_runtime_config__: { meteorRelease: "ISOPACKET" } }; env.Profile = Profile;