@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
@@ -6,31 +6,31 @@
6
6
  */
7
7
 
8
8
  function serverOnly(name: string): never {
9
- throw new Error(`${name} can only be called from a Server Component or server function.`);
9
+ throw new Error(`${name} can only be called from a Server Component or server function.`)
10
10
  }
11
11
 
12
12
  export function revalidatePath(_path: string, _type?: 'page' | 'layout') {
13
- serverOnly('revalidatePath');
13
+ serverOnly('revalidatePath')
14
14
  }
15
15
 
16
16
  export function revalidateTag(_tag: string) {
17
- serverOnly('revalidateTag');
17
+ serverOnly('revalidateTag')
18
18
  }
19
19
 
20
- export const unstable_expirePath = revalidatePath;
21
- export const unstable_expireTag = revalidateTag;
22
- export const expirePath = revalidatePath;
23
- export const expireTag = revalidateTag;
24
- export const updateTag = revalidateTag;
20
+ export const unstable_expirePath = revalidatePath
21
+ export const unstable_expireTag = revalidateTag
22
+ export const expirePath = revalidatePath
23
+ export const expireTag = revalidateTag
24
+ export const updateTag = revalidateTag
25
25
 
26
26
  export function refresh() {
27
- serverOnly('refresh');
27
+ serverOnly('refresh')
28
28
  }
29
- export const unstable_refresh = refresh;
29
+ export const unstable_refresh = refresh
30
30
 
31
31
  export interface UnstableCacheOptions {
32
- revalidate?: number | false;
33
- tags?: string[];
32
+ revalidate?: number | false
33
+ tags?: string[]
34
34
  }
35
35
 
36
36
  export function unstable_cache<Args extends unknown[], Result>(
@@ -38,20 +38,20 @@ export function unstable_cache<Args extends unknown[], Result>(
38
38
  _keyParts?: string[],
39
39
  _options: UnstableCacheOptions = {},
40
40
  ): (...args: Args) => Promise<Result> {
41
- return fn;
41
+ return fn
42
42
  }
43
43
 
44
44
  export function unstable_noStore() {
45
- return undefined;
45
+ return undefined
46
46
  }
47
47
  export function io(): Promise<void> {
48
- return Promise.resolve();
48
+ return Promise.resolve()
49
49
  }
50
50
  export function cacheTag(..._tags: string[]) {
51
- return undefined;
51
+ return undefined
52
52
  }
53
53
  export function cacheLife(_profile: string | Record<string, unknown>) {
54
- return undefined;
54
+ return undefined
55
55
  }
56
- export const unstable_cacheTag = cacheTag;
57
- export const unstable_cacheLife = cacheLife;
56
+ export const unstable_cacheTag = cacheTag
57
+ export const unstable_cacheLife = cacheLife
@@ -1,18 +1,18 @@
1
- import { useContext } from 'preact/hooks';
1
+ import { useContext } from 'preact/hooks'
2
2
  import {
3
3
  ReadonlyURLSearchParams,
4
4
  useParams as usePNextParams,
5
5
  usePathname,
6
6
  useRouter as usePNextRouter,
7
7
  useSearchParams,
8
- } from '../../api/client-navigation';
8
+ } from '../../api/client-navigation'
9
9
  import {
10
10
  LayoutSegmentContext,
11
11
  type LayoutSegmentSnapshot,
12
12
  RouteParamsContext,
13
- } from '../../render/island-context';
14
- import { blockJavascriptUrl } from '../../api/router';
15
- import { isUnrecognizedActionError } from '../actions/unrecognized-error';
13
+ } from '../../render/island-context'
14
+ import { blockJavascriptUrl } from '../../client/router'
15
+ import { isUnrecognizedActionError } from '../actions/unrecognized-error'
16
16
  import {
17
17
  forbidden,
18
18
  notFound,
@@ -22,7 +22,7 @@ import {
22
22
  PNextUnauthorizedError,
23
23
  unauthorized,
24
24
  type RedirectStatus,
25
- } from '../../api/navigation';
25
+ } from '../../api/navigation'
26
26
 
27
27
  export {
28
28
  forbidden,
@@ -35,120 +35,120 @@ export {
35
35
  ReadonlyURLSearchParams,
36
36
  usePathname,
37
37
  useSearchParams,
38
- };
39
- export type { RedirectStatus };
38
+ }
39
+ export type { RedirectStatus }
40
40
 
