@wular/pnext 0.0.4 → 0.0.7

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 (395) hide show
  1. package/README.md +22 -16
  2. package/bin/pnext +6 -1
  3. package/config/lint/base.js +7 -7
  4. package/config/ts/base.json +2 -4
  5. package/config/ts/react.json +2 -6
  6. package/package.json +23 -2
  7. package/reference/compat.md +87 -22
  8. package/reference/config.md +40 -93
  9. package/reference/css.md +42 -33
  10. package/reference/dev.md +26 -33
  11. package/reference/env.md +18 -20
  12. package/reference/getting-started.md +132 -0
  13. package/reference/metadata.md +31 -46
  14. package/reference/navigation.md +65 -105
  15. package/reference/performance.md +21 -142
  16. package/reference/rendering.md +78 -75
  17. package/reference/routing.md +97 -107
  18. package/reference/typegen.md +27 -29
  19. package/src/api/cache.ts +36 -37
  20. package/src/api/client-cache.ts +2 -2
  21. package/src/api/client-navigation.ts +121 -114
  22. package/src/api/dynamic.tsx +58 -55
  23. package/src/api/link.tsx +52 -53
  24. package/src/api/navigation.ts +59 -58
  25. package/src/api/server.ts +152 -144
  26. package/src/api/suspense.ts +4 -4
  27. package/src/cli/adapters/vercel-warm.ts +126 -121
  28. package/src/cli/adapters/vercel.ts +437 -443
  29. package/src/cli/analyze.ts +333 -144
  30. package/src/cli/{named-bin.ts → boot/named-bin.ts} +37 -37
  31. package/src/cli/{boot-trace.ts → boot/trace.ts} +10 -10
  32. package/src/cli/build.ts +976 -978
  33. package/src/cli/create.ts +72 -64
  34. package/src/cli/dev.ts +116 -116
  35. package/src/cli/index.ts +94 -85
  36. package/src/cli/migrate/package-json.ts +73 -71
  37. package/src/cli/migrate/report.ts +32 -33
  38. package/src/cli/migrate/{index.ts → run.ts} +48 -49
  39. package/src/cli/migrate/scan.ts +46 -46
  40. package/src/cli/migrate/spinner.ts +9 -9
  41. package/src/cli/migrate/tsconfig.ts +35 -35
  42. package/src/cli/{server-entry.ts → serve/entry.ts} +57 -57
  43. package/src/cli/{request-pipeline.ts → serve/pipeline.ts} +386 -394
  44. package/src/cli/{serve-ui.ts → serve/ui.ts} +47 -47
  45. package/src/cli/start.ts +65 -66
  46. package/src/{typegen.ts → cli/typegen.ts} +59 -59
  47. package/src/client/build.ts +802 -768
  48. package/src/client/chunk-fold.ts +245 -240
  49. package/src/client/{paths.ts → chunk-name.ts} +6 -6
  50. package/src/client/entry.ts +162 -147
  51. package/src/client/prebuilt.ts +231 -223
  52. package/src/client/profile.ts +29 -29
  53. package/src/client/react-compiler.ts +20 -15
  54. package/src/client/{compat-surface.ts → react-tier.ts} +64 -64
  55. package/src/client/reference-stub.ts +51 -51
  56. package/src/client/reference.ts +19 -19
  57. package/src/{api → client}/router/events.ts +32 -17
  58. package/src/{api → client}/router/history.ts +16 -16
  59. package/src/{api → client}/router/hub.ts +52 -53
  60. package/src/{api/router.ts → client/router/index.ts} +61 -60
  61. package/src/{api → client}/router/policies.ts +24 -24
  62. package/src/{api → client}/router/runtime.ts +2022 -1995
  63. package/src/{api → client}/router/types.ts +98 -98
  64. package/src/compat/actions/client-plugin.ts +42 -43
  65. package/src/compat/actions/client-stub.ts +14 -14
  66. package/src/compat/actions/{action-client.ts → client.ts} +194 -193
  67. package/src/compat/actions/config.ts +63 -64
  68. package/src/compat/actions/detect.ts +68 -68
  69. package/src/compat/actions/discovery.ts +105 -105
  70. package/src/compat/actions/{action-dispatch.ts → dispatch.ts} +277 -274
  71. package/src/compat/actions/early-submit.ts +1 -1
  72. package/src/compat/actions/endpoint.ts +198 -198
  73. package/src/compat/actions/extensions.ts +811 -0
  74. package/src/compat/actions/flight.ts +23 -23
  75. package/src/compat/actions/form-state.ts +34 -34
  76. package/src/compat/actions/hoist.ts +382 -236
  77. package/src/compat/actions/ids.ts +7 -12
  78. package/src/compat/actions/index.ts +8 -8
  79. package/src/compat/actions/instances.ts +46 -46
  80. package/src/compat/actions/origin.ts +47 -48
  81. package/src/compat/actions/protocol.ts +22 -22
  82. package/src/compat/actions/registry.ts +19 -19
  83. package/src/compat/{misc/action-return.ts → actions/return.ts} +60 -57
  84. package/src/compat/actions/rewrite.ts +125 -125
  85. package/src/compat/actions/{action-router.ts → router.ts} +10 -10
  86. package/src/compat/actions/serve.ts +132 -136
  87. package/src/compat/actions/server-tag.ts +4 -4
  88. package/src/compat/actions/{action-shared.ts → shared.ts} +34 -34
  89. package/src/compat/actions/unrecognized-error.ts +4 -4
  90. package/src/compat/{index.ts → aliases.ts} +112 -109
  91. package/src/compat/bundler/bun-externals.ts +18 -18
  92. package/src/compat/bundler/cjs-exports.ts +271 -223
  93. package/src/compat/bundler/config.ts +116 -111
  94. package/src/compat/bundler/externals.ts +12 -12
  95. package/src/compat/bundler/import-meta-url.ts +19 -19
  96. package/src/compat/bundler/modularize-imports.ts +36 -33
  97. package/src/compat/bundler/new-url-asset.ts +22 -24
  98. package/src/compat/bundler/optimize-package-imports.ts +111 -107
  99. package/src/compat/bundler/polyfill.ts +28 -28
  100. package/src/compat/bundler/react-compiler.ts +35 -29
  101. package/src/compat/bundler/react-profiler.tsx +11 -11
  102. package/src/compat/bundler/relay-transform.ts +48 -47
  103. package/src/compat/bundler/require-context.ts +119 -113
  104. package/src/compat/bundler/resolve-extensions.ts +19 -19
  105. package/src/compat/bundler/source-cache.ts +25 -25
  106. package/src/compat/bundler/static-imports.ts +7 -7
  107. package/src/compat/bundler/symlink-imports.ts +46 -46
  108. package/src/compat/bundler/tsconfig-paths.ts +13 -15
  109. package/src/compat/bundler/wasm.ts +58 -60
  110. package/src/compat/bundler/webpack-loaders.ts +254 -241
  111. package/src/compat/bundler/worker.ts +101 -104
  112. package/src/compat/cache/build-flags.ts +29 -29
  113. package/src/compat/cache/build-prerender-errors.ts +40 -44
  114. package/src/compat/cache/custom-handler.ts +60 -53
  115. package/src/compat/cache/fetch-patch.ts +240 -240
  116. package/src/compat/cache/handler.ts +27 -31
  117. package/src/compat/cache/modern-handler.ts +148 -126
  118. package/src/compat/cache/resume-data-cache.ts +47 -45
  119. package/src/compat/cache/revalidate.ts +233 -232
  120. package/src/compat/cache/runtime-error.ts +35 -35
  121. package/src/compat/cache/use-cache-transform.ts +442 -417
  122. package/src/compat/cache/use-cache.ts +650 -614
  123. package/src/compat/cache-control.ts +140 -142
  124. package/src/compat/client/base-path.ts +21 -20
  125. package/src/compat/client/css-order.ts +18 -18
  126. package/src/compat/client/errors/bare-boundary.ts +11 -11
  127. package/src/compat/client/errors/control-flow.ts +23 -23
  128. package/src/compat/client/errors/error-boundary.ts +61 -61
  129. package/src/compat/client/errors/global-error.ts +101 -91
  130. package/src/compat/client/errors/install.ts +71 -72
  131. package/src/compat/client/errors/lazy.ts +23 -23
  132. package/src/compat/client/errors/primitive-throw.ts +47 -45
  133. package/src/compat/client/errors/soft-refresh.ts +4 -4
  134. package/src/compat/client/link-status.ts +33 -33
  135. package/src/compat/client/{nav-compat-runtime.ts → nav-runtime.ts} +20 -20
  136. package/src/compat/client/{nav-compat.ts → nav.ts} +12 -13
  137. package/src/compat/client/navigation-scroll.ts +63 -63
  138. package/src/compat/client/optimistic-routing.ts +93 -88
  139. package/src/compat/client/prefetch-cache.ts +23 -24
  140. package/src/compat/client/route-announcer.ts +35 -35
  141. package/src/compat/client/segment-cache-policy.ts +20 -20
  142. package/src/compat/client/segment-cache.ts +309 -315
  143. package/src/compat/client/segment-prefetch.ts +127 -132
  144. package/src/compat/client/trailing-slash.ts +5 -4
  145. package/src/compat/css/chunking.ts +113 -116
  146. package/src/compat/css/inline-css.ts +21 -21
  147. package/src/compat/css/lightningcss.ts +37 -38
  148. package/src/compat/css/modules.ts +161 -175
  149. package/src/compat/css/nonce.ts +7 -7
  150. package/src/compat/css/sass-plugin.ts +18 -21
  151. package/src/compat/css/sass.ts +150 -152
  152. package/src/compat/css/styled-jsx-runtime.ts +27 -27
  153. package/src/compat/css/styled-jsx.ts +21 -21
  154. package/src/compat/edge-runtime.ts +27 -27
  155. package/src/compat/{adapter → export}/build-complete.ts +72 -75
  156. package/src/compat/export/client.ts +29 -31
  157. package/src/compat/export/{index.ts → emit.ts} +111 -110
  158. package/src/compat/export/standalone.ts +62 -54
  159. package/src/compat/image-optimizer/cache.ts +51 -49
  160. package/src/compat/image-optimizer/detect.ts +52 -52
  161. package/src/compat/image-optimizer/{index.ts → optimize.ts} +189 -194
  162. package/src/compat/image-optimizer/source.ts +77 -80
  163. package/src/compat/lifecycle/after-scope.ts +26 -26
  164. package/src/compat/lifecycle/after.ts +48 -45
  165. package/src/compat/lifecycle/error-funnel.ts +98 -102
  166. package/src/compat/lifecycle/error-serialize.ts +30 -26
  167. package/src/compat/lifecycle/error-ui.ts +67 -32
  168. package/src/compat/lifecycle/instrumentation-client.ts +36 -38
  169. package/src/compat/lifecycle/instrumentation.ts +85 -85
  170. package/src/compat/lifecycle/node-console.ts +11 -11
  171. package/src/compat/lifecycle/testmode.ts +160 -132
  172. package/src/compat/mdx/compile.ts +60 -57
  173. package/src/compat/mdx/plugin.ts +11 -11
  174. package/src/compat/mdx/{next-mdx-stub.ts → stub.ts} +5 -5
  175. package/src/compat/{metadata-route-artifacts.ts → metadata-artifacts.ts} +195 -191
  176. package/src/compat/metadata.ts +75 -81
  177. package/src/compat/next/cache.ts +68 -69
  178. package/src/compat/next/canonical-url.ts +9 -9
  179. package/src/compat/next/client-cache.ts +19 -19
  180. package/src/compat/next/client-navigation.ts +112 -116
  181. package/src/compat/next/client-only.ts +1 -1
  182. package/src/compat/next/client-script.tsx +99 -93
  183. package/src/compat/next/client-server.ts +10 -10
  184. package/src/compat/next/config-loader.ts +176 -173
  185. package/src/compat/next/config.ts +7 -7
  186. package/src/compat/next/constants.cjs +6 -6
  187. package/src/compat/next/constants.ts +6 -6
  188. package/src/compat/next/custom-server.ts +26 -24
  189. package/src/compat/next/dist/client/components/app-router-headers.ts +21 -21
  190. package/src/compat/next/dist/server/app-render/work-unit-async-storage.external.cjs +3 -4
  191. package/src/compat/next/dist/server/web/spec-extension/revalidate.ts +1 -1
  192. package/src/compat/next/dist/server/web/spec-extension/unstable-cache.ts +1 -1
  193. package/src/compat/next/dist/server/web/spec-extension/unstable-no-store.ts +1 -1
  194. package/src/compat/next/dynamic.tsx +21 -18
  195. package/src/compat/next/error.tsx +52 -52
  196. package/src/compat/next/font/cache.ts +74 -74
  197. package/src/compat/next/font/google.ts +2 -2
  198. package/src/compat/next/font/index.ts +1 -1
  199. package/src/compat/next/font/local.ts +3 -3
  200. package/src/compat/next/font/runtime-client.ts +17 -15
  201. package/src/compat/next/font/runtime.ts +443 -408
  202. package/src/compat/next/font/shared.ts +120 -108
  203. package/src/compat/next/form.tsx +63 -63
  204. package/src/compat/next/head.tsx +2 -2
  205. package/src/compat/next/headers.ts +103 -95
  206. package/src/compat/next/image/client.tsx +220 -0
  207. package/src/compat/next/image/config.ts +56 -58
  208. package/src/compat/next/image/optimizer.ts +40 -36
  209. package/src/compat/next/image/patterns.ts +37 -40
  210. package/src/compat/next/{image-props.ts → image/props.ts} +208 -202
  211. package/src/compat/next/image/shared.ts +65 -57
  212. package/src/compat/next/image/static-metadata.ts +98 -107
  213. package/src/compat/next/image/validate.ts +79 -88
  214. package/src/compat/next/image.tsx +19 -23
  215. package/src/compat/next/index.ts +1 -1
  216. package/src/compat/next/legacy-image.tsx +59 -60
  217. package/src/compat/next/{link-validation-transform.ts → link-transform.ts} +95 -96
  218. package/src/compat/next/link.tsx +158 -158
  219. package/src/compat/next/navigation.cjs +12 -3
  220. package/src/compat/next/navigation.ts +48 -50
  221. package/src/compat/next/offline.ts +27 -27
  222. package/src/compat/next/og.ts +121 -124
  223. package/src/compat/next/preferred-region.ts +13 -14
  224. package/src/compat/next/redirects.ts +58 -56
  225. package/src/compat/next/resource-hints.ts +73 -76
  226. package/src/compat/next/rewrites.ts +130 -133
  227. package/src/compat/next/root-params.ts +45 -45
  228. package/src/compat/next/{optimistic-route-state.ts → route-state.ts} +52 -52
  229. package/src/compat/next/router.cjs +4 -2
  230. package/src/compat/next/router.ts +58 -61
  231. package/src/compat/next/script.tsx +108 -108
  232. package/src/compat/next/server-only.ts +1 -1
  233. package/src/compat/next/server.ts +19 -19
  234. package/src/compat/next/svgr.ts +18 -17
  235. package/src/compat/next/telemetry.ts +24 -24
  236. package/src/compat/next/{image-usage.ts → usage.ts} +70 -39
  237. package/src/compat/next/user-agent.ts +53 -49
  238. package/src/compat/next/web-vitals.ts +22 -24
  239. package/src/compat/otel/api.ts +41 -41
  240. package/src/compat/otel/client-trace-metadata.ts +25 -27
  241. package/src/compat/otel/fetch-span.ts +29 -29
  242. package/src/compat/otel/tracer.ts +331 -331
  243. package/src/compat/pages/api.ts +456 -0
  244. package/src/compat/pages/client-plugin.ts +36 -36
  245. package/src/compat/pages/router-state.ts +34 -34
  246. package/src/compat/pages/{index.ts → router.ts} +130 -135
  247. package/src/compat/ppr/io.ts +12 -12
  248. package/src/compat/ppr/missing-root-params.ts +34 -38
  249. package/src/compat/ppr/root-params-scan.ts +66 -66
  250. package/src/compat/ppr/root-params-transform.ts +24 -26
  251. package/src/compat/ppr/root-params.ts +30 -30
  252. package/src/compat/ppr/segment-config-incompat.ts +6 -7
  253. package/src/compat/protocol.ts +71 -70
  254. package/src/compat/react/action-state.ts +47 -48
  255. package/src/compat/react/client-lite.ts +15 -15
  256. package/src/compat/react/client.ts +4 -4
  257. package/src/compat/react/compiler-runtime.ts +11 -11
  258. package/src/compat/react/dom-client.ts +44 -44
  259. package/src/compat/react/dom-react-server.ts +10 -16
  260. package/src/compat/react/dom-server.ts +10 -10
  261. package/src/compat/react/dom.ts +52 -52
  262. package/src/compat/react/hooks-extra.ts +34 -35
  263. package/src/compat/react/parity.ts +64 -61
  264. package/src/compat/react/preact.ts +81 -82
  265. package/src/compat/react/react-server.ts +28 -28
  266. package/src/compat/react/router-shim.ts +1 -1
  267. package/src/compat/react/server-component-use.ts +8 -8
  268. package/src/compat/react/server-inserted-html.ts +30 -31
  269. package/src/compat/react/server.ts +53 -55
  270. package/src/compat/react/use.ts +32 -32
  271. package/src/compat/react/view-transition.ts +20 -20
  272. package/src/compat/register/actions.ts +35 -824
  273. package/src/compat/register/boot.ts +41 -41
  274. package/src/compat/register/build-tier.ts +5 -5
  275. package/src/compat/register/build.ts +74 -70
  276. package/src/compat/register/bundler.ts +161 -156
  277. package/src/compat/register/cache.ts +20 -20
  278. package/src/compat/register/client-errors.ts +3 -3
  279. package/src/compat/register/config.ts +6 -6
  280. package/src/compat/register/css-extras.ts +30 -34
  281. package/src/compat/register/edge-runtime.ts +3 -3
  282. package/src/compat/register/errors.ts +10 -12
  283. package/src/compat/register/export.ts +16 -16
  284. package/src/compat/register/font.ts +11 -11
  285. package/src/compat/register/hooks.ts +2 -2
  286. package/src/compat/register/image.ts +40 -40
  287. package/src/compat/register/index.ts +59 -62
  288. package/src/compat/register/instrumentation-client.ts +10 -10
  289. package/src/compat/register/lifecycle.ts +25 -28
  290. package/src/compat/register/mdx.ts +10 -10
  291. package/src/compat/register/middleware.ts +226 -16
  292. package/src/compat/register/otel.ts +80 -88
  293. package/src/compat/register/pages-api.ts +10 -463
  294. package/src/compat/register/ppr.ts +16 -16
  295. package/src/compat/register/protocol.ts +17 -18
  296. package/src/compat/register/proxy.ts +49 -51
  297. package/src/compat/register/render.ts +79 -76
  298. package/src/compat/register/routing.ts +162 -159
  299. package/src/compat/register/segment.ts +24 -1897
  300. package/src/compat/register/static-image.ts +3 -3
  301. package/src/compat/register/{misc.ts → taint.ts} +9 -9
  302. package/src/compat/register/typed-routes.ts +14 -14
  303. package/src/compat/register/{usecache.ts → use-cache.ts} +39 -39
  304. package/src/compat/register/validation.ts +18 -18
  305. package/src/compat/segment/loading-boundary.ts +43 -45
  306. package/src/compat/segment/page-slot.ts +69 -69
  307. package/src/compat/segment/serve.ts +1884 -0
  308. package/src/compat/segment/tree.ts +113 -112
  309. package/src/compat/segment/vary-key.ts +38 -38
  310. package/src/compat/segment/vary-params.ts +138 -142
  311. package/src/compat/static-params.ts +14 -12
  312. package/src/compat/tsconfig-defaults.ts +87 -91
  313. package/src/compat/typecheck/{index.ts → check.ts} +234 -212
  314. package/src/compat/typecheck/worker.ts +15 -12
  315. package/src/compat/typed-routes/{index.ts → generate.ts} +36 -36
  316. package/src/compat/typed-routes/manifest.ts +174 -170
  317. package/src/compat/typed-routes/typegen.ts +127 -110
  318. package/src/compat/validation/errors.ts +16 -19
  319. package/src/compat/validation/prerender-diagnostics.ts +521 -504
  320. package/src/compat/validation/{index.ts → validate.ts} +647 -648
  321. package/src/compat-bootstrap.ts +16 -16
  322. package/src/config.ts +86 -69
  323. package/src/css/build.ts +230 -227
  324. package/src/css/postcss.ts +79 -80
  325. package/src/css/worker.ts +14 -15
  326. package/src/dev/client-actions.ts +10 -10
  327. package/src/dev/client-chunk-store.ts +27 -27
  328. package/src/dev/{client-key-cache.ts → restart/client-key.ts} +76 -76
  329. package/src/dev/{restart-cache.ts → restart/enabled.ts} +1 -1
  330. package/src/dev/{global-css-cache.ts → restart/global-css.ts} +91 -83
  331. package/src/dev/{node-module-bundle-cache.ts → restart/node-modules.ts} +24 -24
  332. package/src/dev/{route-bundle-key-cache.ts → restart/route-bundle-key.ts} +53 -53
  333. package/src/dev/{route-facts-cache.ts → restart/route-facts.ts} +82 -82
  334. package/src/dev/server.ts +804 -820
  335. package/src/env.ts +46 -43
  336. package/src/extensions.ts +491 -478
  337. package/src/index.ts +8 -8
  338. package/src/internal.ts +20 -23
  339. package/src/{islands → render}/boundary-error.ts +3 -3
  340. package/src/render/hooks.ts +71 -71
  341. package/src/render/island-context.ts +14 -14
  342. package/src/render/metadata.ts +310 -310
  343. package/src/{ppr-postpone.ts → render/postpone.ts} +5 -5
  344. package/src/{ppr.ts → render/ppr.ts} +244 -245
  345. package/src/render/renderer.ts +2087 -2082
  346. package/src/render/resource-hints.ts +16 -17
  347. package/src/render/slots.tsx +224 -235
  348. package/src/{islands → render}/static-children.ts +9 -12
  349. package/src/{islands → render}/static-slots.ts +37 -37
  350. package/src/{cache/context.ts → request/cache.ts} +20 -20
  351. package/src/request/context.ts +107 -107
  352. package/src/{dynamic/source.ts → resolve/dynamic.ts} +139 -139
  353. package/src/resolve/engine.ts +90 -77
  354. package/src/resolve/imports.ts +475 -463
  355. package/src/resolve/scan-facts.ts +318 -296
  356. package/src/resolve/source-text.ts +37 -37
  357. package/src/{dynamic → resolve}/tree-shake.ts +132 -128
  358. package/src/routing/forwarded.ts +19 -19
  359. package/src/routing/handler.ts +84 -91
  360. package/src/routing/href.ts +87 -70
  361. package/src/routing/{metadata.ts → metadata-files.ts} +403 -401
  362. package/src/{proxy.ts → routing/proxy.ts} +306 -312
  363. package/src/routing/{request-runtime.ts → request-environment.ts} +10 -10
  364. package/src/routing/routes.ts +827 -815
  365. package/src/routing/slots.ts +164 -160
  366. package/src/runtime/loader.ts +954 -0
  367. package/src/{dev → runtime}/module-cache.ts +309 -287
  368. package/src/{dev → runtime}/module-generations.ts +9 -9
  369. package/src/{dev → runtime}/module-transform.ts +81 -72
  370. package/src/{dev/imports.ts → runtime/modules.ts} +934 -847
  371. package/src/runtime/{server.ts → vendor-build.ts} +848 -1696
  372. package/src/runtime/vendor.ts +428 -406
  373. package/src/styles.d.ts +9 -0
  374. package/src/types.ts +324 -335
  375. package/src/utils/ansi.ts +5 -5
  376. package/src/utils/{source.ts → code.ts} +15 -12
  377. package/src/utils/content-type.ts +3 -3
  378. package/src/utils/decode.ts +2 -2
  379. package/src/utils/dev-profile.ts +13 -13
  380. package/src/utils/error-log.ts +6 -6
  381. package/src/utils/esbuild.ts +18 -18
  382. package/src/utils/fs-cache.ts +13 -13
  383. package/src/utils/fs.ts +57 -49
  384. package/src/utils/html.ts +20 -24
  385. package/src/utils/native-require.ts +8 -8
  386. package/src/utils/serialize.ts +139 -146
  387. package/src/utils/verbose.ts +18 -18
  388. package/reference/overview.md +0 -35
  389. package/src/cli/analyze-print.ts +0 -181
  390. package/src/compat/middleware/manifest.ts +0 -210
  391. package/src/compat/next/image-client.tsx +0 -215
  392. package/src/compat/next/link-usage.ts +0 -29
  393. package/src/css/index.ts +0 -2
  394. package/src/render/index.ts +0 -1
  395. package/src/style-modules.d.ts +0 -9
