@reckona/mreact-router 0.0.97 → 0.0.98

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 (92) hide show
  1. package/README.md +4 -0
  2. package/dist/actions.d.ts +7 -0
  3. package/dist/actions.d.ts.map +1 -1
  4. package/dist/actions.js +26 -2
  5. package/dist/actions.js.map +1 -1
  6. package/dist/adapters/aws-lambda.d.ts.map +1 -1
  7. package/dist/adapters/aws-lambda.js +10 -7
  8. package/dist/adapters/aws-lambda.js.map +1 -1
  9. package/dist/build.d.ts +38 -1
  10. package/dist/build.d.ts.map +1 -1
  11. package/dist/build.js +1087 -304
  12. package/dist/build.js.map +1 -1
  13. package/dist/bundle-pipeline.d.ts +7 -0
  14. package/dist/bundle-pipeline.d.ts.map +1 -1
  15. package/dist/bundle-pipeline.js +121 -87
  16. package/dist/bundle-pipeline.js.map +1 -1
  17. package/dist/cache.d.ts.map +1 -1
  18. package/dist/cache.js +10 -8
  19. package/dist/cache.js.map +1 -1
  20. package/dist/cli-options.d.ts +1 -0
  21. package/dist/cli-options.d.ts.map +1 -1
  22. package/dist/cli-options.js +16 -0
  23. package/dist/cli-options.js.map +1 -1
  24. package/dist/cli.js +1 -0
  25. package/dist/cli.js.map +1 -1
  26. package/dist/client.d.ts +6 -1
  27. package/dist/client.d.ts.map +1 -1
  28. package/dist/client.js +113 -8
  29. package/dist/client.js.map +1 -1
  30. package/dist/csrf.d.ts.map +1 -1
  31. package/dist/csrf.js +7 -3
  32. package/dist/csrf.js.map +1 -1
  33. package/dist/http.d.ts.map +1 -1
  34. package/dist/http.js +18 -1
  35. package/dist/http.js.map +1 -1
  36. package/dist/import-policy.d.ts.map +1 -1
  37. package/dist/import-policy.js +7 -3
  38. package/dist/import-policy.js.map +1 -1
  39. package/dist/index.d.ts +4 -3
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/link.d.ts +5 -3
  43. package/dist/link.d.ts.map +1 -1
  44. package/dist/link.js +92 -3
  45. package/dist/link.js.map +1 -1
  46. package/dist/logger.d.ts +7 -1
  47. package/dist/logger.d.ts.map +1 -1
  48. package/dist/logger.js.map +1 -1
  49. package/dist/module-runner.d.ts +2 -0
  50. package/dist/module-runner.d.ts.map +1 -1
  51. package/dist/module-runner.js +1 -0
  52. package/dist/module-runner.js.map +1 -1
  53. package/dist/native-route-matcher.d.ts +2 -1
  54. package/dist/native-route-matcher.d.ts.map +1 -1
  55. package/dist/native-route-matcher.js +13 -2
  56. package/dist/native-route-matcher.js.map +1 -1
  57. package/dist/render.d.ts.map +1 -1
  58. package/dist/render.js +117 -2
  59. package/dist/render.js.map +1 -1
  60. package/dist/route-source.d.ts +4 -4
  61. package/dist/route-source.d.ts.map +1 -1
  62. package/dist/route-source.js +8 -8
  63. package/dist/route-source.js.map +1 -1
  64. package/dist/route-styles.d.ts +6 -0
  65. package/dist/route-styles.d.ts.map +1 -1
  66. package/dist/route-styles.js +10 -1
  67. package/dist/route-styles.js.map +1 -1
  68. package/dist/serve.d.ts +5 -0
  69. package/dist/serve.d.ts.map +1 -1
  70. package/dist/serve.js +7 -4
  71. package/dist/serve.js.map +1 -1
  72. package/package.json +11 -11
  73. package/src/actions.ts +42 -2
  74. package/src/adapters/aws-lambda.ts +33 -16
  75. package/src/build.ts +1578 -397
  76. package/src/bundle-pipeline.ts +136 -88
  77. package/src/cache.ts +13 -8
  78. package/src/cli-options.ts +20 -0
  79. package/src/cli.ts +1 -0
  80. package/src/client.ts +145 -14
  81. package/src/csrf.ts +8 -3
  82. package/src/http.ts +21 -1
  83. package/src/import-policy.ts +8 -3
  84. package/src/index.ts +5 -0
  85. package/src/link.ts +135 -8
  86. package/src/logger.ts +9 -1
  87. package/src/module-runner.ts +4 -0
  88. package/src/native-route-matcher.ts +13 -2
  89. package/src/render.ts +177 -2
  90. package/src/route-source.ts +8 -8
  91. package/src/route-styles.ts +17 -1
  92. package/src/serve.ts +11 -6