41
41
  export const RedirectType = {
42
42
  push: 'push',
43
43
  replace: 'replace',
44
- } as const;
44
+ } as const
45
45
 
46
- export type RedirectType = (typeof RedirectType)[keyof typeof RedirectType];
46
+ export type RedirectType = (typeof RedirectType)[keyof typeof RedirectType]
47
47
 
48
- let pendingRedirectHref: string | undefined;
48
+ let pendingRedirectHref: string | undefined
49
49
 
50
50
  export function redirect(location: string, type: RedirectType = RedirectType.replace): never {
51
- redirectInBrowser(location, type);
52
- return undefined as never;
51
+ redirectInBrowser(location, type)
52
+ return undefined as never
53
53
  }
54
54
 
55
55
  export function permanentRedirect(
56
56
  location: string,
57
57
  type: RedirectType = RedirectType.replace,
58
58
  ): never {
59
- redirectInBrowser(location, type);
60
- return undefined as never;
59
+ redirectInBrowser(location, type)
60
+ return undefined as never
61
61
  }
62
62
 
63
63
  function redirectInBrowser(location: string, mode: RedirectType) {
64
- if (!process.browser && typeof window === 'undefined') return;
64
+ if (!process.browser && typeof window === 'undefined') return
65
65
 
66
- const href = new URL(location, window.location.href).href;
67
- if (pendingRedirectHref === href) return;
68
- pendingRedirectHref = href;
69
- if (mode === RedirectType.push) window.location.assign(href);
70
- else window.location.replace(href);
66
+ const href = new URL(location, window.location.href).href
67
+ if (pendingRedirectHref === href) return
68
+ pendingRedirectHref = href
69
+ if (mode === RedirectType.push) window.location.assign(href)
70
+ else window.location.replace(href)
71
71
  }
72
72
 
73
73
  export interface NavigateOptions {
74
- scroll?: boolean;
74
+ scroll?: boolean
75
75
  }
76
76
 
77
77
  export interface PrefetchOptions {
78
- kind?: 'auto' | 'full';
79
- onInvalidate?: () => void;
78
+ kind?: 'auto' | 'full'
79
+ onInvalidate?: () => void
80
80
  }
81
81
 
82
82
  export interface AppRouterInstance {
83
- push(href: string, options?: NavigateOptions): void;
84
- replace(href: string, options?: NavigateOptions): void;
85
- prefetch(href: string, options?: PrefetchOptions): void;
86
- refresh(): void;
87
- back(): void;
88
- forward(): void;
83
+ push(href: string, options?: NavigateOptions): void
84
+ replace(href: string, options?: NavigateOptions): void
85
+ prefetch(href: string, options?: PrefetchOptions): void
86
+ refresh(): void
87
+ back(): void
88
+ forward(): void
89
89
  /**
90
90
  * React Gesture Transitions (`experimental.gestureTransition`): commit the target route OPTIMISTICALLY
91
91
  * while a gesture is still in flight, ahead of the canonical `push` the gesture's completion issues.
92
92
  * pnext has no partially-committed render state, so the optimistic commit is the same soft navigation
93
93
  * - the canonical push that follows re-renders the already current URL.
94
94
  */
95
- experimental_gesturePush(href: string, options?: NavigateOptions): void;
96
- bfcacheId: string;
95
+ experimental_gesturePush(href: string, options?: NavigateOptions): void
96
+ bfcacheId: string
97
97
  }
98
98
 
99
99
  // Next's useRouter returns a stable instance across renders. The wrapper is
100
100
  // stateless (it delegates to core's singleton router), so build it once and
101
101
  // reuse it — callers rely on referential identity (deps arrays, memoization).
102
- let cachedRouter: AppRouterInstance | undefined;
103
- let refreshSuppressed = false;
102
+ let cachedRouter: AppRouterInstance | undefined
103
+ let refreshSuppressed = false
104
104
 
105
105
  function suppressSameTickRefresh() {
106
- refreshSuppressed = true;
106
+ refreshSuppressed = true
107
107
  queueMicrotask(() => {
108
- refreshSuppressed = false;
109
- });
108
+ refreshSuppressed = false
109
+ })
110
110
  }
111
111
 
