@liflig/cdk 3.20.23 → 3.21.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/lib/snapshots.d.ts +19 -2
- package/lib/snapshots.js +52 -41
- package/package.json +14 -14
package/lib/snapshots.d.ts
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Sanitize a Cloud Assembly manifest.json for snapshot use.
|
|
3
|
+
*
|
|
4
|
+
* On CDK < 2.242.0 the manifest contains inline metadata per stack artifact.
|
|
5
|
+
* On CDK >= 2.242.0 that metadata is extracted into separate files (handled
|
|
6
|
+
* by {@link sanitizeMetadata}), but the manifest still needs version,
|
|
7
|
+
* runtime, trace, and asset detail stripping.
|
|
8
|
+
*/
|
|
9
|
+
export declare function sanitizeManifest(content: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Sanitize an extracted metadata JSON file for snapshot use.
|
|
12
|
+
*
|
|
13
|
+
* CDK >= 2.242.0 extracts per-stack metadata into separate *.metadata.json
|
|
14
|
+
* files (previously this data was inline in manifest.json). This function
|
|
15
|
+
* applies the same sanitization (trace removal, asset detail stripping) so
|
|
16
|
+
* snapshots remain stable across synthesizes.
|
|
17
|
+
*/
|
|
18
|
+
export declare function sanitizeMetadata(content: string): string;
|
|
19
|
+
export declare function sanitizeTemplate(content: string): string;
|
|
3
20
|
/**
|
|
4
21
|
* Convert a Cloud Assembly to a snapshot.
|
|
5
22
|
*/
|
package/lib/snapshots.js
CHANGED
|
@@ -45,6 +45,19 @@ function rewriteCurrentVersionIfFound(value) {
|
|
|
45
45
|
const match = currentVersionRegex.exec(value);
|
|
46
46
|
return match ? `${match[1]}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` : null;
|
|
47
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Replace asset hashes in a string value with stable placeholders.
|
|
50
|
+
* Shared by both template and manifest/metadata asset stripping.
|
|
51
|
+
*/
|
|
52
|
+
function replaceAssetHashesInString(value) {
|
|
53
|
+
const newCurrentVersion = rewriteCurrentVersionIfFound(value);
|
|
54
|
+
if (newCurrentVersion) {
|
|
55
|
+
return newCurrentVersion;
|
|
56
|
+
}
|
|
57
|
+
return value
|
|
58
|
+
.replace(assetContentHashRegex, "snapshot-value")
|
|
59
|
+
.replace(pipelinesAssetIdSuffixRegex, "$1snapshot-value");
|
|
60
|
+
}
|
|
48
61
|
function removeAssetDetailsFromTemplate(data) {
|
|
49
62
|
if (Array.isArray(data)) {
|
|
50
63
|
return data.map(removeAssetDetailsFromTemplate);
|
|
@@ -74,16 +87,15 @@ function removeAssetDetailsFromTemplate(data) {
|
|
|
74
87
|
.filter((it) => it != null));
|
|
75
88
|
}
|
|
76
89
|
if (typeof data === "string") {
|
|
77
|
-
|
|
78
|
-
if (newCurrentVersion) {
|
|
79
|
-
return newCurrentVersion;
|
|
80
|
-
}
|
|
81
|
-
return data
|
|
82
|
-
.replace(assetContentHashRegex, "snapshot-value")
|
|
83
|
-
.replace(pipelinesAssetIdSuffixRegex, "$1snapshot-value");
|
|
90
|
+
return replaceAssetHashesInString(data);
|
|
84
91
|
}
|
|
85
92
|
return data;
|
|
86
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Recursively strip asset-related details (hashes, parameters) from a JSON
|
|
96
|
+
* structure. Used for both manifest.json (CDK < 2.242.0 with inline metadata)
|
|
97
|
+
* and standalone *.metadata.json files (CDK >= 2.242.0).
|
|
98
|
+
*/
|
|
87
99
|
function removeAssetDetailsFromManifest(data) {
|
|
88
100
|
if (Array.isArray(data)) {
|
|
89
101
|
return data.map(removeAssetDetailsFromManifest);
|
|
@@ -106,13 +118,7 @@ function removeAssetDetailsFromManifest(data) {
|
|
|
106
118
|
.filter((it) => it != null));
|
|
107
119
|
}
|
|
108
120
|
if (typeof data === "string") {
|
|
109
|
-
|
|
110
|
-
if (newCurrentVersion) {
|
|
111
|
-
return newCurrentVersion;
|
|
112
|
-
}
|
|
113
|
-
return data
|
|
114
|
-
.replace(assetContentHashRegex, "snapshot-value")
|
|
115
|
-
.replace(pipelinesAssetIdSuffixRegex, "$1snapshot-value");
|
|
121
|
+
return replaceAssetHashesInString(data);
|
|
116
122
|
}
|
|
117
123
|
return data;
|
|
118
124
|
}
|
|
@@ -130,14 +136,21 @@ function removeCdkMetadataResourceFromTemplate(data) {
|
|
|
130
136
|
delete cp.Resources.CDKMetadata;
|
|
131
137
|
return cp;
|
|
132
138
|
}
|
|
133
|
-
|
|
139
|
+
/**
|
|
140
|
+
* Sanitize a Cloud Assembly manifest.json for snapshot use.
|
|
141
|
+
*
|
|
142
|
+
* On CDK < 2.242.0 the manifest contains inline metadata per stack artifact.
|
|
143
|
+
* On CDK >= 2.242.0 that metadata is extracted into separate files (handled
|
|
144
|
+
* by {@link sanitizeMetadata}), but the manifest still needs version,
|
|
145
|
+
* runtime, trace, and asset detail stripping.
|
|
146
|
+
*/
|
|
147
|
+
export function sanitizeManifest(content) {
|
|
134
148
|
const input = JSON.parse(content);
|
|
135
149
|
const output = [
|
|
136
150
|
removeVersion,
|
|
137
151
|
// Remove the runtime version information so it don't conflict with CI
|
|
138
152
|
// or other users generating the snapshots.
|
|
139
153
|
removeRuntimeLibraries,
|
|
140
|
-
// Remove the trace from manifest for now.
|
|
141
154
|
removeTrace,
|
|
142
155
|
// Avoid details (hashes) from assets.
|
|
143
156
|
removeAssetDetailsFromManifest,
|
|
@@ -145,14 +158,19 @@ export function prepareManifestForSnapshot(content) {
|
|
|
145
158
|
return JSON.stringify(output, undefined, " ");
|
|
146
159
|
}
|
|
147
160
|
/**
|
|
148
|
-
*
|
|
149
|
-
*
|
|
161
|
+
* Sanitize an extracted metadata JSON file for snapshot use.
|
|
162
|
+
*
|
|
163
|
+
* CDK >= 2.242.0 extracts per-stack metadata into separate *.metadata.json
|
|
164
|
+
* files (previously this data was inline in manifest.json). This function
|
|
165
|
+
* applies the same sanitization (trace removal, asset detail stripping) so
|
|
166
|
+
* snapshots remain stable across synthesizes.
|
|
150
167
|
*/
|
|
151
|
-
|
|
152
|
-
const
|
|
153
|
-
|
|
168
|
+
export function sanitizeMetadata(content) {
|
|
169
|
+
const input = JSON.parse(content);
|
|
170
|
+
const output = [removeTrace, removeAssetDetailsFromManifest].reduce((acc, fn) => fn(acc), input);
|
|
171
|
+
return JSON.stringify(output, undefined, " ");
|
|
154
172
|
}
|
|
155
|
-
export function
|
|
173
|
+
export function sanitizeTemplate(content) {
|
|
156
174
|
const input = JSON.parse(content);
|
|
157
175
|
const output = [
|
|
158
176
|
removeCdkMetadataResourceFromTemplate,
|
|
@@ -162,11 +180,10 @@ export function prepareTemplateForSnapshot(content) {
|
|
|
162
180
|
return JSON.stringify(output, undefined, " ");
|
|
163
181
|
}
|
|
164
182
|
/**
|
|
165
|
-
*
|
|
166
|
-
* as a snapshot without causing invalidations for minor changes.
|
|
183
|
+
* Read a file, apply a transform, and write the result back.
|
|
167
184
|
*/
|
|
168
|
-
async function
|
|
169
|
-
const result =
|
|
185
|
+
async function transformFileInPlace(file, transform) {
|
|
186
|
+
const result = transform(await fs.promises.readFile(file, "utf8"));
|
|
170
187
|
await fs.promises.writeFile(file, result);
|
|
171
188
|
}
|
|
172
189
|
/**
|
|
@@ -196,19 +213,13 @@ export async function createCloudAssemblySnapshot(src, dst) {
|
|
|
196
213
|
recursive: true,
|
|
197
214
|
force: true,
|
|
198
215
|
})));
|
|
199
|
-
const
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
// Transform all templates.
|
|
208
|
-
"**/*.template.json",
|
|
209
|
-
].flatMap((g) => expandGlob(g, destAbs));
|
|
210
|
-
for (const file of templateFiles) {
|
|
211
|
-
await prepareTemplateFileForSnapshot(file);
|
|
212
|
-
}
|
|
216
|
+
const fileTransforms = {
|
|
217
|
+
"**/manifest.json": sanitizeManifest,
|
|
218
|
+
// CDK >= 2.242.0 extracts per-stack metadata into separate files.
|
|
219
|
+
// No matches on older CDK — safe to process unconditionally.
|
|
220
|
+
"**/*.metadata.json": sanitizeMetadata,
|
|
221
|
+
"**/*.template.json": sanitizeTemplate,
|
|
222
|
+
};
|
|
223
|
+
await Promise.all(Object.entries(fileTransforms).flatMap(([pattern, transform]) => expandGlob(pattern, destAbs).map((f) => transformFileInPlace(f, transform))));
|
|
213
224
|
}
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHNob3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NuYXBzaG90cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUM3QixPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUVqQyxTQUFTLGFBQWEsQ0FBQyxJQUFTO0lBQzlCLE1BQU0sRUFBRSxHQUFHO1FBQ1QsR0FBRyxJQUFJO0tBQ1IsQ0FBQTtJQUVELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQTtJQUNqQixPQUFPLEVBQUUsQ0FBQTtBQUNYLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxJQUFTO0lBQzVCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBRUQsSUFBSSxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUN2QixNQUFNLENBQUMsT0FBTyxDQUFDLElBQStCLENBQUM7YUFDNUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQzthQUNsQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDcEQsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLElBQVM7SUFDdkMsTUFBTSxFQUFFLEdBQUc7UUFDVCxHQUFHLElBQUk7S0FDUixDQUFBO0lBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIs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O0lBRXhDLEtBQUssTUFBTSxJQUFJLElBQUksYUFBYSxFQUFFLENBQUM7UUFDakMsTUFBTSw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM1QyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gXCJub2RlOmZzXCJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiXG5cbmZ1bmN0aW9uIHJlbW92ZVZlcnNpb24oZGF0YTogYW55KTogYW55IHtcbiAgY29uc3QgY3AgPSB7XG4gICAgLi4uZGF0YSxcbiAgfVxuXG4gIGRlbGV0ZSBjcC52ZXJzaW9uXG4gIHJldHVybiBjcFxufVxuXG5mdW5jdGlvbiByZW1vdmVUcmFjZShkYXRhOiBhbnkpOiBhbnkge1xuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgIHJldHVybiBkYXRhLm1hcChyZW1vdmVUcmFjZSlcbiAgfVxuXG4gIGlmIChkYXRhID09PSBPYmplY3QoZGF0YSkpIHtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMoZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilcbiAgICAgICAgLmZpbHRlcigoW2tleV0pID0+IGtleSAhPT0gXCJ0cmFjZVwiKVxuICAgICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IFtrZXksIHJlbW92ZVRyYWNlKHZhbHVlKV0pLFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBkYXRhXG59XG5cbmZ1bmN0aW9uIHJlbW92ZVJ1bnRpbWVMaWJyYXJpZXMoZGF0YTogYW55KTogYW55IHtcbiAgY29uc3QgY3AgPSB7XG4gICAgLi4uZGF0YSxcbiAgfVxuXG4gIGlmIChkYXRhLnJ1bnRpbWUpIHtcbiAgICBjcC5ydW50aW1lID0ge1xuICAgICAgLi4uZGF0YS5ydW50aW1lLFxuICAgIH1cblxuICAgIGRlbGV0ZSBjcC5ydW50aW1lLmxpYnJhcmllc1xuICB9XG5cbiAgcmV0dXJuIGNwXG59XG5cbmNvbnN0IGN1cnJlbnRWZXJzaW9uUmVnZXggPSAvXiguK0N1cnJlbnRWZXJzaW9uWzAtOUEtRl17OH0pWzAtOWEtZl17MzJ9JC9cblxuLy8gTWF0Y2hlcyA2NC1jaGFyIGhleCBzdHJpbmdzIHVzZWQgYXMgQ0RLIGFzc2V0IGNvbnRlbnQgaGFzaGVzLlxuY29uc3QgYXNzZXRDb250ZW50SGFzaFJlZ2V4ID0gL1swLTlhLWZdezY0fS9nXG5cbi8vIE1hdGNoZXMgdGhlIHNob3J0IDgtY2hhciBoYXNoIHN1ZmZpeCBpbiBDREsgUGlwZWxpbmVzIGFzc2V0IGlkZW50aWZpZXJzLFxuLy8gZS5nLiBcInNuYXBzaG90LXZhbHVlOjEyMzQ1Njc4OTAxMi1ldS13ZXN0LTEtMGU5NGY5ZGVcIi5cbmNvbnN0IHBpcGVsaW5lc0Fzc2V0SWRTdWZmaXhSZWdleCA9XG4gIC8oc25hcHNob3QtdmFsdWU6XFxkKy1bYS16MC05LV0rLSlbMC05YS1mXXs4fS9nXG5cbi8qKlxuICogTWF0Y2ggYSByZXNvdXJjZSBjcmVhdGVkIGJ5IGBsYW1iZGEuRnVuY3Rpb24uY3VycmVudFZlcnNpb25gLCB3aGljaFxuICogd2lsbCBpbmNsdWRlIHRoZSBhc3NldCBoYXNoIGFzIHBhcnQgb2YgdGhlIHJlb3VzcmNlIG5hbWUgYW5kIHJldHVyblxuICogYSBzbmFwc2hvdC1mcmllbmRseSB2ZXJzaW9uIG9mIGl0IGlmIGZvdW5kLlxuICovXG5mdW5jdGlvbiByZXdyaXRlQ3VycmVudFZlcnNpb25JZkZvdW5kKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgbWF0Y2ggPSBjdXJyZW50VmVyc2lvblJlZ2V4LmV4ZWModmFsdWUpXG4gIHJldHVybiBtYXRjaCA/IGAke21hdGNoWzFdfXh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4YCA6IG51bGxcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQXNzZXREZXRhaWxzRnJvbVRlbXBsYXRlKGRhdGE6IGFueSk6IGFueSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgcmV0dXJuIGRhdGEubWFwKHJlbW92ZUFzc2V0RGV0YWlsc0Zyb21UZW1wbGF0ZSlcbiAgfVxuXG4gIGlmIChkYXRhID09PSBPYmplY3QoZGF0YSkpIHtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMoZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilcbiAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3Q3VycmVudFZlcnNpb24gPSByZXdyaXRlQ3VycmVudFZlcnNpb25JZkZvdW5kKGtleSlcbiAgICAgICAgICBpZiAobmV3Q3VycmVudFZlcnNpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBbbmV3Q3VycmVudFZlcnNpb24sIHJlbW92ZUFzc2V0RGV0YWlsc0Zyb21UZW1wbGF0ZSh2YWx1ZSldXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChrZXkuaW5jbHVkZXMoXCJBc3NldFBhcmFtZXRlclwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAga2V5ID09PSBcIlJlZlwiICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgIHZhbHVlLmluY2x1ZGVzKFwiQXNzZXRQYXJhbWV0ZXJzXCIpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gW2tleSwgXCJzbmFwc2hvdC12YWx1ZVwiXVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBrZXkgPT09IFwiYXdzOmFzc2V0OnBhdGhcIiAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICAvYXNzZXRcXC5bMC05YS1mXXs2NH0vLnRlc3QodmFsdWUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gW2tleSwgXCJhc3NldC5zbmFwc2hvdC12YWx1ZVwiXVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gW2tleSwgcmVtb3ZlQXNzZXREZXRhaWxzRnJvbVRlbXBsYXRlKHZhbHVlKV1cbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcigoaXQpOiBpdCBpcyBbXSA9PiBpdCAhPSBudWxsKSxcbiAgICApXG4gIH1cblxuICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICBjb25zdCBuZXdDdXJyZW50VmVyc2lvbiA9IHJld3JpdGVDdXJyZW50VmVyc2lvbklmRm91bmQoZGF0YSlcbiAgICBpZiAobmV3Q3VycmVudFZlcnNpb24pIHtcbiAgICAgIHJldHVybiBuZXdDdXJyZW50VmVyc2lvblxuICAgIH1cblxuICAgIHJldHVybiBkYXRhXG4gICAgICAucmVwbGFjZShhc3NldENvbnRlbnRIYXNoUmVnZXgsIFwic25hcHNob3QtdmFsdWVcIilcbiAgICAgIC5yZXBsYWNlKHBpcGVsaW5lc0Fzc2V0SWRTdWZmaXhSZWdleCwgXCIkMXNuYXBzaG90LXZhbHVlXCIpXG4gIH1cblxuICByZXR1cm4gZGF0YVxufVxuXG5mdW5jdGlvbiByZW1vdmVBc3NldERldGFpbHNGcm9tTWFuaWZlc3QoZGF0YTogYW55KTogYW55IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICByZXR1cm4gZGF0YS5tYXAocmVtb3ZlQXNzZXREZXRhaWxzRnJvbU1hbmlmZXN0KVxuICB9XG5cbiAgaWYgKGRhdGEgPT09IE9iamVjdChkYXRhKSkge1xuICAgIC8vIGF3czpjZGs6YXNzZXQgaW4gbWV0YWRhdGFcbiAgICBpZiAoZGF0YS50eXBlID09PSBcImF3czpjZGs6YXNzZXRcIiAmJiBcImRhdGFcIiBpbiBkYXRhKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICBkYXRhOiBcInNuYXBzaG90LXZhbHVlXCIsXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pXG4gICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIGlmIChrZXkuaW5jbHVkZXMoXCJBc3NldFBhcmFtZXRlcnNcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBba2V5LCByZW1vdmVBc3NldERldGFpbHNGcm9tTWFuaWZlc3QodmFsdWUpXVxuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKChpdCk6IGl0IGlzIFtdID0+IGl0ICE9IG51bGwpLFxuICAgIClcbiAgfVxuXG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGNvbnN0IG5ld0N1cnJlbnRWZXJzaW9uID0gcmV3cml0ZUN1cnJlbnRWZXJzaW9uSWZGb3VuZChkYXRhKVxuICAgIGlmIChuZXdDdXJyZW50VmVyc2lvbikge1xuICAgICAgcmV0dXJuIG5ld0N1cnJlbnRWZXJzaW9uXG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGFcbiAgICAgIC5yZXBsYWNlKGFzc2V0Q29udGVudEhhc2hSZWdleCwgXCJzbmFwc2hvdC12YWx1ZVwiKVxuICAgICAgLnJlcGxhY2UocGlwZWxpbmVzQXNzZXRJZFN1ZmZpeFJlZ2V4LCBcIiQxc25hcHNob3QtdmFsdWVcIilcbiAgfVxuXG4gIHJldHVybiBkYXRhXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBDREtNZXRhZGF0YSByZXNvdXJjZXMgdGhhdCBpcyBwYXJ0IG9mIHRoZSBzeW50aGVzaXplZFxuICogdGVtcGxhdGUgc2luY2UgQ0RLIDEuNjMuMC5cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlQ2RrTWV0YWRhdGFSZXNvdXJjZUZyb21UZW1wbGF0ZShkYXRhOiBhbnkpOiBhbnkge1xuICBjb25zdCBjcCA9IHtcbiAgICAuLi5kYXRhLFxuICAgIFJlc291cmNlczoge1xuICAgICAgLi4uZGF0YS5SZXNvdXJjZXMsXG4gICAgfSxcbiAgfVxuXG4gIGRlbGV0ZSBjcC5SZXNvdXJjZXMuQ0RLTWV0YWRhdGFcbiAgcmV0dXJuIGNwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlTWFuaWZlc3RGb3JTbmFwc2hvdChjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBpbnB1dCA9IEpTT04ucGFyc2UoY29udGVudClcbiAgY29uc3Qgb3V0cHV0ID0gW1xuICAgIHJlbW92ZVZlcnNpb24sXG4gICAgLy8gUmVtb3ZlIHRoZSBydW50aW1lIHZlcnNpb24gaW5mb3JtYXRpb24gc28gaXQgZG9uJ3QgY29uZmxpY3Qgd2l0aCBDSVxuICAgIC8vIG9yIG90aGVyIHVzZXJzIGdlbmVyYXRpbmcgdGhlIHNuYXBzaG90cy5cbiAgICByZW1vdmVSdW50aW1lTGlicmFyaWVzLFxuICAgIC8vIFJlbW92ZSB0aGUgdHJhY2UgZnJvbSBtYW5pZmVzdCBmb3Igbm93LlxuICAgIHJlbW92ZVRyYWNlLFxuICAgIC8vIEF2b2lkIGRldGFpbHMgKGhhc2hlcykgZnJvbSBhc3NldHMuXG4gICAgcmVtb3ZlQXNzZXREZXRhaWxzRnJvbU1hbmlmZXN0LFxuICBdLnJlZHVjZSgoYWNjLCBmbikgPT4gZm4oYWNjKSwgaW5wdXQpXG5cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG91dHB1dCwgdW5kZWZpbmVkLCBcIiAgXCIpXG59XG5cbi8qKlxuICogVHJhbnNmb3JtIHRoZSBDbG91ZCBBc3NlbWJseSBtYW5pZmVzdCBmaWxlIHNvIHRoYXQgaXQgY2FuIGJlIHBlcnNpc3RlZFxuICogYXMgYSBzbmFwc2hvdCB3aXRob3V0IGNhdXNpbmcgaW52YWxpZGF0aW9ucyBmb3IgZXZlcnkgc3ludGhlc2l6ZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcHJlcGFyZU1hbmlmZXN0RmlsZUZvclNuYXBzaG90KGZpbGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZXN1bHQgPSBwcmVwYXJlTWFuaWZlc3RGb3JTbmFwc2hvdChcbiAgICBhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZShmaWxlLCBcInV0ZjhcIiksXG4gIClcblxuICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUoZmlsZSwgcmVzdWx0KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVRlbXBsYXRlRm9yU25hcHNob3QoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgaW5wdXQgPSBKU09OLnBhcnNlKGNvbnRlbnQpXG4gIGNvbnN0IG91dHB1dCA9IFtcbiAgICByZW1vdmVDZGtNZXRhZGF0YVJlc291cmNlRnJvbVRlbXBsYXRlLFxuICAgIC8vIEF2b2lkIGRldGFpbHMgKGhhc2hlcykgZnJvbSBhc3NldHMuXG4gICAgcmVtb3ZlQXNzZXREZXRhaWxzRnJvbVRlbXBsYXRlLFxuICBdLnJlZHVjZSgoYWNjLCBmbikgPT4gZm4oYWNjKSwgaW5wdXQpXG5cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG91dHB1dCwgdW5kZWZpbmVkLCBcIiAgXCIpXG59XG5cbi8qKlxuICogVHJhbnNmb3JtIGEgQ2xvdWQgQXNzZW1ibHkgdGVtcGxhdGUgZmlsZSBzbyB0aGF0IGl0IGNhbiBiZSBwZXJzaXN0ZWRcbiAqIGFzIGEgc25hcHNob3Qgd2l0aG91dCBjYXVzaW5nIGludmFsaWRhdGlvbnMgZm9yIG1pbm9yIGNoYW5nZXMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHByZXBhcmVUZW1wbGF0ZUZpbGVGb3JTbmFwc2hvdChmaWxlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcmVzdWx0ID0gcHJlcGFyZVRlbXBsYXRlRm9yU25hcHNob3QoXG4gICAgYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUoZmlsZSwgXCJ1dGY4XCIpLFxuICApXG5cbiAgYXdhaXQgZnMucHJvbWlzZXMud3JpdGVGaWxlKGZpbGUsIHJlc3VsdClcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgQ2xvdWQgQXNzZW1ibHkgdG8gYSBzbmFwc2hvdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNsb3VkQXNzZW1ibHlTbmFwc2hvdChcbiAgc3JjOiBzdHJpbmcsXG4gIGRzdDogc3RyaW5nLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGRlc3RBYnMgPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgZHN0KVxuICBjb25zdCBzcmNBYnMgPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgc3JjKVxuXG4gIC8vIENvcHkgYWxsIGZpbGVzIGZyb20gc3JjIChjZGsub3V0KSB0byBkZXN0IChfX3NuYXBzaG90c19fKVxuICBmcy5jcFN5bmMoc3JjQWJzLCBkZXN0QWJzLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuXG4gIGNvbnN0IGV4cGFuZEdsb2IgPSAocGF0dGVybjogc3RyaW5nLCBjd2Q6IHN0cmluZyk6IHN0cmluZ1tdID0+IHtcbiAgICByZXR1cm4gZnMuZ2xvYlN5bmMocGF0dGVybiwgeyBjd2QgfSkubWFwKChwKSA9PiBwYXRoLmpvaW4oY3dkLCBwKSlcbiAgfVxuXG4gIGNvbnN0IGZpbGVzVG9EZWxldGUgPSBbXG4gICAgLy8gRG9uJ3Qga2VlcCB0cmFjayBvZiBtYW5pZmVzdCB2ZXJzaW9uLlxuICAgIFwiKiovY2RrLm91dFwiLFxuXG4gICAgLy8gVGhlIHRyZWUgZmlsZSBkb2Vzbid0IGdpdmUgdXMgbXVjaCB2YWx1ZSBhcyBwYXJ0IG9mIHRoZSBzbmFwc2hvdC5cbiAgICBcIioqL3RyZWUuanNvblwiLFxuXG4gICAgLy8gUmVtb3ZlIGFzc2V0IGNvbnRlbnRzIGZvciBub3cuXG4gICAgXCIqKi9hc3NldC4qXCIsXG5cbiAgICAvLyBSZW1vdmUgYXNzZXQgY29uZmlncyBzbyB3ZSBkb24ndCBoYXZlIHRvIHVwZGF0ZSBzbmFwc2hvdHMgZm9yIGFzc2V0IGNoYW5nZXMuXG4gICAgXCIqKi8qLmFzc2V0cy5qc29uXCIsXG5cbiAgICAvLyBSZW1vdmUgZ3JhcGh2aXogZmlsZXMgZ2VuZXJhdGVkIHdoZW4gdXNpbmcgQ0RLIFBpcGVsaW5lc1xuICAgIFwiKiovKi5kb3RcIixcbiAgXS5mbGF0TWFwKChnKSA9PiBleHBhbmRHbG9iKGcsIGRlc3RBYnMpKVxuXG4gIGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGZpbGVzVG9EZWxldGUubWFwKChwKSA9PlxuICAgICAgZnMucHJvbWlzZXMucm0ocCwge1xuICAgICAgICByZWN1cnNpdmU6IHRydWUsXG4gICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgfSksXG4gICAgKSxcbiAgKVxuXG4gIGNvbnN0IG1hbmlmZXN0RmlsZXMgPSBbXG4gICAgLy8gVHJhbnNmb3JtIHRoZSBtYW5pZmVzdCB0byBiZSBtb3JlIHNuYXBzaG90IGZyaWVuZGx5LlxuICAgIFwiKiovbWFuaWZlc3QuanNvblwiLFxuICBdLmZsYXRNYXAoKGcpID0+IGV4cGFuZEdsb2IoZywgZGVzdEFicykpXG5cbiAgZm9yIChjb25zdCBmaWxlIG9mIG1hbmlmZXN0RmlsZXMpIHtcbiAgICBhd2FpdCBwcmVwYXJlTWFuaWZlc3RGaWxlRm9yU25hcHNob3QoZmlsZSlcbiAgfVxuXG4gIGNvbnN0IHRlbXBsYXRlRmlsZXMgPSBbXG4gICAgLy8gVHJhbnNmb3JtIGFsbCB0ZW1wbGF0ZXMuXG4gICAgXCIqKi8qLnRlbXBsYXRlLmpzb25cIixcbiAgXS5mbGF0TWFwKChnKSA9PiBleHBhbmRHbG9iKGcsIGRlc3RBYnMpKVxuXG4gIGZvciAoY29uc3QgZmlsZSBvZiB0ZW1wbGF0ZUZpbGVzKSB7XG4gICAgYXdhaXQgcHJlcGFyZVRlbXBsYXRlRmlsZUZvclNuYXBzaG90KGZpbGUpXG4gIH1cbn1cbiJdfQ==
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHNob3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NuYXBzaG90cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUM3QixPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUVqQyxTQUFTLGFBQWEsQ0FBQyxJQUFTO0lBQzlCLE1BQU0sRUFBRSxHQUFHO1FBQ1QsR0FBRyxJQUFJO0tBQ1IsQ0FBQTtJQUVELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQTtJQUNqQixPQUFPLEVBQUUsQ0FBQTtBQUNYLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxJQUFTO0lBQzVCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBRUQsSUFBSSxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUN2QixNQUFNLENBQUMsT0FBTyxDQUFDLElBQStCLENBQUM7YUFDNUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQzthQUNsQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDcEQsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLElBQVM7SUFDdkMsTUFBTSxFQUFFLEdBQUc7UUFDVCxHQUFHLElBQUk7S0FDUixDQUFBO0lBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIs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RUFBRSxDQUNyQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQ25DLENBQ0YsQ0FDRixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gXCJub2RlOmZzXCJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiXG5cbmZ1bmN0aW9uIHJlbW92ZVZlcnNpb24oZGF0YTogYW55KTogYW55IHtcbiAgY29uc3QgY3AgPSB7XG4gICAgLi4uZGF0YSxcbiAgfVxuXG4gIGRlbGV0ZSBjcC52ZXJzaW9uXG4gIHJldHVybiBjcFxufVxuXG5mdW5jdGlvbiByZW1vdmVUcmFjZShkYXRhOiBhbnkpOiBhbnkge1xuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgIHJldHVybiBkYXRhLm1hcChyZW1vdmVUcmFjZSlcbiAgfVxuXG4gIGlmIChkYXRhID09PSBPYmplY3QoZGF0YSkpIHtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMoZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilcbiAgICAgICAgLmZpbHRlcigoW2tleV0pID0+IGtleSAhPT0gXCJ0cmFjZVwiKVxuICAgICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IFtrZXksIHJlbW92ZVRyYWNlKHZhbHVlKV0pLFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBkYXRhXG59XG5cbmZ1bmN0aW9uIHJlbW92ZVJ1bnRpbWVMaWJyYXJpZXMoZGF0YTogYW55KTogYW55IHtcbiAgY29uc3QgY3AgPSB7XG4gICAgLi4uZGF0YSxcbiAgfVxuXG4gIGlmIChkYXRhLnJ1bnRpbWUpIHtcbiAgICBjcC5ydW50aW1lID0ge1xuICAgICAgLi4uZGF0YS5ydW50aW1lLFxuICAgIH1cblxuICAgIGRlbGV0ZSBjcC5ydW50aW1lLmxpYnJhcmllc1xuICB9XG5cbiAgcmV0dXJuIGNwXG59XG5cbmNvbnN0IGN1cnJlbnRWZXJzaW9uUmVnZXggPSAvXiguK0N1cnJlbnRWZXJzaW9uWzAtOUEtRl17OH0pWzAtOWEtZl17MzJ9JC9cblxuLy8gTWF0Y2hlcyA2NC1jaGFyIGhleCBzdHJpbmdzIHVzZWQgYXMgQ0RLIGFzc2V0IGNvbnRlbnQgaGFzaGVzLlxuY29uc3QgYXNzZXRDb250ZW50SGFzaFJlZ2V4ID0gL1swLTlhLWZdezY0fS9nXG5cbi8vIE1hdGNoZXMgdGhlIHNob3J0IDgtY2hhciBoYXNoIHN1ZmZpeCBpbiBDREsgUGlwZWxpbmVzIGFzc2V0IGlkZW50aWZpZXJzLFxuLy8gZS5nLiBcInNuYXBzaG90LXZhbHVlOjEyMzQ1Njc4OTAxMi1ldS13ZXN0LTEtMGU5NGY5ZGVcIi5cbmNvbnN0IHBpcGVsaW5lc0Fzc2V0SWRTdWZmaXhSZWdleCA9XG4gIC8oc25hcHNob3QtdmFsdWU6XFxkKy1bYS16MC05LV0rLSlbMC05YS1mXXs4fS9nXG5cbi8qKlxuICogTWF0Y2ggYSByZXNvdXJjZSBjcmVhdGVkIGJ5IGBsYW1iZGEuRnVuY3Rpb24uY3VycmVudFZlcnNpb25gLCB3aGljaFxuICogd2lsbCBpbmNsdWRlIHRoZSBhc3NldCBoYXNoIGFzIHBhcnQgb2YgdGhlIHJlb3VzcmNlIG5hbWUgYW5kIHJldHVyblxuICogYSBzbmFwc2hvdC1mcmllbmRseSB2ZXJzaW9uIG9mIGl0IGlmIGZvdW5kLlxuICovXG5mdW5jdGlvbiByZXdyaXRlQ3VycmVudFZlcnNpb25JZkZvdW5kKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgbWF0Y2ggPSBjdXJyZW50VmVyc2lvblJlZ2V4LmV4ZWModmFsdWUpXG4gIHJldHVybiBtYXRjaCA/IGAke21hdGNoWzFdfXh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4YCA6IG51bGxcbn1cblxuLyoqXG4gKiBSZXBsYWNlIGFzc2V0IGhhc2hlcyBpbiBhIHN0cmluZyB2YWx1ZSB3aXRoIHN0YWJsZSBwbGFjZWhvbGRlcnMuXG4gKiBTaGFyZWQgYnkgYm90aCB0ZW1wbGF0ZSBhbmQgbWFuaWZlc3QvbWV0YWRhdGEgYXNzZXQgc3RyaXBwaW5nLlxuICovXG5mdW5jdGlvbiByZXBsYWNlQXNzZXRIYXNoZXNJblN0cmluZyh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbmV3Q3VycmVudFZlcnNpb24gPSByZXdyaXRlQ3VycmVudFZlcnNpb25JZkZvdW5kKHZhbHVlKVxuICBpZiAobmV3Q3VycmVudFZlcnNpb24pIHtcbiAgICByZXR1cm4gbmV3Q3VycmVudFZlcnNpb25cbiAgfVxuXG4gIHJldHVybiB2YWx1ZVxuICAgIC5yZXBsYWNlKGFzc2V0Q29udGVudEhhc2hSZWdleCwgXCJzbmFwc2hvdC12YWx1ZVwiKVxuICAgIC5yZXBsYWNlKHBpcGVsaW5lc0Fzc2V0SWRTdWZmaXhSZWdleCwgXCIkMXNuYXBzaG90LXZhbHVlXCIpXG59XG5cbmZ1bmN0aW9uIHJlbW92ZUFzc2V0RGV0YWlsc0Zyb21UZW1wbGF0ZShkYXRhOiBhbnkpOiBhbnkge1xuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgIHJldHVybiBkYXRhLm1hcChyZW1vdmVBc3NldERldGFpbHNGcm9tVGVtcGxhdGUpXG4gIH1cblxuICBpZiAoZGF0YSA9PT0gT2JqZWN0KGRhdGEpKSB7XG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pXG4gICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld0N1cnJlbnRWZXJzaW9uID0gcmV3cml0ZUN1cnJlbnRWZXJzaW9uSWZGb3VuZChrZXkpXG4gICAgICAgICAgaWYgKG5ld0N1cnJlbnRWZXJzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gW25ld0N1cnJlbnRWZXJzaW9uLCByZW1vdmVBc3NldERldGFpbHNGcm9tVGVtcGxhdGUodmFsdWUpXVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKFwiQXNzZXRQYXJhbWV0ZXJcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGtleSA9PT0gXCJSZWZcIiAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICB2YWx1ZS5pbmNsdWRlcyhcIkFzc2V0UGFyYW1ldGVyc1wiKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIFtrZXksIFwic25hcHNob3QtdmFsdWVcIl1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAga2V5ID09PSBcImF3czphc3NldDpwYXRoXCIgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgL2Fzc2V0XFwuWzAtOWEtZl17NjR9Ly50ZXN0KHZhbHVlKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIFtrZXksIFwiYXNzZXQuc25hcHNob3QtdmFsdWVcIl1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFtrZXksIHJlbW92ZUFzc2V0RGV0YWlsc0Zyb21UZW1wbGF0ZSh2YWx1ZSldXG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoKGl0KTogaXQgaXMgW10gPT4gaXQgIT0gbnVsbCksXG4gICAgKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHJlcGxhY2VBc3NldEhhc2hlc0luU3RyaW5nKGRhdGEpXG4gIH1cblxuICByZXR1cm4gZGF0YVxufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IHN0cmlwIGFzc2V0LXJlbGF0ZWQgZGV0YWlscyAoaGFzaGVzLCBwYXJhbWV0ZXJzKSBmcm9tIGEgSlNPTlxuICogc3RydWN0dXJlLiBVc2VkIGZvciBib3RoIG1hbmlmZXN0Lmpzb24gKENESyA8IDIuMjQyLjAgd2l0aCBpbmxpbmUgbWV0YWRhdGEpXG4gKiBhbmQgc3RhbmRhbG9uZSAqLm1ldGFkYXRhLmpzb24gZmlsZXMgKENESyA+PSAyLjI0Mi4wKS5cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlQXNzZXREZXRhaWxzRnJvbU1hbmlmZXN0KGRhdGE6IGFueSk6IGFueSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgcmV0dXJuIGRhdGEubWFwKHJlbW92ZUFzc2V0RGV0YWlsc0Zyb21NYW5pZmVzdClcbiAgfVxuXG4gIGlmIChkYXRhID09PSBPYmplY3QoZGF0YSkpIHtcbiAgICAvLyBhd3M6Y2RrOmFzc2V0IGluIG1ldGFkYXRhXG4gICAgaWYgKGRhdGEudHlwZSA9PT0gXCJhd3M6Y2RrOmFzc2V0XCIgJiYgXCJkYXRhXCIgaW4gZGF0YSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgZGF0YTogXCJzbmFwc2hvdC12YWx1ZVwiLFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBPYmplY3QuZW50cmllcyhkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVxuICAgICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKFwiQXNzZXRQYXJhbWV0ZXJzXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gW2tleSwgcmVtb3ZlQXNzZXREZXRhaWxzRnJvbU1hbmlmZXN0KHZhbHVlKV1cbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcigoaXQpOiBpdCBpcyBbXSA9PiBpdCAhPSBudWxsKSxcbiAgICApXG4gIH1cblxuICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gcmVwbGFjZUFzc2V0SGFzaGVzSW5TdHJpbmcoZGF0YSlcbiAgfVxuXG4gIHJldHVybiBkYXRhXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBDREtNZXRhZGF0YSByZXNvdXJjZXMgdGhhdCBpcyBwYXJ0IG9mIHRoZSBzeW50aGVzaXplZFxuICogdGVtcGxhdGUgc2luY2UgQ0RLIDEuNjMuMC5cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlQ2RrTWV0YWRhdGFSZXNvdXJjZUZyb21UZW1wbGF0ZShkYXRhOiBhbnkpOiBhbnkge1xuICBjb25zdCBjcCA9IHtcbiAgICAuLi5kYXRhLFxuICAgIFJlc291cmNlczoge1xuICAgICAgLi4uZGF0YS5SZXNvdXJjZXMsXG4gICAgfSxcbiAgfVxuXG4gIGRlbGV0ZSBjcC5SZXNvdXJjZXMuQ0RLTWV0YWRhdGFcbiAgcmV0dXJuIGNwXG59XG5cbi8qKlxuICogU2FuaXRpemUgYSBDbG91ZCBBc3NlbWJseSBtYW5pZmVzdC5qc29uIGZvciBzbmFwc2hvdCB1c2UuXG4gKlxuICogT24gQ0RLIDwgMi4yNDIuMCB0aGUgbWFuaWZlc3QgY29udGFpbnMgaW5saW5lIG1ldGFkYXRhIHBlciBzdGFjayBhcnRpZmFjdC5cbiAqIE9uIENESyA+PSAyLjI0Mi4wIHRoYXQgbWV0YWRhdGEgaXMgZXh0cmFjdGVkIGludG8gc2VwYXJhdGUgZmlsZXMgKGhhbmRsZWRcbiAqIGJ5IHtAbGluayBzYW5pdGl6ZU1ldGFkYXRhfSksIGJ1dCB0aGUgbWFuaWZlc3Qgc3RpbGwgbmVlZHMgdmVyc2lvbixcbiAqIHJ1bnRpbWUsIHRyYWNlLCBhbmQgYXNzZXQgZGV0YWlsIHN0cmlwcGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplTWFuaWZlc3QoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgaW5wdXQgPSBKU09OLnBhcnNlKGNvbnRlbnQpXG4gIGNvbnN0IG91dHB1dCA9IFtcbiAgICByZW1vdmVWZXJzaW9uLFxuICAgIC8vIFJlbW92ZSB0aGUgcnVudGltZSB2ZXJzaW9uIGluZm9ybWF0aW9uIHNvIGl0IGRvbid0IGNvbmZsaWN0IHdpdGggQ0lcbiAgICAvLyBvciBvdGhlciB1c2VycyBnZW5lcmF0aW5nIHRoZSBzbmFwc2hvdHMuXG4gICAgcmVtb3ZlUnVudGltZUxpYnJhcmllcyxcbiAgICByZW1vdmVUcmFjZSxcbiAgICAvLyBBdm9pZCBkZXRhaWxzIChoYXNoZXMpIGZyb20gYXNzZXRzLlxuICAgIHJlbW92ZUFzc2V0RGV0YWlsc0Zyb21NYW5pZmVzdCxcbiAgXS5yZWR1Y2UoKGFjYywgZm4pID0+IGZuKGFjYyksIGlucHV0KVxuXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShvdXRwdXQsIHVuZGVmaW5lZCwgXCIgIFwiKVxufVxuXG4vKipcbiAqIFNhbml0aXplIGFuIGV4dHJhY3RlZCBtZXRhZGF0YSBKU09OIGZpbGUgZm9yIHNuYXBzaG90IHVzZS5cbiAqXG4gKiBDREsgPj0gMi4yNDIuMCBleHRyYWN0cyBwZXItc3RhY2sgbWV0YWRhdGEgaW50byBzZXBhcmF0ZSAqLm1ldGFkYXRhLmpzb25cbiAqIGZpbGVzIChwcmV2aW91c2x5IHRoaXMgZGF0YSB3YXMgaW5saW5lIGluIG1hbmlmZXN0Lmpzb24pLiBUaGlzIGZ1bmN0aW9uXG4gKiBhcHBsaWVzIHRoZSBzYW1lIHNhbml0aXphdGlvbiAodHJhY2UgcmVtb3ZhbCwgYXNzZXQgZGV0YWlsIHN0cmlwcGluZykgc29cbiAqIHNuYXBzaG90cyByZW1haW4gc3RhYmxlIGFjcm9zcyBzeW50aGVzaXplcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplTWV0YWRhdGEoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgaW5wdXQgPSBKU09OLnBhcnNlKGNvbnRlbnQpXG4gIGNvbnN0IG91dHB1dCA9IFtyZW1vdmVUcmFjZSwgcmVtb3ZlQXNzZXREZXRhaWxzRnJvbU1hbmlmZXN0XS5yZWR1Y2UoXG4gICAgKGFjYywgZm4pID0+IGZuKGFjYyksXG4gICAgaW5wdXQsXG4gIClcblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob3V0cHV0LCB1bmRlZmluZWQsIFwiICBcIilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplVGVtcGxhdGUoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgaW5wdXQgPSBKU09OLnBhcnNlKGNvbnRlbnQpXG4gIGNvbnN0IG91dHB1dCA9IFtcbiAgICByZW1vdmVDZGtNZXRhZGF0YVJlc291cmNlRnJvbVRlbXBsYXRlLFxuICAgIC8vIEF2b2lkIGRldGFpbHMgKGhhc2hlcykgZnJvbSBhc3NldHMuXG4gICAgcmVtb3ZlQXNzZXREZXRhaWxzRnJvbVRlbXBsYXRlLFxuICBdLnJlZHVjZSgoYWNjLCBmbikgPT4gZm4oYWNjKSwgaW5wdXQpXG5cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG91dHB1dCwgdW5kZWZpbmVkLCBcIiAgXCIpXG59XG5cbi8qKlxuICogUmVhZCBhIGZpbGUsIGFwcGx5IGEgdHJhbnNmb3JtLCBhbmQgd3JpdGUgdGhlIHJlc3VsdCBiYWNrLlxuICovXG5hc3luYyBmdW5jdGlvbiB0cmFuc2Zvcm1GaWxlSW5QbGFjZShcbiAgZmlsZTogc3RyaW5nLFxuICB0cmFuc2Zvcm06IChjb250ZW50OiBzdHJpbmcpID0+IHN0cmluZyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZXN1bHQgPSB0cmFuc2Zvcm0oYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUoZmlsZSwgXCJ1dGY4XCIpKVxuICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUoZmlsZSwgcmVzdWx0KVxufVxuXG4vKipcbiAqIENvbnZlcnQgYSBDbG91ZCBBc3NlbWJseSB0byBhIHNuYXBzaG90LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ2xvdWRBc3NlbWJseVNuYXBzaG90KFxuICBzcmM6IHN0cmluZyxcbiAgZHN0OiBzdHJpbmcsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZGVzdEFicyA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBkc3QpXG4gIGNvbnN0IHNyY0FicyA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBzcmMpXG5cbiAgLy8gQ29weSBhbGwgZmlsZXMgZnJvbSBzcmMgKGNkay5vdXQpIHRvIGRlc3QgKF9fc25hcHNob3RzX18pXG4gIGZzLmNwU3luYyhzcmNBYnMsIGRlc3RBYnMsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG5cbiAgY29uc3QgZXhwYW5kR2xvYiA9IChwYXR0ZXJuOiBzdHJpbmcsIGN3ZDogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xuICAgIHJldHVybiBmcy5nbG9iU3luYyhwYXR0ZXJuLCB7IGN3ZCB9KS5tYXAoKHApID0+IHBhdGguam9pbihjd2QsIHApKVxuICB9XG5cbiAgY29uc3QgZmlsZXNUb0RlbGV0ZSA9IFtcbiAgICAvLyBEb24ndCBrZWVwIHRyYWNrIG9mIG1hbmlmZXN0IHZlcnNpb24uXG4gICAgXCIqKi9jZGsub3V0XCIsXG5cbiAgICAvLyBUaGUgdHJlZSBmaWxlIGRvZXNuJ3QgZ2l2ZSB1cyBtdWNoIHZhbHVlIGFzIHBhcnQgb2YgdGhlIHNuYXBzaG90LlxuICAgIFwiKiovdHJlZS5qc29uXCIsXG5cbiAgICAvLyBSZW1vdmUgYXNzZXQgY29udGVudHMgZm9yIG5vdy5cbiAgICBcIioqL2Fzc2V0LipcIixcblxuICAgIC8vIFJlbW92ZSBhc3NldCBjb25maWdzIHNvIHdlIGRvbid0IGhhdmUgdG8gdXBkYXRlIHNuYXBzaG90cyBmb3IgYXNzZXQgY2hhbmdlcy5cbiAgICBcIioqLyouYXNzZXRzLmpzb25cIixcblxuICAgIC8vIFJlbW92ZSBncmFwaHZpeiBmaWxlcyBnZW5lcmF0ZWQgd2hlbiB1c2luZyBDREsgUGlwZWxpbmVzXG4gICAgXCIqKi8qLmRvdFwiLFxuICBdLmZsYXRNYXAoKGcpID0+IGV4cGFuZEdsb2IoZywgZGVzdEFicykpXG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgZmlsZXNUb0RlbGV0ZS5tYXAoKHApID0+XG4gICAgICBmcy5wcm9taXNlcy5ybShwLCB7XG4gICAgICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgICAgICAgZm9yY2U6IHRydWUsXG4gICAgICB9KSxcbiAgICApLFxuICApXG5cbiAgY29uc3QgZmlsZVRyYW5zZm9ybXM6IFJlY29yZDxzdHJpbmcsIChjb250ZW50OiBzdHJpbmcpID0+IHN0cmluZz4gPSB7XG4gICAgXCIqKi9tYW5pZmVzdC5qc29uXCI6IHNhbml0aXplTWFuaWZlc3QsXG4gICAgLy8gQ0RLID49IDIuMjQyLjAgZXh0cmFjdHMgcGVyLXN0YWNrIG1ldGFkYXRhIGludG8gc2VwYXJhdGUgZmlsZXMuXG4gICAgLy8gTm8gbWF0Y2hlcyBvbiBvbGRlciBDREsg4oCUIHNhZmUgdG8gcHJvY2VzcyB1bmNvbmRpdGlvbmFsbHkuXG4gICAgXCIqKi8qLm1ldGFkYXRhLmpzb25cIjogc2FuaXRpemVNZXRhZGF0YSxcbiAgICBcIioqLyoudGVtcGxhdGUuanNvblwiOiBzYW5pdGl6ZVRlbXBsYXRlLFxuICB9XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgT2JqZWN0LmVudHJpZXMoZmlsZVRyYW5zZm9ybXMpLmZsYXRNYXAoKFtwYXR0ZXJuLCB0cmFuc2Zvcm1dKSA9PlxuICAgICAgZXhwYW5kR2xvYihwYXR0ZXJuLCBkZXN0QWJzKS5tYXAoKGYpID0+XG4gICAgICAgIHRyYW5zZm9ybUZpbGVJblBsYWNlKGYsIHRyYW5zZm9ybSksXG4gICAgICApLFxuICAgICksXG4gIClcbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@liflig/cdk",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.21.0",
|
|
4
4
|
"description": "CDK library for Liflig",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -40,17 +40,17 @@
|
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@aws-cdk/assert": "2.68.0",
|
|
43
|
-
"@aws-sdk/client-cloudwatch-logs": "3.
|
|
44
|
-
"@aws-sdk/client-codebuild": "3.
|
|
45
|
-
"@aws-sdk/client-codepipeline": "3.
|
|
46
|
-
"@aws-sdk/client-ecs": "3.
|
|
47
|
-
"@aws-sdk/client-s3": "3.
|
|
48
|
-
"@aws-sdk/client-secrets-manager": "3.
|
|
49
|
-
"@aws-sdk/client-ses": "3.
|
|
50
|
-
"@aws-sdk/client-sesv2": "3.
|
|
51
|
-
"@aws-sdk/client-sfn": "3.
|
|
52
|
-
"@aws-sdk/client-ssm": "3.
|
|
53
|
-
"@aws-sdk/lib-storage": "3.
|
|
43
|
+
"@aws-sdk/client-cloudwatch-logs": "3.1009.0",
|
|
44
|
+
"@aws-sdk/client-codebuild": "3.1009.0",
|
|
45
|
+
"@aws-sdk/client-codepipeline": "3.1009.0",
|
|
46
|
+
"@aws-sdk/client-ecs": "3.1009.0",
|
|
47
|
+
"@aws-sdk/client-s3": "3.1009.0",
|
|
48
|
+
"@aws-sdk/client-secrets-manager": "3.1009.0",
|
|
49
|
+
"@aws-sdk/client-ses": "3.1009.0",
|
|
50
|
+
"@aws-sdk/client-sesv2": "3.1009.0",
|
|
51
|
+
"@aws-sdk/client-sfn": "3.1009.0",
|
|
52
|
+
"@aws-sdk/client-ssm": "3.1009.0",
|
|
53
|
+
"@aws-sdk/lib-storage": "3.1009.0",
|
|
54
54
|
"@biomejs/biome": "2.4.6",
|
|
55
55
|
"@commitlint/cli": "20.4.4",
|
|
56
56
|
"@commitlint/config-conventional": "20.4.4",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"@types/jest": "30.0.0",
|
|
59
59
|
"@types/node": "24.12.0",
|
|
60
60
|
"aws-cdk": "2.1111.0",
|
|
61
|
-
"aws-cdk-lib": "2.
|
|
61
|
+
"aws-cdk-lib": "2.243.0",
|
|
62
62
|
"constructs": "10.5.1",
|
|
63
63
|
"esbuild": "0.27.4",
|
|
64
64
|
"jest": "30.3.0",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"typescript": "5.9.3"
|
|
73
73
|
},
|
|
74
74
|
"dependencies": {
|
|
75
|
-
"@capraconsulting/webapp-deploy-lambda": "2.5.
|
|
75
|
+
"@capraconsulting/webapp-deploy-lambda": "2.5.65",
|
|
76
76
|
"aws-jwt-verify": "5.1.1"
|
|
77
77
|
},
|
|
78
78
|
"peerDependencies": {
|