vinext 1.0.0-beta.0 → 1.0.0-beta.2
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 +21 -2
- package/dist/build/assets-ignore.js +1 -1
- package/dist/build/clean-output.js +1 -1
- package/dist/build/client-build-config.js +7 -4
- package/dist/build/css-url-assets.js +3 -3
- package/dist/build/google-fonts/fallback-metrics.js +1 -1
- package/dist/build/google-fonts/font-metadata.js +1 -1
- package/dist/build/inject-pregenerated-paths.js +1 -1
- package/dist/build/inline-css.js +2 -5
- package/dist/build/module-dependency-cache.d.ts +4 -0
- package/dist/build/module-dependency-cache.js +13 -0
- package/dist/build/next-client-runtime-manifests.js +1 -1
- package/dist/build/pages-client-assets-module.js +1 -1
- package/dist/build/precompress.js +7 -7
- package/dist/build/prerender-paths.d.ts +2 -2
- package/dist/build/prerender-paths.js +10 -15
- package/dist/build/prerender-server-pool.js +2 -2
- package/dist/build/prerender.js +1 -1
- package/dist/build/preview-credentials.d.ts +11 -0
- package/dist/build/preview-credentials.js +19 -0
- package/dist/build/report.d.ts +8 -4
- package/dist/build/report.js +14 -6
- package/dist/build/run-prerender.d.ts +2 -11
- package/dist/build/run-prerender.js +2 -10
- package/dist/build/server-manifest.js +1 -1
- package/dist/build/ssr-manifest.d.ts +4 -0
- package/dist/build/ssr-manifest.js +10 -6
- package/dist/build/standalone.js +37 -37
- package/dist/cache/cache-adapters-virtual.d.ts +1 -17
- package/dist/cache/cache-adapters-virtual.js +20 -11
- package/dist/check.d.ts +0 -16
- package/dist/check.js +27 -36
- package/dist/cli.js +61 -55
- package/dist/client/instrumentation-client-inject.js +1 -1
- package/dist/client/pages-router-link-navigation.js +1 -1
- package/dist/config/config-matchers.d.ts +13 -37
- package/dist/config/config-matchers.js +33 -123
- package/dist/config/dotenv.js +1 -1
- package/dist/config/next-config.d.ts +7 -3
- package/dist/config/next-config.js +84 -15
- package/dist/config/prerender.d.ts +2 -2
- package/dist/config/prerender.js +7 -15
- package/dist/config/request-context.d.ts +14 -0
- package/dist/config/request-context.js +26 -0
- package/dist/config/server-external-packages.js +1 -1
- package/dist/config/tsconfig-paths.js +2 -2
- package/dist/{node_modules/.pnpm/am-i-vibing@0.5.0/node_modules → deps/.pnpm/am-i-vibing@0.5.0/deps}/am-i-vibing/dist/detector-1yx2Hoe0.js +2 -2
- package/dist/deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js +50 -0
- package/dist/entries/app-rsc-entry.js +39 -14
- package/dist/entries/app-rsc-manifest.js +21 -4
- package/dist/entries/pages-client-entry.js +6 -5
- package/dist/entries/pages-server-entry.js +18 -28
- package/dist/entries/runtime-entry-module.js +2 -2
- package/dist/index.js +314 -230
- package/dist/init-cloudflare.js +1 -1
- package/dist/init-platform.js +1 -1
- package/dist/init.d.ts +6 -4
- package/dist/init.js +25 -27
- package/dist/plugins/ast-utils.js +1 -1
- package/dist/plugins/dynamic-preload-metadata.js +7 -7
- package/dist/plugins/extensionless-dynamic-import.js +1 -1
- package/dist/plugins/fonts.js +3 -3
- package/dist/plugins/ignore-dynamic-requests.js +13 -8
- package/dist/plugins/import-meta-url.js +16 -17
- package/dist/plugins/middleware-export-validation.js +1 -1
- package/dist/plugins/middleware-server-only.js +2 -2
- package/dist/plugins/og-asset-ownership.js +7 -6
- package/dist/plugins/og-assets.js +5 -6
- package/dist/plugins/optimize-imports.js +12 -13
- package/dist/plugins/postcss.js +1 -1
- package/dist/plugins/remove-console.js +1 -1
- package/dist/plugins/require-context.js +1 -1
- package/dist/plugins/sass.js +2 -2
- package/dist/plugins/server-externals-manifest.js +1 -1
- package/dist/plugins/strip-server-exports.js +1 -1
- package/dist/plugins/styled-jsx.js +3 -2
- package/dist/plugins/typeof-window.js +1 -1
- package/dist/routing/app-route-graph.d.ts +16 -15
- package/dist/routing/app-route-graph.js +86 -88
- package/dist/routing/app-router.d.ts +0 -5
- package/dist/routing/app-router.js +12 -11
- package/dist/routing/file-matcher.d.ts +13 -28
- package/dist/routing/file-matcher.js +31 -44
- package/dist/routing/pages-router.js +26 -32
- package/dist/routing/route-matching.d.ts +14 -1
- package/dist/routing/route-matching.js +13 -1
- package/dist/routing/route-pattern.d.ts +2 -1
- package/dist/routing/route-pattern.js +7 -4
- package/dist/routing/route-trie.d.ts +5 -1
- package/dist/routing/route-trie.js +5 -2
- package/dist/server/api-handler.js +41 -33
- package/dist/server/app-browser-entry.js +18 -11
- package/dist/server/app-browser-history-controller.d.ts +1 -1
- package/dist/server/app-browser-history-controller.js +3 -3
- package/dist/server/app-browser-navigation-controller.js +4 -2
- package/dist/server/app-browser-server-action-client.js +1 -1
- package/dist/server/app-elements-wire.d.ts +2 -1
- package/dist/server/app-fallback-renderer.d.ts +11 -0
- package/dist/server/app-fallback-renderer.js +16 -2
- package/dist/server/app-middleware.js +2 -1
- package/dist/server/app-page-boundary-render.d.ts +26 -2
- package/dist/server/app-page-boundary-render.js +190 -55
- package/dist/server/app-page-cache-finalizer.d.ts +1 -1
- package/dist/server/app-page-cache.d.ts +1 -1
- package/dist/server/app-page-dispatch.d.ts +12 -2
- package/dist/server/app-page-dispatch.js +37 -51
- package/dist/server/app-page-element-builder.d.ts +8 -2
- package/dist/server/app-page-element-builder.js +112 -27
- package/dist/server/app-page-execution.d.ts +3 -1
- package/dist/server/app-page-execution.js +31 -39
- package/dist/server/app-page-head.d.ts +54 -2
- package/dist/server/app-page-head.js +164 -78
- package/dist/server/app-page-http-access-fallback-metadata.d.ts +29 -0
- package/dist/server/app-page-http-access-fallback-metadata.js +106 -0
- package/dist/server/app-page-render.d.ts +2 -2
- package/dist/server/app-page-render.js +1 -1
- package/dist/server/app-page-request.d.ts +12 -0
- package/dist/server/app-page-request.js +134 -14
- package/dist/server/app-page-route-wiring.d.ts +9 -0
- package/dist/server/app-page-route-wiring.js +44 -4
- package/dist/server/app-post-middleware-context.d.ts +1 -1
- package/dist/server/app-post-middleware-context.js +1 -1
- package/dist/server/app-route-handler-dispatch.js +31 -17
- package/dist/server/app-route-handler-execution.d.ts +6 -1
- package/dist/server/app-route-handler-execution.js +41 -15
- package/dist/server/app-route-handler-policy.d.ts +2 -0
- package/dist/server/app-route-handler-policy.js +3 -3
- package/dist/server/app-route-module-loader.d.ts +3 -1
- package/dist/server/app-route-module-loader.js +1 -0
- package/dist/server/app-route-tree-prefetch.js +1 -1
- package/dist/server/app-rsc-cache-busting.d.ts +1 -1
- package/dist/server/app-rsc-cache-busting.js +1 -1
- package/dist/server/app-rsc-errors.d.ts +1 -1
- package/dist/server/app-rsc-errors.js +12 -2
- package/dist/server/app-rsc-handler.d.ts +10 -5
- package/dist/server/app-rsc-handler.js +51 -23
- package/dist/server/app-rsc-redirect-flight.d.ts +66 -0
- package/dist/server/app-rsc-redirect-flight.js +71 -0
- package/dist/server/app-rsc-request-normalization.d.ts +3 -2
- package/dist/server/app-rsc-request-normalization.js +8 -2
- package/dist/server/app-rsc-response-finalizer.d.ts +2 -2
- package/dist/server/app-rsc-response-finalizer.js +5 -11
- package/dist/server/app-rsc-route-matching.d.ts +20 -0
- package/dist/server/app-rsc-route-matching.js +87 -11
- package/dist/server/app-segment-config.js +15 -5
- package/dist/server/app-server-action-execution.d.ts +3 -1
- package/dist/server/app-server-action-execution.js +8 -6
- package/dist/server/app-ssr-entry.js +4 -1
- package/dist/server/app-ssr-stream.d.ts +2 -7
- package/dist/server/app-ssr-stream.js +5 -10
- package/dist/server/cache-proof.js +1 -1
- package/dist/server/config-headers.d.ts +24 -0
- package/dist/server/config-headers.js +52 -0
- package/dist/server/default-global-error-module.d.ts +3 -1
- package/dist/server/default-not-found-module.d.ts +3 -1
- package/dist/server/dev-initial-server-error.d.ts +1 -1
- package/dist/server/dev-lockfile.js +2 -3
- package/dist/server/dev-route-files.js +1 -1
- package/dist/server/dev-server.js +281 -173
- package/dist/server/dev-stack-sourcemap.js +4 -3
- package/dist/server/headers.d.ts +3 -1
- package/dist/server/headers.js +3 -1
- package/dist/server/image-optimization.js +2 -2
- package/dist/server/implicit-tags.js +2 -1
- package/dist/server/instrumentation.js +2 -2
- package/dist/server/isr-cache.d.ts +1 -1
- package/dist/server/isr-cache.js +1 -1
- package/dist/server/metadata-routes.js +4 -4
- package/dist/server/middleware-matcher-pattern.d.ts +22 -0
- package/dist/server/middleware-matcher-pattern.js +219 -0
- package/dist/server/middleware-matcher.d.ts +2 -7
- package/dist/server/middleware-matcher.js +13 -60
- package/dist/server/middleware-path-to-regexp.d.ts +14 -0
- package/dist/server/middleware-path-to-regexp.js +228 -0
- package/dist/server/middleware-response-headers.js +1 -1
- package/dist/server/middleware-runtime.js +5 -4
- package/dist/server/middleware.d.ts +2 -1
- package/dist/server/middleware.js +3 -2
- package/dist/server/navigation-planner.d.ts +2 -0
- package/dist/server/navigation-planner.js +8 -2
- package/dist/server/next-error-digest.d.ts +9 -24
- package/dist/server/next-error-digest.js +23 -15
- package/dist/server/operation-token.js +1 -1
- package/dist/server/pages-body-parser-config.js +2 -1
- package/dist/server/pages-data-route.d.ts +11 -1
- package/dist/server/pages-data-route.js +16 -1
- package/dist/server/pages-dev-hydration.d.ts +14 -0
- package/dist/server/pages-dev-hydration.js +83 -0
- package/dist/server/pages-dev-module-url.js +2 -2
- package/dist/server/pages-get-initial-props.d.ts +15 -2
- package/dist/server/pages-get-initial-props.js +16 -6
- package/dist/server/pages-node-compat.d.ts +13 -6
- package/dist/server/pages-node-compat.js +44 -45
- package/dist/server/pages-page-data.d.ts +4 -2
- package/dist/server/pages-page-data.js +20 -10
- package/dist/server/pages-page-handler.d.ts +4 -2
- package/dist/server/pages-page-handler.js +74 -43
- package/dist/server/pages-page-response.d.ts +2 -2
- package/dist/server/pages-page-response.js +1 -1
- package/dist/server/pages-preview.d.ts +26 -0
- package/dist/server/pages-preview.js +165 -0
- package/dist/server/pages-readiness.d.ts +5 -4
- package/dist/server/pages-readiness.js +4 -2
- package/dist/server/pages-request-pipeline.d.ts +1 -0
- package/dist/server/pages-request-pipeline.js +25 -11
- package/dist/server/pages-router-entry.js +6 -0
- package/dist/server/prerender-route-params.js +2 -2
- package/dist/server/prod-server.d.ts +1 -4
- package/dist/server/prod-server.js +44 -30
- package/dist/server/request-pipeline.d.ts +15 -29
- package/dist/server/request-pipeline.js +25 -60
- package/dist/server/rsc-stream-hints.js +122 -18
- package/dist/server/seed-cache.js +1 -1
- package/dist/server/socket-error-backstop.js +1 -1
- package/dist/server/static-file-cache.js +7 -8
- package/dist/server/worker-utils.js +1 -1
- package/dist/shims/app.d.ts +1 -1
- package/dist/shims/cache-request-state.d.ts +27 -1
- package/dist/shims/cache-request-state.js +60 -1
- package/dist/shims/cache-runtime.d.ts +12 -1
- package/dist/shims/cache-runtime.js +22 -7
- package/dist/shims/cache.d.ts +5 -5
- package/dist/shims/cache.js +28 -11
- package/dist/shims/constants.js +1 -1
- package/dist/shims/document.d.ts +42 -83
- package/dist/shims/document.js +62 -53
- package/dist/shims/dynamic.d.ts +5 -25
- package/dist/shims/dynamic.js +29 -8
- package/dist/shims/error-boundary.d.ts +4 -4
- package/dist/shims/error.d.ts +22 -6
- package/dist/shims/error.js +53 -15
- package/dist/shims/fetch-cache.js +13 -4
- package/dist/shims/font-google-base.d.ts +11 -4
- package/dist/shims/font-local.d.ts +10 -3
- package/dist/shims/font-utils.js +1 -1
- package/dist/shims/form.d.ts +1 -1
- package/dist/shims/head.d.ts +13 -2
- package/dist/shims/head.js +6 -6
- package/dist/shims/headers.d.ts +28 -31
- package/dist/shims/headers.js +115 -53
- package/dist/shims/image.d.ts +27 -37
- package/dist/shims/image.js +21 -14
- package/dist/shims/internal/cookie-serialize.d.ts +3 -1
- package/dist/shims/internal/cookie-serialize.js +3 -1
- package/dist/shims/internal/hybrid-client-route-owner.js +3 -1
- package/dist/shims/internal/pages-data-fetch-dedup.js +5 -3
- package/dist/shims/internal/utils.d.ts +3 -3
- package/dist/shims/layout-segment-context.d.ts +1 -1
- package/dist/shims/legacy-image.d.ts +3 -37
- package/dist/shims/legacy-image.js +6 -16
- package/dist/shims/link.d.ts +16 -21
- package/dist/shims/link.js +25 -13
- package/dist/shims/navigation-context-state.d.ts +1 -1
- package/dist/shims/navigation-errors.d.ts +2 -1
- package/dist/shims/navigation-errors.js +9 -13
- package/dist/shims/navigation.d.ts +8 -4
- package/dist/shims/navigation.js +29 -18
- package/dist/shims/next-shims-augmentations.d.ts +1 -0
- package/dist/shims/next-shims-public.d.ts +1 -0
- package/dist/shims/public-shim-map.json.js +103 -0
- package/dist/shims/readonly-url-search-params.d.ts +3 -3
- package/dist/shims/readonly-url-search-params.js +3 -3
- package/dist/shims/request-state-types.d.ts +1 -1
- package/dist/shims/router-state.d.ts +1 -0
- package/dist/shims/router.d.ts +57 -22
- package/dist/shims/router.js +178 -46
- package/dist/shims/script.d.ts +6 -10
- package/dist/shims/script.js +7 -4
- package/dist/shims/server.d.ts +45 -22
- package/dist/shims/server.js +46 -7
- package/dist/shims/slot.d.ts +1 -1
- package/dist/shims/thenable-params.js +1 -1
- package/dist/shims/unified-request-context.d.ts +1 -1
- package/dist/shims/unified-request-context.js +2 -0
- package/dist/shims/url-safety.d.ts +1 -1
- package/dist/shims/url-safety.js +2 -2
- package/dist/typegen.d.ts +8 -2
- package/dist/typegen.js +84 -25
- package/dist/utils/client-build-manifest.js +2 -2
- package/dist/utils/client-entry-manifest.js +1 -1
- package/dist/utils/client-runtime-metadata.js +1 -1
- package/dist/utils/commonjs-loader.js +3 -3
- package/dist/utils/domain-locale.d.ts +2 -2
- package/dist/utils/external-url.d.ts +5 -0
- package/dist/utils/external-url.js +7 -0
- package/dist/utils/mdx-scan.js +1 -1
- package/dist/utils/path.d.ts +1 -13
- package/dist/utils/path.js +1 -15
- package/dist/utils/plugin-options.d.ts +4 -0
- package/dist/utils/plugin-options.js +8 -0
- package/dist/utils/project.d.ts +0 -6
- package/dist/utils/project.js +2 -8
- package/dist/utils/public-routes.js +2 -2
- package/dist/utils/react-version.js +1 -1
- package/dist/utils/redirect-digest.d.ts +9 -0
- package/dist/utils/redirect-digest.js +25 -0
- package/dist/utils/regex-safety.d.ts +8 -0
- package/dist/utils/regex-safety.js +737 -0
- package/dist/utils/vinext-root.js +1 -1
- package/dist/utils/vite-version.d.ts +5 -2
- package/dist/utils/vite-version.js +43 -17
- package/package.json +16 -4
- /package/dist/build/google-fonts/{fallback-metrics-data.js → fallback-metrics-data.json.js} +0 -0
- /package/dist/build/google-fonts/{font-data.js → font-data.json.js} +0 -0
- /package/dist/{node_modules/.pnpm/process-ancestry@0.1.0/node_modules → deps/.pnpm/process-ancestry@0.1.0/deps}/process-ancestry/dist/index.js +0 -0
package/dist/shims/headers.js
CHANGED
|
@@ -114,6 +114,52 @@ function markDynamicUsage() {
|
|
|
114
114
|
const state = _getState();
|
|
115
115
|
if (state.headersContext?.forceStatic) return;
|
|
116
116
|
state.dynamicUsageDetected = true;
|
|
117
|
+
forEachConnectionProbeTarget(state, (target) => {
|
|
118
|
+
target.dynamicUsageDetected = true;
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
function forEachConnectionProbeTarget(state, visit) {
|
|
122
|
+
let target = state.connectionProbe?.dynamicUsageTarget ?? null;
|
|
123
|
+
const seen = /* @__PURE__ */ new Set([state]);
|
|
124
|
+
while (target && !seen.has(target)) {
|
|
125
|
+
seen.add(target);
|
|
126
|
+
visit(target);
|
|
127
|
+
target = target.connectionProbe?.dynamicUsageTarget ?? null;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function propagateInvalidDynamicUsageError(state, error) {
|
|
131
|
+
forEachConnectionProbeTarget(state, (target) => {
|
|
132
|
+
if (target.invalidDynamicUsageError == null) target.invalidDynamicUsageError = error;
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Measure dynamic usage in a child async scope without clearing the parent.
|
|
137
|
+
* Concurrent work that already belongs to the request (such as deferred
|
|
138
|
+
* metadata) keeps writing to the parent state and therefore remains visible
|
|
139
|
+
* to the final cache policy.
|
|
140
|
+
*/
|
|
141
|
+
async function runWithIsolatedDynamicUsage(fn) {
|
|
142
|
+
const runInChildState = async (childState) => {
|
|
143
|
+
return {
|
|
144
|
+
result: await fn(),
|
|
145
|
+
dynamicDetected: childState.dynamicUsageDetected
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
if (isInsideUnifiedScope()) {
|
|
149
|
+
let childState = null;
|
|
150
|
+
return await runWithUnifiedStateMutation((context) => {
|
|
151
|
+
context.dynamicUsageDetected = false;
|
|
152
|
+
childState = context;
|
|
153
|
+
}, () => {
|
|
154
|
+
if (!childState) throw new Error("Dynamic usage scope was not initialized");
|
|
155
|
+
return runInChildState(childState);
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
const childState = {
|
|
159
|
+
..._getState(),
|
|
160
|
+
dynamicUsageDetected: false
|
|
161
|
+
};
|
|
162
|
+
return await _als.run(childState, () => runInChildState(childState));
|
|
117
163
|
}
|
|
118
164
|
function markRenderRequestApiUsage(kind) {
|
|
119
165
|
_getState().renderRequestApiUsage.add(kind);
|
|
@@ -123,13 +169,15 @@ function throwIfStaticGenerationAccessError() {
|
|
|
123
169
|
if (accessError) throw accessError;
|
|
124
170
|
}
|
|
125
171
|
async function runWithConnectionProbe(fn) {
|
|
126
|
-
const
|
|
127
|
-
const
|
|
172
|
+
const parentState = _getState();
|
|
173
|
+
const parentInvalidDynamicUsageError = parentState.invalidDynamicUsageError;
|
|
128
174
|
let interruptProbe = () => {};
|
|
129
175
|
const interrupted = new Promise((resolve) => {
|
|
130
176
|
interruptProbe = () => resolve({ completed: false });
|
|
131
177
|
});
|
|
132
178
|
const probe = {
|
|
179
|
+
active: true,
|
|
180
|
+
dynamicUsageTarget: parentState,
|
|
133
181
|
interrupted: false,
|
|
134
182
|
interrupt() {
|
|
135
183
|
if (probe.interrupted) return;
|
|
@@ -138,20 +186,39 @@ async function runWithConnectionProbe(fn) {
|
|
|
138
186
|
},
|
|
139
187
|
pending: new Promise(() => {})
|
|
140
188
|
};
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
189
|
+
const runInChildState = async (childState) => {
|
|
190
|
+
try {
|
|
191
|
+
const completed = Promise.resolve().then(fn).then((result) => ({
|
|
192
|
+
completed: true,
|
|
193
|
+
result
|
|
194
|
+
}));
|
|
195
|
+
return await Promise.race([completed, interrupted]);
|
|
196
|
+
} finally {
|
|
197
|
+
probe.active = false;
|
|
198
|
+
childState.connectionProbe = parentState.connectionProbe ?? probe;
|
|
199
|
+
if (childState.dynamicUsageDetected) parentState.dynamicUsageDetected = true;
|
|
200
|
+
if (childState.invalidDynamicUsageError !== parentInvalidDynamicUsageError && parentState.invalidDynamicUsageError === parentInvalidDynamicUsageError) parentState.invalidDynamicUsageError = childState.invalidDynamicUsageError;
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
if (isInsideUnifiedScope()) {
|
|
204
|
+
let childState = null;
|
|
205
|
+
return await runWithUnifiedStateMutation((context) => {
|
|
206
|
+
context.connectionProbe = probe;
|
|
207
|
+
childState = context;
|
|
208
|
+
}, () => {
|
|
209
|
+
if (!childState) throw new Error("Connection probe scope was not initialized");
|
|
210
|
+
return runInChildState(childState);
|
|
211
|
+
});
|
|
150
212
|
}
|
|
213
|
+
const childState = {
|
|
214
|
+
...parentState,
|
|
215
|
+
connectionProbe: probe
|
|
216
|
+
};
|
|
217
|
+
return await _als.run(childState, () => runInChildState(childState));
|
|
151
218
|
}
|
|
152
219
|
function suspendConnectionProbe() {
|
|
153
220
|
const probe = _getState().connectionProbe;
|
|
154
|
-
if (!probe) return null;
|
|
221
|
+
if (!probe?.active) return null;
|
|
155
222
|
probe.interrupt();
|
|
156
223
|
return probe.pending;
|
|
157
224
|
}
|
|
@@ -202,6 +269,7 @@ function throwIfInsideCacheScope(apiName) {
|
|
|
202
269
|
if (cacheCtx) cacheCtx.invalidDynamicUsageError = error;
|
|
203
270
|
const ctx = getRequestContext();
|
|
204
271
|
if (ctx) ctx.invalidDynamicUsageError = error;
|
|
272
|
+
propagateInvalidDynamicUsageError(_getState(), error);
|
|
205
273
|
} catch {}
|
|
206
274
|
throw error;
|
|
207
275
|
}
|
|
@@ -210,6 +278,7 @@ function throwIfInsideCacheScope(apiName) {
|
|
|
210
278
|
try {
|
|
211
279
|
const ctx = getRequestContext();
|
|
212
280
|
if (ctx) ctx.invalidDynamicUsageError = error;
|
|
281
|
+
propagateInvalidDynamicUsageError(_getState(), error);
|
|
213
282
|
} catch {}
|
|
214
283
|
throw error;
|
|
215
284
|
}
|
|
@@ -360,7 +429,7 @@ function applyMiddlewareRequestHeaders(middlewareResponseHeaders) {
|
|
|
360
429
|
}
|
|
361
430
|
}
|
|
362
431
|
/** Methods on `Headers` that mutate state. Hoisted to module scope — static. */
|
|
363
|
-
const _HEADERS_MUTATING_METHODS = new Set([
|
|
432
|
+
const _HEADERS_MUTATING_METHODS = /* @__PURE__ */ new Set([
|
|
364
433
|
"set",
|
|
365
434
|
"delete",
|
|
366
435
|
"append"
|
|
@@ -395,7 +464,7 @@ function _decorateRequestApiPromise(promise, target) {
|
|
|
395
464
|
return prop in promiseTarget || prop in target;
|
|
396
465
|
},
|
|
397
466
|
ownKeys(promiseTarget) {
|
|
398
|
-
return Array.from(new Set([...Reflect.ownKeys(promiseTarget), ...Reflect.ownKeys(target)]));
|
|
467
|
+
return Array.from(/* @__PURE__ */ new Set([...Reflect.ownKeys(promiseTarget), ...Reflect.ownKeys(target)]));
|
|
399
468
|
},
|
|
400
469
|
getOwnPropertyDescriptor(promiseTarget, prop) {
|
|
401
470
|
return Reflect.getOwnPropertyDescriptor(promiseTarget, prop) ?? Reflect.getOwnPropertyDescriptor(target, prop);
|
|
@@ -546,13 +615,14 @@ function headers() {
|
|
|
546
615
|
markDynamicUsage();
|
|
547
616
|
const fallbackShellPromise = createPprFallbackShellSuspensePromise("`headers()`");
|
|
548
617
|
if (fallbackShellPromise) return _decorateSuspendingRequestApiPromise(fallbackShellPromise);
|
|
549
|
-
|
|
618
|
+
const readonlyHeaders = _getReadonlyHeaders(state.headersContext);
|
|
619
|
+
return _getOrCreateDecoratedRequestApiPromise(_decoratedHeadersPromises, readonlyHeaders);
|
|
550
620
|
}
|
|
551
621
|
/**
|
|
552
622
|
* Cookie jar from the incoming request.
|
|
553
623
|
* Returns a ReadonlyRequestCookies-like object.
|
|
554
624
|
*/
|
|
555
|
-
function
|
|
625
|
+
function cookiesImpl() {
|
|
556
626
|
markRenderRequestApiUsage("cookies");
|
|
557
627
|
try {
|
|
558
628
|
throwIfInsideCacheScope("cookies()");
|
|
@@ -565,7 +635,11 @@ function cookies() {
|
|
|
565
635
|
markDynamicUsage();
|
|
566
636
|
const fallbackShellPromise = createPprFallbackShellSuspensePromise("`cookies()`");
|
|
567
637
|
if (fallbackShellPromise) return _decorateSuspendingRequestApiPromise(fallbackShellPromise);
|
|
568
|
-
|
|
638
|
+
const cookieStore = _areCookiesMutableInCurrentPhase() ? _getMutableCookies(state.headersContext) : _getReadonlyCookies(state.headersContext);
|
|
639
|
+
return _getOrCreateDecoratedRequestApiPromise(_decoratedCookiesPromises, cookieStore);
|
|
640
|
+
}
|
|
641
|
+
function cookies() {
|
|
642
|
+
return cookiesImpl();
|
|
569
643
|
}
|
|
570
644
|
/** Accumulated Set-Cookie headers from cookies().set() / .delete() calls */
|
|
571
645
|
/**
|
|
@@ -611,18 +685,26 @@ function isDraftModeRequest(request, draftModeSecret) {
|
|
|
611
685
|
return parseEdgeRequestCookieHeader(cookieHeader).get(DRAFT_MODE_COOKIE) === validateDraftModeSecret(draftModeSecret);
|
|
612
686
|
}
|
|
613
687
|
/**
|
|
614
|
-
* Read the
|
|
615
|
-
*
|
|
616
|
-
*
|
|
688
|
+
* Read draft mode from the live request context without recording request API
|
|
689
|
+
* usage. `null` means there is no active request context, which lets framework
|
|
690
|
+
* callers fall back to an explicitly supplied request when needed.
|
|
617
691
|
*/
|
|
618
|
-
function
|
|
692
|
+
function getActiveDraftModeState() {
|
|
619
693
|
const context = _getState().headersContext;
|
|
620
|
-
if (!context) return
|
|
694
|
+
if (!context) return null;
|
|
621
695
|
if (context.draftModeEnabled !== void 0) return context.draftModeEnabled;
|
|
622
696
|
const secret = context.draftModeSecret;
|
|
623
697
|
if (secret === void 0) return false;
|
|
624
698
|
return context.cookies.get(DRAFT_MODE_COOKIE) === validateDraftModeSecret(secret);
|
|
625
699
|
}
|
|
700
|
+
/**
|
|
701
|
+
* Read the active request's draft-mode state without recording request API usage.
|
|
702
|
+
* Internal cache implementations use this to bypass persistent reads and writes,
|
|
703
|
+
* matching Next.js's request-level `workStore.isDraftMode` guard.
|
|
704
|
+
*/
|
|
705
|
+
function isDraftModeEnabled() {
|
|
706
|
+
return getActiveDraftModeState() ?? false;
|
|
707
|
+
}
|
|
626
708
|
function draftModeCookieAttributes() {
|
|
627
709
|
if (typeof process !== "undefined" && process.env?.NODE_ENV === "development") return "Path=/; HttpOnly; SameSite=Lax";
|
|
628
710
|
return "Path=/; HttpOnly; SameSite=None; Secure";
|
|
@@ -703,10 +785,6 @@ var RequestCookies = class {
|
|
|
703
785
|
has(name) {
|
|
704
786
|
return this._cookies.has(name);
|
|
705
787
|
}
|
|
706
|
-
/**
|
|
707
|
-
* Set a cookie. In Route Handlers and Server Actions, this produces
|
|
708
|
-
* a Set-Cookie header on the response.
|
|
709
|
-
*/
|
|
710
788
|
set(nameOrOptions, value, options) {
|
|
711
789
|
let cookieName;
|
|
712
790
|
let cookieValue;
|
|
@@ -722,12 +800,14 @@ var RequestCookies = class {
|
|
|
722
800
|
}
|
|
723
801
|
validateCookieName(cookieName);
|
|
724
802
|
this._cookies.set(cookieName, cookieValue);
|
|
725
|
-
|
|
803
|
+
const sameSite = opts?.sameSite === true ? "Strict" : typeof opts?.sameSite === "string" ? opts.sameSite[0].toUpperCase() + opts.sameSite.slice(1) : void 0;
|
|
804
|
+
_getState().pendingSetCookies.push(serializeSetCookie(cookieName, cookieValue, {
|
|
805
|
+
...opts,
|
|
806
|
+
expires: typeof opts?.expires === "number" ? new Date(opts.expires) : opts?.expires,
|
|
807
|
+
sameSite
|
|
808
|
+
}));
|
|
726
809
|
return this;
|
|
727
810
|
}
|
|
728
|
-
/**
|
|
729
|
-
* Delete a cookie by emitting an expired Set-Cookie header.
|
|
730
|
-
*/
|
|
731
811
|
delete(nameOrOptions) {
|
|
732
812
|
const name = typeof nameOrOptions === "string" ? nameOrOptions : nameOrOptions.name;
|
|
733
813
|
const path = typeof nameOrOptions === "string" ? "/" : nameOrOptions.path ?? "/";
|
|
@@ -746,28 +826,10 @@ var RequestCookies = class {
|
|
|
746
826
|
return this._cookies.size;
|
|
747
827
|
}
|
|
748
828
|
[Symbol.iterator]() {
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
},
|
|
754
|
-
next() {
|
|
755
|
-
const { value, done } = entries.next();
|
|
756
|
-
if (done) return {
|
|
757
|
-
value: void 0,
|
|
758
|
-
done: true
|
|
759
|
-
};
|
|
760
|
-
const [name, val] = value;
|
|
761
|
-
return {
|
|
762
|
-
value: [name, {
|
|
763
|
-
name,
|
|
764
|
-
value: val
|
|
765
|
-
}],
|
|
766
|
-
done: false
|
|
767
|
-
};
|
|
768
|
-
}
|
|
769
|
-
};
|
|
770
|
-
return iter;
|
|
829
|
+
return new Map(Array.from(this._cookies, ([name, value]) => [name, {
|
|
830
|
+
name,
|
|
831
|
+
value
|
|
832
|
+
}])).entries();
|
|
771
833
|
}
|
|
772
834
|
toString() {
|
|
773
835
|
const parts = [];
|
|
@@ -776,4 +838,4 @@ var RequestCookies = class {
|
|
|
776
838
|
}
|
|
777
839
|
};
|
|
778
840
|
//#endregion
|
|
779
|
-
export { applyMiddlewareRequestHeaders, consumeDynamicUsage, consumeInvalidDynamicUsageError, consumeRenderRequestApiUsage, cookies, draftMode, getAndClearPendingCookies, getDraftModeCookieHeader, getHeadersAccessPhase, getHeadersContext, headers, headersContextFromRequest, isDraftModeEnabled, isDraftModeRequest, markDynamicUsage, markRenderRequestApiUsage, peekDynamicUsage, peekRenderRequestApiUsage, runWithConnectionProbe, runWithHeadersContext, setHeadersAccessPhase, setHeadersContext, suspendConnectionProbe, throwIfInsideCacheScope, throwIfStaticGenerationAccessError };
|
|
841
|
+
export { applyMiddlewareRequestHeaders, consumeDynamicUsage, consumeInvalidDynamicUsageError, consumeRenderRequestApiUsage, cookies, draftMode, getActiveDraftModeState, getAndClearPendingCookies, getDraftModeCookieHeader, getHeadersAccessPhase, getHeadersContext, headers, headersContextFromRequest, isDraftModeEnabled, isDraftModeRequest, markDynamicUsage, markRenderRequestApiUsage, peekDynamicUsage, peekRenderRequestApiUsage, runWithConnectionProbe, runWithHeadersContext, runWithIsolatedDynamicUsage, setHeadersAccessPhase, setHeadersContext, suspendConnectionProbe, throwIfInsideCacheScope, throwIfStaticGenerationAccessError };
|
package/dist/shims/image.d.ts
CHANGED
|
@@ -1,40 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { ImageLoader, ImageProps as ImageProps$1, ImgProps, StaticImageData, StaticImport, StaticRequire } from "@vinext/types/next/upstream/dist/shared/lib/get-img-props";
|
|
2
3
|
|
|
3
4
|
//#region src/shims/image.d.ts
|
|
4
|
-
type
|
|
5
|
-
|
|
6
|
-
height: number;
|
|
7
|
-
width: number;
|
|
8
|
-
blurDataURL?: string;
|
|
9
|
-
};
|
|
10
|
-
type ImageProps = {
|
|
11
|
-
src: string | StaticImageData;
|
|
12
|
-
alt: string;
|
|
13
|
-
width?: number;
|
|
14
|
-
height?: number;
|
|
15
|
-
fill?: boolean;
|
|
16
|
-
preload?: boolean;
|
|
17
|
-
priority?: boolean;
|
|
18
|
-
quality?: number;
|
|
19
|
-
placeholder?: "blur" | "empty";
|
|
20
|
-
blurDataURL?: string;
|
|
21
|
-
loader?: (params: {
|
|
22
|
-
src: string;
|
|
23
|
-
width: number;
|
|
24
|
-
quality?: number;
|
|
25
|
-
}) => string;
|
|
26
|
-
sizes?: string;
|
|
27
|
-
className?: string;
|
|
28
|
-
style?: React.CSSProperties;
|
|
29
|
-
onLoad?: React.ReactEventHandler<HTMLImageElement>; /** @deprecated Use onLoad instead. Still supported for migration compat. */
|
|
30
|
-
onLoadingComplete?: (img: HTMLImageElement) => void;
|
|
31
|
-
onError?: React.ReactEventHandler<HTMLImageElement>;
|
|
32
|
-
onClick?: React.MouseEventHandler<HTMLImageElement>;
|
|
33
|
-
id?: string;
|
|
34
|
-
unoptimized?: boolean;
|
|
35
|
-
overrideSrc?: string;
|
|
36
|
-
loading?: "lazy" | "eager";
|
|
37
|
-
};
|
|
5
|
+
type ImageLoaderProps = Parameters<ImageLoader>[0];
|
|
6
|
+
type ImageProps = ImageProps$1;
|
|
38
7
|
/**
|
|
39
8
|
* Build a `/_next/image` optimization URL.
|
|
40
9
|
*
|
|
@@ -43,13 +12,34 @@ type ImageProps = {
|
|
|
43
12
|
* server handles it as a passthrough (serves the original file).
|
|
44
13
|
*/
|
|
45
14
|
declare function imageOptimizationUrl(src: string, width: number, quality?: number): string;
|
|
46
|
-
declare const Image: React.ForwardRefExoticComponent<
|
|
15
|
+
declare const Image: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, "alt" | "height" | "loading" | "ref" | "src" | "srcSet" | "width"> & {
|
|
16
|
+
src: string | StaticImport;
|
|
17
|
+
alt: string;
|
|
18
|
+
width?: number | `${number}`;
|
|
19
|
+
height?: number | `${number}`;
|
|
20
|
+
fill?: boolean;
|
|
21
|
+
loader?: ImageLoader;
|
|
22
|
+
quality?: number | `${number}`;
|
|
23
|
+
preload?: boolean;
|
|
24
|
+
priority?: boolean;
|
|
25
|
+
loading?: "eager" | "lazy" | undefined;
|
|
26
|
+
placeholder?: import("@vinext/types/next/upstream/dist/shared/lib/get-img-props").PlaceholderValue;
|
|
27
|
+
blurDataURL?: string;
|
|
28
|
+
unoptimized?: boolean;
|
|
29
|
+
overrideSrc?: string;
|
|
30
|
+
onLoadingComplete?: import("@vinext/types/next/upstream/dist/shared/lib/get-img-props").OnLoadingComplete;
|
|
31
|
+
layout?: string;
|
|
32
|
+
objectFit?: string;
|
|
33
|
+
objectPosition?: string;
|
|
34
|
+
lazyBoundary?: string;
|
|
35
|
+
lazyRoot?: string;
|
|
36
|
+
} & React.RefAttributes<HTMLImageElement>>;
|
|
47
37
|
/**
|
|
48
38
|
* getImageProps — for advanced use cases (picture elements, background images).
|
|
49
39
|
* Returns the props that would be passed to the underlying <img> element.
|
|
50
40
|
*/
|
|
51
41
|
declare function getImageProps(props: ImageProps): {
|
|
52
|
-
props:
|
|
42
|
+
props: ImgProps;
|
|
53
43
|
};
|
|
54
44
|
//#endregion
|
|
55
|
-
export { StaticImageData, Image as default, getImageProps, imageOptimizationUrl };
|
|
45
|
+
export { type ImageLoader, ImageLoaderProps, ImageProps, type StaticImageData, type StaticRequire, Image as default, getImageProps, imageOptimizationUrl };
|
package/dist/shims/image.js
CHANGED
|
@@ -216,11 +216,15 @@ function getFillStyle(style, backgroundStyle) {
|
|
|
216
216
|
* Shared by the Image component and getImageProps to keep behavior in sync.
|
|
217
217
|
*/
|
|
218
218
|
function resolveImageSource(v) {
|
|
219
|
+
const staticData = typeof v.src === "object" && "default" in v.src ? v.src.default : v.src;
|
|
220
|
+
const src = typeof staticData === "string" ? staticData : staticData.src;
|
|
221
|
+
const sourceWidth = v.width ?? (typeof staticData === "object" ? staticData.width : void 0);
|
|
222
|
+
const sourceHeight = v.height ?? (typeof staticData === "object" ? staticData.height : void 0);
|
|
219
223
|
return {
|
|
220
|
-
src
|
|
221
|
-
width:
|
|
222
|
-
height:
|
|
223
|
-
blurDataURL: v.blurDataURL ?? (typeof
|
|
224
|
+
src,
|
|
225
|
+
width: typeof sourceWidth === "string" ? Number(sourceWidth) : sourceWidth,
|
|
226
|
+
height: typeof sourceHeight === "string" ? Number(sourceHeight) : sourceHeight,
|
|
227
|
+
blurDataURL: v.blurDataURL ?? (typeof staticData === "object" ? staticData.blurDataURL : void 0)
|
|
224
228
|
};
|
|
225
229
|
}
|
|
226
230
|
/**
|
|
@@ -420,10 +424,11 @@ const Image = forwardRef(function Image({ src: srcProp, alt, width, height, fill
|
|
|
420
424
|
});
|
|
421
425
|
}
|
|
422
426
|
if (loader) {
|
|
427
|
+
const resolvedQuality = typeof quality === "string" ? Number(quality) : quality ?? 75;
|
|
423
428
|
const resolvedSrc = loader({
|
|
424
429
|
src,
|
|
425
430
|
width: imgWidth ?? 0,
|
|
426
|
-
quality:
|
|
431
|
+
quality: resolvedQuality
|
|
427
432
|
});
|
|
428
433
|
preloadImageResource({
|
|
429
434
|
shouldPreload,
|
|
@@ -513,7 +518,7 @@ const Image = forwardRef(function Image({ src: srcProp, alt, width, height, fill
|
|
|
513
518
|
});
|
|
514
519
|
}
|
|
515
520
|
}
|
|
516
|
-
const imgQuality = quality ?? 75;
|
|
521
|
+
const imgQuality = typeof quality === "string" ? Number(quality) : quality ?? 75;
|
|
517
522
|
const skipOptimization = isSvgUrl(src) && !__dangerouslyAllowSVG;
|
|
518
523
|
const optimizedAttributes = imgWidth && !fill && !skipOptimization ? generateImageAttributes(src, imgWidth, imgQuality, sizes) : void 0;
|
|
519
524
|
const srcSet = optimizedAttributes ? optimizedAttributes.srcSet : imgWidth && !fill ? RESPONSIVE_WIDTHS.filter((w) => w <= imgWidth * 2).map((w) => `${src} ${w}w`).join(", ") || `${src} ${imgWidth}w` : void 0;
|
|
@@ -577,7 +582,7 @@ function getImageProps(props) {
|
|
|
577
582
|
backgroundRepeat: "no-repeat",
|
|
578
583
|
backgroundPosition: "center"
|
|
579
584
|
} : void 0;
|
|
580
|
-
|
|
585
|
+
const imageProps = {
|
|
581
586
|
src: renderedSrc,
|
|
582
587
|
alt,
|
|
583
588
|
width: fill ? void 0 : imgWidth,
|
|
@@ -586,13 +591,15 @@ function getImageProps(props) {
|
|
|
586
591
|
fetchPriority: priority ? "high" : void 0,
|
|
587
592
|
decoding: "async",
|
|
588
593
|
className,
|
|
589
|
-
"data-nimg": fill ? "fill" : "1",
|
|
590
594
|
style: fill ? getFillStyle(style, blurStyle) : {
|
|
591
595
|
...blurStyle,
|
|
592
596
|
...style
|
|
593
597
|
},
|
|
594
|
-
...rest
|
|
595
|
-
|
|
598
|
+
...rest,
|
|
599
|
+
sizes: sizes ?? (fill ? "100vw" : void 0),
|
|
600
|
+
srcSet: void 0
|
|
601
|
+
};
|
|
602
|
+
return { props: Object.assign(imageProps, { "data-nimg": fill ? "fill" : "1" }) };
|
|
596
603
|
}
|
|
597
604
|
let blockedInProd = false;
|
|
598
605
|
if (isRemoteUrl(src)) {
|
|
@@ -603,7 +610,7 @@ function getImageProps(props) {
|
|
|
603
610
|
blockedInProd = true;
|
|
604
611
|
}
|
|
605
612
|
}
|
|
606
|
-
const imgQuality = _quality ?? 75;
|
|
613
|
+
const imgQuality = typeof _quality === "string" ? Number(_quality) : _quality ?? 75;
|
|
607
614
|
const resolvedSrc = blockedInProd ? "" : loader ? loader({
|
|
608
615
|
src,
|
|
609
616
|
width: imgWidth ?? 0,
|
|
@@ -620,7 +627,7 @@ function getImageProps(props) {
|
|
|
620
627
|
backgroundRepeat: "no-repeat",
|
|
621
628
|
backgroundPosition: "center"
|
|
622
629
|
} : void 0;
|
|
623
|
-
|
|
630
|
+
const imageProps = {
|
|
624
631
|
src: optimizedSrc,
|
|
625
632
|
alt,
|
|
626
633
|
width: fill ? void 0 : imgWidth,
|
|
@@ -631,13 +638,13 @@ function getImageProps(props) {
|
|
|
631
638
|
srcSet,
|
|
632
639
|
sizes: sizes ?? (fill ? "100vw" : void 0),
|
|
633
640
|
className,
|
|
634
|
-
"data-nimg": fill ? "fill" : "1",
|
|
635
641
|
style: fill ? getFillStyle(style, blurStyle) : {
|
|
636
642
|
...blurStyle,
|
|
637
643
|
...style
|
|
638
644
|
},
|
|
639
645
|
...rest
|
|
640
|
-
}
|
|
646
|
+
};
|
|
647
|
+
return { props: Object.assign(imageProps, { "data-nimg": fill ? "fill" : "1" }) };
|
|
641
648
|
}
|
|
642
649
|
//#endregion
|
|
643
650
|
export { Image as default, getImageProps, imageOptimizationUrl };
|
|
@@ -21,6 +21,8 @@ type SerializeSetCookieOptions = {
|
|
|
21
21
|
httpOnly?: boolean;
|
|
22
22
|
secure?: boolean;
|
|
23
23
|
sameSite?: "Strict" | "Lax" | "None";
|
|
24
|
+
partitioned?: boolean;
|
|
25
|
+
priority?: "low" | "medium" | "high";
|
|
24
26
|
};
|
|
25
27
|
declare function validateCookieName(name: string): void;
|
|
26
28
|
/**
|
|
@@ -35,7 +37,7 @@ declare function validateCookieAttributeValue(value: string, attributeName: stri
|
|
|
35
37
|
* - Defaults `Path` to `/` (matching @edge-runtime/cookies and Next.js).
|
|
36
38
|
* - Validates path/domain to reject control characters and semicolons.
|
|
37
39
|
* - Emits attributes in the order: Path, Domain, Max-Age, Expires, HttpOnly,
|
|
38
|
-
* Secure, SameSite.
|
|
40
|
+
* Secure, SameSite, Partitioned, Priority.
|
|
39
41
|
*
|
|
40
42
|
* The caller is responsible for validating the cookie name (typically before
|
|
41
43
|
* mutating any internal state) via `validateCookieName`.
|
|
@@ -24,7 +24,7 @@ function validateCookieAttributeValue(value, attributeName) {
|
|
|
24
24
|
* - Defaults `Path` to `/` (matching @edge-runtime/cookies and Next.js).
|
|
25
25
|
* - Validates path/domain to reject control characters and semicolons.
|
|
26
26
|
* - Emits attributes in the order: Path, Domain, Max-Age, Expires, HttpOnly,
|
|
27
|
-
* Secure, SameSite.
|
|
27
|
+
* Secure, SameSite, Partitioned, Priority.
|
|
28
28
|
*
|
|
29
29
|
* The caller is responsible for validating the cookie name (typically before
|
|
30
30
|
* mutating any internal state) via `validateCookieName`.
|
|
@@ -43,6 +43,8 @@ function serializeSetCookie(name, value, options) {
|
|
|
43
43
|
if (options?.httpOnly) parts.push("HttpOnly");
|
|
44
44
|
if (options?.secure) parts.push("Secure");
|
|
45
45
|
if (options?.sameSite) parts.push(`SameSite=${options.sameSite}`);
|
|
46
|
+
if (options?.partitioned) parts.push("Partitioned");
|
|
47
|
+
if (options?.priority) parts.push(`Priority=${options.priority[0].toUpperCase()}${options.priority.slice(1)}`);
|
|
46
48
|
return parts.join("; ");
|
|
47
49
|
}
|
|
48
50
|
//#endregion
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { parseCookies } from "../../config/request-context.js";
|
|
2
|
+
import { isExternalUrl } from "../../utils/external-url.js";
|
|
3
|
+
import { matchRewrite } from "../../config/config-matchers.js";
|
|
2
4
|
import { matchDirectHybridClientRoutes, resolveMatchedHybridClientRouteOwner, resolveSameOriginPathname } from "./hybrid-client-route-owner-direct.js";
|
|
3
5
|
import { mergeRewriteQuery } from "../../utils/query.js";
|
|
4
6
|
//#region src/shims/internal/hybrid-client-route-owner.ts
|
|
@@ -40,10 +40,11 @@ const staticDataCache = Object.create(null);
|
|
|
40
40
|
const staticDataSources = /* @__PURE__ */ new Map();
|
|
41
41
|
function getStaticDataKey(dataHref) {
|
|
42
42
|
if (typeof window === "undefined") return dataHref;
|
|
43
|
+
const previewVariant = window.__NEXT_DATA__?.isPreview === true ? "preview" : "normal";
|
|
43
44
|
try {
|
|
44
|
-
return new URL(dataHref, window.location.href).href
|
|
45
|
+
return `${new URL(dataHref, window.location.href).href}\n${previewVariant}`;
|
|
45
46
|
} catch {
|
|
46
|
-
return dataHref
|
|
47
|
+
return `${dataHref}\n${previewVariant}`;
|
|
47
48
|
}
|
|
48
49
|
}
|
|
49
50
|
function cloneStaticResponse(cached, signal) {
|
|
@@ -113,7 +114,8 @@ function getInflightKey(dataHref, init) {
|
|
|
113
114
|
resolvedHref = new URL(dataHref, window.location.href).href;
|
|
114
115
|
} catch {}
|
|
115
116
|
const deploymentId = new Headers(init?.headers).get("x-deployment-id") ?? "";
|
|
116
|
-
|
|
117
|
+
const previewVariant = typeof window !== "undefined" && window.__NEXT_DATA__?.isPreview === true ? "preview" : "normal";
|
|
118
|
+
return `${resolvedHref}\n${deploymentId}\n${previewVariant}`;
|
|
117
119
|
}
|
|
118
120
|
function cloneSharedResponse(key, entry, signal) {
|
|
119
121
|
entry.waiters += 1;
|
|
@@ -30,11 +30,11 @@ type NEXT_DATA = {
|
|
|
30
30
|
locale?: string;
|
|
31
31
|
locales?: string[];
|
|
32
32
|
defaultLocale?: string;
|
|
33
|
-
domainLocales?:
|
|
33
|
+
domainLocales?: ReadonlyArray<{
|
|
34
34
|
domain: string;
|
|
35
35
|
defaultLocale: string;
|
|
36
|
-
locales?: string[];
|
|
37
|
-
http?:
|
|
36
|
+
locales?: readonly string[];
|
|
37
|
+
http?: true;
|
|
38
38
|
}>;
|
|
39
39
|
scriptLoader?: unknown[];
|
|
40
40
|
isPreview?: boolean;
|
|
@@ -22,6 +22,6 @@ declare function LayoutSegmentProvider({
|
|
|
22
22
|
providerId?: string;
|
|
23
23
|
segmentMap: SegmentMap;
|
|
24
24
|
children: ReactNode;
|
|
25
|
-
}): string | number | bigint | boolean | import("react").
|
|
25
|
+
}): string | number | bigint | boolean | import("react").FunctionComponentElement<import("react").ProviderProps<SegmentMap>> | Iterable<ReactNode> | Promise<string | number | bigint | boolean | Iterable<ReactNode> | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | import("react").ReactPortal | null | undefined> | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | null | undefined;
|
|
26
26
|
//#endregion
|
|
27
27
|
export { LayoutSegmentProvider, mergeLayoutSegmentMap };
|
|
@@ -1,41 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { ImageLoader, ImageLoaderProps, ImageProps } from "@vinext/types/next/upstream/dist/client/legacy/image";
|
|
2
3
|
|
|
3
4
|
//#region src/shims/legacy-image.d.ts
|
|
4
|
-
|
|
5
|
-
src: string | {
|
|
6
|
-
src: string;
|
|
7
|
-
width: number;
|
|
8
|
-
height: number;
|
|
9
|
-
blurDataURL?: string;
|
|
10
|
-
};
|
|
11
|
-
alt: string;
|
|
12
|
-
width?: number | string;
|
|
13
|
-
height?: number | string; /** Legacy layout mode */
|
|
14
|
-
layout?: "fixed" | "intrinsic" | "responsive" | "fill"; /** CSS object-fit (used with layout="fill") */
|
|
15
|
-
objectFit?: React.CSSProperties["objectFit"]; /** CSS object-position (used with layout="fill") */
|
|
16
|
-
objectPosition?: string;
|
|
17
|
-
priority?: boolean;
|
|
18
|
-
quality?: number;
|
|
19
|
-
placeholder?: "blur" | "empty";
|
|
20
|
-
blurDataURL?: string;
|
|
21
|
-
loader?: (params: {
|
|
22
|
-
src: string;
|
|
23
|
-
width: number;
|
|
24
|
-
quality?: number;
|
|
25
|
-
}) => string;
|
|
26
|
-
sizes?: string;
|
|
27
|
-
className?: string;
|
|
28
|
-
style?: React.CSSProperties;
|
|
29
|
-
onLoad?: React.ReactEventHandler<HTMLImageElement>;
|
|
30
|
-
onLoadingComplete?: (result: {
|
|
31
|
-
naturalWidth: number;
|
|
32
|
-
naturalHeight: number;
|
|
33
|
-
}) => void;
|
|
34
|
-
onError?: React.ReactEventHandler<HTMLImageElement>;
|
|
35
|
-
loading?: "lazy" | "eager";
|
|
36
|
-
unoptimized?: boolean;
|
|
37
|
-
id?: string;
|
|
38
|
-
};
|
|
39
|
-
declare const LegacyImage: React.ForwardRefExoticComponent<LegacyImageProps & React.RefAttributes<HTMLImageElement>>;
|
|
5
|
+
declare function LegacyImage(props: ImageProps): React.ReactElement;
|
|
40
6
|
//#endregion
|
|
41
|
-
export { LegacyImage as default };
|
|
7
|
+
export { type ImageLoader, type ImageLoaderProps, type ImageProps, LegacyImage as default };
|
|
@@ -1,19 +1,9 @@
|
|
|
1
1
|
import Image from "./image.js";
|
|
2
|
-
import
|
|
2
|
+
import "react";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
//#region src/shims/legacy-image.tsx
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
*
|
|
8
|
-
* Provides the pre-Next.js 13 Image component API with layout prop.
|
|
9
|
-
* Translates legacy props (layout, objectFit, objectPosition) to the
|
|
10
|
-
* modern Image component's fill/style props.
|
|
11
|
-
*
|
|
12
|
-
* This module is used by apps that ran the `next-image-to-legacy-image`
|
|
13
|
-
* codemod when upgrading from Next.js 12.
|
|
14
|
-
*/
|
|
15
|
-
const LegacyImage = forwardRef(function LegacyImage(props, ref) {
|
|
16
|
-
const { layout = "intrinsic", objectFit, objectPosition, onLoadingComplete, onLoad, width, height, style, ...rest } = props;
|
|
5
|
+
function LegacyImage(props) {
|
|
6
|
+
const { layout = "intrinsic", objectFit, objectPosition, onLoadingComplete, onLoad, alt, width, height, style, lazyRoot: _lazyRoot, lazyBoundary: _lazyBoundary, ...rest } = props;
|
|
17
7
|
const modernStyle = { ...style };
|
|
18
8
|
if (objectFit) modernStyle.objectFit = objectFit;
|
|
19
9
|
if (objectPosition) modernStyle.objectPosition = objectPosition;
|
|
@@ -26,7 +16,7 @@ const LegacyImage = forwardRef(function LegacyImage(props, ref) {
|
|
|
26
16
|
onLoad?.(e);
|
|
27
17
|
} : onLoad;
|
|
28
18
|
if (layout === "fill") return /* @__PURE__ */ jsx(Image, {
|
|
29
|
-
|
|
19
|
+
alt: alt ?? "",
|
|
30
20
|
fill: true,
|
|
31
21
|
style: modernStyle,
|
|
32
22
|
onLoad: handleLoad,
|
|
@@ -37,13 +27,13 @@ const LegacyImage = forwardRef(function LegacyImage(props, ref) {
|
|
|
37
27
|
modernStyle.height = "auto";
|
|
38
28
|
}
|
|
39
29
|
return /* @__PURE__ */ jsx(Image, {
|
|
40
|
-
|
|
30
|
+
alt: alt ?? "",
|
|
41
31
|
width: typeof width === "string" ? parseInt(width, 10) : width,
|
|
42
32
|
height: typeof height === "string" ? parseInt(height, 10) : height,
|
|
43
33
|
style: modernStyle,
|
|
44
34
|
onLoad: handleLoad,
|
|
45
35
|
...rest
|
|
46
36
|
});
|
|
47
|
-
}
|
|
37
|
+
}
|
|
48
38
|
//#endregion
|
|
49
39
|
export { LegacyImage as default };
|