112
112
  export function useRouter(): AppRouterInstance {
113
- const router = usePNextRouter();
114
- const pathname = usePathname();
115
- const snapshot = useContext(LayoutSegmentContext);
116
- const bfcacheId = scopedBfcacheId(pathname, snapshot, router.bfcacheId);
113
+ const router = usePNextRouter()
114
+ const pathname = usePathname()
115
+ const snapshot = useContext(LayoutSegmentContext)
116
+ const bfcacheId = scopedBfcacheId(pathname, snapshot, router.bfcacheId)
117
117
  cachedRouter ??= {
118
118
  push: (href, options) => {
119
- if (blockJavascriptUrl(href)) return;
120
- suppressSameTickRefresh();
121
- router.push(href as never, options as never);
119
+ if (blockJavascriptUrl(href)) return
120
+ suppressSameTickRefresh()
121
+ router.push(href as never, options as never)
122
122
  },
123
123
  replace: (href, options) => {
124
- if (blockJavascriptUrl(href)) return;
125
- suppressSameTickRefresh();
126
- router.replace(href as never, options as never);
124
+ if (blockJavascriptUrl(href)) return
125
+ suppressSameTickRefresh()
126
+ router.replace(href as never, options as never)
127
127
  },
128
128
  prefetch: (href, options) => {
129
- if (blockJavascriptUrl(href)) return;
130
- router.prefetch(href as never, options as never);
129
+ if (blockJavascriptUrl(href)) return
130
+ router.prefetch(href as never, options as never)
131
131
  },
132
132
  refresh: () => {
133
- if (refreshSuppressed) return;
134
- router.refresh();
133
+ if (refreshSuppressed) return
134
+ router.refresh()
135
135
  },
136
136
  back: () => router.back(),
137
137
  forward: () => router.forward(),
138
138
  experimental_gesturePush: (href, options) => {
139
- if (blockJavascriptUrl(href)) return;
140
- suppressSameTickRefresh();
139
+ if (blockJavascriptUrl(href)) return
140
+ suppressSameTickRefresh()
141
141
  // A gesture commits the target route optimistically: the address bar moves as soon as the gesture
142
142
  // starts, ahead of the render landing. Start the navigation FIRST (its synchronous prologue reads
143
143
  // the current location to key the departing route), as a `replace` so the entry pushed just below
144
144
  // is the one it commits into - one new history entry, showing the target URL immediately.
145
- router.replace(href as never, options as never);
146
- pushOptimisticEntry(href);
145
+ router.replace(href as never, options as never)
146
+ pushOptimisticEntry(href)
147
147
  },
148
148
  bfcacheId: '',
149
- };
150
- cachedRouter.bfcacheId = bfcacheId;
151
- return cachedRouter;
149
+ }
150
+ cachedRouter.bfcacheId = bfcacheId
151
+ return cachedRouter
152
152
  }
153
153
 
154
154
  // The optimistic history entry a gesture push commits before its render lands.
@@ -156,11 +156,11 @@ export function useRouter(): AppRouterInstance {
156
156
  // committed one (and the patched pushState broadcasts the location change, so
157
157
  // usePathname/useSearchParams see the target route right away).
158
158
  function pushOptimisticEntry(href: string) {
159
- if (!process.browser && typeof window === 'undefined') return;
160
- const target = new URL(href, window.location.href);
161
- if (target.origin !== window.location.origin) return;
162
- if (target.href === window.location.href) return;
163
- window.history.pushState(window.history.state, '', target.href);
159
+ if (!process.browser && typeof window === 'undefined') return
160
+ const target = new URL(href, window.location.href)
161
+ if (target.origin !== window.location.origin) return
162
+ if (target.href === window.location.href) return
163
+ window.history.pushState(window.history.state, '', target.href)
164
164
  }
165
165
 
166
166
  export function useParams<
@@ -170,25 +170,25 @@ export function useParams<
170
170
  // own params (route params + the slot's dynamic/catch-all captures) via
171
171
  // RouteParamsContext — window.__PNEXT_ROUTE__.params only carries the global
172
172
  // route params. Prefer the island-scoped snapshot when present.
173
- const scoped = useContext(RouteParamsContext);
174
- const params = usePNextParams();
175
- return (scoped ?? params) as T;
173
+ const scoped = useContext(RouteParamsContext)
174
+ const params = usePNextParams()
175
+ return (scoped ?? params) as T
176
176
  }
177
177
 
