| 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":"file-matcher.js","names":[],"sources":["../../src/routing/file-matcher.ts"],"sourcesContent":["import { existsSync } from \"node:fs\";\nimport { glob } from \"node:fs/promises\";\n\nconst DEFAULT_PAGE_EXTENSIONS = [\"tsx\", \"ts\", \"jsx\", \"js\"] as const;\n\nfunction escapeRegex(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nexport function normalizePageExtensions(pageExtensions?: readonly string[] | null): string[] {\n if (!Array.isArray(pageExtensions) || pageExtensions.length === 0) {\n return [...DEFAULT_PAGE_EXTENSIONS];\n }\n\n const filtered = pageExtensions\n .filter((ext): ext is string => typeof ext === \"string\")\n .map((ext) => ext.trim().replace(/^\\.+/, \"\"))\n .filter((ext) => ext.length > 0);\n return filtered.length > 0 ? [...filtered] : [...DEFAULT_PAGE_EXTENSIONS];\n}\n\nfunction buildExtensionGlob(stem: string, extensions: readonly string[]): string {\n if (extensions.length === 1) {\n return `${stem}.${extensions[0]}`;\n }\n return `${stem}.{${extensions.join(\",\")}}`;\n}\n\nexport type ValidFileMatcher = {\n extensions: string[];\n dottedExtensions: string[];\n extensionRegex: RegExp;\n isPageFile(filePath: string): boolean;\n isAppRouterPage(filePath: string): boolean;\n isAppRouterRoute(filePath: string): boolean;\n isAppLayoutFile(filePath: string): boolean;\n isAppDefaultFile(filePath: string): boolean;\n stripExtension(filePath: string): string;\n};\n\n/**\n * Ported in spirit from Next.js createValidFileMatcher:\n * packages/next/src/server/lib/find-page-file.ts\n */\nexport function createValidFileMatcher(\n pageExtensions?: readonly string[] | null,\n): ValidFileMatcher {\n const extensions = normalizePageExtensions(pageExtensions);\n const dottedExtensions = extensions.map((ext) => `.${ext}`);\n const extPattern = `(?:${extensions.map((ext) => escapeRegex(ext)).join(\"|\")})`;\n\n const extensionRegex = new RegExp(`\\\\.${extPattern}$`);\n const createLeafPattern = (fileNames: readonly string[]): RegExp => {\n const names = fileNames.length === 1 ? fileNames[0] : `(${fileNames.join(\"|\")})`;\n return new RegExp(`(^${names}|[\\\\\\\\/]${names})\\\\.${extPattern}$`);\n };\n\n const appRouterPageRegex = createLeafPattern([\"page\", \"route\"]);\n const appRouterRouteRegex = createLeafPattern([\"route\"]);\n const appLayoutRegex = createLeafPattern([\"layout\"]);\n const appDefaultRegex = createLeafPattern([\"default\"]);\n\n return {\n extensions,\n dottedExtensions,\n extensionRegex,\n isPageFile(filePath: string) {\n return extensionRegex.test(filePath);\n },\n isAppRouterPage(filePath: string) {\n return appRouterPageRegex.test(filePath);\n },\n isAppRouterRoute(filePath: string) {\n return appRouterRouteRegex.test(filePath);\n },\n isAppLayoutFile(filePath: string) {\n return appLayoutRegex.test(filePath);\n },\n isAppDefaultFile(filePath: string) {\n return appDefaultRegex.test(filePath);\n },\n stripExtension(filePath: string) {\n return filePath.replace(extensionRegex, \"\");\n },\n };\n}\n\n/** Check if a file exists with any configured page extension. */\nexport function findFileWithExtensions(basePath: string, matcher: ValidFileMatcher): boolean {\n return matcher.dottedExtensions.some((ext) => existsSync(basePath + ext));\n}\n\n/**\n * Use function-form exclude for Node < 22.14 compatibility.\n */\nexport async function* scanWithExtensions(\n stem: string,\n cwd: string,\n extensions: readonly string[],\n exclude?: (name: string) => boolean,\n): AsyncGenerator<string> {\n const pattern = buildExtensionGlob(stem, extensions);\n for await (const file of glob(pattern, {\n cwd,\n ...(exclude ? { exclude } : {}),\n })) {\n yield file;\n }\n}\n"],"mappings":";;;AAGA,MAAM,0BAA0B;CAAC;CAAO;CAAM;CAAO;CAAK;AAE1D,SAAS,YAAY,OAAuB;CAC1C,OAAO,MAAM,QAAQ,uBAAuB,OAAO;;AAGrD,SAAgB,wBAAwB,gBAAqD;CAC3F,IAAI,CAAC,MAAM,QAAQ,eAAe,IAAI,eAAe,WAAW,GAC9D,OAAO,CAAC,GAAG,wBAAwB;CAGrC,MAAM,WAAW,eACd,QAAQ,QAAuB,OAAO,QAAQ,SAAS,CACvD,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,QAAQ,GAAG,CAAC,CAC5C,QAAQ,QAAQ,IAAI,SAAS,EAAE;CAClC,OAAO,SAAS,SAAS,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,wBAAwB;;AAG3E,SAAS,mBAAmB,MAAc,YAAuC;CAC/E,IAAI,WAAW,WAAW,GACxB,OAAO,GAAG,KAAK,GAAG,WAAW;CAE/B,OAAO,GAAG,KAAK,IAAI,WAAW,KAAK,IAAI,CAAC;;;;;;AAmB1C,SAAgB,uBACd,gBACkB;CAClB,MAAM,aAAa,wBAAwB,eAAe;CAC1D,MAAM,mBAAmB,WAAW,KAAK,QAAQ,IAAI,MAAM;CAC3D,MAAM,aAAa,MAAM,WAAW,KAAK,QAAQ,YAAY,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC;CAE7E,MAAM,iBAAiB,IAAI,OAAO,MAAM,WAAW,GAAG;CACtD,MAAM,qBAAqB,cAAyC;EAClE,MAAM,QAAQ,UAAU,WAAW,IAAI,UAAU,KAAK,IAAI,UAAU,KAAK,IAAI,CAAC;EAC9E,OAAO,IAAI,OAAO,KAAK,MAAM,UAAU,MAAM,MAAM,WAAW,GAAG;;CAGnE,MAAM,qBAAqB,kBAAkB,CAAC,QAAQ,QAAQ,CAAC;CAC/D,MAAM,sBAAsB,kBAAkB,CAAC,QAAQ,CAAC;CACxD,MAAM,iBAAiB,kBAAkB,CAAC,SAAS,CAAC;CACpD,MAAM,kBAAkB,kBAAkB,CAAC,UAAU,CAAC;CAEtD,OAAO;EACL;EACA;EACA;EACA,WAAW,UAAkB;GAC3B,OAAO,eAAe,KAAK,SAAS;;EAEtC,gBAAgB,UAAkB;GAChC,OAAO,mBAAmB,KAAK,SAAS;;EAE1C,iBAAiB,UAAkB;GACjC,OAAO,oBAAoB,KAAK,SAAS;;EAE3C,gBAAgB,UAAkB;GAChC,OAAO,eAAe,KAAK,SAAS;;EAEtC,iBAAiB,UAAkB;GACjC,OAAO,gBAAgB,KAAK,SAAS;;EAEvC,eAAe,UAAkB;GAC/B,OAAO,SAAS,QAAQ,gBAAgB,GAAG;;EAE9C;;;AAIH,SAAgB,uBAAuB,UAAkB,SAAoC;CAC3F,OAAO,QAAQ,iBAAiB,MAAM,QAAQ,WAAW,WAAW,IAAI,CAAC;;;;;AAM3E,gBAAuB,mBACrB,MACA,KACA,YACA,SACwB;CACxB,MAAM,UAAU,mBAAmB,MAAM,WAAW;CACpD,WAAW,MAAM,QAAQ,KAAK,SAAS;EACrC;EACA,GAAI,UAAU,EAAE,SAAS,GAAG,EAAE;EAC/B,CAAC,EACA,MAAM"}