@reckona/mreact-router 0.0.152 → 0.0.154

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/README.md +1 -1
  2. package/dist/actions.d.ts +10 -0
  3. package/dist/actions.d.ts.map +1 -1
  4. package/dist/actions.js +6 -0
  5. package/dist/actions.js.map +1 -1
  6. package/dist/adapters/aws-lambda.d.ts +18 -0
  7. package/dist/adapters/aws-lambda.d.ts.map +1 -1
  8. package/dist/adapters/aws-lambda.js +18 -0
  9. package/dist/adapters/aws-lambda.js.map +1 -1
  10. package/dist/adapters/cloudflare.d.ts +33 -0
  11. package/dist/adapters/cloudflare.d.ts.map +1 -1
  12. package/dist/adapters/cloudflare.js +33 -0
  13. package/dist/adapters/cloudflare.js.map +1 -1
  14. package/dist/adapters/edge.d.ts +5 -0
  15. package/dist/adapters/edge.d.ts.map +1 -1
  16. package/dist/adapters/edge.js +5 -0
  17. package/dist/adapters/edge.js.map +1 -1
  18. package/dist/adapters/node.d.ts +5 -0
  19. package/dist/adapters/node.d.ts.map +1 -1
  20. package/dist/adapters/node.js +5 -0
  21. package/dist/adapters/node.js.map +1 -1
  22. package/dist/adapters/static.d.ts +5 -0
  23. package/dist/adapters/static.d.ts.map +1 -1
  24. package/dist/adapters/static.js +5 -0
  25. package/dist/adapters/static.js.map +1 -1
  26. package/dist/build.d.ts +15 -0
  27. package/dist/build.d.ts.map +1 -1
  28. package/dist/build.js +85 -2
  29. package/dist/build.js.map +1 -1
  30. package/dist/cache.d.ts +15 -0
  31. package/dist/cache.d.ts.map +1 -1
  32. package/dist/cache.js +15 -0
  33. package/dist/cache.js.map +1 -1
  34. package/dist/cookies.d.ts +16 -0
  35. package/dist/cookies.d.ts.map +1 -1
  36. package/dist/cookies.js +16 -0
  37. package/dist/cookies.js.map +1 -1
  38. package/dist/dev-server.d.ts +5 -0
  39. package/dist/dev-server.d.ts.map +1 -1
  40. package/dist/dev-server.js +5 -0
  41. package/dist/dev-server.js.map +1 -1
  42. package/dist/link.d.ts +10 -0
  43. package/dist/link.d.ts.map +1 -1
  44. package/dist/link.js +5 -0
  45. package/dist/link.js.map +1 -1
  46. package/dist/middleware.d.ts.map +1 -1
  47. package/dist/middleware.js +39 -4
  48. package/dist/middleware.js.map +1 -1
  49. package/dist/module-runner.d.ts +6 -0
  50. package/dist/module-runner.d.ts.map +1 -1
  51. package/dist/module-runner.js +71 -0
  52. package/dist/module-runner.js.map +1 -1
  53. package/dist/navigation.d.ts +53 -0
  54. package/dist/navigation.d.ts.map +1 -1
  55. package/dist/navigation.js +48 -0
  56. package/dist/navigation.js.map +1 -1
  57. package/dist/render.d.ts +34 -0
  58. package/dist/render.d.ts.map +1 -1
  59. package/dist/render.js +161 -27
  60. package/dist/render.js.map +1 -1
  61. package/dist/route-module-loader.d.ts +6 -1
  62. package/dist/route-module-loader.d.ts.map +1 -1
  63. package/dist/route-module-loader.js +8 -1
  64. package/dist/route-module-loader.js.map +1 -1
  65. package/dist/serve.d.ts +5 -0
  66. package/dist/serve.d.ts.map +1 -1
  67. package/dist/serve.js +5 -0
  68. package/dist/serve.js.map +1 -1
  69. package/dist/session.d.ts +19 -0
  70. package/dist/session.d.ts.map +1 -1
  71. package/dist/session.js +19 -0
  72. package/dist/session.js.map +1 -1
  73. package/dist/typed-routes.d.ts +5 -0
  74. package/dist/typed-routes.d.ts.map +1 -1
  75. package/dist/typed-routes.js +5 -0
  76. package/dist/typed-routes.js.map +1 -1
  77. package/dist/types.d.ts +15 -0
  78. package/dist/types.d.ts.map +1 -1
  79. package/dist/types.js +5 -0
  80. package/dist/types.js.map +1 -1
  81. package/dist/vite.d.ts.map +1 -1
  82. package/dist/vite.js +1 -0
  83. package/dist/vite.js.map +1 -1
  84. package/package.json +11 -11
  85. package/src/actions.ts +18 -0
  86. package/src/adapters/aws-lambda.ts +18 -0
  87. package/src/adapters/cloudflare.ts +33 -0
  88. package/src/adapters/edge.ts +5 -0
  89. package/src/adapters/node.ts +5 -0
  90. package/src/adapters/static.ts +5 -0
  91. package/src/build.ts +118 -1
  92. package/src/cache.ts +15 -0
  93. package/src/cookies.ts +16 -0
  94. package/src/dev-server.ts +5 -0
  95. package/src/link.ts +10 -0
  96. package/src/middleware.ts +54 -4
  97. package/src/module-runner.ts +91 -0
  98. package/src/navigation.ts +53 -0
  99. package/src/render.ts +229 -25
  100. package/src/route-module-loader.ts +15 -0
  101. package/src/serve.ts +5 -0
  102. package/src/session.ts +19 -0
  103. package/src/typed-routes.ts +5 -0
  104. package/src/types.ts +15 -0
  105. package/src/vite.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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","sourcesContent":["import { normalizeRoutePath } from \"./route-path.js\";\n\nexport interface RouteMiddlewareControl {\n skip?: boolean | readonly string[];\n}\n\nexport interface MiddlewareModule {\n config?: {\n id?: string | undefined;\n matcher?: string | RegExp | readonly string[] | undefined;\n };\n default?: unknown;\n middleware?: unknown;\n}\n\nexport interface StaticMiddlewareConfig {\n hasMatcher: boolean;\n id?: string | undefined;\n matcher?: string | readonly string[] | undefined;\n}\n\nexport function shouldSkipMiddleware(\n config: Pick<NonNullable<MiddlewareModule[\"config\"]>, \"id\"> | undefined,\n control: RouteMiddlewareControl | undefined,\n): boolean {\n if (control?.skip === true) {\n return true;\n }\n\n if (!Array.isArray(control?.skip)) {\n return false;\n }\n\n return typeof config?.id === \"string\" && control.skip.includes(config.id);\n}\n\nexport function validateRouteMiddlewareControl(options: {\n availableIds: ReadonlySet<string>;\n control: RouteMiddlewareControl | undefined;\n routePath: string;\n}): void {\n if (!Array.isArray(options.control?.skip)) {\n return;\n }\n\n for (const id of options.control.skip) {\n if (!options.availableIds.has(id)) {\n throw new Error(\n `Unknown middleware skip id \"${id}\" for route \"${options.routePath}\". Available middleware ids: ${formatAvailableMiddlewareIds(options.availableIds)}.`,\n );\n }\n }\n}\n\nexport function parseStaticMiddlewareConfig(code: string): StaticMiddlewareConfig {\n const configBody = /\\bexport\\s+const\\s+config\\s*=\\s*\\{(?<body>[\\s\\S]*?)\\}\\s*;?/.exec(code)\n ?.groups?.body;\n\n if (configBody === undefined) {\n return { hasMatcher: false };\n }\n\n const id = /\\bid\\s*:\\s*[\"'](?<id>[^\"']+)[\"']/.exec(configBody)?.groups?.id;\n const stringMatcher = /\\bmatcher\\s*:\\s*[\"'](?<matcher>[^\"']+)[\"']/.exec(configBody)?.groups\n ?.matcher;\n\n if (stringMatcher !== undefined) {\n return {\n hasMatcher: true,\n ...(id === undefined ? {} : { id }),\n matcher: stringMatcher,\n };\n }\n\n const matcherArray = /\\bmatcher\\s*:\\s*\\[(?<items>[\\s\\S]*?)\\]/.exec(configBody)?.groups?.items;\n\n if (matcherArray !== undefined) {\n return {\n hasMatcher: true,\n ...(id === undefined ? {} : { id }),\n matcher: Array.from(\n matcherArray.matchAll(/[\"'](?<matcher>[^\"']+)[\"']/g),\n (match) => match.groups?.matcher,\n ).filter((matcher): matcher is string => matcher !== undefined),\n };\n }\n\n return {\n hasMatcher: /\\bmatcher\\s*:/.test(configBody),\n ...(id === undefined ? {} : { id }),\n };\n}\n\nexport function middlewareMatches(config: MiddlewareModule[\"config\"], pathname: string): boolean {\n const matcher = config?.matcher;\n\n if (matcher === undefined) {\n return true;\n }\n\n if (matcher instanceof RegExp) {\n return matcher.test(pathname);\n }\n\n if (Array.isArray(matcher)) {\n return matcher.some((item) => middlewarePatternMatches(item, pathname));\n }\n\n return typeof matcher === \"string\" && middlewarePatternMatches(matcher, pathname);\n}\n\nexport function parseRouteMiddlewareControl(code: string): RouteMiddlewareControl | undefined {\n if (!/\\bexport\\s+const\\s+middleware\\s*=/.test(code)) {\n return undefined;\n }\n\n if (/\\bmiddleware\\s*=\\s*\\{[\\s\\S]*?\\bskip\\s*:\\s*true\\b/.test(code)) {\n return { skip: true };\n }\n\n const skipArray = /\\bmiddleware\\s*=\\s*\\{[\\s\\S]*?\\bskip\\s*:\\s*\\[([\\s\\S]*?)\\]/.exec(code);\n\n if (skipArray === null) {\n return undefined;\n }\n\n const ids = Array.from(\n skipArray[1]?.matchAll(/[\"']([^\"']+)[\"']/g) ?? [],\n (match) => match[1],\n ).filter((id) => id !== undefined);\n\n return ids.length === 0 ? undefined : { skip: ids };\n}\n\nexport function mergeRouteMiddlewareControls(\n controls: readonly (RouteMiddlewareControl | undefined)[],\n): RouteMiddlewareControl | undefined {\n const skippedIds = new Set<string>();\n\n for (const control of controls) {\n if (control?.skip === true) {\n return { skip: true };\n }\n\n if (Array.isArray(control?.skip)) {\n for (const id of control.skip) {\n skippedIds.add(id);\n }\n }\n }\n\n return skippedIds.size === 0 ? undefined : { skip: [...skippedIds] };\n}\n\nfunction middlewarePatternMatches(pattern: string, pathname: string): boolean {\n const normalizedPattern = normalizeRoutePath(pattern);\n const normalizedPathname = normalizeRoutePath(pathname);\n\n if (normalizedPattern === normalizedPathname) {\n return true;\n }\n\n if (normalizedPattern.endsWith(\"/:path*\")) {\n const prefix = normalizedPattern.slice(0, -\"/:path*\".length);\n\n return normalizedPathname === prefix || normalizedPathname.startsWith(`${prefix}/`);\n }\n\n if (normalizedPattern.endsWith(\"*\")) {\n const prefix = normalizedPattern.slice(0, -1);\n\n return normalizedPathname.startsWith(prefix);\n }\n\n return false;\n}\n\nfunction formatAvailableMiddlewareIds(ids: ReadonlySet<string>): string {\n return ids.size === 0 ? \"(none)\" : [...ids].sort().join(\", \");\n}\n"]}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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","sourcesContent":["import { normalizeRoutePath } from \"./route-path.js\";\n\nexport interface RouteMiddlewareControl {\n skip?: boolean | readonly string[];\n}\n\nexport interface MiddlewareModule {\n config?: {\n id?: string | undefined;\n matcher?: string | RegExp | readonly string[] | undefined;\n };\n default?: unknown;\n middleware?: unknown;\n}\n\nexport interface StaticMiddlewareConfig {\n hasMatcher: boolean;\n id?: string | undefined;\n matcher?: string | readonly string[] | undefined;\n}\n\nexport function shouldSkipMiddleware(\n config: Pick<NonNullable<MiddlewareModule[\"config\"]>, \"id\"> | undefined,\n control: RouteMiddlewareControl | undefined,\n): boolean {\n if (control?.skip === true) {\n return true;\n }\n\n if (!Array.isArray(control?.skip)) {\n return false;\n }\n\n return typeof config?.id === \"string\" && control.skip.includes(config.id);\n}\n\nexport function validateRouteMiddlewareControl(options: {\n availableIds: ReadonlySet<string>;\n control: RouteMiddlewareControl | undefined;\n routePath: string;\n}): void {\n if (!Array.isArray(options.control?.skip)) {\n return;\n }\n\n for (const id of options.control.skip) {\n if (!options.availableIds.has(id)) {\n throw new Error(\n `Unknown middleware skip id \"${id}\" for route \"${options.routePath}\". Available middleware ids: ${formatAvailableMiddlewareIds(options.availableIds)}.`,\n );\n }\n }\n}\n\nexport function parseStaticMiddlewareConfig(code: string): StaticMiddlewareConfig {\n const configBody = /\\bexport\\s+const\\s+config\\s*=\\s*\\{(?<body>[\\s\\S]*?)\\}\\s*;?/.exec(code)\n ?.groups?.body;\n\n if (configBody === undefined) {\n return { hasMatcher: false };\n }\n\n const id = /\\bid\\s*:\\s*[\"'](?<id>[^\"']+)[\"']/.exec(configBody)?.groups?.id;\n const stringMatcher = /\\bmatcher\\s*:\\s*[\"'](?<matcher>[^\"']+)[\"']/.exec(configBody)?.groups\n ?.matcher;\n\n if (stringMatcher !== undefined) {\n return {\n hasMatcher: true,\n ...(id === undefined ? {} : { id }),\n matcher: stringMatcher,\n };\n }\n\n const matcherArray = /\\bmatcher\\s*:\\s*\\[(?<items>[\\s\\S]*?)\\]/.exec(configBody)?.groups?.items;\n\n if (matcherArray !== undefined) {\n return {\n hasMatcher: true,\n ...(id === undefined ? {} : { id }),\n matcher: Array.from(\n matcherArray.matchAll(/[\"'](?<matcher>[^\"']+)[\"']/g),\n (match) => match.groups?.matcher,\n ).filter((matcher): matcher is string => matcher !== undefined),\n };\n }\n\n return {\n hasMatcher: /\\bmatcher\\s*:/.test(configBody),\n ...(id === undefined ? {} : { id }),\n };\n}\n\nexport function middlewareMatches(config: MiddlewareModule[\"config\"], pathname: string): boolean {\n const matcher = config?.matcher;\n\n if (matcher === undefined) {\n return true;\n }\n\n if (matcher instanceof RegExp) {\n return matcher.test(pathname);\n }\n\n if (Array.isArray(matcher)) {\n return matcher.some((item) => middlewarePatternMatches(item, pathname));\n }\n\n return typeof matcher === \"string\" && middlewarePatternMatches(matcher, pathname);\n}\n\nexport function parseRouteMiddlewareControl(code: string): RouteMiddlewareControl | undefined {\n const masked = maskCodeLiterals(code);\n const declaration = /\\bexport\\s+const\\s+middleware\\s*=\\s*\\{/.exec(masked);\n\n if (declaration === null) {\n return undefined;\n }\n\n const objectStart = masked.indexOf(\"{\", declaration.index);\n const objectEnd = findMatchingBrace(masked, objectStart);\n\n if (objectStart < 0 || objectEnd < 0) {\n return undefined;\n }\n\n const maskedBody = masked.slice(objectStart + 1, objectEnd);\n const body = code.slice(objectStart + 1, objectEnd);\n\n if (/\\bskip\\s*:\\s*true\\b/.test(maskedBody)) {\n return { skip: true };\n }\n\n const skipArray = /\\bskip\\s*:\\s*\\[([\\s\\S]*?)\\]/.exec(maskedBody);\n\n if (skipArray === null) {\n return undefined;\n }\n\n const arrayStart = skipArray.index + skipArray[0].indexOf(\"[\") + 1;\n const arrayEnd = skipArray.index + skipArray[0].lastIndexOf(\"]\");\n const arrayBody = body.slice(arrayStart, arrayEnd);\n const ids = Array.from(\n arrayBody.matchAll(/[\"']([^\"']+)[\"']/g),\n (match) => match[1],\n ).filter((id) => id !== undefined);\n\n return ids.length === 0 ? undefined : { skip: ids };\n}\n\nfunction maskCodeLiterals(code: string): string {\n return code.replace(\n /\\/\\*[\\s\\S]*?\\*\\/|\\/\\/[^\\n\\r]*|\"(?:\\\\[\\s\\S]|[^\"\\\\])*\"|'(?:\\\\[\\s\\S]|[^'\\\\])*'|`(?:\\\\[\\s\\S]|[^`\\\\])*`/g,\n (match) => \" \".repeat(match.length),\n );\n}\n\nfunction findMatchingBrace(code: string, openIndex: number): number {\n if (openIndex < 0) {\n return -1;\n }\n\n let depth = 0;\n\n for (let index = openIndex; index < code.length; index += 1) {\n const char = code[index];\n\n if (char === \"{\") {\n depth += 1;\n continue;\n }\n\n if (char === \"}\") {\n depth -= 1;\n\n if (depth === 0) {\n return index;\n }\n }\n }\n\n return -1;\n}\n\nexport function mergeRouteMiddlewareControls(\n controls: readonly (RouteMiddlewareControl | undefined)[],\n): RouteMiddlewareControl | undefined {\n const skippedIds = new Set<string>();\n\n for (const control of controls) {\n if (control?.skip === true) {\n return { skip: true };\n }\n\n if (Array.isArray(control?.skip)) {\n for (const id of control.skip) {\n skippedIds.add(id);\n }\n }\n }\n\n return skippedIds.size === 0 ? undefined : { skip: [...skippedIds] };\n}\n\nfunction middlewarePatternMatches(pattern: string, pathname: string): boolean {\n const normalizedPattern = normalizeRoutePath(pattern);\n const normalizedPathname = normalizeRoutePath(pathname);\n\n if (normalizedPattern === normalizedPathname) {\n return true;\n }\n\n if (normalizedPattern.endsWith(\"/:path*\")) {\n const prefix = normalizedPattern.slice(0, -\"/:path*\".length);\n\n return normalizedPathname === prefix || normalizedPathname.startsWith(`${prefix}/`);\n }\n\n if (normalizedPattern.endsWith(\"*\")) {\n const prefix = normalizedPattern.slice(0, -1);\n\n return normalizedPathname.startsWith(prefix);\n }\n\n return false;\n}\n\nfunction formatAvailableMiddlewareIds(ids: ReadonlySet<string>): string {\n return ids.size === 0 ? \"(none)\" : [...ids].sort().join(\", \");\n}\n"]}