package/src/api/server.ts CHANGED
@@ -1,24 +1,24 @@
1
- import { safeDecode } from '../utils/decode';
2
- import { getProxyExtensions, getProxyResponseProtocol } from '../extensions';
3
- import { getBasePathPrefix } from '../routing/href';
1
+ import { safeDecode } from '../utils/decode'
2
+ import { getProxyExtensions, getProxyResponseProtocol } from '../extensions'
3
+ import { getBasePathPrefix } from '../routing/href'
4
4
  import type {
5
5
  NextRequest as NextRequestLike,
6
6
  NextRequestCookie,
7
7
  NextRequestCookies,
8
8
  NextURL,
9
9
  NextResponseCookies,
10
- } from '../types';
10
+ } from '../types'
11
11
 
12
- const nextResponseMetaSymbol = Symbol.for('pnext.nextResponse');
12
+ const nextResponseMetaSymbol = Symbol.for('pnext.nextResponse')
13
13
 
14
- export type { NextFetchEvent } from '../types';
14
+ export type { NextFetchEvent } from '../types'
15
15
 
16
16
  export interface NextRequestGeo {
17
- city?: string;
18
- country?: string;
19
- region?: string;
20
- latitude?: string;
21
- longitude?: string;
17
+ city?: string
18
+ country?: string
19
+ region?: string
20
+ latitude?: string
21
+ longitude?: string
22
22
  }
