@opennextjs/cloudflare 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/cli/args.d.ts +2 -0
  2. package/dist/cli/args.js +37 -19
  3. package/dist/cli/build/build.d.ts +2 -2
  4. package/dist/cli/build/build.js +3 -0
  5. package/dist/cli/build/open-next/compile-images.d.ts +5 -0
  6. package/dist/cli/build/open-next/compile-images.js +29 -0
  7. package/dist/cli/build/open-next/compile-init.js +0 -21
  8. package/dist/cli/build/open-next/createServerBundle.js +0 -1
  9. package/dist/cli/build/patches/plugins/next-server.d.ts +0 -2
  10. package/dist/cli/build/patches/plugins/next-server.js +0 -19
  11. package/dist/cli/build/utils/workerd.js +3 -1
  12. package/dist/cli/templates/images.d.ts +24 -0
  13. package/dist/cli/templates/images.js +82 -0
  14. package/dist/cli/templates/init.d.ts +0 -17
  15. package/dist/cli/templates/init.js +0 -76
  16. package/dist/cli/templates/worker.js +3 -1
  17. package/package.json +2 -2
  18. package/dist/api/durable-objects/bucket-cache-purge.spec.d.ts +0 -1
  19. package/dist/api/durable-objects/bucket-cache-purge.spec.js +0 -121
  20. package/dist/api/durable-objects/queue.spec.d.ts +0 -1
  21. package/dist/api/durable-objects/queue.spec.js +0 -287
  22. package/dist/api/durable-objects/sharded-tag-cache.spec.d.ts +0 -1
  23. package/dist/api/durable-objects/sharded-tag-cache.spec.js +0 -37
  24. package/dist/api/overrides/queue/memory-queue.spec.d.ts +0 -1
  25. package/dist/api/overrides/queue/memory-queue.spec.js +0 -76
  26. package/dist/api/overrides/queue/queue-cache.spec.d.ts +0 -1
  27. package/dist/api/overrides/queue/queue-cache.spec.js +0 -92
  28. package/dist/api/overrides/tag-cache/do-sharded-tag-cache.spec.d.ts +0 -1
  29. package/dist/api/overrides/tag-cache/do-sharded-tag-cache.spec.js +0 -413
  30. package/dist/api/overrides/tag-cache/tag-cache-filter.spec.d.ts +0 -1
  31. package/dist/api/overrides/tag-cache/tag-cache-filter.spec.js +0 -97
  32. package/dist/cli/build/patches/ast/patch-vercel-og-library.spec.d.ts +0 -1
  33. package/dist/cli/build/patches/ast/patch-vercel-og-library.spec.js +0 -50
  34. package/dist/cli/build/patches/ast/vercel-og.spec.d.ts +0 -1
  35. package/dist/cli/build/patches/ast/vercel-og.spec.js +0 -22
  36. package/dist/cli/build/patches/ast/webpack-runtime.spec.d.ts +0 -1
  37. package/dist/cli/build/patches/ast/webpack-runtime.spec.js +0 -102
  38. package/dist/cli/build/patches/plugins/instrumentation.spec.d.ts +0 -1
  39. package/dist/cli/build/patches/plugins/instrumentation.spec.js +0 -91
  40. package/dist/cli/build/patches/plugins/next-server.spec.d.ts +0 -1
  41. package/dist/cli/build/patches/plugins/next-server.spec.js +0 -216
  42. package/dist/cli/build/patches/plugins/patch-depd-deprecations.spec.d.ts +0 -1
  43. package/dist/cli/build/patches/plugins/patch-depd-deprecations.spec.js +0 -29
  44. package/dist/cli/build/patches/plugins/res-revalidate.spec.d.ts +0 -1
  45. package/dist/cli/build/patches/plugins/res-revalidate.spec.js +0 -99
  46. package/dist/cli/build/patches/plugins/use-cache.spec.d.ts +0 -1
  47. package/dist/cli/build/patches/plugins/use-cache.spec.js +0 -101
  48. package/dist/cli/build/utils/extract-project-env-vars.spec.d.ts +0 -1
  49. package/dist/cli/build/utils/extract-project-env-vars.spec.js +0 -67
  50. package/dist/cli/build/utils/workerd.spec.d.ts +0 -1
  51. package/dist/cli/build/utils/workerd.spec.js +0 -188
  52. package/dist/cli/commands/populate-cache.spec.d.ts +0 -1
  53. package/dist/cli/commands/populate-cache.spec.js +0 -61
