next 14.2.19 → 14.2.21
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/dist/bin/next +1 -1
- package/dist/build/analysis/get-page-static-info.js +3 -1
- package/dist/build/analysis/get-page-static-info.js.map +1 -1
- package/dist/build/index.js +1 -1
- package/dist/build/swc/index.js +1 -1
- package/dist/build/webpack/plugins/middleware-plugin.js +3 -1
- package/dist/build/webpack/plugins/middleware-plugin.js.map +1 -1
- package/dist/build/webpack-config.js +2 -2
- package/dist/client/app-bootstrap.js +1 -1
- package/dist/client/index.js +1 -1
- package/dist/compiled/next-server/app-page-experimental.runtime.dev.js +2 -2
- package/dist/compiled/next-server/app-page-experimental.runtime.dev.js.map +1 -1
- package/dist/compiled/next-server/app-page-experimental.runtime.prod.js +1 -1
- package/dist/compiled/next-server/app-page-experimental.runtime.prod.js.map +1 -1
- package/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +1 -1
- package/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js.map +1 -1
- package/dist/compiled/next-server/app-page-turbo.runtime.prod.js +7 -7
- package/dist/compiled/next-server/app-page-turbo.runtime.prod.js.map +1 -1
- package/dist/compiled/next-server/app-page.runtime.dev.js +2 -2
- package/dist/compiled/next-server/app-page.runtime.dev.js.map +1 -1
- package/dist/compiled/next-server/app-page.runtime.prod.js +1 -1
- package/dist/compiled/next-server/app-page.runtime.prod.js.map +1 -1
- package/dist/compiled/next-server/app-route-experimental.runtime.dev.js +2 -2
- package/dist/compiled/next-server/app-route-experimental.runtime.dev.js.map +1 -1
- package/dist/compiled/next-server/app-route-experimental.runtime.prod.js +2 -2
- package/dist/compiled/next-server/app-route-experimental.runtime.prod.js.map +1 -1
- package/dist/compiled/next-server/app-route-turbo-experimental.runtime.prod.js +2 -2
- package/dist/compiled/next-server/app-route-turbo-experimental.runtime.prod.js.map +1 -1
- package/dist/compiled/next-server/app-route-turbo.runtime.prod.js +2 -2
- package/dist/compiled/next-server/app-route-turbo.runtime.prod.js.map +1 -1
- package/dist/compiled/next-server/app-route.runtime.dev.js +2 -2
- package/dist/compiled/next-server/app-route.runtime.dev.js.map +1 -1
- package/dist/compiled/next-server/app-route.runtime.prod.js +2 -2
- package/dist/compiled/next-server/app-route.runtime.prod.js.map +1 -1
- package/dist/compiled/react/cjs/react.development.js +1 -1
- package/dist/compiled/react/cjs/react.production.js +1 -1
- package/dist/compiled/react/cjs/react.production.min.js +1 -1
- package/dist/compiled/react/cjs/react.react-server.development.js +1 -1
- package/dist/compiled/react/cjs/react.react-server.production.js +1 -1
- package/dist/compiled/react/cjs/react.react-server.production.min.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server-legacy.browser.development.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server-legacy.browser.production.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server-legacy.browser.production.min.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server-legacy.node.development.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server-legacy.node.production.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server-legacy.node.production.min.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server-rendering-stub.development.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server-rendering-stub.production.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server-rendering-stub.production.min.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server.browser.development.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server.browser.production.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server.bun.production.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server.edge.development.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server.edge.production.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server.edge.production.min.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server.node.development.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server.node.production.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom-server.node.production.min.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom.development.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom.production.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom.production.min.js +3 -3
- package/dist/compiled/react-dom/cjs/react-dom.profiling.js +1 -1
- package/dist/compiled/react-dom/cjs/react-dom.profiling.min.js +3 -3
- package/dist/compiled/react-dom/package.json +2 -2
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.development.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.production.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.production.min.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.development.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.production.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.production.min.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server-rendering-stub.development.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server-rendering-stub.production.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server-rendering-stub.production.min.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server.browser.development.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server.browser.production.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server.browser.production.min.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server.bun.production.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server.edge.development.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server.edge.production.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server.edge.production.min.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server.node.development.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server.node.production.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-server.node.production.min.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.development.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.production.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.production.min.js +3 -3
- package/dist/compiled/react-dom-experimental/cjs/react-dom.development.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom.production.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom.production.min.js +3 -3
- package/dist/compiled/react-dom-experimental/cjs/react-dom.profiling.js +1 -1
- package/dist/compiled/react-dom-experimental/cjs/react-dom.profiling.min.js +3 -3
- package/dist/compiled/react-dom-experimental/package.json +2 -2
- package/dist/compiled/react-experimental/cjs/react.development.js +1 -1
- package/dist/compiled/react-experimental/cjs/react.production.js +1 -1
- package/dist/compiled/react-experimental/cjs/react.production.min.js +1 -1
- package/dist/compiled/react-experimental/cjs/react.react-server.development.js +1 -1
- package/dist/compiled/react-experimental/cjs/react.react-server.production.js +1 -1
- package/dist/compiled/react-experimental/cjs/react.react-server.production.min.js +1 -1
- package/dist/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.development.js +15 -1
- package/dist/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.js +15 -1
- package/dist/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.min.js +7 -7
- package/dist/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js +15 -1
- package/dist/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js +15 -1
- package/dist/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.min.js +63 -63
- package/dist/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +15 -1
- package/dist/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js +15 -1
- package/dist/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.min.js +65 -65
- package/dist/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.unbundled.development.js +15 -1
- package/dist/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.unbundled.production.js +15 -1
- package/dist/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.unbundled.production.min.js +62 -62
- package/dist/compiled/react-server-dom-turbopack/package.json +2 -2
- package/dist/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.browser.development.js +15 -1
- package/dist/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.browser.production.js +15 -1
- package/dist/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.browser.production.min.js +65 -65
- package/dist/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.edge.development.js +15 -1
- package/dist/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.edge.production.js +15 -1
- package/dist/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.edge.production.min.js +15 -15
- package/dist/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.node.development.js +15 -1
- package/dist/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.node.production.js +15 -1
- package/dist/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.node.production.min.js +14 -14
- package/dist/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.node.unbundled.development.js +15 -1
- package/dist/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.node.unbundled.production.js +15 -1
- package/dist/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.node.unbundled.production.min.js +14 -14
- package/dist/compiled/react-server-dom-turbopack-experimental/package.json +2 -2
- package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js +15 -1
- package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js +15 -1
- package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.min.js +7 -7
- package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js +15 -1
- package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js +15 -1
- package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.min.js +63 -63
- package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +15 -1
- package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js +15 -1
- package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.min.js +66 -66
- package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +15 -1
- package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.production.js +15 -1
- package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.production.min.js +63 -63
- package/dist/compiled/react-server-dom-webpack/package.json +2 -2
- package/dist/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.browser.development.js +15 -1
- package/dist/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.browser.production.js +15 -1
- package/dist/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.browser.production.min.js +65 -65
- package/dist/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.edge.development.js +15 -1
- package/dist/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.edge.production.js +15 -1
- package/dist/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.edge.production.min.js +15 -15
- package/dist/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.node.development.js +15 -1
- package/dist/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.node.production.js +15 -1
- package/dist/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.node.production.min.js +14 -14
- package/dist/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.node.unbundled.development.js +15 -1
- package/dist/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.node.unbundled.production.js +15 -1
- package/dist/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.node.unbundled.production.min.js +14 -14
- package/dist/compiled/react-server-dom-webpack-experimental/package.json +2 -2
- package/dist/esm/build/analysis/get-page-static-info.js +3 -1
- package/dist/esm/build/analysis/get-page-static-info.js.map +1 -1
- package/dist/esm/build/index.js +1 -1
- package/dist/esm/build/swc/index.js +1 -1
- package/dist/esm/build/webpack/plugins/middleware-plugin.js +3 -1
- package/dist/esm/build/webpack/plugins/middleware-plugin.js.map +1 -1
- package/dist/esm/build/webpack-config.js +2 -2
- package/dist/esm/client/app-bootstrap.js +1 -1
- package/dist/esm/client/index.js +1 -1
- package/dist/esm/server/config.js +1 -1
- package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
- package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/esm/server/lib/app-info-log.js +1 -1
- package/dist/esm/server/lib/clone-response.js +44 -0
- package/dist/esm/server/lib/clone-response.js.map +1 -0
- package/dist/esm/server/lib/dedupe-fetch.js +106 -0
- package/dist/esm/server/lib/dedupe-fetch.js.map +1 -0
- package/dist/esm/server/lib/patch-fetch.js +37 -10
- package/dist/esm/server/lib/patch-fetch.js.map +1 -1
- package/dist/esm/server/lib/start-server.js +1 -1
- package/dist/server/config.js +1 -1
- package/dist/server/dev/hot-reloader-turbopack.js +1 -1
- package/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/server/lib/app-info-log.js +1 -1
- package/dist/server/lib/clone-response.d.ts +13 -0
- package/dist/server/lib/clone-response.js +54 -0
- package/dist/server/lib/clone-response.js.map +1 -0
- package/dist/server/lib/dedupe-fetch.d.ts +1 -0
- package/dist/server/lib/dedupe-fetch.js +157 -0
- package/dist/server/lib/dedupe-fetch.js.map +1 -0
- package/dist/server/lib/patch-fetch.js +37 -10
- package/dist/server/lib/patch-fetch.js.map +1 -1
- package/dist/server/lib/start-server.js +1 -1
- package/dist/telemetry/anonymous-meta.js +1 -1
- package/dist/telemetry/events/session-stopped.js +2 -2
- package/dist/telemetry/events/version.js +2 -2
- package/package.json +15 -15
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clones a response by teeing the body so we can return two independent
|
|
3
|
+
* ReadableStreams from it. This avoids the bug in the undici library around
|
|
4
|
+
* response cloning.
|
|
5
|
+
*
|
|
6
|
+
* After cloning, the original response's body will be consumed and closed.
|
|
7
|
+
*
|
|
8
|
+
* @see https://github.com/vercel/next.js/pull/73274
|
|
9
|
+
*
|
|
10
|
+
* @param original - The original response to clone.
|
|
11
|
+
* @returns A tuple containing two independent clones of the original response.
|
|
12
|
+
*/ export function cloneResponse(original) {
|
|
13
|
+
// If the response has no body, then we can just return the original response
|
|
14
|
+
// twice because it's immutable.
|
|
15
|
+
if (!original.body) {
|
|
16
|
+
return [
|
|
17
|
+
original,
|
|
18
|
+
original
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
const [body1, body2] = original.body.tee();
|
|
22
|
+
const cloned1 = new Response(body1, {
|
|
23
|
+
status: original.status,
|
|
24
|
+
statusText: original.statusText,
|
|
25
|
+
headers: original.headers
|
|
26
|
+
});
|
|
27
|
+
Object.defineProperty(cloned1, "url", {
|
|
28
|
+
value: original.url
|
|
29
|
+
});
|
|
30
|
+
const cloned2 = new Response(body2, {
|
|
31
|
+
status: original.status,
|
|
32
|
+
statusText: original.statusText,
|
|
33
|
+
headers: original.headers
|
|
34
|
+
});
|
|
35
|
+
Object.defineProperty(cloned2, "url", {
|
|
36
|
+
value: original.url
|
|
37
|
+
});
|
|
38
|
+
return [
|
|
39
|
+
cloned1,
|
|
40
|
+
cloned2
|
|
41
|
+
];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=clone-response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/server/lib/clone-response.ts"],"names":["cloneResponse","original","body","body1","body2","tee","cloned1","Response","status","statusText","headers","Object","defineProperty","value","url","cloned2"],"mappings":"AAAA;;;;;;;;;;;CAWC,GACD,OAAO,SAASA,cAAcC,QAAkB;IAC9C,6EAA6E;IAC7E,gCAAgC;IAChC,IAAI,CAACA,SAASC,IAAI,EAAE;QAClB,OAAO;YAACD;YAAUA;SAAS;IAC7B;IAEA,MAAM,CAACE,OAAOC,MAAM,GAAGH,SAASC,IAAI,CAACG,GAAG;IAExC,MAAMC,UAAU,IAAIC,SAASJ,OAAO;QAClCK,QAAQP,SAASO,MAAM;QACvBC,YAAYR,SAASQ,UAAU;QAC/BC,SAAST,SAASS,OAAO;IAC3B;IAEAC,OAAOC,cAAc,CAACN,SAAS,OAAO;QACpCO,OAAOZ,SAASa,GAAG;IACrB;IAEA,MAAMC,UAAU,IAAIR,SAASH,OAAO;QAClCI,QAAQP,SAASO,MAAM;QACvBC,YAAYR,SAASQ,UAAU;QAC/BC,SAAST,SAASS,OAAO;IAC3B;IAEAC,OAAOC,cAAc,CAACG,SAAS,OAAO;QACpCF,OAAOZ,SAASa,GAAG;IACrB;IAEA,OAAO;QAACR;QAASS;KAAQ;AAC3B"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Based on https://github.com/facebook/react/blob/d4e78c42a94be027b4dc7ed2659a5fddfbf9bd4e/packages/react/src/ReactFetch.js
|
|
3
|
+
*/ import * as React from "react";
|
|
4
|
+
import { cloneResponse } from "./clone-response";
|
|
5
|
+
const simpleCacheKey = '["GET",[],null,"follow",null,null,null,null]' // generateCacheKey(new Request('https://blank'));
|
|
6
|
+
;
|
|
7
|
+
function generateCacheKey(request) {
|
|
8
|
+
// We pick the fields that goes into the key used to dedupe requests.
|
|
9
|
+
// We don't include the `cache` field, because we end up using whatever
|
|
10
|
+
// caching resulted from the first request.
|
|
11
|
+
// Notably we currently don't consider non-standard (or future) options.
|
|
12
|
+
// This might not be safe. TODO: warn for non-standard extensions differing.
|
|
13
|
+
// IF YOU CHANGE THIS UPDATE THE simpleCacheKey ABOVE.
|
|
14
|
+
return JSON.stringify([
|
|
15
|
+
request.method,
|
|
16
|
+
Array.from(request.headers.entries()),
|
|
17
|
+
request.mode,
|
|
18
|
+
request.redirect,
|
|
19
|
+
request.credentials,
|
|
20
|
+
request.referrer,
|
|
21
|
+
request.referrerPolicy,
|
|
22
|
+
request.integrity
|
|
23
|
+
]);
|
|
24
|
+
}
|
|
25
|
+
export function createDedupeFetch(originalFetch) {
|
|
26
|
+
const getCacheEntries = React.cache(// eslint-disable-next-line @typescript-eslint/no-unused-vars -- url is the cache key
|
|
27
|
+
(url)=>[]);
|
|
28
|
+
return function dedupeFetch(resource, options) {
|
|
29
|
+
if (options && options.signal) {
|
|
30
|
+
// If we're passed a signal, then we assume that
|
|
31
|
+
// someone else controls the lifetime of this object and opts out of
|
|
32
|
+
// caching. It's effectively the opt-out mechanism.
|
|
33
|
+
// Ideally we should be able to check this on the Request but
|
|
34
|
+
// it always gets initialized with its own signal so we don't
|
|
35
|
+
// know if it's supposed to override - unless we also override the
|
|
36
|
+
// Request constructor.
|
|
37
|
+
return originalFetch(resource, options);
|
|
38
|
+
}
|
|
39
|
+
// Normalize the Request
|
|
40
|
+
let url;
|
|
41
|
+
let cacheKey;
|
|
42
|
+
if (typeof resource === "string" && !options) {
|
|
43
|
+
// Fast path.
|
|
44
|
+
cacheKey = simpleCacheKey;
|
|
45
|
+
url = resource;
|
|
46
|
+
} else {
|
|
47
|
+
// Normalize the request.
|
|
48
|
+
// if resource is not a string or a URL (its an instance of Request)
|
|
49
|
+
// then do not instantiate a new Request but instead
|
|
50
|
+
// reuse the request as to not disturb the body in the event it's a ReadableStream.
|
|
51
|
+
const request = typeof resource === "string" || resource instanceof URL ? new Request(resource, options) : resource;
|
|
52
|
+
if (request.method !== "GET" && request.method !== "HEAD" || request.keepalive) {
|
|
53
|
+
// We currently don't dedupe requests that might have side-effects. Those
|
|
54
|
+
// have to be explicitly cached. We assume that the request doesn't have a
|
|
55
|
+
// body if it's GET or HEAD.
|
|
56
|
+
// keepalive gets treated the same as if you passed a custom cache signal.
|
|
57
|
+
return originalFetch(resource, options);
|
|
58
|
+
}
|
|
59
|
+
cacheKey = generateCacheKey(request);
|
|
60
|
+
url = request.url;
|
|
61
|
+
}
|
|
62
|
+
const cacheEntries = getCacheEntries(url);
|
|
63
|
+
for(let i = 0, j = cacheEntries.length; i < j; i += 1){
|
|
64
|
+
const [key, promise] = cacheEntries[i];
|
|
65
|
+
if (key === cacheKey) {
|
|
66
|
+
return promise.then(()=>{
|
|
67
|
+
const response = cacheEntries[i][2];
|
|
68
|
+
if (!response) throw new Error("No cached response");
|
|
69
|
+
// We're cloning the response using this utility because there exists
|
|
70
|
+
// a bug in the undici library around response cloning. See the
|
|
71
|
+
// following pull request for more details:
|
|
72
|
+
// https://github.com/vercel/next.js/pull/73274
|
|
73
|
+
const [cloned1, cloned2] = cloneResponse(response);
|
|
74
|
+
cacheEntries[i][2] = cloned2;
|
|
75
|
+
return cloned1;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// We pass the original arguments here in case normalizing the Request
|
|
80
|
+
// doesn't include all the options in this environment. We also pass a
|
|
81
|
+
// signal down to the original fetch as to bypass the underlying React fetch
|
|
82
|
+
// cache.
|
|
83
|
+
const controller = new AbortController();
|
|
84
|
+
const promise = originalFetch(resource, {
|
|
85
|
+
...options,
|
|
86
|
+
signal: controller.signal
|
|
87
|
+
});
|
|
88
|
+
const entry = [
|
|
89
|
+
cacheKey,
|
|
90
|
+
promise,
|
|
91
|
+
null
|
|
92
|
+
];
|
|
93
|
+
cacheEntries.push(entry);
|
|
94
|
+
return promise.then((response)=>{
|
|
95
|
+
// We're cloning the response using this utility because there exists
|
|
96
|
+
// a bug in the undici library around response cloning. See the
|
|
97
|
+
// following pull request for more details:
|
|
98
|
+
// https://github.com/vercel/next.js/pull/73274
|
|
99
|
+
const [cloned1, cloned2] = cloneResponse(response);
|
|
100
|
+
entry[2] = cloned2;
|
|
101
|
+
return cloned1;
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
//# sourceMappingURL=dedupe-fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/server/lib/dedupe-fetch.ts"],"names":["React","cloneResponse","simpleCacheKey","generateCacheKey","request","JSON","stringify","method","Array","from","headers","entries","mode","redirect","credentials","referrer","referrerPolicy","integrity","createDedupeFetch","originalFetch","getCacheEntries","cache","url","dedupeFetch","resource","options","signal","cacheKey","URL","Request","keepalive","cacheEntries","i","j","length","key","promise","then","response","Error","cloned1","cloned2","controller","AbortController","entry","push"],"mappings":"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"}
|
|
@@ -3,6 +3,8 @@ import { getTracer, SpanKind } from "./trace/tracer";
|
|
|
3
3
|
import { CACHE_ONE_YEAR, NEXT_CACHE_IMPLICIT_TAG_ID, NEXT_CACHE_TAG_MAX_ITEMS, NEXT_CACHE_TAG_MAX_LENGTH } from "../../lib/constants";
|
|
4
4
|
import * as Log from "../../build/output/log";
|
|
5
5
|
import { trackDynamicFetch } from "../app-render/dynamic-rendering";
|
|
6
|
+
import { createDedupeFetch } from "./dedupe-fetch";
|
|
7
|
+
import { cloneResponse } from "./clone-response";
|
|
6
8
|
const isEdgeRuntime = process.env.NEXT_RUNTIME === "edge";
|
|
7
9
|
function isPatchedFetch(fetch) {
|
|
8
10
|
return "__nextPatched" in fetch && fetch.__nextPatched === true;
|
|
@@ -444,10 +446,19 @@ function createPatchedFetcher(originFetch, { serverHooks: { DynamicServerError }
|
|
|
444
446
|
if (entry.isStale) {
|
|
445
447
|
staticGenerationStore.pendingRevalidates ??= {};
|
|
446
448
|
if (!staticGenerationStore.pendingRevalidates[cacheKey]) {
|
|
447
|
-
|
|
449
|
+
const pendingRevalidate = doOriginalFetch(true).then(async (response)=>({
|
|
450
|
+
body: await response.arrayBuffer(),
|
|
451
|
+
headers: response.headers,
|
|
452
|
+
status: response.status,
|
|
453
|
+
statusText: response.statusText
|
|
454
|
+
})).finally(()=>{
|
|
448
455
|
staticGenerationStore.pendingRevalidates ??= {};
|
|
449
456
|
delete staticGenerationStore.pendingRevalidates[cacheKey || ""];
|
|
450
457
|
});
|
|
458
|
+
// Attach the empty catch here so we don't get a "unhandled
|
|
459
|
+
// promise rejection" warning.
|
|
460
|
+
pendingRevalidate.catch(console.error);
|
|
461
|
+
staticGenerationStore.pendingRevalidates[cacheKey] = pendingRevalidate;
|
|
451
462
|
}
|
|
452
463
|
}
|
|
453
464
|
const resData = entry.value.data;
|
|
@@ -509,13 +520,29 @@ function createPatchedFetcher(originFetch, { serverHooks: { DynamicServerError }
|
|
|
509
520
|
// origin hit if it's a cache-able entry
|
|
510
521
|
if (cacheKey && isForegroundRevalidate) {
|
|
511
522
|
staticGenerationStore.pendingRevalidates ??= {};
|
|
512
|
-
|
|
523
|
+
let pendingRevalidate = staticGenerationStore.pendingRevalidates[cacheKey];
|
|
513
524
|
if (pendingRevalidate) {
|
|
514
|
-
const
|
|
515
|
-
return
|
|
525
|
+
const revalidatedResult = await pendingRevalidate;
|
|
526
|
+
return new Response(revalidatedResult.body, {
|
|
527
|
+
headers: revalidatedResult.headers,
|
|
528
|
+
status: revalidatedResult.status,
|
|
529
|
+
statusText: revalidatedResult.statusText
|
|
530
|
+
});
|
|
516
531
|
}
|
|
517
|
-
const pendingResponse = doOriginalFetch(true, cacheReasonOverride)
|
|
518
|
-
|
|
532
|
+
const pendingResponse = doOriginalFetch(true, cacheReasonOverride)// We're cloning the response using this utility because there
|
|
533
|
+
// exists a bug in the undici library around response cloning.
|
|
534
|
+
// See the following pull request for more details:
|
|
535
|
+
// https://github.com/vercel/next.js/pull/73274
|
|
536
|
+
.then(cloneResponse);
|
|
537
|
+
pendingRevalidate = pendingResponse.then(async (responses)=>{
|
|
538
|
+
const response = responses[0];
|
|
539
|
+
return {
|
|
540
|
+
body: await response.arrayBuffer(),
|
|
541
|
+
headers: response.headers,
|
|
542
|
+
status: response.status,
|
|
543
|
+
statusText: response.statusText
|
|
544
|
+
};
|
|
545
|
+
}).finally(()=>{
|
|
519
546
|
if (cacheKey) {
|
|
520
547
|
var _staticGenerationStore_pendingRevalidates;
|
|
521
548
|
// If the pending revalidate is not present in the store, then
|
|
@@ -528,9 +555,9 @@ function createPatchedFetcher(originFetch, { serverHooks: { DynamicServerError }
|
|
|
528
555
|
});
|
|
529
556
|
// Attach the empty catch here so we don't get a "unhandled promise
|
|
530
557
|
// rejection" warning
|
|
531
|
-
|
|
532
|
-
staticGenerationStore.pendingRevalidates[cacheKey] =
|
|
533
|
-
return pendingResponse;
|
|
558
|
+
pendingRevalidate.catch(()=>{});
|
|
559
|
+
staticGenerationStore.pendingRevalidates[cacheKey] = pendingRevalidate;
|
|
560
|
+
return pendingResponse.then((responses)=>responses[1]);
|
|
534
561
|
} else {
|
|
535
562
|
return doOriginalFetch(false, cacheReasonOverride).finally(handleUnlock);
|
|
536
563
|
}
|
|
@@ -549,7 +576,7 @@ export function patchFetch(options) {
|
|
|
549
576
|
if (isPatchedFetch(globalThis.fetch)) return;
|
|
550
577
|
// Grab the original fetch function. We'll attach this so we can use it in
|
|
551
578
|
// the patched fetch function.
|
|
552
|
-
const original = globalThis.fetch;
|
|
579
|
+
const original = createDedupeFetch(globalThis.fetch);
|
|
553
580
|
// Set the global fetch to the patched fetch.
|
|
554
581
|
globalThis.fetch = createPatchedFetcher(original, options);
|
|
555
582
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/server/lib/patch-fetch.ts"],"names":["AppRenderSpan","NextNodeServerSpan","getTracer","SpanKind","CACHE_ONE_YEAR","NEXT_CACHE_IMPLICIT_TAG_ID","NEXT_CACHE_TAG_MAX_ITEMS","NEXT_CACHE_TAG_MAX_LENGTH","Log","trackDynamicFetch","isEdgeRuntime","process","env","NEXT_RUNTIME","isPatchedFetch","fetch","__nextPatched","validateRevalidate","revalidateVal","pathname","normalizedRevalidate","undefined","isNaN","Error","err","message","includes","validateTags","tags","description","validTags","invalidTags","i","length","tag","push","reason","console","warn","slice","join","log","getDerivedTags","derivedTags","startsWith","pathnameParts","split","curPathname","endsWith","addImplicitTags","staticGenerationStore","newTags","pagePath","urlPathname","Array","isArray","parsedPathname","URL","trackFetchMetric","ctx","requestEndedState","ended","NODE_ENV","fetchMetrics","dedupeFields","some","metric","every","field","end","Date","now","idx","nextFetchId","sort","a","b","aDur","start","bDur","createPatchedFetcher","originFetch","serverHooks","DynamicServerError","staticGenerationAsyncStorage","patched","input","init","url","Request","username","password","fetchUrl","href","fetchStart","method","toUpperCase","isInternal","next","internal","hideSpan","NEXT_OTEL_FETCH_DISABLED","trace","internalFetch","kind","CLIENT","spanName","filter","Boolean","attributes","hostname","port","getRequestMeta","getStore","isDraftMode","isRequestInput","value","revalidate","getNextField","curRevalidate","toString","implicitTags","fetchCacheMode","fetchCache","isUsingNoStore","isUnstableNoStore","_cache","cacheReason","_headers","initHeaders","get","Headers","hasUnCacheableHeader","isUnCacheableMethod","toLowerCase","autoNoCache","forceStatic","isCacheableRevalidate","cacheKey","incrementalCache","fetchCacheKey","error","fetchIdx","doOriginalFetch","isStale","cacheReasonOverride","requestInputFields","reqInput","reqOptions","body","_ogBody","signal","otherInput","clonedInit","fetchType","then","res","cacheStatus","status","bodyBuffer","Buffer","from","arrayBuffer","set","data","headers","Object","fromEntries","entries","response","Response","defineProperty","handleUnlock","Promise","resolve","isForegroundRevalidate","lock","entry","isOnDemandRevalidate","kindHint","softTags","isRevalidate","pendingRevalidates","catch","finally","resData","isStaticGeneration","cache","dynamicUsageReason","dynamicUsageErr","dynamicUsageDescription","hasNextConfig","forceDynamic","pendingRevalidate","clone","pendingResponse","nextRevalidate","__nextGetStaticStore","_nextOriginalFetch","patchFetch","options","globalThis","original"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/server/lib/patch-fetch.ts"],"names":["AppRenderSpan","NextNodeServerSpan","getTracer","SpanKind","CACHE_ONE_YEAR","NEXT_CACHE_IMPLICIT_TAG_ID","NEXT_CACHE_TAG_MAX_ITEMS","NEXT_CACHE_TAG_MAX_LENGTH","Log","trackDynamicFetch","createDedupeFetch","cloneResponse","isEdgeRuntime","process","env","NEXT_RUNTIME","isPatchedFetch","fetch","__nextPatched","validateRevalidate","revalidateVal","pathname","normalizedRevalidate","undefined","isNaN","Error","err","message","includes","validateTags","tags","description","validTags","invalidTags","i","length","tag","push","reason","console","warn","slice","join","log","getDerivedTags","derivedTags","startsWith","pathnameParts","split","curPathname","endsWith","addImplicitTags","staticGenerationStore","newTags","pagePath","urlPathname","Array","isArray","parsedPathname","URL","trackFetchMetric","ctx","requestEndedState","ended","NODE_ENV","fetchMetrics","dedupeFields","some","metric","every","field","end","Date","now","idx","nextFetchId","sort","a","b","aDur","start","bDur","createPatchedFetcher","originFetch","serverHooks","DynamicServerError","staticGenerationAsyncStorage","patched","input","init","url","Request","username","password","fetchUrl","href","fetchStart","method","toUpperCase","isInternal","next","internal","hideSpan","NEXT_OTEL_FETCH_DISABLED","trace","internalFetch","kind","CLIENT","spanName","filter","Boolean","attributes","hostname","port","getRequestMeta","getStore","isDraftMode","isRequestInput","value","revalidate","getNextField","curRevalidate","toString","implicitTags","fetchCacheMode","fetchCache","isUsingNoStore","isUnstableNoStore","_cache","cacheReason","_headers","initHeaders","get","Headers","hasUnCacheableHeader","isUnCacheableMethod","toLowerCase","autoNoCache","forceStatic","isCacheableRevalidate","cacheKey","incrementalCache","fetchCacheKey","error","fetchIdx","doOriginalFetch","isStale","cacheReasonOverride","requestInputFields","reqInput","reqOptions","body","_ogBody","signal","otherInput","clonedInit","fetchType","then","res","cacheStatus","status","bodyBuffer","Buffer","from","arrayBuffer","set","data","headers","Object","fromEntries","entries","response","Response","defineProperty","handleUnlock","Promise","resolve","isForegroundRevalidate","lock","entry","isOnDemandRevalidate","kindHint","softTags","isRevalidate","pendingRevalidates","pendingRevalidate","statusText","finally","catch","resData","isStaticGeneration","cache","dynamicUsageReason","dynamicUsageErr","dynamicUsageDescription","hasNextConfig","forceDynamic","revalidatedResult","pendingResponse","responses","__nextGetStaticStore","_nextOriginalFetch","patchFetch","options","globalThis","original"],"mappings":"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"}
|
|
@@ -39,7 +39,7 @@ export async function getRequestHandlers({ dir, port, isDev, server, hostname, m
|
|
|
39
39
|
export async function startServer(serverOptions) {
|
|
40
40
|
const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
|
|
41
41
|
let { port } = serverOptions;
|
|
42
|
-
process.title = `next-server (v${"14.2.
|
|
42
|
+
process.title = `next-server (v${"14.2.21"})`;
|
|
43
43
|
let handlersReady = ()=>{};
|
|
44
44
|
let handlersError = ()=>{};
|
|
45
45
|
let handlersPromise = new Promise((resolve, reject)=>{
|
package/dist/server/config.js
CHANGED
|
@@ -263,7 +263,7 @@ function assignDefaults(dir, userConfig, silent) {
|
|
|
263
263
|
..._configshared.defaultConfig,
|
|
264
264
|
...config
|
|
265
265
|
};
|
|
266
|
-
if (((_result_experimental = result.experimental) == null ? void 0 : _result_experimental.ppr) && !"14.2.
|
|
266
|
+
if (((_result_experimental = result.experimental) == null ? void 0 : _result_experimental.ppr) && !"14.2.21".includes("canary") && !process.env.__NEXT_TEST_MODE) {
|
|
267
267
|
throw new Error(`The experimental.ppr preview feature can only be enabled when using the latest canary version of Next.js. See more info here: https://nextjs.org/docs/messages/ppr-preview`);
|
|
268
268
|
}
|
|
269
269
|
if (result.output === "export") {
|
|
@@ -96,7 +96,7 @@ async function createHotReloaderTurbopack(opts, serverFields, distDir) {
|
|
|
96
96
|
}
|
|
97
97
|
const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
|
|
98
98
|
const hotReloaderSpan = (0, _trace.trace)("hot-reloader", undefined, {
|
|
99
|
-
version: "14.2.
|
|
99
|
+
version: "14.2.21"
|
|
100
100
|
});
|
|
101
101
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
|
102
102
|
// of the current `next dev` invocation.
|
|
@@ -265,7 +265,7 @@ class HotReloaderWebpack {
|
|
|
265
265
|
this.previewProps = previewProps;
|
|
266
266
|
this.rewrites = rewrites;
|
|
267
267
|
this.hotReloaderSpan = (0, _trace.trace)("hot-reloader", undefined, {
|
|
268
|
-
version: "14.2.
|
|
268
|
+
version: "14.2.21"
|
|
269
269
|
});
|
|
270
270
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
|
271
271
|
// of the current `next dev` invocation.
|
|
@@ -67,7 +67,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
67
67
|
return newObj;
|
|
68
68
|
}
|
|
69
69
|
function logStartInfo({ networkUrl, appUrl, envInfo, expFeatureInfo, maxExperimentalFeatures = Infinity }) {
|
|
70
|
-
_log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"14.2.
|
|
70
|
+
_log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"14.2.21"}`))}${process.env.TURBOPACK ? " (turbo)" : ""}`);
|
|
71
71
|
if (appUrl) {
|
|
72
72
|
_log.bootstrap(`- Local: ${appUrl}`);
|
|
73
73
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clones a response by teeing the body so we can return two independent
|
|
3
|
+
* ReadableStreams from it. This avoids the bug in the undici library around
|
|
4
|
+
* response cloning.
|
|
5
|
+
*
|
|
6
|
+
* After cloning, the original response's body will be consumed and closed.
|
|
7
|
+
*
|
|
8
|
+
* @see https://github.com/vercel/next.js/pull/73274
|
|
9
|
+
*
|
|
10
|
+
* @param original - The original response to clone.
|
|
11
|
+
* @returns A tuple containing two independent clones of the original response.
|
|
12
|
+
*/
|
|
13
|
+
export declare function cloneResponse(original: Response): [Response, Response];
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clones a response by teeing the body so we can return two independent
|
|
3
|
+
* ReadableStreams from it. This avoids the bug in the undici library around
|
|
4
|
+
* response cloning.
|
|
5
|
+
*
|
|
6
|
+
* After cloning, the original response's body will be consumed and closed.
|
|
7
|
+
*
|
|
8
|
+
* @see https://github.com/vercel/next.js/pull/73274
|
|
9
|
+
*
|
|
10
|
+
* @param original - The original response to clone.
|
|
11
|
+
* @returns A tuple containing two independent clones of the original response.
|
|
12
|
+
*/ "use strict";
|
|
13
|
+
Object.defineProperty(exports, "__esModule", {
|
|
14
|
+
value: true
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(exports, "cloneResponse", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function() {
|
|
19
|
+
return cloneResponse;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
function cloneResponse(original) {
|
|
23
|
+
// If the response has no body, then we can just return the original response
|
|
24
|
+
// twice because it's immutable.
|
|
25
|
+
if (!original.body) {
|
|
26
|
+
return [
|
|
27
|
+
original,
|
|
28
|
+
original
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
const [body1, body2] = original.body.tee();
|
|
32
|
+
const cloned1 = new Response(body1, {
|
|
33
|
+
status: original.status,
|
|
34
|
+
statusText: original.statusText,
|
|
35
|
+
headers: original.headers
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperty(cloned1, "url", {
|
|
38
|
+
value: original.url
|
|
39
|
+
});
|
|
40
|
+
const cloned2 = new Response(body2, {
|
|
41
|
+
status: original.status,
|
|
42
|
+
statusText: original.statusText,
|
|
43
|
+
headers: original.headers
|
|
44
|
+
});
|
|
45
|
+
Object.defineProperty(cloned2, "url", {
|
|
46
|
+
value: original.url
|
|
47
|
+
});
|
|
48
|
+
return [
|
|
49
|
+
cloned1,
|
|
50
|
+
cloned2
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
//# sourceMappingURL=clone-response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/server/lib/clone-response.ts"],"names":["cloneResponse","original","body","body1","body2","tee","cloned1","Response","status","statusText","headers","Object","defineProperty","value","url","cloned2"],"mappings":"AAAA;;;;;;;;;;;CAWC;;;;+BACeA;;;eAAAA;;;AAAT,SAASA,cAAcC,QAAkB;IAC9C,6EAA6E;IAC7E,gCAAgC;IAChC,IAAI,CAACA,SAASC,IAAI,EAAE;QAClB,OAAO;YAACD;YAAUA;SAAS;IAC7B;IAEA,MAAM,CAACE,OAAOC,MAAM,GAAGH,SAASC,IAAI,CAACG,GAAG;IAExC,MAAMC,UAAU,IAAIC,SAASJ,OAAO;QAClCK,QAAQP,SAASO,MAAM;QACvBC,YAAYR,SAASQ,UAAU;QAC/BC,SAAST,SAASS,OAAO;IAC3B;IAEAC,OAAOC,cAAc,CAACN,SAAS,OAAO;QACpCO,OAAOZ,SAASa,GAAG;IACrB;IAEA,MAAMC,UAAU,IAAIR,SAASH,OAAO;QAClCI,QAAQP,SAASO,MAAM;QACvBC,YAAYR,SAASQ,UAAU;QAC/BC,SAAST,SAASS,OAAO;IAC3B;IAEAC,OAAOC,cAAc,CAACG,SAAS,OAAO;QACpCF,OAAOZ,SAASa,GAAG;IACrB;IAEA,OAAO;QAACR;QAASS;KAAQ;AAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function createDedupeFetch(originalFetch: typeof fetch): (resource: URL | RequestInfo, options?: RequestInit) => Promise<Response>;
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Based on https://github.com/facebook/react/blob/d4e78c42a94be027b4dc7ed2659a5fddfbf9bd4e/packages/react/src/ReactFetch.js
|
|
3
|
+
*/ "use strict";
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
Object.defineProperty(exports, "createDedupeFetch", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function() {
|
|
10
|
+
return createDedupeFetch;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
14
|
+
const _cloneresponse = require("./clone-response");
|
|
15
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
16
|
+
if (typeof WeakMap !== "function") return null;
|
|
17
|
+
var cacheBabelInterop = new WeakMap();
|
|
18
|
+
var cacheNodeInterop = new WeakMap();
|
|
19
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
20
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
21
|
+
})(nodeInterop);
|
|
22
|
+
}
|
|
23
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
24
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
25
|
+
return obj;
|
|
26
|
+
}
|
|
27
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
28
|
+
return {
|
|
29
|
+
default: obj
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
33
|
+
if (cache && cache.has(obj)) {
|
|
34
|
+
return cache.get(obj);
|
|
35
|
+
}
|
|
36
|
+
var newObj = {
|
|
37
|
+
__proto__: null
|
|
38
|
+
};
|
|
39
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
40
|
+
for(var key in obj){
|
|
41
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
42
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
43
|
+
if (desc && (desc.get || desc.set)) {
|
|
44
|
+
Object.defineProperty(newObj, key, desc);
|
|
45
|
+
} else {
|
|
46
|
+
newObj[key] = obj[key];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
newObj.default = obj;
|
|
51
|
+
if (cache) {
|
|
52
|
+
cache.set(obj, newObj);
|
|
53
|
+
}
|
|
54
|
+
return newObj;
|
|
55
|
+
}
|
|
56
|
+
const simpleCacheKey = '["GET",[],null,"follow",null,null,null,null]' // generateCacheKey(new Request('https://blank'));
|
|
57
|
+
;
|
|
58
|
+
function generateCacheKey(request) {
|
|
59
|
+
// We pick the fields that goes into the key used to dedupe requests.
|
|
60
|
+
// We don't include the `cache` field, because we end up using whatever
|
|
61
|
+
// caching resulted from the first request.
|
|
62
|
+
// Notably we currently don't consider non-standard (or future) options.
|
|
63
|
+
// This might not be safe. TODO: warn for non-standard extensions differing.
|
|
64
|
+
// IF YOU CHANGE THIS UPDATE THE simpleCacheKey ABOVE.
|
|
65
|
+
return JSON.stringify([
|
|
66
|
+
request.method,
|
|
67
|
+
Array.from(request.headers.entries()),
|
|
68
|
+
request.mode,
|
|
69
|
+
request.redirect,
|
|
70
|
+
request.credentials,
|
|
71
|
+
request.referrer,
|
|
72
|
+
request.referrerPolicy,
|
|
73
|
+
request.integrity
|
|
74
|
+
]);
|
|
75
|
+
}
|
|
76
|
+
function createDedupeFetch(originalFetch) {
|
|
77
|
+
const getCacheEntries = _react.cache(// eslint-disable-next-line @typescript-eslint/no-unused-vars -- url is the cache key
|
|
78
|
+
(url)=>[]);
|
|
79
|
+
return function dedupeFetch(resource, options) {
|
|
80
|
+
if (options && options.signal) {
|
|
81
|
+
// If we're passed a signal, then we assume that
|
|
82
|
+
// someone else controls the lifetime of this object and opts out of
|
|
83
|
+
// caching. It's effectively the opt-out mechanism.
|
|
84
|
+
// Ideally we should be able to check this on the Request but
|
|
85
|
+
// it always gets initialized with its own signal so we don't
|
|
86
|
+
// know if it's supposed to override - unless we also override the
|
|
87
|
+
// Request constructor.
|
|
88
|
+
return originalFetch(resource, options);
|
|
89
|
+
}
|
|
90
|
+
// Normalize the Request
|
|
91
|
+
let url;
|
|
92
|
+
let cacheKey;
|
|
93
|
+
if (typeof resource === "string" && !options) {
|
|
94
|
+
// Fast path.
|
|
95
|
+
cacheKey = simpleCacheKey;
|
|
96
|
+
url = resource;
|
|
97
|
+
} else {
|
|
98
|
+
// Normalize the request.
|
|
99
|
+
// if resource is not a string or a URL (its an instance of Request)
|
|
100
|
+
// then do not instantiate a new Request but instead
|
|
101
|
+
// reuse the request as to not disturb the body in the event it's a ReadableStream.
|
|
102
|
+
const request = typeof resource === "string" || resource instanceof URL ? new Request(resource, options) : resource;
|
|
103
|
+
if (request.method !== "GET" && request.method !== "HEAD" || request.keepalive) {
|
|
104
|
+
// We currently don't dedupe requests that might have side-effects. Those
|
|
105
|
+
// have to be explicitly cached. We assume that the request doesn't have a
|
|
106
|
+
// body if it's GET or HEAD.
|
|
107
|
+
// keepalive gets treated the same as if you passed a custom cache signal.
|
|
108
|
+
return originalFetch(resource, options);
|
|
109
|
+
}
|
|
110
|
+
cacheKey = generateCacheKey(request);
|
|
111
|
+
url = request.url;
|
|
112
|
+
}
|
|
113
|
+
const cacheEntries = getCacheEntries(url);
|
|
114
|
+
for(let i = 0, j = cacheEntries.length; i < j; i += 1){
|
|
115
|
+
const [key, promise] = cacheEntries[i];
|
|
116
|
+
if (key === cacheKey) {
|
|
117
|
+
return promise.then(()=>{
|
|
118
|
+
const response = cacheEntries[i][2];
|
|
119
|
+
if (!response) throw new Error("No cached response");
|
|
120
|
+
// We're cloning the response using this utility because there exists
|
|
121
|
+
// a bug in the undici library around response cloning. See the
|
|
122
|
+
// following pull request for more details:
|
|
123
|
+
// https://github.com/vercel/next.js/pull/73274
|
|
124
|
+
const [cloned1, cloned2] = (0, _cloneresponse.cloneResponse)(response);
|
|
125
|
+
cacheEntries[i][2] = cloned2;
|
|
126
|
+
return cloned1;
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// We pass the original arguments here in case normalizing the Request
|
|
131
|
+
// doesn't include all the options in this environment. We also pass a
|
|
132
|
+
// signal down to the original fetch as to bypass the underlying React fetch
|
|
133
|
+
// cache.
|
|
134
|
+
const controller = new AbortController();
|
|
135
|
+
const promise = originalFetch(resource, {
|
|
136
|
+
...options,
|
|
137
|
+
signal: controller.signal
|
|
138
|
+
});
|
|
139
|
+
const entry = [
|
|
140
|
+
cacheKey,
|
|
141
|
+
promise,
|
|
142
|
+
null
|
|
143
|
+
];
|
|
144
|
+
cacheEntries.push(entry);
|
|
145
|
+
return promise.then((response)=>{
|
|
146
|
+
// We're cloning the response using this utility because there exists
|
|
147
|
+
// a bug in the undici library around response cloning. See the
|
|
148
|
+
// following pull request for more details:
|
|
149
|
+
// https://github.com/vercel/next.js/pull/73274
|
|
150
|
+
const [cloned1, cloned2] = (0, _cloneresponse.cloneResponse)(response);
|
|
151
|
+
entry[2] = cloned2;
|
|
152
|
+
return cloned1;
|
|
153
|
+
});
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
//# sourceMappingURL=dedupe-fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/server/lib/dedupe-fetch.ts"],"names":["createDedupeFetch","simpleCacheKey","generateCacheKey","request","JSON","stringify","method","Array","from","headers","entries","mode","redirect","credentials","referrer","referrerPolicy","integrity","originalFetch","getCacheEntries","React","cache","url","dedupeFetch","resource","options","signal","cacheKey","URL","Request","keepalive","cacheEntries","i","j","length","key","promise","then","response","Error","cloned1","cloned2","cloneResponse","controller","AbortController","entry","push"],"mappings":"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"}
|