UNPKG

prepack

Version:

Execute a JS bundle, serialize global state and side effects to a snapshot that can be quickly restored.

98 lines (80 loc) 3.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (realm) { let global = realm.$GlobalObject; // module.exports support let moduleValue = _index.AbstractValue.createAbstractObject(realm, "module"); moduleValue.kind = "resolved"; let moduleExportsValue = _index.AbstractValue.createAbstractObject(realm, "module.exports"); moduleExportsValue.kind = "resolved"; moduleValue.$DefineOwnProperty("exports", { value: moduleExportsValue, writable: true, enumerable: false, configurable: true }); global.$DefineOwnProperty("module", { value: moduleValue, writable: true, enumerable: false, configurable: true }); // apply require() mock global.$DefineOwnProperty("require", { value: new _index.NativeFunctionValue(realm, "require", "require", 0, (context, [requireNameVal]) => { (0, _invariant2.default)(requireNameVal instanceof _index.StringValue); let requireNameValValue = requireNameVal.value; if (requireNameValValue === "react" || requireNameValValue === "React") { if (realm.fbLibraries.react === undefined) { let react = (0, _reactMocks.createMockReact)(realm, requireNameValValue); realm.fbLibraries.react = react; return react; } return realm.fbLibraries.react; } else if (requireNameValValue === "react-relay" || requireNameValValue === "RelayModern") { if (realm.fbLibraries.reactRelay === undefined) { let reactRelay = (0, _relayMocks.createMockReactRelay)(realm, requireNameValValue); realm.fbLibraries.reactRelay = reactRelay; return reactRelay; } return realm.fbLibraries.reactRelay; } else if (requireNameValValue === "prop-types" || requireNameValValue === "PropTypes") { if (realm.fbLibraries.react === undefined) { throw new _errors.FatalError("unable to require PropTypes due to React not being referenced in scope"); } let propTypes = (0, _index2.Get)(realm, realm.fbLibraries.react, "PropTypes"); (0, _invariant2.default)(propTypes instanceof _index.ObjectValue); return propTypes; } else { let requireVal; if (realm.fbLibraries.other.has(requireNameValValue)) { requireVal = realm.fbLibraries.other.get(requireNameValValue); } else { requireVal = (0, _utils.createAbstract)(realm, "function", `require("${requireNameValValue}")`); realm.fbLibraries.other.set(requireNameValValue, requireVal); } (0, _invariant2.default)(requireVal instanceof _index.AbstractValue); return requireVal; } }), writable: true, enumerable: false, configurable: true }); if (realm.isCompatibleWith("fb-www")) { (0, _fbMocks.createFbMocks)(realm, global); } }; var _index = require("../../values/index.js"); var _reactMocks = require("./react-mocks.js"); var _relayMocks = require("./relay-mocks.js"); var _utils = require("../prepack/utils.js"); var _fbMocks = require("./fb-mocks.js"); var _errors = require("../../errors"); var _index2 = require("../../methods/index.js"); var _invariant = require("../../invariant"); var _invariant2 = _interopRequireDefault(_invariant); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } //# sourceMappingURL=global.js.map