23
23
 
24
24
  /**
@@ -27,79 +27,79 @@ export interface NextRequestGeo {
27
27
  * plain Requests via toNextRequest().
28
28
  */
29
29
  export class NextRequest extends Request implements NextRequestLike {
30
- readonly cookies: NextRequestCookies;
31
- readonly nextUrl: NextURL;
32
- readonly geo?: NextRequestGeo;
33
- readonly ip?: string;
30
+ readonly cookies: NextRequestCookies
31
+ readonly nextUrl: NextURL
32
+ readonly geo?: NextRequestGeo
33
+ readonly ip?: string
34
34
 
35
35
  constructor(input: RequestInfo | URL, init?: RequestInit) {
36
- super(input, init);
37
- this.cookies = requestCookies(this.headers);
38
- this.nextUrl = createNextUrl(this.url);
36
+ super(input, init)
37
+ this.cookies = requestCookies(this.headers)
38
+ this.nextUrl = createNextUrl(this.url)
39
39
  }
40
40
  }
41
41
 
42
- export type NextResponseKind = 'next' | 'rewrite';
42
+ export type NextResponseKind = 'next' | 'rewrite'
43
43
 
44
44
  export interface NextResponseMeta {
45
- kind: NextResponseKind;
46
- url?: string;
47
- requestHeaders?: Headers;
45
+ kind: NextResponseKind
46
+ url?: string
47
+ requestHeaders?: Headers
48
48
  }
