cdk-nextjs 0.6.1 → 0.7.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/.jsii +2467 -2714
- package/.jsii.tabl.json +1 -1
- package/API.md +1725 -1909
- package/CLAUDE.md +2 -1
- package/README.md +429 -130
- package/assets/lambdas/post-deploy/post-deploy.lambda/index.js +152 -170
- package/assets/lambdas/redeploy-stage/redeploy-stage.lambda/index.js +875 -0
- package/docs/adapter-runtime.md +185 -0
- package/docs/breaking-changes.md +687 -4
- package/docs/caching-guide.md +156 -112
- package/docs/cdk-nextjs-cfn-exec-policy.json +2 -1
- package/docs/development-guide.md +1 -1
- package/docs/harness-coverage.md +598 -0
- package/docs/init-cache-deployment.md +32 -1
- package/docs/next-build-output-guide.md +30 -20
- package/examples/README.md +5 -1
- package/lib/adapter/__fixtures__/app-playground-base-path.json +4926 -0
- package/lib/adapter/__fixtures__/app-playground.json +4917 -0
- package/lib/adapter/__fixtures__/pages-i18n.json +1728 -0
- package/lib/adapter/adapter.mjs +1548 -185
- package/lib/adapter/adapter.test.js +106 -0
- package/lib/adapter/aws-cache-store.d.ts +489 -0
- package/lib/adapter/aws-cache-store.js +1004 -0
- package/lib/adapter/aws-cache-store.test.d.ts +1 -0
- package/lib/adapter/aws-cache-store.test.js +361 -0
- package/lib/adapter/build-outputs.d.ts +80 -0
- package/lib/adapter/build-outputs.js +852 -0
- package/lib/adapter/build-outputs.test.d.ts +1 -0
- package/lib/adapter/build-outputs.test.js +861 -0
- package/lib/adapter/cache-handler.d.ts +9 -2
- package/lib/adapter/cache-handler.js +72 -96
- package/lib/adapter/cache-handler.mjs +18956 -17774
- package/lib/adapter/cache-handler.test.js +263 -31
- package/lib/adapter/cache-kinds.d.ts +32 -0
- package/lib/adapter/cache-kinds.js +35 -0
- package/lib/adapter/cache-kinds.test.d.ts +1 -0
- package/lib/adapter/cache-kinds.test.js +69 -0
- package/lib/adapter/cache-utils.d.ts +90 -0
- package/lib/adapter/cache-utils.js +199 -4
- package/lib/adapter/cache-utils.test.d.ts +1 -0
- package/lib/adapter/cache-utils.test.js +179 -0
- package/lib/adapter/function-groups.d.ts +215 -0
- package/lib/adapter/function-groups.js +1099 -0
- package/lib/adapter/function-groups.test.d.ts +1 -0
- package/lib/adapter/function-groups.test.js +743 -0
- package/lib/adapter/init-cache.d.ts +6 -0
- package/lib/adapter/init-cache.js +245 -0
- package/lib/adapter/init-cache.test.d.ts +1 -0
- package/lib/adapter/init-cache.test.js +137 -0
- package/lib/adapter/local-file-cache-handler.d.ts +23 -0
- package/lib/adapter/local-file-cache-handler.js +52 -1
- package/lib/adapter/memory-cache-handler.d.ts +26 -17
- package/lib/adapter/memory-cache-handler.js +32 -50
- package/lib/adapter/memory-cache-handler.test.js +105 -85
- package/lib/adapter/s3-cache-handler.d.ts +179 -40
- package/lib/adapter/s3-cache-handler.js +807 -277
- package/lib/adapter/s3-cache-handler.test.js +1186 -31
- package/lib/adapter/use-cache-common.d.ts +90 -0
- package/lib/adapter/use-cache-common.js +250 -0
- package/lib/adapter/use-cache-common.test.d.ts +1 -0
- package/lib/adapter/use-cache-common.test.js +646 -0
- package/lib/adapter/use-cache-default-handler.d.ts +24 -0
- package/lib/adapter/use-cache-default-handler.js +90 -0
- package/lib/adapter/use-cache-default-handler.mjs +38645 -0
- package/lib/adapter/use-cache-handlers.test.d.ts +1 -0
- package/lib/adapter/use-cache-handlers.test.js +349 -0
- package/lib/adapter/use-cache-remote-handler.d.ts +26 -0
- package/lib/adapter/use-cache-remote-handler.js +186 -0
- package/lib/{image-optimization/handler.mjs → adapter/use-cache-remote-handler.mjs} +33572 -38798
- package/lib/generated-structs/OptionalNextjsApiProps.d.ts +59 -0
- package/lib/generated-structs/OptionalNextjsApiProps.js +3 -0
- package/lib/generated-structs/OptionalNextjsCacheProps.d.ts +15 -6
- package/lib/generated-structs/OptionalNextjsCacheProps.js +1 -1
- package/lib/generated-structs/OptionalNextjsContainersProps.d.ts +25 -11
- package/lib/generated-structs/OptionalNextjsContainersProps.js +1 -1
- package/lib/generated-structs/OptionalNextjsDistributionProps.d.ts +31 -9
- package/lib/generated-structs/OptionalNextjsDistributionProps.js +1 -1
- package/lib/generated-structs/OptionalNextjsPostDeployProps.d.ts +13 -0
- package/lib/generated-structs/OptionalNextjsPostDeployProps.js +1 -1
- package/lib/generated-structs/OptionalPostDeployCustomResourceProperties.d.ts +11 -2
- package/lib/generated-structs/OptionalPostDeployCustomResourceProperties.js +1 -1
- package/lib/index.d.ts +6 -7
- package/lib/index.js +2 -4
- package/lib/lambdas/post-deploy/post-deploy.lambda.js +3 -2
- package/lib/lambdas/post-deploy/prune-cache-bucket.d.ts +7 -3
- package/lib/lambdas/post-deploy/prune-cache-bucket.js +57 -71
- package/lib/lambdas/post-deploy/prune-cache-bucket.test.d.ts +1 -0
- package/lib/lambdas/post-deploy/prune-cache-bucket.test.js +114 -0
- package/lib/lambdas/post-deploy/prune-revalidation-table.d.ts +1 -0
- package/lib/lambdas/post-deploy/prune-revalidation-table.js +23 -31
- package/lib/lambdas/post-deploy/prune-revalidation-table.test.d.ts +1 -0
- package/lib/lambdas/post-deploy/prune-revalidation-table.test.js +71 -0
- package/lib/lambdas/post-deploy/prune-s3.d.ts +19 -3
- package/lib/lambdas/post-deploy/prune-s3.js +54 -15
- package/lib/lambdas/post-deploy/prune-s3.test.d.ts +1 -0
- package/lib/lambdas/post-deploy/prune-s3.test.js +255 -0
- package/lib/lambdas/redeploy-stage/redeploy-stage-function.d.ts +13 -0
- package/lib/lambdas/redeploy-stage/redeploy-stage-function.js +55 -0
- package/lib/lambdas/redeploy-stage/redeploy-stage.d.ts +24 -0
- package/lib/lambdas/redeploy-stage/redeploy-stage.js +68 -0
- package/lib/lambdas/redeploy-stage/redeploy-stage.lambda.d.ts +20 -0
- package/lib/lambdas/redeploy-stage/redeploy-stage.lambda.js +24 -0
- package/lib/lambdas/redeploy-stage/redeploy-stage.test.d.ts +1 -0
- package/lib/lambdas/redeploy-stage/redeploy-stage.test.js +93 -0
- package/lib/nextjs-api.d.ts +107 -18
- package/lib/nextjs-api.js +349 -39
- package/lib/nextjs-api.test.js +582 -1
- package/lib/nextjs-build/global-containers.Dockerfile +15 -10
- package/lib/nextjs-build/nextjs-build.d.ts +339 -63
- package/lib/nextjs-build/nextjs-build.js +684 -327
- package/lib/nextjs-build/nextjs-build.test.d.ts +1 -0
- package/lib/nextjs-build/nextjs-build.test.js +412 -0
- package/lib/nextjs-build/patch-fetch.js +1 -1
- package/lib/nextjs-build/patch-fetch.test.js +166 -11
- package/lib/nextjs-build/regional-containers.Dockerfile +17 -10
- package/lib/nextjs-cache.d.ts +82 -4
- package/lib/nextjs-cache.js +186 -10
- package/lib/nextjs-cache.test.js +176 -1
- package/lib/nextjs-compute/nextjs-compute-base-props.d.ts +21 -8
- package/lib/nextjs-compute/nextjs-compute-base-props.js +41 -1
- package/lib/nextjs-compute/nextjs-compute-base-props.test.d.ts +1 -0
- package/lib/nextjs-compute/nextjs-compute-base-props.test.js +44 -0
- package/lib/nextjs-compute/nextjs-containers.d.ts +19 -0
- package/lib/nextjs-compute/nextjs-containers.js +57 -20
- package/lib/nextjs-compute/nextjs-functions.d.ts +122 -7
- package/lib/nextjs-compute/nextjs-functions.js +113 -67
- package/lib/nextjs-compute/nextjs-functions.test.d.ts +1 -0
- package/lib/nextjs-compute/nextjs-functions.test.js +99 -0
- package/lib/nextjs-distribution.d.ts +194 -23
- package/lib/nextjs-distribution.js +535 -62
- package/lib/nextjs-distribution.test.d.ts +1 -0
- package/lib/nextjs-distribution.test.js +697 -0
- package/lib/nextjs-post-deploy.d.ts +23 -3
- package/lib/nextjs-post-deploy.js +14 -10
- package/lib/nextjs-post-deploy.test.d.ts +1 -0
- package/lib/nextjs-post-deploy.test.js +34 -0
- package/lib/nextjs-static-assets.d.ts +23 -4
- package/lib/nextjs-static-assets.js +29 -6
- package/lib/nextjs-static-assets.test.js +20 -1
- package/lib/root-constructs/nextjs-base-construct.d.ts +105 -45
- package/lib/root-constructs/nextjs-base-construct.js +144 -34
- package/lib/root-constructs/nextjs-global-containers.d.ts +18 -20
- package/lib/root-constructs/nextjs-global-containers.js +20 -70
- package/lib/root-constructs/nextjs-global-functions.d.ts +26 -28
- package/lib/root-constructs/nextjs-global-functions.js +52 -69
- package/lib/root-constructs/nextjs-regional-containers.d.ts +25 -5
- package/lib/root-constructs/nextjs-regional-containers.js +17 -15
- package/lib/root-constructs/nextjs-regional-functions.d.ts +22 -18
- package/lib/root-constructs/nextjs-regional-functions.js +8 -25
- package/lib/runtime/api-gateway-path.d.ts +34 -0
- package/lib/runtime/api-gateway-path.js +71 -0
- package/lib/runtime/api-gateway-path.test.d.ts +1 -0
- package/lib/runtime/api-gateway-path.test.js +65 -0
- package/lib/runtime/case-redirect.d.ts +22 -0
- package/lib/runtime/case-redirect.js +63 -0
- package/lib/runtime/case-redirect.test.d.ts +1 -0
- package/lib/runtime/case-redirect.test.js +32 -0
- package/lib/runtime/core.d.ts +234 -0
- package/lib/runtime/core.js +1213 -0
- package/lib/runtime/core.test.d.ts +1 -0
- package/lib/runtime/core.test.js +1678 -0
- package/lib/runtime/deployment-root.d.ts +13 -0
- package/lib/runtime/deployment-root.js +29 -0
- package/lib/runtime/dispatch.d.ts +331 -0
- package/lib/runtime/dispatch.js +751 -0
- package/lib/runtime/dispatch.test.d.ts +1 -0
- package/lib/runtime/dispatch.test.js +853 -0
- package/lib/runtime/entrypoints.d.ts +57 -0
- package/lib/runtime/entrypoints.js +115 -0
- package/lib/runtime/http/abort-signal.d.ts +6 -0
- package/lib/runtime/http/abort-signal.js +19 -0
- package/lib/runtime/http/abort-signal.test.d.ts +1 -0
- package/lib/runtime/http/abort-signal.test.js +49 -0
- package/lib/runtime/http/node-server.d.ts +38 -0
- package/lib/runtime/http/node-server.js +99 -0
- package/lib/runtime/http/node-server.test.d.ts +1 -0
- package/lib/runtime/http/node-server.test.js +96 -0
- package/lib/runtime/http/node-sink.d.ts +16 -0
- package/lib/runtime/http/node-sink.js +48 -0
- package/lib/runtime/http/node-sink.test.d.ts +1 -0
- package/lib/runtime/http/node-sink.test.js +66 -0
- package/lib/runtime/http/request.d.ts +62 -0
- package/lib/runtime/http/request.js +134 -0
- package/lib/runtime/http/request.test.d.ts +1 -0
- package/lib/runtime/http/request.test.js +103 -0
- package/lib/runtime/http/response.d.ts +77 -0
- package/lib/runtime/http/response.js +229 -0
- package/lib/runtime/http/response.test.d.ts +1 -0
- package/lib/runtime/http/response.test.js +178 -0
- package/lib/runtime/http/sink.d.ts +73 -0
- package/lib/runtime/http/sink.js +188 -0
- package/lib/runtime/http/sink.test.d.ts +1 -0
- package/lib/runtime/http/sink.test.js +257 -0
- package/lib/runtime/image-utils.d.ts +78 -0
- package/lib/runtime/image-utils.js +129 -0
- package/lib/runtime/image-utils.test.d.ts +1 -0
- package/lib/runtime/image-utils.test.js +237 -0
- package/lib/runtime/image.d.ts +76 -0
- package/lib/runtime/image.js +296 -0
- package/lib/runtime/image.test.d.ts +1 -0
- package/lib/runtime/image.test.js +405 -0
- package/lib/runtime/lambda-event.d.ts +4 -0
- package/lib/runtime/lambda-event.js +113 -0
- package/lib/runtime/lambda-event.test.d.ts +1 -0
- package/lib/runtime/lambda-event.test.js +119 -0
- package/lib/runtime/lambda.mjs +41595 -0
- package/lib/runtime/load-module.d.ts +8 -0
- package/lib/runtime/load-module.js +35 -0
- package/lib/runtime/manifest.d.ts +215 -0
- package/lib/runtime/manifest.js +118 -0
- package/lib/runtime/middleware.d.ts +43 -0
- package/lib/runtime/middleware.js +113 -0
- package/lib/runtime/middleware.test.d.ts +1 -0
- package/lib/runtime/middleware.test.js +259 -0
- package/lib/runtime/next-modules.d.ts +55 -0
- package/lib/runtime/next-modules.js +124 -0
- package/lib/runtime/next-modules.test.d.ts +1 -0
- package/lib/runtime/next-modules.test.js +34 -0
- package/lib/runtime/public-files.d.ts +32 -0
- package/lib/runtime/public-files.js +117 -0
- package/lib/runtime/public-files.test.d.ts +1 -0
- package/lib/runtime/public-files.test.js +97 -0
- package/lib/runtime/server.mjs +41588 -0
- package/lib/runtime/static-files.d.ts +50 -0
- package/lib/runtime/static-files.js +266 -0
- package/lib/runtime/static-files.test.d.ts +1 -0
- package/lib/runtime/static-files.test.js +118 -0
- package/lib/runtime/util.d.ts +28 -0
- package/lib/runtime/util.js +79 -0
- package/lib/utils/base-path.d.ts +123 -11
- package/lib/utils/base-path.js +276 -39
- package/lib/utils/base-path.test.js +275 -50
- package/lib/utils/get-architecture.d.ts +7 -8
- package/lib/utils/get-architecture.js +12 -13
- package/lib/utils/zip-directory.d.ts +14 -0
- package/lib/utils/zip-directory.js +121 -0
- package/lib/utils/zip-directory.test.d.ts +1 -0
- package/lib/utils/zip-directory.test.js +99 -0
- package/package.json +22 -3
- package/scripts/capture-adapter-fixture.mjs +325 -0
- package/scripts/e2e-deploy.sh +398 -0
- package/scripts/e2e-harness/README.md +707 -0
- package/scripts/e2e-harness/app.js +370 -0
- package/scripts/e2e-harness/common.sh +249 -0
- package/scripts/e2e-harness/screen.mjs +302 -0
- package/scripts/e2e-harness/stage-proxy.mjs +145 -0
- package/scripts/e2e-harness/type-filters.mjs +47 -0
- package/scripts/e2e-logs.sh +75 -0
- package/scripts/e2e-offline.sh +91 -0
- package/scripts/e2e-sweep.sh +370 -0
- package/scripts/e2e-warm.sh +114 -0
- package/scripts/zero-config-build.mjs +418 -0
- package/docs/1k-concurrent-users-executions.png +0 -0
- package/docs/plans/adapter-runtime-release.md +0 -362
- package/docs/plans/phase-0-image-function-opt-in.md +0 -295
- package/lib/generated-structs/OptionalDockerImageFunctionProps.d.ts +0 -425
- package/lib/generated-structs/OptionalDockerImageFunctionProps.js +0 -3
- package/lib/image-optimization/handler-utils.d.ts +0 -34
- package/lib/image-optimization/handler-utils.js +0 -83
- package/lib/image-optimization/handler-utils.test.js +0 -178
- package/lib/nextjs-build/functions.Dockerfile +0 -31
- package/lib/nextjs-compute/nextjs-image-function.d.ts +0 -53
- package/lib/nextjs-compute/nextjs-image-function.js +0 -59
- package/lib/utils/experimental-flags.d.ts +0 -24
- package/lib/utils/experimental-flags.js +0 -30
- /package/lib/{image-optimization/handler-utils.test.d.ts → adapter/adapter.test.d.ts} +0 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare function crc32(data: Buffer): number;
|
|
2
|
+
/**
|
|
3
|
+
* Zip `dir` with its symlinks stored *as* symlinks, which Lambda extracts as
|
|
4
|
+
* such. `Code.fromAsset(dir)` can't be used for a deployment root because
|
|
5
|
+
* `cdk-assets` dereferences them when it zips, and under pnpm that
|
|
6
|
+
* materializes a store package at its logical path while the siblings it
|
|
7
|
+
* resolves its own dependencies through stay behind in the store. Preserved,
|
|
8
|
+
* the links resolve the way they do in the workspace, and the way they do in
|
|
9
|
+
* a Containers image (`COPY` preserves them too).
|
|
10
|
+
*
|
|
11
|
+
* Deterministic — entries sorted, timestamps fixed, modes normalized — so the
|
|
12
|
+
* asset hash only changes when the contents do.
|
|
13
|
+
*/
|
|
14
|
+
export declare function zipDirectory(dir: string): Buffer;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.crc32 = crc32;
|
|
4
|
+
exports.zipDirectory = zipDirectory;
|
|
5
|
+
// Zip headers are bit fields.
|
|
6
|
+
/* eslint-disable no-bitwise */
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
8
|
+
const node_path_1 = require("node:path");
|
|
9
|
+
const node_zlib_1 = require("node:zlib");
|
|
10
|
+
/** `zlib.crc32` only exists from Node 20.15, and synth runs on the user's Node. */
|
|
11
|
+
const CRC_TABLE = Array.from({ length: 256 }, (_, n) => {
|
|
12
|
+
let c = n;
|
|
13
|
+
for (let k = 0; k < 8; k++)
|
|
14
|
+
c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;
|
|
15
|
+
return c >>> 0;
|
|
16
|
+
});
|
|
17
|
+
function crc32(data) {
|
|
18
|
+
let crc = 0xffffffff;
|
|
19
|
+
for (let i = 0; i < data.length; i++) {
|
|
20
|
+
crc = CRC_TABLE[(crc ^ data[i]) & 0xff] ^ (crc >>> 8);
|
|
21
|
+
}
|
|
22
|
+
return (crc ^ 0xffffffff) >>> 0;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Zip `dir` with its symlinks stored *as* symlinks, which Lambda extracts as
|
|
26
|
+
* such. `Code.fromAsset(dir)` can't be used for a deployment root because
|
|
27
|
+
* `cdk-assets` dereferences them when it zips, and under pnpm that
|
|
28
|
+
* materializes a store package at its logical path while the siblings it
|
|
29
|
+
* resolves its own dependencies through stay behind in the store. Preserved,
|
|
30
|
+
* the links resolve the way they do in the workspace, and the way they do in
|
|
31
|
+
* a Containers image (`COPY` preserves them too).
|
|
32
|
+
*
|
|
33
|
+
* Deterministic — entries sorted, timestamps fixed, modes normalized — so the
|
|
34
|
+
* asset hash only changes when the contents do.
|
|
35
|
+
*/
|
|
36
|
+
function zipDirectory(dir) {
|
|
37
|
+
const chunks = [];
|
|
38
|
+
const central = [];
|
|
39
|
+
let offset = 0;
|
|
40
|
+
let count = 0;
|
|
41
|
+
const add = (name, mode, content) => {
|
|
42
|
+
// Links stay stored: some extractors read a deflated link's target as-is.
|
|
43
|
+
const deflate = content.length > 0 && (mode & 0o170000) === 0o100000;
|
|
44
|
+
const data = deflate ? (0, node_zlib_1.deflateRawSync)(content) : content;
|
|
45
|
+
const nameBytes = Buffer.from(name, "utf8");
|
|
46
|
+
// Version 2.0; UTF-8 names; 1980-01-01 00:00; no extra fields.
|
|
47
|
+
const fields = Buffer.alloc(26);
|
|
48
|
+
fields.writeUInt16LE(20, 0);
|
|
49
|
+
fields.writeUInt16LE(0x0800, 2);
|
|
50
|
+
fields.writeUInt16LE(deflate ? 8 : 0, 4);
|
|
51
|
+
fields.writeUInt16LE(0, 6);
|
|
52
|
+
fields.writeUInt16LE(0x21, 8);
|
|
53
|
+
fields.writeUInt32LE(crc32(content), 10);
|
|
54
|
+
fields.writeUInt32LE(data.length, 14);
|
|
55
|
+
fields.writeUInt32LE(content.length, 18);
|
|
56
|
+
fields.writeUInt16LE(nameBytes.length, 22);
|
|
57
|
+
const local = Buffer.alloc(4);
|
|
58
|
+
local.writeUInt32LE(0x04034b50);
|
|
59
|
+
chunks.push(local, fields, nameBytes, data);
|
|
60
|
+
const entry = Buffer.alloc(46);
|
|
61
|
+
entry.writeUInt32LE(0x02014b50, 0);
|
|
62
|
+
// Made by Unix, so extractors honor the mode in the external attributes.
|
|
63
|
+
entry.writeUInt16LE(0x0314, 4);
|
|
64
|
+
fields.copy(entry, 6);
|
|
65
|
+
entry.writeUInt32LE(((mode << 16) | (name.endsWith("/") ? 0x10 : 0)) >>> 0, 38);
|
|
66
|
+
entry.writeUInt32LE(offset, 42);
|
|
67
|
+
central.push(entry, nameBytes);
|
|
68
|
+
offset += 30 + nameBytes.length + data.length;
|
|
69
|
+
count++;
|
|
70
|
+
};
|
|
71
|
+
const walk = (relative) => {
|
|
72
|
+
// Code-unit order rather than `localeCompare`, which varies by locale.
|
|
73
|
+
const names = (0, node_fs_1.readdirSync)((0, node_path_1.join)(dir, relative)).sort();
|
|
74
|
+
for (const name of names) {
|
|
75
|
+
const path = (0, node_path_1.join)(dir, relative, name);
|
|
76
|
+
const key = relative ? `${relative}/${name}` : name;
|
|
77
|
+
const stats = (0, node_fs_1.lstatSync)(path);
|
|
78
|
+
if (stats.isSymbolicLink()) {
|
|
79
|
+
add(key, 0o120777, Buffer.from((0, node_fs_1.readlinkSync)(path), "utf8"));
|
|
80
|
+
}
|
|
81
|
+
else if (stats.isDirectory()) {
|
|
82
|
+
add(`${key}/`, 0o40755, Buffer.alloc(0));
|
|
83
|
+
walk(key);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
add(key, stats.mode & 0o111 ? 0o100755 : 0o100644, (0, node_fs_1.readFileSync)(path));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
walk("");
|
|
91
|
+
// Zip64 only for the entry count: a pnpm root reaches 65,535 files,
|
|
92
|
+
// directories and links well inside Lambda's 250 MB unzipped cap, but that
|
|
93
|
+
// cap keeps every size and offset inside 32 bits.
|
|
94
|
+
const centralSize = central.reduce((sum, chunk) => sum + chunk.length, 0);
|
|
95
|
+
const zip64 = [];
|
|
96
|
+
if (count > 0xffff) {
|
|
97
|
+
const record = Buffer.alloc(56);
|
|
98
|
+
record.writeUInt32LE(0x06064b50, 0);
|
|
99
|
+
record.writeBigUInt64LE(BigInt(44), 4);
|
|
100
|
+
record.writeUInt16LE(0x032d, 12);
|
|
101
|
+
record.writeUInt16LE(45, 14);
|
|
102
|
+
record.writeBigUInt64LE(BigInt(count), 24);
|
|
103
|
+
record.writeBigUInt64LE(BigInt(count), 32);
|
|
104
|
+
record.writeBigUInt64LE(BigInt(centralSize), 40);
|
|
105
|
+
record.writeBigUInt64LE(BigInt(offset), 48);
|
|
106
|
+
const locator = Buffer.alloc(20);
|
|
107
|
+
locator.writeUInt32LE(0x07064b50, 0);
|
|
108
|
+
locator.writeBigUInt64LE(BigInt(offset + centralSize), 8);
|
|
109
|
+
locator.writeUInt32LE(1, 16);
|
|
110
|
+
zip64.push(record, locator);
|
|
111
|
+
}
|
|
112
|
+
const end = Buffer.alloc(22);
|
|
113
|
+
end.writeUInt32LE(0x06054b50, 0);
|
|
114
|
+
// 0xffff defers to the Zip64 record.
|
|
115
|
+
end.writeUInt16LE(Math.min(count, 0xffff), 8);
|
|
116
|
+
end.writeUInt16LE(Math.min(count, 0xffff), 10);
|
|
117
|
+
end.writeUInt32LE(centralSize, 12);
|
|
118
|
+
end.writeUInt32LE(offset, 16);
|
|
119
|
+
return Buffer.concat([...chunks, ...central, ...zip64, end]);
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemlwLWRpcmVjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy96aXAtZGlyZWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBYUEsc0JBTUM7QUFjRCxvQ0EyRkM7QUE1SEQsOEJBQThCO0FBQzlCLCtCQUErQjtBQUMvQixxQ0FBNkU7QUFDN0UseUNBQWlDO0FBQ2pDLHlDQUEyQztBQUUzQyxtRkFBbUY7QUFDbkYsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNyRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBZ0IsS0FBSyxDQUFDLElBQVk7SUFDaEMsSUFBSSxHQUFHLEdBQUcsVUFBVSxDQUFDO0lBQ3JCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDckMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsS0FB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RUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFELE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLEdBQUcsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLHFDQUFxQztJQUNyQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlDLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0MsR0FBRyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDOUIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gWmlwIGhlYWRlcnMgYXJlIGJpdCBmaWVsZHMuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlICovXG5pbXBvcnQgeyBsc3RhdFN5bmMsIHJlYWRkaXJTeW5jLCByZWFkRmlsZVN5bmMsIHJlYWRsaW5rU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgZGVmbGF0ZVJhd1N5bmMgfSBmcm9tIFwibm9kZTp6bGliXCI7XG5cbi8qKiBgemxpYi5jcmMzMmAgb25seSBleGlzdHMgZnJvbSBOb2RlIDIwLjE1LCBhbmQgc3ludGggcnVucyBvbiB0aGUgdXNlcidzIE5vZGUuICovXG5jb25zdCBDUkNfVEFCTEUgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAyNTYgfSwgKF8sIG4pID0+IHtcbiAgbGV0IGMgPSBuO1xuICBmb3IgKGxldCBrID0gMDsgayA8IDg7IGsrKykgYyA9IGMgJiAxID8gMHhlZGI4ODMyMCBeIChjID4+PiAxKSA6IGMgPj4+IDE7XG4gIHJldHVybiBjID4+PiAwO1xufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmMzMihkYXRhOiBCdWZmZXIpOiBudW1iZXIge1xuICBsZXQgY3JjID0gMHhmZmZmZmZmZjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgY3JjID0gQ1JDX1RBQkxFWyhjcmMgXiBkYXRhW2ldKSAmIDB4ZmZdIF4gKGNyYyA+Pj4gOCk7XG4gIH1cbiAgcmV0dXJuIChjcmMgXiAweGZmZmZmZmZmKSA+Pj4gMDtcbn1cblxuLyoqXG4gKiBaaXAgYGRpcmAgd2l0aCBpdHMgc3ltbGlua3Mgc3RvcmVkICphcyogc3ltbGlua3MsIHdoaWNoIExhbWJkYSBleHRyYWN0cyBhc1xuICogc3VjaC4gYENvZGUuZnJvbUFzc2V0KGRpcilgIGNhbid0IGJlIHVzZWQgZm9yIGEgZGVwbG95bWVudCByb290IGJlY2F1c2VcbiAqIGBjZGstYXNzZXRzYCBkZXJlZmVyZW5jZXMgdGhlbSB3aGVuIGl0IHppcHMsIGFuZCB1bmRlciBwbnBtIHRoYXRcbiAqIG1hdGVyaWFsaXplcyBhIHN0b3JlIHBhY2thZ2UgYXQgaXRzIGxvZ2ljYWwgcGF0aCB3aGlsZSB0aGUgc2libGluZ3MgaXRcbiAqIHJlc29sdmVzIGl0cyBvd24gZGVwZW5kZW5jaWVzIHRocm91Z2ggc3RheSBiZWhpbmQgaW4gdGhlIHN0b3JlLiBQcmVzZXJ2ZWQsXG4gKiB0aGUgbGlua3MgcmVzb2x2ZSB0aGUgd2F5IHRoZXkgZG8gaW4gdGhlIHdvcmtzcGFjZSwgYW5kIHRoZSB3YXkgdGhleSBkbyBpblxuICogYSBDb250YWluZXJzIGltYWdlIChgQ09QWWAgcHJlc2VydmVzIHRoZW0gdG9vKS5cbiAqXG4gKiBEZXRlcm1pbmlzdGljIOKAlCBlbnRyaWVzIHNvcnRlZCwgdGltZXN0YW1wcyBmaXhlZCwgbW9kZXMgbm9ybWFsaXplZCDigJQgc28gdGhlXG4gKiBhc3NldCBoYXNoIG9ubHkgY2hhbmdlcyB3aGVuIHRoZSBjb250ZW50cyBkby5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHppcERpcmVjdG9yeShkaXI6IHN0cmluZyk6IEJ1ZmZlciB7XG4gIGNvbnN0IGNodW5rczogQnVmZmVyW10gPSBbXTtcbiAgY29uc3QgY2VudHJhbDogQnVmZmVyW10gPSBbXTtcbiAgbGV0IG9mZnNldCA9IDA7XG4gIGxldCBjb3VudCA9IDA7XG5cbiAgY29uc3QgYWRkID0gKG5hbWU6IHN0cmluZywgbW9kZTogbnVtYmVyLCBjb250ZW50OiBCdWZmZXIpID0+IHtcbiAgICAvLyBMaW5rcyBzdGF5IHN0b3JlZDogc29tZSBleHRyYWN0b3JzIHJlYWQgYSBkZWZsYXRlZCBsaW5rJ3MgdGFyZ2V0IGFzLWlzLlxuICAgIGNvbnN0IGRlZmxhdGUgPSBjb250ZW50Lmxlbmd0aCA+IDAgJiYgKG1vZGUgJiAwbzE3MDAwMCkgPT09IDBvMTAwMDAwO1xuICAgIGNvbnN0IGRhdGEgPSBkZWZsYXRlID8gZGVmbGF0ZVJhd1N5bmMoY29udGVudCkgOiBjb250ZW50O1xuICAgIGNvbnN0IG5hbWVCeXRlcyA9IEJ1ZmZlci5mcm9tKG5hbWUsIFwidXRmOFwiKTtcbiAgICAvLyBWZXJzaW9uIDIuMDsgVVRGLTggbmFtZXM7IDE5ODAtMDEtMDEgMDA6MDA7IG5vIGV4dHJhIGZpZWxkcy5cbiAgICBjb25zdCBmaWVsZHMgPSBCdWZmZXIuYWxsb2MoMjYpO1xuICAgIGZpZWxkcy53cml0ZVVJbnQxNkxFKDIwLCAwKTtcbiAgICBmaWVsZHMud3JpdGVVSW50MTZMRSgweDA4MDAsIDIpO1xuICAgIGZpZWxkcy53cml0ZVVJbnQxNkxFKGRlZmxhdGUgPyA4IDogMCwgNCk7XG4gICAgZmllbGRzLndyaXRlVUludDE2TEUoMCwgNik7XG4gICAgZmllbGRzLndyaXRlVUludDE2TEUoMHgyMSwgOCk7XG4gICAgZmllbGRzLndyaXRlVUludDMyTEUoY3JjMzIoY29udGVudCksIDEwKTtcbiAgICBmaWVsZHMud3JpdGVVSW50MzJMRShkYXRhLmxlbmd0aCwgMTQpO1xuICAgIGZpZWxkcy53cml0ZVVJbnQzMkxFKGNvbnRlbnQubGVuZ3RoLCAxOCk7XG4gICAgZmllbGRzLndyaXRlVUludDE2TEUobmFtZUJ5dGVzLmxlbmd0aCwgMjIpO1xuXG4gICAgY29uc3QgbG9jYWwgPSBCdWZmZXIuYWxsb2MoNCk7XG4gICAgbG9jYWwud3JpdGVVSW50MzJMRSgweDA0MDM0YjUwKTtcbiAgICBjaHVua3MucHVzaChsb2NhbCwgZmllbGRzLCBuYW1lQnl0ZXMsIGRhdGEpO1xuXG4gICAgY29uc3QgZW50cnkgPSBCdWZmZXIuYWxsb2MoNDYpO1xuICAgIGVudHJ5LndyaXRlVUludDMyTEUoMHgwMjAxNGI1MCwgMCk7XG4gICAgLy8gTWFkZSBieSBVbml4LCBzbyBleHRyYWN0b3JzIGhvbm9yIHRoZSBtb2RlIGluIHRoZSBleHRlcm5hbCBhdHRyaWJ1dGVzLlxuICAgIGVudHJ5LndyaXRlVUludDE2TEUoMHgwMzE0LCA0KTtcbiAgICBmaWVsZHMuY29weShlbnRyeSwgNik7XG4gICAgZW50cnkud3JpdGVVSW50MzJMRShcbiAgICAgICgobW9kZSA8PCAxNikgfCAobmFtZS5lbmRzV2l0aChcIi9cIikgPyAweDEwIDogMCkpID4+PiAwLFxuICAgICAgMzgsXG4gICAgKTtcbiAgICBlbnRyeS53cml0ZVVJbnQzMkxFKG9mZnNldCwgNDIpO1xuICAgIGNlbnRyYWwucHVzaChlbnRyeSwgbmFtZUJ5dGVzKTtcblxuICAgIG9mZnNldCArPSAzMCArIG5hbWVCeXRlcy5sZW5ndGggKyBkYXRhLmxlbmd0aDtcbiAgICBjb3VudCsrO1xuICB9O1xuXG4gIGNvbnN0IHdhbGsgPSAocmVsYXRpdmU6IHN0cmluZykgPT4ge1xuICAgIC8vIENvZGUtdW5pdCBvcmRlciByYXRoZXIgdGhhbiBgbG9jYWxlQ29tcGFyZWAsIHdoaWNoIHZhcmllcyBieSBsb2NhbGUuXG4gICAgY29uc3QgbmFtZXMgPSByZWFkZGlyU3luYyhqb2luKGRpciwgcmVsYXRpdmUpKS5zb3J0KCk7XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIG5hbWVzKSB7XG4gICAgICBjb25zdCBwYXRoID0gam9pbihkaXIsIHJlbGF0aXZlLCBuYW1lKTtcbiAgICAgIGNvbnN0IGtleSA9IHJlbGF0aXZlID8gYCR7cmVsYXRpdmV9LyR7bmFtZX1gIDogbmFtZTtcbiAgICAgIGNvbnN0IHN0YXRzID0gbHN0YXRTeW5jKHBhdGgpO1xuICAgICAgaWYgKHN0YXRzLmlzU3ltYm9saWNMaW5rKCkpIHtcbiAgICAgICAgYWRkKGtleSwgMG8xMjA3NzcsIEJ1ZmZlci5mcm9tKHJlYWRsaW5rU3luYyhwYXRoKSwgXCJ1dGY4XCIpKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICBhZGQoYCR7a2V5fS9gLCAwbzQwNzU1LCBCdWZmZXIuYWxsb2MoMCkpO1xuICAgICAgICB3YWxrKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGQoa2V5LCBzdGF0cy5tb2RlICYgMG8xMTEgPyAwbzEwMDc1NSA6IDBvMTAwNjQ0LCByZWFkRmlsZVN5bmMocGF0aCkpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgd2FsayhcIlwiKTtcblxuICAvLyBaaXA2NCBvbmx5IGZvciB0aGUgZW50cnkgY291bnQ6IGEgcG5wbSByb290IHJlYWNoZXMgNjUsNTM1IGZpbGVzLFxuICAvLyBkaXJlY3RvcmllcyBhbmQgbGlua3Mgd2VsbCBpbnNpZGUgTGFtYmRhJ3MgMjUwIE1CIHVuemlwcGVkIGNhcCwgYnV0IHRoYXRcbiAgLy8gY2FwIGtlZXBzIGV2ZXJ5IHNpemUgYW5kIG9mZnNldCBpbnNpZGUgMzIgYml0cy5cbiAgY29uc3QgY2VudHJhbFNpemUgPSBjZW50cmFsLnJlZHVjZSgoc3VtLCBjaHVuaykgPT4gc3VtICsgY2h1bmsubGVuZ3RoLCAwKTtcbiAgY29uc3QgemlwNjQ6IEJ1ZmZlcltdID0gW107XG4gIGlmIChjb3VudCA+IDB4ZmZmZikge1xuICAgIGNvbnN0IHJlY29yZCA9IEJ1ZmZlci5hbGxvYyg1Nik7XG4gICAgcmVjb3JkLndyaXRlVUludDMyTEUoMHgwNjA2NGI1MCwgMCk7XG4gICAgcmVjb3JkLndyaXRlQmlnVUludDY0TEUoQmlnSW50KDQ0KSwgNCk7XG4gICAgcmVjb3JkLndyaXRlVUludDE2TEUoMHgwMzJkLCAxMik7XG4gICAgcmVjb3JkLndyaXRlVUludDE2TEUoNDUsIDE0KTtcbiAgICByZWNvcmQud3JpdGVCaWdVSW50NjRMRShCaWdJbnQoY291bnQpLCAyNCk7XG4gICAgcmVjb3JkLndyaXRlQmlnVUludDY0TEUoQmlnSW50KGNvdW50KSwgMzIpO1xuICAgIHJlY29yZC53cml0ZUJpZ1VJbnQ2NExFKEJpZ0ludChjZW50cmFsU2l6ZSksIDQwKTtcbiAgICByZWNvcmQud3JpdGVCaWdVSW50NjRMRShCaWdJbnQob2Zmc2V0KSwgNDgpO1xuICAgIGNvbnN0IGxvY2F0b3IgPSBCdWZmZXIuYWxsb2MoMjApO1xuICAgIGxvY2F0b3Iud3JpdGVVSW50MzJMRSgweDA3MDY0YjUwLCAwKTtcbiAgICBsb2NhdG9yLndyaXRlQmlnVUludDY0TEUoQmlnSW50KG9mZnNldCArIGNlbnRyYWxTaXplKSwgOCk7XG4gICAgbG9jYXRvci53cml0ZVVJbnQzMkxFKDEsIDE2KTtcbiAgICB6aXA2NC5wdXNoKHJlY29yZCwgbG9jYXRvcik7XG4gIH1cbiAgY29uc3QgZW5kID0gQnVmZmVyLmFsbG9jKDIyKTtcbiAgZW5kLndyaXRlVUludDMyTEUoMHgwNjA1NGI1MCwgMCk7XG4gIC8vIDB4ZmZmZiBkZWZlcnMgdG8gdGhlIFppcDY0IHJlY29yZC5cbiAgZW5kLndyaXRlVUludDE2TEUoTWF0aC5taW4oY291bnQsIDB4ZmZmZiksIDgpO1xuICBlbmQud3JpdGVVSW50MTZMRShNYXRoLm1pbihjb3VudCwgMHhmZmZmKSwgMTApO1xuICBlbmQud3JpdGVVSW50MzJMRShjZW50cmFsU2l6ZSwgMTIpO1xuICBlbmQud3JpdGVVSW50MzJMRShvZmZzZXQsIDE2KTtcbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoWy4uLmNodW5rcywgLi4uY2VudHJhbCwgLi4uemlwNjQsIGVuZF0pO1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const node_child_process_1 = require("node:child_process");
|
|
37
|
+
const node_fs_1 = require("node:fs");
|
|
38
|
+
const node_os_1 = require("node:os");
|
|
39
|
+
const node_path_1 = require("node:path");
|
|
40
|
+
const zlib = __importStar(require("node:zlib"));
|
|
41
|
+
const zip_directory_1 = require("./zip-directory");
|
|
42
|
+
/** A pnpm-shaped tree: the logical path links into the store. */
|
|
43
|
+
function makeTree() {
|
|
44
|
+
const root = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "cdk-nextjs-zip-"));
|
|
45
|
+
const pkg = (0, node_path_1.join)(root, "node_modules", ".pnpm", "a@1.0.0", "node_modules", "a");
|
|
46
|
+
(0, node_fs_1.mkdirSync)(pkg, { recursive: true });
|
|
47
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(pkg, "index.js"), "module.exports = 'a';\n".repeat(50));
|
|
48
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(pkg, "bin.sh"), "#!/bin/sh\n", { mode: 0o755 });
|
|
49
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.join)(root, "app", "node_modules"), { recursive: true });
|
|
50
|
+
(0, node_fs_1.symlinkSync)("../../node_modules/.pnpm/a@1.0.0/node_modules/a", (0, node_path_1.join)(root, "app", "node_modules", "a"));
|
|
51
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.join)(root, "empty"));
|
|
52
|
+
return root;
|
|
53
|
+
}
|
|
54
|
+
describe("crc32", () => {
|
|
55
|
+
// Its own, because `zlib.crc32` is missing before Node 20.15.
|
|
56
|
+
it("matches zlib's", () => {
|
|
57
|
+
for (const data of ["", "a", "hello, world", "x".repeat(100_000)]) {
|
|
58
|
+
expect((0, zip_directory_1.crc32)(Buffer.from(data))).toBe(zlib.crc32(data));
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe("zipDirectory", () => {
|
|
63
|
+
it("round-trips symlinks as symlinks through unzip", () => {
|
|
64
|
+
const root = makeTree();
|
|
65
|
+
const out = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "cdk-nextjs-unzip-"));
|
|
66
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(out, "root.zip"), (0, zip_directory_1.zipDirectory)(root));
|
|
67
|
+
(0, node_child_process_1.execFileSync)("unzip", ["-q", "root.zip", "-d", "x"], { cwd: out });
|
|
68
|
+
const link = (0, node_path_1.join)(out, "x", "app", "node_modules", "a");
|
|
69
|
+
expect((0, node_fs_1.lstatSync)(link).isSymbolicLink()).toBe(true);
|
|
70
|
+
expect((0, node_fs_1.readlinkSync)(link)).toBe("../../node_modules/.pnpm/a@1.0.0/node_modules/a");
|
|
71
|
+
expect((0, node_fs_1.readFileSync)((0, node_path_1.join)(link, "index.js"), "utf8")).toContain("'a'");
|
|
72
|
+
// eslint-disable-next-line no-bitwise
|
|
73
|
+
expect((0, node_fs_1.lstatSync)((0, node_path_1.join)(link, "bin.sh")).mode & 0o111).toBeTruthy();
|
|
74
|
+
expect((0, node_fs_1.lstatSync)((0, node_path_1.join)(out, "x", "empty")).isDirectory()).toBe(true);
|
|
75
|
+
});
|
|
76
|
+
it("is deterministic, so the asset hash only moves with the contents", () => {
|
|
77
|
+
const root = makeTree();
|
|
78
|
+
const first = (0, zip_directory_1.zipDirectory)(root);
|
|
79
|
+
(0, node_fs_1.utimesSync)((0, node_path_1.join)(root, "empty"), 0, 0);
|
|
80
|
+
expect((0, zip_directory_1.zipDirectory)(root).equals(first)).toBe(true);
|
|
81
|
+
// The same tree built somewhere else, at another time.
|
|
82
|
+
expect((0, zip_directory_1.zipDirectory)(makeTree()).equals(first)).toBe(true);
|
|
83
|
+
});
|
|
84
|
+
it("writes a Zip64 end record past 65,535 entries", () => {
|
|
85
|
+
const root = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "cdk-nextjs-zip64-"));
|
|
86
|
+
// Links are the cheapest entries to make.
|
|
87
|
+
for (let i = 0; i < 0x10000 + 10; i++) {
|
|
88
|
+
(0, node_fs_1.symlinkSync)("t", (0, node_path_1.join)(root, `l${i}`));
|
|
89
|
+
}
|
|
90
|
+
const out = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "cdk-nextjs-unzip64-"));
|
|
91
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(out, "root.zip"), (0, zip_directory_1.zipDirectory)(root));
|
|
92
|
+
const listing = (0, node_child_process_1.execFileSync)("unzip", ["-l", "root.zip"], {
|
|
93
|
+
cwd: out,
|
|
94
|
+
maxBuffer: 64 * 1024 * 1024,
|
|
95
|
+
}).toString();
|
|
96
|
+
expect(listing.trim().split("\n").pop()).toMatch(/\b65546 files$/);
|
|
97
|
+
}, 60_000);
|
|
98
|
+
});
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemlwLWRpcmVjdG9yeS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3ppcC1kaXJlY3RvcnkudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJEQUFrRDtBQUNsRCxxQ0FTaUI7QUFDakIscUNBQWlDO0FBQ2pDLHlDQUFpQztBQUNqQyxnREFBa0M7QUFDbEMsbURBQXNEO0FBRXRELGlFQUFpRTtBQUNqRSxTQUFTLFFBQVE7SUFDZixNQUFNLElBQUksR0FBRyxJQUFBLHFCQUFXLEVBQUMsSUFBQSxnQkFBSSxFQUFDLElBQUEsZ0JBQU0sR0FBRSxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUM1RCxNQUFNLEdBQUcsR0FBRyxJQUFBLGdCQUFJLEVBQ2QsSUFBSSxFQUNKLGNBQWMsRUFDZCxPQUFPLEVBQ1AsU0FBUyxFQUNULGNBQWMsRUFDZCxHQUFHLENBQ0osQ0FBQztJQUNGLElBQUEsbUJBQVMsRUFBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwQyxJQUFBLHVCQUFhLEVBQUMsSUFBQSxnQkFBSSxFQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRSx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRSxJQUFBLHVCQUFhLEVBQUMsSUFBQSxnQkFBSSxFQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsRUFBRSxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNuRSxJQUFBLG1CQUFTLEVBQUMsSUFBQSxnQkFBSSxFQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsY0FBYyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNsRSxJQUFBLHFCQUFXLEVBQ1QsaURBQWlELEVBQ2pELElBQUEsZ0JBQUksRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FDdkMsQ0FBQztJQUNGLElBQUEsbUJBQVMsRUFBQyxJQUFBLGdCQUFJLEVBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDL0IsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7SUFDckIsOERBQThEO0lBQzlELEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7UUFDeEIsS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sQ0FBQyxJQUFBLHFCQUFLLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO0lBQzVCLEVBQUUsQ0FBQyxnREFBZ0QsRUFBRSxHQUFHLEVBQUU7UUFDeEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxFQUFFLENBQUM7UUFDeEIsTUFBTSxHQUFHLEdBQUcsSUFBQSxxQkFBVyxFQUFDLElBQUEsZ0JBQUksRUFBQyxJQUFBLGdCQUFNLEdBQUUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7UUFDN0QsSUFBQSx1QkFBYSxFQUFDLElBQUEsZ0JBQUksRUFBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEVBQUUsSUFBQSw0QkFBWSxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDekQsSUFBQSxpQ0FBWSxFQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFbkUsTUFBTSxJQUFJLEdBQUcsSUFBQSxnQkFBSSxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4RCxNQUFNLENBQUMsSUFBQSxtQkFBUyxFQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxJQUFBLHNCQUFZLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzdCLGlEQUFpRCxDQUNsRCxDQUFDO1FBQ0YsTUFBTSxDQUFDLElBQUEsc0JBQVksRUFBQyxJQUFBLGdCQUFJLEVBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLHNDQUFzQztRQUN0QyxNQUFNLENBQUMsSUFBQSxtQkFBUyxFQUFDLElBQUEsZ0JBQUksRUFBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEUsTUFBTSxDQUFDLElBQUEsbUJBQVMsRUFBQyxJQUFBLGdCQUFJLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEdBQUcsRUFBRTtRQUMxRSxNQUFNLElBQUksR0FBRyxRQUFRLEVBQUUsQ0FBQztRQUN4QixNQUFNLEtBQUssR0FBRyxJQUFBLDRCQUFZLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBQSxvQkFBVSxFQUFDLElBQUEsZ0JBQUksRUFBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxJQUFBLDRCQUFZLEVBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELHVEQUF1RDtRQUN2RCxNQUFNLENBQUMsSUFBQSw0QkFBWSxFQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLCtDQUErQyxFQUFFLEdBQUcsRUFBRTtRQUN2RCxNQUFNLElBQUksR0FBRyxJQUFBLHFCQUFXLEVBQUMsSUFBQSxnQkFBSSxFQUFDLElBQUEsZ0JBQU0sR0FBRSxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUM5RCwwQ0FBMEM7UUFDMUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN0QyxJQUFBLHFCQUFXLEVBQUMsR0FBRyxFQUFFLElBQUEsZ0JBQUksRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLElBQUEscUJBQVcsRUFBQyxJQUFBLGdCQUFJLEVBQUMsSUFBQSxnQkFBTSxHQUFFLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxDQUFDO1FBQy9ELElBQUEsdUJBQWEsRUFBQyxJQUFBLGdCQUFJLEVBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxFQUFFLElBQUEsNEJBQVksRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sT0FBTyxHQUFHLElBQUEsaUNBQVksRUFBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDeEQsR0FBRyxFQUFFLEdBQUc7WUFDUixTQUFTLEVBQUUsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJO1NBQzVCLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDckUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQge1xuICBsc3RhdFN5bmMsXG4gIG1rZGlyU3luYyxcbiAgbWtkdGVtcFN5bmMsXG4gIHJlYWRGaWxlU3luYyxcbiAgcmVhZGxpbmtTeW5jLFxuICBzeW1saW5rU3luYyxcbiAgdXRpbWVzU3luYyxcbiAgd3JpdGVGaWxlU3luYyxcbn0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IHRtcGRpciB9IGZyb20gXCJub2RlOm9zXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0ICogYXMgemxpYiBmcm9tIFwibm9kZTp6bGliXCI7XG5pbXBvcnQgeyBjcmMzMiwgemlwRGlyZWN0b3J5IH0gZnJvbSBcIi4vemlwLWRpcmVjdG9yeVwiO1xuXG4vKiogQSBwbnBtLXNoYXBlZCB0cmVlOiB0aGUgbG9naWNhbCBwYXRoIGxpbmtzIGludG8gdGhlIHN0b3JlLiAqL1xuZnVuY3Rpb24gbWFrZVRyZWUoKTogc3RyaW5nIHtcbiAgY29uc3Qgcm9vdCA9IG1rZHRlbXBTeW5jKGpvaW4odG1wZGlyKCksIFwiY2RrLW5leHRqcy16aXAtXCIpKTtcbiAgY29uc3QgcGtnID0gam9pbihcbiAgICByb290LFxuICAgIFwibm9kZV9tb2R1bGVzXCIsXG4gICAgXCIucG5wbVwiLFxuICAgIFwiYUAxLjAuMFwiLFxuICAgIFwibm9kZV9tb2R1bGVzXCIsXG4gICAgXCJhXCIsXG4gICk7XG4gIG1rZGlyU3luYyhwa2csIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB3cml0ZUZpbGVTeW5jKGpvaW4ocGtnLCBcImluZGV4LmpzXCIpLCBcIm1vZHVsZS5leHBvcnRzID0gJ2EnO1xcblwiLnJlcGVhdCg1MCkpO1xuICB3cml0ZUZpbGVTeW5jKGpvaW4ocGtnLCBcImJpbi5zaFwiKSwgXCIjIS9iaW4vc2hcXG5cIiwgeyBtb2RlOiAwbzc1NSB9KTtcbiAgbWtkaXJTeW5jKGpvaW4ocm9vdCwgXCJhcHBcIiwgXCJub2RlX21vZHVsZXNcIiksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBzeW1saW5rU3luYyhcbiAgICBcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9hQDEuMC4wL25vZGVfbW9kdWxlcy9hXCIsXG4gICAgam9pbihyb290LCBcImFwcFwiLCBcIm5vZGVfbW9kdWxlc1wiLCBcImFcIiksXG4gICk7XG4gIG1rZGlyU3luYyhqb2luKHJvb3QsIFwiZW1wdHlcIikpO1xuICByZXR1cm4gcm9vdDtcbn1cblxuZGVzY3JpYmUoXCJjcmMzMlwiLCAoKSA9PiB7XG4gIC8vIEl0cyBvd24sIGJlY2F1c2UgYHpsaWIuY3JjMzJgIGlzIG1pc3NpbmcgYmVmb3JlIE5vZGUgMjAuMTUuXG4gIGl0KFwibWF0Y2hlcyB6bGliJ3NcIiwgKCkgPT4ge1xuICAgIGZvciAoY29uc3QgZGF0YSBvZiBbXCJcIiwgXCJhXCIsIFwiaGVsbG8sIHdvcmxkXCIsIFwieFwiLnJlcGVhdCgxMDBfMDAwKV0pIHtcbiAgICAgIGV4cGVjdChjcmMzMihCdWZmZXIuZnJvbShkYXRhKSkpLnRvQmUoemxpYi5jcmMzMihkYXRhKSk7XG4gICAgfVxuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcInppcERpcmVjdG9yeVwiLCAoKSA9PiB7XG4gIGl0KFwicm91bmQtdHJpcHMgc3ltbGlua3MgYXMgc3ltbGlua3MgdGhyb3VnaCB1bnppcFwiLCAoKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IG1ha2VUcmVlKCk7XG4gICAgY29uc3Qgb3V0ID0gbWtkdGVtcFN5bmMoam9pbih0bXBkaXIoKSwgXCJjZGstbmV4dGpzLXVuemlwLVwiKSk7XG4gICAgd3JpdGVGaWxlU3luYyhqb2luKG91dCwgXCJyb290LnppcFwiKSwgemlwRGlyZWN0b3J5KHJvb3QpKTtcbiAgICBleGVjRmlsZVN5bmMoXCJ1bnppcFwiLCBbXCItcVwiLCBcInJvb3QuemlwXCIsIFwiLWRcIiwgXCJ4XCJdLCB7IGN3ZDogb3V0IH0pO1xuXG4gICAgY29uc3QgbGluayA9IGpvaW4ob3V0LCBcInhcIiwgXCJhcHBcIiwgXCJub2RlX21vZHVsZXNcIiwgXCJhXCIpO1xuICAgIGV4cGVjdChsc3RhdFN5bmMobGluaykuaXNTeW1ib2xpY0xpbmsoKSkudG9CZSh0cnVlKTtcbiAgICBleHBlY3QocmVhZGxpbmtTeW5jKGxpbmspKS50b0JlKFxuICAgICAgXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vYUAxLjAuMC9ub2RlX21vZHVsZXMvYVwiLFxuICAgICk7XG4gICAgZXhwZWN0KHJlYWRGaWxlU3luYyhqb2luKGxpbmssIFwiaW5kZXguanNcIiksIFwidXRmOFwiKSkudG9Db250YWluKFwiJ2EnXCIpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgZXhwZWN0KGxzdGF0U3luYyhqb2luKGxpbmssIFwiYmluLnNoXCIpKS5tb2RlICYgMG8xMTEpLnRvQmVUcnV0aHkoKTtcbiAgICBleHBlY3QobHN0YXRTeW5jKGpvaW4ob3V0LCBcInhcIiwgXCJlbXB0eVwiKSkuaXNEaXJlY3RvcnkoKSkudG9CZSh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoXCJpcyBkZXRlcm1pbmlzdGljLCBzbyB0aGUgYXNzZXQgaGFzaCBvbmx5IG1vdmVzIHdpdGggdGhlIGNvbnRlbnRzXCIsICgpID0+IHtcbiAgICBjb25zdCByb290ID0gbWFrZVRyZWUoKTtcbiAgICBjb25zdCBmaXJzdCA9IHppcERpcmVjdG9yeShyb290KTtcbiAgICB1dGltZXNTeW5jKGpvaW4ocm9vdCwgXCJlbXB0eVwiKSwgMCwgMCk7XG4gICAgZXhwZWN0KHppcERpcmVjdG9yeShyb290KS5lcXVhbHMoZmlyc3QpKS50b0JlKHRydWUpO1xuICAgIC8vIFRoZSBzYW1lIHRyZWUgYnVpbHQgc29tZXdoZXJlIGVsc2UsIGF0IGFub3RoZXIgdGltZS5cbiAgICBleHBlY3QoemlwRGlyZWN0b3J5KG1ha2VUcmVlKCkpLmVxdWFscyhmaXJzdCkpLnRvQmUodHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KFwid3JpdGVzIGEgWmlwNjQgZW5kIHJlY29yZCBwYXN0IDY1LDUzNSBlbnRyaWVzXCIsICgpID0+IHtcbiAgICBjb25zdCByb290ID0gbWtkdGVtcFN5bmMoam9pbih0bXBkaXIoKSwgXCJjZGstbmV4dGpzLXppcDY0LVwiKSk7XG4gICAgLy8gTGlua3MgYXJlIHRoZSBjaGVhcGVzdCBlbnRyaWVzIHRvIG1ha2UuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAweDEwMDAwICsgMTA7IGkrKykge1xuICAgICAgc3ltbGlua1N5bmMoXCJ0XCIsIGpvaW4ocm9vdCwgYGwke2l9YCkpO1xuICAgIH1cbiAgICBjb25zdCBvdXQgPSBta2R0ZW1wU3luYyhqb2luKHRtcGRpcigpLCBcImNkay1uZXh0anMtdW56aXA2NC1cIikpO1xuICAgIHdyaXRlRmlsZVN5bmMoam9pbihvdXQsIFwicm9vdC56aXBcIiksIHppcERpcmVjdG9yeShyb290KSk7XG4gICAgY29uc3QgbGlzdGluZyA9IGV4ZWNGaWxlU3luYyhcInVuemlwXCIsIFtcIi1sXCIsIFwicm9vdC56aXBcIl0sIHtcbiAgICAgIGN3ZDogb3V0LFxuICAgICAgbWF4QnVmZmVyOiA2NCAqIDEwMjQgKiAxMDI0LFxuICAgIH0pLnRvU3RyaW5nKCk7XG4gICAgZXhwZWN0KGxpc3RpbmcudHJpbSgpLnNwbGl0KFwiXFxuXCIpLnBvcCgpKS50b01hdGNoKC9cXGI2NTU0NiBmaWxlcyQvKTtcbiAgfSwgNjBfMDAwKTtcbn0pO1xuIl19
|
package/package.json
CHANGED
|
@@ -14,12 +14,14 @@
|
|
|
14
14
|
"@aws-cdk/integ-runner": "latest",
|
|
15
15
|
"@aws-cdk/integ-tests-alpha": "latest",
|
|
16
16
|
"@aws-crypto/sha256-js": "^5.2.0",
|
|
17
|
+
"@aws-sdk/client-api-gateway": "^3.1141.0",
|
|
17
18
|
"@aws-sdk/client-cloudfront": "^3.1121.0",
|
|
18
19
|
"@aws-sdk/client-dynamodb": "^3.1121.0",
|
|
19
20
|
"@aws-sdk/client-s3": "^3.1121.0",
|
|
20
21
|
"@aws-sdk/client-ssm": "^3.1136.0",
|
|
21
22
|
"@aws-sdk/lib-storage": "^3.1121.0",
|
|
22
23
|
"@mrgrain/jsii-struct-builder": "^0.7.64",
|
|
24
|
+
"@next/routing": "16.3.5",
|
|
23
25
|
"@smithy/signature-v4": "^2.3.0",
|
|
24
26
|
"@types/aws-lambda": "^8.10.162",
|
|
25
27
|
"@types/debug": "^4.1.13",
|
|
@@ -28,6 +30,7 @@
|
|
|
28
30
|
"@types/node": "^24",
|
|
29
31
|
"@typescript-eslint/eslint-plugin": "^8",
|
|
30
32
|
"@typescript-eslint/parser": "^8",
|
|
33
|
+
"aws-cdk": "^2.1142.0",
|
|
31
34
|
"aws-cdk-lib": "2.261.0",
|
|
32
35
|
"cdk-nag": "^2.38.2",
|
|
33
36
|
"cdklabs-projen-project-types": "^0.6.8",
|
|
@@ -81,7 +84,7 @@
|
|
|
81
84
|
"publishConfig": {
|
|
82
85
|
"access": "public"
|
|
83
86
|
},
|
|
84
|
-
"version": "0.
|
|
87
|
+
"version": "0.7.0",
|
|
85
88
|
"jest": {
|
|
86
89
|
"coverageProvider": "v8",
|
|
87
90
|
"testPathIgnorePatterns": [
|
|
@@ -149,6 +152,14 @@
|
|
|
149
152
|
"./cache-handler": {
|
|
150
153
|
"import": "./lib/adapter/cache-handler.mjs",
|
|
151
154
|
"default": "./lib/adapter/cache-handler.mjs"
|
|
155
|
+
},
|
|
156
|
+
"./cache-handlers/default": {
|
|
157
|
+
"import": "./lib/adapter/use-cache-default-handler.mjs",
|
|
158
|
+
"default": "./lib/adapter/use-cache-default-handler.mjs"
|
|
159
|
+
},
|
|
160
|
+
"./cache-handlers/remote": {
|
|
161
|
+
"import": "./lib/adapter/use-cache-remote-handler.mjs",
|
|
162
|
+
"default": "./lib/adapter/use-cache-remote-handler.mjs"
|
|
152
163
|
}
|
|
153
164
|
},
|
|
154
165
|
"//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"pnpm dlx projen\".",
|
|
@@ -161,12 +172,20 @@
|
|
|
161
172
|
"bundle:adapter/adapter:watch": "pnpm dlx projen bundle:adapter/adapter:watch",
|
|
162
173
|
"bundle:adapter/cache-handler": "pnpm dlx projen bundle:adapter/cache-handler",
|
|
163
174
|
"bundle:adapter/cache-handler:watch": "pnpm dlx projen bundle:adapter/cache-handler:watch",
|
|
164
|
-
"bundle:
|
|
165
|
-
"bundle:
|
|
175
|
+
"bundle:adapter/use-cache-default-handler": "pnpm dlx projen bundle:adapter/use-cache-default-handler",
|
|
176
|
+
"bundle:adapter/use-cache-default-handler:watch": "pnpm dlx projen bundle:adapter/use-cache-default-handler:watch",
|
|
177
|
+
"bundle:adapter/use-cache-remote-handler": "pnpm dlx projen bundle:adapter/use-cache-remote-handler",
|
|
178
|
+
"bundle:adapter/use-cache-remote-handler:watch": "pnpm dlx projen bundle:adapter/use-cache-remote-handler:watch",
|
|
166
179
|
"bundle:lambdas/post-deploy/post-deploy.lambda": "pnpm dlx projen bundle:lambdas/post-deploy/post-deploy.lambda",
|
|
167
180
|
"bundle:lambdas/post-deploy/post-deploy.lambda:watch": "pnpm dlx projen bundle:lambdas/post-deploy/post-deploy.lambda:watch",
|
|
181
|
+
"bundle:lambdas/redeploy-stage/redeploy-stage.lambda": "pnpm dlx projen bundle:lambdas/redeploy-stage/redeploy-stage.lambda",
|
|
182
|
+
"bundle:lambdas/redeploy-stage/redeploy-stage.lambda:watch": "pnpm dlx projen bundle:lambdas/redeploy-stage/redeploy-stage.lambda:watch",
|
|
168
183
|
"bundle:nextjs-build/patch-fetch": "pnpm dlx projen bundle:nextjs-build/patch-fetch",
|
|
169
184
|
"bundle:nextjs-build/patch-fetch:watch": "pnpm dlx projen bundle:nextjs-build/patch-fetch:watch",
|
|
185
|
+
"bundle:runtime/lambda": "pnpm dlx projen bundle:runtime/lambda",
|
|
186
|
+
"bundle:runtime/lambda:watch": "pnpm dlx projen bundle:runtime/lambda:watch",
|
|
187
|
+
"bundle:runtime/server": "pnpm dlx projen bundle:runtime/server",
|
|
188
|
+
"bundle:runtime/server:watch": "pnpm dlx projen bundle:runtime/server:watch",
|
|
170
189
|
"clobber": "pnpm dlx projen clobber",
|
|
171
190
|
"compat": "pnpm dlx projen compat",
|
|
172
191
|
"compile": "pnpm dlx projen compile",
|