vinext 0.0.0 → 0.0.1

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 (272) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/build/static-export.d.ts +78 -0
  4. package/dist/build/static-export.d.ts.map +1 -0
  5. package/dist/build/static-export.js +553 -0
  6. package/dist/build/static-export.js.map +1 -0
  7. package/dist/check.d.ts +52 -0
  8. package/dist/check.d.ts.map +1 -0
  9. package/dist/check.js +483 -0
  10. package/dist/check.js.map +1 -0
  11. package/dist/cli.d.ts +15 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +565 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/client/entry.d.ts +2 -0
  16. package/dist/client/entry.d.ts.map +1 -0
  17. package/dist/client/entry.js +85 -0
  18. package/dist/client/entry.js.map +1 -0
  19. package/dist/cloudflare/index.d.ts +8 -0
  20. package/dist/cloudflare/index.d.ts.map +1 -0
  21. package/dist/cloudflare/index.js +8 -0
  22. package/dist/cloudflare/index.js.map +1 -0
  23. package/dist/cloudflare/kv-cache-handler.d.ts +68 -0
  24. package/dist/cloudflare/kv-cache-handler.d.ts.map +1 -0
  25. package/dist/cloudflare/kv-cache-handler.js +304 -0
  26. package/dist/cloudflare/kv-cache-handler.js.map +1 -0
  27. package/dist/cloudflare/tpr.d.ts +78 -0
  28. package/dist/cloudflare/tpr.d.ts.map +1 -0
  29. package/dist/cloudflare/tpr.js +672 -0
  30. package/dist/cloudflare/tpr.js.map +1 -0
  31. package/dist/config/config-matchers.d.ts +106 -0
  32. package/dist/config/config-matchers.d.ts.map +1 -0
  33. package/dist/config/config-matchers.js +499 -0
  34. package/dist/config/config-matchers.js.map +1 -0
  35. package/dist/config/next-config.d.ts +153 -0
  36. package/dist/config/next-config.d.ts.map +1 -0
  37. package/dist/config/next-config.js +274 -0
  38. package/dist/config/next-config.js.map +1 -0
  39. package/dist/deploy.d.ts +87 -0
  40. package/dist/deploy.d.ts.map +1 -0
  41. package/dist/deploy.js +644 -0
  42. package/dist/deploy.js.map +1 -0
  43. package/dist/index.d.ts +156 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +3287 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/init.d.ts +55 -0
  48. package/dist/init.d.ts.map +1 -0
  49. package/dist/init.js +201 -0
  50. package/dist/init.js.map +1 -0
  51. package/dist/routing/app-router.d.ts +96 -0
  52. package/dist/routing/app-router.d.ts.map +1 -0
  53. package/dist/routing/app-router.js +815 -0
  54. package/dist/routing/app-router.js.map +1 -0
  55. package/dist/routing/pages-router.d.ts +52 -0
  56. package/dist/routing/pages-router.d.ts.map +1 -0
  57. package/dist/routing/pages-router.js +239 -0
  58. package/dist/routing/pages-router.js.map +1 -0
  59. package/dist/server/api-handler.d.ts +18 -0
  60. package/dist/server/api-handler.d.ts.map +1 -0
  61. package/dist/server/api-handler.js +169 -0
  62. package/dist/server/api-handler.js.map +1 -0
  63. package/dist/server/app-dev-server.d.ts +42 -0
  64. package/dist/server/app-dev-server.d.ts.map +1 -0
  65. package/dist/server/app-dev-server.js +2718 -0
  66. package/dist/server/app-dev-server.js.map +1 -0
  67. package/dist/server/app-router-entry.d.ts +18 -0
  68. package/dist/server/app-router-entry.d.ts.map +1 -0
  69. package/dist/server/app-router-entry.js +34 -0
  70. package/dist/server/app-router-entry.js.map +1 -0
  71. package/dist/server/dev-server.d.ts +40 -0
  72. package/dist/server/dev-server.d.ts.map +1 -0
  73. package/dist/server/dev-server.js +758 -0
  74. package/dist/server/dev-server.js.map +1 -0
  75. package/dist/server/html.d.ts +22 -0
  76. package/dist/server/html.d.ts.map +1 -0
  77. package/dist/server/html.js +29 -0
  78. package/dist/server/html.js.map +1 -0
  79. package/dist/server/image-optimization.d.ts +56 -0
  80. package/dist/server/image-optimization.d.ts.map +1 -0
  81. package/dist/server/image-optimization.js +103 -0
  82. package/dist/server/image-optimization.js.map +1 -0
  83. package/dist/server/instrumentation.d.ts +68 -0
  84. package/dist/server/instrumentation.d.ts.map +1 -0
  85. package/dist/server/instrumentation.js +90 -0
  86. package/dist/server/instrumentation.js.map +1 -0
  87. package/dist/server/isr-cache.d.ts +61 -0
  88. package/dist/server/isr-cache.d.ts.map +1 -0
  89. package/dist/server/isr-cache.js +134 -0
  90. package/dist/server/isr-cache.js.map +1 -0
  91. package/dist/server/metadata-routes.d.ts +103 -0
  92. package/dist/server/metadata-routes.d.ts.map +1 -0
  93. package/dist/server/metadata-routes.js +270 -0
  94. package/dist/server/metadata-routes.js.map +1 -0
  95. package/dist/server/middleware.d.ts +77 -0
  96. package/dist/server/middleware.d.ts.map +1 -0
  97. package/dist/server/middleware.js +228 -0
  98. package/dist/server/middleware.js.map +1 -0
  99. package/dist/server/prod-server.d.ts +78 -0
  100. package/dist/server/prod-server.d.ts.map +1 -0
  101. package/dist/server/prod-server.js +712 -0
  102. package/dist/server/prod-server.js.map +1 -0
  103. package/dist/shims/amp.d.ts +17 -0
  104. package/dist/shims/amp.d.ts.map +1 -0
  105. package/dist/shims/amp.js +21 -0
  106. package/dist/shims/amp.js.map +1 -0
  107. package/dist/shims/app.d.ts +12 -0
  108. package/dist/shims/app.d.ts.map +1 -0
  109. package/dist/shims/app.js +2 -0
  110. package/dist/shims/app.js.map +1 -0
  111. package/dist/shims/cache-runtime.d.ts +68 -0
  112. package/dist/shims/cache-runtime.d.ts.map +1 -0
  113. package/dist/shims/cache-runtime.js +437 -0
  114. package/dist/shims/cache-runtime.js.map +1 -0
  115. package/dist/shims/cache.d.ts +243 -0
  116. package/dist/shims/cache.d.ts.map +1 -0
  117. package/dist/shims/cache.js +415 -0
  118. package/dist/shims/cache.js.map +1 -0
  119. package/dist/shims/client-only.d.ts +18 -0
  120. package/dist/shims/client-only.d.ts.map +1 -0
  121. package/dist/shims/client-only.js +18 -0
  122. package/dist/shims/client-only.js.map +1 -0
  123. package/dist/shims/config.d.ts +27 -0
  124. package/dist/shims/config.d.ts.map +1 -0
  125. package/dist/shims/config.js +30 -0
  126. package/dist/shims/config.js.map +1 -0
  127. package/dist/shims/constants.d.ts +13 -0
  128. package/dist/shims/constants.d.ts.map +1 -0
  129. package/dist/shims/constants.js +13 -0
  130. package/dist/shims/constants.js.map +1 -0
  131. package/dist/shims/document.d.ts +33 -0
  132. package/dist/shims/document.d.ts.map +1 -0
  133. package/dist/shims/document.js +32 -0
  134. package/dist/shims/document.js.map +1 -0
  135. package/dist/shims/dynamic.d.ts +33 -0
  136. package/dist/shims/dynamic.d.ts.map +1 -0
  137. package/dist/shims/dynamic.js +148 -0
  138. package/dist/shims/dynamic.js.map +1 -0
  139. package/dist/shims/error-boundary.d.ts +33 -0
  140. package/dist/shims/error-boundary.d.ts.map +1 -0
  141. package/dist/shims/error-boundary.js +88 -0
  142. package/dist/shims/error-boundary.js.map +1 -0
  143. package/dist/shims/error.d.ts +16 -0
  144. package/dist/shims/error.d.ts.map +1 -0
  145. package/dist/shims/error.js +45 -0
  146. package/dist/shims/error.js.map +1 -0
  147. package/dist/shims/fetch-cache.d.ts +61 -0
  148. package/dist/shims/fetch-cache.d.ts.map +1 -0
  149. package/dist/shims/fetch-cache.js +307 -0
  150. package/dist/shims/fetch-cache.js.map +1 -0
  151. package/dist/shims/font-google.d.ts +122 -0
  152. package/dist/shims/font-google.d.ts.map +1 -0
  153. package/dist/shims/font-google.js +387 -0
  154. package/dist/shims/font-google.js.map +1 -0
  155. package/dist/shims/font-local.d.ts +61 -0
  156. package/dist/shims/font-local.d.ts.map +1 -0
  157. package/dist/shims/font-local.js +303 -0
  158. package/dist/shims/font-local.js.map +1 -0
  159. package/dist/shims/form.d.ts +30 -0
  160. package/dist/shims/form.d.ts.map +1 -0
  161. package/dist/shims/form.js +78 -0
  162. package/dist/shims/form.js.map +1 -0
  163. package/dist/shims/head-state.d.ts +11 -0
  164. package/dist/shims/head-state.d.ts.map +1 -0
  165. package/dist/shims/head-state.js +47 -0
  166. package/dist/shims/head-state.js.map +1 -0
  167. package/dist/shims/head.d.ts +28 -0
  168. package/dist/shims/head.d.ts.map +1 -0
  169. package/dist/shims/head.js +148 -0
  170. package/dist/shims/head.js.map +1 -0
  171. package/dist/shims/headers.d.ts +150 -0
  172. package/dist/shims/headers.d.ts.map +1 -0
  173. package/dist/shims/headers.js +412 -0
  174. package/dist/shims/headers.js.map +1 -0
  175. package/dist/shims/image-config.d.ts +30 -0
  176. package/dist/shims/image-config.d.ts.map +1 -0
  177. package/dist/shims/image-config.js +91 -0
  178. package/dist/shims/image-config.js.map +1 -0
  179. package/dist/shims/image.d.ts +63 -0
  180. package/dist/shims/image.d.ts.map +1 -0
  181. package/dist/shims/image.js +284 -0
  182. package/dist/shims/image.js.map +1 -0
  183. package/dist/shims/internal/api-utils.d.ts +12 -0
  184. package/dist/shims/internal/api-utils.d.ts.map +1 -0
  185. package/dist/shims/internal/api-utils.js +7 -0
  186. package/dist/shims/internal/api-utils.js.map +1 -0
  187. package/dist/shims/internal/app-router-context.d.ts +21 -0
  188. package/dist/shims/internal/app-router-context.d.ts.map +1 -0
  189. package/dist/shims/internal/app-router-context.js +15 -0
  190. package/dist/shims/internal/app-router-context.js.map +1 -0
  191. package/dist/shims/internal/cookies.d.ts +9 -0
  192. package/dist/shims/internal/cookies.d.ts.map +1 -0
  193. package/dist/shims/internal/cookies.js +9 -0
  194. package/dist/shims/internal/cookies.js.map +1 -0
  195. package/dist/shims/internal/router-context.d.ts +2 -0
  196. package/dist/shims/internal/router-context.d.ts.map +1 -0
  197. package/dist/shims/internal/router-context.js +9 -0
  198. package/dist/shims/internal/router-context.js.map +1 -0
  199. package/dist/shims/internal/utils.d.ts +48 -0
  200. package/dist/shims/internal/utils.d.ts.map +1 -0
  201. package/dist/shims/internal/utils.js +35 -0
  202. package/dist/shims/internal/utils.js.map +1 -0
  203. package/dist/shims/internal/work-unit-async-storage.d.ts +12 -0
  204. package/dist/shims/internal/work-unit-async-storage.d.ts.map +1 -0
  205. package/dist/shims/internal/work-unit-async-storage.js +13 -0
  206. package/dist/shims/internal/work-unit-async-storage.js.map +1 -0
  207. package/dist/shims/layout-segment-context.d.ts +21 -0
  208. package/dist/shims/layout-segment-context.d.ts.map +1 -0
  209. package/dist/shims/layout-segment-context.js +27 -0
  210. package/dist/shims/layout-segment-context.js.map +1 -0
  211. package/dist/shims/legacy-image.d.ts +52 -0
  212. package/dist/shims/legacy-image.d.ts.map +1 -0
  213. package/dist/shims/legacy-image.js +46 -0
  214. package/dist/shims/legacy-image.js.map +1 -0
  215. package/dist/shims/link.d.ts +48 -0
  216. package/dist/shims/link.d.ts.map +1 -0
  217. package/dist/shims/link.js +395 -0
  218. package/dist/shims/link.js.map +1 -0
  219. package/dist/shims/metadata.d.ts +184 -0
  220. package/dist/shims/metadata.d.ts.map +1 -0
  221. package/dist/shims/metadata.js +472 -0
  222. package/dist/shims/metadata.js.map +1 -0
  223. package/dist/shims/navigation-state.d.ts +14 -0
  224. package/dist/shims/navigation-state.d.ts.map +1 -0
  225. package/dist/shims/navigation-state.js +77 -0
  226. package/dist/shims/navigation-state.js.map +1 -0
  227. package/dist/shims/navigation.d.ts +201 -0
  228. package/dist/shims/navigation.d.ts.map +1 -0
  229. package/dist/shims/navigation.js +672 -0
  230. package/dist/shims/navigation.js.map +1 -0
  231. package/dist/shims/og.d.ts +20 -0
  232. package/dist/shims/og.d.ts.map +1 -0
  233. package/dist/shims/og.js +19 -0
  234. package/dist/shims/og.js.map +1 -0
  235. package/dist/shims/router-state.d.ts +11 -0
  236. package/dist/shims/router-state.d.ts.map +1 -0
  237. package/dist/shims/router-state.js +56 -0
  238. package/dist/shims/router-state.js.map +1 -0
  239. package/dist/shims/router.d.ts +103 -0
  240. package/dist/shims/router.d.ts.map +1 -0
  241. package/dist/shims/router.js +536 -0
  242. package/dist/shims/router.js.map +1 -0
  243. package/dist/shims/script.d.ts +58 -0
  244. package/dist/shims/script.d.ts.map +1 -0
  245. package/dist/shims/script.js +163 -0
  246. package/dist/shims/script.js.map +1 -0
  247. package/dist/shims/server-only.d.ts +19 -0
  248. package/dist/shims/server-only.d.ts.map +1 -0
  249. package/dist/shims/server-only.js +19 -0
  250. package/dist/shims/server-only.js.map +1 -0
  251. package/dist/shims/server.d.ts +178 -0
  252. package/dist/shims/server.d.ts.map +1 -0
  253. package/dist/shims/server.js +377 -0
  254. package/dist/shims/server.js.map +1 -0
  255. package/dist/shims/web-vitals.d.ts +24 -0
  256. package/dist/shims/web-vitals.d.ts.map +1 -0
  257. package/dist/shims/web-vitals.js +17 -0
  258. package/dist/shims/web-vitals.js.map +1 -0
  259. package/dist/utils/hash.d.ts +6 -0
  260. package/dist/utils/hash.d.ts.map +1 -0
  261. package/dist/utils/hash.js +20 -0
  262. package/dist/utils/hash.js.map +1 -0
  263. package/dist/utils/project.d.ts +36 -0
  264. package/dist/utils/project.d.ts.map +1 -0
  265. package/dist/utils/project.js +112 -0
  266. package/dist/utils/project.js.map +1 -0
  267. package/dist/utils/query.d.ts +10 -0
  268. package/dist/utils/query.d.ts.map +1 -0
  269. package/dist/utils/query.js +27 -0
  270. package/dist/utils/query.js.map +1 -0
  271. package/package.json +65 -7
  272. package/index.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tpr.js","sourceRoot":"","sources":["../../src/cloudflare/tpr.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Config pattern matching and rule application utilities.