49
49
 
50
50
  type NextResponseInit = ResponseInit & {
51
51
  request?: {
52
- headers?: HeadersInit;
53
- };
54
- };
52
+ headers?: HeadersInit
53
+ }
54
+ }
55
55
 
56
56
  export class NextResponse extends Response {
57
- readonly cookies: NextResponseCookies;
58
- readonly [nextResponseMetaSymbol]?: NextResponseMeta;
57
+ readonly cookies: NextResponseCookies
58
+ readonly [nextResponseMetaSymbol]?: NextResponseMeta
59
59
 
60
60
  constructor(body?: BodyInit | null, init?: ResponseInit) {
61
- super(body, init);
62
- this.cookies = responseCookies(this.headers);
61
+ super(body, init)
62
+ this.cookies = responseCookies(this.headers)
63
63
  }
64
64
 
65
65
  static json<JsonBody>(body: JsonBody, init?: ResponseInit) {
66
- const headers = new Headers(init?.headers);
67
- if (!headers.has('content-type')) headers.set('content-type', 'application/json');
66
+ const headers = new Headers(init?.headers)
67
+ if (!headers.has('content-type')) headers.set('content-type', 'application/json')
68
68
  return new NextResponse(JSON.stringify(body), {
69
69
  ...init,
70
70
  headers,
71
- });
71
+ })
72
72
  }
