@opennextjs/aws 3.2.1 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -2
- package/dist/adapters/cache.d.ts +0 -23
- package/dist/adapters/cache.js +10 -12
- package/dist/adapters/config/index.js +1 -1
- package/dist/adapters/config/util.js +2 -2
- package/dist/adapters/dynamo-provider.js +3 -5
- package/dist/adapters/edge-adapter.d.ts +0 -3
- package/dist/adapters/edge-adapter.js +43 -38
- package/dist/adapters/image-optimization-adapter.d.ts +1 -2
- package/dist/adapters/image-optimization-adapter.js +4 -4
- package/dist/adapters/logger.d.ts +0 -3
- package/dist/adapters/logger.js +32 -13
- package/dist/adapters/middleware.js +42 -18
- package/dist/adapters/plugins/image-optimization/image-optimization.d.ts +1 -3
- package/dist/adapters/plugins/image-optimization/image-optimization.js +0 -1
- package/dist/adapters/plugins/image-optimization/image-optimization.replacement.d.ts +1 -3
- package/dist/adapters/revalidate.js +2 -2
- package/dist/adapters/server-adapter.d.ts +0 -3
- package/dist/adapters/server-adapter.js +3 -1
- package/dist/adapters/util.js +2 -2
- package/dist/build/bundleNextServer.d.ts +3 -1
- package/dist/build/bundleNextServer.js +3 -3
- package/dist/build/compileConfig.js +1 -1
- package/dist/build/copyTracedFiles.js +15 -26
- package/dist/build/createAssets.js +36 -27
- package/dist/build/createImageOptimizationBundle.js +1 -1
- package/dist/build/createMiddleware.js +8 -3
- package/dist/build/createRevalidationBundle.js +1 -1
- package/dist/build/createServerBundle.js +25 -31
- package/dist/build/createWarmerBundle.js +1 -1
- package/dist/build/edge/createEdgeBundle.d.ts +8 -4
- package/dist/build/edge/createEdgeBundle.js +34 -16
- package/dist/build/generateOutput.js +7 -13
- package/dist/build/helper.d.ts +28 -5
- package/dist/build/helper.js +44 -15
- package/dist/build/installDeps.js +1 -1
- package/dist/build/patch/patchedAsyncStorage.js +1 -1
- package/dist/build/utils.js +3 -2
- package/dist/build/validateConfig.js +4 -1
- package/dist/core/createGenericHandler.d.ts +2 -4
- package/dist/core/createGenericHandler.js +1 -2
- package/dist/core/createMainHandler.d.ts +0 -17
- package/dist/core/createMainHandler.js +5 -4
- package/dist/core/edgeFunctionHandler.d.ts +1 -51
- package/dist/core/patchAsyncStorage.js +5 -6
- package/dist/core/requestHandler.d.ts +1 -2
- package/dist/core/requestHandler.js +99 -90
- package/dist/core/require-hooks.js +8 -7
- package/dist/core/resolve.d.ts +13 -7
- package/dist/core/resolve.js +29 -35
- package/dist/core/routing/cacheInterceptor.js +12 -13
- package/dist/core/routing/i18n/accept-header.js +3 -2
- package/dist/core/routing/matcher.d.ts +2 -4
- package/dist/core/routing/matcher.js +18 -27
- package/dist/core/routing/middleware.d.ts +3 -3
- package/dist/core/routing/middleware.js +20 -20
- package/dist/core/routing/util.d.ts +2 -15
- package/dist/core/routing/util.js +26 -88
- package/dist/core/routingHandler.d.ts +4 -8
- package/dist/core/routingHandler.js +36 -18
- package/dist/core/util.js +5 -3
- package/dist/helpers/withCloudflare.d.ts +1 -1
- package/dist/helpers/withCloudflare.js +2 -2
- package/dist/helpers/withSST.d.ts +1 -1
- package/dist/http/openNextResponse.d.ts +6 -18
- package/dist/http/openNextResponse.js +32 -32
- package/dist/http/request.d.ts +0 -3
- package/dist/http/request.js +4 -2
- package/dist/http/util.d.ts +1 -1
- package/dist/http/util.js +8 -12
- package/dist/minimize-js.js +19 -19
- package/dist/overrides/converters/aws-apigw-v1.d.ts +2 -2
- package/dist/overrides/converters/aws-apigw-v1.js +2 -1
- package/dist/overrides/converters/aws-apigw-v2.d.ts +2 -2
- package/dist/overrides/converters/aws-apigw-v2.js +8 -8
- package/dist/overrides/converters/aws-cloudfront.d.ts +2 -2
- package/dist/overrides/converters/aws-cloudfront.js +11 -30
- package/dist/overrides/converters/dummy.d.ts +1 -1
- package/dist/overrides/converters/edge.d.ts +3 -5
- package/dist/overrides/converters/edge.js +15 -18
- package/dist/overrides/converters/node.d.ts +1 -1
- package/dist/overrides/converters/node.js +1 -1
- package/dist/overrides/converters/sqs-revalidate.d.ts +1 -1
- package/dist/overrides/imageLoader/dummy.d.ts +1 -1
- package/dist/overrides/imageLoader/host.d.ts +1 -1
- package/dist/overrides/imageLoader/s3.d.ts +1 -1
- package/dist/overrides/imageLoader/s3.js +1 -1
- package/dist/overrides/incrementalCache/dummy.d.ts +1 -1
- package/dist/overrides/incrementalCache/dummy.js +4 -3
- package/dist/overrides/incrementalCache/s3-lite.d.ts +1 -1
- package/dist/overrides/incrementalCache/s3-lite.js +15 -19
- package/dist/overrides/incrementalCache/s3.d.ts +1 -1
- package/dist/overrides/incrementalCache/s3.js +1 -1
- package/dist/overrides/originResolver/dummy.d.ts +1 -1
- package/dist/overrides/originResolver/pattern-env.d.ts +1 -1
- package/dist/overrides/originResolver/pattern-env.js +10 -11
- package/dist/overrides/proxyExternalRequest/dummy.d.ts +3 -0
- package/dist/overrides/proxyExternalRequest/dummy.js +8 -0
- package/dist/overrides/proxyExternalRequest/fetch.d.ts +3 -0
- package/dist/overrides/proxyExternalRequest/fetch.js +25 -0
- package/dist/overrides/proxyExternalRequest/node.d.ts +3 -0
- package/dist/overrides/proxyExternalRequest/node.js +67 -0
- package/dist/overrides/queue/dummy.d.ts +1 -1
- package/dist/overrides/queue/dummy.js +2 -1
- package/dist/overrides/queue/sqs-lite.d.ts +1 -1
- package/dist/overrides/queue/sqs-lite.js +7 -9
- package/dist/overrides/queue/sqs.d.ts +1 -1
- package/dist/overrides/queue/sqs.js +1 -1
- package/dist/overrides/tagCache/constants.js +2 -2
- package/dist/overrides/tagCache/dummy.d.ts +1 -1
- package/dist/overrides/tagCache/dynamodb-lite.d.ts +1 -1
- package/dist/overrides/tagCache/dynamodb-lite.js +10 -12
- package/dist/overrides/tagCache/dynamodb.d.ts +1 -1
- package/dist/overrides/tagCache/dynamodb.js +2 -2
- package/dist/overrides/warmer/aws-lambda.d.ts +1 -1
- package/dist/overrides/warmer/dummy.d.ts +1 -1
- package/dist/overrides/warmer/dummy.js +2 -1
- package/dist/overrides/wrappers/aws-lambda-streaming.d.ts +3 -3
- package/dist/overrides/wrappers/aws-lambda-streaming.js +0 -4
- package/dist/overrides/wrappers/aws-lambda.d.ts +2 -2
- package/dist/overrides/wrappers/aws-lambda.js +0 -3
- package/dist/overrides/wrappers/cloudflare-edge.d.ts +9 -0
- package/dist/overrides/wrappers/cloudflare-edge.js +38 -0
- package/dist/overrides/wrappers/cloudflare-node.d.ts +8 -0
- package/dist/overrides/wrappers/cloudflare-node.js +47 -0
- package/dist/overrides/wrappers/dummy.d.ts +3 -3
- package/dist/overrides/wrappers/dummy.js +1 -1
- package/dist/overrides/wrappers/node.d.ts +3 -3
- package/dist/overrides/wrappers/node.js +3 -6
- package/dist/plugins/edge.js +6 -5
- package/dist/plugins/replacement.js +2 -2
- package/dist/plugins/resolve.d.ts +3 -1
- package/dist/plugins/resolve.js +9 -2
- package/dist/types/aws-lambda.d.ts +2 -5
- package/dist/types/cache.d.ts +0 -2
- package/dist/types/global.d.ts +188 -0
- package/dist/types/next-types.d.ts +1 -3
- package/dist/types/open-next.d.ts +33 -41
- package/dist/types/overrides.d.ts +86 -0
- package/dist/{adapters → utils}/binary.js +1 -0
- package/dist/utils/error.d.ts +1 -0
- package/dist/utils/error.js +8 -0
- package/dist/utils/promise.d.ts +3 -0
- package/dist/utils/promise.js +44 -0
- package/dist/utils/stream.d.ts +0 -1
- package/package.json +3 -3
- package/dist/overrides/incrementalCache/types.d.ts +0 -34
- package/dist/overrides/queue/types.d.ts +0 -12
- package/dist/overrides/tagCache/types.d.ts +0 -11
- package/dist/overrides/tagCache/types.js +0 -1
- package/dist/overrides/wrappers/cloudflare.d.ts +0 -11
- package/dist/overrides/wrappers/cloudflare.js +0 -20
- /package/dist/{overrides/incrementalCache/types.js → types/global.js} +0 -0
- /package/dist/{overrides/queue/types.js → types/overrides.js} +0 -0
- /package/dist/{adapters → utils}/binary.d.ts +0 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import type { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
import type { OutgoingHttpHeaders } from "node:http";
|
|
3
|
+
import type { IncrementalCache, ProxyExternalRequest, Queue, TagCache } from "./overrides";
|
|
4
|
+
import type { DetachedPromiseRunner } from "../utils/promise";
|
|
5
|
+
import type { OpenNextConfig } from "./open-next";
|
|
6
|
+
export interface RequestData {
|
|
7
|
+
geo?: {
|
|
8
|
+
city?: string;
|
|
9
|
+
country?: string;
|
|
10
|
+
region?: string;
|
|
11
|
+
latitude?: string;
|
|
12
|
+
longitude?: string;
|
|
13
|
+
};
|
|
14
|
+
headers: OutgoingHttpHeaders;
|
|
15
|
+
ip?: string;
|
|
16
|
+
method: string;
|
|
17
|
+
nextConfig?: {
|
|
18
|
+
basePath?: string;
|
|
19
|
+
i18n?: any;
|
|
20
|
+
trailingSlash?: boolean;
|
|
21
|
+
};
|
|
22
|
+
page?: {
|
|
23
|
+
name?: string;
|
|
24
|
+
params?: {
|
|
25
|
+
[key: string]: string | string[];
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
url: string;
|
|
29
|
+
body?: ReadableStream<Uint8Array>;
|
|
30
|
+
signal: AbortSignal;
|
|
31
|
+
}
|
|
32
|
+
interface Entries {
|
|
33
|
+
[k: string]: {
|
|
34
|
+
default: (props: {
|
|
35
|
+
page: string;
|
|
36
|
+
request: RequestData;
|
|
37
|
+
}) => Promise<{
|
|
38
|
+
response: Response;
|
|
39
|
+
waitUntil: Promise<void>;
|
|
40
|
+
}>;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export interface EdgeRoute {
|
|
44
|
+
name: string;
|
|
45
|
+
page: string;
|
|
46
|
+
regex: string[];
|
|
47
|
+
}
|
|
48
|
+
interface OpenNextRequestContext {
|
|
49
|
+
requestId: string;
|
|
50
|
+
pendingPromiseRunner: DetachedPromiseRunner;
|
|
51
|
+
isISRRevalidation?: boolean;
|
|
52
|
+
mergeHeadersPriority?: "middleware" | "handler";
|
|
53
|
+
}
|
|
54
|
+
declare global {
|
|
55
|
+
/**
|
|
56
|
+
* The cache adapter for incremental static regeneration.
|
|
57
|
+
* Only available in main functions or in the external middleware with `enableCacheInterception` set to `true`.
|
|
58
|
+
* Defined in `createMainHandler` or in `adapter/middleware.ts`.
|
|
59
|
+
*/
|
|
60
|
+
var incrementalCache: IncrementalCache;
|
|
61
|
+
/**
|
|
62
|
+
* The cache adapter for the tag cache.
|
|
63
|
+
* Only available in main functions, the initializationFunction or in the external middleware with `enableCacheInterception` set to `true`.
|
|
64
|
+
* Defined in `createMainHandler` or in `adapter/middleware.ts`.
|
|
65
|
+
*/
|
|
66
|
+
var tagCache: TagCache;
|
|
67
|
+
/**
|
|
68
|
+
* A boolean that indicates if the DynamoDB cache is disabled.
|
|
69
|
+
* TODO: Remove this, we already have access to the config file
|
|
70
|
+
* Defined in esbuild banner for the cache adapter.
|
|
71
|
+
*/
|
|
72
|
+
var disableDynamoDBCache: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* A boolean that indicates if the incremental cache is disabled.
|
|
75
|
+
* TODO: Remove this, we already have access to the config file
|
|
76
|
+
* Defined in esbuild banner for the cache adapter.
|
|
77
|
+
*/
|
|
78
|
+
var disableIncrementalCache: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* An object that contains the last modified time of the pages.
|
|
81
|
+
* Only available in main functions.
|
|
82
|
+
* TODO: Integrate this directly in the AsyncLocalStorage context
|
|
83
|
+
* Defined in `createMainHandler`.
|
|
84
|
+
*/
|
|
85
|
+
var lastModified: Record<string, number>;
|
|
86
|
+
/**
|
|
87
|
+
* A boolean that indicates if Next is V15 or higher.
|
|
88
|
+
* Only available in the cache adapter.
|
|
89
|
+
* Defined in the esbuild banner for the cache adapter.
|
|
90
|
+
*/
|
|
91
|
+
var isNextAfter15: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* A boolean that indicates if the runtime is Edge.
|
|
94
|
+
* Only available in `edge` runtime functions (i.e. external middleware or function with edge runtime).
|
|
95
|
+
* Defined in the `edge-adapter.ts`.
|
|
96
|
+
*/
|
|
97
|
+
var isEdgeRuntime: true;
|
|
98
|
+
/**
|
|
99
|
+
* A boolean that indicates if we are running in debug mode.
|
|
100
|
+
* Available in all functions.
|
|
101
|
+
* Defined in the esbuild banner.
|
|
102
|
+
*/
|
|
103
|
+
var openNextDebug: boolean;
|
|
104
|
+
/**
|
|
105
|
+
* The fetch function that should be used to make requests during the execution of the function.
|
|
106
|
+
* Used to bypass Next intercepting and caching the fetch calls. Only available in main functions.
|
|
107
|
+
* Defined in the `server-adapter.ts` and in `adapters/middleware.ts`.
|
|
108
|
+
*/
|
|
109
|
+
var internalFetch: typeof fetch;
|
|
110
|
+
/**
|
|
111
|
+
* The Open Next configuration object.
|
|
112
|
+
* Available in all functions.
|
|
113
|
+
* Defined in the `createMainHandler` or in the `createGenericHandler`.
|
|
114
|
+
*/
|
|
115
|
+
var openNextConfig: Partial<OpenNextConfig>;
|
|
116
|
+
/**
|
|
117
|
+
* The name of the function that is currently being executed.
|
|
118
|
+
* Only available in main functions.
|
|
119
|
+
* Defined in the `createMainHandler`.
|
|
120
|
+
*/
|
|
121
|
+
var fnName: string | undefined;
|
|
122
|
+
/**
|
|
123
|
+
* The unique identifier of the server.
|
|
124
|
+
* Only available in main functions.
|
|
125
|
+
* Defined in the `createMainHandler`.
|
|
126
|
+
*/
|
|
127
|
+
var serverId: string;
|
|
128
|
+
/**
|
|
129
|
+
* The AsyncLocalStorage instance that is used to store the request context.
|
|
130
|
+
* Only available in main, middleware and edge functions.
|
|
131
|
+
* TODO: should be available everywhere in the future.
|
|
132
|
+
* Defined in `requestHandler.ts`, `middleware.ts` and `edge-adapter.ts`.
|
|
133
|
+
*/
|
|
134
|
+
var __openNextAls: AsyncLocalStorage<OpenNextRequestContext>;
|
|
135
|
+
/**
|
|
136
|
+
* The function that is used to run background tasks even after the response has been sent.
|
|
137
|
+
* This one is defined by the wrapper function as most of them don't need or support this feature.
|
|
138
|
+
* If not present, all the awaiting promises will be resolved before sending the response.
|
|
139
|
+
*/
|
|
140
|
+
var openNextWaitUntil: ((promise: Promise<void>) => void) | undefined;
|
|
141
|
+
/**
|
|
142
|
+
* The entries object that contains the functions that are available in the function.
|
|
143
|
+
* Only available in edge runtime functions.
|
|
144
|
+
* Defined in the esbuild edge plugin.
|
|
145
|
+
*/
|
|
146
|
+
var _ENTRIES: Entries;
|
|
147
|
+
/**
|
|
148
|
+
* The routes object that contains the routes that are available in the function.
|
|
149
|
+
* Only available in edge runtime functions.
|
|
150
|
+
* Defined in the esbuild edge plugin.
|
|
151
|
+
*/
|
|
152
|
+
var _ROUTES: EdgeRoute[];
|
|
153
|
+
/**
|
|
154
|
+
* A map that is used in the edge runtime.
|
|
155
|
+
* Only available in edge runtime functions.
|
|
156
|
+
*/
|
|
157
|
+
var __storage__: Map<unknown, unknown>;
|
|
158
|
+
/**
|
|
159
|
+
* AsyncContext available globally in the edge runtime.
|
|
160
|
+
* Only available in edge runtime functions.
|
|
161
|
+
*/
|
|
162
|
+
var AsyncContext: any;
|
|
163
|
+
/**
|
|
164
|
+
* AsyncLocalStorage available globally in the edge runtime.
|
|
165
|
+
* Only available in edge runtime functions.
|
|
166
|
+
* Defined in createEdgeBundle.
|
|
167
|
+
*/
|
|
168
|
+
var AsyncLocalStorage: any;
|
|
169
|
+
/**
|
|
170
|
+
* The version of the Open Next runtime.
|
|
171
|
+
* Available everywhere.
|
|
172
|
+
* Defined in the esbuild banner.
|
|
173
|
+
*/
|
|
174
|
+
var openNextVersion: string;
|
|
175
|
+
/**
|
|
176
|
+
* The queue that is used to handle ISR revalidation requests.
|
|
177
|
+
* Only available in main functions and in the external middleware with `enableCacheInterception` set to `true`.
|
|
178
|
+
* Defined in `createMainHandler` or in `adapter/middleware.ts`.
|
|
179
|
+
*/
|
|
180
|
+
var queue: Queue;
|
|
181
|
+
/**
|
|
182
|
+
* The function that is used when resolving external rewrite requests.
|
|
183
|
+
* Only available in main functions
|
|
184
|
+
* Defined in `createMainHandler`.
|
|
185
|
+
*/
|
|
186
|
+
var proxyExternalRequest: ProxyExternalRequest;
|
|
187
|
+
}
|
|
188
|
+
export {};
|
|
@@ -151,7 +151,5 @@ export type Options = {
|
|
|
151
151
|
buildId: string;
|
|
152
152
|
isExternalRewrite?: boolean;
|
|
153
153
|
};
|
|
154
|
-
export
|
|
155
|
-
(req: IncomingMessage, res: OpenNextNodeResponse, options: Options): Promise<OpenNextNodeResponse | undefined>;
|
|
156
|
-
}
|
|
154
|
+
export type PluginHandler = (req: IncomingMessage, res: OpenNextNodeResponse, options: Options) => Promise<OpenNextNodeResponse | undefined>;
|
|
157
155
|
export {};
|
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
|
-
/// <reference types="node" />
|
|
4
|
-
/// <reference types="node" />
|
|
5
|
-
import type { Readable } from "node:stream";
|
|
6
1
|
import type { ReadableStream } from "node:stream/web";
|
|
7
|
-
import type {
|
|
2
|
+
import type { Writable } from "node:stream";
|
|
8
3
|
import type { WarmerEvent, WarmerResponse } from "../adapters/warmer-function";
|
|
9
|
-
import type { IncrementalCache } from "
|
|
10
|
-
import type { Queue } from "../overrides/queue/types";
|
|
11
|
-
import type { TagCache } from "../overrides/tagCache/types";
|
|
4
|
+
import type { Converter, ImageLoader, IncrementalCache, OriginResolver, ProxyExternalRequest, Queue, TagCache, Warmer, Wrapper } from "./overrides";
|
|
12
5
|
export type BaseEventOrResult<T extends string = string> = {
|
|
13
6
|
type: T;
|
|
14
7
|
};
|
|
@@ -28,6 +21,15 @@ export type InternalResult = {
|
|
|
28
21
|
body: ReadableStream;
|
|
29
22
|
isBase64Encoded: boolean;
|
|
30
23
|
} & BaseEventOrResult<"core">;
|
|
24
|
+
export interface StreamCreator {
|
|
25
|
+
writeHeaders(prelude: {
|
|
26
|
+
statusCode: number;
|
|
27
|
+
cookies: string[];
|
|
28
|
+
headers: Record<string, string>;
|
|
29
|
+
}): Writable;
|
|
30
|
+
onWrite?: () => void;
|
|
31
|
+
onFinish?: (length: number) => void;
|
|
32
|
+
}
|
|
31
33
|
export interface DangerousOptions {
|
|
32
34
|
/**
|
|
33
35
|
* The tag cache is used for revalidateTags and revalidatePath.
|
|
@@ -58,44 +60,29 @@ export type BaseOverride = {
|
|
|
58
60
|
name: string;
|
|
59
61
|
};
|
|
60
62
|
export type LazyLoadedOverride<T extends BaseOverride> = () => Promise<T>;
|
|
61
|
-
export type OpenNextHandler<E extends BaseEventOrResult = InternalEvent, R extends BaseEventOrResult = InternalResult> = (event: E, responseStream?: StreamCreator) => Promise<R>;
|
|
62
|
-
export type Converter<E extends BaseEventOrResult = InternalEvent, R extends BaseEventOrResult = InternalResult> = BaseOverride & {
|
|
63
|
-
convertFrom: (event: any) => Promise<E>;
|
|
64
|
-
convertTo: (result: R, originalRequest?: any) => Promise<any>;
|
|
65
|
-
};
|
|
66
|
-
export type WrapperHandler<E extends BaseEventOrResult = InternalEvent, R extends BaseEventOrResult = InternalResult> = (handler: OpenNextHandler<E, R>, converter: Converter<E, R>) => Promise<(...args: any[]) => any>;
|
|
67
|
-
export type Wrapper<E extends BaseEventOrResult = InternalEvent, R extends BaseEventOrResult = InternalResult> = BaseOverride & {
|
|
68
|
-
wrapper: WrapperHandler<E, R>;
|
|
69
|
-
supportStreaming: boolean;
|
|
70
|
-
edgeRuntime?: boolean;
|
|
71
|
-
};
|
|
72
|
-
export type Warmer = BaseOverride & {
|
|
73
|
-
invoke: (warmerId: string) => Promise<void>;
|
|
74
|
-
};
|
|
75
|
-
export type ImageLoader = BaseOverride & {
|
|
76
|
-
load: (url: string) => Promise<{
|
|
77
|
-
body?: Readable;
|
|
78
|
-
contentType?: string;
|
|
79
|
-
cacheControl?: string;
|
|
80
|
-
}>;
|
|
81
|
-
};
|
|
82
63
|
export interface Origin {
|
|
83
64
|
host: string;
|
|
84
65
|
protocol: "http" | "https";
|
|
85
66
|
port?: number;
|
|
86
67
|
customHeaders?: Record<string, string>;
|
|
87
68
|
}
|
|
88
|
-
export type
|
|
89
|
-
resolve: (path: string) => Promise<Origin | false>;
|
|
90
|
-
};
|
|
91
|
-
export type IncludedWrapper = "aws-lambda" | "aws-lambda-streaming" | "node" | "cloudflare";
|
|
69
|
+
export type IncludedWrapper = "aws-lambda" | "aws-lambda-streaming" | "node" | "cloudflare" | "cloudflare-edge" | "cloudflare-node" | "dummy";
|
|
92
70
|
export type IncludedConverter = "aws-apigw-v2" | "aws-apigw-v1" | "aws-cloudfront" | "edge" | "node" | "sqs-revalidate" | "dummy";
|
|
93
|
-
export
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
71
|
+
export interface RoutingResult {
|
|
72
|
+
internalEvent: InternalEvent;
|
|
73
|
+
isExternalRewrite: boolean;
|
|
74
|
+
origin: Origin | false;
|
|
75
|
+
isISR: boolean;
|
|
76
|
+
}
|
|
77
|
+
export interface MiddlewareResult extends RoutingResult, BaseEventOrResult<"middleware"> {
|
|
78
|
+
}
|
|
79
|
+
export type IncludedQueue = "sqs" | "sqs-lite" | "dummy";
|
|
80
|
+
export type IncludedIncrementalCache = "s3" | "s3-lite" | "dummy";
|
|
81
|
+
export type IncludedTagCache = "dynamodb" | "dynamodb-lite" | "dummy";
|
|
82
|
+
export type IncludedImageLoader = "s3" | "host" | "dummy";
|
|
83
|
+
export type IncludedOriginResolver = "pattern-env" | "dummy";
|
|
84
|
+
export type IncludedWarmer = "aws-lambda" | "dummy";
|
|
85
|
+
export type IncludedProxyExternalRequest = "node" | "fetch" | "dummy";
|
|
99
86
|
export interface DefaultOverrideOptions<E extends BaseEventOrResult = InternalEvent, R extends BaseEventOrResult = InternalResult> {
|
|
100
87
|
/**
|
|
101
88
|
* This is the main entrypoint of your app.
|
|
@@ -130,6 +117,11 @@ export interface OverrideOptions extends DefaultOverrideOptions {
|
|
|
130
117
|
* @default "sqs"
|
|
131
118
|
*/
|
|
132
119
|
queue?: IncludedQueue | LazyLoadedOverride<Queue>;
|
|
120
|
+
/**
|
|
121
|
+
* Add possibility to override the default proxy for external rewrite
|
|
122
|
+
* @default "node"
|
|
123
|
+
*/
|
|
124
|
+
proxyExternalRequest?: IncludedProxyExternalRequest | LazyLoadedOverride<ProxyExternalRequest>;
|
|
133
125
|
}
|
|
134
126
|
export interface InstallOptions {
|
|
135
127
|
/**
|
|
@@ -258,7 +250,7 @@ export interface OpenNextConfig {
|
|
|
258
250
|
* @default undefined
|
|
259
251
|
*/
|
|
260
252
|
warmer?: DefaultFunctionOptions<WarmerEvent, WarmerResponse> & {
|
|
261
|
-
invokeFunction
|
|
253
|
+
invokeFunction?: IncludedWarmer | LazyLoadedOverride<Warmer>;
|
|
262
254
|
};
|
|
263
255
|
/**
|
|
264
256
|
* Override the default revalidate function
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { Readable } from "node:stream";
|
|
2
|
+
import type { Meta } from "./cache";
|
|
3
|
+
import type { BaseEventOrResult, BaseOverride, InternalEvent, InternalResult, Origin, StreamCreator } from "./open-next";
|
|
4
|
+
export interface QueueMessage {
|
|
5
|
+
MessageDeduplicationId: string;
|
|
6
|
+
MessageBody: {
|
|
7
|
+
host: string;
|
|
8
|
+
url: string;
|
|
9
|
+
};
|
|
10
|
+
MessageGroupId: string;
|
|
11
|
+
}
|
|
12
|
+
export interface Queue {
|
|
13
|
+
send(message: QueueMessage): Promise<void>;
|
|
14
|
+
name: string;
|
|
15
|
+
}
|
|
16
|
+
export type S3CachedFile = {
|
|
17
|
+
type: "redirect";
|
|
18
|
+
props?: Object;
|
|
19
|
+
meta?: Meta;
|
|
20
|
+
} | {
|
|
21
|
+
type: "page";
|
|
22
|
+
html: string;
|
|
23
|
+
json: Object;
|
|
24
|
+
meta?: Meta;
|
|
25
|
+
} | {
|
|
26
|
+
type: "app";
|
|
27
|
+
html: string;
|
|
28
|
+
rsc: string;
|
|
29
|
+
meta?: Meta;
|
|
30
|
+
} | {
|
|
31
|
+
type: "route";
|
|
32
|
+
body: string;
|
|
33
|
+
meta?: Meta;
|
|
34
|
+
};
|
|
35
|
+
export type S3FetchCache = Object;
|
|
36
|
+
export type WithLastModified<T> = {
|
|
37
|
+
lastModified?: number;
|
|
38
|
+
value?: T;
|
|
39
|
+
};
|
|
40
|
+
export type CacheValue<IsFetch extends boolean> = (IsFetch extends true ? S3FetchCache : S3CachedFile) & {
|
|
41
|
+
revalidate?: number | false;
|
|
42
|
+
};
|
|
43
|
+
export type IncrementalCache = {
|
|
44
|
+
get<IsFetch extends boolean = false>(key: string, isFetch?: IsFetch): Promise<WithLastModified<CacheValue<IsFetch>>>;
|
|
45
|
+
set<IsFetch extends boolean = false>(key: string, value: CacheValue<IsFetch>, isFetch?: IsFetch): Promise<void>;
|
|
46
|
+
delete(key: string): Promise<void>;
|
|
47
|
+
name: string;
|
|
48
|
+
};
|
|
49
|
+
export type TagCache = {
|
|
50
|
+
getByTag(tag: string): Promise<string[]>;
|
|
51
|
+
getByPath(path: string): Promise<string[]>;
|
|
52
|
+
getLastModified(path: string, lastModified?: number): Promise<number>;
|
|
53
|
+
writeTags(tags: {
|
|
54
|
+
tag: string;
|
|
55
|
+
path: string;
|
|
56
|
+
revalidatedAt?: number;
|
|
57
|
+
}[]): Promise<void>;
|
|
58
|
+
name: string;
|
|
59
|
+
};
|
|
60
|
+
export type WrapperHandler<E extends BaseEventOrResult = InternalEvent, R extends BaseEventOrResult = InternalResult> = (handler: OpenNextHandler<E, R>, converter: Converter<E, R>) => Promise<(...args: any[]) => any>;
|
|
61
|
+
export type Wrapper<E extends BaseEventOrResult = InternalEvent, R extends BaseEventOrResult = InternalResult> = BaseOverride & {
|
|
62
|
+
wrapper: WrapperHandler<E, R>;
|
|
63
|
+
supportStreaming: boolean;
|
|
64
|
+
edgeRuntime?: boolean;
|
|
65
|
+
};
|
|
66
|
+
export type OpenNextHandler<E extends BaseEventOrResult = InternalEvent, R extends BaseEventOrResult = InternalResult> = (event: E, responseStream?: StreamCreator) => Promise<R>;
|
|
67
|
+
export type Converter<E extends BaseEventOrResult = InternalEvent, R extends BaseEventOrResult = InternalResult> = BaseOverride & {
|
|
68
|
+
convertFrom: (event: any) => Promise<E>;
|
|
69
|
+
convertTo: (result: R, originalRequest?: any) => Promise<any>;
|
|
70
|
+
};
|
|
71
|
+
export type Warmer = BaseOverride & {
|
|
72
|
+
invoke: (warmerId: string) => Promise<void>;
|
|
73
|
+
};
|
|
74
|
+
export type ImageLoader = BaseOverride & {
|
|
75
|
+
load: (url: string) => Promise<{
|
|
76
|
+
body?: Readable;
|
|
77
|
+
contentType?: string;
|
|
78
|
+
cacheControl?: string;
|
|
79
|
+
}>;
|
|
80
|
+
};
|
|
81
|
+
export type OriginResolver = BaseOverride & {
|
|
82
|
+
resolve: (path: string) => Promise<Origin | false>;
|
|
83
|
+
};
|
|
84
|
+
export type ProxyExternalRequest = BaseOverride & {
|
|
85
|
+
proxy: (event: InternalEvent) => Promise<InternalResult>;
|
|
86
|
+
};
|
package/dist/utils/error.d.ts
CHANGED
package/dist/utils/error.js
CHANGED
package/dist/utils/promise.d.ts
CHANGED
|
@@ -16,3 +16,6 @@ export declare class DetachedPromiseRunner {
|
|
|
16
16
|
add<T>(promise: Promise<T>): void;
|
|
17
17
|
await(): Promise<void>;
|
|
18
18
|
}
|
|
19
|
+
export declare function runWithOpenNextRequestContext<T>({ isISRRevalidation }: {
|
|
20
|
+
isISRRevalidation: boolean;
|
|
21
|
+
}, fn: () => Promise<T>): Promise<T>;
|
package/dist/utils/promise.js
CHANGED
|
@@ -46,3 +46,47 @@ export class DetachedPromiseRunner {
|
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
+
async function awaitAllDetachedPromise() {
|
|
50
|
+
const promisesToAwait = globalThis.__openNextAls.getStore()?.pendingPromiseRunner.await() ??
|
|
51
|
+
Promise.resolve();
|
|
52
|
+
if (globalThis.openNextWaitUntil) {
|
|
53
|
+
globalThis.openNextWaitUntil(promisesToAwait);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
await promisesToAwait;
|
|
57
|
+
}
|
|
58
|
+
function provideNextAfterProvider() {
|
|
59
|
+
/** This should be considered unstable until `unstable_after` is stablized. */
|
|
60
|
+
const NEXT_REQUEST_CONTEXT_SYMBOL = Symbol.for("@next/request-context");
|
|
61
|
+
// This is needed by some lib that relies on the vercel request context to properly await stuff.
|
|
62
|
+
// Remove this when vercel builder is updated to provide '@next/request-context'.
|
|
63
|
+
const VERCEL_REQUEST_CONTEXT_SYMBOL = Symbol.for("@vercel/request-context");
|
|
64
|
+
const openNextStoreContext = globalThis.__openNextAls.getStore();
|
|
65
|
+
const waitUntil = globalThis.openNextWaitUntil ??
|
|
66
|
+
((promise) => openNextStoreContext?.pendingPromiseRunner.add(promise));
|
|
67
|
+
const nextAfterContext = {
|
|
68
|
+
get: () => ({
|
|
69
|
+
waitUntil,
|
|
70
|
+
}),
|
|
71
|
+
};
|
|
72
|
+
//@ts-expect-error
|
|
73
|
+
globalThis[NEXT_REQUEST_CONTEXT_SYMBOL] = nextAfterContext;
|
|
74
|
+
// We probably want to avoid providing this everytime since some lib may incorrectly think they are running in Vercel
|
|
75
|
+
// It may break stuff, but at the same time it will allow libs like `@vercel/otel` to work as expected
|
|
76
|
+
if (process.env.EMULATE_VERCEL_REQUEST_CONTEXT) {
|
|
77
|
+
//@ts-expect-error
|
|
78
|
+
globalThis[VERCEL_REQUEST_CONTEXT_SYMBOL] = nextAfterContext;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export function runWithOpenNextRequestContext({ isISRRevalidation }, fn) {
|
|
82
|
+
return globalThis.__openNextAls.run({
|
|
83
|
+
requestId: Math.random().toString(36),
|
|
84
|
+
pendingPromiseRunner: new DetachedPromiseRunner(),
|
|
85
|
+
isISRRevalidation,
|
|
86
|
+
}, async () => {
|
|
87
|
+
provideNextAfterProvider();
|
|
88
|
+
const result = await fn();
|
|
89
|
+
await awaitAllDetachedPromise();
|
|
90
|
+
return result;
|
|
91
|
+
});
|
|
92
|
+
}
|
package/dist/utils/stream.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import type { ReadableStream } from "node:stream/web";
|
|
3
2
|
export declare function fromReadableStream(stream: ReadableStream<Uint8Array>, base64?: boolean): Promise<string>;
|
|
4
3
|
export declare function toReadableStream(value: string, isBase64?: boolean): ReadableStream;
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"access": "public"
|
|
4
4
|
},
|
|
5
5
|
"name": "@opennextjs/aws",
|
|
6
|
-
"version": "3.
|
|
6
|
+
"version": "3.3.0",
|
|
7
7
|
"bin": {
|
|
8
8
|
"open-next": "./dist/index.js"
|
|
9
9
|
},
|
|
@@ -47,9 +47,9 @@
|
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@types/aws-lambda": "^8.10.109",
|
|
50
|
-
"@types/node": "
|
|
50
|
+
"@types/node": "20.17.6",
|
|
51
51
|
"tsc-alias": "^1.8.8",
|
|
52
|
-
"typescript": "
|
|
52
|
+
"typescript": "5.6.3"
|
|
53
53
|
},
|
|
54
54
|
"bugs": {
|
|
55
55
|
"url": "https://github.com/opennextjs/opennextjs-aws/issues"
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import type { Meta } from "../../types/cache";
|
|
2
|
-
export type S3CachedFile = {
|
|
3
|
-
type: "redirect";
|
|
4
|
-
props?: Object;
|
|
5
|
-
meta?: Meta;
|
|
6
|
-
} | {
|
|
7
|
-
type: "page";
|
|
8
|
-
html: string;
|
|
9
|
-
json: Object;
|
|
10
|
-
meta?: Meta;
|
|
11
|
-
} | {
|
|
12
|
-
type: "app";
|
|
13
|
-
html: string;
|
|
14
|
-
rsc: string;
|
|
15
|
-
meta?: Meta;
|
|
16
|
-
} | {
|
|
17
|
-
type: "route";
|
|
18
|
-
body: string;
|
|
19
|
-
meta?: Meta;
|
|
20
|
-
};
|
|
21
|
-
export type S3FetchCache = Object;
|
|
22
|
-
export type WithLastModified<T> = {
|
|
23
|
-
lastModified?: number;
|
|
24
|
-
value?: T;
|
|
25
|
-
};
|
|
26
|
-
export type CacheValue<IsFetch extends boolean> = (IsFetch extends true ? S3FetchCache : S3CachedFile) & {
|
|
27
|
-
revalidate?: number | false;
|
|
28
|
-
};
|
|
29
|
-
export type IncrementalCache = {
|
|
30
|
-
get<IsFetch extends boolean = false>(key: string, isFetch?: IsFetch): Promise<WithLastModified<CacheValue<IsFetch>>>;
|
|
31
|
-
set<IsFetch extends boolean = false>(key: string, value: CacheValue<IsFetch>, isFetch?: IsFetch): Promise<void>;
|
|
32
|
-
delete(key: string): Promise<void>;
|
|
33
|
-
name: string;
|
|
34
|
-
};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export type TagCache = {
|
|
2
|
-
getByTag(tag: string): Promise<string[]>;
|
|
3
|
-
getByPath(path: string): Promise<string[]>;
|
|
4
|
-
getLastModified(path: string, lastModified?: number): Promise<number>;
|
|
5
|
-
writeTags(tags: {
|
|
6
|
-
tag: string;
|
|
7
|
-
path: string;
|
|
8
|
-
revalidatedAt?: number;
|
|
9
|
-
}[]): Promise<void>;
|
|
10
|
-
name: string;
|
|
11
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { InternalEvent, InternalResult, WrapperHandler } from "../../types/open-next";
|
|
2
|
-
import type { MiddlewareOutputEvent } from "../../core/routingHandler";
|
|
3
|
-
declare const _default: {
|
|
4
|
-
wrapper: WrapperHandler<InternalEvent, InternalResult | ({
|
|
5
|
-
type: "middleware";
|
|
6
|
-
} & MiddlewareOutputEvent)>;
|
|
7
|
-
name: string;
|
|
8
|
-
supportStreaming: boolean;
|
|
9
|
-
edgeRuntime: boolean;
|
|
10
|
-
};
|
|
11
|
-
export default _default;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
const handler = async (handler, converter) => async (event, env) => {
|
|
2
|
-
globalThis.process = process;
|
|
3
|
-
// Set the environment variables
|
|
4
|
-
// Cloudflare suggests to not override the process.env object but instead apply the values to it
|
|
5
|
-
for (const [key, value] of Object.entries(env)) {
|
|
6
|
-
if (typeof value === "string") {
|
|
7
|
-
process.env[key] = value;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
const internalEvent = await converter.convertFrom(event);
|
|
11
|
-
const response = await handler(internalEvent);
|
|
12
|
-
const result = await converter.convertTo(response);
|
|
13
|
-
return result;
|
|
14
|
-
};
|
|
15
|
-
export default {
|
|
16
|
-
wrapper: handler,
|
|
17
|
-
name: "cloudflare",
|
|
18
|
-
supportStreaming: true,
|
|
19
|
-
edgeRuntime: true,
|
|
20
|
-
};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|