| 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/routing/ |
Upload File : |
{"version":3,"file":"route-pattern.js","names":[],"sources":["../../src/routing/route-pattern.ts"],"sourcesContent":["import { decodeMatchedParams } from \"./utils\";\n\nexport type RoutePatternParams = Record<string, string | string[]>;\n\nfunction routePatternPart(segment: string): string {\n if (segment.startsWith(\"[[...\") && segment.endsWith(\"]]\")) {\n return `:${segment.slice(5, -2)}*`;\n }\n if (segment.startsWith(\"[...\") && segment.endsWith(\"]\")) {\n return `:${segment.slice(4, -1)}+`;\n }\n if (segment.startsWith(\"[\") && segment.endsWith(\"]\")) {\n return `:${segment.slice(1, -1)}`;\n }\n return segment;\n}\n\nexport function routePatternParts(pathname: string): string[] {\n return pathname.split(\"/\").filter(Boolean).map(routePatternPart);\n}\n\nexport function routePattern(pathname: string): string {\n const parts = routePatternParts(pathname);\n return parts.length > 0 ? `/${parts.join(\"/\")}` : \"\";\n}\n\nfunction appendParamValue(target: string[], value: string | string[]): void {\n if (Array.isArray(value)) {\n for (const entry of value) {\n target.push(entry);\n }\n return;\n }\n\n target.push(value);\n}\n\nexport function fillRoutePatternSegments(\n pathname: string,\n params: RoutePatternParams,\n): string | null {\n const segments = pathname.split(\"/\").filter(Boolean);\n const resolvedSegments: string[] = [];\n\n for (const segment of segments) {\n if (segment.startsWith(\"[[...\") && segment.endsWith(\"]]\")) {\n const paramName = segment.slice(5, -2);\n const value = params[paramName];\n if (value !== undefined && value !== \"\") {\n if (Array.isArray(value) && value.length === 0) {\n continue;\n }\n appendParamValue(resolvedSegments, value);\n }\n continue;\n }\n\n if (segment.startsWith(\"[...\") && segment.endsWith(\"]\")) {\n const paramName = segment.slice(4, -1);\n const value = params[paramName];\n if (value === undefined || (Array.isArray(value) ? value.length === 0 : value === \"\")) {\n return null;\n }\n appendParamValue(resolvedSegments, value);\n continue;\n }\n\n if (segment.startsWith(\"[\") && segment.endsWith(\"]\")) {\n const paramName = segment.slice(1, -1);\n const value = params[paramName];\n if (typeof value === \"string\") {\n resolvedSegments.push(value);\n continue;\n }\n if (Array.isArray(value) && value.length > 0) {\n if (value.length > 1) {\n return null;\n }\n resolvedSegments.push(value[0]);\n continue;\n }\n return null;\n }\n\n resolvedSegments.push(segment);\n }\n\n return resolvedSegments.length > 0 ? `/${resolvedSegments.join(\"/\")}` : \"/\";\n}\n\nexport function matchRoutePattern(\n urlParts: readonly string[],\n patternParts: readonly string[],\n): RoutePatternParams | null {\n const params: RoutePatternParams = Object.create(null);\n\n function matchFrom(urlIndex: number, patternIndex: number): boolean {\n if (patternIndex === patternParts.length) {\n return urlIndex === urlParts.length;\n }\n\n const patternPart = patternParts[patternIndex];\n if (patternPart.startsWith(\":\") && (patternPart.endsWith(\"+\") || patternPart.endsWith(\"*\"))) {\n const paramName = patternPart.slice(1, -1);\n const minLength = patternPart.endsWith(\"+\") ? 1 : 0;\n for (let endIndex = urlIndex + minLength; endIndex <= urlParts.length; endIndex++) {\n const value = urlParts.slice(urlIndex, endIndex);\n if (value.length > 0) {\n params[paramName] = value;\n } else {\n delete params[paramName];\n }\n if (matchFrom(endIndex, patternIndex + 1)) {\n return true;\n }\n }\n delete params[paramName];\n return false;\n }\n\n if (patternPart.startsWith(\":\")) {\n if (urlIndex >= urlParts.length) {\n return false;\n }\n const paramName = patternPart.slice(1);\n params[paramName] = urlParts[urlIndex];\n if (matchFrom(urlIndex + 1, patternIndex + 1)) {\n return true;\n }\n delete params[paramName];\n return false;\n }\n\n if (urlIndex >= urlParts.length || urlParts[urlIndex] !== patternPart) {\n return false;\n }\n return matchFrom(urlIndex + 1, patternIndex + 1);\n }\n\n if (!matchFrom(0, 0)) return null;\n decodeMatchedParams(params);\n return params;\n}\n"],"mappings":";;AAIA,SAAS,iBAAiB,SAAyB;CACjD,IAAI,QAAQ,WAAW,QAAQ,IAAI,QAAQ,SAAS,KAAK,EACvD,OAAO,IAAI,QAAQ,MAAM,GAAG,GAAG,CAAC;CAElC,IAAI,QAAQ,WAAW,OAAO,IAAI,QAAQ,SAAS,IAAI,EACrD,OAAO,IAAI,QAAQ,MAAM,GAAG,GAAG,CAAC;CAElC,IAAI,QAAQ,WAAW,IAAI,IAAI,QAAQ,SAAS,IAAI,EAClD,OAAO,IAAI,QAAQ,MAAM,GAAG,GAAG;CAEjC,OAAO;;AAGT,SAAgB,kBAAkB,UAA4B;CAC5D,OAAO,SAAS,MAAM,IAAI,CAAC,OAAO,QAAQ,CAAC,IAAI,iBAAiB;;AAGlE,SAAgB,aAAa,UAA0B;CACrD,MAAM,QAAQ,kBAAkB,SAAS;CACzC,OAAO,MAAM,SAAS,IAAI,IAAI,MAAM,KAAK,IAAI,KAAK;;AAGpD,SAAS,iBAAiB,QAAkB,OAAgC;CAC1E,IAAI,MAAM,QAAQ,MAAM,EAAE;EACxB,KAAK,MAAM,SAAS,OAClB,OAAO,KAAK,MAAM;EAEpB;;CAGF,OAAO,KAAK,MAAM;;AAGpB,SAAgB,yBACd,UACA,QACe;CACf,MAAM,WAAW,SAAS,MAAM,IAAI,CAAC,OAAO,QAAQ;CACpD,MAAM,mBAA6B,EAAE;CAErC,KAAK,MAAM,WAAW,UAAU;EAC9B,IAAI,QAAQ,WAAW,QAAQ,IAAI,QAAQ,SAAS,KAAK,EAAE;GAEzD,MAAM,QAAQ,OADI,QAAQ,MAAM,GAAG,GACL;GAC9B,IAAI,UAAU,KAAA,KAAa,UAAU,IAAI;IACvC,IAAI,MAAM,QAAQ,MAAM,IAAI,MAAM,WAAW,GAC3C;IAEF,iBAAiB,kBAAkB,MAAM;;GAE3C;;EAGF,IAAI,QAAQ,WAAW,OAAO,IAAI,QAAQ,SAAS,IAAI,EAAE;GAEvD,MAAM,QAAQ,OADI,QAAQ,MAAM,GAAG,GACL;GAC9B,IAAI,UAAU,KAAA,MAAc,MAAM,QAAQ,MAAM,GAAG,MAAM,WAAW,IAAI,UAAU,KAChF,OAAO;GAET,iBAAiB,kBAAkB,MAAM;GACzC;;EAGF,IAAI,QAAQ,WAAW,IAAI,IAAI,QAAQ,SAAS,IAAI,EAAE;GAEpD,MAAM,QAAQ,OADI,QAAQ,MAAM,GAAG,GACL;GAC9B,IAAI,OAAO,UAAU,UAAU;IAC7B,iBAAiB,KAAK,MAAM;IAC5B;;GAEF,IAAI,MAAM,QAAQ,MAAM,IAAI,MAAM,SAAS,GAAG;IAC5C,IAAI,MAAM,SAAS,GACjB,OAAO;IAET,iBAAiB,KAAK,MAAM,GAAG;IAC/B;;GAEF,OAAO;;EAGT,iBAAiB,KAAK,QAAQ;;CAGhC,OAAO,iBAAiB,SAAS,IAAI,IAAI,iBAAiB,KAAK,IAAI,KAAK;;AAG1E,SAAgB,kBACd,UACA,cAC2B;CAC3B,MAAM,SAA6B,OAAO,OAAO,KAAK;CAEtD,SAAS,UAAU,UAAkB,cAA+B;EAClE,IAAI,iBAAiB,aAAa,QAChC,OAAO,aAAa,SAAS;EAG/B,MAAM,cAAc,aAAa;EACjC,IAAI,YAAY,WAAW,IAAI,KAAK,YAAY,SAAS,IAAI,IAAI,YAAY,SAAS,IAAI,GAAG;GAC3F,MAAM,YAAY,YAAY,MAAM,GAAG,GAAG;GAC1C,MAAM,YAAY,YAAY,SAAS,IAAI,GAAG,IAAI;GAClD,KAAK,IAAI,WAAW,WAAW,WAAW,YAAY,SAAS,QAAQ,YAAY;IACjF,MAAM,QAAQ,SAAS,MAAM,UAAU,SAAS;IAChD,IAAI,MAAM,SAAS,GACjB,OAAO,aAAa;SAEpB,OAAO,OAAO;IAEhB,IAAI,UAAU,UAAU,eAAe,EAAE,EACvC,OAAO;;GAGX,OAAO,OAAO;GACd,OAAO;;EAGT,IAAI,YAAY,WAAW,IAAI,EAAE;GAC/B,IAAI,YAAY,SAAS,QACvB,OAAO;GAET,MAAM,YAAY,YAAY,MAAM,EAAE;GACtC,OAAO,aAAa,SAAS;GAC7B,IAAI,UAAU,WAAW,GAAG,eAAe,EAAE,EAC3C,OAAO;GAET,OAAO,OAAO;GACd,OAAO;;EAGT,IAAI,YAAY,SAAS,UAAU,SAAS,cAAc,aACxD,OAAO;EAET,OAAO,UAAU,WAAW,GAAG,eAAe,EAAE;;CAGlD,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE,OAAO;CAC7B,oBAAoB,OAAO;CAC3B,OAAO"}