73
73
 
74
74
  static next(init?: NextResponseInit) {
75
- const response = new NextResponse(null, init);
76
- response.headers.set(getProxyResponseProtocol().nextHeader, '1');
77
- defineMeta(response, { kind: 'next', ...requestMeta(init) });
78
- return response;
75
+ const response = new NextResponse(null, init)
76
+ response.headers.set(getProxyResponseProtocol().nextHeader, '1')
77
+ defineMeta(response, { kind: 'next', ...requestMeta(init) })
78
+ return response
79
79
  }
80
80
 
81
81
  static rewrite(url: string | URL, init?: NextResponseInit) {
82
- const response = new NextResponse(null, init);
83
- response.headers.set(getProxyResponseProtocol().rewriteHeader, String(url));
84
- defineMeta(response, { kind: 'rewrite', url: String(url), ...requestMeta(init) });
85
- return response;
82
+ const response = new NextResponse(null, init)
83
+ response.headers.set(getProxyResponseProtocol().rewriteHeader, String(url))
84
+ defineMeta(response, { kind: 'rewrite', url: String(url), ...requestMeta(init) })
85
+ return response
86
86
  }
87
87
 
88
88
  static redirect(url: string | URL, init: number | ResponseInit = 307) {
89
- const responseInit = typeof init === 'number' ? { status: init } : init;
90
- const headers = new Headers(responseInit.headers);
91
- headers.set('location', String(url));
89
+ const responseInit = typeof init === 'number' ? { status: init } : init
90
+ const headers = new Headers(responseInit.headers)
91
+ headers.set('location', String(url))
92
92
  return new NextResponse(null, {
93
93
  ...responseInit,
94
94
  status: responseInit.status ?? 307,
95
95
  headers,
96
- });
96
+ })
97
97
  }