package/dist/cache.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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","sourcesContent":["export interface RouteCachePolicy {\n cacheControl: string;\n revalidateSeconds: number;\n}\n\nexport interface CacheControlOptions {\n maxAge?: number | undefined;\n sMaxAge?: number | undefined;\n staleWhileRevalidate?: boolean | number | undefined;\n}\n\nexport interface AppRouterCacheEntry {\n body: string;\n cacheControl: string;\n expiresAt: number;\n path: string;\n status: number;\n}\n\nexport interface AppRouterCache {\n deleteByPath(path: string): void | Promise<void>;\n get(\n key: string,\n now?: number,\n ): AppRouterCacheEntry | undefined | Promise<AppRouterCacheEntry | undefined>;\n set(key: string, entry: AppRouterCacheEntry): void | Promise<void>;\n}\n\nexport interface MemoryRouteCacheOptions {\n maxEntries?: number;\n sweepIntervalMs?: number;\n}\n\ninterface AppRouterCacheState {\n activeContexts: RouteCacheContext[];\n invalidatedPaths: Set<string>;\n memoryCache: AppRouterCache;\n}\n\ninterface RouteCacheContext {\n cache: AppRouterCache;\n cachePolicy?: RouteCachePolicy | undefined;\n revalidatedPaths: Set<string>;\n}\n\nconst cacheState = ((\n globalThis as { __mreactAppRouterCache?: AppRouterCacheState }\n).__mreactAppRouterCache ??= {\n activeContexts: [],\n invalidatedPaths: new Set(),\n memoryCache: createMemoryRouteCache(),\n});\n\nexport function createMemoryRouteCache(options: MemoryRouteCacheOptions = {}): AppRouterCache {\n const maxEntries = positiveIntegerOrDefault(options.maxEntries, 10_000);\n const sweepIntervalMs = nonNegativeIntegerOrDefault(options.sweepIntervalMs, 60_000);\n const cachedRoutes = new Map<string, AppRouterCacheEntry>();\n const keysByPath = new Map<string, Set<string>>();\n let nextSweepAt = 0;\n\n function unindexKey(key: string, path: string): void {\n const keys = keysByPath.get(path);\n keys?.delete(key);\n\n if (keys?.size === 0) {\n keysByPath.delete(path);\n }\n }\n\n function deleteEntry(key: string): void {\n const entry = cachedRoutes.get(key);\n cachedRoutes.delete(key);\n\n if (entry !== undefined) {\n unindexKey(key, entry.path);\n }\n }\n\n function indexKey(key: string, path: string): void {\n const keys = keysByPath.get(path);\n\n if (keys === undefined) {\n keysByPath.set(path, new Set([key]));\n return;\n }\n\n keys.add(key);\n }\n\n function sweepExpired(now: number): void {\n for (const [key, entry] of cachedRoutes) {\n if (entry.expiresAt <= now) {\n deleteEntry(key);\n }\n }\n\n nextSweepAt = now + sweepIntervalMs;\n }\n\n function maybeSweepExpired(now: number): void {\n if (sweepIntervalMs === 0 || now >= nextSweepAt) {\n sweepExpired(now);\n }\n }\n\n function evictOldestEntries(): void {\n while (cachedRoutes.size > maxEntries) {\n const oldestKey = cachedRoutes.keys().next().value;\n\n if (oldestKey === undefined) {\n return;\n }\n\n deleteEntry(oldestKey);\n }\n }\n\n return {\n deleteByPath(path) {\n const normalizedPath = normalizeRevalidationPath(path);\n const keys = keysByPath.get(normalizedPath);\n\n if (keys === undefined) {\n return;\n }\n\n for (const key of keys) {\n cachedRoutes.delete(key);\n }\n\n keysByPath.delete(normalizedPath);\n },\n get(key, now = Date.now()) {\n const entry = cachedRoutes.get(key);\n\n if (entry === undefined) {\n return undefined;\n }\n\n if (entry.expiresAt <= now) {\n deleteEntry(key);\n return undefined;\n }\n\n return entry;\n },\n set(key, entry) {\n const now = Date.now();\n maybeSweepExpired(now);\n const previous = cachedRoutes.get(key);\n\n if (previous !== undefined) {\n cachedRoutes.delete(key);\n unindexKey(key, previous.path);\n }\n\n cachedRoutes.set(key, entry);\n indexKey(key, entry.path);\n\n if (cachedRoutes.size > maxEntries) {\n sweepExpired(now);\n evictOldestEntries();\n }\n },\n };\n}\n\nfunction positiveIntegerOrDefault(value: number | undefined, fallback: number): number {\n return value === undefined || !Number.isInteger(value) || value < 1 ? fallback : value;\n}\n\nfunction nonNegativeIntegerOrDefault(value: number | undefined, fallback: number): number {\n return value === undefined || !Number.isInteger(value) || value < 0 ? fallback : value;\n}\n\nexport function routeCachePolicyFromSource(code: string): RouteCachePolicy | undefined {\n const match = /^\\s*export\\s+const\\s+revalidate\\s*=\\s*(?<seconds>\\d+)\\s*;?\\s*$/m.exec(code);\n const seconds = match?.groups?.seconds === undefined ? undefined : Number(match.groups.seconds);\n\n if (seconds === undefined || !Number.isFinite(seconds)) {\n return undefined;\n }\n\n return {\n cacheControl: seconds === 0 ? \"no-store\" : `s-maxage=${seconds}, stale-while-revalidate`,\n revalidateSeconds: seconds,\n };\n}\n\nexport function cacheControl(options: CacheControlOptions): void {\n const activeContext = cacheState.activeContexts.at(-1);\n\n if (activeContext === undefined) {\n throw new Error(\"cacheControl() must be called during an app router request.\");\n }\n\n activeContext.cachePolicy = routeCachePolicyFromOptions(options);\n}\n\nexport function routeCachePolicyFromOptions(options: CacheControlOptions): RouteCachePolicy {\n const directives: string[] = [];\n const maxAge = cacheControlSeconds(options.maxAge, \"maxAge\");\n const sMaxAge = cacheControlSeconds(options.sMaxAge, \"sMaxAge\");\n\n if (maxAge !== undefined) {\n directives.push(`max-age=${maxAge}`);\n }\n\n if (sMaxAge !== undefined) {\n directives.push(`s-maxage=${sMaxAge}`);\n }\n\n if (options.staleWhileRevalidate !== undefined) {\n directives.push(staleWhileRevalidateDirective(options.staleWhileRevalidate));\n }\n\n if (directives.length === 0) {\n throw new Error(\"cacheControl() requires at least one cache directive.\");\n }\n\n return {\n cacheControl: directives.join(\", \"),\n revalidateSeconds: sMaxAge ?? 0,\n };\n}\n\nexport function cachedRouteResponse(options: {\n cache?: AppRouterCache | undefined;\n key: string;\n now?: number;\n}): Promise<Response | undefined> {\n return Promise.resolve().then(async () => {\n const cache = options.cache ?? cacheState.memoryCache;\n\n await consumeInvalidations(cache);\n const now = options.now ?? Date.now();\n const cached = await cache.get(options.key, now);\n\n if (cached === undefined || cached.expiresAt <= now) {\n return undefined;\n }\n\n return new Response(cached.body, {\n headers: {\n \"cache-control\": cached.cacheControl,\n \"content-type\": \"text/html; charset=utf-8\",\n \"x-mreact-cache\": \"HIT\",\n },\n status: cached.status,\n });\n });\n}\n\nexport async function cacheRouteResponse(options: {\n cache?: AppRouterCache | undefined;\n key: string;\n now?: number;\n path: string;\n policy: RouteCachePolicy | undefined;\n response: Response;\n}): Promise<Response> {\n if (options.policy === undefined) {\n return options.response;\n }\n\n if (options.policy.revalidateSeconds === 0) {\n options.response.headers.set(\"cache-control\", options.policy.cacheControl);\n return options.response;\n }\n\n const body = await options.response.text();\n const cacheControl = options.policy.cacheControl;\n const status = options.response.status;\n await (options.cache ?? cacheState.memoryCache).set(options.key, {\n body,\n cacheControl,\n expiresAt: (options.now ?? Date.now()) + options.policy.revalidateSeconds * 1000,\n path: normalizeRevalidationPath(options.path),\n status,\n });\n\n return new Response(body, {\n headers: {\n \"cache-control\": cacheControl,\n \"content-type\": options.response.headers.get(\"content-type\") ?? \"text/html; charset=utf-8\",\n \"x-mreact-cache\": \"MISS\",\n },\n status,\n });\n}\n\nexport function revalidatePath(path: string): void {\n const normalizedPath = normalizeRevalidationPath(path);\n const activeContext = cacheState.activeContexts.at(-1);\n\n if (activeContext !== undefined) {\n activeContext.revalidatedPaths.add(normalizedPath);\n return;\n }\n\n cacheState.invalidatedPaths.add(normalizedPath);\n}\n\nexport async function consumeInvalidations(\n cache: AppRouterCache = cacheState.memoryCache,\n): Promise<void> {\n if (cacheState.invalidatedPaths.size === 0) {\n return;\n }\n\n for (const path of cacheState.invalidatedPaths) {\n await cache.deleteByPath(path);\n }\n\n cacheState.invalidatedPaths.clear();\n}\n\nexport async function withRouteCacheContext<T>(\n cache: AppRouterCache | undefined,\n fn: () => T | Promise<T>,\n): Promise<{ cachePolicy: RouteCachePolicy | undefined; revalidatedPaths: string[]; value: T }> {\n const context: RouteCacheContext = {\n cache: cache ?? cacheState.memoryCache,\n revalidatedPaths: new Set(),\n };\n\n cacheState.activeContexts.push(context);\n\n try {\n const value = await fn();\n const cachePolicy = context.cachePolicy;\n const revalidatedPaths = Array.from(context.revalidatedPaths);\n\n for (const path of revalidatedPaths) {\n await context.cache.deleteByPath(path);\n }\n\n return { cachePolicy, revalidatedPaths, value };\n } finally {\n cacheState.activeContexts.pop();\n }\n}\n\nexport function beginRouteCacheContext(cache: AppRouterCache | undefined): {\n readonly cachePolicy: RouteCachePolicy | undefined;\n dispose(): Promise<{ revalidatedPaths: string[] }>;\n} {\n const context: RouteCacheContext = {\n cache: cache ?? cacheState.memoryCache,\n revalidatedPaths: new Set(),\n };\n\n cacheState.activeContexts.push(context);\n\n return {\n get cachePolicy() {\n return context.cachePolicy;\n },\n async dispose() {\n const revalidatedPaths = Array.from(context.revalidatedPaths);\n\n for (const path of revalidatedPaths) {\n await context.cache.deleteByPath(path);\n }\n\n const index = cacheState.activeContexts.lastIndexOf(context);\n if (index !== -1) {\n cacheState.activeContexts.splice(index, 1);\n }\n\n return { revalidatedPaths };\n },\n };\n}\n\n// Host is excluded from the cache key to prevent attacker-supplied Host\n// headers from fragmenting / poisoning the cache (Issue 068). The Vary\n// dimension is the request path + query; same-origin reverse proxies are\n// expected to handle vhost separation at their layer.\nexport function routeCacheKey(appDir: string, routePath: string, url: URL): string {\n return `${appDir}\\0${normalizeRevalidationPath(routePath)}\\0${url.pathname}${url.search}`;\n}\n\nexport function stripRevalidateExport(code: string): string {\n return code.replace(/^\\s*export\\s+const\\s+revalidate\\s*=\\s*\\d+\\s*;?\\s*$/m, \"\");\n}\n\nfunction normalizeRevalidationPath(path: string): string {\n const pathname = path.startsWith(\"/\") ? path : `/${path}`;\n const withoutTrailing = pathname.length > 1 ? pathname.replace(/\\/+$/, \"\") : pathname;\n\n return withoutTrailing === \"\" ? \"/\" : withoutTrailing;\n}\n\nfunction cacheControlSeconds(value: number | undefined, name: string): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new Error(`cacheControl() ${name} must be a non-negative integer.`);\n }\n\n return value;\n}\n\nfunction staleWhileRevalidateDirective(value: boolean | number): string {\n if (value === true) {\n return \"stale-while-revalidate\";\n }\n\n if (value === false) {\n throw new Error(\"cacheControl() staleWhileRevalidate must be true or a non-negative integer.\");\n }\n\n const seconds = cacheControlSeconds(value, \"staleWhileRevalidate\");\n return `stale-while-revalidate=${seconds}`;\n}\n"]}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\n\nexport interface RouteCachePolicy {\n cacheControl: string;\n revalidateSeconds: number;\n}\n\nexport interface CacheControlOptions {\n maxAge?: number | undefined;\n sMaxAge?: number | undefined;\n staleWhileRevalidate?: boolean | number | undefined;\n}\n\nexport interface AppRouterCacheEntry {\n body: string;\n cacheControl: string;\n expiresAt: number;\n path: string;\n status: number;\n}\n\nexport interface AppRouterCache {\n deleteByPath(path: string): void | Promise<void>;\n get(\n key: string,\n now?: number,\n ): AppRouterCacheEntry | undefined | Promise<AppRouterCacheEntry | undefined>;\n set(key: string, entry: AppRouterCacheEntry): void | Promise<void>;\n}\n\nexport interface MemoryRouteCacheOptions {\n maxEntries?: number;\n sweepIntervalMs?: number;\n}\n\ninterface AppRouterCacheState {\n activeContexts: RouteCacheContext[];\n invalidatedPaths: Set<string>;\n memoryCache: AppRouterCache;\n storage: AsyncLocalStorage<RouteCacheContext>;\n}\n\ninterface RouteCacheContext {\n cache: AppRouterCache;\n cachePolicy?: RouteCachePolicy | undefined;\n revalidatedPaths: Set<string>;\n}\n\nconst cacheState = ((\n globalThis as { __mreactAppRouterCache?: AppRouterCacheState }\n).__mreactAppRouterCache ??= {\n activeContexts: [],\n invalidatedPaths: new Set(),\n memoryCache: createMemoryRouteCache(),\n storage: new AsyncLocalStorage<RouteCacheContext>(),\n});\ncacheState.storage ??= new AsyncLocalStorage<RouteCacheContext>();\n\nexport function createMemoryRouteCache(options: MemoryRouteCacheOptions = {}): AppRouterCache {\n const maxEntries = positiveIntegerOrDefault(options.maxEntries, 10_000);\n const sweepIntervalMs = nonNegativeIntegerOrDefault(options.sweepIntervalMs, 60_000);\n const cachedRoutes = new Map<string, AppRouterCacheEntry>();\n const keysByPath = new Map<string, Set<string>>();\n let nextSweepAt = 0;\n\n function unindexKey(key: string, path: string): void {\n const keys = keysByPath.get(path);\n keys?.delete(key);\n\n if (keys?.size === 0) {\n keysByPath.delete(path);\n }\n }\n\n function deleteEntry(key: string): void {\n const entry = cachedRoutes.get(key);\n cachedRoutes.delete(key);\n\n if (entry !== undefined) {\n unindexKey(key, entry.path);\n }\n }\n\n function indexKey(key: string, path: string): void {\n const keys = keysByPath.get(path);\n\n if (keys === undefined) {\n keysByPath.set(path, new Set([key]));\n return;\n }\n\n keys.add(key);\n }\n\n function sweepExpired(now: number): void {\n for (const [key, entry] of cachedRoutes) {\n if (entry.expiresAt <= now) {\n deleteEntry(key);\n }\n }\n\n nextSweepAt = now + sweepIntervalMs;\n }\n\n function maybeSweepExpired(now: number): void {\n if (sweepIntervalMs === 0 || now >= nextSweepAt) {\n sweepExpired(now);\n }\n }\n\n function evictOldestEntries(): void {\n while (cachedRoutes.size > maxEntries) {\n const oldestKey = cachedRoutes.keys().next().value;\n\n if (oldestKey === undefined) {\n return;\n }\n\n deleteEntry(oldestKey);\n }\n }\n\n return {\n deleteByPath(path) {\n const normalizedPath = normalizeRevalidationPath(path);\n const keys = keysByPath.get(normalizedPath);\n\n if (keys === undefined) {\n return;\n }\n\n for (const key of keys) {\n cachedRoutes.delete(key);\n }\n\n keysByPath.delete(normalizedPath);\n },\n get(key, now = Date.now()) {\n const entry = cachedRoutes.get(key);\n\n if (entry === undefined) {\n return undefined;\n }\n\n if (entry.expiresAt <= now) {\n deleteEntry(key);\n return undefined;\n }\n\n return entry;\n },\n set(key, entry) {\n const now = Date.now();\n maybeSweepExpired(now);\n const previous = cachedRoutes.get(key);\n\n if (previous !== undefined) {\n cachedRoutes.delete(key);\n unindexKey(key, previous.path);\n }\n\n cachedRoutes.set(key, entry);\n indexKey(key, entry.path);\n\n if (cachedRoutes.size > maxEntries) {\n sweepExpired(now);\n evictOldestEntries();\n }\n },\n };\n}\n\nfunction positiveIntegerOrDefault(value: number | undefined, fallback: number): number {\n return value === undefined || !Number.isInteger(value) || value < 1 ? fallback : value;\n}\n\nfunction nonNegativeIntegerOrDefault(value: number | undefined, fallback: number): number {\n return value === undefined || !Number.isInteger(value) || value < 0 ? fallback : value;\n}\n\nexport function routeCachePolicyFromSource(code: string): RouteCachePolicy | undefined {\n const match = /^\\s*export\\s+const\\s+revalidate\\s*=\\s*(?<seconds>\\d+)\\s*;?\\s*$/m.exec(code);\n const seconds = match?.groups?.seconds === undefined ? undefined : Number(match.groups.seconds);\n\n if (seconds === undefined || !Number.isFinite(seconds)) {\n return undefined;\n }\n\n return {\n cacheControl: seconds === 0 ? \"no-store\" : `s-maxage=${seconds}, stale-while-revalidate`,\n revalidateSeconds: seconds,\n };\n}\n\nexport function cacheControl(options: CacheControlOptions): void {\n const activeContext = activeRouteCacheContext();\n\n if (activeContext === undefined) {\n throw new Error(\"cacheControl() must be called during an app router request.\");\n }\n\n activeContext.cachePolicy = routeCachePolicyFromOptions(options);\n}\n\nexport function routeCachePolicyFromOptions(options: CacheControlOptions): RouteCachePolicy {\n const directives: string[] = [];\n const maxAge = cacheControlSeconds(options.maxAge, \"maxAge\");\n const sMaxAge = cacheControlSeconds(options.sMaxAge, \"sMaxAge\");\n\n if (maxAge !== undefined) {\n directives.push(`max-age=${maxAge}`);\n }\n\n if (sMaxAge !== undefined) {\n directives.push(`s-maxage=${sMaxAge}`);\n }\n\n if (options.staleWhileRevalidate !== undefined) {\n directives.push(staleWhileRevalidateDirective(options.staleWhileRevalidate));\n }\n\n if (directives.length === 0) {\n throw new Error(\"cacheControl() requires at least one cache directive.\");\n }\n\n return {\n cacheControl: directives.join(\", \"),\n revalidateSeconds: sMaxAge ?? 0,\n };\n}\n\nexport function cachedRouteResponse(options: {\n cache?: AppRouterCache | undefined;\n key: string;\n now?: number;\n}): Promise<Response | undefined> {\n return Promise.resolve().then(async () => {\n const cache = options.cache ?? cacheState.memoryCache;\n\n await consumeInvalidations(cache);\n const now = options.now ?? Date.now();\n const cached = await cache.get(options.key, now);\n\n if (cached === undefined || cached.expiresAt <= now) {\n return undefined;\n }\n\n return new Response(cached.body, {\n headers: {\n \"cache-control\": cached.cacheControl,\n \"content-type\": \"text/html; charset=utf-8\",\n \"x-mreact-cache\": \"HIT\",\n },\n status: cached.status,\n });\n });\n}\n\nexport async function cacheRouteResponse(options: {\n cache?: AppRouterCache | undefined;\n key: string;\n now?: number;\n path: string;\n policy: RouteCachePolicy | undefined;\n response: Response;\n}): Promise<Response> {\n if (options.policy === undefined) {\n return options.response;\n }\n\n if (options.policy.revalidateSeconds === 0) {\n options.response.headers.set(\"cache-control\", options.policy.cacheControl);\n return options.response;\n }\n\n const body = await options.response.text();\n const cacheControl = options.policy.cacheControl;\n const status = options.response.status;\n await (options.cache ?? cacheState.memoryCache).set(options.key, {\n body,\n cacheControl,\n expiresAt: (options.now ?? Date.now()) + options.policy.revalidateSeconds * 1000,\n path: normalizeRevalidationPath(options.path),\n status,\n });\n\n return new Response(body, {\n headers: {\n \"cache-control\": cacheControl,\n \"content-type\": options.response.headers.get(\"content-type\") ?? \"text/html; charset=utf-8\",\n \"x-mreact-cache\": \"MISS\",\n },\n status,\n });\n}\n\nexport function revalidatePath(path: string): void {\n const normalizedPath = normalizeRevalidationPath(path);\n const activeContext = activeRouteCacheContext();\n\n if (activeContext !== undefined) {\n activeContext.revalidatedPaths.add(normalizedPath);\n return;\n }\n\n cacheState.invalidatedPaths.add(normalizedPath);\n}\n\nexport async function consumeInvalidations(\n cache: AppRouterCache = cacheState.memoryCache,\n): Promise<void> {\n if (cacheState.invalidatedPaths.size === 0) {\n return;\n }\n\n for (const path of cacheState.invalidatedPaths) {\n await cache.deleteByPath(path);\n }\n\n cacheState.invalidatedPaths.clear();\n}\n\nexport async function withRouteCacheContext<T>(\n cache: AppRouterCache | undefined,\n fn: () => T | Promise<T>,\n): Promise<{ cachePolicy: RouteCachePolicy | undefined; revalidatedPaths: string[]; value: T }> {\n const context: RouteCacheContext = {\n cache: cache ?? cacheState.memoryCache,\n revalidatedPaths: new Set(),\n };\n\n return cacheState.storage.run(context, async () => {\n const value = await fn();\n const cachePolicy = context.cachePolicy;\n const revalidatedPaths = Array.from(context.revalidatedPaths);\n\n for (const path of revalidatedPaths) {\n await context.cache.deleteByPath(path);\n }\n\n return { cachePolicy, revalidatedPaths, value };\n });\n}\n\nexport function beginRouteCacheContext(cache: AppRouterCache | undefined): {\n readonly cachePolicy: RouteCachePolicy | undefined;\n dispose(): Promise<{ revalidatedPaths: string[] }>;\n} {\n const context: RouteCacheContext = {\n cache: cache ?? cacheState.memoryCache,\n revalidatedPaths: new Set(),\n };\n\n cacheState.activeContexts.push(context);\n\n return {\n get cachePolicy() {\n return context.cachePolicy;\n },\n async dispose() {\n const revalidatedPaths = Array.from(context.revalidatedPaths);\n\n for (const path of revalidatedPaths) {\n await context.cache.deleteByPath(path);\n }\n\n const index = cacheState.activeContexts.lastIndexOf(context);\n if (index !== -1) {\n cacheState.activeContexts.splice(index, 1);\n }\n\n return { revalidatedPaths };\n },\n };\n}\n\nfunction activeRouteCacheContext(): RouteCacheContext | undefined {\n return cacheState.storage.getStore() ?? cacheState.activeContexts.at(-1);\n}\n\n// Host is excluded from the cache key to prevent attacker-supplied Host\n// headers from fragmenting / poisoning the cache (Issue 068). The Vary\n// dimension is the request path + query; same-origin reverse proxies are\n// expected to handle vhost separation at their layer.\nexport function routeCacheKey(appDir: string, routePath: string, url: URL): string {\n return `${appDir}\\0${normalizeRevalidationPath(routePath)}\\0${url.pathname}${url.search}`;\n}\n\nexport function stripRevalidateExport(code: string): string {\n return code.replace(/^\\s*export\\s+const\\s+revalidate\\s*=\\s*\\d+\\s*;?\\s*$/m, \"\");\n}\n\nfunction normalizeRevalidationPath(path: string): string {\n const pathname = path.startsWith(\"/\") ? path : `/${path}`;\n const withoutTrailing = pathname.length > 1 ? pathname.replace(/\\/+$/, \"\") : pathname;\n\n return withoutTrailing === \"\" ? \"/\" : withoutTrailing;\n}\n\nfunction cacheControlSeconds(value: number | undefined, name: string): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new Error(`cacheControl() ${name} must be a non-negative integer.`);\n }\n\n return value;\n}\n\nfunction staleWhileRevalidateDirective(value: boolean | number): string {\n if (value === true) {\n return \"stale-while-revalidate\";\n }\n\n if (value === false) {\n throw new Error(\"cacheControl() staleWhileRevalidate must be true or a non-negative integer.\");\n }\n\n const seconds = cacheControlSeconds(value, \"staleWhileRevalidate\");\n return `stale-while-revalidate=${seconds}`;\n}\n"]}
@@ -8,6 +8,7 @@ export interface ParsedCliArguments {
8
8
  command: string;
9
9
  allowedHosts?: readonly string[] | undefined;
10
10
  from?: string | undefined;
11
+ handler?: string | undefined;
11
12
  help?: boolean | undefined;
12
13
  host?: string | undefined;
13
14
  hostPolicy?: RequestHostPolicy | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-options.d.ts","sourceRoot":"","sources":["../src/cli-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EACV,oBAAoB,EACpB,4BAA4B,EAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAC3C,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,KAAK,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,EAAE,4BAA4B,GAAG,SAAS,CAAC;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,UAAU,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC3C,GAAG,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,0BAA0B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CACrC;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,kBAAkB,CA2I7E;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CA8GlE;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,cAAc,GAAG,SAAS,GACjC,SAAS,oBAAoB,EAAE,GAAG,SAAS,CAM7C;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,iBAAiB,GAAG,SAAS,EACxC,GAAG,EAAE;IAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC9C,iBAAiB,GAAG,SAAS,CAW/B;AAED,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,GAAG,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACjC,MAAM,CAOR;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,GAAG,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EAClC,cAAc,EAAE,MAAM,GAAG,SAAS,GACjC,MAAM,GAAG,SAAS,CAOpB;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,iBAAiB,GAAG,SAAS,EACxC,GAAG,EAAE;IAAE,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACtD,iBAAiB,GAAG,SAAS,CAO/B;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACxC,GAAG,EAAE;IAAE,2BAA2B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACxD,SAAS,MAAM,EAAE,GAAG,SAAS,CAO/B;AAED,wBAAgB,sBAAsB,IAAI,eAAe,CAaxD"}
1
+ {"version":3,"file":"cli-options.d.ts","sourceRoot":"","sources":["../src/cli-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EACV,oBAAoB,EACpB,4BAA4B,EAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAC3C,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,KAAK,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,EAAE,4BAA4B,GAAG,SAAS,CAAC;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,UAAU,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC3C,GAAG,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,0BAA0B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CACrC;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,kBAAkB,CAsJ7E;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAkHlE;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,cAAc,GAAG,SAAS,GACjC,SAAS,oBAAoB,EAAE,GAAG,SAAS,CAM7C;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,iBAAiB,GAAG,SAAS,EACxC,GAAG,EAAE;IAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC9C,iBAAiB,GAAG,SAAS,CAW/B;AAED,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,GAAG,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACjC,MAAM,CAOR;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,GAAG,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EAClC,cAAc,EAAE,MAAM,GAAG,SAAS,GACjC,MAAM,GAAG,SAAS,CAOpB;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,iBAAiB,GAAG,SAAS,EACxC,GAAG,EAAE;IAAE,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACtD,iBAAiB,GAAG,SAAS,CAO/B;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACxC,GAAG,EAAE;IAAE,2BAA2B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACxD,SAAS,MAAM,EAAE,GAAG,SAAS,CAO/B;AAED,wBAAgB,sBAAsB,IAAI,eAAe,CAaxD"}
@@ -76,6 +76,15 @@ export function parseCliArguments(argv) {
76
76
  parsed.skipRuntimeDependencyCheck = true;
77
77
  continue;
78
78
  }
79
+ if (value === "--handler") {
80
+ parsed.handler = readOptionValue(argv, index, "handler");
81
+ index += 1;
82
+ continue;
83
+ }
84
+ if (value.startsWith("--handler=")) {
85
+ parsed.handler = value.slice("--handler=".length);
86
+ continue;
87
+ }
79
88
  if (value.startsWith("--log=")) {
80
89
  parsed.log = parseCliRequestLogMode(value.slice("--log=".length));
81
90
  continue;
@@ -144,6 +153,8 @@ export function formatCliHelp(command) {
144
153
  " --out <dir> Output directory. Defaults to .lambda for aws-lambda and .mreact/pages for cloudflare-pages.",
145
154
  " --skip-runtime-dependency-check",
146
155
  " For aws-lambda only, skip the production node_modules check when a later deploy step installs dependencies into the package directory.",
156
+ " --handler <entry>",
157
+ " For aws-lambda only, bundle a custom handler entry into mreact-handler.mjs. App-local extensionless TypeScript imports are bundled; package imports stay external.",
147
158
  " -h, --help Show this help message.",
148
159
  "",
149
160
  "Examples:",
@@ -200,6 +211,8 @@ export function formatCliHelp(command) {
200
211
  " start [outDir] Serve built Node output.",
201
212
  " package aws-lambda --from .mreact --out .lambda",
202
213
  " Package a minimal AWS Lambda asset directory.",
214
+ " package aws-lambda --handler lambda/mreact-handler.ts",
215
+ " Bundle a custom Lambda handler with app-local server imports.",
203
216
  " package cloudflare-pages --from .mreact --out .mreact/pages",
204
217
  " Package Cloudflare Pages advanced mode output.",
205
218
  " help [command] Show help.",
@@ -330,6 +343,9 @@ function formatCliRequestLogEvent(event) {
330
343
  if (event.type === "router:render:timing") {
331
344
  return `[mreact] ${event.method} ${event.path} ${event.status} render timing`;
332
345
  }
346
+ if (event.type === "router:csp:inline-nonce-warning") {
347
+ return `[mreact] ${event.path} CSP ${event.directive} will block inline <${event.tag}> without a matching nonce`;
348
+ }
333
349
  return `[mreact] ${event.method} ${event.path} ${event.runtime}`;
334
350
  }
335
351
  //# sourceMappingURL=cli-options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-options.js","sourceRoot":"","sources":["../src/cli-options.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AppRouterLogger, AppRouterLogEvent } from \"./logger.js\";\nimport type {\n AppRouterBuildTarget,\n AppRouterClientSourceMapMode,\n} from \"./config.js\";\nimport type { RequestHostPolicy } from \"./serve.js\";\n\nexport type CliRequestLogMode = \"requests\";\nexport type CliBuildTarget = AppRouterBuildTarget | \"all\";\n\nexport interface ParsedCliArguments {\n clientSourceMaps?: AppRouterClientSourceMapMode | undefined;\n command: string;\n allowedHosts?: readonly string[] | undefined;\n from?: string | undefined;\n help?: boolean | undefined;\n host?: string | undefined;\n hostPolicy?: RequestHostPolicy | undefined;\n log?: CliRequestLogMode | undefined;\n out?: string | undefined;\n port?: number | undefined;\n routeArg?: string | undefined;\n skipRuntimeDependencyCheck?: boolean | undefined;\n target?: CliBuildTarget | undefined;\n}\n\nexport function parseCliArguments(argv: readonly string[]): ParsedCliArguments {\n const first = argv[0];\n const rootHelp = first === \"--help\" || first === \"-h\";\n const command = rootHelp ? \"help\" : first === undefined || first.startsWith(\"-\") ? \"dev\" : first;\n const parsed: ParsedCliArguments = rootHelp ? { command, help: true } : { command };\n const startIndex = rootHelp || command === first ? 1 : 0;\n\n for (let index = startIndex; index < argv.length; index += 1) {\n const value = argv[index];\n\n if (value === undefined) {\n continue;\n }\n\n if (value === \"--help\" || value === \"-h\") {\n parsed.help = true;\n continue;\n }\n\n if (value === \"--log\") {\n parsed.log = parseCliRequestLogMode(readOptionValue(argv, index, \"log\"));\n index += 1;\n continue;\n }\n\n if (value === \"--port\") {\n parsed.port = parseCliPort(readOptionValue(argv, index, \"port\"));\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--port=\")) {\n parsed.port = parseCliPort(value.slice(\"--port=\".length));\n continue;\n }\n\n if (value === \"--host\") {\n parsed.host = readOptionValue(argv, index, \"host\");\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--host=\")) {\n parsed.host = value.slice(\"--host=\".length);\n continue;\n }\n\n if (value === \"--host-policy\") {\n parsed.hostPolicy = parseCliHostPolicy(readOptionValue(argv, index, \"host-policy\"));\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--host-policy=\")) {\n parsed.hostPolicy = parseCliHostPolicy(value.slice(\"--host-policy=\".length));\n continue;\n }\n\n if (value === \"--allowed-hosts\") {\n parsed.allowedHosts = parseCliAllowedHosts(readOptionValue(argv, index, \"allowed-hosts\"));\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--allowed-hosts=\")) {\n parsed.allowedHosts = parseCliAllowedHosts(value.slice(\"--allowed-hosts=\".length));\n continue;\n }\n\n if (value === \"--from\") {\n parsed.from = readOptionValue(argv, index, \"from\");\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--from=\")) {\n parsed.from = value.slice(\"--from=\".length);\n continue;\n }\n\n if (value === \"--out\") {\n parsed.out = readOptionValue(argv, index, \"out\");\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--out=\")) {\n parsed.out = value.slice(\"--out=\".length);\n continue;\n }\n\n if (value === \"--skip-runtime-dependency-check\") {\n parsed.skipRuntimeDependencyCheck = true;\n continue;\n }\n\n if (value.startsWith(\"--log=\")) {\n parsed.log = parseCliRequestLogMode(value.slice(\"--log=\".length));\n continue;\n }\n\n if (value === \"--target\") {\n parsed.target = parseCliBuildTarget(readOptionValue(argv, index, \"target\"));\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--target=\")) {\n parsed.target = parseCliBuildTarget(value.slice(\"--target=\".length));\n continue;\n }\n\n if (value === \"--client-source-maps\") {\n parsed.clientSourceMaps = parseCliClientSourceMapMode(\n readOptionValue(argv, index, \"client-source-maps\"),\n );\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--client-source-maps=\")) {\n parsed.clientSourceMaps = parseCliClientSourceMapMode(\n value.slice(\"--client-source-maps=\".length),\n );\n continue;\n }\n\n if (value.startsWith(\"-\")) {\n throw new Error(`Unknown option ${value}`);\n }\n\n if (parsed.routeArg !== undefined) {\n throw new Error(`Unexpected argument ${value}`);\n }\n\n parsed.routeArg = value;\n }\n\n return parsed;\n}\n\nexport function formatCliHelp(command?: string | undefined): string {\n if (command === \"build\") {\n return [\n \"Usage: mreact-router build [appDir] [options]\",\n \"\",\n \"Build an mreact app router project.\",\n \"\",\n \"Options:\",\n \" --target=node|cloudflare|aws-lambda|all\",\n \" Select build artifacts. aws-lambda writes .mreact/aws-lambda/mreact-handler.mjs and .mreact/server/import-policy.json.\",\n \" --client-source-maps=none|hidden\",\n \" Control production client source map output.\",\n \" -h, --help\",\n \" Show this help message.\",\n \"\",\n \"Examples:\",\n \" mreact-router build --target=node\",\n \" mreact-router build --target=cloudflare\",\n \" mreact-router build --target=aws-lambda\",\n ].join(\"\\n\");\n }\n\n if (command === \"package\") {\n return [\n \"Usage: mreact-router package <target> [options]\",\n \"\",\n \"Package generated build output into a deployable artifact directory.\",\n \"\",\n \"Targets:\",\n \" aws-lambda Minimal AWS Lambda asset directory.\",\n \" cloudflare-pages Cloudflare Pages advanced mode output with _worker.js.\",\n \"\",\n \"Options:\",\n \" --from <dir> Build output directory. Default: .mreact\",\n \" --out <dir> Output directory. Defaults to .lambda for aws-lambda and .mreact/pages for cloudflare-pages.\",\n \" --skip-runtime-dependency-check\",\n \" For aws-lambda only, skip the production node_modules check when a later deploy step installs dependencies into the package directory.\",\n \" -h, --help Show this help message.\",\n \"\",\n \"Examples:\",\n \" mreact-router package aws-lambda --from .mreact --out .lambda\",\n \" mreact-router package cloudflare-pages --from .mreact --out .mreact/pages\",\n ].join(\"\\n\");\n }\n\n if (command === \"start\") {\n return [\n \"Usage: mreact-router start [outDir] [options]\",\n \"\",\n \"Serve built mreact app router output with the Node adapter.\",\n \"\",\n \"Options:\",\n \" --host <host> Bind address. Default: 127.0.0.1. Use 0.0.0.0 inside containers behind explicit port publishing or a reverse proxy.\",\n \" --host-policy=strict|trusted-proxy\",\n \" Control Host header trust for request origin reconstruction.\",\n \" --allowed-hosts <host[,host...]>\",\n \" Exact Host header allow-list for public deployments.\",\n \" --log=requests Print request summaries.\",\n \" -h, --help Show this help message.\",\n \"\",\n \"Environment:\",\n \" HOST Bind address when --host is not set.\",\n \" MREACT_ROUTER_HOST_POLICY\",\n \" Host header trust policy when --host-policy is not set.\",\n \" MREACT_ROUTER_ALLOWED_HOSTS\",\n \" Comma-separated Host header allow-list when --allowed-hosts is not set.\",\n \" PORT TCP port. Default: 3001.\",\n ].join(\"\\n\");\n }\n\n if (command === \"dev\") {\n return [\n \"Usage: mreact-router dev [appDir] [options]\",\n \"\",\n \"Start the mreact app router development server.\",\n \"\",\n \"Options:\",\n \" --port <port> TCP port. Overrides PORT and vite.config.ts server.port.\",\n \" --log=requests Print request summaries.\",\n \" -h, --help Show this help message.\",\n \"\",\n \"Environment:\",\n \" PORT TCP port when --port is not set.\",\n ].join(\"\\n\");\n }\n\n return [\n \"Usage: mreact-router <command> [options]\",\n \"\",\n \"Commands:\",\n \" dev [appDir] Start the development server.\",\n \" build [appDir] Build Node and Cloudflare artifacts by default.\",\n \" build --target=aws-lambda Build Lambda artifacts including generated handler and import policy.\",\n \" start [outDir] Serve built Node output.\",\n \" package aws-lambda --from .mreact --out .lambda\",\n \" Package a minimal AWS Lambda asset directory.\",\n \" package cloudflare-pages --from .mreact --out .mreact/pages\",\n \" Package Cloudflare Pages advanced mode output.\",\n \" help [command] Show help.\",\n \"\",\n \"Options:\",\n \" -h, --help Show this help message.\",\n \" --log=requests Print request summaries for dev/start.\",\n \"\",\n \"Examples:\",\n \" mreact-router build --target=cloudflare\",\n \" mreact-router build --target=aws-lambda\",\n \" mreact-router package aws-lambda --from .mreact --out .lambda\",\n \" mreact-router build --help\",\n ].join(\"\\n\");\n}\n\nexport function buildTargetsFromCliTarget(\n target: CliBuildTarget | undefined,\n): readonly AppRouterBuildTarget[] | undefined {\n if (target === undefined) {\n return undefined;\n }\n\n return target === \"all\" ? [\"node\", \"cloudflare\", \"aws-lambda\"] : [target];\n}\n\nexport function resolveCliRequestLogMode(\n flagValue: CliRequestLogMode | undefined,\n env: { MREACT_ROUTER_LOG?: string | undefined },\n): CliRequestLogMode | undefined {\n if (flagValue !== undefined) {\n return flagValue;\n }\n\n const envValue = env.MREACT_ROUTER_LOG;\n if (envValue === undefined || envValue === \"\") {\n return undefined;\n }\n\n return parseCliRequestLogMode(envValue);\n}\n\nexport function resolveCliHost(\n flagValue: string | undefined,\n env: { HOST?: string | undefined },\n): string {\n if (flagValue !== undefined && flagValue !== \"\") {\n return flagValue;\n }\n\n const envValue = env.HOST;\n return envValue === undefined || envValue === \"\" ? \"127.0.0.1\" : envValue;\n}\n\nexport function resolveCliDevPort(\n flagValue: number | undefined,\n env: { PORT?: string | undefined },\n viteConfigPort: number | undefined,\n): number | undefined {\n if (flagValue !== undefined) {\n return flagValue;\n }\n\n const envValue = env.PORT;\n return envValue === undefined || envValue === \"\" ? viteConfigPort : parseCliPort(envValue);\n}\n\nexport function resolveCliHostPolicy(\n flagValue: RequestHostPolicy | undefined,\n env: { MREACT_ROUTER_HOST_POLICY?: string | undefined },\n): RequestHostPolicy | undefined {\n if (flagValue !== undefined) {\n return flagValue;\n }\n\n const envValue = env.MREACT_ROUTER_HOST_POLICY;\n return envValue === undefined || envValue === \"\" ? undefined : parseCliHostPolicy(envValue);\n}\n\nexport function resolveCliAllowedHosts(\n flagValue: readonly string[] | undefined,\n env: { MREACT_ROUTER_ALLOWED_HOSTS?: string | undefined },\n): readonly string[] | undefined {\n if (flagValue !== undefined) {\n return flagValue;\n }\n\n const envValue = env.MREACT_ROUTER_ALLOWED_HOSTS;\n return envValue === undefined || envValue === \"\" ? undefined : parseCliAllowedHosts(envValue);\n}\n\nexport function createCliRequestLogger(): AppRouterLogger {\n return {\n error(event) {\n if (event.type === \"router:request:error\") {\n console.error(formatCliRequestLogEvent(event));\n }\n },\n info(event) {\n if (event.type === \"router:request:end\") {\n console.log(formatCliRequestLogEvent(event));\n }\n },\n };\n}\n\nfunction parseCliRequestLogMode(value: string): CliRequestLogMode {\n if (value === \"requests\") {\n return value;\n }\n\n throw new Error(`Unsupported log mode ${JSON.stringify(value)}. Expected \"requests\".`);\n}\n\nfunction parseCliPort(value: string): number {\n const port = Number(value);\n\n if (Number.isInteger(port) && port >= 0 && port <= 65535) {\n return port;\n }\n\n throw new Error(`Unsupported port ${JSON.stringify(value)}. Expected an integer from 0 to 65535.`);\n}\n\nfunction parseCliHostPolicy(value: string): RequestHostPolicy {\n if (value === \"strict\" || value === \"trusted-proxy\") {\n return value;\n }\n\n throw new Error(\n `Unsupported host policy ${JSON.stringify(value)}. Expected \"strict\" or \"trusted-proxy\".`,\n );\n}\n\nfunction parseCliAllowedHosts(value: string): readonly string[] {\n return value\n .split(\",\")\n .map((entry) => entry.trim())\n .filter((entry) => entry !== \"\");\n}\n\nfunction parseCliBuildTarget(value: string): CliBuildTarget {\n if (value === \"node\" || value === \"cloudflare\" || value === \"aws-lambda\" || value === \"all\") {\n return value;\n }\n\n throw new Error(\n `Unsupported build target ${JSON.stringify(value)}. Expected \"node\", \"cloudflare\", \"aws-lambda\", or \"all\".`,\n );\n}\n\nfunction parseCliClientSourceMapMode(value: string): AppRouterClientSourceMapMode {\n if (value === \"none\" || value === \"hidden\" || value === \"linked\") {\n return value;\n }\n\n throw new Error(\n `Unsupported client source map mode ${JSON.stringify(value)} for --client-source-maps. Expected \"none\", \"hidden\", or \"linked\".`,\n );\n}\n\nfunction readOptionValue(values: readonly string[], index: number, name: string): string {\n const value = values[index + 1];\n\n if (value === undefined || value.startsWith(\"-\")) {\n throw new Error(`Missing value for --${name}`);\n }\n\n return value;\n}\n\nfunction formatCliRequestLogEvent(event: AppRouterLogEvent): string {\n if (event.type === \"router:request:error\") {\n return `[mreact] ${event.method} ${event.path} error ${event.durationMs}ms ${event.runtime} ${event.error.name}: ${event.error.message}`;\n }\n\n if (event.type === \"router:request:end\") {\n return `[mreact] ${event.method} ${event.path} ${event.status} ${event.durationMs}ms ${event.runtime}`;\n }\n\n if (event.type === \"router:request:timing\") {\n return `[mreact] ${event.method} ${event.path} ${event.status} ${event.durationMs}ms ${event.runtime}`;\n }\n\n if (event.type === \"router:render:timing\") {\n return `[mreact] ${event.method} ${event.path} ${event.status} render timing`;\n }\n\n return `[mreact] ${event.method} ${event.path} ${event.runtime}`;\n}\n"]}
1
+ {"version":3,"file":"cli-options.js","sourceRoot":"","sources":["../src/cli-options.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AppRouterLogger, AppRouterLogEvent } from \"./logger.js\";\nimport type {\n AppRouterBuildTarget,\n AppRouterClientSourceMapMode,\n} from \"./config.js\";\nimport type { RequestHostPolicy } from \"./serve.js\";\n\nexport type CliRequestLogMode = \"requests\";\nexport type CliBuildTarget = AppRouterBuildTarget | \"all\";\n\nexport interface ParsedCliArguments {\n clientSourceMaps?: AppRouterClientSourceMapMode | undefined;\n command: string;\n allowedHosts?: readonly string[] | undefined;\n from?: string | undefined;\n handler?: string | undefined;\n help?: boolean | undefined;\n host?: string | undefined;\n hostPolicy?: RequestHostPolicy | undefined;\n log?: CliRequestLogMode | undefined;\n out?: string | undefined;\n port?: number | undefined;\n routeArg?: string | undefined;\n skipRuntimeDependencyCheck?: boolean | undefined;\n target?: CliBuildTarget | undefined;\n}\n\nexport function parseCliArguments(argv: readonly string[]): ParsedCliArguments {\n const first = argv[0];\n const rootHelp = first === \"--help\" || first === \"-h\";\n const command = rootHelp ? \"help\" : first === undefined || first.startsWith(\"-\") ? \"dev\" : first;\n const parsed: ParsedCliArguments = rootHelp ? { command, help: true } : { command };\n const startIndex = rootHelp || command === first ? 1 : 0;\n\n for (let index = startIndex; index < argv.length; index += 1) {\n const value = argv[index];\n\n if (value === undefined) {\n continue;\n }\n\n if (value === \"--help\" || value === \"-h\") {\n parsed.help = true;\n continue;\n }\n\n if (value === \"--log\") {\n parsed.log = parseCliRequestLogMode(readOptionValue(argv, index, \"log\"));\n index += 1;\n continue;\n }\n\n if (value === \"--port\") {\n parsed.port = parseCliPort(readOptionValue(argv, index, \"port\"));\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--port=\")) {\n parsed.port = parseCliPort(value.slice(\"--port=\".length));\n continue;\n }\n\n if (value === \"--host\") {\n parsed.host = readOptionValue(argv, index, \"host\");\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--host=\")) {\n parsed.host = value.slice(\"--host=\".length);\n continue;\n }\n\n if (value === \"--host-policy\") {\n parsed.hostPolicy = parseCliHostPolicy(readOptionValue(argv, index, \"host-policy\"));\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--host-policy=\")) {\n parsed.hostPolicy = parseCliHostPolicy(value.slice(\"--host-policy=\".length));\n continue;\n }\n\n if (value === \"--allowed-hosts\") {\n parsed.allowedHosts = parseCliAllowedHosts(readOptionValue(argv, index, \"allowed-hosts\"));\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--allowed-hosts=\")) {\n parsed.allowedHosts = parseCliAllowedHosts(value.slice(\"--allowed-hosts=\".length));\n continue;\n }\n\n if (value === \"--from\") {\n parsed.from = readOptionValue(argv, index, \"from\");\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--from=\")) {\n parsed.from = value.slice(\"--from=\".length);\n continue;\n }\n\n if (value === \"--out\") {\n parsed.out = readOptionValue(argv, index, \"out\");\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--out=\")) {\n parsed.out = value.slice(\"--out=\".length);\n continue;\n }\n\n if (value === \"--skip-runtime-dependency-check\") {\n parsed.skipRuntimeDependencyCheck = true;\n continue;\n }\n\n if (value === \"--handler\") {\n parsed.handler = readOptionValue(argv, index, \"handler\");\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--handler=\")) {\n parsed.handler = value.slice(\"--handler=\".length);\n continue;\n }\n\n if (value.startsWith(\"--log=\")) {\n parsed.log = parseCliRequestLogMode(value.slice(\"--log=\".length));\n continue;\n }\n\n if (value === \"--target\") {\n parsed.target = parseCliBuildTarget(readOptionValue(argv, index, \"target\"));\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--target=\")) {\n parsed.target = parseCliBuildTarget(value.slice(\"--target=\".length));\n continue;\n }\n\n if (value === \"--client-source-maps\") {\n parsed.clientSourceMaps = parseCliClientSourceMapMode(\n readOptionValue(argv, index, \"client-source-maps\"),\n );\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--client-source-maps=\")) {\n parsed.clientSourceMaps = parseCliClientSourceMapMode(\n value.slice(\"--client-source-maps=\".length),\n );\n continue;\n }\n\n if (value.startsWith(\"-\")) {\n throw new Error(`Unknown option ${value}`);\n }\n\n if (parsed.routeArg !== undefined) {\n throw new Error(`Unexpected argument ${value}`);\n }\n\n parsed.routeArg = value;\n }\n\n return parsed;\n}\n\nexport function formatCliHelp(command?: string | undefined): string {\n if (command === \"build\") {\n return [\n \"Usage: mreact-router build [appDir] [options]\",\n \"\",\n \"Build an mreact app router project.\",\n \"\",\n \"Options:\",\n \" --target=node|cloudflare|aws-lambda|all\",\n \" Select build artifacts. aws-lambda writes .mreact/aws-lambda/mreact-handler.mjs and .mreact/server/import-policy.json.\",\n \" --client-source-maps=none|hidden\",\n \" Control production client source map output.\",\n \" -h, --help\",\n \" Show this help message.\",\n \"\",\n \"Examples:\",\n \" mreact-router build --target=node\",\n \" mreact-router build --target=cloudflare\",\n \" mreact-router build --target=aws-lambda\",\n ].join(\"\\n\");\n }\n\n if (command === \"package\") {\n return [\n \"Usage: mreact-router package <target> [options]\",\n \"\",\n \"Package generated build output into a deployable artifact directory.\",\n \"\",\n \"Targets:\",\n \" aws-lambda Minimal AWS Lambda asset directory.\",\n \" cloudflare-pages Cloudflare Pages advanced mode output with _worker.js.\",\n \"\",\n \"Options:\",\n \" --from <dir> Build output directory. Default: .mreact\",\n \" --out <dir> Output directory. Defaults to .lambda for aws-lambda and .mreact/pages for cloudflare-pages.\",\n \" --skip-runtime-dependency-check\",\n \" For aws-lambda only, skip the production node_modules check when a later deploy step installs dependencies into the package directory.\",\n \" --handler <entry>\",\n \" For aws-lambda only, bundle a custom handler entry into mreact-handler.mjs. App-local extensionless TypeScript imports are bundled; package imports stay external.\",\n \" -h, --help Show this help message.\",\n \"\",\n \"Examples:\",\n \" mreact-router package aws-lambda --from .mreact --out .lambda\",\n \" mreact-router package cloudflare-pages --from .mreact --out .mreact/pages\",\n ].join(\"\\n\");\n }\n\n if (command === \"start\") {\n return [\n \"Usage: mreact-router start [outDir] [options]\",\n \"\",\n \"Serve built mreact app router output with the Node adapter.\",\n \"\",\n \"Options:\",\n \" --host <host> Bind address. Default: 127.0.0.1. Use 0.0.0.0 inside containers behind explicit port publishing or a reverse proxy.\",\n \" --host-policy=strict|trusted-proxy\",\n \" Control Host header trust for request origin reconstruction.\",\n \" --allowed-hosts <host[,host...]>\",\n \" Exact Host header allow-list for public deployments.\",\n \" --log=requests Print request summaries.\",\n \" -h, --help Show this help message.\",\n \"\",\n \"Environment:\",\n \" HOST Bind address when --host is not set.\",\n \" MREACT_ROUTER_HOST_POLICY\",\n \" Host header trust policy when --host-policy is not set.\",\n \" MREACT_ROUTER_ALLOWED_HOSTS\",\n \" Comma-separated Host header allow-list when --allowed-hosts is not set.\",\n \" PORT TCP port. Default: 3001.\",\n ].join(\"\\n\");\n }\n\n if (command === \"dev\") {\n return [\n \"Usage: mreact-router dev [appDir] [options]\",\n \"\",\n \"Start the mreact app router development server.\",\n \"\",\n \"Options:\",\n \" --port <port> TCP port. Overrides PORT and vite.config.ts server.port.\",\n \" --log=requests Print request summaries.\",\n \" -h, --help Show this help message.\",\n \"\",\n \"Environment:\",\n \" PORT TCP port when --port is not set.\",\n ].join(\"\\n\");\n }\n\n return [\n \"Usage: mreact-router <command> [options]\",\n \"\",\n \"Commands:\",\n \" dev [appDir] Start the development server.\",\n \" build [appDir] Build Node and Cloudflare artifacts by default.\",\n \" build --target=aws-lambda Build Lambda artifacts including generated handler and import policy.\",\n \" start [outDir] Serve built Node output.\",\n \" package aws-lambda --from .mreact --out .lambda\",\n \" Package a minimal AWS Lambda asset directory.\",\n \" package aws-lambda --handler lambda/mreact-handler.ts\",\n \" Bundle a custom Lambda handler with app-local server imports.\",\n \" package cloudflare-pages --from .mreact --out .mreact/pages\",\n \" Package Cloudflare Pages advanced mode output.\",\n \" help [command] Show help.\",\n \"\",\n \"Options:\",\n \" -h, --help Show this help message.\",\n \" --log=requests Print request summaries for dev/start.\",\n \"\",\n \"Examples:\",\n \" mreact-router build --target=cloudflare\",\n \" mreact-router build --target=aws-lambda\",\n \" mreact-router package aws-lambda --from .mreact --out .lambda\",\n \" mreact-router build --help\",\n ].join(\"\\n\");\n}\n\nexport function buildTargetsFromCliTarget(\n target: CliBuildTarget | undefined,\n): readonly AppRouterBuildTarget[] | undefined {\n if (target === undefined) {\n return undefined;\n }\n\n return target === \"all\" ? [\"node\", \"cloudflare\", \"aws-lambda\"] : [target];\n}\n\nexport function resolveCliRequestLogMode(\n flagValue: CliRequestLogMode | undefined,\n env: { MREACT_ROUTER_LOG?: string | undefined },\n): CliRequestLogMode | undefined {\n if (flagValue !== undefined) {\n return flagValue;\n }\n\n const envValue = env.MREACT_ROUTER_LOG;\n if (envValue === undefined || envValue === \"\") {\n return undefined;\n }\n\n return parseCliRequestLogMode(envValue);\n}\n\nexport function resolveCliHost(\n flagValue: string | undefined,\n env: { HOST?: string | undefined },\n): string {\n if (flagValue !== undefined && flagValue !== \"\") {\n return flagValue;\n }\n\n const envValue = env.HOST;\n return envValue === undefined || envValue === \"\" ? \"127.0.0.1\" : envValue;\n}\n\nexport function resolveCliDevPort(\n flagValue: number | undefined,\n env: { PORT?: string | undefined },\n viteConfigPort: number | undefined,\n): number | undefined {\n if (flagValue !== undefined) {\n return flagValue;\n }\n\n const envValue = env.PORT;\n return envValue === undefined || envValue === \"\" ? viteConfigPort : parseCliPort(envValue);\n}\n\nexport function resolveCliHostPolicy(\n flagValue: RequestHostPolicy | undefined,\n env: { MREACT_ROUTER_HOST_POLICY?: string | undefined },\n): RequestHostPolicy | undefined {\n if (flagValue !== undefined) {\n return flagValue;\n }\n\n const envValue = env.MREACT_ROUTER_HOST_POLICY;\n return envValue === undefined || envValue === \"\" ? undefined : parseCliHostPolicy(envValue);\n}\n\nexport function resolveCliAllowedHosts(\n flagValue: readonly string[] | undefined,\n env: { MREACT_ROUTER_ALLOWED_HOSTS?: string | undefined },\n): readonly string[] | undefined {\n if (flagValue !== undefined) {\n return flagValue;\n }\n\n const envValue = env.MREACT_ROUTER_ALLOWED_HOSTS;\n return envValue === undefined || envValue === \"\" ? undefined : parseCliAllowedHosts(envValue);\n}\n\nexport function createCliRequestLogger(): AppRouterLogger {\n return {\n error(event) {\n if (event.type === \"router:request:error\") {\n console.error(formatCliRequestLogEvent(event));\n }\n },\n info(event) {\n if (event.type === \"router:request:end\") {\n console.log(formatCliRequestLogEvent(event));\n }\n },\n };\n}\n\nfunction parseCliRequestLogMode(value: string): CliRequestLogMode {\n if (value === \"requests\") {\n return value;\n }\n\n throw new Error(`Unsupported log mode ${JSON.stringify(value)}. Expected \"requests\".`);\n}\n\nfunction parseCliPort(value: string): number {\n const port = Number(value);\n\n if (Number.isInteger(port) && port >= 0 && port <= 65535) {\n return port;\n }\n\n throw new Error(`Unsupported port ${JSON.stringify(value)}. Expected an integer from 0 to 65535.`);\n}\n\nfunction parseCliHostPolicy(value: string): RequestHostPolicy {\n if (value === \"strict\" || value === \"trusted-proxy\") {\n return value;\n }\n\n throw new Error(\n `Unsupported host policy ${JSON.stringify(value)}. Expected \"strict\" or \"trusted-proxy\".`,\n );\n}\n\nfunction parseCliAllowedHosts(value: string): readonly string[] {\n return value\n .split(\",\")\n .map((entry) => entry.trim())\n .filter((entry) => entry !== \"\");\n}\n\nfunction parseCliBuildTarget(value: string): CliBuildTarget {\n if (value === \"node\" || value === \"cloudflare\" || value === \"aws-lambda\" || value === \"all\") {\n return value;\n }\n\n throw new Error(\n `Unsupported build target ${JSON.stringify(value)}. Expected \"node\", \"cloudflare\", \"aws-lambda\", or \"all\".`,\n );\n}\n\nfunction parseCliClientSourceMapMode(value: string): AppRouterClientSourceMapMode {\n if (value === \"none\" || value === \"hidden\" || value === \"linked\") {\n return value;\n }\n\n throw new Error(\n `Unsupported client source map mode ${JSON.stringify(value)} for --client-source-maps. Expected \"none\", \"hidden\", or \"linked\".`,\n );\n}\n\nfunction readOptionValue(values: readonly string[], index: number, name: string): string {\n const value = values[index + 1];\n\n if (value === undefined || value.startsWith(\"-\")) {\n throw new Error(`Missing value for --${name}`);\n }\n\n return value;\n}\n\nfunction formatCliRequestLogEvent(event: AppRouterLogEvent): string {\n if (event.type === \"router:request:error\") {\n return `[mreact] ${event.method} ${event.path} error ${event.durationMs}ms ${event.runtime} ${event.error.name}: ${event.error.message}`;\n }\n\n if (event.type === \"router:request:end\") {\n return `[mreact] ${event.method} ${event.path} ${event.status} ${event.durationMs}ms ${event.runtime}`;\n }\n\n if (event.type === \"router:request:timing\") {\n return `[mreact] ${event.method} ${event.path} ${event.status} ${event.durationMs}ms ${event.runtime}`;\n }\n\n if (event.type === \"router:render:timing\") {\n return `[mreact] ${event.method} ${event.path} ${event.status} render timing`;\n }\n\n if (event.type === \"router:csp:inline-nonce-warning\") {\n return `[mreact] ${event.path} CSP ${event.directive} will block inline <${event.tag}> without a matching nonce`;\n }\n\n return `[mreact] ${event.method} ${event.path} ${event.runtime}`;\n}\n"]}
package/dist/cli.js CHANGED
@@ -43,6 +43,7 @@ if (parsed !== undefined) {
43
43
  if (routeArg === "aws-lambda") {
44
44
  const manifest = await packageAwsLambdaArtifact({
45
45
  fromDir: resolve(parsed.from ?? ".mreact"),
46
+ ...(parsed.handler === undefined ? {} : { handlerEntry: resolve(parsed.handler) }),
46
47
  outDir: resolve(parsed.out ?? ".lambda"),
47
48
  skipRuntimeDependencyCheck: parsed.skipRuntimeDependencyCheck,
48
49
  });
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,iCAAiC,EAAE,MAAM,kBAAkB,CAAC;AAErE,IAAI,MAAM,CAAC;AAEX,IAAI,CAAC;IACH,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEjC,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GACV,wBAAwB,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU;gBAC9D,CAAC,CAAC,sBAAsB,EAAE;gBAC1B,CAAC,CAAC,SAAS,CAAC;YAEhB,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBACxB,MAAM,MAAM,GACV,QAAQ,KAAK,SAAS;oBACpB,CAAC,CAAC,MAAM,iCAAiC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;oBACnF,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;gBACxE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;oBAC5B,GAAG,MAAM,CAAC,OAAO;oBACjB,GAAG,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS;wBACvC,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBAClD,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC;oBAC1B,OAAO,EAAE,yBAAyB,CAAC,MAAM,CAAC,MAAM,CAAC;oBACjD,UAAU,EAAE,MAAM,CAAC,UAAU;iBAC9B,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,UAAU,CAAC,CAAC;YACvD,CAAC;iBAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACjC,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;oBAC9B,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC;wBAC9C,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC;wBAC1C,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC;wBACxC,0BAA0B,EAAE,MAAM,CAAC,0BAA0B;qBAC9D,CAAC,CAAC;oBACH,OAAO,CAAC,GAAG,CACT,qCAAqC,QAAQ,CAAC,KAAK,CAAC,MAAM,WAAW,QAAQ,CAAC,UAAU,UAAU,CACnG,CAAC;gBACJ,CAAC;qBAAM,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;oBAC3C,MAAM,QAAQ,GAAG,MAAM,8BAA8B,CAAC;wBACpD,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC;wBAC1C,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC;qBAC/C,CAAC,CAAC;oBACH,OAAO,CAAC,GAAG,CACT,2CAA2C,QAAQ,CAAC,KAAK,CAAC,MAAM,WAAW,QAAQ,CAAC,UAAU,UAAU,CACzG,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CACb,8BAA8B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,gDAAgD,CACvG,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC7B,MAAM,MAAM,GACV,QAAQ,KAAK,SAAS;oBACpB,CAAC,CAAC,MAAM,iCAAiC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;oBACnF,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;gBAC/F,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;oBAClC,GAAG,MAAM,CAAC,OAAO;oBACjB,MAAM;oBACN,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;oBACpE,UAAU,EAAE,MAAM,CAAC,UAAU;iBAC9B,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YAC1D,CAAC;iBAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;oBAC/B,YAAY,EAAE,sBAAsB,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC;oBACtE,UAAU,EAAE,oBAAoB,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC;oBAChE,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;oBAClD,MAAM;oBACN,MAAM,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC;oBACtC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;iBACvC,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,6CAA6C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YACzE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;gBAC7C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC","sourcesContent":["#!/usr/bin/env node\n\nimport { resolve } from \"node:path\";\nimport { buildApp, packageAwsLambdaArtifact, packageCloudflarePagesArtifact } from \"./build.js\";\nimport {\n buildTargetsFromCliTarget,\n createCliRequestLogger,\n formatCliHelp,\n parseCliArguments,\n resolveCliAllowedHosts,\n resolveCliDevPort,\n resolveCliHost,\n resolveCliHostPolicy,\n resolveCliRequestLogMode,\n} from \"./cli-options.js\";\nimport { startDevServer } from \"./dev-server.js\";\nimport { startServer } from \"./serve.js\";\nimport { loadMreactRouterViteConfigDetails } from \"./vite-config.js\";\n\nlet parsed;\n\ntry {\n parsed = parseCliArguments(process.argv.slice(2));\n} catch (error) {\n console.error(error instanceof Error ? error.message : String(error));\n process.exitCode = 1;\n}\n\nif (parsed !== undefined) {\n const command = parsed.command;\n const routeArg = parsed.routeArg;\n\n try {\n if (parsed.help === true || command === \"help\") {\n console.log(formatCliHelp(command === \"help\" ? routeArg : command));\n } else {\n const logger =\n resolveCliRequestLogMode(parsed.log, process.env) === \"requests\"\n ? createCliRequestLogger()\n : undefined;\n\n if (command === \"build\") {\n const loaded =\n routeArg === undefined\n ? await loadMreactRouterViteConfigDetails({ command: \"build\", cwd: process.cwd() })\n : { project: { appDir: resolve(routeArg) }, viteConfig: undefined };\n const result = await buildApp({\n ...loaded.project,\n ...(parsed.clientSourceMaps === undefined\n ? {}\n : { clientSourceMaps: parsed.clientSourceMaps }),\n outDir: resolve(\".mreact\"),\n targets: buildTargetsFromCliTarget(parsed.target),\n viteConfig: loaded.viteConfig,\n });\n console.log(`Built ${result.routes.length} routes.`);\n } else if (command === \"package\") {\n if (routeArg === \"aws-lambda\") {\n const manifest = await packageAwsLambdaArtifact({\n fromDir: resolve(parsed.from ?? \".mreact\"),\n outDir: resolve(parsed.out ?? \".lambda\"),\n skipRuntimeDependencyCheck: parsed.skipRuntimeDependencyCheck,\n });\n console.log(\n `Packaged AWS Lambda artifact with ${manifest.files.length} files (${manifest.totalBytes} bytes).`,\n );\n } else if (routeArg === \"cloudflare-pages\") {\n const manifest = await packageCloudflarePagesArtifact({\n fromDir: resolve(parsed.from ?? \".mreact\"),\n outDir: resolve(parsed.out ?? \".mreact/pages\"),\n });\n console.log(\n `Packaged Cloudflare Pages artifact with ${manifest.files.length} files (${manifest.totalBytes} bytes).`,\n );\n } else {\n throw new Error(\n `Unsupported package target ${JSON.stringify(routeArg)}. Expected \"aws-lambda\" or \"cloudflare-pages\".`,\n );\n }\n } else if (command === \"dev\") {\n const loaded =\n routeArg === undefined\n ? await loadMreactRouterViteConfigDetails({ command: \"serve\", cwd: process.cwd() })\n : { project: { appDir: resolve(routeArg) }, serverPort: undefined, viteConfig: undefined };\n const server = await startDevServer({\n ...loaded.project,\n logger,\n port: resolveCliDevPort(parsed.port, process.env, loaded.serverPort),\n viteConfig: loaded.viteConfig,\n });\n console.log(`mreact app router ready at ${server.url}`);\n } else if (command === \"start\") {\n const server = await startServer({\n allowedHosts: resolveCliAllowedHosts(parsed.allowedHosts, process.env),\n hostPolicy: resolveCliHostPolicy(parsed.hostPolicy, process.env),\n hostname: resolveCliHost(parsed.host, process.env),\n logger,\n outDir: resolve(routeArg ?? \".mreact\"),\n port: Number(process.env.PORT ?? 3001),\n });\n console.log(`mreact app router serving built output at ${server.url}`);\n } else {\n console.error(`Unknown command: ${command}`);\n process.exitCode = 1;\n }\n }\n } catch (error) {\n console.error(error instanceof Error ? error.message : String(error));\n process.exitCode = 1;\n }\n}\n"]}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport { resolve } from \"node:path\";\nimport { buildApp, packageAwsLambdaArtifact, packageCloudflarePagesArtifact } from \"./build.js\";\nimport {\n buildTargetsFromCliTarget,\n createCliRequestLogger,\n formatCliHelp,\n parseCliArguments,\n resolveCliAllowedHosts,\n resolveCliDevPort,\n resolveCliHost,\n resolveCliHostPolicy,\n resolveCliRequestLogMode,\n} from \"./cli-options.js\";\nimport { startDevServer } from \"./dev-server.js\";\nimport { startServer } from \"./serve.js\";\nimport { loadMreactRouterViteConfigDetails } from \"./vite-config.js\";\n\nlet parsed;\n\ntry {\n parsed = parseCliArguments(process.argv.slice(2));\n} catch (error) {\n console.error(error instanceof Error ? error.message : String(error));\n process.exitCode = 1;\n}\n\nif (parsed !== undefined) {\n const command = parsed.command;\n const routeArg = parsed.routeArg;\n\n try {\n if (parsed.help === true || command === \"help\") {\n console.log(formatCliHelp(command === \"help\" ? routeArg : command));\n } else {\n const logger =\n resolveCliRequestLogMode(parsed.log, process.env) === \"requests\"\n ? createCliRequestLogger()\n : undefined;\n\n if (command === \"build\") {\n const loaded =\n routeArg === undefined\n ? await loadMreactRouterViteConfigDetails({ command: \"build\", cwd: process.cwd() })\n : { project: { appDir: resolve(routeArg) }, viteConfig: undefined };\n const result = await buildApp({\n ...loaded.project,\n ...(parsed.clientSourceMaps === undefined\n ? {}\n : { clientSourceMaps: parsed.clientSourceMaps }),\n outDir: resolve(\".mreact\"),\n targets: buildTargetsFromCliTarget(parsed.target),\n viteConfig: loaded.viteConfig,\n });\n console.log(`Built ${result.routes.length} routes.`);\n } else if (command === \"package\") {\n if (routeArg === \"aws-lambda\") {\n const manifest = await packageAwsLambdaArtifact({\n fromDir: resolve(parsed.from ?? \".mreact\"),\n ...(parsed.handler === undefined ? {} : { handlerEntry: resolve(parsed.handler) }),\n outDir: resolve(parsed.out ?? \".lambda\"),\n skipRuntimeDependencyCheck: parsed.skipRuntimeDependencyCheck,\n });\n console.log(\n `Packaged AWS Lambda artifact with ${manifest.files.length} files (${manifest.totalBytes} bytes).`,\n );\n } else if (routeArg === \"cloudflare-pages\") {\n const manifest = await packageCloudflarePagesArtifact({\n fromDir: resolve(parsed.from ?? \".mreact\"),\n outDir: resolve(parsed.out ?? \".mreact/pages\"),\n });\n console.log(\n `Packaged Cloudflare Pages artifact with ${manifest.files.length} files (${manifest.totalBytes} bytes).`,\n );\n } else {\n throw new Error(\n `Unsupported package target ${JSON.stringify(routeArg)}. Expected \"aws-lambda\" or \"cloudflare-pages\".`,\n );\n }\n } else if (command === \"dev\") {\n const loaded =\n routeArg === undefined\n ? await loadMreactRouterViteConfigDetails({ command: \"serve\", cwd: process.cwd() })\n : { project: { appDir: resolve(routeArg) }, serverPort: undefined, viteConfig: undefined };\n const server = await startDevServer({\n ...loaded.project,\n logger,\n port: resolveCliDevPort(parsed.port, process.env, loaded.serverPort),\n viteConfig: loaded.viteConfig,\n });\n console.log(`mreact app router ready at ${server.url}`);\n } else if (command === \"start\") {\n const server = await startServer({\n allowedHosts: resolveCliAllowedHosts(parsed.allowedHosts, process.env),\n hostPolicy: resolveCliHostPolicy(parsed.hostPolicy, process.env),\n hostname: resolveCliHost(parsed.host, process.env),\n logger,\n outDir: resolve(routeArg ?? \".mreact\"),\n port: Number(process.env.PORT ?? 3001),\n });\n console.log(`mreact app router serving built output at ${server.url}`);\n } else {\n console.error(`Unknown command: ${command}`);\n process.exitCode = 1;\n }\n }\n } catch (error) {\n console.error(error instanceof Error ? error.message : String(error));\n process.exitCode = 1;\n }\n}\n"]}
package/dist/client.d.ts CHANGED
@@ -20,6 +20,7 @@ export interface ClientRouteManifestEntry {
20
20
  sourceMap?: string;
21
21
  }
22
22
  export interface BuildClientRouteOutputOptions {
23
+ cacheDir?: string | undefined;
23
24
  code: string;
24
25
  clientBoundaryImports?: readonly string[] | undefined;
25
26
  clientReferenceImports?: readonly ClientReferenceImport[] | undefined;
@@ -70,14 +71,16 @@ export interface ClientRouteReferenceResult extends ClientRouteInferenceResult {
70
71
  usesNavigationLink: boolean;
71
72
  }
72
73
  export interface ClientRouteInferenceDiagnostic {
73
- code: typeof clientBoundaryInferenceServerOnlyReferenceCode | typeof clientBoundaryInferenceUnsupportedReferenceCode;
74
+ code: typeof clientBoundaryInferenceServerOnlyReferenceCode | typeof clientBoundaryInferenceFunctionCallInteractiveCode | typeof clientBoundaryInferenceUnsupportedReferenceCode;
74
75
  filename: string;
75
76
  level: "warn";
76
77
  localNames: string[];
77
78
  message: string;
79
+ routePath?: string | undefined;
78
80
  source: string;
79
81
  }
80
82
  declare const clientBoundaryInferenceServerOnlyReferenceCode = "MR_CLIENT_BOUNDARY_INFERENCE_SERVER_ONLY_REFERENCE";
83
+ declare const clientBoundaryInferenceFunctionCallInteractiveCode = "MR_CLIENT_BOUNDARY_INFERENCE_FUNCTION_CALL_INTERACTIVE";
81
84
  declare const clientBoundaryInferenceUnsupportedReferenceCode = "MR_CLIENT_BOUNDARY_INFERENCE_UNSUPPORTED_REFERENCE";
82
85
  export declare function routeToClientManifestEntry(route: AppRoute): Promise<ClientRouteManifestEntry>;
83
86
  export declare function createClientRouteInferenceCache(): ClientRouteInferenceCache;
@@ -103,6 +106,7 @@ export declare function collectClientRouteReferences(options: {
103
106
  cache?: ClientRouteInferenceCache | undefined;
104
107
  code: string;
105
108
  filename: string;
109
+ routePath?: string | undefined;
106
110
  vitePlugins?: readonly PluginOption[] | undefined;
107
111
  }): Promise<ClientRouteReferenceResult>;
108
112
  export declare function resolveNavigationRuntime(options: {
@@ -168,6 +172,7 @@ export declare function buildClientRouteOutput(options: BuildClientRouteOutputOp
168
172
  }>;
169
173
  export declare function buildClientRouteBatchOutput(options: {
170
174
  assetBaseUrl?: string | undefined;
175
+ cacheDir?: string | undefined;
171
176
  dropConsoleFunctions?: readonly string[] | undefined;
172
177
  minify?: boolean;
173
178
  projectRoot?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}