@opennextjs/aws 3.1.6 → 3.2.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.
Files changed (144) hide show
  1. package/README.md +27 -22
  2. package/dist/adapters/binary.js +2 -0
  3. package/dist/adapters/cache.d.ts +3 -2
  4. package/dist/adapters/cache.js +2 -2
  5. package/dist/adapters/config/util.d.ts +2 -2
  6. package/dist/adapters/image-optimization-adapter.d.ts +2 -2
  7. package/dist/adapters/middleware.js +5 -52
  8. package/dist/adapters/plugins/image-optimization/image-optimization.d.ts +7 -4
  9. package/dist/adapters/plugins/image-optimization/image-optimization.js +2 -3
  10. package/dist/adapters/plugins/image-optimization/image-optimization.replacement.d.ts +3 -0
  11. package/dist/adapters/plugins/image-optimization/image-optimization.replacement.js +4 -7
  12. package/dist/adapters/warmer-function.js +2 -67
  13. package/dist/build/buildNextApp.d.ts +3 -0
  14. package/dist/build/buildNextApp.js +19 -0
  15. package/dist/build/bundleNextServer.js +2 -2
  16. package/dist/build/compileCache.d.ts +9 -0
  17. package/dist/build/compileCache.js +30 -0
  18. package/dist/build/compileConfig.d.ts +17 -3
  19. package/dist/build/compileConfig.js +56 -34
  20. package/dist/build/compileTagCacheProvider.d.ts +2 -0
  21. package/dist/build/compileTagCacheProvider.js +26 -0
  22. package/dist/build/createAssets.d.ts +11 -0
  23. package/dist/build/createAssets.js +161 -0
  24. package/dist/build/createImageOptimizationBundle.d.ts +2 -0
  25. package/dist/build/createImageOptimizationBundle.js +79 -0
  26. package/dist/build/createMiddleware.d.ts +10 -0
  27. package/dist/build/createMiddleware.js +55 -0
  28. package/dist/build/createRevalidationBundle.d.ts +2 -0
  29. package/dist/build/createRevalidationBundle.js +35 -0
  30. package/dist/build/createServerBundle.d.ts +2 -2
  31. package/dist/build/createServerBundle.js +27 -26
  32. package/dist/build/createWarmerBundle.d.ts +2 -0
  33. package/dist/build/createWarmerBundle.js +44 -0
  34. package/dist/build/edge/createEdgeBundle.d.ts +3 -3
  35. package/dist/build/edge/createEdgeBundle.js +3 -5
  36. package/dist/build/helper.d.ts +22 -5
  37. package/dist/build/helper.js +42 -11
  38. package/dist/build/installDeps.d.ts +2 -0
  39. package/dist/build/installDeps.js +36 -0
  40. package/dist/build/utils.d.ts +5 -0
  41. package/dist/build/utils.js +22 -0
  42. package/dist/build/validateConfig.d.ts +1 -1
  43. package/dist/build.d.ts +0 -4
  44. package/dist/build.js +26 -486
  45. package/dist/core/createMainHandler.d.ts +3 -3
  46. package/dist/core/requestHandler.d.ts +2 -2
  47. package/dist/core/requestHandler.js +1 -1
  48. package/dist/core/resolve.d.ts +13 -4
  49. package/dist/core/resolve.js +30 -5
  50. package/dist/core/routing/cacheInterceptor.d.ts +1 -1
  51. package/dist/core/routing/i18n/index.d.ts +1 -1
  52. package/dist/core/routing/i18n/index.js +3 -0
  53. package/dist/core/routing/matcher.d.ts +2 -1
  54. package/dist/core/routing/matcher.js +1 -1
  55. package/dist/core/routing/middleware.d.ts +6 -2
  56. package/dist/core/routing/middleware.js +7 -4
  57. package/dist/core/routing/util.d.ts +3 -2
  58. package/dist/core/routing/util.js +9 -3
  59. package/dist/core/routingHandler.d.ts +1 -1
  60. package/dist/helpers/withCloudflare.d.ts +1 -1
  61. package/dist/helpers/withSST.d.ts +1 -1
  62. package/dist/http/openNextResponse.d.ts +10 -2
  63. package/dist/http/openNextResponse.js +27 -0
  64. package/dist/http/request.d.ts +1 -0
  65. package/dist/http/util.d.ts +1 -1
  66. package/dist/{converters → overrides/converters}/aws-apigw-v1.d.ts +1 -1
  67. package/dist/{converters → overrides/converters}/aws-apigw-v1.js +2 -2
  68. package/dist/{converters → overrides/converters}/aws-apigw-v2.d.ts +1 -1
  69. package/dist/{converters → overrides/converters}/aws-apigw-v2.js +4 -4
  70. package/dist/{converters → overrides/converters}/aws-cloudfront.d.ts +1 -1
  71. package/dist/{converters → overrides/converters}/aws-cloudfront.js +6 -7
  72. package/dist/{converters → overrides/converters}/dummy.d.ts +1 -1
  73. package/dist/overrides/converters/edge.d.ts +6 -0
  74. package/dist/{converters → overrides/converters}/edge.js +1 -1
  75. package/dist/{converters → overrides/converters}/node.d.ts +1 -1
  76. package/dist/{converters → overrides/converters}/node.js +1 -1
  77. package/dist/overrides/converters/sqs-revalidate.d.ts +4 -0
  78. package/dist/overrides/imageLoader/dummy.d.ts +3 -0
  79. package/dist/overrides/imageLoader/dummy.js +8 -0
  80. package/dist/overrides/imageLoader/host.d.ts +1 -1
  81. package/dist/overrides/imageLoader/s3.d.ts +1 -1
  82. package/dist/overrides/incrementalCache/dummy.d.ts +3 -0
  83. package/dist/overrides/incrementalCache/dummy.js +13 -0
  84. package/dist/{cache/incremental → overrides/incrementalCache}/s3-lite.d.ts +1 -1
  85. package/dist/{cache/incremental → overrides/incrementalCache}/s3.d.ts +1 -1
  86. package/dist/{cache/incremental → overrides/incrementalCache}/types.d.ts +1 -1
  87. package/dist/overrides/originResolver/dummy.d.ts +3 -0
  88. package/dist/overrides/originResolver/dummy.js +7 -0
  89. package/dist/overrides/originResolver/pattern-env.d.ts +3 -0
  90. package/dist/overrides/originResolver/pattern-env.js +39 -0
  91. package/dist/overrides/queue/dummy.d.ts +3 -0
  92. package/dist/overrides/queue/dummy.js +7 -0
  93. package/dist/{queue → overrides/queue}/sqs-lite.d.ts +1 -1
  94. package/dist/{queue → overrides/queue}/sqs-lite.js +3 -3
  95. package/dist/{queue → overrides/queue}/sqs.d.ts +1 -1
  96. package/dist/{queue → overrides/queue}/sqs.js +1 -1
  97. package/dist/overrides/tagCache/dummy.d.ts +3 -0
  98. package/dist/overrides/tagCache/dummy.js +17 -0
  99. package/dist/{cache/tag → overrides/tagCache}/dynamodb-lite.d.ts +1 -1
  100. package/dist/{cache/tag → overrides/tagCache}/dynamodb-lite.js +1 -1
  101. package/dist/{cache/tag → overrides/tagCache}/dynamodb.d.ts +1 -1
  102. package/dist/{cache/tag → overrides/tagCache}/dynamodb.js +1 -1
  103. package/dist/overrides/warmer/aws-lambda.d.ts +3 -0
  104. package/dist/overrides/warmer/aws-lambda.js +59 -0
  105. package/dist/overrides/warmer/dummy.d.ts +3 -0
  106. package/dist/overrides/warmer/dummy.js +7 -0
  107. package/dist/overrides/wrappers/aws-lambda-streaming.d.ts +7 -0
  108. package/dist/{wrappers → overrides/wrappers}/aws-lambda-streaming.js +1 -1
  109. package/dist/overrides/wrappers/aws-lambda.d.ts +7 -0
  110. package/dist/{wrappers → overrides/wrappers}/cloudflare.d.ts +2 -2
  111. package/dist/overrides/wrappers/dummy.d.ts +7 -0
  112. package/dist/overrides/wrappers/dummy.js +6 -0
  113. package/dist/overrides/wrappers/node.d.ts +7 -0
  114. package/dist/{wrappers → overrides/wrappers}/node.js +1 -1
  115. package/dist/plugins/edge.d.ts +2 -2
  116. package/dist/plugins/replacement.d.ts +1 -1
  117. package/dist/plugins/resolve.d.ts +4 -2
  118. package/dist/plugins/resolve.js +32 -20
  119. package/dist/types/aws-lambda.d.ts +3 -2
  120. package/dist/{cache/next-types.d.ts → types/cache.d.ts} +1 -0
  121. package/dist/types/next-types.d.ts +3 -1
  122. package/dist/types/open-next.d.ts +39 -13
  123. package/package.json +2 -2
  124. package/dist/converters/edge.d.ts +0 -6
  125. package/dist/converters/sqs-revalidate.d.ts +0 -4
  126. package/dist/wrappers/aws-lambda-streaming.d.ts +0 -7
  127. package/dist/wrappers/aws-lambda.d.ts +0 -7
  128. package/dist/wrappers/node.d.ts +0 -7
  129. /package/dist/{converters → overrides/converters}/dummy.js +0 -0
  130. /package/dist/{converters → overrides/converters}/sqs-revalidate.js +0 -0
  131. /package/dist/{converters → overrides/converters}/utils.d.ts +0 -0
  132. /package/dist/{converters → overrides/converters}/utils.js +0 -0
  133. /package/dist/{cache/incremental → overrides/incrementalCache}/s3-lite.js +0 -0
  134. /package/dist/{cache/incremental → overrides/incrementalCache}/s3.js +0 -0
  135. /package/dist/{cache/incremental → overrides/incrementalCache}/types.js +0 -0
  136. /package/dist/{queue → overrides/queue}/types.d.ts +0 -0
  137. /package/dist/{cache/tag → overrides/queue}/types.js +0 -0
  138. /package/dist/{cache/tag → overrides/tagCache}/constants.d.ts +0 -0
  139. /package/dist/{cache/tag → overrides/tagCache}/constants.js +0 -0
  140. /package/dist/{cache/tag → overrides/tagCache}/types.d.ts +0 -0
  141. /package/dist/{queue → overrides/tagCache}/types.js +0 -0
  142. /package/dist/{wrappers → overrides/wrappers}/aws-lambda.js +0 -0
  143. /package/dist/{wrappers → overrides/wrappers}/cloudflare.js +0 -0
  144. /package/dist/{cache/next-types.js → types/cache.js} +0 -0