98
98
  }
99
99
 
100
100
  export function toNextRequest(request: Request): NextRequestLike {
101
- const nextRequest = request as Partial<NextRequestLike>;
102
- if (nextRequest.cookies && nextRequest.nextUrl) return request as NextRequestLike;
101
+ const nextRequest = request as Partial<NextRequestLike>
102
+ if (nextRequest.cookies && nextRequest.nextUrl) return request as NextRequestLike
103
103
 
104
104
  Object.defineProperties(request, {
105
105
  cookies: {
@@ -112,37 +112,39 @@ export function toNextRequest(request: Request): NextRequestLike {
112
112
  enumerable: true,
113
113
  value: createNextUrl(request.url),
114
114
  },
115
- });
116
- return request as NextRequestLike;
115
+ })
116
+ return request as NextRequestLike
117
117
  }
118
118
 
119
119
  export function nextResponseMeta(response: Response): NextResponseMeta | undefined {
120
- const meta = (response as Response & { [nextResponseMetaSymbol]?: NextResponseMeta })[nextResponseMetaSymbol];
121
- if (meta) return meta;
122
-
123
- const protocol = getProxyResponseProtocol();
124
- const rewrite = response.headers.get(protocol.rewriteHeader);
125
- if (rewrite) return { kind: 'rewrite', url: rewrite };
126
- if (response.headers.get(protocol.nextHeader)) return { kind: 'next' };
127
- return undefined;
120
+ const meta = (response as Response & { [nextResponseMetaSymbol]?: NextResponseMeta })[
121
+ nextResponseMetaSymbol
122
+ ]
123
+ if (meta) return meta
124
+
125
+ const protocol = getProxyResponseProtocol()
126
+ const rewrite = response.headers.get(protocol.rewriteHeader)
127
+ if (rewrite) return { kind: 'rewrite', url: rewrite }
128
+ if (response.headers.get(protocol.nextHeader)) return { kind: 'next' }
129
+ return undefined
128
130
  }
129
131
 
130
132
  export function copyMiddlewareHeaders(from: Response, to: Response) {
131
- const internalHeaders = proxyInternalHeaders();
133
+ const internalHeaders = proxyInternalHeaders()
132
134
  from.headers.forEach((value, key) => {
133
- if (internalHeaders.has(key) || key === 'content-length' || key === 'set-cookie') return;
135
+ if (internalHeaders.has(key) || key === 'content-length' || key === 'set-cookie') return
134
136
  // Vary is merged, never overwritten: the middleware's vary tokens join the
135
137
  // handler/page's own (both survive for CDN correctness). Every other header
136
138
  // is the middleware's to set.
137
- if (key === 'vary') mergeVaryInto(to.headers, value);
138
- else to.headers.set(key, value);
139
- });
140
- const middlewareCookies = getSetCookie(from.headers);
141
- if (middlewareCookies.length === 0) return;
142
- const responseCookies = getSetCookie(to.headers);
143
- to.headers.delete('set-cookie');
144
- for (const cookie of middlewareCookies) to.headers.append('set-cookie', cookie);
145
- for (const cookie of responseCookies) to.headers.append('set-cookie', cookie);
139
+ if (key === 'vary') mergeVaryInto(to.headers, value)
140
+ else to.headers.set(key, value)
141
+ })
142
+ const middlewareCookies = getSetCookie(from.headers)
143
+ if (middlewareCookies.length === 0) return
144
+ const responseCookies = getSetCookie(to.headers)
145
+ to.headers.delete('set-cookie')
146
+ for (const cookie of middlewareCookies) to.headers.append('set-cookie', cookie)
147
+ for (const cookie of responseCookies) to.headers.append('set-cookie', cookie)
146
148
  }
147
149
 
148
150
  // Forward a middleware response's non-internal headers onto the DOWNSTREAM REQUEST (in addition to