178
178
  interface DocumentNavState {
179
- children?: string;
180
- slots?: Record<string, string>;
179
+ children?: string
180
+ slots?: Record<string, string>
181
181
  /** Children rendered `default.*` (Next's `__DEFAULT__`) — no selected segment. */
182
- childrenDefault?: boolean;
182
+ childrenDefault?: boolean
183
183
  }
184
184
 
185
185
  export function useSelectedLayoutSegment(parallelRoutesKey?: string): string | null {
186
- const segments = clientSelectedSegments(parallelRoutesKey);
187
- return segments[parallelRoutesKey ? segments.length - 1 : 0] ?? null;
186
+ const segments = clientSelectedSegments(parallelRoutesKey)
187
+ return segments[parallelRoutesKey ? segments.length - 1 : 0] ?? null
188
188
  }
189
189
 
190
190
  export function useSelectedLayoutSegments(parallelRoutesKey?: string): string[] {
191
- return clientSelectedSegments(parallelRoutesKey);
191
+ return clientSelectedSegments(parallelRoutesKey)
192
192
  }
193
193
 
194
194
  /**
@@ -208,75 +208,75 @@ export function useSelectedLayoutSegments(parallelRoutesKey?: string): string[]
208
208
  * falls back to deriving segments from the server-embedded nav state.
209
209
  */
210
210
  function clientSelectedSegments(parallelRoutesKey?: string): string[] {
211
- usePathname();
212
- const snapshot = useContext(LayoutSegmentContext);
211
+ usePathname()
212
+ const snapshot = useContext(LayoutSegmentContext)
213
213
 
214
214
  if (!process.browser && typeof window === 'undefined') {
215
215
  if (snapshot) {
216
- return parallelRoutesKey ? (snapshot.slots[parallelRoutesKey] ?? []) : snapshot.segments;
216
+ return parallelRoutesKey ? (snapshot.slots[parallelRoutesKey] ?? []) : snapshot.segments
217
217
  }
218
- return [];
218
+ return []
219
219
  }
220
220
 
221
- const navState = documentNavState();
221
+ const navState = documentNavState()
222
222
  // A defaulted children slot (Next's `__DEFAULT__`) selects nothing: the URL's
223
223
  // segments were matched by a PARALLEL slot, not by children.
224
224
  const childrenSegments = () =>
225
225
  navState.childrenDefault
226
226
  ? []
227
- : routePatternSegments(navState.children ?? window.location.pathname);
227
+ : routePatternSegments(navState.children ?? window.location.pathname)
228
228
 
229
229
  if (snapshot) {
230
- if (parallelRoutesKey) return pathSegments(slotPath(parallelRoutesKey) ?? '');
231
- return childrenSegments().slice(snapshot.depth);
230
+ if (parallelRoutesKey) return pathSegments(slotPath(parallelRoutesKey) ?? '')
231
+ return childrenSegments().slice(snapshot.depth)
232
232
  }
233
233
 
234
- if (parallelRoutesKey) return pathSegments(slotPath(parallelRoutesKey) ?? '');
235
- return childrenSegments();
234
+ if (parallelRoutesKey) return pathSegments(slotPath(parallelRoutesKey) ?? '')
235
+ return childrenSegments()
236
236
  }
237
237
 
238
238
  function routePatternSegments(pathname: string): string[] {
239
- const pattern = window.__PNEXT_ROUTE__?.route;
240
- const segments = pathSegments(pathname);
241
- if (!pattern) return segments;
242
- const patternSegments = pattern.split('/').filter(Boolean);
239
+ const pattern = window.__PNEXT_ROUTE__?.route
240
+ const segments = pathSegments(pathname)
241
+ if (!pattern) return segments
242
+ const patternSegments = pattern.split('/').filter(Boolean)
243
243
  // Colon form: a catch-all segment is `:slug*` (both `[...slug]` and
244
244
  // `[[...slug]]` collapse the trailing group the same way here).
245
- const catchAllIndex = patternSegments.findIndex(part => /^:[\w$]+\*$/.test(part));
246
- if (catchAllIndex === -1) return segments;
247
- const head = segments.slice(0, catchAllIndex);
248
- const tail = segments.slice(catchAllIndex);
249
- return tail.length > 0 ? [...head, tail.join('/')] : head;
245
+ const catchAllIndex = patternSegments.findIndex(part => /^:[\w$]+\*$/.test(part))
246
+ if (catchAllIndex === -1) return segments
247
+ const head = segments.slice(0, catchAllIndex)
248
+ const tail = segments.slice(catchAllIndex)
249
+ return tail.length > 0 ? [...head, tail.join('/')] : head
250
250
  }
