@wular/pnext 0.0.3 → 0.0.6
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.
- package/README.md +11 -11
- package/bin/pnext +1 -1
- package/config/lint/base.js +7 -7
- package/config/ts/base.json +2 -4
- package/config/ts/react.json +2 -6
- package/package.json +23 -2
- package/reference/compat.md +1 -1
- package/reference/config.md +2 -2
- package/reference/css.md +13 -9
- package/reference/dev.md +1 -1
- package/reference/metadata.md +7 -7
- package/reference/navigation.md +35 -28
- package/reference/performance.md +70 -70
- package/reference/rendering.md +17 -17
- package/reference/routing.md +17 -17
- package/reference/typegen.md +12 -8
- package/src/api/cache.ts +36 -37
- package/src/api/client-cache.ts +2 -2
- package/src/api/client-navigation.ts +113 -109
- package/src/api/dynamic.tsx +58 -55
- package/src/api/link.tsx +49 -52
- package/src/api/navigation.ts +59 -58
- package/src/api/server.ts +152 -144
- package/src/api/suspense.ts +4 -4
- package/src/cli/adapters/vercel-warm.ts +126 -121
- package/src/cli/adapters/vercel.ts +437 -443
- package/src/cli/analyze.ts +333 -144
- package/src/cli/{named-bin.ts → boot/named-bin.ts} +37 -37
- package/src/cli/{boot-trace.ts → boot/trace.ts} +10 -10
- package/src/cli/build.ts +976 -978
- package/src/cli/create.ts +71 -63
- package/src/cli/dev.ts +116 -116
- package/src/cli/index.ts +88 -85
- package/src/cli/migrate/package-json.ts +73 -71
- package/src/cli/migrate/report.ts +32 -33
- package/src/cli/migrate/{index.ts → run.ts} +48 -49
- package/src/cli/migrate/scan.ts +46 -46
- package/src/cli/migrate/spinner.ts +9 -9
- package/src/cli/migrate/tsconfig.ts +35 -35
- package/src/cli/{server-entry.ts → serve/entry.ts} +57 -57
- package/src/cli/{request-pipeline.ts → serve/pipeline.ts} +386 -394
- package/src/cli/{serve-ui.ts → serve/ui.ts} +47 -47
- package/src/cli/start.ts +65 -66
- package/src/{typegen.ts → cli/typegen.ts} +59 -59
- package/src/client/build.ts +794 -768
- package/src/client/chunk-fold.ts +245 -240
- package/src/client/{paths.ts → chunk-name.ts} +6 -6
- package/src/client/entry.ts +162 -147
- package/src/client/prebuilt.ts +231 -223
- package/src/client/profile.ts +29 -29
- package/src/client/react-compiler.ts +20 -15
- package/src/client/{compat-surface.ts → react-tier.ts} +64 -64
- package/src/client/reference-stub.ts +51 -51
- package/src/client/reference.ts +19 -19
- package/src/{api → client}/router/events.ts +17 -17
- package/src/{api → client}/router/history.ts +16 -16
- package/src/{api → client}/router/hub.ts +52 -53
- package/src/{api/router.ts → client/router/index.ts} +61 -60
- package/src/{api → client}/router/policies.ts +24 -24
- package/src/{api → client}/router/runtime.ts +1988 -1961
- package/src/{api → client}/router/types.ts +93 -98
- package/src/compat/actions/client-plugin.ts +42 -43
- package/src/compat/actions/client-stub.ts +14 -14
- package/src/compat/actions/{action-client.ts → client.ts} +194 -193
- package/src/compat/actions/config.ts +63 -64
- package/src/compat/actions/detect.ts +68 -68
- package/src/compat/actions/discovery.ts +105 -105
- package/src/compat/actions/{action-dispatch.ts → dispatch.ts} +277 -274
- package/src/compat/actions/early-submit.ts +1 -1
- package/src/compat/actions/endpoint.ts +198 -198
- package/src/compat/actions/extensions.ts +811 -0
- package/src/compat/actions/flight.ts +23 -23
- package/src/compat/actions/form-state.ts +34 -34
- package/src/compat/actions/hoist.ts +382 -236
- package/src/compat/actions/ids.ts +7 -12
- package/src/compat/actions/index.ts +8 -8
- package/src/compat/actions/instances.ts +46 -46
- package/src/compat/actions/origin.ts +47 -48
- package/src/compat/actions/protocol.ts +22 -22
- package/src/compat/actions/registry.ts +19 -19
- package/src/compat/{misc/action-return.ts → actions/return.ts} +60 -57
- package/src/compat/actions/rewrite.ts +125 -125
- package/src/compat/actions/{action-router.ts → router.ts} +10 -10
- package/src/compat/actions/serve.ts +132 -136
- package/src/compat/actions/server-tag.ts +4 -4
- package/src/compat/actions/{action-shared.ts → shared.ts} +34 -34
- package/src/compat/actions/unrecognized-error.ts +4 -4
- package/src/compat/{index.ts → aliases.ts} +112 -109
- package/src/compat/bundler/bun-externals.ts +18 -18
- package/src/compat/bundler/cjs-exports.ts +271 -223
- package/src/compat/bundler/config.ts +116 -111
- package/src/compat/bundler/externals.ts +12 -12
- package/src/compat/bundler/import-meta-url.ts +19 -19
- package/src/compat/bundler/modularize-imports.ts +36 -33
- package/src/compat/bundler/new-url-asset.ts +22 -24
- package/src/compat/bundler/optimize-package-imports.ts +111 -107
- package/src/compat/bundler/polyfill.ts +28 -28
- package/src/compat/bundler/react-compiler.ts +35 -29
- package/src/compat/bundler/react-profiler.tsx +11 -11
- package/src/compat/bundler/relay-transform.ts +48 -47
- package/src/compat/bundler/require-context.ts +119 -113
- package/src/compat/bundler/resolve-extensions.ts +19 -19
- package/src/compat/bundler/source-cache.ts +25 -25
- package/src/compat/bundler/static-imports.ts +7 -7
- package/src/compat/bundler/symlink-imports.ts +46 -46
- package/src/compat/bundler/tsconfig-paths.ts +13 -15
- package/src/compat/bundler/wasm.ts +58 -60
- package/src/compat/bundler/webpack-loaders.ts +254 -241
- package/src/compat/bundler/worker.ts +101 -104
- package/src/compat/cache/build-flags.ts +29 -29
- package/src/compat/cache/build-prerender-errors.ts +40 -44
- package/src/compat/cache/custom-handler.ts +60 -53
- package/src/compat/cache/fetch-patch.ts +240 -240
- package/src/compat/cache/handler.ts +27 -31
- package/src/compat/cache/modern-handler.ts +148 -126
- package/src/compat/cache/resume-data-cache.ts +47 -45
- package/src/compat/cache/revalidate.ts +233 -232
- package/src/compat/cache/runtime-error.ts +35 -35
- package/src/compat/cache/use-cache-transform.ts +442 -417
- package/src/compat/cache/use-cache.ts +650 -614
- package/src/compat/cache-control.ts +140 -142
- package/src/compat/client/base-path.ts +21 -20
- package/src/compat/client/css-order.ts +18 -18
- package/src/compat/client/errors/bare-boundary.ts +11 -11
- package/src/compat/client/errors/control-flow.ts +23 -23
- package/src/compat/client/errors/error-boundary.ts +61 -61
- package/src/compat/client/errors/global-error.ts +101 -91
- package/src/compat/client/errors/install.ts +71 -72
- package/src/compat/client/errors/lazy.ts +23 -23
- package/src/compat/client/errors/primitive-throw.ts +47 -45
- package/src/compat/client/errors/soft-refresh.ts +4 -4
- package/src/compat/client/link-status.ts +33 -33
- package/src/compat/client/{nav-compat-runtime.ts → nav-runtime.ts} +20 -20
- package/src/compat/client/{nav-compat.ts → nav.ts} +12 -13
- package/src/compat/client/navigation-scroll.ts +63 -63
- package/src/compat/client/optimistic-routing.ts +93 -88
- package/src/compat/client/prefetch-cache.ts +23 -24
- package/src/compat/client/route-announcer.ts +35 -35
- package/src/compat/client/segment-cache-policy.ts +20 -20
- package/src/compat/client/segment-cache.ts +309 -315
- package/src/compat/client/segment-prefetch.ts +127 -132
- package/src/compat/client/trailing-slash.ts +5 -4
- package/src/compat/css/chunking.ts +113 -116
- package/src/compat/css/inline-css.ts +21 -21
- package/src/compat/css/lightningcss.ts +37 -38
- package/src/compat/css/modules.ts +161 -175
- package/src/compat/css/nonce.ts +7 -7
- package/src/compat/css/sass-plugin.ts +18 -21
- package/src/compat/css/sass.ts +150 -152
- package/src/compat/css/styled-jsx-runtime.ts +27 -27
- package/src/compat/css/styled-jsx.ts +21 -21
- package/src/compat/edge-runtime.ts +27 -27
- package/src/compat/{adapter → export}/build-complete.ts +72 -75
- package/src/compat/export/client.ts +29 -31
- package/src/compat/export/{index.ts → emit.ts} +111 -110
- package/src/compat/export/standalone.ts +62 -54
- package/src/compat/image-optimizer/cache.ts +51 -49
- package/src/compat/image-optimizer/detect.ts +52 -52
- package/src/compat/image-optimizer/{index.ts → optimize.ts} +189 -194
- package/src/compat/image-optimizer/source.ts +77 -80
- package/src/compat/lifecycle/after-scope.ts +26 -26
- package/src/compat/lifecycle/after.ts +48 -45
- package/src/compat/lifecycle/error-funnel.ts +98 -102
- package/src/compat/lifecycle/error-serialize.ts +30 -26
- package/src/compat/lifecycle/error-ui.ts +67 -32
- package/src/compat/lifecycle/instrumentation-client.ts +36 -38
- package/src/compat/lifecycle/instrumentation.ts +85 -85
- package/src/compat/lifecycle/node-console.ts +11 -11
- package/src/compat/lifecycle/testmode.ts +160 -132
- package/src/compat/mdx/compile.ts +60 -57
- package/src/compat/mdx/plugin.ts +11 -11
- package/src/compat/mdx/{next-mdx-stub.ts → stub.ts} +5 -5
- package/src/compat/{metadata-route-artifacts.ts → metadata-artifacts.ts} +195 -191
- package/src/compat/metadata.ts +75 -81
- package/src/compat/next/cache.ts +68 -69
- package/src/compat/next/canonical-url.ts +9 -9
- package/src/compat/next/client-cache.ts +19 -19
- package/src/compat/next/client-navigation.ts +112 -116
- package/src/compat/next/client-only.ts +1 -1
- package/src/compat/next/client-script.tsx +99 -93
- package/src/compat/next/client-server.ts +10 -10
- package/src/compat/next/config-loader.ts +176 -173
- package/src/compat/next/config.ts +7 -7
- package/src/compat/next/constants.cjs +6 -6
- package/src/compat/next/constants.ts +6 -6
- package/src/compat/next/custom-server.ts +26 -24
- package/src/compat/next/dist/client/components/app-router-headers.ts +21 -21
- package/src/compat/next/dist/server/app-render/work-unit-async-storage.external.cjs +3 -4
- package/src/compat/next/dist/server/web/spec-extension/revalidate.ts +1 -1
- package/src/compat/next/dist/server/web/spec-extension/unstable-cache.ts +1 -1
- package/src/compat/next/dist/server/web/spec-extension/unstable-no-store.ts +1 -1
- package/src/compat/next/dynamic.tsx +21 -18
- package/src/compat/next/error.tsx +52 -52
- package/src/compat/next/font/cache.ts +74 -74
- package/src/compat/next/font/google.ts +2 -2
- package/src/compat/next/font/index.ts +1 -1
- package/src/compat/next/font/local.ts +3 -3
- package/src/compat/next/font/runtime-client.ts +17 -15
- package/src/compat/next/font/runtime.ts +443 -408
- package/src/compat/next/font/shared.ts +120 -108
- package/src/compat/next/form.tsx +63 -63
- package/src/compat/next/head.tsx +2 -2
- package/src/compat/next/headers.ts +103 -95
- package/src/compat/next/image/client.tsx +220 -0
- package/src/compat/next/image/config.ts +56 -58
- package/src/compat/next/image/optimizer.ts +40 -36
- package/src/compat/next/image/patterns.ts +37 -40
- package/src/compat/next/{image-props.ts → image/props.ts} +208 -202
- package/src/compat/next/image/shared.ts +65 -57
- package/src/compat/next/image/static-metadata.ts +98 -107
- package/src/compat/next/image/validate.ts +79 -88
- package/src/compat/next/image.tsx +19 -23
- package/src/compat/next/index.ts +1 -1
- package/src/compat/next/legacy-image.tsx +59 -60
- package/src/compat/next/{link-validation-transform.ts → link-transform.ts} +95 -96
- package/src/compat/next/link.tsx +158 -158
- package/src/compat/next/navigation.cjs +12 -3
- package/src/compat/next/navigation.ts +48 -50
- package/src/compat/next/offline.ts +27 -27
- package/src/compat/next/og.ts +121 -124
- package/src/compat/next/preferred-region.ts +13 -14
- package/src/compat/next/redirects.ts +58 -56
- package/src/compat/next/resource-hints.ts +73 -76
- package/src/compat/next/rewrites.ts +130 -133
- package/src/compat/next/root-params.ts +45 -45
- package/src/compat/next/{optimistic-route-state.ts → route-state.ts} +52 -52
- package/src/compat/next/router.cjs +4 -2
- package/src/compat/next/router.ts +58 -61
- package/src/compat/next/script.tsx +108 -108
- package/src/compat/next/server-only.ts +1 -1
- package/src/compat/next/server.ts +19 -19
- package/src/compat/next/svgr.ts +18 -17
- package/src/compat/next/telemetry.ts +24 -24
- package/src/compat/next/{image-usage.ts → usage.ts} +70 -39
- package/src/compat/next/user-agent.ts +53 -49
- package/src/compat/next/web-vitals.ts +22 -24
- package/src/compat/otel/api.ts +41 -41
- package/src/compat/otel/client-trace-metadata.ts +25 -27
- package/src/compat/otel/fetch-span.ts +29 -29
- package/src/compat/otel/tracer.ts +331 -331
- package/src/compat/pages/api.ts +456 -0
- package/src/compat/pages/client-plugin.ts +36 -36
- package/src/compat/pages/router-state.ts +34 -34
- package/src/compat/pages/{index.ts → router.ts} +130 -135
- package/src/compat/ppr/io.ts +12 -12
- package/src/compat/ppr/missing-root-params.ts +34 -38
- package/src/compat/ppr/root-params-scan.ts +66 -66
- package/src/compat/ppr/root-params-transform.ts +24 -26
- package/src/compat/ppr/root-params.ts +30 -30
- package/src/compat/ppr/segment-config-incompat.ts +6 -7
- package/src/compat/protocol.ts +71 -70
- package/src/compat/react/action-state.ts +47 -48
- package/src/compat/react/client-lite.ts +15 -15
- package/src/compat/react/client.ts +4 -4
- package/src/compat/react/compiler-runtime.ts +11 -11
- package/src/compat/react/dom-client.ts +44 -44
- package/src/compat/react/dom-react-server.ts +10 -16
- package/src/compat/react/dom-server.ts +10 -10
- package/src/compat/react/dom.ts +52 -52
- package/src/compat/react/hooks-extra.ts +34 -35
- package/src/compat/react/parity.ts +64 -61
- package/src/compat/react/preact.ts +81 -82
- package/src/compat/react/react-server.ts +28 -28
- package/src/compat/react/router-shim.ts +1 -1
- package/src/compat/react/server-component-use.ts +8 -8
- package/src/compat/react/server-inserted-html.ts +30 -31
- package/src/compat/react/server.ts +53 -55
- package/src/compat/react/use.ts +32 -32
- package/src/compat/react/view-transition.ts +20 -20
- package/src/compat/register/actions.ts +35 -824
- package/src/compat/register/boot.ts +41 -41
- package/src/compat/register/build-tier.ts +5 -5
- package/src/compat/register/build.ts +74 -70
- package/src/compat/register/bundler.ts +161 -156
- package/src/compat/register/cache.ts +20 -20
- package/src/compat/register/client-errors.ts +3 -3
- package/src/compat/register/config.ts +6 -6
- package/src/compat/register/css-extras.ts +30 -34
- package/src/compat/register/edge-runtime.ts +3 -3
- package/src/compat/register/errors.ts +10 -12
- package/src/compat/register/export.ts +16 -16
- package/src/compat/register/font.ts +11 -11
- package/src/compat/register/hooks.ts +2 -2
- package/src/compat/register/image.ts +40 -40
- package/src/compat/register/index.ts +59 -62
- package/src/compat/register/instrumentation-client.ts +10 -10
- package/src/compat/register/lifecycle.ts +25 -28
- package/src/compat/register/mdx.ts +10 -10
- package/src/compat/register/middleware.ts +226 -16
- package/src/compat/register/otel.ts +80 -88
- package/src/compat/register/pages-api.ts +10 -463
- package/src/compat/register/ppr.ts +16 -16
- package/src/compat/register/protocol.ts +17 -18
- package/src/compat/register/proxy.ts +49 -51
- package/src/compat/register/render.ts +79 -76
- package/src/compat/register/routing.ts +162 -159
- package/src/compat/register/segment.ts +24 -1887
- package/src/compat/register/static-image.ts +3 -3
- package/src/compat/register/{misc.ts → taint.ts} +9 -9
- package/src/compat/register/typed-routes.ts +14 -14
- package/src/compat/register/{usecache.ts → use-cache.ts} +39 -39
- package/src/compat/register/validation.ts +18 -18
- package/src/compat/segment/loading-boundary.ts +43 -45
- package/src/compat/segment/page-slot.ts +69 -69
- package/src/compat/segment/serve.ts +1884 -0
- package/src/compat/segment/tree.ts +113 -112
- package/src/compat/segment/vary-key.ts +38 -38
- package/src/compat/segment/vary-params.ts +138 -142
- package/src/compat/static-params.ts +14 -12
- package/src/compat/tsconfig-defaults.ts +87 -91
- package/src/compat/typecheck/{index.ts → check.ts} +234 -212
- package/src/compat/typecheck/worker.ts +15 -12
- package/src/compat/typed-routes/{index.ts → generate.ts} +36 -36
- package/src/compat/typed-routes/manifest.ts +174 -170
- package/src/compat/typed-routes/typegen.ts +127 -110
- package/src/compat/validation/errors.ts +16 -19
- package/src/compat/validation/prerender-diagnostics.ts +521 -504
- package/src/compat/validation/{index.ts → validate.ts} +647 -648
- package/src/compat-bootstrap.ts +16 -16
- package/src/config.ts +69 -69
- package/src/css/build.ts +230 -227
- package/src/css/postcss.ts +79 -80
- package/src/css/worker.ts +14 -15
- package/src/dev/client-actions.ts +10 -10
- package/src/dev/client-chunk-store.ts +27 -27
- package/src/dev/{client-key-cache.ts → restart/client-key.ts} +76 -76
- package/src/dev/{restart-cache.ts → restart/enabled.ts} +1 -1
- package/src/dev/{global-css-cache.ts → restart/global-css.ts} +91 -83
- package/src/dev/{node-module-bundle-cache.ts → restart/node-modules.ts} +24 -24
- package/src/dev/{route-bundle-key-cache.ts → restart/route-bundle-key.ts} +53 -53
- package/src/dev/{route-facts-cache.ts → restart/route-facts.ts} +82 -82
- package/src/dev/server.ts +804 -820
- package/src/env.ts +46 -43
- package/src/extensions.ts +491 -478
- package/src/index.ts +8 -8
- package/src/internal.ts +20 -23
- package/src/{islands → render}/boundary-error.ts +3 -3
- package/src/render/hooks.ts +71 -71
- package/src/render/island-context.ts +14 -14
- package/src/render/metadata.ts +310 -310
- package/src/{ppr-postpone.ts → render/postpone.ts} +5 -5
- package/src/{ppr.ts → render/ppr.ts} +244 -245
- package/src/render/renderer.ts +2076 -2082
- package/src/render/resource-hints.ts +16 -17
- package/src/render/slots.tsx +224 -235
- package/src/{islands → render}/static-children.ts +9 -12
- package/src/{islands → render}/static-slots.ts +37 -37
- package/src/{cache/context.ts → request/cache.ts} +20 -20
- package/src/request/context.ts +107 -107
- package/src/{dynamic/source.ts → resolve/dynamic.ts} +152 -143
- package/src/resolve/engine.ts +90 -77
- package/src/resolve/imports.ts +475 -463
- package/src/resolve/scan-facts.ts +442 -186
- package/src/resolve/source-text.ts +37 -37
- package/src/{dynamic → resolve}/tree-shake.ts +132 -128
- package/src/routing/forwarded.ts +19 -19
- package/src/routing/handler.ts +84 -91
- package/src/routing/href.ts +69 -70
- package/src/routing/{metadata.ts → metadata-files.ts} +403 -401
- package/src/{proxy.ts → routing/proxy.ts} +306 -312
- package/src/routing/{request-runtime.ts → request-environment.ts} +10 -10
- package/src/routing/routes.ts +833 -848
- package/src/routing/slots.ts +164 -160
- package/src/runtime/loader.ts +952 -0
- package/src/{dev → runtime}/module-cache.ts +309 -287
- package/src/{dev → runtime}/module-generations.ts +9 -9
- package/src/{dev → runtime}/module-transform.ts +81 -72
- package/src/{dev/imports.ts → runtime/modules.ts} +934 -847
- package/src/runtime/{server.ts → vendor-build.ts} +848 -1696
- package/src/runtime/vendor.ts +425 -404
- package/src/styles.d.ts +9 -0
- package/src/types.ts +320 -335
- package/src/utils/ansi.ts +5 -5
- package/src/utils/{source.ts → code.ts} +15 -12
- package/src/utils/content-type.ts +3 -3
- package/src/utils/decode.ts +2 -2
- package/src/utils/dev-profile.ts +13 -13
- package/src/utils/error-log.ts +6 -6
- package/src/utils/esbuild.ts +18 -18
- package/src/utils/fs-cache.ts +13 -13
- package/src/utils/fs.ts +57 -49
- package/src/utils/html.ts +20 -24
- package/src/utils/native-require.ts +8 -8
- package/src/utils/serialize.ts +139 -146
- package/src/utils/verbose.ts +18 -18
- package/src/cli/analyze-print.ts +0 -181
- package/src/compat/middleware/manifest.ts +0 -210
- package/src/compat/next/image-client.tsx +0 -215
- package/src/compat/next/link-usage.ts +0 -29
- package/src/css/index.ts +0 -2
- package/src/render/index.ts +0 -1
- package/src/style-modules.d.ts +0 -9
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import ReactCompat from './preact'
|
|
2
|
-
import { cache as serverCache } from '../../api/cache'
|
|
3
|
-
import { currentPrerenderScope } from '../../ppr'
|
|
4
|
-
import { currentCacheSignal } from '../../cache
|
|
1
|
+
import ReactCompat from './preact'
|
|
2
|
+
import { cache as serverCache } from '../../api/cache'
|
|
3
|
+
import { currentPrerenderScope } from '../../render/ppr'
|
|
4
|
+
import { currentCacheSignal } from '../../request/cache'
|
|
5
5
|
|
|
6
6
|
export {
|
|
7
7
|
Children,
|
|
@@ -35,20 +35,20 @@ export {
|
|
|
35
35
|
useActionState,
|
|
36
36
|
useOptimistic,
|
|
37
37
|
version,
|
|
38
|
-
} from './preact'
|
|
39
|
-
export { cache } from '../../api/cache'
|
|
40
|
-
import { ViewTransition, addTransitionType } from './view-transition'
|
|
41
|
-
export { ViewTransition, addTransitionType }
|
|
38
|
+
} from './preact'
|
|
39
|
+
export { cache } from '../../api/cache'
|
|
40
|
+
import { ViewTransition, addTransitionType } from './view-transition'
|
|
41
|
+
export { ViewTransition, addTransitionType }
|
|
42
42
|
|
|
43
|
-
type EffectHook = typeof ReactCompat.useEffect
|
|
44
|
-
type StateSetter<State> = (value: State | ((previous: State) => State)) => void
|
|
45
|
-
type Reducer<Action> = (action: Action) => void
|
|
43
|
+
type EffectHook = typeof ReactCompat.useEffect
|
|
44
|
+
type StateSetter<State> = (value: State | ((previous: State) => State)) => void
|
|
45
|
+
type Reducer<Action> = (action: Action) => void
|
|
46
46
|
|
|
47
|
-
const useEffect: EffectHook = () => undefined
|
|
48
|
-
const useLayoutEffect: EffectHook = () => undefined
|
|
49
|
-
const useInsertionEffect: EffectHook = () => undefined
|
|
50
|
-
const useDebugValue: typeof ReactCompat.useDebugValue = () => undefined
|
|
51
|
-
const useImperativeHandle: typeof ReactCompat.useImperativeHandle = () => undefined
|
|
47
|
+
const useEffect: EffectHook = () => undefined
|
|
48
|
+
const useLayoutEffect: EffectHook = () => undefined
|
|
49
|
+
const useInsertionEffect: EffectHook = () => undefined
|
|
50
|
+
const useDebugValue: typeof ReactCompat.useDebugValue = () => undefined
|
|
51
|
+
const useImperativeHandle: typeof ReactCompat.useImperativeHandle = () => undefined
|
|
52
52
|
|
|
53
53
|
function useState<State = undefined>(
|
|
54
54
|
initialState?: State | (() => State),
|
|
@@ -56,7 +56,7 @@ function useState<State = undefined>(
|
|
|
56
56
|
return [
|
|
57
57
|
typeof initialState === 'function' ? (initialState as () => State)() : initialState,
|
|
58
58
|
() => undefined,
|
|
59
|
-
]
|
|
59
|
+
]
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
function useReducer<State, Action>(
|
|
@@ -64,29 +64,29 @@ function useReducer<State, Action>(
|
|
|
64
64
|
initialArg: State,
|
|
65
65
|
init?: (value: State) => State,
|
|
66
66
|
): [State, Reducer<Action>] {
|
|
67
|
-
void reducer
|
|
68
|
-
return [init ? init(initialArg) : initialArg, () => undefined]
|
|
67
|
+
void reducer
|
|
68
|
+
return [init ? init(initialArg) : initialArg, () => undefined]
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
function useRef<Value = undefined>(initialValue?: Value): { current: Value | undefined } {
|
|
72
|
-
return { current: initialValue }
|
|
72
|
+
return { current: initialValue }
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
function useMemo<Value>(factory: () => Value): Value {
|
|
76
|
-
return factory()
|
|
76
|
+
return factory()
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type -- must mirror preact's `<T extends Function>` useCallback signature
|
|
80
80
|
function useCallback<Callback extends Function>(callback: Callback): Callback {
|
|
81
|
-
return callback
|
|
81
|
+
return callback
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
function useDeferredValue<Value>(value: Value): Value {
|
|
85
|
-
return value
|
|
85
|
+
return value
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
function useTransition(): [false, (callback: () => void) => void] {
|
|
89
|
-
return [false, callback => callback()]
|
|
89
|
+
return [false, callback => callback()]
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
function useSyncExternalStore<Snapshot>(
|
|
@@ -94,13 +94,11 @@ function useSyncExternalStore<Snapshot>(
|
|
|
94
94
|
getSnapshot: () => Snapshot,
|
|
95
95
|
getServerSnapshot?: () => Snapshot,
|
|
96
96
|
): Snapshot {
|
|
97
|
-
return getServerSnapshot ? getServerSnapshot() : getSnapshot()
|
|
97
|
+
return getServerSnapshot ? getServerSnapshot() : getSnapshot()
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
function useContext<Value>(
|
|
101
|
-
|
|
102
|
-
): Value {
|
|
103
|
-
return ReactCompat.useContext(context);
|
|
100
|
+
function useContext<Value>(context: Parameters<typeof ReactCompat.useContext<Value>>[0]): Value {
|
|
101
|
+
return ReactCompat.useContext(context)
|
|
104
102
|
}
|
|
105
103
|
|
|
106
104
|
// Re-export the server stubs as named exports too. Client-component libraries
|
|
@@ -123,34 +121,34 @@ export {
|
|
|
123
121
|
useTransition,
|
|
124
122
|
useSyncExternalStore,
|
|
125
123
|
useContext,
|
|
126
|
-
}
|
|
124
|
+
}
|
|
127
125
|
|
|
128
126
|
export function cacheSignal(): AbortSignal | null {
|
|
129
|
-
const prerender = currentPrerenderScope()
|
|
130
|
-
if (prerender) return prerender.signal
|
|
131
|
-
return currentCacheSignal()
|
|
127
|
+
const prerender = currentPrerenderScope()
|
|
128
|
+
if (prerender) return prerender.signal
|
|
129
|
+
return currentCacheSignal()
|
|
132
130
|
}
|
|
133
131
|
|
|
134
132
|
const ReactServer = { ...ReactCompat } as typeof ReactCompat & {
|
|
135
|
-
cache: typeof serverCache
|
|
136
|
-
cacheSignal: typeof cacheSignal
|
|
137
|
-
}
|
|
138
|
-
delete (ReactServer as { useState?: unknown }).useState
|
|
139
|
-
ReactServer.cache = serverCache
|
|
140
|
-
ReactServer.cacheSignal = cacheSignal
|
|
141
|
-
ReactServer.useEffect = useEffect
|
|
142
|
-
ReactServer.useLayoutEffect = useLayoutEffect
|
|
143
|
-
ReactServer.useInsertionEffect = useInsertionEffect
|
|
144
|
-
ReactServer.useDebugValue = useDebugValue
|
|
145
|
-
ReactServer.useImperativeHandle = useImperativeHandle
|
|
146
|
-
ReactServer.useReducer = useReducer
|
|
147
|
-
ReactServer.useRef = useRef
|
|
148
|
-
ReactServer.useMemo = useMemo
|
|
149
|
-
ReactServer.useCallback = useCallback
|
|
150
|
-
ReactServer.useDeferredValue = useDeferredValue
|
|
151
|
-
ReactServer.useTransition = useTransition
|
|
152
|
-
ReactServer.useSyncExternalStore = useSyncExternalStore
|
|
153
|
-
ReactServer.useContext = useContext as typeof ReactCompat.useContext
|
|
154
|
-
Object.assign(ReactServer, { ViewTransition, addTransitionType })
|
|
155
|
-
|
|
156
|
-
export default ReactServer
|
|
133
|
+
cache: typeof serverCache
|
|
134
|
+
cacheSignal: typeof cacheSignal
|
|
135
|
+
}
|
|
136
|
+
delete (ReactServer as { useState?: unknown }).useState
|
|
137
|
+
ReactServer.cache = serverCache
|
|
138
|
+
ReactServer.cacheSignal = cacheSignal
|
|
139
|
+
ReactServer.useEffect = useEffect
|
|
140
|
+
ReactServer.useLayoutEffect = useLayoutEffect
|
|
141
|
+
ReactServer.useInsertionEffect = useInsertionEffect
|
|
142
|
+
ReactServer.useDebugValue = useDebugValue
|
|
143
|
+
ReactServer.useImperativeHandle = useImperativeHandle
|
|
144
|
+
ReactServer.useReducer = useReducer
|
|
145
|
+
ReactServer.useRef = useRef
|
|
146
|
+
ReactServer.useMemo = useMemo
|
|
147
|
+
ReactServer.useCallback = useCallback
|
|
148
|
+
ReactServer.useDeferredValue = useDeferredValue
|
|
149
|
+
ReactServer.useTransition = useTransition
|
|
150
|
+
ReactServer.useSyncExternalStore = useSyncExternalStore
|
|
151
|
+
ReactServer.useContext = useContext as typeof ReactCompat.useContext
|
|
152
|
+
Object.assign(ReactServer, { ViewTransition, addTransitionType })
|
|
153
|
+
|
|
154
|
+
export default ReactServer
|
package/src/compat/react/use.ts
CHANGED
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
import { useContext } from 'preact/hooks'
|
|
2
|
-
import type { Context } from 'preact'
|
|
1
|
+
import { useContext } from 'preact/hooks'
|
|
2
|
+
import type { Context } from 'preact'
|
|
3
3
|
|
|
4
4
|
interface TrackedThenable<T> extends PromiseLike<T> {
|
|
5
|
-
status?: 'pending' | 'fulfilled' | 'rejected'
|
|
6
|
-
value?: T
|
|
7
|
-
reason?: unknown
|
|
5
|
+
status?: 'pending' | 'fulfilled' | 'rejected'
|
|
6
|
+
value?: T
|
|
7
|
+
reason?: unknown
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
// Replay state for use() in server components: the renderer replays a component
|
|
11
11
|
// after a thrown thenable settles, and use() call N must resolve to the thenable
|
|
12
12
|
// recorded on the previous attempt (the rerun creates a fresh promise).
|
|
13
13
|
export interface UseThenableState {
|
|
14
|
-
thenables: TrackedThenable<unknown>[]
|
|
14
|
+
thenables: TrackedThenable<unknown>[]
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
// globalThis-anchored: the prebundled server entry inlines its own copy of this module;
|
|
18
18
|
// a replay in one copy must be visible to use() in the other or retries loop forever.
|
|
19
19
|
interface UseReplayState {
|
|
20
|
-
active: UseThenableState | null
|
|
21
|
-
index: number
|
|
20
|
+
active: UseThenableState | null
|
|
21
|
+
index: number
|
|
22
22
|
}
|
|
23
|
-
const REPLAY_STATE_KEY = Symbol.for('pnext.useReplayState')
|
|
23
|
+
const REPLAY_STATE_KEY = Symbol.for('pnext.useReplayState')
|
|
24
24
|
const replayState = ((globalThis as Record<PropertyKey, unknown>)[REPLAY_STATE_KEY] ??= {
|
|
25
25
|
active: null,
|
|
26
26
|
index: 0,
|
|
27
|
-
}) as UseReplayState
|
|
27
|
+
}) as UseReplayState
|
|
28
28
|
|
|
29
29
|
export function withUseThenableState<T>(state: UseThenableState, run: () => T): T {
|
|
30
|
-
const previousState = replayState.active
|
|
31
|
-
const previousIndex = replayState.index
|
|
32
|
-
replayState.active = state
|
|
33
|
-
replayState.index = 0
|
|
30
|
+
const previousState = replayState.active
|
|
31
|
+
const previousIndex = replayState.index
|
|
32
|
+
replayState.active = state
|
|
33
|
+
replayState.index = 0
|
|
34
34
|
try {
|
|
35
|
-
return run()
|
|
35
|
+
return run()
|
|
36
36
|
} finally {
|
|
37
|
-
replayState.active = previousState
|
|
38
|
-
replayState.index = previousIndex
|
|
37
|
+
replayState.active = previousState
|
|
38
|
+
replayState.index = previousIndex
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
// React 19's use(): unwrap a thenable via suspense, or read a context.
|
|
43
43
|
export function use<T>(usable: PromiseLike<T> | Context<T>): T {
|
|
44
44
|
if (usable && typeof (usable as PromiseLike<T>).then === 'function') {
|
|
45
|
-
let thenable = usable as TrackedThenable<T
|
|
45
|
+
let thenable = usable as TrackedThenable<T>
|
|
46
46
|
if (replayState.active) {
|
|
47
|
-
const index = replayState.index
|
|
48
|
-
const existing = replayState.active.thenables[index]
|
|
49
|
-
if (existing) thenable = existing as TrackedThenable<T
|
|
50
|
-
else replayState.active.thenables[index] = thenable
|
|
47
|
+
const index = replayState.index++
|
|
48
|
+
const existing = replayState.active.thenables[index]
|
|
49
|
+
if (existing) thenable = existing as TrackedThenable<T>
|
|
50
|
+
else replayState.active.thenables[index] = thenable
|
|
51
51
|
}
|
|
52
|
-
if (thenable.status === 'fulfilled') return thenable.value as T
|
|
53
|
-
if (thenable.status === 'rejected') throw thenable.reason
|
|
52
|
+
if (thenable.status === 'fulfilled') return thenable.value as T
|
|
53
|
+
if (thenable.status === 'rejected') throw thenable.reason
|
|
54
54
|
if (thenable.status !== 'pending') {
|
|
55
|
-
thenable.status = 'pending'
|
|
55
|
+
thenable.status = 'pending'
|
|
56
56
|
thenable.then(
|
|
57
57
|
value => {
|
|
58
|
-
thenable.status = 'fulfilled'
|
|
59
|
-
thenable.value = value
|
|
58
|
+
thenable.status = 'fulfilled'
|
|
59
|
+
thenable.value = value
|
|
60
60
|
},
|
|
61
61
|
reason => {
|
|
62
|
-
thenable.status = 'rejected'
|
|
63
|
-
thenable.reason = reason
|
|
62
|
+
thenable.status = 'rejected'
|
|
63
|
+
thenable.reason = reason
|
|
64
64
|
},
|
|
65
|
-
)
|
|
65
|
+
)
|
|
66
66
|
}
|
|
67
67
|
// React use() protocol: suspend by throwing the thenable itself.
|
|
68
68
|
// eslint-disable-next-line @typescript-eslint/only-throw-error
|
|
69
|
-
throw thenable
|
|
69
|
+
throw thenable
|
|
70
70
|
}
|
|
71
|
-
return useContext(usable as Context<T>)
|
|
71
|
+
return useContext(usable as Context<T>)
|
|
72
72
|
}
|
|
@@ -9,52 +9,52 @@
|
|
|
9
9
|
// `document.startViewTransition`, so this shim keeps the same DOM shape (pure passthrough) and records
|
|
10
10
|
// the declared names/types; the router applies the actual transition when the browser supports it.
|
|
11
11
|
|
|
12
|
-
import { Fragment, h, type ComponentChildren, type VNode } from 'preact'
|
|
12
|
+
import { Fragment, h, type ComponentChildren, type VNode } from 'preact'
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* The class/name a ViewTransition applies for a given trigger. React accepts a
|
|
16
16
|
* string (a single view-transition-class) or a record keyed by transition type.
|
|
17
17
|
*/
|
|
18
|
-
export type ViewTransitionClass = string | Record<string, string
|
|
18
|
+
export type ViewTransitionClass = string | Record<string, string>
|
|
19
19
|
|
|
20
20
|
export interface ViewTransitionProps {
|
|
21
21
|
/** view-transition-name for the child; 'auto' lets React derive one. */
|
|
22
|
-
name?: string
|
|
22
|
+
name?: string
|
|
23
23
|
/** Fallback class applied when no more specific trigger prop matches. */
|
|
24
|
-
default?: ViewTransitionClass
|
|
25
|
-
enter?: ViewTransitionClass
|
|
26
|
-
exit?: ViewTransitionClass
|
|
27
|
-
update?: ViewTransitionClass
|
|
28
|
-
share?: ViewTransitionClass
|
|
29
|
-
onEnter?: (element: Element, types: string[]) => void
|
|
30
|
-
onExit?: (element: Element, types: string[]) => void
|
|
31
|
-
onUpdate?: (element: Element, types: string[]) => void
|
|
32
|
-
onShare?: (element: Element, types: string[]) => void
|
|
33
|
-
ref?: unknown
|
|
34
|
-
children?: ComponentChildren
|
|
24
|
+
default?: ViewTransitionClass
|
|
25
|
+
enter?: ViewTransitionClass
|
|
26
|
+
exit?: ViewTransitionClass
|
|
27
|
+
update?: ViewTransitionClass
|
|
28
|
+
share?: ViewTransitionClass
|
|
29
|
+
onEnter?: (element: Element, types: string[]) => void
|
|
30
|
+
onExit?: (element: Element, types: string[]) => void
|
|
31
|
+
onUpdate?: (element: Element, types: string[]) => void
|
|
32
|
+
onShare?: (element: Element, types: string[]) => void
|
|
33
|
+
ref?: unknown
|
|
34
|
+
children?: ComponentChildren
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
export function ViewTransition({ children }: ViewTransitionProps): VNode {
|
|
38
38
|
// Pure passthrough: React's ViewTransition adds no element to the tree, and
|
|
39
39
|
// any wrapper here would change every consuming app's DOM/CSS selectors.
|
|
40
|
-
return h(Fragment, null, children)
|
|
40
|
+
return h(Fragment, null, children)
|
|
41
41
|
}
|
|
42
|
-
ViewTransition.displayName = 'ViewTransition'
|
|
42
|
+
ViewTransition.displayName = 'ViewTransition'
|
|
43
43
|
|
|
44
44
|
// Transition types declared during the current update (React clears them once
|
|
45
45
|
// the transition commits). `startViewTransition({ types })` consumes them.
|
|
46
|
-
const pendingTransitionTypes: string[] = []
|
|
46
|
+
const pendingTransitionTypes: string[] = []
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
49
|
* Declare a view-transition type for the in-flight transition, so
|
|
50
50
|
* `:active-view-transition-type(...)` CSS rules match while it runs.
|
|
51
51
|
*/
|
|
52
52
|
export function addTransitionType(type: string): void {
|
|
53
|
-
if (typeof type !== 'string' || pendingTransitionTypes.includes(type)) return
|
|
54
|
-
pendingTransitionTypes.push(type)
|
|
53
|
+
if (typeof type !== 'string' || pendingTransitionTypes.includes(type)) return
|
|
54
|
+
pendingTransitionTypes.push(type)
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
/** Drain the declared types (the navigation that starts the transition owns them). */
|
|
58
58
|
export function takeTransitionTypes(): string[] {
|
|
59
|
-
return pendingTransitionTypes.splice(0, pendingTransitionTypes.length)
|
|
59
|
+
return pendingTransitionTypes.splice(0, pendingTransitionTypes.length)
|
|
60
60
|
}
|