@@ -150,42 +152,48 @@ export function copyMiddlewareHeaders(from: Response, to: Response) {
150
152
  // the final response, so NextResponse.next({ headers }) values are visible to route handlers and
151
153
  // pages as request headers. set-cookie is handled separately and never forwarded here.
152
154
  export function forwardMiddlewareRequestHeaders(from: Response, request: Request): Request {
153
- const additions: [string, string][] = [];
154
- const internalHeaders = proxyInternalHeaders();
155
+ const additions: [string, string][] = []
156
+ const internalHeaders = proxyInternalHeaders()
155
157
  from.headers.forEach((value, key) => {
156
- if (internalHeaders.has(key) || key === 'content-length' || key === 'set-cookie') return;
157
- additions.push([key, value]);
158
- });
159
- if (additions.length === 0) return request;
160
- const headers = new Headers(request.headers);
161
- for (const [key, value] of additions) headers.set(key, value);
162
- return new Request(request, { headers });
158
+ if (internalHeaders.has(key) || key === 'content-length' || key === 'set-cookie') return
159
+ additions.push([key, value])
160
+ })
161
+ if (additions.length === 0) return request
162
+ const headers = new Headers(request.headers)
163
+ for (const [key, value] of additions) headers.set(key, value)
164
+ return new Request(request, { headers })
163
165
  }
164
166
 
165
167
  function proxyInternalHeaders() {
166
- const protocol = getProxyResponseProtocol();
167
- return new Set([protocol.nextHeader, protocol.rewriteHeader]);
168
+ const protocol = getProxyResponseProtocol()
169
+ return new Set([protocol.nextHeader, protocol.rewriteHeader])
168
170
  }
169
171
 
170
172
  // Append `value`'s comma-separated tokens to the response's Vary, preserving
171
173
  // existing tokens and never duplicating (case-insensitive).
172
174
  function mergeVaryInto(headers: Headers, value: string) {
173
- const existing = headers.get('vary');
175
+ const existing = headers.get('vary')
174
176
  const seen = new Set(
175
177
  (existing ?? '')
176
178
  .split(',')
177
179
  .map(token => token.trim().toLowerCase())
178
180
  .filter(Boolean),
179
- );
181
+ )
180
182
  const merged = existing
181
- ? existing.split(',').map(token => token.trim()).filter(Boolean)
182
- : [];
183
- for (const token of value.split(',').map(part => part.trim()).filter(Boolean)) {
184
- if (seen.has(token.toLowerCase())) continue;
185
- seen.add(token.toLowerCase());
186
- merged.push(token);
183
+ ? existing
184
+ .split(',')
185
+ .map(token => token.trim())
186
+ .filter(Boolean)
187
+ : []
188
+ for (const token of value
189
+ .split(',')
190
+ .map(part => part.trim())
191
+ .filter(Boolean)) {
192
+ if (seen.has(token.toLowerCase())) continue
193
+ seen.add(token.toLowerCase())
194
+ merged.push(token)
187
195
  }
188
- if (merged.length > 0) headers.set('vary', merged.join(', '));
196
+ if (merged.length > 0) headers.set('vary', merged.join(', '))
189
197
  }
190
198
 
191
199
  function defineMeta(response: NextResponse, meta: NextResponseMeta) {
@@ -193,111 +201,111 @@ function defineMeta(response: NextResponse, meta: NextResponseMeta) {
193
201
  configurable: false,
194
202
  enumerable: false,
195
203
  value: meta,
196
- });
204
+ })
197
205
  }
198
206
 
199
207
  function requestMeta(init: NextResponseInit | undefined): Pick<NextResponseMeta, 'requestHeaders'> {
200
- return init?.request?.headers ? { requestHeaders: new Headers(init.request.headers) } : {};
208
+ return init?.request?.headers ? { requestHeaders: new Headers(init.request.headers) } : {}
201
209
  }
202
210
 
203
211
  function createNextUrl(url: string | URL): NextURL {
204
- const nextUrl = new URL(url) as NextURL;
212
+ const nextUrl = new URL(url) as NextURL
205
213
  Object.defineProperty(nextUrl, 'clone', {
206
214
  configurable: true,
207
215
  enumerable: false,
208
216
  value: () => createNextUrl(nextUrl.href),
209
- });
217
+ })
210
218
  // Next's NextURL exposes basePath (the configured prefix, '' when unset) and
211
219
  // locale ('' without i18n). The request URL reaching middleware already has
212
220
  // any basePath stripped, so pathname stays app-relative while basePath holds
213
221
  // the prefix. Defaulting these to strings (never undefined) matches Next, so
214
222
  // `req.nextUrl.basePath` reads as a falsy '' rather than the string
215
223
  // "undefined" when forwarded through a header.
216
- nextUrl.basePath = getBasePathPrefix();
217
- nextUrl.locale = getProxyExtensions().locale(nextUrl);
218
- return nextUrl;
224
+ nextUrl.basePath = getBasePathPrefix()
225
+ nextUrl.locale = getProxyExtensions().locale(nextUrl)
226
+ return nextUrl
219
227
  }
220
228
 
221
229
  function requestCookies(headers: Headers): NextRequestCookies {
222
- let cookies = parseCookies(headers.get('cookie') ?? '');
230
+ let cookies = parseCookies(headers.get('cookie') ?? '')
223
231
  const sync = () => {
224
- const header = requestCookieHeader(cookies);
225
- if (header) headers.set('cookie', header);
226
- else headers.delete('cookie');
227
- };
232
+ const header = requestCookieHeader(cookies)
233
+ if (header) headers.set('cookie', header)
234
+ else headers.delete('cookie')
235
+ }
228
236
  return {
229
237
  get(name) {
230
- return cookies.find(cookie => cookie.name === name);
238
+ return cookies.find(cookie => cookie.name === name)
231
239
  },
232
240
  getAll(name) {
233
- return name ? cookies.filter(cookie => cookie.name === name) : [...cookies];
241
+ return name ? cookies.filter(cookie => cookie.name === name) : [...cookies]
234
242
  },
235
243
  has(name) {
236
- return cookies.some(cookie => cookie.name === name);
244
+ return cookies.some(cookie => cookie.name === name)
237
245
  },
238
246
  set(name, value) {
239
- cookies = [...cookies.filter(cookie => cookie.name !== name), { name, value }];
240
- sync();
241
- return this;
247
+ cookies = [...cookies.filter(cookie => cookie.name !== name), { name, value }]
248
+ sync()
249
+ return this
242
250
  },
243
251
  delete(name) {
244
- const existed = cookies.some(cookie => cookie.name === name);
245
- cookies = cookies.filter(cookie => cookie.name !== name);
246
- sync();
247
- return existed;
252
+ const existed = cookies.some(cookie => cookie.name === name)
253
+ cookies = cookies.filter(cookie => cookie.name !== name)
254
+ sync()
255
+ return existed
248
256
  },
249
257
  clear() {
250
- cookies = [];
251
- sync();
258
+ cookies = []
259
+ sync()
252
260
  },
253
- };
261
+ }
254
262
  }