@@ -0,0 +1,3 @@
1
+ import type { TagCache } from "./types";
2
+ declare const dummyTagCache: TagCache;
3
+ export default dummyTagCache;
@@ -0,0 +1,17 @@
1
+ // We don't want to throw error on this one because we might use it when we don't need tag cache
2
+ const dummyTagCache = {
3
+ name: "dummy",
4
+ getByPath: async () => {
5
+ return [];
6
+ },
7
+ getByTag: async () => {
8
+ return [];
9
+ },
10
+ getLastModified: async (_, lastModified) => {
11
+ return lastModified ?? Date.now();
12
+ },
13
+ writeTags: async () => {
14
+ return;
15
+ },
16
+ };
17
+ export default dummyTagCache;
@@ -1,3 +1,3 @@
1
- import { TagCache } from "./types";
1
+ import type { TagCache } from "./types";
2
2
  declare const tagCache: TagCache;
3
3
  export default tagCache;
@@ -131,7 +131,7 @@ const tagCache = {
131
131
  const revalidatedTags = (await result.json()).Items ?? [];
132
132
  debug("revalidatedTags", revalidatedTags);
133
133
  // If we have revalidated tags we return -1 to force revalidation
134
- return revalidatedTags.length > 0 ? -1 : lastModified ?? Date.now();
134
+ return revalidatedTags.length > 0 ? -1 : (lastModified ?? Date.now());
135
135
  }
