/
opt
/
canhelp
/
node_modules
/
next
/
dist
/
shared
/
lib
/
router
/
utils
/
/opt/canhelp/node_modules/next/dist/shared/lib/router/utils
mkdir
upload
Name
Size
Mode
Actions
add-locale.d.ts
365
0644
edit
dl
rm
add-locale.js
1049
0644
edit
dl
rm
add-locale.js.map
1715
0644
edit
dl
rm
add-path-prefix.d.ts
200
0644
edit
dl
rm
add-path-prefix.js
536
0644
edit
dl
rm
add-path-prefix.js.map
885
0644
edit
dl
rm
add-path-suffix.d.ts
258
0644
edit
dl
rm
add-path-suffix.js
536
0644
edit
dl
rm
add-path-suffix.js.map
944
0644
edit
dl
rm
app-paths.d.ts
900
0644
edit
dl
rm
app-paths.js
1504
0644
edit
dl
rm
app-paths.js.map
2712
0644
edit
dl
rm
as-path-to-search-params.d.ts
79
0644
edit
dl
rm
as-path-to-search-params.js
484
0644
edit
dl
rm
as-path-to-search-params.js.map
565
0644
edit
dl
rm
cache-busting-search-param.d.ts
257
0644
edit
dl
rm
cache-busting-search-param.js
832
0644
edit
dl
rm
cache-busting-search-param.js.map
1315
0644
edit
dl
rm
compare-states.d.ts
146
0644
edit
dl
rm
compare-states.js
1070
0644
edit
dl
rm
compare-states.js.map
1931
0644
edit
dl
rm
disable-smooth-scroll.d.ts
304
0644
edit
dl
rm
disable-smooth-scroll.js
2515
0644
edit
dl
rm
disable-smooth-scroll.js.map
3621
0644
edit
dl
rm
escape-path-delimiters.d.ts
96
0644
edit
dl
rm
escape-path-delimiters.js
508
0644
edit
dl
rm
escape-path-delimiters.js.map
753
0644
edit
dl
rm
format-next-pathname-info.d.ts
261
0644
edit
dl
rm
format-next-pathname-info.js
1290
0644
edit
dl
rm
format-next-pathname-info.js.map
2090
0644
edit
dl
rm
format-url.d.ts
216
0644
edit
dl
rm
format-url.js
3955
0644
edit
dl
rm
format-url.js.map
5739
0644
edit
dl
rm
get-asset-path-from-route.d.ts
84
0644
edit
dl
rm
get-asset-path-from-route.js
639
0644
edit
dl
rm
get-asset-path-from-route.js.map
846
0644
edit
dl
rm
get-dynamic-param.d.ts
2775
0644
edit
dl
rm
get-dynamic-param.js
3976
0644
edit
dl
rm
get-dynamic-param.js.map
7442
0644
edit
dl
rm
get-next-pathname-info.d.ts
1450
0644
edit
dl
rm
get-next-pathname-info.js
2479
0644
edit
dl
rm
get-next-pathname-info.js.map
5178
0644
edit
dl
rm
get-route-from-asset-path.d.ts
88
0644
edit
dl
rm
get-route-from-asset-path.js
931
0644
edit
dl
rm
get-route-from-asset-path.js.map
1324
0644
edit
dl
rm
html-bots.d.ts
53
0644
edit
dl
rm
html-bots.js
1135
0644
edit
dl
rm
html-bots.js.map
1145
0644
edit
dl
rm
index.d.ts
121
0644
edit
dl
rm
index.js
766
0644
edit
dl
rm
index.js.map
430
0644
edit
dl
rm
interception-routes.d.ts
312
0644
edit
dl
rm
interception-routes.js
4354
0644
edit
dl
rm
interception-routes.js.map
5054
0644
edit
dl
rm
interpolate-as.d.ts
195
0644
edit
dl
rm
interpolate-as.js
2242
0644
edit
dl
rm
interpolate-as.js.map
3801
0644
edit
dl
rm
is-bot.d.ts
291
0644
edit
dl
rm
is-bot.js
1764
0644
edit
dl
rm
is-bot.js.map
1998
0644
edit
dl
rm
is-dynamic.d.ts
316
0644
edit
dl
rm
is-dynamic.js
867
0644
edit
dl
rm
is-dynamic.js.map
1489
0644
edit
dl
rm
is-local-url.d.ts
147
0644
edit
dl
rm
is-local-url.js
854
0644
edit
dl
rm
is-local-url.js.map
1271
0644
edit
dl
rm
middleware-route-matcher.d.ts
463
0644
edit
dl
rm
middleware-route-matcher.js
947
0644
edit
dl
rm
middleware-route-matcher.js.map
1762
0644
edit
dl
rm
omit.d.ts
126
0644
edit
dl
rm
omit.js
440
0644
edit
dl
rm
omit.js.map
778
0644
edit
dl
rm
parse-path.d.ts
320
0644
edit
dl
rm
parse-path.js
1041
0644
edit
dl
rm
parse-path.js.map
1510
0644
edit
dl
rm
parse-relative-url.d.ts
745
0644
edit
dl
rm
parse-relative-url.js
1476
0644
edit
dl
rm
parse-relative-url.js.map
3015
0644
edit
dl
rm
parse-url.d.ts
365
0644
edit
dl
rm
parse-url.js
954
0644
edit
dl
rm
parse-url.js.map
1843
0644
edit
dl
rm
path-has-prefix.d.ts
364
0644
edit
dl
rm
path-has-prefix.js
535
0644
edit
dl
rm
path-has-prefix.js.map
996
0644
edit
dl
rm
path-match.d.ts
989
0644
edit
dl
rm
path-match.js
1961
0644
edit
dl
rm
path-match.js.map
3773
0644
edit
dl
rm
prepare-destination.d.ts
1527
0644
edit
dl
rm
prepare-destination.js
10637
0644
edit
dl
rm
prepare-destination.js.map
17187
0644
edit
dl
rm
querystring.d.ts
348
0644
edit
dl
rm
querystring.js
2281
0644
edit
dl
rm
querystring.js.map
3287
0644
edit
dl
rm
relativize-url.d.ts
679
0644
edit
dl
rm
relativize-url.js
1121
0644
edit
dl
rm
relativize-url.js.map
1872
0644
edit
dl
rm
remove-path-prefix.d.ts
389
0644
edit
dl
rm
remove-path-prefix.js
1261
0644
edit
dl
rm
remove-path-prefix.js.map
2000
0644
edit
dl
rm
remove-trailing-slash.d.ts
259
0644
edit
dl
rm
remove-trailing-slash.js
552
0644
edit
dl
rm
remove-trailing-slash.js.map
598
0644
edit
dl
rm
resolve-rewrites.d.ts
682
0644
edit
dl
rm
resolve-rewrites.js
4670
0644
edit
dl
rm
resolve-rewrites.js.map
7781
0644
edit
dl
rm
route-match-utils.d.ts
1513
0644
edit
dl
rm
route-match-utils.js
3675
0644
edit
dl
rm
route-match-utils.js.map
5754
0644
edit
dl
rm
route-matcher.d.ts
384
0644
edit
dl
rm
route-matcher.js
1509
0644
edit
dl
rm
route-matcher.js.map
2558
0644
edit
dl
rm
route-regex.d.ts
3492
0644
edit
dl
rm
route-regex.js
9498
0644
edit
dl
rm
route-regex.js.map
17577
0644
edit
dl
rm
sortable-routes.d.ts
4249
0644
edit
dl
rm
sortable-routes.js
6321
0644
edit
dl
rm
sortable-routes.js.map
12530
0644
edit
dl
rm
sorted-routes.d.ts
344
0644
edit
dl
rm
sorted-routes.js
11664
0644
edit
dl
rm
sorted-routes.js.map
14788
0644
edit
dl
rm
Edit:
/opt/canhelp/node_modules/next/dist/shared/lib/router/utils/prepare-destination.js
(10637B)
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { compileNonPath: null, matchHas: null, parseDestination: null, prepareDestination: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { compileNonPath: function() { return compileNonPath; }, matchHas: function() { return matchHas; }, parseDestination: function() { return parseDestination; }, prepareDestination: function() { return prepareDestination; } }); const _escaperegexp = require("../../escape-regexp"); const _parseurl = require("./parse-url"); const _interceptionroutes = require("./interception-routes"); const _getcookieparser = require("../../../../server/api-utils/get-cookie-parser"); const _routematchutils = require("./route-match-utils"); /** * Ensure only a-zA-Z are used for param names for proper interpolating * with path-to-regexp */ function getSafeParamName(paramName) { let newParamName = ''; for(let i = 0; i < paramName.length; i++){ const charCode = paramName.charCodeAt(i); if (charCode > 64 && charCode < 91 || // A-Z charCode > 96 && charCode < 123 // a-z ) { newParamName += paramName[i]; } } return newParamName; } function escapeSegment(str, segmentName) { return str.replace(new RegExp(":" + (0, _escaperegexp.escapeStringRegexp)(segmentName), 'g'), "__ESC_COLON_" + segmentName); } function unescapeSegments(str) { return str.replace(/__ESC_COLON_/gi, ':'); } function matchHas(req, query, has, missing) { if (has === void 0) has = []; if (missing === void 0) missing = []; const params = {}; const hasMatch = (hasItem)=>{ let value; let key = hasItem.key; switch(hasItem.type){ case 'header': { key = key.toLowerCase(); value = req.headers[key]; break; } case 'cookie': { if ('cookies' in req) { value = req.cookies[hasItem.key]; } else { const cookies = (0, _getcookieparser.getCookieParser)(req.headers)(); value = cookies[hasItem.key]; } break; } case 'query': { value = query[key]; break; } case 'host': { const { host } = (req == null ? void 0 : req.headers) || {}; // remove port from host if present const hostname = host == null ? void 0 : host.split(':', 1)[0].toLowerCase(); value = hostname; break; } default: { break; } } if (!hasItem.value && value) { params[getSafeParamName(key)] = value; return true; } else if (value) { const matcher = new RegExp("^" + hasItem.value + "$"); const matches = Array.isArray(value) ? value.slice(-1)[0].match(matcher) : value.match(matcher); if (matches) { if (Array.isArray(matches)) { if (matches.groups) { Object.keys(matches.groups).forEach((groupKey)=>{ params[groupKey] = matches.groups[groupKey]; }); } else if (hasItem.type === 'host' && matches[0]) { params.host = matches[0]; } } return true; } } return false; }; const allMatch = has.every((item)=>hasMatch(item)) && !missing.some((item)=>hasMatch(item)); if (allMatch) { return params; } return false; } function compileNonPath(value, params) { if (!value.includes(':')) { return value; } for (const key of Object.keys(params)){ if (value.includes(":" + key)) { value = value.replace(new RegExp(":" + key + "\\*", 'g'), ":" + key + "--ESCAPED_PARAM_ASTERISKS").replace(new RegExp(":" + key + "\\?", 'g'), ":" + key + "--ESCAPED_PARAM_QUESTION").replace(new RegExp(":" + key + "\\+", 'g'), ":" + key + "--ESCAPED_PARAM_PLUS").replace(new RegExp(":" + key + "(?!\\w)", 'g'), "--ESCAPED_PARAM_COLON" + key); } } value = value.replace(/(:|\*|\?|\+|\(|\)|\{|\})/g, '\\$1').replace(/--ESCAPED_PARAM_PLUS/g, '+').replace(/--ESCAPED_PARAM_COLON/g, ':').replace(/--ESCAPED_PARAM_QUESTION/g, '?').replace(/--ESCAPED_PARAM_ASTERISKS/g, '*'); // the value needs to start with a forward-slash to be compiled // correctly return (0, _routematchutils.safeCompile)("/" + value, { validate: false })(params).slice(1); } function parseDestination(args) { let escaped = args.destination; for (const param of Object.keys({ ...args.params, ...args.query })){ if (!param) continue; escaped = escapeSegment(escaped, param); } const parsed = (0, _parseurl.parseUrl)(escaped); let pathname = parsed.pathname; if (pathname) { pathname = unescapeSegments(pathname); } let href = parsed.href; if (href) { href = unescapeSegments(href); } let hostname = parsed.hostname; if (hostname) { hostname = unescapeSegments(hostname); } let hash = parsed.hash; if (hash) { hash = unescapeSegments(hash); } let search = parsed.search; if (search) { search = unescapeSegments(search); } return { ...parsed, pathname, hostname, href, hash, search }; } function prepareDestination(args) { const parsedDestination = parseDestination(args); const { hostname: destHostname, query: destQuery, search: destSearch } = parsedDestination; // The following code assumes that the pathname here includes the hash if it's // present. let destPath = parsedDestination.pathname; if (parsedDestination.hash) { destPath = "" + destPath + parsedDestination.hash; } const destParams = []; const destPathParamKeys = []; (0, _routematchutils.safePathToRegexp)(destPath, destPathParamKeys); for (const key of destPathParamKeys){ destParams.push(key.name); } if (destHostname) { const destHostnameParamKeys = []; (0, _routematchutils.safePathToRegexp)(destHostname, destHostnameParamKeys); for (const key of destHostnameParamKeys){ destParams.push(key.name); } } const destPathCompiler = (0, _routematchutils.safeCompile)(destPath, // we don't validate while compiling the destination since we should // have already validated before we got to this point and validating // breaks compiling destinations with named pattern params from the source // e.g. /something:hello(.*) -> /another/:hello is broken with validation // since compile validation is meant for reversing and not for inserting // params from a separate path-regex into another { validate: false }); let destHostnameCompiler; if (destHostname) { destHostnameCompiler = (0, _routematchutils.safeCompile)(destHostname, { validate: false }); } // update any params in query values for (const [key, strOrArray] of Object.entries(destQuery)){ // the value needs to start with a forward-slash to be compiled // correctly if (Array.isArray(strOrArray)) { destQuery[key] = strOrArray.map((value)=>compileNonPath(unescapeSegments(value), args.params)); } else if (typeof strOrArray === 'string') { destQuery[key] = compileNonPath(unescapeSegments(strOrArray), args.params); } } // add path params to query if it's not a redirect and not // already defined in destination query or path let paramKeys = Object.keys(args.params).filter((name)=>name !== 'nextInternalLocale'); if (args.appendParamsToQuery && !paramKeys.some((key)=>destParams.includes(key))) { for (const key of paramKeys){ if (!(key in destQuery)) { destQuery[key] = args.params[key]; } } } let newUrl; // The compiler also that the interception route marker is an unnamed param, hence '0', // so we need to add it to the params object. if ((0, _interceptionroutes.isInterceptionRouteAppPath)(destPath)) { for (const segment of destPath.split('/')){ const marker = _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m)); if (marker) { if (marker === '(..)(..)') { args.params['0'] = '(..)'; args.params['1'] = '(..)'; } else { args.params['0'] = marker; } break; } } } try { newUrl = destPathCompiler(args.params); const [pathname, hash] = newUrl.split('#', 2); if (destHostnameCompiler) { parsedDestination.hostname = destHostnameCompiler(args.params); } parsedDestination.pathname = pathname; parsedDestination.hash = "" + (hash ? '#' : '') + (hash || ''); parsedDestination.search = destSearch ? compileNonPath(destSearch, args.params) : ''; } catch (err) { if (err.message.match(/Expected .*? to not repeat, but got an array/)) { throw Object.defineProperty(new Error("To use a multi-match in the destination you must add `*` at the end of the param name to signify it should repeat. https://nextjs.org/docs/messages/invalid-multi-match"), "__NEXT_ERROR_CODE", { value: "E329", enumerable: false, configurable: true }); } throw err; } // Query merge order lowest priority to highest // 1. initial URL query values // 2. path segment values // 3. destination specified query values parsedDestination.query = { ...args.query, ...parsedDestination.query }; return { newUrl, destQuery, parsedDestination }; } //# sourceMappingURL=prepare-destination.js.map
Save
cmd:
run