255
263
 
256
264
  function responseCookies(headers: Headers): NextResponseCookies {
257
265
  return {
258
- set(nameOrOptions: string | ResponseCookie, value?: string, options: ResponseCookieOptions = {}) {
266
+ set(
267
+ nameOrOptions: string | ResponseCookie,
268
+ value?: string,
269
+ options: ResponseCookieOptions = {},
270
+ ) {
259
271
  const cookie: ResponseCookie =
260
272
  typeof nameOrOptions === 'string'
261
273
  ? { ...options, name: nameOrOptions, value: value ?? '' }
262
- : nameOrOptions;
263
- headers.append('set-cookie', serializeCookie(cookie.name, cookie.value, cookie));
264
- return this;
274
+ : nameOrOptions
275
+ headers.append('set-cookie', serializeCookie(cookie.name, cookie.value, cookie))
276
+ return this
265
277
  },
266
278
  delete(name) {
267
- headers.append('set-cookie', serializeCookie(name, '', { maxAge: 0, path: '/' }));
268
- return this;
279
+ headers.append('set-cookie', serializeCookie(name, '', { maxAge: 0, path: '/' }))
280
+ return this
269
281
  },
270
- };
282
+ }
271
283
  }
272
284
 
273
285
  interface ResponseCookieOptions {
274
- path?: string;
275
- maxAge?: number;
276
- httpOnly?: boolean;
277
- secure?: boolean;
278
- sameSite?: 'strict' | 'lax' | 'none';
286
+ path?: string
287
+ maxAge?: number
288
+ httpOnly?: boolean
289
+ secure?: boolean
290
+ sameSite?: 'strict' | 'lax' | 'none'
279
291
  }
280
292
 
281
293
  interface ResponseCookie extends ResponseCookieOptions {
282
- name: string;
283
- value: string;
294
+ name: string
295
+ value: string
284
296
  }
285
297
 
286
- function serializeCookie(
287
- name: string,
288
- value: string,
289
- options: ResponseCookieOptions,
290
- ) {
291
- const parts = [`${encodeURIComponent(name)}=${encodeURIComponent(value)}`];
298
+ function serializeCookie(name: string, value: string, options: ResponseCookieOptions) {
299
+ const parts = [`${encodeURIComponent(name)}=${encodeURIComponent(value)}`]
292
300
  // Next's ResponseCookies default the cookie path to '/' when unspecified,
293
301
  // so a route handler's Set-Cookie is visible to sibling routes/middleware
294
302
  // (not scoped to the request path). Match that default.
295
- parts.push(`Path=${options.path ?? '/'}`);
296
- if (options.maxAge !== undefined) parts.push(`Max-Age=${options.maxAge}`);
297
- if (options.httpOnly) parts.push('HttpOnly');
298
- if (options.secure) parts.push('Secure');
299
- if (options.sameSite) parts.push(`SameSite=${options.sameSite}`);
300
- return parts.join('; ');
303
+ parts.push(`Path=${options.path ?? '/'}`)
304
+ if (options.maxAge !== undefined) parts.push(`Max-Age=${options.maxAge}`)
305
+ if (options.httpOnly) parts.push('HttpOnly')
306
+ if (options.secure) parts.push('Secure')
307
+ if (options.sameSite) parts.push(`SameSite=${options.sameSite}`)
308
+ return parts.join('; ')
301
309
  }
302
310
 
303
311
  export function parseCookies(header: string): NextRequestCookie[] {
@@ -306,18 +314,18 @@ export function parseCookies(header: string): NextRequestCookie[] {
306
314
  .map(part => part.trim())
307
315
  .filter(Boolean)
308
316
  .map(part => {
309
- const [key = '', ...rest] = part.split('=');
310
- return { name: safeDecode(key), value: safeDecode(rest.join('=')) };
311
- });
317
+ const [key = '', ...rest] = part.split('=')
318
+ return { name: safeDecode(key), value: safeDecode(rest.join('=')) }
319
+ })
312
320
  }
313
321
 
314
322
  export function requestCookieHeader(cookies: NextRequestCookie[]) {
315
323
  return cookies
316
324
  .map(cookie => `${encodeURIComponent(cookie.name)}=${encodeURIComponent(cookie.value)}`)
317
- .join('; ');
325
+ .join('; ')
318
326
  }
319
327
 
320
328
  export function getSetCookie(headers: Headers) {
321
- const withSetCookie = headers as Headers & { getSetCookie?: () => string[] };
322
- return withSetCookie.getSetCookie?.() ?? [];
329
+ const withSetCookie = headers as Headers & { getSetCookie?: () => string[] }
330
+ return withSetCookie.getSetCookie?.() ?? []
323
331
  }
@@ -1,8 +1,8 @@
1
- import type { ComponentChildren } from 'preact';
1
+ import type { ComponentChildren } from 'preact'
2
2
 
3
3
  export interface SuspenseProps {
4
- fallback?: ComponentChildren;
5
- children?: ComponentChildren;
4
+ fallback?: ComponentChildren
5
+ children?: ComponentChildren
6
6
  }
7
7
 
8
8
  /**
@@ -12,5 +12,5 @@ export interface SuspenseProps {
12
12
  * it passes children through.
13
13
  */
14
14
  export function Suspense(props: SuspenseProps): ComponentChildren {
15
- return props.children ?? null;
15
+ return props.children ?? null
16
16
  }