UNPKG

next-translate-routes-multi-domain

Version:

Flexible and translated routes for Next.js without custom server

81 lines 3.46 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.enhanceNextRouter = void 0; var querystring_1 = require("querystring"); var withNtrPrefix_1 = require("../shared/withNtrPrefix"); var fileUrlToUrl_1 = require("./fileUrlToUrl"); var getLocale_1 = require("./getLocale"); var ntrData_1 = require("./ntrData"); var urlToFileUrl_1 = require("./urlToFileUrl"); var logWithTrace = function (from, details) { console.groupCollapsed(withNtrPrefix_1.ntrMessagePrefix + from, details); console.trace('Stringified:\n', JSON.stringify(details, null, 4)); console.groupEnd(); }; var enhancePushReplace = function (router, fnName) { return function (url, as, options) { var locale = (0, getLocale_1.getLocale)(router, options === null || options === void 0 ? void 0 : options.locale); var parsedUrl = typeof url === 'string' ? (0, urlToFileUrl_1.urlToFileUrl)(url, locale) : url; var translatedUrl = as; if (!as && parsedUrl) { try { translatedUrl = (0, fileUrlToUrl_1.fileUrlToUrl)(parsedUrl, locale); } catch (_a) { // Url is wrong } } if ((0, ntrData_1.getNtrData)().debug) { logWithTrace("router.".concat(fnName), { url: url, as: as, options: options, translatedUrl: translatedUrl, parsedUrl: parsedUrl, locale: locale, }); } return router[fnName](parsedUrl || url, translatedUrl, options); }; }; var enhancePrefetch = function (router) { return function (inputUrl, asPath, options) { var locale = (0, getLocale_1.getLocale)(router, options === null || options === void 0 ? void 0 : options.locale); var parsedInputUrl = (0, urlToFileUrl_1.urlToFileUrl)(inputUrl, locale); if ((0, ntrData_1.getNtrData)().debug === 'withPrefetch') { logWithTrace('router.prefetch', { inputUrl: inputUrl, asPath: asPath, options: options, parsedInputUrl: parsedInputUrl, locale: locale }); } return router.prefetch(parsedInputUrl ? parsedInputUrl.pathname + (parsedInputUrl.query && "?".concat((0, querystring_1.stringify)(parsedInputUrl.query))) : inputUrl, asPath, options); }; }; var enhanceNextRouter = function (router) { if ('router' in router) { return new Proxy(router, { get: function (target, p) { if (p === 'push' || p === 'replace') { return enhancePushReplace(target, p); } if (p === 'prefetch') { return enhancePrefetch(target); } return target[p]; }, }); } return __assign(__assign({}, router), { push: enhancePushReplace(router, 'push'), replace: enhancePushReplace(router, 'replace'), prefetch: enhancePrefetch(router) }); }; exports.enhanceNextRouter = enhanceNextRouter; //# sourceMappingURL=enhanceNextRouter.js.map