@@ -1,102 +0,0 @@
1
- import { patchCode } from "@opennextjs/aws/build/patch/astCodePatcher.js";
2
- import { describe, expect, test } from "vitest";
3
- import { buildMultipleChunksRule, singleChunkRule } from "./webpack-runtime.js";
4
- describe("webpack runtime", () => {
5
- describe("multiple chunks", () => {
6
- test("patch runtime", () => {
7
- const code = `
8
- /******/ // require() chunk loading for javascript
9
- /******/ __webpack_require__.f.require = (chunkId, promises) => {
10
- /******/ // "1" is the signal for "already loaded"
11
- /******/ if (!installedChunks[chunkId]) {
12
- /******/ if (658 != chunkId) {
13
- /******/ installChunk(require("./chunks/" + __webpack_require__.u(chunkId)));
14
- /******/
15
- } else installedChunks[chunkId] = 1;
16
- /******/
17
- }
18
- /******/
19
- };
20
- `;
21
- expect(patchCode(code, buildMultipleChunksRule([1, 2, 3]))).toMatchInlineSnapshot(`
22
- "/******/ // require() chunk loading for javascript
23
- /******/ __webpack_require__.f.require = (chunkId, _) => {
24
- if (!installedChunks[chunkId]) {
25
- switch (chunkId) {
26
- case 1: installChunk(require("./chunks/1.js")); break;
27
- case 2: installChunk(require("./chunks/2.js")); break;
28
- case 3: installChunk(require("./chunks/3.js")); break;
29
- case 658: installedChunks[chunkId] = 1; break;
30
- default: throw new Error(\`Unknown chunk \${chunkId}\`);
31
- }
32
- }
33
- }
34
- ;
35
- "
36
- `);
37
- });
38
- test("patch minified runtime", () => {
39
- const code = `
40
- t.f.require=(o,n)=>{e[o]||(658!=o?r(require("./chunks/"+t.u(o))):e[o]=1)}
41
- `;
42
- expect(patchCode(code, buildMultipleChunksRule([1, 2, 3]))).toMatchInlineSnapshot(`
43
- "t.f.require=(o, _) => {
44
- if (!e[o]) {
45
- switch (o) {
46
- case 1: r(require("./chunks/1.js")); break;
47
- case 2: r(require("./chunks/2.js")); break;
48
- case 3: r(require("./chunks/3.js")); break;
49
- case 658: e[o] = 1; break;
50
- default: throw new Error(\`Unknown chunk \${o}\`);
51
- }
52
- }
53
- }
54
-
55
- "
56
- `);
57
- });
58
- });
59
- describe("single chunk", () => {
60
- test("patch runtime", () => {
61
- const code = `
62
- /******/ // require() chunk loading for javascript
63
- /******/ __webpack_require__.f.require = (chunkId, promises) => {
64
- /******/ // "1" is the signal for "already loaded"
65
- /******/ if(!installedChunks[chunkId]) {
66
- /******/ if(710 == chunkId) {
67
- /******/ installChunk(require("./chunks/" + __webpack_require__.u(chunkId)));
68
- /******/ } else installedChunks[chunkId] = 1;
69
- /******/ }
70
- /******/ };
71
- `;
72
- expect(patchCode(code, singleChunkRule)).toMatchInlineSnapshot(`
73
- "/******/ // require() chunk loading for javascript
74
- /******/ __webpack_require__.f.require = (chunkId, _) => {
75
- if (!installedChunks[chunkId]) {
76
- try {
77
- installChunk(require("./chunks/710.js"));
78
- } catch {}
79
- }
80
- }
81
- ;
82
- "
83
- `);
84
- });
85
- test("patch minified runtime", () => {
86
- const code = `
87
- o.f.require=(t,a)=>{e[t]||(710==t?r(require("./chunks/"+o.u(t))):e[t]=1)}
88
- `;
89
- expect(patchCode(code, singleChunkRule)).toMatchInlineSnapshot(`
90
- "o.f.require=(t, _) => {
91
- if (!e[t]) {
92
- try {
93
- r(require("./chunks/710.js"));
94
- } catch {}
95
- }
96
- }
97
-
98
- "
99
- `);
100
- });
101
- });
102
- });
@@ -1,91 +0,0 @@
1
- import { patchCode } from "@opennextjs/aws/build/patch/astCodePatcher.js";
2
- import { describe, expect, test } from "vitest";
3
- import { getNext14Rule, getNext15Rule } from "./instrumentation.js";
4
- describe("LoadInstrumentationModule (Next15)", () => {
5
- const code = `
6
- export default class NextNodeServer extends BaseServer {
7
- protected async loadInstrumentationModule() {
8
- if (!this.serverOptions.dev) {
9
- try {
10
- this.instrumentation = await dynamicRequire(
11
- resolve(
12
- this.serverOptions.dir || '.',
13
- this.serverOptions.conf.distDir!,
14
- 'server',
15
- INSTRUMENTATION_HOOK_FILENAME
16
- )
17
- )
18
- } catch (err: any) {
19
- if (err.code !== 'MODULE_NOT_FOUND') {
20
- throw new Error(
21
- 'An error occurred while loading the instrumentation hook',
22
- { cause: err }
23
- )
24
- }
25
- }
26
- }
27
- return this.instrumentation
28
- }
29
- }
30
- `;
31
- test("patch when an instrumentation file is not present", async () => {
32
- expect(patchCode(code, getNext15Rule(null))).toMatchInlineSnapshot(`
33
- "export default class NextNodeServer extends BaseServer {
34
- async loadInstrumentationModule() { this.instrumentation = null; return this.instrumentation; }
35
- }
36
- "
37
- `);
38
- });
39
- test("patch when an instrumentation file is present", async () => {
40
- expect(patchCode(code, getNext15Rule("/_file_exists_/instrumentation.js"))).toMatchInlineSnapshot(`
41
- "export default class NextNodeServer extends BaseServer {
42
- async loadInstrumentationModule() { this.instrumentation = require('/_file_exists_/instrumentation.js'); return this.instrumentation; }
43
- }
44
- "
45
- `);
46
- });
47
- });
48
- describe("prepareImpl (Next14)", () => {
49
- const code = `
50
- export default class NextNodeServer extends BaseServer {
51
- async prepareImpl() {
52
- await super.prepareImpl();
53
- if (!this.serverOptions.dev && this.nextConfig.experimental.instrumentationHook) {
54
- try {
55
- const instrumentationHook = await dynamicRequire((0, _path.resolve)(this.serverOptions.dir || ".", this.serverOptions.conf.distDir, "server", _constants1.INSTRUMENTATION_HOOK_FILENAME));
56
- await (instrumentationHook.register == null ? void 0 : instrumentationHook.register.call(instrumentationHook));
57
- } catch (err2) {
58
- if (err2.code !== "MODULE_NOT_FOUND") {
59
- err2.message = \`An error occurred while loading instrumentation hook: \${err2.message}\`;
60
- throw err2;
61
- }
62
- }
63
- }
64
- }
65
- }
66
- `;
67
- test("patch when an instrumentation file is not present", async () => {
68
- expect(patchCode(code, getNext14Rule(null))).toMatchInlineSnapshot(`
69
- "export default class NextNodeServer extends BaseServer {
70
- async prepareImpl() {
71
- await super.prepareImpl();
72
- const instrumentationHook = {};
73
- await (instrumentationHook.register == null ? void 0 : instrumentationHook.register.call(instrumentationHook));
74
- }
75
- }
76
- "
77
- `);
78
- });
79
- test("patch when an instrumentation file is present", async () => {
80
- expect(patchCode(code, getNext14Rule("/_file_exists_/instrumentation.js"))).toMatchInlineSnapshot(`
81
- "export default class NextNodeServer extends BaseServer {
82
- async prepareImpl() {
83
- await super.prepareImpl();
84
- const instrumentationHook = require('/_file_exists_/instrumentation.js');
85
- await (instrumentationHook.register == null ? void 0 : instrumentationHook.register.call(instrumentationHook));
86
- }
87
- }
88
- "
89
- `);
90
- });
91
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,216 +0,0 @@
1
- import { describe, expect, test } from "vitest";
2
- import { computePatchDiff } from "../../utils/test-patch.js";
3
- import { buildIdRule, createCacheHandlerRule, createComposableCacheHandlersRule, createMiddlewareManifestRule, } from "./next-server.js";
4
- describe("Next Server", () => {
5
- const nextServerCode = `
6
- class NextNodeServer extends _baseserver.default {
7
- constructor(options){
8
- // Initialize super class
9
- super(options);
10
- this.handleNextImageRequest = async (req, res, parsedUrl) => { /* ... */ };
11
- }
12
- async handleUpgrade() {
13
- // The web server does not support web sockets, it's only used for HMR in
14
- // development.
15
- }
16
- loadEnvConfig({ dev, forceReload, silent }) {
17
- (0, _env.loadEnvConfig)(this.dir, dev, silent ? {
18
- info: ()=>{},
19
- error: ()=>{}
20
- } : _log, forceReload);
21
- }
22
- async hasPage(pathname) {
23
- var _this_nextConfig_i18n;
24
- return !!(0, _require.getMaybePagePath)(pathname, this.distDir, (_this_nextConfig_i18n = this.nextConfig.i18n) == null ? void 0 : _this_nextConfig_i18n.locales, this.enabledDirectories.app);
25
- }
26
- getBuildId() {
27
- const buildIdFile = (0, _path.join)(this.distDir, _constants.BUILD_ID_FILE);
28
- try {
29
- return _fs.default.readFileSync(buildIdFile, "utf8").trim();
30
- } catch (err) {
31
- if (err.code === "ENOENT") {
32
- throw new Error(\`Could not find a production build in the '\${this.distDir}' directory. Try building your app with 'next build' before starting the production server. https://nextjs.org/docs/messages/production-start-no-build-id\`);
33
- }
34
- throw err;
35
- }
36
- }
37
- getMiddlewareManifest() {
38
- if (this.minimalMode) return null;
39
- const manifest = require(this.middlewareManifestPath);
40
- return manifest;
41
- }
42
- async loadCustomCacheHandlers() {
43
- const { cacheHandlers } = this.nextConfig.experimental;
44
- if (!cacheHandlers) return;
45
- // If we've already initialized the cache handlers interface, don't do it
46
- // again.
47
- if (!(0, _handlers.initializeCacheHandlers)()) return;
48
- for (const [kind, handler] of Object.entries(cacheHandlers)){
49
- if (!handler) continue;
50
- (0, _handlers.setCacheHandler)(kind, (0, _interopdefault.interopDefault)(await dynamicImportEsmDefault((0, _formatdynamicimportpath.formatDynamicImportPath)(this.distDir, handler))));
51
- }
52
- }
53
- async getIncrementalCache({ requestHeaders, requestProtocol }) {
54
- const dev = !!this.renderOpts.dev;
55
- let CacheHandler;
56
- const { cacheHandler } = this.nextConfig;
57
- if (cacheHandler) {
58
- CacheHandler = (0, _interopdefault.interopDefault)(await dynamicImportEsmDefault((0, _formatdynamicimportpath.formatDynamicImportPath)(this.distDir, cacheHandler)));
59
- }
60
- await this.loadCustomCacheHandlers();
61
- // incremental-cache is request specific
62
- // although can have shared caches in module scope
63
- // per-cache handler
64
- return new _incrementalcache.IncrementalCache({
65
- fs: this.getCacheFilesystem(),
66
- dev,
67
- requestHeaders,
68
- requestProtocol,
69
- allowedRevalidateHeaderKeys: this.nextConfig.experimental.allowedRevalidateHeaderKeys,
70
- minimalMode: this.minimalMode,
71
- serverDistDir: this.serverDistDir,
72
- fetchCacheKeyPrefix: this.nextConfig.experimental.fetchCacheKeyPrefix,
73
- maxMemoryCacheSize: this.nextConfig.cacheMaxMemorySize,
74
- flushToDisk: !this.minimalMode && this.nextConfig.experimental.isrFlushToDisk,
75
- getPrerenderManifest: ()=>this.getPrerenderManifest(),
76
- CurCacheHandler: CacheHandler
77
- });
78
- }
79
- getEnabledDirectories(dev) {
80
- const dir = dev ? this.dir : this.serverDistDir;
81
- return {
82
- app: (0, _findpagesdir.findDir)(dir, "app") ? true : false,
83
- pages: (0, _findpagesdir.findDir)(dir, "pages") ? true : false
84
- };
85
- }
86
- // ...
87
- }`;
88
- test("build ID", () => {
89
- expect(computePatchDiff("next-server.js", nextServerCode, buildIdRule)).toMatchInlineSnapshot(`
90
- "Index: next-server.js
91
- ===================================================================
92
- --- next-server.js
93
- +++ next-server.js
94
- @@ -1,5 +1,4 @@
95
- -
96
- class NextNodeServer extends _baseserver.default {
97
- constructor(options){
98
- // Initialize super class
99
- super(options);
100
- @@ -19,18 +18,10 @@
101
- var _this_nextConfig_i18n;
102
- return !!(0, _require.getMaybePagePath)(pathname, this.distDir, (_this_nextConfig_i18n = this.nextConfig.i18n) == null ? void 0 : _this_nextConfig_i18n.locales, this.enabledDirectories.app);
103
- }
104
- getBuildId() {
105
- - const buildIdFile = (0, _path.join)(this.distDir, _constants.BUILD_ID_FILE);
106
- - try {
107
- - return _fs.default.readFileSync(buildIdFile, "utf8").trim();
108
- - } catch (err) {
109
- - if (err.code === "ENOENT") {
110
- - throw new Error(\`Could not find a production build in the '\${this.distDir}' directory. Try building your app with 'next build' before starting the production server. https://nextjs.org/docs/messages/production-start-no-build-id\`);
111
- - }
112
- - throw err;
113
- - }
114
- - }
115
- + return process.env.NEXT_BUILD_ID;
116
- +}
117
- getMiddlewareManifest() {
118
- if (this.minimalMode) return null;
119
- const manifest = require(this.middlewareManifestPath);
120
- return manifest;
121
- "
122
- `);
123
- });
124
- test("middleware manifest", () => {
125
- expect(computePatchDiff("next-server.js", nextServerCode, createMiddlewareManifestRule("manifest")))
126
- .toMatchInlineSnapshot(`
127
- "Index: next-server.js
128
- ===================================================================
129
- --- next-server.js
130
- +++ next-server.js
131
- @@ -1,5 +1,4 @@
132
- -
133
- class NextNodeServer extends _baseserver.default {
134
- constructor(options){
135
- // Initialize super class
136
- super(options);
137
- @@ -30,12 +29,10 @@
138
- throw err;
139
- }
140
- }
141
- getMiddlewareManifest() {
142
- - if (this.minimalMode) return null;
143
- - const manifest = require(this.middlewareManifestPath);
144
- - return manifest;
145
- - }
146
- + return "manifest";
147
- +}
148
- async loadCustomCacheHandlers() {
149
- const { cacheHandlers } = this.nextConfig.experimental;
150
- if (!cacheHandlers) return;
151
- // If we've already initialized the cache handlers interface, don't do it
152
- "
153
- `);
154
- });
155
- test("cache handler", () => {
156
- expect(computePatchDiff("next-server.js", nextServerCode, createCacheHandlerRule("manifest")))
157
- .toMatchInlineSnapshot(`
158
- "Index: next-server.js
159
- ===================================================================
160
- --- next-server.js
161
- +++ next-server.js
162
- @@ -1,5 +1,4 @@
163
- -
164
- class NextNodeServer extends _baseserver.default {
165
- constructor(options){
166
- // Initialize super class
167
- super(options);
168
- @@ -48,9 +47,10 @@
169
- }
170
- async getIncrementalCache({ requestHeaders, requestProtocol }) {
171
- const dev = !!this.renderOpts.dev;
172
- let CacheHandler;
173
- - const { cacheHandler } = this.nextConfig;
174
- + const cacheHandler = null;
175
- +CacheHandler = require('manifest').default;
176
- if (cacheHandler) {
177
- CacheHandler = (0, _interopdefault.interopDefault)(await dynamicImportEsmDefault((0, _formatdynamicimportpath.formatDynamicImportPath)(this.distDir, cacheHandler)));
178
- }
179
- await this.loadCustomCacheHandlers();
180
- "
181
- `);
182
- });
183
- test("composable cache handler", () => {
184
- expect(computePatchDiff("next-server.js", nextServerCode, createComposableCacheHandlersRule("manifest")))
185
- .toMatchInlineSnapshot(`
186
- "Index: next-server.js
187
- ===================================================================
188
- --- next-server.js
189
- +++ next-server.js
190
- @@ -1,5 +1,4 @@
191
- -
192
- class NextNodeServer extends _baseserver.default {
193
- constructor(options){
194
- // Initialize super class
195
- super(options);
196
- @@ -35,9 +34,15 @@
197
- const manifest = require(this.middlewareManifestPath);
198
- return manifest;
199
- }
200
- async loadCustomCacheHandlers() {
201
- - const { cacheHandlers } = this.nextConfig.experimental;
202
- + const cacheHandlers = null;
203
- +const handlersSymbol = Symbol.for('@next/cache-handlers');
204
- +const handlersMapSymbol = Symbol.for('@next/cache-handlers-map');
205
- +const handlersSetSymbol = Symbol.for('@next/cache-handlers-set');
206
- +globalThis[handlersMapSymbol] = new Map();
207
- +globalThis[handlersMapSymbol].set("default", require('manifest').default);
208
- +globalThis[handlersSetSymbol] = new Set(globalThis[handlersMapSymbol].values());
209
- if (!cacheHandlers) return;
210
- // If we've already initialized the cache handlers interface, don't do it
211
- // again.
212
- if (!(0, _handlers.initializeCacheHandlers)()) return;
213
- "
214
- `);
215
- });
216
- });
@@ -1,29 +0,0 @@
1
- import { patchCode } from "@opennextjs/aws/build/patch/astCodePatcher.js";
2
- import { describe, expect, test } from "vitest";
3
- import { rule } from "./patch-depd-deprecations.js";
4
- describe("patchDepdDeprecations", () => {
5
- test("patch", () => {
6
- const code = `
7
- function prepareObjectStackTrace(e,t){
8
- return t
9
- }
10
- function wrapfunction(fn,message){
11
- if(typeof fn!=="function"){
12
- throw new TypeError("argument fn must be a function")
13
- }
14
- var args=createArgumentsString(fn.length);
15
- var deprecate=this;
16
- var stack=getStack();
17
- var site=callSiteLocation(stack[1]);
18
- site.name=fn.name;
19
- var deprecatedfn=eval("(function ("+args+") {\\n"+'"use strict"\\n'+"log.call(deprecate, message, site)\\n"+"return fn.apply(this, arguments)\\n"+"})");
20
- return deprecatedfn;
21
- }`;
22
- expect(patchCode(code, rule)).toMatchInlineSnapshot(`
23
- "function prepareObjectStackTrace(e,t){
24
- return t
25
- }
26
- function wrapfunction(fn, message) { if(typeof fn !== 'function') throw new Error("argument fn must be a function"); return function deprecated_fn(...args) { console.warn(message); return fn(...args); } }"
27
- `);
28
- });
29
- });
@@ -1,99 +0,0 @@
1
- import { patchCode } from "@opennextjs/aws/build/patch/astCodePatcher.js";
2
- import { describe, expect, test } from "vitest";
3
- import { computePatchDiff } from "../../utils/test-patch.js";
4
- import { rule } from "./res-revalidate.js";
5
- const minifiedApiPageRuntimeCode = `var r=/(?:^|,)\\s*?no-cache\\s*?(?:,|$)/;function t(e){var r=e&&Date.parse(e);return"number"==typeof r?r:NaN}e.exports=function(e,n){var o=e["if-modified-since"],i=e["if-none-match"];if(!o&&!i)return!1;var a=e["cache-control"];if(a&&r.test(a))return!1;if(i&&"*"!==i){var s=n.etag;if(!s)return!1;for(var d=!0,u=function(e){for(var r=0,t=[],n=0,o=0,i=e.length;o<i;o++)switch(e.charCodeAt(o)){case 32:n===r&&(n=r=o+1);break;case 44:t.push(e.substring(n,r)),n=r=o+1;break;default:r=o+1}return t.push(e.substring(n,r)),t}(i),l=0;l<u.length;l++){var p=u[l];if(p===s||p==="W/"+s||"W/"+p===s){d=!1;break}}if(d)return!1}if(o){var c=n["last-modified"];if(!c||!(t(c)<=t(o)))return!1}return!0}}},t={};function n(e){var o=t[e];if(void 0!==o)return o.exports;var i=t[e]={exports:{}},a=!0;try{r[e](i,i.exports,n),a=!1}finally{a&&delete t[e]}return i.exports}n.ab=__dirname+"/";var o=n(695);e.exports=o})()},"./dist/esm/server/crypto-utils.js":(e,r,t)=>{"use strict";t.r(r),t.d(r,{decryptWithSecret:()=>s,encryptWithSecret:()=>a});let n=require("crypto");var o=/*#__PURE__*/t.n(n);let i="aes-256-gcm";function a(e,r){let t=o().randomBytes(16),n=o().randomBytes(64),a=o().pbkdf2Sync(e,n,1e5,32,"sha512"),s=o().createCipheriv(i,a,t),d=Buffer.concat([s.update(r,"utf8"),s.final()]),u=s.getAuthTag();return Buffer.concat([n,t,u,d]).toString("hex")}function s(e,r){let t=Buffer.from(r,"hex"),n=t.slice(0,64),a=t.slice(64,80),s=t.slice(80,96),d=t.slice(96),u=o().pbkdf2Sync(e,n,1e5,32,"sha512"),l=o().createDecipheriv(i,u,a);return l.setAuthTag(s),l.update(d)+l.final("utf8")}},"next/dist/compiled/jsonwebtoken":e=>{"use strict";e.exports=require("next/dist/compiled/jsonwebtoken")},"next/dist/compiled/raw-body":e=>{"use strict";e.exports=require("next/dist/compiled/raw-body")},querystring:e=>{"use strict";e.exports=require("querystring")}},r={};function t(n){var o=r[n];if(void 0!==o)return o.exports;var i=r[n]={exports:{}};return e[n](i,i.exports,t),i.exports}t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};(()=>{"use strict";t.r(n),t.d(n,{PagesAPIRouteModule:()=>z,default:()=>U});class e{static get(e,r,t){let n=Reflect.get(e,r,t);return"function"==typeof n?n.bind(e):n}static set(e,r,t,n){return Reflect.set(e,r,t,n)}static has(e,r){return Reflect.has(e,r)}static deleteProperty(e,r){return Reflect.deleteProperty(e,r)}}class r extends Error{constructor(){super("Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers")}static callable(){throw new r}}class o extends Headers{constructor(r){super(),this.headers=new Proxy(r,{get(t,n,o){if("symbol"==typeof n)return e.get(t,n,o);let i=n.toLowerCase(),a=Object.keys(r).find(e=>e.toLowerCase()===i);if(void 0!==a)return e.get(t,a,o)},set(t,n,o,i){if("symbol"==typeof n)return e.set(t,n,o,i);let a=n.toLowerCase(),s=Object.keys(r).find(e=>e.toLowerCase()===a);return e.set(t,s??n,o,i)},has(t,n){if("symbol"==typeof n)return e.has(t,n);let o=n.toLowerCase(),i=Object.keys(r).find(e=>e.toLowerCase()===o);return void 0!==i&&e.has(t,i)},deleteProperty(t,n){if("symbol"==typeof n)return e.deleteProperty(t,n);let o=n.toLowerCase(),i=Object.keys(r).find(e=>e.toLowerCase()===o);return void 0===i||e.deleteProperty(t,i)}})}static seal(t){return new Proxy(t,{get(t,n,o){switch(n){case"append":case"delete":case"set":return r.callable;default:return e.get(t,n,o)}}})}merge(e){return Array.isArray(e)?e.join(", "):e}static from(e){return e instanceof Headers?e:new o(e)}append(e,r){let t=this.headers[e];"string"==typeof t?this.headers[e]=[t,r]:Array.isArray(t)?t.push(r):this.headers[e]=r}delete(e){delete this.headers[e]}get(e){let r=this.headers[e];return void 0!==r?this.merge(r):null}has(e){return void 0!==this.headers[e]}set(e,r){this.headers[e]=r}forEach(e,r){for(let[t,n]of this.entries())e.call(r,n,t,this)}*entries(){for(let e of Object.keys(this.headers)){let r=e.toLowerCase(),t=this.get(r);yield[r,t]}}*keys(){for(let e of Object.keys(this.headers)){let r=e.toLowerCase();yield r}}*values(){for(let e of Object.keys(this.headers)){let r=this.get(e);yield r}}[Symbol.iterator](){return this.entries()}}let i="x-prerender-revalidate",a="x-prerender-revalidate-if-generated",s={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"};({...s,GROUP:{builtinReact:[s.reactServerComponents,s.actionBrowser],serverOnly:[s.reactServerComponents,s.actionBrowser,s.instrument,s.middleware],neutralTarget:[s.apiNode,s.apiEdge],clientOnly:[s.serverSideRendering,s.appPagesBrowser],bundled:[s.reactServerComponents,s.actionBrowser,s.serverSideRendering,s.appPagesBrowser,s.shared,s.instrument,s.middleware],appPages:[s.reactServerComponents,s.serverSideRendering,s.appPagesBrowser,s.actionBrowser]}});let d=require("next/dist/server/lib/trace/tracer");var u=/*#__PURE__*/function(e){return e.handleRequest="BaseServer.handleRequest",e.run="BaseServer.run",e.pipe="BaseServer.pipe",e.getStaticHTML="BaseServer.getStaticHTML",e.render="BaseServer.render",e.renderToResponseWithComponents="BaseServer.renderToResponseWithComponents",e.renderToResponse="BaseServer.renderToResponse",e.renderToHTML="BaseServer.renderToHTML",e.renderError="BaseServer.renderError",e.renderErrorToResponse="BaseServer.renderErrorToResponse",e.renderErrorToHTML="BaseServer.renderErrorToHTML",e.render404="BaseServer.render404",e}(u||{}),l=/*#__PURE__*/function(e){return e.loadDefaultErrorComponents="LoadComponents.loadDefaultErrorComponents",e.loadComponents="LoadComponents.loadComponents",e}(l||{}),p=/*#__PURE__*/function(e){return e.getRequestHandler="NextServer.getRequestHandler",e.getServer="NextServer.getServer",e.getServerRequestHandler="NextServer.getServerRequestHandler",e.createServer="createServer.createServer",e}(p||{}),c=/*#__PURE__*/function(e){return e.compression="NextNodeServer.compression",e.getBuildId="NextNodeServer.getBuildId",e.createComponentTree="NextNodeServer.createComponentTree",e.clientComponentLoading="NextNodeServer.clientComponentLoading",e.getLayoutOrPageModule="NextNodeServer.getLayoutOrPageModule",e.generateStaticRoutes="NextNodeServer.generateStaticRoutes",e.generateFsStaticRoutes="NextNodeServer.generateFsStaticRoutes",e.generatePublicRoutes="NextNodeServer.generatePublicRoutes",e.generateImageRoutes="NextNodeServer.generateImageRoutes.route",e.sendRenderResult="NextNodeServer.sendRenderResult",e.proxyRequest="NextNodeServer.proxyRequest",e.runApi="NextNodeServer.runApi",e.render="NextNodeServer.render",e.renderHTML="NextNodeServer.renderHTML",e.imageOptimizer="NextNodeServer.imageOptimizer",e.getPagePath="NextNodeServer.getPagePath",e.getRoutesManifest="NextNodeServer.getRoutesManifest",e.findPageComponents="NextNodeServer.findPageComponents",e.getFontManifest="NextNodeServer.getFontManifest",e.getServerComponentManifest="NextNodeServer.getServerComponentManifest",e.getRequestHandler="NextNodeServer.getRequestHandler",e.renderToHTML="NextNodeServer.renderToHTML",e.renderError="NextNodeServer.renderError",e.renderErrorToHTML="NextNodeServer.renderErrorToHTML",e.render404="NextNodeServer.render404",e.startResponse="NextNodeServer.startResponse",e.route="route",e.onProxyReq="onProxyReq",e.apiResolver="apiResolver",e.internalFetch="internalFetch",e}(c||{}),f=/*#__PURE__*/function(e){return e.startServer="startServer.startServer",e}(f||{}),g=/*#__PURE__*/function(e){return e.getServerSideProps="Render.getServerSideProps",e.getStaticProps="Render.getStaticProps",e.renderToString="Render.renderToString",e.renderDocument="Render.renderDocument",e.createBodyResult="Render.createBodyResult",e}(g||{}),v=/*#__PURE__*/function(e){return e.renderToString="AppRender.renderToString",e.renderToReadableStream="AppRender.renderToReadableStream",e.getBodyResult="AppRender.getBodyResult",e.fetch="AppRender.fetch",e}(v||{}),m=/*#__PURE__*/function(e){return e.executeRoute="Router.executeRoute",e}(m||{}),h=/*#__PURE__*/function(e){return e.runHandler="Node.runHandler",e}(h||{}),y=/*#__PURE__*/function(e){return e.runHandler="AppRouteRouteHandlers.runHandler",e}(y||{}),b=/*#__PURE__*/function(e){return e.generateMetadata="ResolveMetadata.generateMetadata",e.generateViewport="ResolveMetadata.generateViewport",e}(b||{}),x=/*#__PURE__*/function(e){return e.execute="Middleware.execute",e}(x||{});let w="__prerender_bypass",S="__next_preview_data",R=Symbol(S),_=Symbol(w);function E(e,r={}){if(_ in e)return e;let{serialize:n}=t("./dist/compiled/cookie/index.js"),o=e.getHeader("Set-Cookie");return e.setHeader("Set-Cookie",[..."string"==typeof o?[o]:Array.isArray(o)?o:[],n(w,"",{expires:new Date(0),httpOnly:!0,sameSite:"none",secure:!0,path:"/",...void 0!==r.path?{path:r.path}:void 0}),n(S,"",{expires:new Date(0),httpOnly:!0,sameSite:"none",secure:!0,path:"/",...void 0!==r.path?{path:r.path}:void 0})]),Object.defineProperty(e,_,{value:!0,enumerable:!1}),e}class O extends Error{constructor(e,r){super(r),this.statusCode=e}}function C(e,r,t){e.statusCode=r,e.statusMessage=t,e.end(t)}function N({req:e},r,t){let n={configurable:!0,enumerable:!0},o={...n,writable:!0};Object.defineProperty(e,r,{...n,get:()=>{let n=t();return Object.defineProperty(e,r,{...o,value:n}),n},set:t=>{Object.defineProperty(e,r,{...o,value:t})}})}class j{constructor({userland:e,definition:r}){this.userland=e,this.definition=r}}var T=t("./dist/compiled/bytes/index.js"),P=/*#__PURE__*/t.n(T);let A=e=>{let r=e.length,t=0,n=0,o=8997,i=0,a=33826,s=0,d=40164,u=0,l=52210;for(;t<r;)o^=e.charCodeAt(t++),n=435*o,i=435*a,s=435*d,u=435*l,s+=o<<8,u+=a<<8,i+=n>>>16,o=65535&n,s+=i>>>16,a=65535&i,l=u+(s>>>16)&65535,d=65535&s;return(15&l)*0x1000000000000+0x100000000*d+65536*a+(o^l>>4)},H=(e,r=!1)=>(r?'W/"':'"')+A(e).toString(36)+e.length.toString(36)+'"';"undefined"!=typeof performance&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);var M=t("./dist/compiled/fresh/index.js"),k=/*#__PURE__*/t.n(M);let B=require("stream");function L(e){return"object"==typeof e&&null!==e&&"name"in e&&"message"in e}var D=t("./dist/compiled/@edge-runtime/cookies/index.js"),$=t("./dist/compiled/content-type/index.js");async function q(e,r){let n,o;try{n=(0,$.parse)(e.headers["content-type"]||"text/plain")}catch{n=(0,$.parse)("text/plain")}let{type:i,parameters:a}=n,s=a.charset||"utf-8";try{let n=t("next/dist/compiled/raw-body");o=await n(e,{encoding:s,limit:r})}catch(e){if(L(e)&&"entity.too.large"===e.type)throw Object.defineProperty(new O(413,\`Body exceeded \${r} limit\`),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw Object.defineProperty(new O(400,"Invalid body"),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}let d=o.toString();return"application/json"===i||"application/ld+json"===i?function(e){if(0===e.length)return{};try{return JSON.parse(e)}catch(e){throw Object.defineProperty(new O(400,"Invalid JSON"),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}}(d):"application/x-www-form-urlencoded"===i?t("querystring").decode(d):d}function I(e){return"string"==typeof e&&e.length>=16}async function K(e,r,t,n){if("string"!=typeof e||!e.startsWith("/"))throw Object.defineProperty(Error(\`Invalid urlPath provided to revalidate(), must be a path e.g. /blog/post-1, received \${e}\`),"__NEXT_ERROR_CODE",{value:"E153",enumerable:!1,configurable:!0});let o={[i]:n.previewModeId,...r.unstable_onlyGenerated?{[a]:"1"}:{}},s=[...n.allowedRevalidateHeaderKeys||[]];for(let e of((n.trustHostHeader||n.dev)&&s.push("cookie"),n.trustHostHeader&&s.push("x-vercel-protection-bypass"),Object.keys(t.headers)))s.includes(e)&&(o[e]=t.headers[e]);try{if(n.trustHostHeader){let n=await fetch(\`https://\${t.headers.host}\${e}\`,{method:"HEAD",headers:o}),i=n.headers.get("x-vercel-cache")||n.headers.get("x-nextjs-cache");if((null==i?void 0:i.toUpperCase())!=="REVALIDATED"&&200!==n.status&&!(404===n.status&&r.unstable_onlyGenerated))throw Object.defineProperty(Error(\`Invalid response \${n.status}\`),"__NEXT_ERROR_CODE",{value:"E175",enumerable:!1,configurable:!0})}else if(n.revalidate)await n.revalidate({urlPath:e,revalidateHeaders:o,opts:r});else throw Object.defineProperty(Error("Invariant: required internal revalidate method not passed to api-utils"),"__NEXT_ERROR_CODE",{value:"E174",enumerable:!1,configurable:!0})}catch(r){throw Object.defineProperty(Error(\`Failed to revalidate \${e}: \${L(r)?r.message:r}\`),"__NEXT_ERROR_CODE",{value:"E240",enumerable:!1,configurable:!0})}}async function X(e,r,n,s,d,u,l,p,c){try{var f,g,v,m;if(!s){r.statusCode=404,r.end("Not Found");return}let u=s.config||{},l=(null==(f=u.api)?void 0:f.bodyParser)!==!1,p=(null==(g=u.api)?void 0:g.responseLimit)??!0;null==(v=u.api)||v.externalResolver,N({req:e},"cookies",(m=e.headers,function(){let{cookie:e}=m;if(!e)return{};let{parse:r}=t("./dist/compiled/cookie/index.js");return r(Array.isArray(e)?e.join("; "):e)})),e.query=n,N({req:e},"previewData",()=>(function(e,r,n,s){var d,u;let l;if(n&&function(e,r){let t=o.from(e.headers);return{isOnDemandRevalidate:t.get(i)===r.previewModeId,revalidateOnlyGenerated:t.has(a)}}(e,n).isOnDemandRevalidate)return!1;if(R in e)return e[R];let p=o.from(e.headers),c=new D.RequestCookies(p),f=null==(d=c.get(w))?void 0:d.value,g=null==(u=c.get(S))?void 0:u.value;if(f&&!g&&f===n.previewModeId){let r={};return Object.defineProperty(e,R,{value:r,enumerable:!1}),r}if(!f&&!g)return!1;if(!f||!g||f!==n.previewModeId)return s||E(r),!1;try{l=t("next/dist/compiled/jsonwebtoken").verify(g,n.previewModeSigningKey)}catch{return E(r),!1}let{decryptWithSecret:v}=t("./dist/esm/server/crypto-utils.js"),m=v(Buffer.from(n.previewModeEncryptionKey),l.data);try{let r=JSON.parse(m);return Object.defineProperty(e,R,{value:r,enumerable:!1}),r}catch{return!1}})(e,r,d,!!d.multiZoneDraftMode)),N({req:e},"preview",()=>!1!==e.previewData||void 0),N({req:e},"draftMode",()=>e.preview),l&&!e.body&&(e.body=await q(e,u.api&&u.api.bodyParser&&u.api.bodyParser.sizeLimit?u.api.bodyParser.sizeLimit:"1mb"));let c=0,h=p&&"boolean"!=typeof p?P().parse(p):4194304,y=r.write,b=r.end;r.write=(...e)=>(c+=Buffer.byteLength(e[0]||""),y.apply(r,e)),r.end=(...t)=>(t.length&&"function"!=typeof t[0]&&(c+=Buffer.byteLength(t[0]||"")),p&&c>=h&&console.warn(\`API response for \${e.url} exceeds \${P().format(h)}. API Routes are meant to respond quickly. https://nextjs.org/docs/messages/api-routes-response-size-limit\`),b.apply(r,t)),r.status=e=>(r.statusCode=e,r),r.send=t=>(function(e,r,t){var n;if(null==t){r.end();return}if(204===r.statusCode||304===r.statusCode){r.removeHeader("Content-Type"),r.removeHeader("Content-Length"),r.removeHeader("Transfer-Encoding"),r.end();return}let o=r.getHeader("Content-Type");if(t instanceof B.Stream){o||r.setHeader("Content-Type","application/octet-stream"),t.pipe(r);return}let i=["object","number","boolean"].includes(typeof t),a=i?JSON.stringify(t):t;if((n=H(a))&&r.setHeader("ETag",n),!k()(e.headers,{etag:n})||(r.statusCode=304,r.end(),0)){if(Buffer.isBuffer(t)){o||r.setHeader("Content-Type","application/octet-stream"),r.setHeader("Content-Length",t.length),r.end(t);return}i&&r.setHeader("Content-Type","application/json; charset=utf-8"),r.setHeader("Content-Length",Buffer.byteLength(a)),r.end(a)}})(e,r,t),r.json=e=>{r.setHeader("Content-Type","application/json; charset=utf-8"),r.send(JSON.stringify(e))},r.redirect=(e,t)=>(function(e,r,t){if("string"==typeof r&&(t=r,r=307),"number"!=typeof r||"string"!=typeof t)throw Object.defineProperty(Error("Invalid redirect arguments. Please use a single argument URL, e.g. res.redirect('/destination') or use a status code and URL, e.g. res.redirect(307, '/destination')."),"__NEXT_ERROR_CODE",{value:"E389",enumerable:!1,configurable:!0});return e.writeHead(r,{Location:t}),e.write(t),e.end(),e})(r,e,t),r.setDraftMode=(e={enable:!0})=>(function(e,r){if(!I(r.previewModeId))throw Object.defineProperty(Error("invariant: invalid previewModeId"),"__NEXT_ERROR_CODE",{value:"E169",enumerable:!1,configurable:!0});let n=r.enable?void 0:new Date(0),{serialize:o}=t("./dist/compiled/cookie/index.js"),i=e.getHeader("Set-Cookie");return e.setHeader("Set-Cookie",[..."string"==typeof i?[i]:Array.isArray(i)?i:[],o(w,r.previewModeId,{httpOnly:!0,sameSite:"none",secure:!0,path:"/",expires:n})]),e})(r,Object.assign({},d,e)),r.setPreviewData=(e,n={})=>(function(e,r,n){if(!I(n.previewModeId))throw Object.defineProperty(Error("invariant: invalid previewModeId"),"__NEXT_ERROR_CODE",{value:"E169",enumerable:!1,configurable:!0});if(!I(n.previewModeEncryptionKey))throw Object.defineProperty(Error("invariant: invalid previewModeEncryptionKey"),"__NEXT_ERROR_CODE",{value:"E334",enumerable:!1,configurable:!0});if(!I(n.previewModeSigningKey))throw Object.defineProperty(Error("invariant: invalid previewModeSigningKey"),"__NEXT_ERROR_CODE",{value:"E436",enumerable:!1,configurable:!0});let o=t("next/dist/compiled/jsonwebtoken"),{encryptWithSecret:i}=t("./dist/esm/server/crypto-utils.js"),a=o.sign({data:i(Buffer.from(n.previewModeEncryptionKey),JSON.stringify(r))},n.previewModeSigningKey,{algorithm:"HS256",...void 0!==n.maxAge?{expiresIn:n.maxAge}:void 0});if(a.length>2048)throw Object.defineProperty(Error("Preview data is limited to 2KB currently, reduce how much data you are storing as preview data to continue"),"__NEXT_ERROR_CODE",{value:"E465",enumerable:!1,configurable:!0});let{serialize:s}=t("./dist/compiled/cookie/index.js"),d=e.getHeader("Set-Cookie");return e.setHeader("Set-Cookie",[..."string"==typeof d?[d]:Array.isArray(d)?d:[],s(w,n.previewModeId,{httpOnly:!0,sameSite:"none",secure:!0,path:"/",...void 0!==n.maxAge?{maxAge:n.maxAge}:void 0,...void 0!==n.path?{path:n.path}:void 0}),s(S,a,{httpOnly:!0,sameSite:"none",secure:!0,path:"/",...void 0!==n.maxAge?{maxAge:n.maxAge}:void 0,...void 0!==n.path?{path:n.path}:void 0})]),e})(r,e,Object.assign({},d,n)),r.clearPreviewData=(e={})=>E(r,e),r.revalidate=(r,t)=>K(r,t||{},e,d);let x=s.default||s;await x(e,r)}catch(t){if(null==c||c(t,e,{routerKind:"Pages Router",routePath:p||"",routeType:"route",revalidateReason:void 0}),t instanceof O)C(r,t.statusCode,t.message);else{if(l)throw L(t)&&(t.page=p),t;if(console.error(t),u)throw t;C(r,500,"Internal Server Error")}}}class z extends j{constructor(e){if(super(e),"function"!=typeof e.userland.default)throw Object.defineProperty(Error(\`Page \${e.definition.page} does not export a default function.\`),"__NEXT_ERROR_CODE",{value:"E379",enumerable:!1,configurable:!0});this.apiResolverWrapped=function(e,r){return(...t)=>((0,d.getTracer)().setRootSpanAttribute("next.route",e),(0,d.getTracer)().trace(h.runHandler,{spanName:\`executing api route (pages) \${e}\`},()=>r(...t)))}(e.definition.page,X)}async render(e,r,t){let{apiResolverWrapped:n}=this;await n(e,r,t.query,this.userland,{...t.previewProps,revalidate:t.revalidate,trustHostHeader:t.trustHostHeader,allowedRevalidateHeaderKeys:t.allowedRevalidateHeaderKeys,hostname:t.hostname,multiZoneDraftMode:t.multiZoneDraftMode,dev:t.dev},t.minimalMode,t.dev,t.page,t.onError)}}let U=z})(),module.exports=n})();`;
6
- const unminifiedCode = `async function revalidate(urlPath, opts, req, context) {
7
- if (typeof urlPath !== 'string' || !urlPath.startsWith('/')) {
8
- throw Object.defineProperty(new Error(\`Invalid urlPath provided to revalidate(), must be a path e.g. /blog/post-1, received \${urlPath}\`), "__NEXT_ERROR_CODE", {
9
- value: "E153",
10
- enumerable: false,
11
- configurable: true
12
- });
13
- }
14
- const revalidateHeaders = {
15
- [_constants.PRERENDER_REVALIDATE_HEADER]: context.previewModeId,
16
- ...opts.unstable_onlyGenerated ? {
17
- [_constants.PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER]: '1'
18
- } : {}
19
- };
20
- const allowedRevalidateHeaderKeys = [
21
- ...context.allowedRevalidateHeaderKeys || []
22
- ];
23
- if (context.trustHostHeader || context.dev) {
24
- allowedRevalidateHeaderKeys.push('cookie');
25
- }
26
- if (context.trustHostHeader) {
27
- allowedRevalidateHeaderKeys.push('x-vercel-protection-bypass');
28
- }
29
- for (const key of Object.keys(req.headers)){
30
- if (allowedRevalidateHeaderKeys.includes(key)) {
31
- revalidateHeaders[key] = req.headers[key];
32
- }
33
- }
34
- try {
35
- if (context.trustHostHeader) {
36
- const res = await fetch(\`https://\${req.headers.host}\${urlPath}\`, {
37
- method: 'HEAD',
38
- headers: revalidateHeaders
39
- });
40
- // we use the cache header to determine successful revalidate as
41
- // a non-200 status code can be returned from a successful revalidate
42
- // e.g. notFound: true returns 404 status code but is successful
43
- const cacheHeader = res.headers.get('x-vercel-cache') || res.headers.get('x-nextjs-cache');
44
- if ((cacheHeader == null ? void 0 : cacheHeader.toUpperCase()) !== 'REVALIDATED' && res.status !== 200 && !(res.status === 404 && opts.unstable_onlyGenerated)) {
45
- throw Object.defineProperty(new Error(\`Invalid response \${res.status}\`), "__NEXT_ERROR_CODE", {
46
- value: "E175",
47
- enumerable: false,
48
- configurable: true
49
- });
50
- }
51
- } else if (context.revalidate) {
52
- await context.revalidate({
53
- urlPath,
54
- revalidateHeaders,
55
- opts
56
- });
57
- } else {
58
- throw Object.defineProperty(new Error(\`Invariant: required internal revalidate method not passed to api-utils\`), "__NEXT_ERROR_CODE", {
59
- value: "E174",
60
- enumerable: false,
61
- configurable: true
62
- });
63
- }
64
- } catch (err) {
65
- throw Object.defineProperty(new Error(\`Failed to revalidate \${urlPath}: \${(0, _iserror.default)(err) ? err.message : err}\`), "__NEXT_ERROR_CODE", {
66
- value: "E240",
67
- enumerable: false,
68
- configurable: true
69
- });
70
- }
71
- }`;
72
- describe("patchResRevalidate", () => {
73
- test("patch minified code", () => {
74
- expect(patchCode(minifiedApiPageRuntimeCode, rule)).toMatchInlineSnapshot(`"var r=/(?:^|,)\\s*?no-cache\\s*?(?:,|$)/;function t(e){var r=e&&Date.parse(e);return"number"==typeof r?r:NaN}e.exports=function(e,n){var o=e["if-modified-since"],i=e["if-none-match"];if(!o&&!i)return!1;var a=e["cache-control"];if(a&&r.test(a))return!1;if(i&&"*"!==i){var s=n.etag;if(!s)return!1;for(var d=!0,u=function(e){for(var r=0,t=[],n=0,o=0,i=e.length;o<i;o++)switch(e.charCodeAt(o)){case 32:n===r&&(n=r=o+1);break;case 44:t.push(e.substring(n,r)),n=r=o+1;break;default:r=o+1}return t.push(e.substring(n,r)),t}(i),l=0;l<u.length;l++){var p=u[l];if(p===s||p==="W/"+s||"W/"+p===s){d=!1;break}}if(d)return!1}if(o){var c=n["last-modified"];if(!c||!(t(c)<=t(o)))return!1}return!0}}},t={};function n(e){var o=t[e];if(void 0!==o)return o.exports;var i=t[e]={exports:{}},a=!0;try{r[e](i,i.exports,n),a=!1}finally{a&&delete t[e]}return i.exports}n.ab=__dirname+"/";var o=n(695);e.exports=o})()},"./dist/esm/server/crypto-utils.js":(e,r,t)=>{"use strict";t.r(r),t.d(r,{decryptWithSecret:()=>s,encryptWithSecret:()=>a});let n=require("crypto");var o=/*#__PURE__*/t.n(n);let i="aes-256-gcm";function a(e,r){let t=o().randomBytes(16),n=o().randomBytes(64),a=o().pbkdf2Sync(e,n,1e5,32,"sha512"),s=o().createCipheriv(i,a,t),d=Buffer.concat([s.update(r,"utf8"),s.final()]),u=s.getAuthTag();return Buffer.concat([n,t,u,d]).toString("hex")}function s(e,r){let t=Buffer.from(r,"hex"),n=t.slice(0,64),a=t.slice(64,80),s=t.slice(80,96),d=t.slice(96),u=o().pbkdf2Sync(e,n,1e5,32,"sha512"),l=o().createDecipheriv(i,u,a);return l.setAuthTag(s),l.update(d)+l.final("utf8")}},"next/dist/compiled/jsonwebtoken":e=>{"use strict";e.exports=require("next/dist/compiled/jsonwebtoken")},"next/dist/compiled/raw-body":e=>{"use strict";e.exports=require("next/dist/compiled/raw-body")},querystring:e=>{"use strict";e.exports=require("querystring")}},r={};function t(n){var o=r[n];if(void 0!==o)return o.exports;var i=r[n]={exports:{}};return e[n](i,i.exports,t),i.exports}t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};(()=>{"use strict";t.r(n),t.d(n,{PagesAPIRouteModule:()=>z,default:()=>U});class e{static get(e,r,t){let n=Reflect.get(e,r,t);return"function"==typeof n?n.bind(e):n}static set(e,r,t,n){return Reflect.set(e,r,t,n)}static has(e,r){return Reflect.has(e,r)}static deleteProperty(e,r){return Reflect.deleteProperty(e,r)}}class r extends Error{constructor(){super("Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers")}static callable(){throw new r}}class o extends Headers{constructor(r){super(),this.headers=new Proxy(r,{get(t,n,o){if("symbol"==typeof n)return e.get(t,n,o);let i=n.toLowerCase(),a=Object.keys(r).find(e=>e.toLowerCase()===i);if(void 0!==a)return e.get(t,a,o)},set(t,n,o,i){if("symbol"==typeof n)return e.set(t,n,o,i);let a=n.toLowerCase(),s=Object.keys(r).find(e=>e.toLowerCase()===a);return e.set(t,s??n,o,i)},has(t,n){if("symbol"==typeof n)return e.has(t,n);let o=n.toLowerCase(),i=Object.keys(r).find(e=>e.toLowerCase()===o);return void 0!==i&&e.has(t,i)},deleteProperty(t,n){if("symbol"==typeof n)return e.deleteProperty(t,n);let o=n.toLowerCase(),i=Object.keys(r).find(e=>e.toLowerCase()===o);return void 0===i||e.deleteProperty(t,i)}})}static seal(t){return new Proxy(t,{get(t,n,o){switch(n){case"append":case"delete":case"set":return r.callable;default:return e.get(t,n,o)}}})}merge(e){return Array.isArray(e)?e.join(", "):e}static from(e){return e instanceof Headers?e:new o(e)}append(e,r){let t=this.headers[e];"string"==typeof t?this.headers[e]=[t,r]:Array.isArray(t)?t.push(r):this.headers[e]=r}delete(e){delete this.headers[e]}get(e){let r=this.headers[e];return void 0!==r?this.merge(r):null}has(e){return void 0!==this.headers[e]}set(e,r){this.headers[e]=r}forEach(e,r){for(let[t,n]of this.entries())e.call(r,n,t,this)}*entries(){for(let e of Object.keys(this.headers)){let r=e.toLowerCase(),t=this.get(r);yield[r,t]}}*keys(){for(let e of Object.keys(this.headers)){let r=e.toLowerCase();yield r}}*values(){for(let e of Object.keys(this.headers)){let r=this.get(e);yield r}}[Symbol.iterator](){return this.entries()}}let i="x-prerender-revalidate",a="x-prerender-revalidate-if-generated",s={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"};({...s,GROUP:{builtinReact:[s.reactServerComponents,s.actionBrowser],serverOnly:[s.reactServerComponents,s.actionBrowser,s.instrument,s.middleware],neutralTarget:[s.apiNode,s.apiEdge],clientOnly:[s.serverSideRendering,s.appPagesBrowser],bundled:[s.reactServerComponents,s.actionBrowser,s.serverSideRendering,s.appPagesBrowser,s.shared,s.instrument,s.middleware],appPages:[s.reactServerComponents,s.serverSideRendering,s.appPagesBrowser,s.actionBrowser]}});let d=require("next/dist/server/lib/trace/tracer");var u=/*#__PURE__*/function(e){return e.handleRequest="BaseServer.handleRequest",e.run="BaseServer.run",e.pipe="BaseServer.pipe",e.getStaticHTML="BaseServer.getStaticHTML",e.render="BaseServer.render",e.renderToResponseWithComponents="BaseServer.renderToResponseWithComponents",e.renderToResponse="BaseServer.renderToResponse",e.renderToHTML="BaseServer.renderToHTML",e.renderError="BaseServer.renderError",e.renderErrorToResponse="BaseServer.renderErrorToResponse",e.renderErrorToHTML="BaseServer.renderErrorToHTML",e.render404="BaseServer.render404",e}(u||{}),l=/*#__PURE__*/function(e){return e.loadDefaultErrorComponents="LoadComponents.loadDefaultErrorComponents",e.loadComponents="LoadComponents.loadComponents",e}(l||{}),p=/*#__PURE__*/function(e){return e.getRequestHandler="NextServer.getRequestHandler",e.getServer="NextServer.getServer",e.getServerRequestHandler="NextServer.getServerRequestHandler",e.createServer="createServer.createServer",e}(p||{}),c=/*#__PURE__*/function(e){return e.compression="NextNodeServer.compression",e.getBuildId="NextNodeServer.getBuildId",e.createComponentTree="NextNodeServer.createComponentTree",e.clientComponentLoading="NextNodeServer.clientComponentLoading",e.getLayoutOrPageModule="NextNodeServer.getLayoutOrPageModule",e.generateStaticRoutes="NextNodeServer.generateStaticRoutes",e.generateFsStaticRoutes="NextNodeServer.generateFsStaticRoutes",e.generatePublicRoutes="NextNodeServer.generatePublicRoutes",e.generateImageRoutes="NextNodeServer.generateImageRoutes.route",e.sendRenderResult="NextNodeServer.sendRenderResult",e.proxyRequest="NextNodeServer.proxyRequest",e.runApi="NextNodeServer.runApi",e.render="NextNodeServer.render",e.renderHTML="NextNodeServer.renderHTML",e.imageOptimizer="NextNodeServer.imageOptimizer",e.getPagePath="NextNodeServer.getPagePath",e.getRoutesManifest="NextNodeServer.getRoutesManifest",e.findPageComponents="NextNodeServer.findPageComponents",e.getFontManifest="NextNodeServer.getFontManifest",e.getServerComponentManifest="NextNodeServer.getServerComponentManifest",e.getRequestHandler="NextNodeServer.getRequestHandler",e.renderToHTML="NextNodeServer.renderToHTML",e.renderError="NextNodeServer.renderError",e.renderErrorToHTML="NextNodeServer.renderErrorToHTML",e.render404="NextNodeServer.render404",e.startResponse="NextNodeServer.startResponse",e.route="route",e.onProxyReq="onProxyReq",e.apiResolver="apiResolver",e.internalFetch="internalFetch",e}(c||{}),f=/*#__PURE__*/function(e){return e.startServer="startServer.startServer",e}(f||{}),g=/*#__PURE__*/function(e){return e.getServerSideProps="Render.getServerSideProps",e.getStaticProps="Render.getStaticProps",e.renderToString="Render.renderToString",e.renderDocument="Render.renderDocument",e.createBodyResult="Render.createBodyResult",e}(g||{}),v=/*#__PURE__*/function(e){return e.renderToString="AppRender.renderToString",e.renderToReadableStream="AppRender.renderToReadableStream",e.getBodyResult="AppRender.getBodyResult",e.fetch="AppRender.fetch",e}(v||{}),m=/*#__PURE__*/function(e){return e.executeRoute="Router.executeRoute",e}(m||{}),h=/*#__PURE__*/function(e){return e.runHandler="Node.runHandler",e}(h||{}),y=/*#__PURE__*/function(e){return e.runHandler="AppRouteRouteHandlers.runHandler",e}(y||{}),b=/*#__PURE__*/function(e){return e.generateMetadata="ResolveMetadata.generateMetadata",e.generateViewport="ResolveMetadata.generateViewport",e}(b||{}),x=/*#__PURE__*/function(e){return e.execute="Middleware.execute",e}(x||{});let w="__prerender_bypass",S="__next_preview_data",R=Symbol(S),_=Symbol(w);function E(e,r={}){if(_ in e)return e;let{serialize:n}=t("./dist/compiled/cookie/index.js"),o=e.getHeader("Set-Cookie");return e.setHeader("Set-Cookie",[..."string"==typeof o?[o]:Array.isArray(o)?o:[],n(w,"",{expires:new Date(0),httpOnly:!0,sameSite:"none",secure:!0,path:"/",...void 0!==r.path?{path:r.path}:void 0}),n(S,"",{expires:new Date(0),httpOnly:!0,sameSite:"none",secure:!0,path:"/",...void 0!==r.path?{path:r.path}:void 0})]),Object.defineProperty(e,_,{value:!0,enumerable:!1}),e}class O extends Error{constructor(e,r){super(r),this.statusCode=e}}function C(e,r,t){e.statusCode=r,e.statusMessage=t,e.end(t)}function N({req:e},r,t){let n={configurable:!0,enumerable:!0},o={...n,writable:!0};Object.defineProperty(e,r,{...n,get:()=>{let n=t();return Object.defineProperty(e,r,{...o,value:n}),n},set:t=>{Object.defineProperty(e,r,{...o,value:t})}})}class j{constructor({userland:e,definition:r}){this.userland=e,this.definition=r}}var T=t("./dist/compiled/bytes/index.js"),P=/*#__PURE__*/t.n(T);let A=e=>{let r=e.length,t=0,n=0,o=8997,i=0,a=33826,s=0,d=40164,u=0,l=52210;for(;t<r;)o^=e.charCodeAt(t++),n=435*o,i=435*a,s=435*d,u=435*l,s+=o<<8,u+=a<<8,i+=n>>>16,o=65535&n,s+=i>>>16,a=65535&i,l=u+(s>>>16)&65535,d=65535&s;return(15&l)*0x1000000000000+0x100000000*d+65536*a+(o^l>>4)},H=(e,r=!1)=>(r?'W/"':'"')+A(e).toString(36)+e.length.toString(36)+'"';"undefined"!=typeof performance&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);var M=t("./dist/compiled/fresh/index.js"),k=/*#__PURE__*/t.n(M);let B=require("stream");function L(e){return"object"==typeof e&&null!==e&&"name"in e&&"message"in e}var D=t("./dist/compiled/@edge-runtime/cookies/index.js"),$=t("./dist/compiled/content-type/index.js");async function q(e,r){let n,o;try{n=(0,$.parse)(e.headers["content-type"]||"text/plain")}catch{n=(0,$.parse)("text/plain")}let{type:i,parameters:a}=n,s=a.charset||"utf-8";try{let n=t("next/dist/compiled/raw-body");o=await n(e,{encoding:s,limit:r})}catch(e){if(L(e)&&"entity.too.large"===e.type)throw Object.defineProperty(new O(413,\`Body exceeded \${r} limit\`),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw Object.defineProperty(new O(400,"Invalid body"),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}let d=o.toString();return"application/json"===i||"application/ld+json"===i?function(e){if(0===e.length)return{};try{return JSON.parse(e)}catch(e){throw Object.defineProperty(new O(400,"Invalid JSON"),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}}(d):"application/x-www-form-urlencoded"===i?t("querystring").decode(d):d}function I(e){return"string"==typeof e&&e.length>=16}async function K(e,r,t,n){if("string"!=typeof e||!e.startsWith("/"))throw Object.defineProperty(Error(\`Invalid urlPath provided to revalidate(), must be a path e.g. /blog/post-1, received \${e}\`),"__NEXT_ERROR_CODE",{value:"E153",enumerable:!1,configurable:!0});let o={[i]:n.previewModeId,...r.unstable_onlyGenerated?{[a]:"1"}:{}},s=[...n.allowedRevalidateHeaderKeys||[]];for(let e of((n.trustHostHeader||n.dev)&&s.push("cookie"),n.trustHostHeader&&s.push("x-vercel-protection-bypass"),Object.keys(t.headers)))s.includes(e)&&(o[e]=t.headers[e]);try{if(n.trustHostHeader){let n=await (await import("@opennextjs/cloudflare")).getCloudflareContext().env.WORKER_SELF_REFERENCE.fetch(\`\${t.headers.host.includes("localhost") ? "http":"https" }://\${t.headers.host}\${e}\`,{method:'HEAD', headers:o}),i=n.headers.get("x-vercel-cache")||n.headers.get("x-nextjs-cache");if((null==i?void 0:i.toUpperCase())!=="REVALIDATED"&&200!==n.status&&!(404===n.status&&r.unstable_onlyGenerated))throw Object.defineProperty(Error(\`Invalid response \${n.status}\`),"__NEXT_ERROR_CODE",{value:"E175",enumerable:!1,configurable:!0})}else if(n.revalidate)await n.revalidate({urlPath:e,revalidateHeaders:o,opts:r});else throw Object.defineProperty(Error("Invariant: required internal revalidate method not passed to api-utils"),"__NEXT_ERROR_CODE",{value:"E174",enumerable:!1,configurable:!0})}catch(r){throw Object.defineProperty(Error(\`Failed to revalidate \${e}: \${L(r)?r.message:r}\`),"__NEXT_ERROR_CODE",{value:"E240",enumerable:!1,configurable:!0})}}async function X(e,r,n,s,d,u,l,p,c){try{var f,g,v,m;if(!s){r.statusCode=404,r.end("Not Found");return}let u=s.config||{},l=(null==(f=u.api)?void 0:f.bodyParser)!==!1,p=(null==(g=u.api)?void 0:g.responseLimit)??!0;null==(v=u.api)||v.externalResolver,N({req:e},"cookies",(m=e.headers,function(){let{cookie:e}=m;if(!e)return{};let{parse:r}=t("./dist/compiled/cookie/index.js");return r(Array.isArray(e)?e.join("; "):e)})),e.query=n,N({req:e},"previewData",()=>(function(e,r,n,s){var d,u;let l;if(n&&function(e,r){let t=o.from(e.headers);return{isOnDemandRevalidate:t.get(i)===r.previewModeId,revalidateOnlyGenerated:t.has(a)}}(e,n).isOnDemandRevalidate)return!1;if(R in e)return e[R];let p=o.from(e.headers),c=new D.RequestCookies(p),f=null==(d=c.get(w))?void 0:d.value,g=null==(u=c.get(S))?void 0:u.value;if(f&&!g&&f===n.previewModeId){let r={};return Object.defineProperty(e,R,{value:r,enumerable:!1}),r}if(!f&&!g)return!1;if(!f||!g||f!==n.previewModeId)return s||E(r),!1;try{l=t("next/dist/compiled/jsonwebtoken").verify(g,n.previewModeSigningKey)}catch{return E(r),!1}let{decryptWithSecret:v}=t("./dist/esm/server/crypto-utils.js"),m=v(Buffer.from(n.previewModeEncryptionKey),l.data);try{let r=JSON.parse(m);return Object.defineProperty(e,R,{value:r,enumerable:!1}),r}catch{return!1}})(e,r,d,!!d.multiZoneDraftMode)),N({req:e},"preview",()=>!1!==e.previewData||void 0),N({req:e},"draftMode",()=>e.preview),l&&!e.body&&(e.body=await q(e,u.api&&u.api.bodyParser&&u.api.bodyParser.sizeLimit?u.api.bodyParser.sizeLimit:"1mb"));let c=0,h=p&&"boolean"!=typeof p?P().parse(p):4194304,y=r.write,b=r.end;r.write=(...e)=>(c+=Buffer.byteLength(e[0]||""),y.apply(r,e)),r.end=(...t)=>(t.length&&"function"!=typeof t[0]&&(c+=Buffer.byteLength(t[0]||"")),p&&c>=h&&console.warn(\`API response for \${e.url} exceeds \${P().format(h)}. API Routes are meant to respond quickly. https://nextjs.org/docs/messages/api-routes-response-size-limit\`),b.apply(r,t)),r.status=e=>(r.statusCode=e,r),r.send=t=>(function(e,r,t){var n;if(null==t){r.end();return}if(204===r.statusCode||304===r.statusCode){r.removeHeader("Content-Type"),r.removeHeader("Content-Length"),r.removeHeader("Transfer-Encoding"),r.end();return}let o=r.getHeader("Content-Type");if(t instanceof B.Stream){o||r.setHeader("Content-Type","application/octet-stream"),t.pipe(r);return}let i=["object","number","boolean"].includes(typeof t),a=i?JSON.stringify(t):t;if((n=H(a))&&r.setHeader("ETag",n),!k()(e.headers,{etag:n})||(r.statusCode=304,r.end(),0)){if(Buffer.isBuffer(t)){o||r.setHeader("Content-Type","application/octet-stream"),r.setHeader("Content-Length",t.length),r.end(t);return}i&&r.setHeader("Content-Type","application/json; charset=utf-8"),r.setHeader("Content-Length",Buffer.byteLength(a)),r.end(a)}})(e,r,t),r.json=e=>{r.setHeader("Content-Type","application/json; charset=utf-8"),r.send(JSON.stringify(e))},r.redirect=(e,t)=>(function(e,r,t){if("string"==typeof r&&(t=r,r=307),"number"!=typeof r||"string"!=typeof t)throw Object.defineProperty(Error("Invalid redirect arguments. Please use a single argument URL, e.g. res.redirect('/destination') or use a status code and URL, e.g. res.redirect(307, '/destination')."),"__NEXT_ERROR_CODE",{value:"E389",enumerable:!1,configurable:!0});return e.writeHead(r,{Location:t}),e.write(t),e.end(),e})(r,e,t),r.setDraftMode=(e={enable:!0})=>(function(e,r){if(!I(r.previewModeId))throw Object.defineProperty(Error("invariant: invalid previewModeId"),"__NEXT_ERROR_CODE",{value:"E169",enumerable:!1,configurable:!0});let n=r.enable?void 0:new Date(0),{serialize:o}=t("./dist/compiled/cookie/index.js"),i=e.getHeader("Set-Cookie");return e.setHeader("Set-Cookie",[..."string"==typeof i?[i]:Array.isArray(i)?i:[],o(w,r.previewModeId,{httpOnly:!0,sameSite:"none",secure:!0,path:"/",expires:n})]),e})(r,Object.assign({},d,e)),r.setPreviewData=(e,n={})=>(function(e,r,n){if(!I(n.previewModeId))throw Object.defineProperty(Error("invariant: invalid previewModeId"),"__NEXT_ERROR_CODE",{value:"E169",enumerable:!1,configurable:!0});if(!I(n.previewModeEncryptionKey))throw Object.defineProperty(Error("invariant: invalid previewModeEncryptionKey"),"__NEXT_ERROR_CODE",{value:"E334",enumerable:!1,configurable:!0});if(!I(n.previewModeSigningKey))throw Object.defineProperty(Error("invariant: invalid previewModeSigningKey"),"__NEXT_ERROR_CODE",{value:"E436",enumerable:!1,configurable:!0});let o=t("next/dist/compiled/jsonwebtoken"),{encryptWithSecret:i}=t("./dist/esm/server/crypto-utils.js"),a=o.sign({data:i(Buffer.from(n.previewModeEncryptionKey),JSON.stringify(r))},n.previewModeSigningKey,{algorithm:"HS256",...void 0!==n.maxAge?{expiresIn:n.maxAge}:void 0});if(a.length>2048)throw Object.defineProperty(Error("Preview data is limited to 2KB currently, reduce how much data you are storing as preview data to continue"),"__NEXT_ERROR_CODE",{value:"E465",enumerable:!1,configurable:!0});let{serialize:s}=t("./dist/compiled/cookie/index.js"),d=e.getHeader("Set-Cookie");return e.setHeader("Set-Cookie",[..."string"==typeof d?[d]:Array.isArray(d)?d:[],s(w,n.previewModeId,{httpOnly:!0,sameSite:"none",secure:!0,path:"/",...void 0!==n.maxAge?{maxAge:n.maxAge}:void 0,...void 0!==n.path?{path:n.path}:void 0}),s(S,a,{httpOnly:!0,sameSite:"none",secure:!0,path:"/",...void 0!==n.maxAge?{maxAge:n.maxAge}:void 0,...void 0!==n.path?{path:n.path}:void 0})]),e})(r,e,Object.assign({},d,n)),r.clearPreviewData=(e={})=>E(r,e),r.revalidate=(r,t)=>K(r,t||{},e,d);let x=s.default||s;await x(e,r)}catch(t){if(null==c||c(t,e,{routerKind:"Pages Router",routePath:p||"",routeType:"route",revalidateReason:void 0}),t instanceof O)C(r,t.statusCode,t.message);else{if(l)throw L(t)&&(t.page=p),t;if(console.error(t),u)throw t;C(r,500,"Internal Server Error")}}}class z extends j{constructor(e){if(super(e),"function"!=typeof e.userland.default)throw Object.defineProperty(Error(\`Page \${e.definition.page} does not export a default function.\`),"__NEXT_ERROR_CODE",{value:"E379",enumerable:!1,configurable:!0});this.apiResolverWrapped=function(e,r){return(...t)=>((0,d.getTracer)().setRootSpanAttribute("next.route",e),(0,d.getTracer)().trace(h.runHandler,{spanName:\`executing api route (pages) \${e}\`},()=>r(...t)))}(e.definition.page,X)}async render(e,r,t){let{apiResolverWrapped:n}=this;await n(e,r,t.query,this.userland,{...t.previewProps,revalidate:t.revalidate,trustHostHeader:t.trustHostHeader,allowedRevalidateHeaderKeys:t.allowedRevalidateHeaderKeys,hostname:t.hostname,multiZoneDraftMode:t.multiZoneDraftMode,dev:t.dev},t.minimalMode,t.dev,t.page,t.onError)}}let U=z})(),module.exports=n})();"`);
75
- });
76
- test("patch unminified code", () => {
77
- expect(computePatchDiff("pages-api.runtime.prod.js", unminifiedCode, rule)).toMatchInlineSnapshot(`
78
- "Index: pages-api.runtime.prod.js
79
- ===================================================================
80
- --- pages-api.runtime.prod.js
81
- +++ pages-api.runtime.prod.js
82
- @@ -27,12 +27,9 @@
83
- }
84
- }
85
- try {
86
- if (context.trustHostHeader) {
87
- - const res = await fetch(\`https://\${req.headers.host}\${urlPath}\`, {
88
- - method: 'HEAD',
89
- - headers: revalidateHeaders
90
- - });
91
- + const res = await (await import("@opennextjs/cloudflare")).getCloudflareContext().env.WORKER_SELF_REFERENCE.fetch(\`\${req.headers.host.includes("localhost") ? "http":"https" }://\${req.headers.host}\${urlPath}\`,{method:'HEAD', headers:revalidateHeaders});
92
- // we use the cache header to determine successful revalidate as
93
- // a non-200 status code can be returned from a successful revalidate
94
- // e.g. notFound: true returns 404 status code but is successful
95
- const cacheHeader = res.headers.get('x-vercel-cache') || res.headers.get('x-nextjs-cache');
96
- "
97
- `);
98
- });
99
- });
@@ -1 +0,0 @@
1
- export {};