@@ -23,10 +23,16 @@ export declare function importAppRouterBuiltFileModule<T>(options: {
23
23
  cacheKey?: string | undefined;
24
24
  file: string;
25
25
  }): Promise<T>;
26
+ export declare const COMPAT_VENDOR_PLACEHOLDER_PREFIX = "mreact-compat-vendor:";
27
+ export declare function compatVendorEntryNames(): readonly string[];
28
+ export declare function sourceReferencesCompatVendorSpecifier(source: string): boolean;
29
+ export declare function resolveCompatVendorEntryFiles(resolveDir?: string): Map<string, string>;
30
+ export declare function compatVendorExternalizePlugin(): RouterCompatPlugin;
26
31
  export declare function bundleAppRouterSourceModule(options: {
27
32
  code: string;
28
33
  define?: UserConfig["define"] | undefined;
29
34
  externalizeAppSourceModuleDirs?: readonly string[] | undefined;
35
+ externalizeCompatVendor?: boolean | undefined;
30
36
  label: string;
31
37
  plugins?: readonly RouterCompatPlugin[] | undefined;
32
38
  resolveDir?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"module-runner.d.ts","sourceRoot":"","sources":["../src/module-runner.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,OAAO,EAKL,KAAK,YAAY,EAEjB,KAAK,UAAU,EAChB,MAAM,MAAM,CAAC;AAEd,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAKL,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAKL,KAAK,yBAAyB,EAC/B,MAAM,6BAA6B,CAAC;AA0BrC,wBAAgB,mCAAmC,IAAI,sBAAsB,EAAE,CAe9E;AAED,wBAAsB,2BAA2B,CAAC,CAAC,EAAE,OAAO,EAAE;IAC5D,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAC1C,8BAA8B,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,kBAAkB,EAAE,GAAG,SAAS,CAAC;IACpD,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,qBAAqB,CAAC,EAAE,4BAA4B,GAAG,SAAS,CAAC;IACjE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,CAAC,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAAC;CACnD,GAAG,OAAO,CAAC,CAAC,CAAC,CA6Bb;AAmCD,wBAAsB,yBAAyB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAK3E;AAgFD,wBAAsB,8BAA8B,CAAC,CAAC,EAAE,OAAO,EAAE;IAC/D,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,CAAC,CAAC,CA6Bb;AAED,wBAAsB,2BAA2B,CAAC,OAAO,EAAE;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAC1C,8BAA8B,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,kBAAkB,EAAE,GAAG,SAAS,CAAC;IACpD,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,qBAAqB,CAAC,EAAE,4BAA4B,GAAG,SAAS,CAAC;IACjE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,CAAC,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAAC;CACnD,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBlB;AAED,wBAAgB,uBAAuB,IAAI,kBAAkB,CAwB5D;AAED,UAAU,4BAA4B;IACpC,yBAAyB,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;IAClE,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAC1C,GAAG,EAAE,OAAO,CAAC;IACb,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,GAAG,SAAS,CAAC;IAC3E,YAAY,EAAE,gBAAgB,CAAC;IAC/B,WAAW,CAAC,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAAC;CACnD"}
1
+ {"version":3,"file":"module-runner.d.ts","sourceRoot":"","sources":["../src/module-runner.ts"],"names":[],"mappings":"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"}
@@ -154,6 +154,76 @@ export async function importAppRouterBuiltFileModule(options) {
154
154
  }
155
155
  return (await import(pathToFileURL(options.file).href));
156
156
  }
157
+ export const COMPAT_VENDOR_PLACEHOLDER_PREFIX = "mreact-compat-vendor:";
158
+ // Specifier-to-dist-entry table for the react-compat server family. The
159
+ // per-route externalization plugin and the shared vendor chunk build must
160
+ // agree exactly with the workspace alias table above, so both derive from
161
+ // this map.
162
+ const compatVendorSpecifierEntries = new Map([
163
+ ["react", "index"],
164
+ ["react-dom", "index"],
165
+ ["react-dom/client", "index"],
166
+ ["react-dom/server", "index"],
167
+ ["react/jsx-dev-runtime", "jsx-dev-runtime"],
168
+ ["react/jsx-runtime", "jsx-runtime"],
169
+ ["@reckona/mreact-compat", "index"],
170
+ ["@reckona/mreact-compat/event-priority", "event-priority"],
171
+ ["@reckona/mreact-compat/flight", "flight"],
172
+ ["@reckona/mreact-compat/hooks", "hooks-entry"],
173
+ ["@reckona/mreact-compat/internal", "internal"],
174
+ ["@reckona/mreact-compat/jsx-dev-runtime", "jsx-dev-runtime"],
175
+ ["@reckona/mreact-compat/jsx-runtime", "jsx-runtime"],
176
+ ["@reckona/mreact-compat/scheduler", "scheduler"],
177
+ ]);
178
+ const compatVendorEntrySpecifiers = new Map([
179
+ ["index", "@reckona/mreact-compat"],
180
+ ["jsx-runtime", "@reckona/mreact-compat/jsx-runtime"],
181
+ ["jsx-dev-runtime", "@reckona/mreact-compat/jsx-dev-runtime"],
182
+ ["hooks-entry", "@reckona/mreact-compat/hooks"],
183
+ ["scheduler", "@reckona/mreact-compat/scheduler"],
184
+ ["event-priority", "@reckona/mreact-compat/event-priority"],
185
+ ["flight", "@reckona/mreact-compat/flight"],
186
+ ["internal", "@reckona/mreact-compat/internal"],
187
+ ]);
188
+ export function compatVendorEntryNames() {
189
+ return [...compatVendorEntrySpecifiers.keys()];
190
+ }
191
+ // Cheap build-time prefilter. A false positive only costs one unused vendor
192
+ // chunk build; a false negative keeps the per-route inlining fallback.
193
+ const compatVendorSpecifierPattern = /["'](?:react|react-dom|react\/jsx(?:-dev)?-runtime|react-dom\/(?:client|server)|@reckona\/mreact-compat(?:\/[\w-]+)?)["']/u;
194
+ export function sourceReferencesCompatVendorSpecifier(source) {
195
+ return compatVendorSpecifierPattern.test(source);
196
+ }
197
+ export function resolveCompatVendorEntryFiles(resolveDir) {
198
+ const files = new Map();
199
+ for (const [entry, specifier] of compatVendorEntrySpecifiers) {
200
+ files.set(entry, resolveWorkspacePackageFile({
201
+ currentFileUrl: import.meta.url,
202
+ entry,
203
+ monorepoDir: "react-compat",
204
+ packageName: "@reckona/mreact-compat",
205
+ resolveDir,
206
+ specifier,
207
+ }));
208
+ }
209
+ return files;
210
+ }
211
+ // Marks every compat-family import as external with a deterministic
212
+ // placeholder specifier; writeServerModuleArtifactFiles later rewrites the
213
+ // placeholders to relative paths into the emitted shared vendor chunks.
214
+ export function compatVendorExternalizePlugin() {
215
+ return {
216
+ name: "mreact-compat-vendor-externalize",
217
+ setup(buildApi) {
218
+ buildApi.onResolve({ filter: /^(?:react|react-dom|react\/.+|react-dom\/.+|@reckona\/mreact-compat(?:\/.+)?)$/u }, (args) => {
219
+ const entry = compatVendorSpecifierEntries.get(args.path);
220
+ return entry === undefined
221
+ ? undefined
222
+ : { external: true, path: `${COMPAT_VENDOR_PLACEHOLDER_PREFIX}${entry}` };
223
+ });
224
+ },
225
+ };
226
+ }
157
227
  export async function bundleAppRouterSourceModule(options) {
158
228
  const output = await bundleRouterModule({
159
229
  code: options.code,
@@ -164,6 +234,7 @@ export async function bundleAppRouterSourceModule(options) {
164
234
  root: options.root,
165
235
  vitePlugins: options.vitePlugins,
166
236
  plugins: [
237
+ ...(options.externalizeCompatVendor === true ? [compatVendorExternalizePlugin()] : []),
167
238
  workspacePackageResolutionPlugin(),
168
239
  ...(options.serverSourceTransform === undefined
169
240
  ? []
@@ -1 +1 @@
1
- {"version":3,"file":"module-runner.js","sourceRoot":"","sources":["../src/module-runner.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { dirname, extname, isAbsolute, join, sep } from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { formatDiagnostic } from \"@reckona/mreact-compiler\";\nimport type { ServerOutputMode } from \"@reckona/mreact-shared/compiler-contract\";\nimport { transformCompilerModuleContext } from \"@reckona/mreact-compiler/internal\";\nimport {\n createRunnableDevEnvironment,\n mergeConfig,\n resolveConfig,\n type InlineConfig,\n type PluginOption,\n type RunnableDevEnvironment,\n type UserConfig,\n} from \"vite\";\nimport { resolveWorkspacePackageFile } from \"./workspace-packages.js\";\nimport {\n bundleRouterModule,\n type RouterCompatBuildApi,\n type RouterCompatPlugin,\n} from \"./bundle-pipeline.js\";\nimport { resolveRouterCacheLimit } from \"./cache-config.js\";\nimport type { BuiltServerModuleArtifact } from \"./build.js\";\nimport {\n createRouterRuntimeCacheCounters,\n readRouterRuntimeCacheEntry,\n routerRuntimeCacheStat,\n type RouterRuntimeCacheCounters,\n type RouterRuntimeCacheStat,\n} from \"./cache-stats.js\";\nimport {\n compilerModuleContextForSource,\n createClientRouteInferenceCache,\n formatClientRouteInferenceDiagnostic,\n inferClientRouteModule,\n type ClientRouteInferenceCache,\n} from \"./client-route-inference.js\";\nimport { viteDefineCacheKey, vitePluginsCacheKey } from \"./vite-plugin-cache-key.js\";\n\nconst runnerConfig = {\n configFile: false,\n logLevel: \"silent\",\n} satisfies InlineConfig;\nconst nativeEscapeTransform = {\n batchImportName: \"escapeHtmlBatch\",\n batchImportSource: \"@reckona/mreact-router/native-escape\",\n} as const;\nconst sourceModuleCache = new Map<string, Promise<unknown>>();\nconst maxSourceModuleCacheEntries = resolveRouterCacheLimit(\"SOURCE_MODULE\", 512);\nconst sourceModuleCacheCounters = createRouterRuntimeCacheCounters();\nconst serverSourceTransformCache = new Map<string, string>();\nconst maxServerSourceTransformCacheEntries = resolveRouterCacheLimit(\n \"SERVER_SOURCE_TRANSFORM\",\n 512,\n);\nconst serverSourceTransformCacheCounters = createRouterRuntimeCacheCounters();\nconst packageTypeCache = new Map<string, string | undefined>();\nconst runnerVirtualModulePrefix = \"virtual:mreact-router-source/\";\nconst runnerVirtualModules = new Map<string, string>();\nlet sharedRunnerEnvironment: Promise<RunnableDevEnvironment> | undefined;\nlet fileImportVersion = 0;\n\nexport function routerModuleRunnerRuntimeCacheStats(): RouterRuntimeCacheStat[] {\n return [\n routerRuntimeCacheStat(\n \"source-module\",\n sourceModuleCache,\n maxSourceModuleCacheEntries,\n sourceModuleCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"server-source-transform\",\n serverSourceTransformCache,\n maxServerSourceTransformCacheEntries,\n serverSourceTransformCacheCounters,\n ),\n ];\n}\n\nexport async function importAppRouterSourceModule<T>(options: {\n cacheKey?: string | undefined;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAppSourceModuleDirs?: readonly string[] | undefined;\n label: string;\n plugins?: readonly RouterCompatPlugin[] | undefined;\n resolveDir?: string | undefined;\n root?: string | undefined;\n serverSourceTransform?: ServerSourceTransformOptions | undefined;\n sourcefile?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<T> {\n if (options.cacheKey !== undefined) {\n const cacheKey = options.cacheKey;\n const cached = readRouterRuntimeCacheEntry(\n sourceModuleCache,\n cacheKey,\n sourceModuleCacheCounters,\n ) as Promise<T> | undefined;\n\n if (cached !== undefined) {\n return cached;\n }\n\n const loaded = importAppRouterSourceModuleWithoutCache<T>(options).catch((error) => {\n sourceModuleCache.delete(cacheKey);\n throw error;\n });\n setBoundedCacheEntry(\n sourceModuleCache,\n cacheKey,\n loaded,\n maxSourceModuleCacheEntries,\n sourceModuleCacheCounters,\n );\n\n return loaded;\n }\n\n return importAppRouterSourceModuleWithoutCache(options);\n}\n\nasync function importAppRouterSourceModuleWithoutCache<T>(options: {\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAppSourceModuleDirs?: readonly string[] | undefined;\n label: string;\n plugins?: readonly RouterCompatPlugin[] | undefined;\n resolveDir?: string | undefined;\n root?: string | undefined;\n serverSourceTransform?: ServerSourceTransformOptions | undefined;\n sourcefile?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<T> {\n const code =\n options.resolveDir === undefined ? options.code : await bundleAppRouterSourceModule(options);\n const sourcefile = options.sourcefile ?? join(options.resolveDir ?? process.cwd(), \"module.js\");\n const executableCode = withNodeRequireShimForEsmBundle({\n code: withFileImportMetaUrl(code, sourcefile),\n filename: sourcefile,\n requireBaseDir:\n options.resolveDir ??\n (options.sourcefile === undefined ? undefined : dirname(options.sourcefile)),\n });\n const encodedLabel = encodeURIComponent(options.label.replace(/[^A-Za-z0-9_$.-]/g, \"-\"));\n const publicId = `${runnerVirtualModulePrefix}${encodedLabel}-${Date.now()}-${Math.random()}.mjs`;\n runnerVirtualModules.set(publicId, executableCode);\n\n try {\n return await importWithSharedRunner<T>(publicId, { invalidateEntry: true });\n } finally {\n runnerVirtualModules.delete(publicId);\n }\n}\n\nexport async function importAppRouterFileModule<T>(file: string): Promise<T> {\n fileImportVersion += 1;\n const url = `${pathToFileURL(file).href}?t=${Date.now()}${fileImportVersion}`;\n\n return await importWithSharedRunner<T>(url, { invalidateEntry: true });\n}\n\nasync function importWithSharedRunner<T>(\n moduleId: string,\n options?: { invalidateEntry?: boolean | undefined },\n): Promise<T> {\n const environment = await getSharedRunnerEnvironment();\n const module = (await environment.runner.import(moduleId)) as T;\n\n if (options?.invalidateEntry === true) {\n const evaluatedModule =\n environment.runner.evaluatedModules.getModuleByUrl(moduleId) ??\n environment.runner.evaluatedModules.getModuleById(moduleId) ??\n environment.runner.evaluatedModules.getModuleById(`\\0${moduleId}`);\n\n if (evaluatedModule !== undefined) {\n environment.runner.evaluatedModules.invalidateModule(evaluatedModule);\n }\n }\n\n return module;\n}\n\nasync function getSharedRunnerEnvironment(): Promise<RunnableDevEnvironment> {\n if (sharedRunnerEnvironment !== undefined) {\n return await sharedRunnerEnvironment;\n }\n\n sharedRunnerEnvironment = createSharedRunnerEnvironment().catch((error) => {\n sharedRunnerEnvironment = undefined;\n throw error;\n });\n\n return await sharedRunnerEnvironment;\n}\n\nasync function createSharedRunnerEnvironment(): Promise<RunnableDevEnvironment> {\n const config = await resolveConfig(\n mergeConfig(runnerConfig, {\n cacheDir: process.cwd(),\n configFile: false,\n envDir: false,\n environments: {\n mreact_router: {\n consumer: \"server\",\n dev: { moduleRunnerTransform: true },\n resolve: {\n conditions: [\"node\"],\n external: true,\n mainFields: [],\n },\n },\n },\n plugins: [\n {\n name: \"mreact-router-source-module\",\n resolveId(source) {\n return runnerVirtualModules.has(source) ? `\\0${source}` : undefined;\n },\n load(id) {\n const source = id.startsWith(\"\\0\") ? id.slice(1) : id;\n\n return source.startsWith(runnerVirtualModulePrefix)\n ? runnerVirtualModules.get(source)\n : undefined;\n },\n },\n ],\n } satisfies InlineConfig),\n \"serve\",\n );\n const environment = createRunnableDevEnvironment(\"mreact_router\", config, {\n hot: false,\n runnerOptions: { hmr: { logger: false } },\n });\n await environment.init();\n\n return environment;\n}\n\nexport async function importAppRouterBuiltFileModule<T>(options: {\n cacheKey?: string | undefined;\n file: string;\n}): Promise<T> {\n if (options.cacheKey !== undefined) {\n const cacheKey = options.cacheKey;\n const cached = readRouterRuntimeCacheEntry(\n sourceModuleCache,\n cacheKey,\n sourceModuleCacheCounters,\n ) as Promise<T> | undefined;\n\n if (cached !== undefined) {\n return cached;\n }\n\n const loaded = import(pathToFileURL(options.file).href).catch((error) => {\n sourceModuleCache.delete(cacheKey);\n throw error;\n }) as Promise<T>;\n setBoundedCacheEntry(\n sourceModuleCache,\n cacheKey,\n loaded,\n maxSourceModuleCacheEntries,\n sourceModuleCacheCounters,\n );\n\n return loaded;\n }\n\n return (await import(pathToFileURL(options.file).href)) as T;\n}\n\nexport async function bundleAppRouterSourceModule(options: {\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAppSourceModuleDirs?: readonly string[] | undefined;\n label: string;\n plugins?: readonly RouterCompatPlugin[] | undefined;\n resolveDir?: string | undefined;\n root?: string | undefined;\n serverSourceTransform?: ServerSourceTransformOptions | undefined;\n sourcefile?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n code: options.code,\n define: options.define,\n externalizeAppSourceModuleDirs: options.externalizeAppSourceModuleDirs,\n filename: options.sourcefile ?? join(options.resolveDir ?? process.cwd(), \"module.js\"),\n platform: \"node\",\n root: options.root,\n vitePlugins: options.vitePlugins,\n plugins: [\n workspacePackageResolutionPlugin(),\n ...(options.serverSourceTransform === undefined\n ? []\n : [serverSourceTransformPlugin(options.serverSourceTransform)]),\n ...(options.plugins ?? []),\n ],\n });\n const code = output.code;\n\n if (code === undefined) {\n throw new Error(`Failed to bundle ${options.label} for Vite runner.`);\n }\n\n return code;\n}\n\nexport function fileImportMetaUrlPlugin(): RouterCompatPlugin {\n const workspacePackagesDir = dirname(dirname(dirname(fileURLToPath(import.meta.url))));\n\n return {\n name: \"mreact-router-file-import-meta-url\",\n setup(buildApi) {\n buildApi.onLoad({ filter: /(?:\\.mreact)?\\.[cm]?[jt]sx?$/ }, async (args) => {\n if (\n args.path.includes(`${sep}node_modules${sep}`) ||\n args.path.startsWith(`${workspacePackagesDir}${sep}`)\n ) {\n return undefined;\n }\n\n const source = await readFile(args.path, \"utf8\");\n\n return {\n contents: withFileImportMetaUrl(source, args.path),\n loader: \"js\",\n resolveDir: dirname(args.path),\n };\n });\n },\n };\n}\n\ninterface ServerSourceTransformOptions {\n clientRouteInferenceCache?: ClientRouteInferenceCache | undefined;\n define?: UserConfig[\"define\"] | undefined;\n dev: boolean;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverOutput: ServerOutputMode;\n vitePlugins?: readonly PluginOption[] | undefined;\n}\n\nfunction serverSourceTransformPlugin(options: ServerSourceTransformOptions): RouterCompatPlugin {\n const clientRouteInferenceCache =\n options.clientRouteInferenceCache ?? createClientRouteInferenceCache();\n const workspacePackagesDir = dirname(dirname(dirname(fileURLToPath(import.meta.url))));\n\n return {\n name: \"mreact-router-server-source-transform\",\n setup(buildApi) {\n buildApi.onLoad({ filter: /(?:\\.mreact)?\\.[cm]?[jt]sx$/ }, async (args) => {\n if (args.path.includes(`${sep}node_modules${sep}`)) {\n return undefined;\n }\n\n if (args.path.startsWith(`${workspacePackagesDir}${sep}`)) {\n return undefined;\n }\n\n const source = await readFile(args.path, \"utf8\");\n const contents = await transformServerSourceFile({\n ...options,\n clientRouteInferenceCache,\n filename: args.path,\n source,\n });\n\n return {\n contents,\n loader: \"js\",\n resolveDir: dirname(args.path),\n };\n });\n },\n };\n}\n\nasync function transformServerSourceFile(\n options: ServerSourceTransformOptions & {\n filename: string;\n source: string;\n },\n): Promise<string> {\n const sourceHash = hashText(options.source);\n const artifact = options.serverModules?.get(options.filename)?.[options.serverOutput];\n\n if (artifact !== undefined && artifact.sourceHash === sourceHash) {\n return artifact.code;\n }\n\n const source = options.dev\n ? withFileImportMetaUrl(options.source, options.filename)\n : options.source;\n const transformedSourceHash = source === options.source ? sourceHash : hashText(source);\n const clientRouteInferenceCache =\n options.clientRouteInferenceCache ?? createClientRouteInferenceCache();\n const moduleContext = await compilerModuleContextForSource({\n cache: clientRouteInferenceCache,\n code: source,\n filename: options.filename,\n });\n const clientInference = await inferClientRouteModule({\n cache: clientRouteInferenceCache,\n code: source,\n filename: options.filename,\n moduleContext,\n vitePlugins: options.vitePlugins,\n });\n\n for (const diagnostic of clientInference.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n\n const cacheKey = `${options.serverOutput}\\0${options.dev ? \"dev\" : \"prod\"}\\0${options.filename}\\0${transformedSourceHash}\\0${clientInference.clientBoundaryImports.join(\"\\0\")}\\0${clientInference.clientBoundaryFallbackImports.join(\"\\0\")}\\0${viteDefineCacheKey(options.define)}\\0${vitePluginsCacheKey(options.vitePlugins)}`;\n const cached = readRouterRuntimeCacheEntry(\n serverSourceTransformCache,\n cacheKey,\n serverSourceTransformCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n\n const output = transformCompilerModuleContext({\n code: source,\n clientBoundaryImports: clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,\n dev: options.dev,\n filename: options.filename,\n moduleContext,\n serverEscape: nativeEscapeTransform,\n serverOutput: options.serverOutput,\n target: \"server\",\n });\n const fatalDiagnostics = output.diagnostics.filter(\n (diagnostic) => diagnostic.code !== \"MR_UNSUPPORTED_SERVER_EVENT_HANDLER\",\n );\n\n if (fatalDiagnostics.length > 0) {\n throw new Error(\n fatalDiagnostics\n .map((diagnostic) => formatDiagnostic(options.filename, diagnostic))\n .join(\"\\n\"),\n );\n }\n\n setBoundedCacheEntry(\n serverSourceTransformCache,\n cacheKey,\n output.code,\n maxServerSourceTransformCacheEntries,\n serverSourceTransformCacheCounters,\n );\n\n return output.code;\n}\n\nfunction withFileImportMetaUrl(source: string, filename: string): string {\n if (!source.includes(\"import.meta.url\")) {\n return source;\n }\n\n return source.replaceAll(\"import.meta.url\", JSON.stringify(pathToFileURL(filename).href));\n}\n\nfunction withNodeRequireShimForEsmBundle(options: {\n code: string;\n filename: string;\n requireBaseDir?: string | undefined;\n}): string {\n const requireBaseUrl = pathToFileURL(\n join(options.requireBaseDir ?? process.cwd(), \"__mreact_require_shim.cjs\"),\n ).href;\n const rewritten = rewriteNodeModulesExternalImports(options.code);\n const code = rewritten.code.replaceAll(\n \"createRequire(import.meta.url)\",\n `createRequire(${JSON.stringify(requireBaseUrl)})`,\n );\n const needsFilenameGlobalShim = needsCommonJsFilenameGlobalShim(options.code);\n const needsRequireShim = needsNodeRequireShim(options.code);\n\n if (\n !rewritten.needsNativeImport &&\n !rewritten.needsRequire &&\n !needsFilenameGlobalShim &&\n !needsRequireShim\n ) {\n return code;\n }\n\n return `${rewritten.needsNativeImport ? 'const __mreactNativeImport = Function(\"specifier\", \"return import(specifier)\");\\n' : \"\"}${\n needsFilenameGlobalShim\n ? `const __filename = ${JSON.stringify(options.filename)};\nconst __dirname = ${JSON.stringify(dirname(options.filename))};\n`\n : \"\"\n }${\n rewritten.needsRequire || needsRequireShim\n ? `import { createRequire as __mreactCreateRequire } from \"node:module\";\nconst __mreactRequire = __mreactCreateRequire(${JSON.stringify(requireBaseUrl)});\nconst require = __mreactRequire;\n`\n : \"\"\n }${code}`;\n}\n\nfunction needsCommonJsFilenameGlobalShim(code: string): boolean {\n return /\\b__(?:filename|dirname)\\b/.test(code);\n}\n\nfunction needsNodeRequireShim(code: string): boolean {\n return code.includes(\"Dynamic require of\") && /\\b__require\\s*=/.test(code);\n}\n\nfunction rewriteNodeModulesExternalImports(code: string): {\n code: string;\n needsNativeImport: boolean;\n needsRequire: boolean;\n} {\n const nativeImportBindings = new Map<string, string>();\n let needsNativeImport = false;\n let needsRequire = false;\n let importIndex = 0;\n const importFromPattern = /^import\\s+([^;\\n]+?)\\s+from\\s+([\"'])([^\"']+)\\2;?$/gm;\n const sideEffectImportPattern = /^import\\s+([\"'])([^\"']+)\\1;?$/gm;\n const withRewrittenImports = code.replace(\n importFromPattern,\n (statement: string, clause: string, _quote: string, specifier: string) => {\n const file = nodeModulesExternalImportPath(specifier);\n\n if (file === undefined || !isNodeImportableModuleFile(file)) {\n return statement;\n }\n\n if (isNodeCommonJsModuleFile(file)) {\n needsRequire = true;\n const requireExpression = `__mreactRequire(${JSON.stringify(file)})`;\n return commonJsImportClauseToRequireStatements(\n clause.trim(),\n requireExpression,\n importIndex++,\n );\n }\n\n needsNativeImport = true;\n const rewritten = esmImportClauseToNativeImportStatements(\n clause.trim(),\n specifier,\n importIndex++,\n );\n for (const [name, replacement] of rewritten.bindings) {\n nativeImportBindings.set(name, replacement);\n }\n\n return rewritten.code;\n },\n );\n const rewrittenCode = withRewrittenImports.replace(\n sideEffectImportPattern,\n (statement: string, _quote: string, specifier: string) => {\n const file = nodeModulesExternalImportPath(specifier);\n\n if (file === undefined || !isNodeImportableModuleFile(file)) {\n return statement;\n }\n\n if (isNodeCommonJsModuleFile(file)) {\n needsRequire = true;\n return `__mreactRequire(${JSON.stringify(file)});`;\n }\n\n needsNativeImport = true;\n return `await __mreactNativeImport(${JSON.stringify(specifier)});`;\n },\n );\n\n return {\n code:\n nativeImportBindings.size === 0\n ? rewrittenCode\n : replaceImportedIdentifiers(rewrittenCode, nativeImportBindings),\n needsNativeImport,\n needsRequire,\n };\n}\n\nfunction nodeModulesExternalImportPath(specifier: string): string | undefined {\n const file = externalImportFilePath(specifier);\n\n if (file === undefined || !isNodeModulesPath(file)) {\n return undefined;\n }\n\n return file;\n}\n\nfunction externalImportFilePath(specifier: string): string | undefined {\n if (specifier.startsWith(\"file://\")) {\n try {\n return fileURLToPath(specifier);\n } catch {\n return undefined;\n }\n }\n\n return isAbsolute(specifier) ? specifier : undefined;\n}\n\nfunction isNodeModulesPath(file: string): boolean {\n return file.split(sep).includes(\"node_modules\");\n}\n\nfunction isNodeImportableModuleFile(file: string): boolean {\n const extension = extname(file);\n\n return (\n extension === \".cjs\" || extension === \".mjs\" || extension === \".js\" || extension === \".node\"\n );\n}\n\nfunction isNodeCommonJsModuleFile(file: string): boolean {\n const extension = extname(file);\n\n if (extension === \".cjs\" || extension === \".cts\" || extension === \".node\") {\n return true;\n }\n\n if (extension === \".mjs\" || extension === \".mts\" || extension !== \".js\") {\n return false;\n }\n\n return nearestPackageType(file) !== \"module\";\n}\n\nfunction nearestPackageType(file: string): string | undefined {\n let directory = dirname(file);\n\n while (true) {\n const packageJson = join(directory, \"package.json\");\n\n if (packageTypeCache.has(packageJson)) {\n return packageTypeCache.get(packageJson);\n }\n\n if (existsSync(packageJson)) {\n const type = readPackageType(packageJson);\n packageTypeCache.set(packageJson, type);\n return type;\n }\n\n const parent = dirname(directory);\n\n if (parent === directory) {\n return undefined;\n }\n\n directory = parent;\n }\n}\n\nfunction readPackageType(packageJson: string): string | undefined {\n try {\n const parsed = JSON.parse(readFileSync(packageJson, \"utf8\")) as { type?: unknown };\n\n return typeof parsed.type === \"string\" ? parsed.type : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction commonJsImportClauseToRequireStatements(\n clause: string,\n requireExpression: string,\n importIndex: number,\n): string {\n if (clause.startsWith(\"* as \")) {\n return `const ${clause.slice(5).trim()} = ${requireExpression};`;\n }\n\n if (clause.startsWith(\"{\")) {\n return namedCommonJsImportsToRequireStatements(clause, requireExpression);\n }\n\n const commaIndex = clause.indexOf(\",\");\n\n if (commaIndex === -1) {\n return `const ${clause} = ${requireExpression};`;\n }\n\n const defaultName = clause.slice(0, commaIndex).trim();\n const namedOrNamespace = clause.slice(commaIndex + 1).trim();\n const temporaryName = `__mreactExternalCommonJs${importIndex}`;\n const statements = [\n `const ${temporaryName} = ${requireExpression};`,\n `const ${defaultName} = ${temporaryName};`,\n ];\n\n if (namedOrNamespace.startsWith(\"* as \")) {\n statements.push(`const ${namedOrNamespace.slice(5).trim()} = ${temporaryName};`);\n } else if (namedOrNamespace.startsWith(\"{\")) {\n statements.push(namedCommonJsImportsToRequireStatements(namedOrNamespace, temporaryName));\n }\n\n return statements.join(\"\\n\");\n}\n\nfunction esmImportClauseToNativeImportStatements(\n clause: string,\n specifier: string,\n importIndex: number,\n): { bindings: Map<string, string>; code: string } {\n const bindings = new Map<string, string>();\n const temporaryName = `__mreactExternalModule${importIndex}`;\n const statements = [\n `const ${temporaryName} = await __mreactNativeImport(${JSON.stringify(specifier)});`,\n ];\n\n if (clause.startsWith(\"* as \")) {\n statements.push(`const ${clause.slice(5).trim()} = ${temporaryName};`);\n } else if (clause.startsWith(\"{\")) {\n collectNamedEsmImportBindings(clause, temporaryName, bindings);\n } else {\n const commaIndex = clause.indexOf(\",\");\n\n if (commaIndex === -1) {\n bindings.set(clause, `${temporaryName}.default`);\n } else {\n const defaultName = clause.slice(0, commaIndex).trim();\n const namedOrNamespace = clause.slice(commaIndex + 1).trim();\n bindings.set(defaultName, `${temporaryName}.default`);\n\n if (namedOrNamespace.startsWith(\"* as \")) {\n statements.push(`const ${namedOrNamespace.slice(5).trim()} = ${temporaryName};`);\n } else if (namedOrNamespace.startsWith(\"{\")) {\n collectNamedEsmImportBindings(namedOrNamespace, temporaryName, bindings);\n }\n }\n }\n\n return { bindings, code: statements.join(\"\\n\") };\n}\n\nfunction collectNamedEsmImportBindings(\n clause: string,\n moduleName: string,\n bindings: Map<string, string>,\n): void {\n for (const binding of namedImportBindings(clause)) {\n const replacement =\n binding.imported === \"default\"\n ? `${moduleName}.default`\n : `${moduleName}[${JSON.stringify(binding.imported)}]`;\n bindings.set(binding.local, replacement);\n }\n}\n\nfunction namedCommonJsImportsToRequireStatements(clause: string, sourceExpression: string): string {\n const objectBindings: string[] = [];\n const statements: string[] = [];\n\n for (const binding of namedImportBindings(clause)) {\n if (binding.imported === \"default\") {\n statements.push(`const ${binding.local} = ${sourceExpression};`);\n } else if (binding.imported === binding.local) {\n objectBindings.push(binding.imported);\n } else {\n objectBindings.push(`${JSON.stringify(binding.imported)}: ${binding.local}`);\n }\n }\n\n if (objectBindings.length > 0) {\n statements.unshift(`const { ${objectBindings.join(\", \")} } = ${sourceExpression};`);\n }\n\n return statements.join(\"\\n\");\n}\n\nfunction namedImportBindings(clause: string): Array<{ imported: string; local: string }> {\n return clause\n .slice(1, -1)\n .split(\",\")\n .map((binding) => binding.trim())\n .filter((binding) => binding.length > 0)\n .map((binding) => {\n const alias = binding.match(/^(.+?)\\s+as\\s+(.+)$/);\n const imported = alias?.[1]?.trim() ?? binding;\n const local = alias?.[2]?.trim() ?? binding;\n\n return { imported, local };\n });\n}\n\nfunction replaceImportedIdentifiers(code: string, bindings: ReadonlyMap<string, string>): string {\n let rewritten = \"\";\n let index = 0;\n\n while (index < code.length) {\n const char = code[index];\n const next = code[index + 1];\n\n if (char === '\"' || char === \"'\") {\n const end = quotedStringEnd(code, index, char);\n rewritten += code.slice(index, end);\n index = end;\n continue;\n }\n\n if (char === \"`\") {\n const end = templateLiteralEnd(code, index);\n rewritten += code.slice(index, end);\n index = end;\n continue;\n }\n\n if (char === \"/\" && next === \"/\") {\n const end = lineCommentEnd(code, index);\n rewritten += code.slice(index, end);\n index = end;\n continue;\n }\n\n if (char === \"/\" && next === \"*\") {\n const end = blockCommentEnd(code, index);\n rewritten += code.slice(index, end);\n index = end;\n continue;\n }\n\n if (isIdentifierStart(char)) {\n const end = identifierEnd(code, index);\n const identifier = code.slice(index, end);\n const replacement = bindings.get(identifier);\n\n if (replacement !== undefined && shouldReplaceImportedIdentifier(code, index, end)) {\n rewritten += importedIdentifierReplacement(code, index, end, identifier, replacement);\n } else {\n rewritten += identifier;\n }\n\n index = end;\n continue;\n }\n\n rewritten += char;\n index += 1;\n }\n\n return rewritten;\n}\n\nfunction shouldReplaceImportedIdentifier(code: string, start: number, end: number): boolean {\n const previous = previousNonWhitespace(code, start);\n const next = nextNonWhitespace(code, end);\n\n return previous !== \".\" && previous !== \"?\" && next !== \":\";\n}\n\nfunction importedIdentifierReplacement(\n code: string,\n start: number,\n end: number,\n identifier: string,\n replacement: string,\n): string {\n const previous = previousNonWhitespace(code, start);\n const next = nextNonWhitespace(code, end);\n\n return (previous === \"{\" || previous === \",\") && (next === \",\" || next === \"}\")\n ? `${identifier}: ${replacement}`\n : replacement;\n}\n\nfunction previousNonWhitespace(code: string, index: number): string | undefined {\n for (let position = index - 1; position >= 0; position -= 1) {\n if (!/\\s/u.test(code[position] ?? \"\")) {\n return code[position];\n }\n }\n\n return undefined;\n}\n\nfunction nextNonWhitespace(code: string, index: number): string | undefined {\n for (let position = index; position < code.length; position += 1) {\n if (!/\\s/u.test(code[position] ?? \"\")) {\n return code[position];\n }\n }\n\n return undefined;\n}\n\nfunction quotedStringEnd(code: string, start: number, quote: string): number {\n for (let index = start + 1; index < code.length; index += 1) {\n if (code[index] === \"\\\\\") {\n index += 1;\n } else if (code[index] === quote) {\n return index + 1;\n }\n }\n\n return code.length;\n}\n\nfunction templateLiteralEnd(code: string, start: number): number {\n for (let index = start + 1; index < code.length; index += 1) {\n if (code[index] === \"\\\\\") {\n index += 1;\n } else if (code[index] === \"`\") {\n return index + 1;\n }\n }\n\n return code.length;\n}\n\nfunction lineCommentEnd(code: string, start: number): number {\n const end = code.indexOf(\"\\n\", start + 2);\n\n return end === -1 ? code.length : end;\n}\n\nfunction blockCommentEnd(code: string, start: number): number {\n const end = code.indexOf(\"*/\", start + 2);\n\n return end === -1 ? code.length : end + 2;\n}\n\nfunction identifierEnd(code: string, start: number): number {\n let end = start + 1;\n\n while (end < code.length && isIdentifierPart(code[end] ?? \"\")) {\n end += 1;\n }\n\n return end;\n}\n\nfunction isIdentifierStart(char: string | undefined): boolean {\n return char !== undefined && /[A-Za-z_$]/u.test(char);\n}\n\nfunction isIdentifierPart(char: string): boolean {\n return /[A-Za-z0-9_$]/u.test(char);\n}\n\nfunction workspacePackageResolutionPlugin() {\n const currentDir = dirname(fileURLToPath(import.meta.url));\n const packageRoot = dirname(currentDir);\n const sourceOrDist = currentDir.endsWith(`${sep}dist`) ? \"dist/index.js\" : \"src/index.ts\";\n const appRouterGlobalsSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/app-router-globals.js\"\n : \"src/app-router-globals.ts\";\n const linkSourceOrDist = currentDir.endsWith(`${sep}dist`) ? \"dist/link.js\" : \"src/link.ts\";\n const nativeEscapeSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/native-escape.js\"\n : \"src/native-escape.ts\";\n const navigationStateSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/navigation-state.js\"\n : \"src/navigation-state.ts\";\n const sessionSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/session.js\"\n : \"src/session.ts\";\n const streamListSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/stream-list.js\"\n : \"src/stream-list.ts\";\n const packageFile = (\n monorepoDir: string,\n packageName: string,\n entry: string,\n specifier: string,\n resolveDir?: string | undefined,\n ): string =>\n resolveWorkspacePackageFile({\n currentFileUrl: import.meta.url,\n entry,\n monorepoDir,\n packageName,\n resolveDir,\n specifier,\n });\n const entries = new Map<string, { entry: string; monorepoDir: string; packageName: string }>([\n [\n \"react\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"react-dom\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"react-dom/client\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"react-dom/server\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"react/jsx-dev-runtime\",\n {\n entry: \"jsx-dev-runtime\",\n monorepoDir: \"react-compat\",\n packageName: \"@reckona/mreact-compat\",\n },\n ],\n [\n \"react/jsx-runtime\",\n { entry: \"jsx-runtime\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\"@reckona/mreact\", { entry: \"index\", monorepoDir: \"react\", packageName: \"@reckona/mreact\" }],\n [\n \"@reckona/mreact/jsx-dev-runtime\",\n { entry: \"jsx-dev-runtime\", monorepoDir: \"react\", packageName: \"@reckona/mreact\" },\n ],\n [\n \"@reckona/mreact/jsx-runtime\",\n { entry: \"jsx-runtime\", monorepoDir: \"react\", packageName: \"@reckona/mreact\" },\n ],\n [\n \"@reckona/mreact-auth\",\n { entry: \"index\", monorepoDir: \"auth\", packageName: \"@reckona/mreact-auth\" },\n ],\n [\n \"@reckona/mreact-compat\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/event-priority\",\n {\n entry: \"event-priority\",\n monorepoDir: \"react-compat\",\n packageName: \"@reckona/mreact-compat\",\n },\n ],\n [\n \"@reckona/mreact-compat/flight\",\n { entry: \"flight\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/hooks\",\n { entry: \"hooks-entry\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/internal\",\n { entry: \"internal\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/jsx-dev-runtime\",\n {\n entry: \"jsx-dev-runtime\",\n monorepoDir: \"react-compat\",\n packageName: \"@reckona/mreact-compat\",\n },\n ],\n [\n \"@reckona/mreact-compat/jsx-runtime\",\n { entry: \"jsx-runtime\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/scheduler\",\n { entry: \"scheduler\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-reactive-core\",\n {\n entry: \"index\",\n monorepoDir: \"reactive-core\",\n packageName: \"@reckona/mreact-reactive-core\",\n },\n ],\n [\n \"@reckona/mreact-query\",\n { entry: \"index\", monorepoDir: \"query\", packageName: \"@reckona/mreact-query\" },\n ],\n [\n \"@reckona/mreact-server\",\n { entry: \"index\", monorepoDir: \"server\", packageName: \"@reckona/mreact-server\" },\n ],\n ]);\n const routerEntries = new Map([\n [\"@reckona/mreact-router\", join(packageRoot, sourceOrDist)],\n [\"@reckona/mreact-router/app-router-globals\", join(packageRoot, appRouterGlobalsSourceOrDist)],\n [\"@reckona/mreact-router/link\", join(packageRoot, linkSourceOrDist)],\n [\"@reckona/mreact-router/native-escape\", join(packageRoot, nativeEscapeSourceOrDist)],\n [\"@reckona/mreact-router/navigation-state\", join(packageRoot, navigationStateSourceOrDist)],\n [\"@reckona/mreact-router/session\", join(packageRoot, sessionSourceOrDist)],\n [\"@reckona/mreact-router/stream-list\", join(packageRoot, streamListSourceOrDist)],\n [\"@reckona/mreact-router/internal/native-escape\", join(packageRoot, nativeEscapeSourceOrDist)],\n [\"@reckona/mreact-router/internal/session\", join(packageRoot, sessionSourceOrDist)],\n ]);\n\n return {\n name: \"mreact-router-workspace-packages\",\n setup(buildApi: Pick<RouterCompatBuildApi, \"onResolve\">) {\n buildApi.onResolve(\n {\n filter:\n /^(?:react(?:\\/jsx-(?:dev-)?runtime)?|react-dom(?:\\/(?:client|server))?|@reckona\\/(?:mreact(?:\\/(?:jsx-dev-runtime|jsx-runtime))?|mreact-(?:auth|query|reactive-core|server|router|compat)(?:\\/(?:event-priority|flight|internal|jsx-dev-runtime|jsx-runtime|scheduler|app-router-globals|link|native-escape|navigation-state|session|stream-list|internal\\/native-escape|internal\\/session))?))$/,\n },\n (args) => {\n const routerPath = routerEntries.get(args.path);\n\n if (routerPath !== undefined) {\n return { path: routerPath };\n }\n\n const entry = entries.get(args.path);\n\n return entry === undefined\n ? undefined\n : {\n path: packageFile(\n entry.monorepoDir,\n entry.packageName,\n entry.entry,\n args.path,\n args.resolveDir,\n ),\n };\n },\n );\n },\n };\n}\n\nfunction setBoundedCacheEntry<K, V>(\n cache: Map<K, V>,\n key: K,\n value: V,\n maxEntries: number,\n counters: RouterRuntimeCacheCounters,\n): void {\n if (cache.size >= maxEntries) {\n const oldestKey = cache.keys().next().value as K | undefined;\n\n if (oldestKey !== undefined) {\n cache.delete(oldestKey);\n counters.evictions += 1;\n }\n }\n\n cache.set(key, value);\n}\n\nfunction hashText(text: string): string {\n return createHash(\"sha256\").update(text).digest(\"hex\").slice(0, 16);\n}\n"]}
1
+ {"version":3,"file":"module-runner.js","sourceRoot":"","sources":["../src/module-runner.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { dirname, extname, isAbsolute, join, sep } from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { formatDiagnostic } from \"@reckona/mreact-compiler\";\nimport type { ServerOutputMode } from \"@reckona/mreact-shared/compiler-contract\";\nimport { transformCompilerModuleContext } from \"@reckona/mreact-compiler/internal\";\nimport {\n createRunnableDevEnvironment,\n mergeConfig,\n resolveConfig,\n type InlineConfig,\n type PluginOption,\n type RunnableDevEnvironment,\n type UserConfig,\n} from \"vite\";\nimport { resolveWorkspacePackageFile } from \"./workspace-packages.js\";\nimport {\n bundleRouterModule,\n type RouterCompatBuildApi,\n type RouterCompatPlugin,\n} from \"./bundle-pipeline.js\";\nimport { resolveRouterCacheLimit } from \"./cache-config.js\";\nimport type { BuiltServerModuleArtifact } from \"./build.js\";\nimport {\n createRouterRuntimeCacheCounters,\n readRouterRuntimeCacheEntry,\n routerRuntimeCacheStat,\n type RouterRuntimeCacheCounters,\n type RouterRuntimeCacheStat,\n} from \"./cache-stats.js\";\nimport {\n compilerModuleContextForSource,\n createClientRouteInferenceCache,\n formatClientRouteInferenceDiagnostic,\n inferClientRouteModule,\n type ClientRouteInferenceCache,\n} from \"./client-route-inference.js\";\nimport { viteDefineCacheKey, vitePluginsCacheKey } from \"./vite-plugin-cache-key.js\";\n\nconst runnerConfig = {\n configFile: false,\n logLevel: \"silent\",\n} satisfies InlineConfig;\nconst nativeEscapeTransform = {\n batchImportName: \"escapeHtmlBatch\",\n batchImportSource: \"@reckona/mreact-router/native-escape\",\n} as const;\nconst sourceModuleCache = new Map<string, Promise<unknown>>();\nconst maxSourceModuleCacheEntries = resolveRouterCacheLimit(\"SOURCE_MODULE\", 512);\nconst sourceModuleCacheCounters = createRouterRuntimeCacheCounters();\nconst serverSourceTransformCache = new Map<string, string>();\nconst maxServerSourceTransformCacheEntries = resolveRouterCacheLimit(\n \"SERVER_SOURCE_TRANSFORM\",\n 512,\n);\nconst serverSourceTransformCacheCounters = createRouterRuntimeCacheCounters();\nconst packageTypeCache = new Map<string, string | undefined>();\nconst runnerVirtualModulePrefix = \"virtual:mreact-router-source/\";\nconst runnerVirtualModules = new Map<string, string>();\nlet sharedRunnerEnvironment: Promise<RunnableDevEnvironment> | undefined;\nlet fileImportVersion = 0;\n\nexport function routerModuleRunnerRuntimeCacheStats(): RouterRuntimeCacheStat[] {\n return [\n routerRuntimeCacheStat(\n \"source-module\",\n sourceModuleCache,\n maxSourceModuleCacheEntries,\n sourceModuleCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"server-source-transform\",\n serverSourceTransformCache,\n maxServerSourceTransformCacheEntries,\n serverSourceTransformCacheCounters,\n ),\n ];\n}\n\nexport async function importAppRouterSourceModule<T>(options: {\n cacheKey?: string | undefined;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAppSourceModuleDirs?: readonly string[] | undefined;\n label: string;\n plugins?: readonly RouterCompatPlugin[] | undefined;\n resolveDir?: string | undefined;\n root?: string | undefined;\n serverSourceTransform?: ServerSourceTransformOptions | undefined;\n sourcefile?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<T> {\n if (options.cacheKey !== undefined) {\n const cacheKey = options.cacheKey;\n const cached = readRouterRuntimeCacheEntry(\n sourceModuleCache,\n cacheKey,\n sourceModuleCacheCounters,\n ) as Promise<T> | undefined;\n\n if (cached !== undefined) {\n return cached;\n }\n\n const loaded = importAppRouterSourceModuleWithoutCache<T>(options).catch((error) => {\n sourceModuleCache.delete(cacheKey);\n throw error;\n });\n setBoundedCacheEntry(\n sourceModuleCache,\n cacheKey,\n loaded,\n maxSourceModuleCacheEntries,\n sourceModuleCacheCounters,\n );\n\n return loaded;\n }\n\n return importAppRouterSourceModuleWithoutCache(options);\n}\n\nasync function importAppRouterSourceModuleWithoutCache<T>(options: {\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAppSourceModuleDirs?: readonly string[] | undefined;\n label: string;\n plugins?: readonly RouterCompatPlugin[] | undefined;\n resolveDir?: string | undefined;\n root?: string | undefined;\n serverSourceTransform?: ServerSourceTransformOptions | undefined;\n sourcefile?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<T> {\n const code =\n options.resolveDir === undefined ? options.code : await bundleAppRouterSourceModule(options);\n const sourcefile = options.sourcefile ?? join(options.resolveDir ?? process.cwd(), \"module.js\");\n const executableCode = withNodeRequireShimForEsmBundle({\n code: withFileImportMetaUrl(code, sourcefile),\n filename: sourcefile,\n requireBaseDir:\n options.resolveDir ??\n (options.sourcefile === undefined ? undefined : dirname(options.sourcefile)),\n });\n const encodedLabel = encodeURIComponent(options.label.replace(/[^A-Za-z0-9_$.-]/g, \"-\"));\n const publicId = `${runnerVirtualModulePrefix}${encodedLabel}-${Date.now()}-${Math.random()}.mjs`;\n runnerVirtualModules.set(publicId, executableCode);\n\n try {\n return await importWithSharedRunner<T>(publicId, { invalidateEntry: true });\n } finally {\n runnerVirtualModules.delete(publicId);\n }\n}\n\nexport async function importAppRouterFileModule<T>(file: string): Promise<T> {\n fileImportVersion += 1;\n const url = `${pathToFileURL(file).href}?t=${Date.now()}${fileImportVersion}`;\n\n return await importWithSharedRunner<T>(url, { invalidateEntry: true });\n}\n\nasync function importWithSharedRunner<T>(\n moduleId: string,\n options?: { invalidateEntry?: boolean | undefined },\n): Promise<T> {\n const environment = await getSharedRunnerEnvironment();\n const module = (await environment.runner.import(moduleId)) as T;\n\n if (options?.invalidateEntry === true) {\n const evaluatedModule =\n environment.runner.evaluatedModules.getModuleByUrl(moduleId) ??\n environment.runner.evaluatedModules.getModuleById(moduleId) ??\n environment.runner.evaluatedModules.getModuleById(`\\0${moduleId}`);\n\n if (evaluatedModule !== undefined) {\n environment.runner.evaluatedModules.invalidateModule(evaluatedModule);\n }\n }\n\n return module;\n}\n\nasync function getSharedRunnerEnvironment(): Promise<RunnableDevEnvironment> {\n if (sharedRunnerEnvironment !== undefined) {\n return await sharedRunnerEnvironment;\n }\n\n sharedRunnerEnvironment = createSharedRunnerEnvironment().catch((error) => {\n sharedRunnerEnvironment = undefined;\n throw error;\n });\n\n return await sharedRunnerEnvironment;\n}\n\nasync function createSharedRunnerEnvironment(): Promise<RunnableDevEnvironment> {\n const config = await resolveConfig(\n mergeConfig(runnerConfig, {\n cacheDir: process.cwd(),\n configFile: false,\n envDir: false,\n environments: {\n mreact_router: {\n consumer: \"server\",\n dev: { moduleRunnerTransform: true },\n resolve: {\n conditions: [\"node\"],\n external: true,\n mainFields: [],\n },\n },\n },\n plugins: [\n {\n name: \"mreact-router-source-module\",\n resolveId(source) {\n return runnerVirtualModules.has(source) ? `\\0${source}` : undefined;\n },\n load(id) {\n const source = id.startsWith(\"\\0\") ? id.slice(1) : id;\n\n return source.startsWith(runnerVirtualModulePrefix)\n ? runnerVirtualModules.get(source)\n : undefined;\n },\n },\n ],\n } satisfies InlineConfig),\n \"serve\",\n );\n const environment = createRunnableDevEnvironment(\"mreact_router\", config, {\n hot: false,\n runnerOptions: { hmr: { logger: false } },\n });\n await environment.init();\n\n return environment;\n}\n\nexport async function importAppRouterBuiltFileModule<T>(options: {\n cacheKey?: string | undefined;\n file: string;\n}): Promise<T> {\n if (options.cacheKey !== undefined) {\n const cacheKey = options.cacheKey;\n const cached = readRouterRuntimeCacheEntry(\n sourceModuleCache,\n cacheKey,\n sourceModuleCacheCounters,\n ) as Promise<T> | undefined;\n\n if (cached !== undefined) {\n return cached;\n }\n\n const loaded = import(pathToFileURL(options.file).href).catch((error) => {\n sourceModuleCache.delete(cacheKey);\n throw error;\n }) as Promise<T>;\n setBoundedCacheEntry(\n sourceModuleCache,\n cacheKey,\n loaded,\n maxSourceModuleCacheEntries,\n sourceModuleCacheCounters,\n );\n\n return loaded;\n }\n\n return (await import(pathToFileURL(options.file).href)) as T;\n}\n\n\nexport const COMPAT_VENDOR_PLACEHOLDER_PREFIX = \"mreact-compat-vendor:\";\n\n// Specifier-to-dist-entry table for the react-compat server family. The\n// per-route externalization plugin and the shared vendor chunk build must\n// agree exactly with the workspace alias table above, so both derive from\n// this map.\nconst compatVendorSpecifierEntries = new Map<string, string>([\n [\"react\", \"index\"],\n [\"react-dom\", \"index\"],\n [\"react-dom/client\", \"index\"],\n [\"react-dom/server\", \"index\"],\n [\"react/jsx-dev-runtime\", \"jsx-dev-runtime\"],\n [\"react/jsx-runtime\", \"jsx-runtime\"],\n [\"@reckona/mreact-compat\", \"index\"],\n [\"@reckona/mreact-compat/event-priority\", \"event-priority\"],\n [\"@reckona/mreact-compat/flight\", \"flight\"],\n [\"@reckona/mreact-compat/hooks\", \"hooks-entry\"],\n [\"@reckona/mreact-compat/internal\", \"internal\"],\n [\"@reckona/mreact-compat/jsx-dev-runtime\", \"jsx-dev-runtime\"],\n [\"@reckona/mreact-compat/jsx-runtime\", \"jsx-runtime\"],\n [\"@reckona/mreact-compat/scheduler\", \"scheduler\"],\n]);\n\nconst compatVendorEntrySpecifiers = new Map<string, string>([\n [\"index\", \"@reckona/mreact-compat\"],\n [\"jsx-runtime\", \"@reckona/mreact-compat/jsx-runtime\"],\n [\"jsx-dev-runtime\", \"@reckona/mreact-compat/jsx-dev-runtime\"],\n [\"hooks-entry\", \"@reckona/mreact-compat/hooks\"],\n [\"scheduler\", \"@reckona/mreact-compat/scheduler\"],\n [\"event-priority\", \"@reckona/mreact-compat/event-priority\"],\n [\"flight\", \"@reckona/mreact-compat/flight\"],\n [\"internal\", \"@reckona/mreact-compat/internal\"],\n]);\n\nexport function compatVendorEntryNames(): readonly string[] {\n return [...compatVendorEntrySpecifiers.keys()];\n}\n\n// Cheap build-time prefilter. A false positive only costs one unused vendor\n// chunk build; a false negative keeps the per-route inlining fallback.\nconst compatVendorSpecifierPattern =\n /[\"'](?:react|react-dom|react\\/jsx(?:-dev)?-runtime|react-dom\\/(?:client|server)|@reckona\\/mreact-compat(?:\\/[\\w-]+)?)[\"']/u;\n\nexport function sourceReferencesCompatVendorSpecifier(source: string): boolean {\n return compatVendorSpecifierPattern.test(source);\n}\n\nexport function resolveCompatVendorEntryFiles(resolveDir?: string): Map<string, string> {\n const files = new Map<string, string>();\n\n for (const [entry, specifier] of compatVendorEntrySpecifiers) {\n files.set(\n entry,\n resolveWorkspacePackageFile({\n currentFileUrl: import.meta.url,\n entry,\n monorepoDir: \"react-compat\",\n packageName: \"@reckona/mreact-compat\",\n resolveDir,\n specifier,\n }),\n );\n }\n\n return files;\n}\n\n// Marks every compat-family import as external with a deterministic\n// placeholder specifier; writeServerModuleArtifactFiles later rewrites the\n// placeholders to relative paths into the emitted shared vendor chunks.\nexport function compatVendorExternalizePlugin(): RouterCompatPlugin {\n return {\n name: \"mreact-compat-vendor-externalize\",\n setup(buildApi) {\n buildApi.onResolve(\n { filter: /^(?:react|react-dom|react\\/.+|react-dom\\/.+|@reckona\\/mreact-compat(?:\\/.+)?)$/u },\n (args) => {\n const entry = compatVendorSpecifierEntries.get(args.path);\n\n return entry === undefined\n ? undefined\n : { external: true, path: `${COMPAT_VENDOR_PLACEHOLDER_PREFIX}${entry}` };\n },\n );\n },\n };\n}\n\nexport async function bundleAppRouterSourceModule(options: {\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAppSourceModuleDirs?: readonly string[] | undefined;\n externalizeCompatVendor?: boolean | undefined;\n label: string;\n plugins?: readonly RouterCompatPlugin[] | undefined;\n resolveDir?: string | undefined;\n root?: string | undefined;\n serverSourceTransform?: ServerSourceTransformOptions | undefined;\n sourcefile?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n code: options.code,\n define: options.define,\n externalizeAppSourceModuleDirs: options.externalizeAppSourceModuleDirs,\n filename: options.sourcefile ?? join(options.resolveDir ?? process.cwd(), \"module.js\"),\n platform: \"node\",\n root: options.root,\n vitePlugins: options.vitePlugins,\n plugins: [\n ...(options.externalizeCompatVendor === true ? [compatVendorExternalizePlugin()] : []),\n workspacePackageResolutionPlugin(),\n ...(options.serverSourceTransform === undefined\n ? []\n : [serverSourceTransformPlugin(options.serverSourceTransform)]),\n ...(options.plugins ?? []),\n ],\n });\n const code = output.code;\n\n if (code === undefined) {\n throw new Error(`Failed to bundle ${options.label} for Vite runner.`);\n }\n\n return code;\n}\n\nexport function fileImportMetaUrlPlugin(): RouterCompatPlugin {\n const workspacePackagesDir = dirname(dirname(dirname(fileURLToPath(import.meta.url))));\n\n return {\n name: \"mreact-router-file-import-meta-url\",\n setup(buildApi) {\n buildApi.onLoad({ filter: /(?:\\.mreact)?\\.[cm]?[jt]sx?$/ }, async (args) => {\n if (\n args.path.includes(`${sep}node_modules${sep}`) ||\n args.path.startsWith(`${workspacePackagesDir}${sep}`)\n ) {\n return undefined;\n }\n\n const source = await readFile(args.path, \"utf8\");\n\n return {\n contents: withFileImportMetaUrl(source, args.path),\n loader: \"js\",\n resolveDir: dirname(args.path),\n };\n });\n },\n };\n}\n\ninterface ServerSourceTransformOptions {\n clientRouteInferenceCache?: ClientRouteInferenceCache | undefined;\n define?: UserConfig[\"define\"] | undefined;\n dev: boolean;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverOutput: ServerOutputMode;\n vitePlugins?: readonly PluginOption[] | undefined;\n}\n\nfunction serverSourceTransformPlugin(options: ServerSourceTransformOptions): RouterCompatPlugin {\n const clientRouteInferenceCache =\n options.clientRouteInferenceCache ?? createClientRouteInferenceCache();\n const workspacePackagesDir = dirname(dirname(dirname(fileURLToPath(import.meta.url))));\n\n return {\n name: \"mreact-router-server-source-transform\",\n setup(buildApi) {\n buildApi.onLoad({ filter: /(?:\\.mreact)?\\.[cm]?[jt]sx$/ }, async (args) => {\n if (args.path.includes(`${sep}node_modules${sep}`)) {\n return undefined;\n }\n\n if (args.path.startsWith(`${workspacePackagesDir}${sep}`)) {\n return undefined;\n }\n\n const source = await readFile(args.path, \"utf8\");\n const contents = await transformServerSourceFile({\n ...options,\n clientRouteInferenceCache,\n filename: args.path,\n source,\n });\n\n return {\n contents,\n loader: \"js\",\n resolveDir: dirname(args.path),\n };\n });\n },\n };\n}\n\nasync function transformServerSourceFile(\n options: ServerSourceTransformOptions & {\n filename: string;\n source: string;\n },\n): Promise<string> {\n const sourceHash = hashText(options.source);\n const artifact = options.serverModules?.get(options.filename)?.[options.serverOutput];\n\n if (artifact !== undefined && artifact.sourceHash === sourceHash) {\n return artifact.code;\n }\n\n const source = options.dev\n ? withFileImportMetaUrl(options.source, options.filename)\n : options.source;\n const transformedSourceHash = source === options.source ? sourceHash : hashText(source);\n const clientRouteInferenceCache =\n options.clientRouteInferenceCache ?? createClientRouteInferenceCache();\n const moduleContext = await compilerModuleContextForSource({\n cache: clientRouteInferenceCache,\n code: source,\n filename: options.filename,\n });\n const clientInference = await inferClientRouteModule({\n cache: clientRouteInferenceCache,\n code: source,\n filename: options.filename,\n moduleContext,\n vitePlugins: options.vitePlugins,\n });\n\n for (const diagnostic of clientInference.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n\n const cacheKey = `${options.serverOutput}\\0${options.dev ? \"dev\" : \"prod\"}\\0${options.filename}\\0${transformedSourceHash}\\0${clientInference.clientBoundaryImports.join(\"\\0\")}\\0${clientInference.clientBoundaryFallbackImports.join(\"\\0\")}\\0${viteDefineCacheKey(options.define)}\\0${vitePluginsCacheKey(options.vitePlugins)}`;\n const cached = readRouterRuntimeCacheEntry(\n serverSourceTransformCache,\n cacheKey,\n serverSourceTransformCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n\n const output = transformCompilerModuleContext({\n code: source,\n clientBoundaryImports: clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,\n dev: options.dev,\n filename: options.filename,\n moduleContext,\n serverEscape: nativeEscapeTransform,\n serverOutput: options.serverOutput,\n target: \"server\",\n });\n const fatalDiagnostics = output.diagnostics.filter(\n (diagnostic) => diagnostic.code !== \"MR_UNSUPPORTED_SERVER_EVENT_HANDLER\",\n );\n\n if (fatalDiagnostics.length > 0) {\n throw new Error(\n fatalDiagnostics\n .map((diagnostic) => formatDiagnostic(options.filename, diagnostic))\n .join(\"\\n\"),\n );\n }\n\n setBoundedCacheEntry(\n serverSourceTransformCache,\n cacheKey,\n output.code,\n maxServerSourceTransformCacheEntries,\n serverSourceTransformCacheCounters,\n );\n\n return output.code;\n}\n\nfunction withFileImportMetaUrl(source: string, filename: string): string {\n if (!source.includes(\"import.meta.url\")) {\n return source;\n }\n\n return source.replaceAll(\"import.meta.url\", JSON.stringify(pathToFileURL(filename).href));\n}\n\nfunction withNodeRequireShimForEsmBundle(options: {\n code: string;\n filename: string;\n requireBaseDir?: string | undefined;\n}): string {\n const requireBaseUrl = pathToFileURL(\n join(options.requireBaseDir ?? process.cwd(), \"__mreact_require_shim.cjs\"),\n ).href;\n const rewritten = rewriteNodeModulesExternalImports(options.code);\n const code = rewritten.code.replaceAll(\n \"createRequire(import.meta.url)\",\n `createRequire(${JSON.stringify(requireBaseUrl)})`,\n );\n const needsFilenameGlobalShim = needsCommonJsFilenameGlobalShim(options.code);\n const needsRequireShim = needsNodeRequireShim(options.code);\n\n if (\n !rewritten.needsNativeImport &&\n !rewritten.needsRequire &&\n !needsFilenameGlobalShim &&\n !needsRequireShim\n ) {\n return code;\n }\n\n return `${rewritten.needsNativeImport ? 'const __mreactNativeImport = Function(\"specifier\", \"return import(specifier)\");\\n' : \"\"}${\n needsFilenameGlobalShim\n ? `const __filename = ${JSON.stringify(options.filename)};\nconst __dirname = ${JSON.stringify(dirname(options.filename))};\n`\n : \"\"\n }${\n rewritten.needsRequire || needsRequireShim\n ? `import { createRequire as __mreactCreateRequire } from \"node:module\";\nconst __mreactRequire = __mreactCreateRequire(${JSON.stringify(requireBaseUrl)});\nconst require = __mreactRequire;\n`\n : \"\"\n }${code}`;\n}\n\nfunction needsCommonJsFilenameGlobalShim(code: string): boolean {\n return /\\b__(?:filename|dirname)\\b/.test(code);\n}\n\nfunction needsNodeRequireShim(code: string): boolean {\n return code.includes(\"Dynamic require of\") && /\\b__require\\s*=/.test(code);\n}\n\nfunction rewriteNodeModulesExternalImports(code: string): {\n code: string;\n needsNativeImport: boolean;\n needsRequire: boolean;\n} {\n const nativeImportBindings = new Map<string, string>();\n let needsNativeImport = false;\n let needsRequire = false;\n let importIndex = 0;\n const importFromPattern = /^import\\s+([^;\\n]+?)\\s+from\\s+([\"'])([^\"']+)\\2;?$/gm;\n const sideEffectImportPattern = /^import\\s+([\"'])([^\"']+)\\1;?$/gm;\n const withRewrittenImports = code.replace(\n importFromPattern,\n (statement: string, clause: string, _quote: string, specifier: string) => {\n const file = nodeModulesExternalImportPath(specifier);\n\n if (file === undefined || !isNodeImportableModuleFile(file)) {\n return statement;\n }\n\n if (isNodeCommonJsModuleFile(file)) {\n needsRequire = true;\n const requireExpression = `__mreactRequire(${JSON.stringify(file)})`;\n return commonJsImportClauseToRequireStatements(\n clause.trim(),\n requireExpression,\n importIndex++,\n );\n }\n\n needsNativeImport = true;\n const rewritten = esmImportClauseToNativeImportStatements(\n clause.trim(),\n specifier,\n importIndex++,\n );\n for (const [name, replacement] of rewritten.bindings) {\n nativeImportBindings.set(name, replacement);\n }\n\n return rewritten.code;\n },\n );\n const rewrittenCode = withRewrittenImports.replace(\n sideEffectImportPattern,\n (statement: string, _quote: string, specifier: string) => {\n const file = nodeModulesExternalImportPath(specifier);\n\n if (file === undefined || !isNodeImportableModuleFile(file)) {\n return statement;\n }\n\n if (isNodeCommonJsModuleFile(file)) {\n needsRequire = true;\n return `__mreactRequire(${JSON.stringify(file)});`;\n }\n\n needsNativeImport = true;\n return `await __mreactNativeImport(${JSON.stringify(specifier)});`;\n },\n );\n\n return {\n code:\n nativeImportBindings.size === 0\n ? rewrittenCode\n : replaceImportedIdentifiers(rewrittenCode, nativeImportBindings),\n needsNativeImport,\n needsRequire,\n };\n}\n\nfunction nodeModulesExternalImportPath(specifier: string): string | undefined {\n const file = externalImportFilePath(specifier);\n\n if (file === undefined || !isNodeModulesPath(file)) {\n return undefined;\n }\n\n return file;\n}\n\nfunction externalImportFilePath(specifier: string): string | undefined {\n if (specifier.startsWith(\"file://\")) {\n try {\n return fileURLToPath(specifier);\n } catch {\n return undefined;\n }\n }\n\n return isAbsolute(specifier) ? specifier : undefined;\n}\n\nfunction isNodeModulesPath(file: string): boolean {\n return file.split(sep).includes(\"node_modules\");\n}\n\nfunction isNodeImportableModuleFile(file: string): boolean {\n const extension = extname(file);\n\n return (\n extension === \".cjs\" || extension === \".mjs\" || extension === \".js\" || extension === \".node\"\n );\n}\n\nfunction isNodeCommonJsModuleFile(file: string): boolean {\n const extension = extname(file);\n\n if (extension === \".cjs\" || extension === \".cts\" || extension === \".node\") {\n return true;\n }\n\n if (extension === \".mjs\" || extension === \".mts\" || extension !== \".js\") {\n return false;\n }\n\n return nearestPackageType(file) !== \"module\";\n}\n\nfunction nearestPackageType(file: string): string | undefined {\n let directory = dirname(file);\n\n while (true) {\n const packageJson = join(directory, \"package.json\");\n\n if (packageTypeCache.has(packageJson)) {\n return packageTypeCache.get(packageJson);\n }\n\n if (existsSync(packageJson)) {\n const type = readPackageType(packageJson);\n packageTypeCache.set(packageJson, type);\n return type;\n }\n\n const parent = dirname(directory);\n\n if (parent === directory) {\n return undefined;\n }\n\n directory = parent;\n }\n}\n\nfunction readPackageType(packageJson: string): string | undefined {\n try {\n const parsed = JSON.parse(readFileSync(packageJson, \"utf8\")) as { type?: unknown };\n\n return typeof parsed.type === \"string\" ? parsed.type : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction commonJsImportClauseToRequireStatements(\n clause: string,\n requireExpression: string,\n importIndex: number,\n): string {\n if (clause.startsWith(\"* as \")) {\n return `const ${clause.slice(5).trim()} = ${requireExpression};`;\n }\n\n if (clause.startsWith(\"{\")) {\n return namedCommonJsImportsToRequireStatements(clause, requireExpression);\n }\n\n const commaIndex = clause.indexOf(\",\");\n\n if (commaIndex === -1) {\n return `const ${clause} = ${requireExpression};`;\n }\n\n const defaultName = clause.slice(0, commaIndex).trim();\n const namedOrNamespace = clause.slice(commaIndex + 1).trim();\n const temporaryName = `__mreactExternalCommonJs${importIndex}`;\n const statements = [\n `const ${temporaryName} = ${requireExpression};`,\n `const ${defaultName} = ${temporaryName};`,\n ];\n\n if (namedOrNamespace.startsWith(\"* as \")) {\n statements.push(`const ${namedOrNamespace.slice(5).trim()} = ${temporaryName};`);\n } else if (namedOrNamespace.startsWith(\"{\")) {\n statements.push(namedCommonJsImportsToRequireStatements(namedOrNamespace, temporaryName));\n }\n\n return statements.join(\"\\n\");\n}\n\nfunction esmImportClauseToNativeImportStatements(\n clause: string,\n specifier: string,\n importIndex: number,\n): { bindings: Map<string, string>; code: string } {\n const bindings = new Map<string, string>();\n const temporaryName = `__mreactExternalModule${importIndex}`;\n const statements = [\n `const ${temporaryName} = await __mreactNativeImport(${JSON.stringify(specifier)});`,\n ];\n\n if (clause.startsWith(\"* as \")) {\n statements.push(`const ${clause.slice(5).trim()} = ${temporaryName};`);\n } else if (clause.startsWith(\"{\")) {\n collectNamedEsmImportBindings(clause, temporaryName, bindings);\n } else {\n const commaIndex = clause.indexOf(\",\");\n\n if (commaIndex === -1) {\n bindings.set(clause, `${temporaryName}.default`);\n } else {\n const defaultName = clause.slice(0, commaIndex).trim();\n const namedOrNamespace = clause.slice(commaIndex + 1).trim();\n bindings.set(defaultName, `${temporaryName}.default`);\n\n if (namedOrNamespace.startsWith(\"* as \")) {\n statements.push(`const ${namedOrNamespace.slice(5).trim()} = ${temporaryName};`);\n } else if (namedOrNamespace.startsWith(\"{\")) {\n collectNamedEsmImportBindings(namedOrNamespace, temporaryName, bindings);\n }\n }\n }\n\n return { bindings, code: statements.join(\"\\n\") };\n}\n\nfunction collectNamedEsmImportBindings(\n clause: string,\n moduleName: string,\n bindings: Map<string, string>,\n): void {\n for (const binding of namedImportBindings(clause)) {\n const replacement =\n binding.imported === \"default\"\n ? `${moduleName}.default`\n : `${moduleName}[${JSON.stringify(binding.imported)}]`;\n bindings.set(binding.local, replacement);\n }\n}\n\nfunction namedCommonJsImportsToRequireStatements(clause: string, sourceExpression: string): string {\n const objectBindings: string[] = [];\n const statements: string[] = [];\n\n for (const binding of namedImportBindings(clause)) {\n if (binding.imported === \"default\") {\n statements.push(`const ${binding.local} = ${sourceExpression};`);\n } else if (binding.imported === binding.local) {\n objectBindings.push(binding.imported);\n } else {\n objectBindings.push(`${JSON.stringify(binding.imported)}: ${binding.local}`);\n }\n }\n\n if (objectBindings.length > 0) {\n statements.unshift(`const { ${objectBindings.join(\", \")} } = ${sourceExpression};`);\n }\n\n return statements.join(\"\\n\");\n}\n\nfunction namedImportBindings(clause: string): Array<{ imported: string; local: string }> {\n return clause\n .slice(1, -1)\n .split(\",\")\n .map((binding) => binding.trim())\n .filter((binding) => binding.length > 0)\n .map((binding) => {\n const alias = binding.match(/^(.+?)\\s+as\\s+(.+)$/);\n const imported = alias?.[1]?.trim() ?? binding;\n const local = alias?.[2]?.trim() ?? binding;\n\n return { imported, local };\n });\n}\n\nfunction replaceImportedIdentifiers(code: string, bindings: ReadonlyMap<string, string>): string {\n let rewritten = \"\";\n let index = 0;\n\n while (index < code.length) {\n const char = code[index];\n const next = code[index + 1];\n\n if (char === '\"' || char === \"'\") {\n const end = quotedStringEnd(code, index, char);\n rewritten += code.slice(index, end);\n index = end;\n continue;\n }\n\n if (char === \"`\") {\n const end = templateLiteralEnd(code, index);\n rewritten += code.slice(index, end);\n index = end;\n continue;\n }\n\n if (char === \"/\" && next === \"/\") {\n const end = lineCommentEnd(code, index);\n rewritten += code.slice(index, end);\n index = end;\n continue;\n }\n\n if (char === \"/\" && next === \"*\") {\n const end = blockCommentEnd(code, index);\n rewritten += code.slice(index, end);\n index = end;\n continue;\n }\n\n if (isIdentifierStart(char)) {\n const end = identifierEnd(code, index);\n const identifier = code.slice(index, end);\n const replacement = bindings.get(identifier);\n\n if (replacement !== undefined && shouldReplaceImportedIdentifier(code, index, end)) {\n rewritten += importedIdentifierReplacement(code, index, end, identifier, replacement);\n } else {\n rewritten += identifier;\n }\n\n index = end;\n continue;\n }\n\n rewritten += char;\n index += 1;\n }\n\n return rewritten;\n}\n\nfunction shouldReplaceImportedIdentifier(code: string, start: number, end: number): boolean {\n const previous = previousNonWhitespace(code, start);\n const next = nextNonWhitespace(code, end);\n\n return previous !== \".\" && previous !== \"?\" && next !== \":\";\n}\n\nfunction importedIdentifierReplacement(\n code: string,\n start: number,\n end: number,\n identifier: string,\n replacement: string,\n): string {\n const previous = previousNonWhitespace(code, start);\n const next = nextNonWhitespace(code, end);\n\n return (previous === \"{\" || previous === \",\") && (next === \",\" || next === \"}\")\n ? `${identifier}: ${replacement}`\n : replacement;\n}\n\nfunction previousNonWhitespace(code: string, index: number): string | undefined {\n for (let position = index - 1; position >= 0; position -= 1) {\n if (!/\\s/u.test(code[position] ?? \"\")) {\n return code[position];\n }\n }\n\n return undefined;\n}\n\nfunction nextNonWhitespace(code: string, index: number): string | undefined {\n for (let position = index; position < code.length; position += 1) {\n if (!/\\s/u.test(code[position] ?? \"\")) {\n return code[position];\n }\n }\n\n return undefined;\n}\n\nfunction quotedStringEnd(code: string, start: number, quote: string): number {\n for (let index = start + 1; index < code.length; index += 1) {\n if (code[index] === \"\\\\\") {\n index += 1;\n } else if (code[index] === quote) {\n return index + 1;\n }\n }\n\n return code.length;\n}\n\nfunction templateLiteralEnd(code: string, start: number): number {\n for (let index = start + 1; index < code.length; index += 1) {\n if (code[index] === \"\\\\\") {\n index += 1;\n } else if (code[index] === \"`\") {\n return index + 1;\n }\n }\n\n return code.length;\n}\n\nfunction lineCommentEnd(code: string, start: number): number {\n const end = code.indexOf(\"\\n\", start + 2);\n\n return end === -1 ? code.length : end;\n}\n\nfunction blockCommentEnd(code: string, start: number): number {\n const end = code.indexOf(\"*/\", start + 2);\n\n return end === -1 ? code.length : end + 2;\n}\n\nfunction identifierEnd(code: string, start: number): number {\n let end = start + 1;\n\n while (end < code.length && isIdentifierPart(code[end] ?? \"\")) {\n end += 1;\n }\n\n return end;\n}\n\nfunction isIdentifierStart(char: string | undefined): boolean {\n return char !== undefined && /[A-Za-z_$]/u.test(char);\n}\n\nfunction isIdentifierPart(char: string): boolean {\n return /[A-Za-z0-9_$]/u.test(char);\n}\n\nfunction workspacePackageResolutionPlugin() {\n const currentDir = dirname(fileURLToPath(import.meta.url));\n const packageRoot = dirname(currentDir);\n const sourceOrDist = currentDir.endsWith(`${sep}dist`) ? \"dist/index.js\" : \"src/index.ts\";\n const appRouterGlobalsSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/app-router-globals.js\"\n : \"src/app-router-globals.ts\";\n const linkSourceOrDist = currentDir.endsWith(`${sep}dist`) ? \"dist/link.js\" : \"src/link.ts\";\n const nativeEscapeSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/native-escape.js\"\n : \"src/native-escape.ts\";\n const navigationStateSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/navigation-state.js\"\n : \"src/navigation-state.ts\";\n const sessionSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/session.js\"\n : \"src/session.ts\";\n const streamListSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/stream-list.js\"\n : \"src/stream-list.ts\";\n const packageFile = (\n monorepoDir: string,\n packageName: string,\n entry: string,\n specifier: string,\n resolveDir?: string | undefined,\n ): string =>\n resolveWorkspacePackageFile({\n currentFileUrl: import.meta.url,\n entry,\n monorepoDir,\n packageName,\n resolveDir,\n specifier,\n });\n const entries = new Map<string, { entry: string; monorepoDir: string; packageName: string }>([\n [\n \"react\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"react-dom\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"react-dom/client\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"react-dom/server\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"react/jsx-dev-runtime\",\n {\n entry: \"jsx-dev-runtime\",\n monorepoDir: \"react-compat\",\n packageName: \"@reckona/mreact-compat\",\n },\n ],\n [\n \"react/jsx-runtime\",\n { entry: \"jsx-runtime\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\"@reckona/mreact\", { entry: \"index\", monorepoDir: \"react\", packageName: \"@reckona/mreact\" }],\n [\n \"@reckona/mreact/jsx-dev-runtime\",\n { entry: \"jsx-dev-runtime\", monorepoDir: \"react\", packageName: \"@reckona/mreact\" },\n ],\n [\n \"@reckona/mreact/jsx-runtime\",\n { entry: \"jsx-runtime\", monorepoDir: \"react\", packageName: \"@reckona/mreact\" },\n ],\n [\n \"@reckona/mreact-auth\",\n { entry: \"index\", monorepoDir: \"auth\", packageName: \"@reckona/mreact-auth\" },\n ],\n [\n \"@reckona/mreact-compat\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/event-priority\",\n {\n entry: \"event-priority\",\n monorepoDir: \"react-compat\",\n packageName: \"@reckona/mreact-compat\",\n },\n ],\n [\n \"@reckona/mreact-compat/flight\",\n { entry: \"flight\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/hooks\",\n { entry: \"hooks-entry\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/internal\",\n { entry: \"internal\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/jsx-dev-runtime\",\n {\n entry: \"jsx-dev-runtime\",\n monorepoDir: \"react-compat\",\n packageName: \"@reckona/mreact-compat\",\n },\n ],\n [\n \"@reckona/mreact-compat/jsx-runtime\",\n { entry: \"jsx-runtime\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/scheduler\",\n { entry: \"scheduler\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-reactive-core\",\n {\n entry: \"index\",\n monorepoDir: \"reactive-core\",\n packageName: \"@reckona/mreact-reactive-core\",\n },\n ],\n [\n \"@reckona/mreact-query\",\n { entry: \"index\", monorepoDir: \"query\", packageName: \"@reckona/mreact-query\" },\n ],\n [\n \"@reckona/mreact-server\",\n { entry: \"index\", monorepoDir: \"server\", packageName: \"@reckona/mreact-server\" },\n ],\n ]);\n const routerEntries = new Map([\n [\"@reckona/mreact-router\", join(packageRoot, sourceOrDist)],\n [\"@reckona/mreact-router/app-router-globals\", join(packageRoot, appRouterGlobalsSourceOrDist)],\n [\"@reckona/mreact-router/link\", join(packageRoot, linkSourceOrDist)],\n [\"@reckona/mreact-router/native-escape\", join(packageRoot, nativeEscapeSourceOrDist)],\n [\"@reckona/mreact-router/navigation-state\", join(packageRoot, navigationStateSourceOrDist)],\n [\"@reckona/mreact-router/session\", join(packageRoot, sessionSourceOrDist)],\n [\"@reckona/mreact-router/stream-list\", join(packageRoot, streamListSourceOrDist)],\n [\"@reckona/mreact-router/internal/native-escape\", join(packageRoot, nativeEscapeSourceOrDist)],\n [\"@reckona/mreact-router/internal/session\", join(packageRoot, sessionSourceOrDist)],\n ]);\n\n return {\n name: \"mreact-router-workspace-packages\",\n setup(buildApi: Pick<RouterCompatBuildApi, \"onResolve\">) {\n buildApi.onResolve(\n {\n filter:\n /^(?:react(?:\\/jsx-(?:dev-)?runtime)?|react-dom(?:\\/(?:client|server))?|@reckona\\/(?:mreact(?:\\/(?:jsx-dev-runtime|jsx-runtime))?|mreact-(?:auth|query|reactive-core|server|router|compat)(?:\\/(?:event-priority|flight|internal|jsx-dev-runtime|jsx-runtime|scheduler|app-router-globals|link|native-escape|navigation-state|session|stream-list|internal\\/native-escape|internal\\/session))?))$/,\n },\n (args) => {\n const routerPath = routerEntries.get(args.path);\n\n if (routerPath !== undefined) {\n return { path: routerPath };\n }\n\n const entry = entries.get(args.path);\n\n return entry === undefined\n ? undefined\n : {\n path: packageFile(\n entry.monorepoDir,\n entry.packageName,\n entry.entry,\n args.path,\n args.resolveDir,\n ),\n };\n },\n );\n },\n };\n}\n\nfunction setBoundedCacheEntry<K, V>(\n cache: Map<K, V>,\n key: K,\n value: V,\n maxEntries: number,\n counters: RouterRuntimeCacheCounters,\n): void {\n if (cache.size >= maxEntries) {\n const oldestKey = cache.keys().next().value as K | undefined;\n\n if (oldestKey !== undefined) {\n cache.delete(oldestKey);\n counters.evictions += 1;\n }\n }\n\n cache.set(key, value);\n}\n\nfunction hashText(text: string): string {\n return createHash(\"sha256\").update(text).digest(\"hex\").slice(0, 16);\n}\n"]}
@@ -5,24 +5,77 @@ export type MiddlewareNext = undefined;
5
5
  export interface ParseSchema<T> {
6
6
  parse(value: FormData): T;
7
7
  }
8
+ /**
9
+ * Throws an internal redirect for loaders, middleware, route handlers, or server actions.
10
+ *
11
+ * The target must be same-origin or relative; use `redirectExternal()` for trusted `http` or `https` destinations. The default status is `303`.
12
+ */
8
13
  export declare function redirect(location: string, options?: RedirectOptions): never;
14
+ /**
15
+ * Throws an external redirect for trusted `http` or `https` destinations.
16
+ *
17
+ * This helper is intentionally separate from `redirect()` so off-site navigation is explicit. The default status is `307`.
18
+ */
9
19
  export declare function redirectExternal(location: string, options?: RedirectOptions): never;
20
+ /**
21
+ * Creates a same-origin `303 See Other` redirect response.
22
+ *
23
+ * Use this from route handlers when returning a `Response` is more convenient than throwing through the app-router control flow.
24
+ */
10
25
  export declare function redirect303(location: string, init?: ResponseInit): Response;
26
+ /**
27
+ * Creates a plain-text error response with a default `text/plain` content type.
28
+ */
11
29
  export declare function textError(message: string, status?: number, init?: ResponseInit): Response;
30
+ /**
31
+ * Reads `request.formData()` and optionally validates it with a schema-like parser.
32
+ *
33
+ * Pass a schema object with `parse(FormData)` when a route handler or server action should receive typed form data.
34
+ */
12
35
  export declare function parseForm(request: Request): Promise<FormData>;
13
36
  export declare function parseForm<T>(request: Request, schema: ParseSchema<T>): Promise<T>;
37
+ /**
38
+ * Throws a route-level 404 control error.
39
+ *
40
+ * Use this from loaders, metadata, middleware, or route handlers when the matched route is valid but the requested resource is absent.
41
+ */
14
42
  export declare function notFound(): never;
43
+ /**
44
+ * Alias for `notFound()` for codebases that prefer an explicit throwing helper name.
45
+ */
15
46
  export declare function throwNotFound(): never;
47
+ /**
48
+ * Continues middleware processing without changing the request.
49
+ */
16
50
  export declare function next(): MiddlewareNext;
51
+ /**
52
+ * Creates an internal rewrite response consumed by app-router middleware.
53
+ *
54
+ * The target must be a same-origin route path, query, hash, or relative URL; protocol-relative, external, and control-character targets are rejected.
55
+ */
17
56
  export declare function rewrite(location: string, init?: ResponseInit): Response;
57
+ /**
58
+ * Creates a JSON response using the platform `Response.json()` implementation.
59
+ */
18
60
  export declare function json(value: unknown, init?: ResponseInit): Response;
61
+ /**
62
+ * Creates an HTML response and defaults the content type to `text/html; charset=utf-8`.
63
+ */
19
64
  export declare function html(value: string, init?: ResponseInit): Response;
65
+ /**
66
+ * Returns the request headers object for route code that follows app-router helper naming.
67
+ */
20
68
  export declare function headers(request: Request): Headers;
21
69
  export interface RequestCookies {
22
70
  entries(): IterableIterator<[string, string]>;
23
71
  get(name: string): string | undefined;
24
72
  has(name: string): boolean;
25
73
  }
74
+ /**
75
+ * Parses request cookies into a small read-only helper.
76
+ *
77
+ * Values are decoded with `decodeURIComponent`; malformed encoded values are ignored rather than throwing during request handling.
78
+ */
26
79
  export declare function cookies(request: Request): RequestCookies;
27
80
  export declare function rewriteLocation(response: Response): string | undefined;
28
81
  export declare function isRedirectError(error: unknown): error is Error & {
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../src/navigation.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CACtC;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC;AAEvC,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,CAAC;CAC3B;AAgDD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,KAAK,CAS/E;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,eAAoB,GAC5B,KAAK,CASP;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,QAAQ,CAa/E;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,QAAQ,CAY1F;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrE,wBAAsB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAUzF,wBAAgB,QAAQ,IAAI,KAAK,CAKhC;AAED,wBAAgB,aAAa,IAAI,KAAK,CAErC;AAED,wBAAgB,IAAI,IAAI,cAAc,CAErC;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,QAAQ,CAiB3E;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ,CAElE;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,QAAQ,CAkBrE;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEjD;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACtC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,CAYxD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAOtE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAIrG;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEvD"}
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../src/navigation.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CACtC;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC;AAEvC,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,CAAC;CAC3B;AAgDD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,KAAK,CAS/E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,eAAoB,GAC5B,KAAK,CASP;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,QAAQ,CAa/E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,QAAQ,CAY1F;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrE,wBAAsB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAUzF;;;;GAIG;AACH,wBAAgB,QAAQ,IAAI,KAAK,CAKhC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,KAAK,CAErC;AAED;;GAEG;AACH,wBAAgB,IAAI,IAAI,cAAc,CAErC;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,QAAQ,CAiB3E;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ,CAElE;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,QAAQ,CAkBrE;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEjD;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACtC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,CAYxD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAOtE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAIrG;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEvD"}