251
251
 
252
252
  function pathSegments(pathname: string): string[] {
253
- return pathname.split('/').filter(Boolean).map(decodeSegment);
253
+ return pathname.split('/').filter(Boolean).map(decodeSegment)
254
254
  }
255
255
 
256
256
  function slotPath(parallelRoutesKey: string): string | undefined {
257
- const slotName = `@${parallelRoutesKey}`;
257
+ const slotName = `@${parallelRoutesKey}`
258
258
  for (const [dir, pathname] of Object.entries(documentNavState().slots ?? {})) {
259
- const parts = dir.split(/[\\/]/);
260
- if (parts[parts.length - 1] === slotName) return pathname;
259
+ const parts = dir.split(/[\\/]/)
260
+ if (parts[parts.length - 1] === slotName) return pathname
261
261
  }
262
- return undefined;
262
+ return undefined
263
263
  }
264
264
 
265
265
  function documentNavState(): DocumentNavState {
266
- const text = document.getElementById('__PNEXT_NAV_STATE__')?.textContent;
267
- if (!text) return {};
266
+ const text = document.getElementById('__PNEXT_NAV_STATE__')?.textContent
267
+ if (!text) return {}
268
268
  try {
269
- return JSON.parse(text) as DocumentNavState;
269
+ return JSON.parse(text) as DocumentNavState
270
270
  } catch {
271
- return {};
271
+ return {}
272
272
  }
273
273
  }
274
274
 
275
275
  function decodeSegment(segment: string): string {
276
276
  try {
277
- return decodeURIComponent(segment);
277
+ return decodeURIComponent(segment)
278
278
  } catch {
279
- return segment;
279
+ return segment
280
280
  }
281
281
  }
282
282
 
@@ -287,21 +287,17 @@ function decodeSegment(segment: string): string {
287
287
  // defeating the whole point of the scope. Instead the layout's id is derived purely from its own scope
288
288
  // (the path segments it actually owns), stable across siblings and naturally different when the
289
289
  // scope's own segment changes.
290
- function scopedBfcacheId(
291
- pathname: string,
292
- snapshot: LayoutSegmentSnapshot | null,
293
- baseId: string,
294
- ) {
295
- if (!baseId) return '';
296
- if (!snapshot || snapshot.depth <= 0) return baseId;
297
- const segments = pathname.split('/').filter(Boolean);
298
- if (!segments.length) return baseId;
299
- const scope = segments.slice(0, Math.min(snapshot.depth, segments.length)).join('/');
300
- return scope ? `layout:${scope}` : baseId;
290
+ function scopedBfcacheId(pathname: string, snapshot: LayoutSegmentSnapshot | null, baseId: string) {
291
+ if (!baseId) return ''
292
+ if (!snapshot || snapshot.depth <= 0) return baseId
293
+ const segments = pathname.split('/').filter(Boolean)
294
+ if (!segments.length) return baseId
295
+ const scope = segments.slice(0, Math.min(snapshot.depth, segments.length)).join('/')
296
+ return scope ? `layout:${scope}` : baseId
301
297
  }
302
298
 
303
- export { useLinkStatus } from './link';
304
- export { useServerInsertedHTML } from '../react/server-inserted-html';
299
+ export { useLinkStatus } from './link'
300
+ export { useServerInsertedHTML } from '../react/server-inserted-html'
305
301
 
306
302
  /**
307
303
  * True for the error a server-action dispatch throws when the server no longer
@@ -309,5 +305,5 @@ export { useServerInsertedHTML } from '../react/server-inserted-html';
309
305
  * action endpoint sends for an unknown id.
310
306
  */
311
307
  export function unstable_isUnrecognizedActionError(error: unknown): boolean {
312
- return isUnrecognizedActionError(error);
308
+ return isUnrecognizedActionError(error)
313
309
  }
@@ -1,3 +1,3 @@
1
1
  // client-only import marker: valid in client modules (browser bundle); the
2
2
  // server bundler keeps the real package error path. Mirror of server-only.ts.
3
- export {};
3
+ export {}