UNPKG

create-dan

Version:

Dan frameworks

1 lines 6.24 kB
{"ast":null,"code":"\"use strict\";\n\nvar _getIterator = require(\"@babel/runtime-corejs2/core-js/get-iterator\");\n\nvar _construct = require(\"@babel/runtime-corejs2/helpers/construct\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime-corejs2/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs2/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.useRouter = useRouter;\nexports.makePublicRouterInstance = makePublicRouterInstance;\nexports.createRouter = exports.withRouter = exports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime-corejs2/helpers/extends\"));\n\nvar _defineProperty = _interopRequireDefault(require(\"@babel/runtime-corejs2/core-js/object/define-property\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _router2 = _interopRequireWildcard(require(\"../next-server/lib/router/router\"));\n\nexports.Router = _router2[\"default\"];\nexports.NextRouter = _router2.NextRouter;\n\nvar _routerContext = require(\"../next-server/lib/router-context\");\n\nvar _withRouter = _interopRequireDefault(require(\"./with-router\"));\n\nexports.withRouter = _withRouter[\"default\"];\n/* global window */\n\nvar singletonRouter = {\n router: null,\n // holds the actual router instance\n readyCallbacks: [],\n ready: function ready(cb) {\n if (this.router) return cb();\n\n if (true) {\n this.readyCallbacks.push(cb);\n }\n }\n}; // Create public properties and methods of the router in the singletonRouter\n\nvar urlPropertyFields = ['pathname', 'route', 'query', 'asPath', 'components'];\nvar routerEvents = ['routeChangeStart', 'beforeHistoryChange', 'routeChangeComplete', 'routeChangeError', 'hashChangeStart', 'hashChangeComplete'];\nvar coreMethodFields = ['push', 'replace', 'reload', 'back', 'prefetch', 'beforePopState']; // Events is a static property on the router, the router doesn't have to be initialized to use it\n\n(0, _defineProperty[\"default\"])(singletonRouter, 'events', {\n get: function get() {\n return _router2[\"default\"].events;\n }\n});\nurlPropertyFields.forEach(function (field) {\n // Here we need to use Object.defineProperty because, we need to return\n // the property assigned to the actual router\n // The value might get changed as we change routes and this is the\n // proper way to access it\n (0, _defineProperty[\"default\"])(singletonRouter, field, {\n get: function get() {\n var router = getRouter();\n return router[field];\n }\n });\n});\ncoreMethodFields.forEach(function (field) {\n // We don't really know the types here, so we add them later instead\n ;\n\n singletonRouter[field] = function () {\n var router = getRouter();\n return router[field].apply(router, arguments);\n };\n});\nrouterEvents.forEach(function (event) {\n singletonRouter.ready(function () {\n _router2[\"default\"].events.on(event, function () {\n var eventField = \"on\" + event.charAt(0).toUpperCase() + event.substring(1);\n var _singletonRouter = singletonRouter;\n\n if (_singletonRouter[eventField]) {\n try {\n _singletonRouter[eventField].apply(_singletonRouter, arguments);\n } catch (err) {\n // tslint:disable-next-line:no-console\n console.error(\"Error when running the Router event: \" + eventField); // tslint:disable-next-line:no-console\n\n console.error(err.message + \"\\n\" + err.stack);\n }\n }\n });\n });\n});\n\nfunction getRouter() {\n if (!singletonRouter.router) {\n var message = 'No router instance found.\\n' + 'You should only use \"next/router\" inside the client side of your app.\\n';\n throw new Error(message);\n }\n\n return singletonRouter.router;\n} // Export the singletonRouter and this is the public API.\n\n\nvar _default = singletonRouter; // Reexport the withRoute HOC\n\nexports[\"default\"] = _default;\n\nfunction useRouter() {\n return _react[\"default\"].useContext(_routerContext.RouterContext);\n} // INTERNAL APIS\n// -------------\n// (do not use following exports inside the app)\n// Create a router and assign it as the singleton instance.\n// This is used in client side when we are initilizing the app.\n// This should **not** use inside the server.\n\n\nvar createRouter = function createRouter() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n singletonRouter.router = _construct(_router2[\"default\"], args);\n singletonRouter.readyCallbacks.forEach(function (cb) {\n return cb();\n });\n singletonRouter.readyCallbacks = [];\n return singletonRouter.router;\n}; // This function is used to create the `withRouter` router instance\n\n\nexports.createRouter = createRouter;\n\nfunction makePublicRouterInstance(router) {\n var _router = router;\n var instance = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = _getIterator(urlPropertyFields), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var property = _step.value;\n\n if (typeof _router[property] === 'object') {\n instance[property] = (0, _extends2[\"default\"])({}, _router[property]); // makes sure query is not stateful\n\n continue;\n }\n\n instance[property] = _router[property];\n } // Events is a static property on the router, the router doesn't have to be initialized to use it\n\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n instance.events = _router2[\"default\"].events;\n coreMethodFields.forEach(function (field) {\n instance[field] = function () {\n return _router[field].apply(_router, arguments);\n };\n });\n return instance;\n}","map":null,"metadata":{},"sourceType":"script"}