UNPKG

@reactant/context

Version:
246 lines (199 loc) 15.6 kB
"use strict"; require("core-js/modules/es.function.name"); require("core-js/modules/es.object.to-string"); require("core-js/modules/es.promise"); require("core-js/modules/es.regexp.constructor"); require("core-js/modules/es.regexp.exec"); require("core-js/modules/es.regexp.to-string"); require("core-js/modules/es.string.replace"); Object.defineProperty(exports, "__esModule", { value: true }); var _exportNames = { requireDefault: true, state: true, setContext: true, finish: true, syncContext: true, sanitizeJsonString: true, sanitizeConfig: true, sanitizeContext: true, bootstrap: true, defaultContext: true, merge: true }; exports.requireDefault = requireDefault; exports.default = getContext; exports.setContext = setContext; exports.finish = finish; exports.syncContext = syncContext; exports.sanitizeJsonString = sanitizeJsonString; exports.sanitizeConfig = sanitizeConfig; exports.sanitizeContext = sanitizeContext; Object.defineProperty(exports, "bootstrap", { enumerable: true, get: function get() { return _bootstrap.default; } }); Object.defineProperty(exports, "defaultContext", { enumerable: true, get: function get() { return _defaultContext.default; } }); Object.defineProperty(exports, "merge", { enumerable: true, get: function get() { return _merge.default; } }); exports.state = void 0; require("regenerator-runtime/runtime"); var _flatted = require("flatted"); var _state = _interopRequireDefault(require("./state")); var _bootstrap = _interopRequireDefault(require("./bootstrap")); var _defaultContext = _interopRequireDefault(require("./defaultContext")); var _merge = _interopRequireDefault(require("./merge")); var _pkg = require("./pkg"); Object.keys(_pkg).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; Object.defineProperty(exports, key, { enumerable: true, get: function get() { return _pkg[key]; } }); }); var _platform = require("./platform"); Object.keys(_platform).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; Object.defineProperty(exports, key, { enumerable: true, get: function get() { return _platform[key]; } }); }); var _plugin = require("./plugin"); Object.keys(_plugin).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; Object.defineProperty(exports, key, { enumerable: true, get: function get() { return _plugin[key]; } }); }); var _processes = require("./processes"); Object.keys(_processes).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; Object.defineProperty(exports, key, { enumerable: true, get: function get() { return _processes[key]; } }); }); var _context2 = require("@reactant/types/lib/context"); Object.keys(_context2).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; Object.defineProperty(exports, key, { enumerable: true, get: function get() { return _context2[key]; } }); }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function requireDefault(moduleName) { // eslint-disable-next-line global-require,import/no-dynamic-require var required = require(moduleName); if (required.__esModule && required.default) return required.default; return required; } function postprocess(context) { // TODO return context; } var state = new _state.default('context', postprocess); exports.state = state; function getContext() { var context = state.state; return typeof context === 'undefined' ? _defaultContext.default : context; } function setContext(context) { state.state = context; return getContext(); } function finish() { return state.finish(); } function syncContext(callback) { var _callback$constructor, _callback$constructor2; var context = getContext(); if (!callback) return context; if ( // eslint-disable-next-line no-undef,no-restricted-globals (callback === null || callback === void 0 ? void 0 : (_callback$constructor = callback.constructor) === null || _callback$constructor === void 0 ? void 0 : _callback$constructor.name) === 'AsyncFunction' || // eslint-disable-next-line no-undef,no-restricted-globals (callback === null || callback === void 0 ? void 0 : (_callback$constructor2 = callback.constructor) === null || _callback$constructor2 === void 0 ? void 0 : _callback$constructor2.name) === 'Promise') { // eslint-disable-next-line no-async-promise-executor return new Promise( /*#__PURE__*/function () { var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(resolve, reject) { return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.prev = 0; _context.t0 = resolve; _context.t1 = setContext; _context.next = 5; return callback(context); case 5: _context.t2 = _context.sent; _context.t3 = (0, _context.t1)(_context.t2); return _context.abrupt("return", (0, _context.t0)(_context.t3)); case 10: _context.prev = 10; _context.t4 = _context["catch"](0); return _context.abrupt("return", reject(_context.t4)); case 13: case "end": return _context.stop(); } } }, _callee, null, [[0, 10]]); })); return function (_x, _x2) { return _ref.apply(this, arguments); }; }()); } return setContext(callback(context)); } function sanitizeJsonString(json, rootPath) { return json.replace(new RegExp("".concat(rootPath.replace(/\//g, '/'), "\\/?"), 'g'), ''); } function sanitizeConfig(config, rootPath) { var configString = (0, _flatted.stringify)(config); if (rootPath) configString = sanitizeJsonString(configString, rootPath); var sanitizedConfig = (0, _flatted.parse)(configString); return sanitizedConfig; } function sanitizeContext(context) { var contextString = sanitizeJsonString((0, _flatted.stringify)(context), context.paths.root); var sanitizedContext = (0, _flatted.parse)(contextString); sanitizedContext.paths.root = '.'; if (context.config) { sanitizedContext.config = sanitizeConfig(context.config, context.paths.root); } sanitizedContext.state.sanitized = true; return sanitizedContext; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ub2RlLnRzIl0sIm5hbWVzIjpbInJlcXVpcmVEZWZhdWx0IiwibW9kdWxlTmFtZSIsInJlcXVpcmVkIiwicmVxdWlyZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwicG9zdHByb2Nlc3MiLCJjb250ZXh0Iiwic3RhdGUiLCJTdGF0ZSIsImdldENvbnRleHQiLCJkZWZhdWx0Q29udGV4dCIsInNldENvbnRleHQiLCJmaW5pc2giLCJzeW5jQ29udGV4dCIsImNhbGxiYWNrIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzYW5pdGl6ZUpzb25TdHJpbmciLCJqc29uIiwicm9vdFBhdGgiLCJyZXBsYWNlIiwiUmVnRXhwIiwic2FuaXRpemVDb25maWciLCJjb25maWciLCJjb25maWdTdHJpbmciLCJzYW5pdGl6ZWRDb25maWciLCJzYW5pdGl6ZUNvbnRleHQiLCJjb250ZXh0U3RyaW5nIiwicGF0aHMiLCJyb290Iiwic2FuaXRpemVkQ29udGV4dCIsInNhbml0aXplZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFxRkE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7O0FBdkZPLFNBQVNBLGNB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RyxvQkFBTUgsYUFBTixDQUFsQztBQUNBRyxFQUFBQSxnQkFBZ0IsQ0FBQ0YsS0FBakIsQ0FBdUJDLElBQXZCLEdBQThCLEdBQTlCOztBQUNBLE1BQUkxQixPQUFPLENBQUNvQixNQUFaLEVBQW9CO0FBQ2xCTyxJQUFBQSxnQkFBZ0IsQ0FBQ1AsTUFBakIsR0FBMEJELGNBQWMsQ0FDdENuQixPQUFPLENBQUNvQixNQUQ4QixFQUV0Q3BCLE9BQU8sQ0FBQ3lCLEtBQVIsQ0FBY0MsSUFGd0IsQ0FBeEM7QUFJRDs7QUFDREMsRUFBQUEsZ0JBQWdCLENBQUMxQixLQUFqQixDQUF1QjJCLFNBQXZCLEdBQW1DLElBQW5DO0FBQ0EsU0FBT0QsZ0JBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlLCBzdHJpbmdpZnkgfSBmcm9tICdmbGF0dGVkJztcbmltcG9ydCB7IENvbmZpZywgQ29udGV4dCwgU3luY0NvbnRleHRDYWxsYmFjayB9IGZyb20gJ0ByZWFjdGFudC90eXBlcyc7XG5pbXBvcnQgU3RhdGUgZnJvbSAnLi9zdGF0ZSc7XG5pbXBvcnQgYm9vdHN0cmFwIGZyb20gJy4vYm9vdHN0cmFwJztcbmltcG9ydCBkZWZhdWx0Q29udGV4dCBmcm9tICcuL2RlZmF1bHRDb250ZXh0JztcbmltcG9ydCBtZXJnZSBmcm9tICcuL21lcmdlJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVEZWZhdWx0PFQgPSBhbnk+KG1vZHVsZU5hbWU6IHN0cmluZyk6IFQge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZ2xvYmFsLXJlcXVpcmUsaW1wb3J0L25vLWR5bmFtaWMtcmVxdWlyZVxuICBjb25zdCByZXF1aXJlZCA9IHJlcXVpcmUobW9kdWxlTmFtZSk7XG4gIGlmIChyZXF1aXJlZC5fX2VzTW9kdWxlICYmIHJlcXVpcmVkLmRlZmF1bHQpIHJldHVybiByZXF1aXJlZC5kZWZhdWx0O1xuICByZXR1cm4gcmVxdWlyZWQ7XG59XG5cbmZ1bmN0aW9uIHBvc3Rwcm9jZXNzKGNvbnRleHQ6IENvbnRleHQpOiBDb250ZXh0IHtcbiAgLy8gVE9ET1xuICByZXR1cm4gY29udGV4dDtcbn1cblxuZXhwb3J0IGNvbnN0IHN0YXRlID0gbmV3IFN0YXRlPENvbnRleHQ+KCdjb250ZXh0JywgcG9zdHByb2Nlc3MpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb250ZXh0KCk6IENvbnRleHQge1xuICBjb25zdCBjb250ZXh0ID0gc3RhdGUuc3RhdGU7XG4gIHJldHVybiB0eXBlb2YgY29udGV4dCA9PT0gJ3VuZGVmaW5lZCcgPyBkZWZhdWx0Q29udGV4dCA6IGNvbnRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb250ZXh0KGNvbnRleHQ6IENvbnRleHQpOiBDb250ZXh0IHtcbiAgc3RhdGUuc3RhdGUgPSBjb250ZXh0O1xuICByZXR1cm4gZ2V0Q29udGV4dCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluaXNoKCkge1xuICByZXR1cm4gc3RhdGUuZmluaXNoKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzeW5jQ29udGV4dChcbiAgY2FsbGJhY2s/OiBTeW5jQ29udGV4dENhbGxiYWNrXG4pOiBDb250ZXh0IHwgUHJvbWlzZTxDb250ZXh0PiB7XG4gIGNvbnN0IGNvbnRleHQgPSBnZXRDb250ZXh0KCk7XG4gIGlmICghY2FsbGJhY2spIHJldHVybiBjb250ZXh0O1xuICBpZiAoXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmLG5vLXJlc3RyaWN0ZWQtZ2xvYmFsc1xuICAgIGNhbGxiYWNrPy5jb25zdHJ1Y3Rvcj8ubmFtZSA9PT0gJ0FzeW5jRnVuY3Rpb24nIHx8XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmLG5vLXJlc3RyaWN0ZWQtZ2xvYmFsc1xuICAgIGNhbGxiYWNrPy5jb25zdHJ1Y3Rvcj8ubmFtZSA9PT0gJ1Byb21pc2UnXG4gICkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hc3luYy1wcm9taXNlLWV4ZWN1dG9yXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKHNldENvbnRleHQoYXdhaXQgY2FsbGJhY2soY29udGV4dCkpKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHNldENvbnRleHQoY2FsbGJhY2soY29udGV4dCkgYXMgQ29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZUpzb25TdHJpbmcoanNvbjogc3RyaW5nLCByb290UGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGpzb24ucmVwbGFjZShcbiAgICBuZXcgUmVnRXhwKGAke3Jvb3RQYXRoLnJlcGxhY2UoL1xcLy9nLCAnLycpfVxcXFwvP2AsICdnJyksXG4gICAgJydcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplQ29uZmlnKGNvbmZpZzogQ29uZmlnLCByb290UGF0aD86IHN0cmluZyk6IENvbmZpZyB7XG4gIGxldCBjb25maWdTdHJpbmcgPSBzdHJpbmdpZnkoY29uZmlnKTtcbiAgaWYgKHJvb3RQYXRoKSBjb25maWdTdHJpbmcgPSBzYW5pdGl6ZUpzb25TdHJpbmcoY29uZmlnU3RyaW5nLCByb290UGF0aCk7XG4gIGNvbnN0IHNhbml0aXplZENvbmZpZzogQ29uZmlnID0gcGFyc2UoY29uZmlnU3RyaW5nKTtcbiAgcmV0dXJuIHNhbml0aXplZENvbmZpZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplQ29udGV4dChjb250ZXh0OiBDb250ZXh0KTogQ29udGV4dCB7XG4gIGNvbnN0IGNvbnRleHRTdHJpbmcgPSBzYW5pdGl6ZUpzb25TdHJpbmcoXG4gICAgc3RyaW5naWZ5KGNvbnRleHQpLFxuICAgIGNvbnRleHQucGF0aHMucm9vdFxuICApO1xuICBjb25zdCBzYW5pdGl6ZWRDb250ZXh0OiBDb250ZXh0ID0gcGFyc2UoY29udGV4dFN0cmluZyk7XG4gIHNhbml0aXplZENvbnRleHQucGF0aHMucm9vdCA9ICcuJztcbiAgaWYgKGNvbnRleHQuY29uZmlnKSB7XG4gICAgc2FuaXRpemVkQ29udGV4dC5jb25maWcgPSBzYW5pdGl6ZUNvbmZpZyhcbiAgICAgIGNvbnRleHQuY29uZmlnLFxuICAgICAgY29udGV4dC5wYXRocy5yb290XG4gICAgKTtcbiAgfVxuICBzYW5pdGl6ZWRDb250ZXh0LnN0YXRlLnNhbml0aXplZCA9IHRydWU7XG4gIHJldHVybiBzYW5pdGl6ZWRDb250ZXh0O1xufVxuXG5leHBvcnQgeyBib290c3RyYXAsIGRlZmF1bHRDb250ZXh0LCBtZXJnZSB9O1xuZXhwb3J0ICogZnJvbSAnLi9wa2cnO1xuZXhwb3J0ICogZnJvbSAnLi9wbGF0Zm9ybSc7XG5leHBvcnQgKiBmcm9tICcuL3BsdWdpbic7XG5leHBvcnQgKiBmcm9tICcuL3Byb2Nlc3Nlcyc7XG5leHBvcnQgKiBmcm9tICdAcmVhY3RhbnQvdHlwZXMvbGliL2NvbnRleHQnO1xuIl19