136
136
  catch (e) {
137
137
  error("Failed to get revalidated tags", e);
@@ -1,3 +1,3 @@
1
- import { TagCache } from "./types";
1
+ import type { TagCache } from "./types";
2
2
  declare const tagCache: TagCache;
3
3
  export default tagCache;
@@ -93,7 +93,7 @@ const tagCache = {
93
93
  const revalidatedTags = result.Items ?? [];
94
94
  debug("revalidatedTags", revalidatedTags);
95
95
  // If we have revalidated tags we return -1 to force revalidation
96
- return revalidatedTags.length > 0 ? -1 : lastModified ?? Date.now();
96
+ return revalidatedTags.length > 0 ? -1 : (lastModified ?? Date.now());
97
97
  }
98
98
  catch (e) {
99
99
  error("Failed to get revalidated tags", e);
@@ -0,0 +1,3 @@
1
+ import type { Warmer } from "../../types/open-next";
2
+ declare const lambdaWarmerInvoke: Warmer;
3
+ export default lambdaWarmerInvoke;
@@ -0,0 +1,59 @@
1
+ import { debug, error } from "../../adapters/logger";
2
+ const lambdaWarmerInvoke = {
3
+ name: "aws-invoke",
4
+ invoke: async (warmerId) => {
5
+ const { InvokeCommand, LambdaClient } = await import("@aws-sdk/client-lambda");
6
+ const lambda = new LambdaClient({});
7
+ const warmParams = JSON.parse(process.env.WARM_PARAMS);
8
+ for (const warmParam of warmParams) {
9
+ const { concurrency: CONCURRENCY, function: FUNCTION_NAME } = warmParam;
10
+ debug({
11
+ event: "warmer invoked",
12
+ functionName: FUNCTION_NAME,
13
+ concurrency: CONCURRENCY,
14
+ warmerId,
15
+ });
16
+ const ret = await Promise.all(Array.from({ length: CONCURRENCY }, (_v, i) => i).map((i) => {
17
+ try {
18
+ return lambda.send(new InvokeCommand({
19
+ FunctionName: FUNCTION_NAME,
20
+ InvocationType: "RequestResponse",
21
+ Payload: Buffer.from(JSON.stringify({
22
+ type: "warmer",
23
+ warmerId,
24
+ index: i,
25
+ concurrency: CONCURRENCY,
26
+ delay: 75,
27
+ })),
28
+ }));
29
+ }
30
+ catch (e) {
31
+ error(`failed to warm up #${i}`, e);
32
+ // ignore error
33
+ }
34
+ }));
35
+ // Print status
36
+ const warmedServerIds = ret
37
+ .map((r, i) => {
38
+ if (r?.StatusCode !== 200 || !r?.Payload) {
39
+ error(`failed to warm up #${i}:`, r?.Payload?.toString());
40
+ return;
41
+ }
42
+ const payload = JSON.parse(Buffer.from(r.Payload).toString());
43
+ return {
44
+ statusCode: r.StatusCode,
45
+ payload,
46
+ type: "warmer",
47
+ };
48
+ })
49
+ .filter((r) => !!r);
50
+ debug({
51
+ event: "warmer result",
52
+ sent: CONCURRENCY,
53
+ success: warmedServerIds.length,
54
+ uniqueServersWarmed: [...new Set(warmedServerIds)].length,
55
+ });
56
+ }
57
+ },
58
+ };
59
+ export default lambdaWarmerInvoke;
@@ -0,0 +1,3 @@
1
+ import type { Warmer } from "../../types/open-next";
2
+ declare const dummyWarmer: Warmer;
3
+ export default dummyWarmer;
@@ -0,0 +1,7 @@
1
+ const dummyWarmer = {
2
+ name: "dummy",
3
+ invoke: async (_) => {
4
+ throw new Error("Dummy warmer is not implemented");
5
+ },
6
+ };
7
+ export default dummyWarmer;
@@ -0,0 +1,7 @@
1
+ import type { WrapperHandler } from "../../types/open-next";
2
+ declare const _default: {
3
+ wrapper: WrapperHandler<import("../../types/open-next").InternalEvent, import("../../types/open-next").InternalResult>;
4
+ name: string;
5
+ supportStreaming: boolean;
6
+ };
7
+ export default _default;
@@ -1,6 +1,6 @@
1
1
  import { Readable } from "node:stream";
2
2
  import zlib from "node:zlib";
3
- import { debug, error } from "../adapters/logger";
3
+ import { debug, error } from "../../adapters/logger";
4
4
  function formatWarmerResponse(event) {
5
5
  const result = new Promise((resolve) => {
6
6
  setTimeout(() => {
@@ -0,0 +1,7 @@
1
+ import type { WrapperHandler } from "../../types/open-next";
2
+ declare const _default: {
3
+ wrapper: WrapperHandler<import("../../types/open-next").InternalEvent, import("../../types/open-next").InternalResult>;
4
+ name: string;
5
+ supportStreaming: boolean;
6
+ };
7
+ export default _default;
@@ -1,5 +1,5 @@
1
- import type { InternalEvent, InternalResult, WrapperHandler } from "../types/open-next";
2
- import { MiddlewareOutputEvent } from "../core/routingHandler";
1
+ import type { InternalEvent, InternalResult, WrapperHandler } from "../../types/open-next";
2
+ import type { MiddlewareOutputEvent } from "../../core/routingHandler";
3
3
  declare const _default: {
4
4
  wrapper: WrapperHandler<InternalEvent, InternalResult | ({
5
5
  type: "middleware";
@@ -0,0 +1,7 @@
1
+ import type { WrapperHandler } from "../../types/open-next";
2
+ declare const _default: {
3
+ name: string;
4
+ handler: WrapperHandler<import("../../types/open-next").InternalEvent, import("../../types/open-next").InternalResult>;
5
+ supportStreaming: boolean;
6
+ };
7
+ export default _default;
@@ -0,0 +1,6 @@
1
+ const dummyWrapper = async () => async () => undefined;
2
+ export default {
3
+ name: "dummy",
4
+ handler: dummyWrapper,
5
+ supportStreaming: false,
6
+ };
@@ -0,0 +1,7 @@
1
+ import type { WrapperHandler } from "../../types/open-next";
2
+ declare const _default: {
3
+ wrapper: WrapperHandler<import("../../types/open-next").InternalEvent, import("../../types/open-next").InternalResult>;
4
+ name: string;
5
+ supportStreaming: boolean;
6
+ };
7
+ export default _default;
@@ -1,5 +1,5 @@
1
1
  import { createServer } from "node:http";
2
- import { debug, error } from "../adapters/logger";
2
+ import { debug, error } from "../../adapters/logger";
3
3
  const wrapper = async (handler, converter) => {
4
4
  const server = createServer(async (req, res) => {
5
5
  const internalEvent = await converter.convertFrom(req);
@@ -1,5 +1,5 @@
1
- import { Plugin } from "esbuild";
2
- import { MiddlewareInfo } from "../types/next-types.js";
1
+ import type { Plugin } from "esbuild";
2
+ import type { MiddlewareInfo } from "../types/next-types.js";
3
3
  export interface IPluginSettings {
4
4
  nextDir: string;
5
5
  edgeFunctionHandlerPath?: string;
@@ -1,4 +1,4 @@
1
- import { Plugin } from "esbuild";
1
+ import type { Plugin } from "esbuild";
2
2
  export interface IPluginSettings {
3
3
  target: RegExp;
4
4
  replacements?: string[];
@@ -1,5 +1,5 @@
1
- import { Plugin } from "esbuild";
2
- import type { DefaultOverrideOptions, ImageLoader, IncludedImageLoader, LazyLoadedOverride, OverrideOptions } from "../types/open-next";
1
+ import type { Plugin } from "esbuild";
2
+ import type { DefaultOverrideOptions, ImageLoader, IncludedImageLoader, IncludedOriginResolver, IncludedWarmer, LazyLoadedOverride, OriginResolver, OverrideOptions, Warmer } from "../types/open-next";
3
3
  export interface IPluginSettings {
4
4
  overrides?: {
5
5
  wrapper?: DefaultOverrideOptions<any, any>["wrapper"];
@@ -8,6 +8,8 @@ export interface IPluginSettings {
8
8
  queue?: OverrideOptions["queue"];
9
9
  incrementalCache?: OverrideOptions["incrementalCache"];
10
10
  imageLoader?: LazyLoadedOverride<ImageLoader> | IncludedImageLoader;
11
+ originResolver?: LazyLoadedOverride<OriginResolver> | IncludedOriginResolver;
12
+ warmer?: LazyLoadedOverride<Warmer> | IncludedWarmer;
11
13
  };
12
14
  fnName?: string;
13
15
  }
@@ -1,11 +1,33 @@
1
1
  import { readFileSync } from "node:fs";
2
2
  import logger from "../logger.js";
3
- function getOverrideOrDefault(override, defaultOverride) {
3
+ function getOverrideOrDummy(override) {
4
4
  if (typeof override === "string") {
5
5
  return override;
6
6
  }
7
- return defaultOverride;
7
+ // We can return dummy here because if it's not a string, it's a LazyLoadedOverride
8
+ return "dummy";
8
9
  }
10
+ // This could be useful in the future to map overrides to nested folders
11
+ const nameToFolder = {
12
+ wrapper: "wrappers",
13
+ converter: "converters",
14
+ tagCache: "tagCache",
15
+ queue: "queue",
16
+ incrementalCache: "incrementalCache",
17
+ imageLoader: "imageLoader",
18
+ originResolver: "originResolver",
19
+ warmer: "warmer",
20
+ };
21
+ const defaultOverrides = {
22
+ wrapper: "aws-lambda",
23
+ converter: "aws-apigw-v2",
24
+ tagCache: "dynamodb",
25
+ queue: "sqs",
26
+ incrementalCache: "s3",
27
+ imageLoader: "s3",
28
+ originResolver: "pattern-env",
29
+ warmer: "aws-lambda",
30
+ };
9
31
  /**
10
32
  * @param opts.overrides - The name of the overrides to use
11
33
  * @returns
@@ -17,24 +39,14 @@ export function openNextResolvePlugin({ overrides, fnName, }) {
17
39
  logger.debug(`OpenNext Resolve plugin for ${fnName}`);
18
40
  build.onLoad({ filter: /core(\/|\\)resolve\.js/g }, async (args) => {
19
41
  let contents = readFileSync(args.path, "utf-8");
20
- //TODO: refactor this. Every override should be at the same place so we can generate this dynamically
21
- if (overrides?.wrapper) {
22
- contents = contents.replace("../wrappers/aws-lambda.js", `../wrappers/${getOverrideOrDefault(overrides.wrapper, "aws-lambda")}.js`);
23
- }
24
- if (overrides?.converter) {
25
- contents = contents.replace("../converters/aws-apigw-v2.js", `../converters/${getOverrideOrDefault(overrides.converter, "dummy")}.js`);
26
- }
27
- if (overrides?.tagCache) {
28
- contents = contents.replace("../cache/tag/dynamodb.js", `../cache/tag/${getOverrideOrDefault(overrides.tagCache, "dynamodb-lite")}.js`);
29
- }
30
- if (overrides?.queue) {
31
- contents = contents.replace("../queue/sqs.js", `../queue/${getOverrideOrDefault(overrides.queue, "sqs-lite")}.js`);
32
- }
33
- if (overrides?.incrementalCache) {
34
- contents = contents.replace("../cache/incremental/s3.js", `../cache/incremental/${getOverrideOrDefault(overrides.incrementalCache, "s3-lite")}.js`);
35
- }
36
- if (overrides?.imageLoader) {
37
- contents = contents.replace("../overrides/imageLoader/s3.js", `../overrides/imageLoader/${getOverrideOrDefault(overrides.imageLoader, "s3")}.js`);
42
+ const overridesEntries = Object.entries(overrides ?? {});
43
+ for (const [overrideName, overrideValue] of overridesEntries) {
44
+ if (!overrideValue) {
45
+ continue;
46
+ }
47
+ const folder = nameToFolder[overrideName];
48
+ const defaultOverride = defaultOverrides[overrideName];
49
+ contents = contents.replace(`../overrides/${folder}/${defaultOverride}.js`, `../overrides/${folder}/${getOverrideOrDummy(overrideValue)}.js`);
38
50
  }
39
51
  return {
40
52
  contents,
@@ -1,7 +1,8 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
- import { APIGatewayProxyEventV2, Context } from "aws-lambda";
4
- import { Writable } from "stream";
3
+ /// <reference types="node" />
4
+ import type { APIGatewayProxyEventV2, Context } from "aws-lambda";
5
+ import type { Writable } from "stream";
5
6
  export interface ResponseStream extends Writable {
6
7
  getBufferedData(): Buffer;
7
8
  setContentType(contentType: string): void;
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  interface CachedFetchValue {
3
4
  kind: "FETCH";
4
5
  data: {
@@ -1,5 +1,5 @@
1
1
  import type { IncomingMessage, OpenNextNodeResponse } from "../http/index.js";
2
- import { InternalEvent } from "./open-next";
2
+ import type { InternalEvent } from "./open-next";
3
3
  type RemotePattern = {
4
4
  protocol?: "http" | "https";
5
5
  hostname: string;
@@ -55,6 +55,7 @@ export type Header = {
55
55
  export interface i18nConfig {
56
56
  locales: string[];
57
57
  defaultLocale: string;
58
+ localeDetection?: false;
58
59
  }
59
60
  export interface NextConfig {
60
61
  basePath?: string;
@@ -66,6 +67,7 @@ export interface NextConfig {
66
67
  appDir?: boolean;
67
68
  };
68
69
  images: ImageConfig;
70
+ poweredByHeader?: boolean;
69
71
  }
70
72
  export interface RouteDefinition {
71
73
  page: string;
@@ -1,13 +1,14 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
3
  /// <reference types="node" />
4
+ /// <reference types="node" />
4
5
  import type { Readable } from "node:stream";
5
6
  import type { ReadableStream } from "node:stream/web";
6
7
  import type { StreamCreator } from "../http/index.js";
7
8
  import type { WarmerEvent, WarmerResponse } from "../adapters/warmer-function";
8
- import type { IncrementalCache } from "../cache/incremental/types";
9
- import type { TagCache } from "../cache/tag/types";
10
- import type { Queue } from "../queue/types";
9
+ import type { IncrementalCache } from "../overrides/incrementalCache/types";
10
+ import type { Queue } from "../overrides/queue/types";
11
+ import type { TagCache } from "../overrides/tagCache/types";
11
12
  export type BaseEventOrResult<T extends string = string> = {
12
13
  type: T;
13
14
  };
@@ -93,6 +94,8 @@ export type IncludedQueue = "sqs" | "sqs-lite";
93
94
  export type IncludedIncrementalCache = "s3" | "s3-lite";
94
95
  export type IncludedTagCache = "dynamodb" | "dynamodb-lite";
95
96
  export type IncludedImageLoader = "s3" | "host";
97
+ export type IncludedOriginResolver = "pattern-env";
98
+ export type IncludedWarmer = "aws-lambda";
96
99
  export interface DefaultOverrideOptions<E extends BaseEventOrResult = InternalEvent, R extends BaseEventOrResult = InternalResult> {
97
100
  /**
98
101
  * This is the main entrypoint of your app.
@@ -128,6 +131,30 @@ export interface OverrideOptions extends DefaultOverrideOptions {
128
131
  */
129
132
  queue?: IncludedQueue | LazyLoadedOverride<Queue>;
130
133
  }
134
+ export interface InstallOptions {
135
+ /**
136
+ * List of packages to install
137
+ * @example
138
+ * ```ts
139
+ * install: {
140
+ * packages: ["sharp@0.32"]
141
+ * }
142
+ * ```
143
+ */
144
+ packages: string[];
145
+ /**
146
+ * @default "arm64"
147
+ */
148
+ arch?: "x64" | "arm64";
149
+ /**
150
+ * @default "18"
151
+ */
152
+ nodeVersion?: "18" | "20" | "22";
153
+ /**
154
+ * @default "glibc"
155
+ */
156
+ libc?: "glibc" | "musl";
157
+ }
131
158
  export interface DefaultFunctionOptions<E extends BaseEventOrResult = InternalEvent, R extends BaseEventOrResult = InternalResult> {
132
159
  /**
133
160
  * Minify the server bundle.
@@ -143,6 +170,13 @@ export interface DefaultFunctionOptions<E extends BaseEventOrResult = InternalEv
143
170
  * Enable overriding the default lambda.
144
171
  */
145
172
  override?: DefaultOverrideOptions<E, R>;
173
+ /**
174
+ * Install options for the function.
175
+ * This is used to install additional packages to this function.
176
+ * For image optimization, it will install sharp by default.
177
+ * @default undefined
178
+ */
179
+ install?: InstallOptions;
146
180
  }
147
181
  export interface FunctionOptions extends DefaultFunctionOptions {
148
182
  /**
@@ -210,7 +244,7 @@ export interface OpenNextConfig {
210
244
  * OPEN_NEXT_ORIGIN should be a json stringified object with the key of the splitted function as key and the origin as value
211
245
  * @default "pattern-env"
212
246
  */
213
- originResolver?: "pattern-env" | LazyLoadedOverride<OriginResolver>;
247
+ originResolver?: IncludedOriginResolver | LazyLoadedOverride<OriginResolver>;
214
248
  };
215
249
  /**
216
250
  * Override the default warmer
@@ -219,7 +253,7 @@ export interface OpenNextConfig {
219
253
  * @default undefined
220
254
  */
221
255
  warmer?: DefaultFunctionOptions<WarmerEvent, WarmerResponse> & {
222
- invokeFunction: "aws-lambda" | LazyLoadedOverride<Warmer>;
256
+ invokeFunction: IncludedWarmer | LazyLoadedOverride<Warmer>;
223
257
  };
224
258
  /**
225
259
  * Override the default revalidate function
@@ -244,14 +278,6 @@ export interface OpenNextConfig {
244
278
  * @default "s3"
245
279
  */
246
280
  loader?: IncludedImageLoader | LazyLoadedOverride<ImageLoader>;
247
- /**
248
- * @default "arm64"
249
- */
250
- arch?: "x64" | "arm64";
251
- /**
252
- * @default "18"
253
- */
254
- nodeVersion?: "18" | "20";
255
281
  };
256
282
  /**
257
283
  * Override the default initialization function
package/package.json CHANGED
@@ -3,14 +3,14 @@
3
3
  "access": "public"
4
4
  },
5
5
  "name": "@opennextjs/aws",
6
- "version": "3.1.6",
6
+ "version": "3.2.0",
7
7
  "bin": {
8
8
  "open-next": "./dist/index.js"
9
9
  },
10
10
  "license": "MIT",
11
11
  "type": "module",
12
12
  "description": "Open source Next.js serverless adapter",
13
- "homepage": "https://open-next.js.org",
13
+ "homepage": "https://opennext.js.org/aws",
14
14
  "main": "./dist/index.js",
15
15
  "exports": {
16
16
  "./*": "./dist/*"
@@ -1,6 +0,0 @@
1
- import { Converter, InternalEvent, InternalResult } from "../types/open-next";
2
- import { MiddlewareOutputEvent } from "../core/routingHandler";
3
- declare const converter: Converter<InternalEvent, InternalResult | ({
4
- type: "middleware";
5
- } & MiddlewareOutputEvent)>;
6
- export default converter;
@@ -1,4 +0,0 @@
1
- import { Converter } from "../types/open-next";
2
- import { RevalidateEvent } from "../adapters/revalidate";
3
- declare const converter: Converter<RevalidateEvent, RevalidateEvent>;
4
- export default converter;
@@ -1,7 +0,0 @@
1
- import { WrapperHandler } from "../types/open-next";
2
- declare const _default: {
3
- wrapper: WrapperHandler<import("../types/open-next").InternalEvent, import("../types/open-next").InternalResult>;
4
- name: string;
5
- supportStreaming: boolean;
6
- };
7
- export default _default;
@@ -1,7 +0,0 @@
1
- import type { WrapperHandler } from "../types/open-next";
2
- declare const _default: {
3
- wrapper: WrapperHandler<import("../types/open-next").InternalEvent, import("../types/open-next").InternalResult>;
4
- name: string;
5
- supportStreaming: boolean;
6
- };
7
- export default _default;
@@ -1,7 +0,0 @@
1
- import type { WrapperHandler } from "../types/open-next";
2
- declare const _default: {
3
- wrapper: WrapperHandler<import("../types/open-next").InternalEvent, import("../types/open-next").InternalResult>;
4
- name: string;
5
- supportStreaming: boolean;
6
- };
7
- export default _default;
File without changes
File without changes
File without changes
File without changes