3
+ *
4
+ * Shared between the dev server (index.ts) and the production server
5
+ * (prod-server.ts) so both apply next.config.js rules identically.
6
+ */
7
+ import type { NextRedirect, NextRewrite, NextHeader, HasCondition } from "./next-config.js";
8
+ /**
9
+ * Detect regex patterns vulnerable to catastrophic backtracking (ReDoS).
10
+ *
11
+ * Uses a lightweight heuristic: scans the pattern string for nested quantifiers
12
+ * (a quantifier applied to a group that itself contains a quantifier). This
13
+ * catches the most common pathological patterns like `(a+)+`, `(.*)*`,
14
+ * `([^/]+)+`, `(a|a+)+` without needing a full regex parser.
15
+ *
16
+ * Returns true if the pattern appears safe, false if it's potentially dangerous.
17
+ */
18
+ export declare function isSafeRegex(pattern: string): boolean;
19
+ /**
20
+ * Compile a regex pattern safely. Returns the compiled RegExp or null if the
21
+ * pattern is invalid or vulnerable to ReDoS.
22
+ *
23
+ * Logs a warning when a pattern is rejected so developers can fix their config.
24
+ */
25
+ export declare function safeRegExp(pattern: string, flags?: string): RegExp | null;
26
+ /**
27
+ * Request context needed for evaluating has/missing conditions.
28
+ * Callers extract the relevant parts from the incoming Request.
29
+ */
30
+ export interface RequestContext {
31
+ headers: Headers;
32
+ cookies: Record<string, string>;
33
+ query: URLSearchParams;
34
+ host: string;
35
+ }
36
+ /**
37
+ * Parse a Cookie header string into a key-value record.
38
+ */
39
+ export declare function parseCookies(cookieHeader: string | null): Record<string, string>;
40
+ /**
41
+ * Build a RequestContext from a Web Request object.
42
+ */
43
+ export declare function requestContextFromRequest(request: Request): RequestContext;
44
+ /**
45
+ * Check all has/missing conditions for a config rule.
46
+ * Returns true if the rule should be applied (all has conditions pass, all missing conditions pass).
47
+ *
48
+ * - has: every condition must match (the request must have it)
49
+ * - missing: every condition must NOT match (the request must not have it)
50
+ */
51
+ export declare function checkHasConditions(has: HasCondition[] | undefined, missing: HasCondition[] | undefined, ctx: RequestContext): boolean;
52
+ /**
53
+ * Match a Next.js config pattern (from redirects/rewrites sources) against a pathname.
54
+ * Returns matched params or null.
55
+ *
56
+ * Supports:
57
+ * :param - matches a single path segment
58
+ * :param* - matches zero or more segments (catch-all)
59
+ * :param+ - matches one or more segments
60
+ * (regex) - inline regex patterns in the source
61
+ * :param(constraint) - named param with inline regex constraint
62
+ */
63
+ export declare function matchConfigPattern(pathname: string, pattern: string): Record<string, string> | null;
64
+ /**
65
+ * Apply redirect rules from next.config.js.
66
+ * Returns the redirect info if a redirect was matched, or null.
67
+ *
68
+ * When `ctx` is provided, has/missing conditions on the redirect rules
69
+ * are evaluated against the request context (cookies, headers, query, host).
70
+ */
71
+ export declare function matchRedirect(pathname: string, redirects: NextRedirect[], ctx?: RequestContext): {
72
+ destination: string;
73
+ permanent: boolean;
74
+ } | null;
75
+ /**
76
+ * Apply rewrite rules from next.config.js.
77
+ * Returns the rewritten URL or null if no rewrite matched.
78
+ *
79
+ * When `ctx` is provided, has/missing conditions on the rewrite rules
80
+ * are evaluated against the request context (cookies, headers, query, host).
81
+ */
82
+ export declare function matchRewrite(pathname: string, rewrites: NextRewrite[], ctx?: RequestContext): string | null;
83
+ /**
84
+ * Check if a URL is an external (absolute) URL.
85
+ * Returns true for URLs starting with http:// or https://.
86
+ */
87
+ export declare function isExternalUrl(url: string): boolean;
88
+ /**
89
+ * Proxy an incoming request to an external URL and return the upstream response.
90
+ *
91
+ * Used for external rewrites (e.g. `/ph/:path*` → `https://us.i.posthog.com/:path*`).
92
+ * Next.js handles these as server-side reverse proxies, forwarding the request
93
+ * method, headers, and body to the external destination.
94
+ *
95
+ * Works in all runtimes (Node.js, Cloudflare Workers) via the standard fetch() API.
96
+ */
97
+ export declare function proxyExternalRequest(request: Request, externalUrl: string): Promise<Response>;
98
+ /**
99
+ * Apply custom header rules from next.config.js.
100
+ * Returns an array of { key, value } pairs to set on the response.
101
+ */
102
+ export declare function matchHeaders(pathname: string, headers: NextHeader[]): Array<{
103
+ key: string;
104
+ value: string;
105
+ }>;
106
+ //# sourceMappingURL=config-matchers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-matchers.d.ts","sourceRoot":"","sources":["../../src/config/config-matchers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAc5F;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAsGpD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAczE;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,eAAe,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWhF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,CAQ1E;AAmDD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,YAAY,EAAE,GAAG,SAAS,EAC/B,OAAO,EAAE,YAAY,EAAE,GAAG,SAAS,EACnC,GAAG,EAAE,cAAc,GAClB,OAAO,CAYT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAgF/B;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,YAAY,EAAE,EACzB,GAAG,CAAC,EAAE,cAAc,GACnB;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAsBpD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,WAAW,EAAE,EACvB,GAAG,CAAC,EAAE,cAAc,GACnB,MAAM,GAAG,IAAI,CAsBf;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC,CAyDnB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,UAAU,EAAE,GACpB,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAsBvC"}
@@ -0,0 +1,499 @@
1
+ /**
2
+ * Config pattern matching and rule application utilities.
3
+ *
4
+ * Shared between the dev server (index.ts) and the production server
5
+ * (prod-server.ts) so both apply next.config.js rules identically.
6
+ */
7
+ /** Hop-by-hop headers that should not be forwarded through a proxy. */
8
+ const HOP_BY_HOP_HEADERS = new Set([
9
+ "connection",
10
+ "keep-alive",
11
+ "proxy-authenticate",
12
+ "proxy-authorization",
13
+ "te",
14
+ "trailers",
15
+ "transfer-encoding",
16
+ "upgrade",
17
+ ]);
18
+ /**
19
+ * Detect regex patterns vulnerable to catastrophic backtracking (ReDoS).
20
+ *
21
+ * Uses a lightweight heuristic: scans the pattern string for nested quantifiers
22
+ * (a quantifier applied to a group that itself contains a quantifier). This
23
+ * catches the most common pathological patterns like `(a+)+`, `(.*)*`,
24
+ * `([^/]+)+`, `(a|a+)+` without needing a full regex parser.
25
+ *
26
+ * Returns true if the pattern appears safe, false if it's potentially dangerous.
27
+ */
28
+ export function isSafeRegex(pattern) {
29
+ // Track parenthesis nesting depth and whether we've seen a quantifier
30
+ // at each depth level.
31
+ const quantifierAtDepth = [];
32
+ let depth = 0;
33
+ let i = 0;
34
+ while (i < pattern.length) {
35
+ const ch = pattern[i];
36
+ // Skip escaped characters
37
+ if (ch === "\\") {
38
+ i += 2;
39
+ continue;
40
+ }
41
+ // Skip character classes [...] — quantifiers inside them are literal
42
+ if (ch === "[") {
43
+ i++;
44
+ while (i < pattern.length && pattern[i] !== "]") {
45
+ if (pattern[i] === "\\")
46
+ i++; // skip escaped char in class
47
+ i++;
48
+ }
49
+ i++; // skip closing ]
50
+ continue;
51
+ }
52
+ if (ch === "(") {
53
+ depth++;
54
+ // Initialize: no quantifier seen yet at this new depth
55
+ if (quantifierAtDepth.length <= depth) {
56
+ quantifierAtDepth.push(false);
57
+ }
58
+ else {
59
+ quantifierAtDepth[depth] = false;
60
+ }
61
+ i++;
62
+ continue;
63
+ }
64
+ if (ch === ")") {
65
+ const hadQuantifier = depth > 0 && quantifierAtDepth[depth];
66
+ if (depth > 0)
67
+ depth--;
68
+ // Look ahead for a quantifier on this group: +, *, {n,m}
69
+ // Note: '?' after ')' means "zero or one" which does NOT cause catastrophic
70
+ // backtracking — it only allows 2 paths (match/skip), not exponential.
71
+ // Only unbounded repetition (+, *, {n,}) on a group with inner quantifiers is dangerous.
72
+ const next = pattern[i + 1];
73
+ if (next === "+" || next === "*" || next === "{") {
74
+ if (hadQuantifier) {
75
+ // Nested quantifier detected: quantifier on a group that contains a quantifier
76
+ return false;
77
+ }
78
+ // Mark the enclosing depth as having a quantifier
79
+ if (depth >= 0 && depth < quantifierAtDepth.length) {
80
+ quantifierAtDepth[depth] = true;
81
+ }
82
+ }
83
+ i++;
84
+ continue;
85
+ }
86
+ // Detect quantifiers: +, *, ?, {n,m}
87
+ // '?' is a quantifier (optional) unless it follows another quantifier (+, *, ?, })
88
+ // in which case it's a non-greedy modifier.
89
+ if (ch === "+" || ch === "*") {
90
+ if (depth > 0) {
91
+ quantifierAtDepth[depth] = true;
92
+ }
93
+ i++;
94
+ continue;
95
+ }
96
+ if (ch === "?") {
97
+ // '?' after +, *, ?, or } is a non-greedy modifier, not a quantifier
98
+ const prev = i > 0 ? pattern[i - 1] : "";
99
+ if (prev !== "+" && prev !== "*" && prev !== "?" && prev !== "}") {
100
+ if (depth > 0) {
101
+ quantifierAtDepth[depth] = true;
102
+ }
103
+ }
104
+ i++;
105
+ continue;
106
+ }
107
+ if (ch === "{") {
108
+ // Check if this is a quantifier {n}, {n,}, {n,m}
109
+ let j = i + 1;
110
+ while (j < pattern.length && /[\d,]/.test(pattern[j]))
111
+ j++;
112
+ if (j < pattern.length && pattern[j] === "}" && j > i + 1) {
113
+ if (depth > 0) {
114
+ quantifierAtDepth[depth] = true;
115
+ }
116
+ i = j + 1;
117
+ continue;
118
+ }
119
+ }
120
+ i++;
121
+ }
122
+ return true;
123
+ }
124
+ /**
125
+ * Compile a regex pattern safely. Returns the compiled RegExp or null if the
126
+ * pattern is invalid or vulnerable to ReDoS.
127
+ *
128
+ * Logs a warning when a pattern is rejected so developers can fix their config.
129
+ */
130
+ export function safeRegExp(pattern, flags) {
131
+ if (!isSafeRegex(pattern)) {
132
+ console.warn(`[vinext] Ignoring potentially unsafe regex pattern (ReDoS risk): ${pattern}\n` +
133
+ ` Patterns with nested quantifiers (e.g. (a+)+) can cause catastrophic backtracking.\n` +
134
+ ` Simplify the pattern to avoid nested repetition.`);
135
+ return null;
136
+ }
137
+ try {
138
+ return new RegExp(pattern, flags);
139
+ }
140
+ catch {
141
+ return null;
142
+ }
143
+ }
144
+ /**
145
+ * Parse a Cookie header string into a key-value record.
146
+ */
147
+ export function parseCookies(cookieHeader) {
148
+ if (!cookieHeader)
149
+ return {};
150
+ const cookies = {};
151
+ for (const part of cookieHeader.split(";")) {
152
+ const eq = part.indexOf("=");
153
+ if (eq === -1)
154
+ continue;
155
+ const key = part.slice(0, eq).trim();
156
+ const value = part.slice(eq + 1).trim();
157
+ if (key)
158
+ cookies[key] = value;
159
+ }
160
+ return cookies;
161
+ }
162
+ /**
163
+ * Build a RequestContext from a Web Request object.
164
+ */
165
+ export function requestContextFromRequest(request) {
166
+ const url = new URL(request.url);
167
+ return {
168
+ headers: request.headers,
169
+ cookies: parseCookies(request.headers.get("cookie")),
170
+ query: url.searchParams,
171
+ host: request.headers.get("host") ?? url.host,
172
+ };
173
+ }
174
+ /**
175
+ * Check a single has/missing condition against request context.
176
+ * Returns true if the condition is satisfied.
177
+ */
178
+ function checkSingleCondition(condition, ctx) {
179
+ switch (condition.type) {
180
+ case "header": {
181
+ const headerValue = ctx.headers.get(condition.key);
182
+ if (headerValue === null)
183
+ return false;
184
+ if (condition.value !== undefined) {
185
+ const re = safeRegExp(condition.value);
186
+ if (re)
187
+ return re.test(headerValue);
188
+ return headerValue === condition.value;
189
+ }
190
+ return true; // Key exists, no value constraint
191
+ }
192
+ case "cookie": {
193
+ const cookieValue = ctx.cookies[condition.key];
194
+ if (cookieValue === undefined)
195
+ return false;
196
+ if (condition.value !== undefined) {
197
+ const re = safeRegExp(condition.value);
198
+ if (re)
199
+ return re.test(cookieValue);
200
+ return cookieValue === condition.value;
201
+ }
202
+ return true;
203
+ }
204
+ case "query": {
205
+ const queryValue = ctx.query.get(condition.key);
206
+ if (queryValue === null)
207
+ return false;
208
+ if (condition.value !== undefined) {
209
+ const re = safeRegExp(condition.value);
210
+ if (re)
211
+ return re.test(queryValue);
212
+ return queryValue === condition.value;
213
+ }
214
+ return true;
215
+ }
216
+ case "host": {
217
+ if (condition.value !== undefined) {
218
+ const re = safeRegExp(condition.value);
219
+ if (re)
220
+ return re.test(ctx.host);
221
+ return ctx.host === condition.value;
222
+ }
223
+ return ctx.host === condition.key;
224
+ }
225
+ default:
226
+ return false;
227
+ }
228
+ }
229
+ /**
230
+ * Check all has/missing conditions for a config rule.
231
+ * Returns true if the rule should be applied (all has conditions pass, all missing conditions pass).
232
+ *
233
+ * - has: every condition must match (the request must have it)
234
+ * - missing: every condition must NOT match (the request must not have it)
235
+ */
236
+ export function checkHasConditions(has, missing, ctx) {
237
+ if (has) {
238
+ for (const condition of has) {
239
+ if (!checkSingleCondition(condition, ctx))
240
+ return false;
241
+ }
242
+ }
243
+ if (missing) {
244
+ for (const condition of missing) {
245
+ if (checkSingleCondition(condition, ctx))
246
+ return false;
247
+ }
248
+ }
249
+ return true;
250
+ }
251
+ /**
252
+ * Match a Next.js config pattern (from redirects/rewrites sources) against a pathname.
253
+ * Returns matched params or null.
254
+ *
255
+ * Supports:
256
+ * :param - matches a single path segment
257
+ * :param* - matches zero or more segments (catch-all)
258
+ * :param+ - matches one or more segments
259
+ * (regex) - inline regex patterns in the source
260
+ * :param(constraint) - named param with inline regex constraint
261
+ */
262
+ export function matchConfigPattern(pathname, pattern) {
263
+ // If the pattern contains regex groups like (\d+) or (.*), use regex matching.
264
+ // Also enter this branch when a catch-all parameter (:param* or :param+) is
265
+ // followed by a literal suffix (e.g. "/:path*.md"). Without this, the suffix
266
+ // pattern falls through to the simple segment matcher which incorrectly treats
267
+ // the whole segment (":path*.md") as a named parameter and matches everything.
268
+ if (pattern.includes("(") ||
269
+ pattern.includes("\\") ||
270
+ /:\w+[*+][^/]/.test(pattern)) {
271
+ try {
272
+ const paramNames = [];
273
+ const regexStr = pattern
274
+ .replace(/\./g, "\\.")
275
+ // :param* with optional constraint
276
+ .replace(/:(\w+)\*(?:\(([^)]+)\))?/g, (_m, name, constraint) => {
277
+ paramNames.push(name);
278
+ return constraint ? `(${constraint})` : "(.*)";
279
+ })
280
+ // :param+ with optional constraint
281
+ .replace(/:(\w+)\+(?:\(([^)]+)\))?/g, (_m, name, constraint) => {
282
+ paramNames.push(name);
283
+ return constraint ? `(${constraint})` : "(.+)";
284
+ })
285
+ // :param(constraint) - named param with inline regex constraint
286
+ .replace(/:(\w+)\(([^)]+)\)/g, (_m, name, constraint) => {
287
+ paramNames.push(name);
288
+ return `(${constraint})`;
289
+ })
290
+ // :param - plain named param
291
+ .replace(/:(\w+)/g, (_m, name) => {
292
+ paramNames.push(name);
293
+ return "([^/]+)";
294
+ });
295
+ const re = safeRegExp("^" + regexStr + "$");
296
+ if (!re)
297
+ return null;
298
+ const match = re.exec(pathname);
299
+ if (!match)
300
+ return null;
301
+ const params = Object.create(null);
302
+ for (let i = 0; i < paramNames.length; i++) {
303
+ params[paramNames[i]] = match[i + 1] ?? "";
304
+ }
305
+ return params;
306
+ }
307
+ catch {
308
+ // Fall through to segment-based matching
309
+ }
310
+ }
311
+ // Check for catch-all patterns (:param* or :param+) without regex groups
312
+ const catchAllMatch = pattern.match(/:(\w+)(\*|\+)$/);
313
+ if (catchAllMatch) {
314
+ const prefix = pattern.slice(0, pattern.lastIndexOf(":"));
315
+ const paramName = catchAllMatch[1];
316
+ const isPlus = catchAllMatch[2] === "+";
317
+ if (!pathname.startsWith(prefix.replace(/\/$/, "")))
318
+ return null;
319
+ const rest = pathname.slice(prefix.replace(/\/$/, "").length);
320
+ if (isPlus && (!rest || rest === "/"))
321
+ return null;
322
+ let restValue = rest.startsWith("/") ? rest.slice(1) : rest;
323
+ try {
324
+ restValue = decodeURIComponent(restValue);
325
+ }
326
+ catch { /* malformed percent-encoding */ }
327
+ return { [paramName]: restValue };
328
+ }
329
+ // Simple segment-based matching for exact patterns and :param
330
+ const parts = pattern.split("/");
331
+ const pathParts = pathname.split("/");
332
+ if (parts.length !== pathParts.length)
333
+ return null;
334
+ const params = Object.create(null);
335
+ for (let i = 0; i < parts.length; i++) {
336
+ if (parts[i].startsWith(":")) {
337
+ params[parts[i].slice(1)] = pathParts[i];
338
+ }
339
+ else if (parts[i] !== pathParts[i]) {
340
+ return null;
341
+ }
342
+ }
343
+ return params;
344
+ }
345
+ /**
346
+ * Apply redirect rules from next.config.js.
347
+ * Returns the redirect info if a redirect was matched, or null.
348
+ *
349
+ * When `ctx` is provided, has/missing conditions on the redirect rules
350
+ * are evaluated against the request context (cookies, headers, query, host).
351
+ */
352
+ export function matchRedirect(pathname, redirects, ctx) {
353
+ for (const redirect of redirects) {
354
+ const params = matchConfigPattern(pathname, redirect.source);
355
+ if (params) {
356
+ // Check has/missing conditions if present and context is available
357
+ if (ctx && (redirect.has || redirect.missing)) {
358
+ if (!checkHasConditions(redirect.has, redirect.missing, ctx)) {
359
+ continue;
360
+ }
361
+ }
362
+ let dest = redirect.destination;
363
+ for (const [key, value] of Object.entries(params)) {
364
+ // Replace :param*, :param+, and :param forms in the destination.
365
+ // The catch-all suffixes (* and +) must be stripped along with the param name.
366
+ dest = dest.replace(`:${key}*`, value);
367
+ dest = dest.replace(`:${key}+`, value);
368
+ dest = dest.replace(`:${key}`, value);
369
+ }
370
+ return { destination: dest, permanent: redirect.permanent };
371
+ }
372
+ }
373
+ return null;
374
+ }
375
+ /**
376
+ * Apply rewrite rules from next.config.js.
377
+ * Returns the rewritten URL or null if no rewrite matched.
378
+ *
379
+ * When `ctx` is provided, has/missing conditions on the rewrite rules
380
+ * are evaluated against the request context (cookies, headers, query, host).
381
+ */
382
+ export function matchRewrite(pathname, rewrites, ctx) {
383
+ for (const rewrite of rewrites) {
384
+ const params = matchConfigPattern(pathname, rewrite.source);
385
+ if (params) {
386
+ // Check has/missing conditions if present and context is available
387
+ if (ctx && (rewrite.has || rewrite.missing)) {
388
+ if (!checkHasConditions(rewrite.has, rewrite.missing, ctx)) {
389
+ continue;
390
+ }
391
+ }
392
+ let dest = rewrite.destination;
393
+ for (const [key, value] of Object.entries(params)) {
394
+ // Replace :param*, :param+, and :param forms in the destination.
395
+ // The catch-all suffixes (* and +) must be stripped along with the param name.
396
+ dest = dest.replace(`:${key}*`, value);
397
+ dest = dest.replace(`:${key}+`, value);
398
+ dest = dest.replace(`:${key}`, value);
399
+ }
400
+ return dest;
401
+ }
402
+ }
403
+ return null;
404
+ }
405
+ /**
406
+ * Check if a URL is an external (absolute) URL.
407
+ * Returns true for URLs starting with http:// or https://.
408
+ */
409
+ export function isExternalUrl(url) {
410
+ return url.startsWith("http://") || url.startsWith("https://");
411
+ }
412
+ /**
413
+ * Proxy an incoming request to an external URL and return the upstream response.
414
+ *
415
+ * Used for external rewrites (e.g. `/ph/:path*` → `https://us.i.posthog.com/:path*`).
416
+ * Next.js handles these as server-side reverse proxies, forwarding the request
417
+ * method, headers, and body to the external destination.
418
+ *
419
+ * Works in all runtimes (Node.js, Cloudflare Workers) via the standard fetch() API.
420
+ */
421
+ export async function proxyExternalRequest(request, externalUrl) {
422
+ // Build the full external URL, preserving query parameters from the original request
423
+ const originalUrl = new URL(request.url);
424
+ const targetUrl = new URL(externalUrl);
425
+ // If the rewrite destination already has query params, merge them.
426
+ // Destination params take precedence — original request params are only added
427
+ // when the destination doesn't already specify that key.
428
+ for (const [key, value] of originalUrl.searchParams) {
429
+ if (!targetUrl.searchParams.has(key)) {
430
+ targetUrl.searchParams.set(key, value);
431
+ }
432
+ }
433
+ // Forward the request with appropriate headers
434
+ const headers = new Headers(request.headers);
435
+ // Set Host to the external target (required for correct routing)
436
+ headers.set("host", targetUrl.host);
437
+ // Remove headers that should not be forwarded to external services
438
+ headers.delete("connection");
439
+ const method = request.method;
440
+ const hasBody = method !== "GET" && method !== "HEAD";
441
+ const init = {
442
+ method,
443
+ headers,
444
+ redirect: "manual", // Don't follow redirects — pass them through to the client
445
+ };
446
+ if (hasBody && request.body) {
447
+ init.body = request.body;
448
+ init.duplex = "half";
449
+ }
450
+ let upstreamResponse;
451
+ try {
452
+ upstreamResponse = await fetch(targetUrl.href, init);
453
+ }
454
+ catch (e) {
455
+ console.error("[vinext] External rewrite proxy error:", e);
456
+ return new Response("Bad Gateway", { status: 502 });
457
+ }
458
+ // Build the response to return to the client.
459
+ // Copy all upstream headers except hop-by-hop headers.
460
+ const responseHeaders = new Headers();
461
+ upstreamResponse.headers.forEach((value, key) => {
462
+ if (!HOP_BY_HOP_HEADERS.has(key.toLowerCase())) {
463
+ responseHeaders.append(key, value);
464
+ }
465
+ });
466
+ return new Response(upstreamResponse.body, {
467
+ status: upstreamResponse.status,
468
+ statusText: upstreamResponse.statusText,
469
+ headers: responseHeaders,
470
+ });
471
+ }
472
+ /**
473
+ * Apply custom header rules from next.config.js.
474
+ * Returns an array of { key, value } pairs to set on the response.
475
+ */
476
+ export function matchHeaders(pathname, headers) {
477
+ const result = [];
478
+ for (const rule of headers) {
479
+ // Extract regex groups first, process the rest, then restore groups.
480
+ const groups = [];
481
+ const withPlaceholders = rule.source.replace(/\(([^)]+)\)/g, (_m, inner) => {
482
+ groups.push(inner);
483
+ return `___GROUP_${groups.length - 1}___`;
484
+ });
485
+ const escaped = withPlaceholders
486
+ .replace(/\./g, "\\.")
487
+ .replace(/\+/g, "\\+")
488
+ .replace(/\?/g, "\\?")
489
+ .replace(/\*/g, ".*")
490
+ .replace(/:\w+/g, "[^/]+")
491
+ .replace(/___GROUP_(\d+)___/g, (_m, idx) => `(${groups[Number(idx)]})`);
492
+ const sourceRegex = safeRegExp("^" + escaped + "$");
493
+ if (sourceRegex && sourceRegex.test(pathname)) {
494
+ result.push(...rule.headers);
495
+ }
496
+ }
497
+ return result;
498
+ }
499
+ //# sourceMappingURL=config-matchers.js.map