@awsless/cli 0.1.2 → 0.1.4
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/dist/bin.js +433 -356
- package/dist/handlers/icon.js +15 -1
- package/dist/handlers/pubsub-publisher.js +17 -3
- package/dist/handlers/pubsub-server.js +48 -26
- package/dist/test-global-setup.js +5 -1
- package/package.json +15 -15
package/dist/bin.js
CHANGED
|
@@ -6,39 +6,60 @@ var __defProp = Object.defineProperty;
|
|
|
6
6
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
7
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
8
8
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
function __accessProp(key) {
|
|
10
|
+
return this[key];
|
|
11
|
+
}
|
|
12
|
+
var __toESMCache_node;
|
|
13
|
+
var __toESMCache_esm;
|
|
9
14
|
var __toESM = (mod, isNodeMode, target) => {
|
|
15
|
+
var canCache = mod != null && typeof mod === "object";
|
|
16
|
+
if (canCache) {
|
|
17
|
+
var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
|
|
18
|
+
var cached = cache.get(mod);
|
|
19
|
+
if (cached)
|
|
20
|
+
return cached;
|
|
21
|
+
}
|
|
10
22
|
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
11
23
|
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
12
24
|
for (let key of __getOwnPropNames(mod))
|
|
13
25
|
if (!__hasOwnProp.call(to, key))
|
|
14
26
|
__defProp(to, key, {
|
|
15
|
-
get: (
|
|
27
|
+
get: __accessProp.bind(mod, key),
|
|
16
28
|
enumerable: true
|
|
17
29
|
});
|
|
30
|
+
if (canCache)
|
|
31
|
+
cache.set(mod, to);
|
|
18
32
|
return to;
|
|
19
33
|
};
|
|
20
|
-
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
21
34
|
var __toCommonJS = (from) => {
|
|
22
|
-
var entry = __moduleCache.get(from), desc;
|
|
35
|
+
var entry = (__moduleCache ??= new WeakMap).get(from), desc;
|
|
23
36
|
if (entry)
|
|
24
37
|
return entry;
|
|
25
38
|
entry = __defProp({}, "__esModule", { value: true });
|
|
26
|
-
if (from && typeof from === "object" || typeof from === "function")
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
39
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
40
|
+
for (var key of __getOwnPropNames(from))
|
|
41
|
+
if (!__hasOwnProp.call(entry, key))
|
|
42
|
+
__defProp(entry, key, {
|
|
43
|
+
get: __accessProp.bind(from, key),
|
|
44
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
45
|
+
});
|
|
46
|
+
}
|
|
31
47
|
__moduleCache.set(from, entry);
|
|
32
48
|
return entry;
|
|
33
49
|
};
|
|
50
|
+
var __moduleCache;
|
|
34
51
|
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
52
|
+
var __returnValue = (v) => v;
|
|
53
|
+
function __exportSetter(name, newValue) {
|
|
54
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
55
|
+
}
|
|
35
56
|
var __export = (target, all) => {
|
|
36
57
|
for (var name in all)
|
|
37
58
|
__defProp(target, name, {
|
|
38
59
|
get: all[name],
|
|
39
60
|
enumerable: true,
|
|
40
61
|
configurable: true,
|
|
41
|
-
set: (
|
|
62
|
+
set: __exportSetter.bind(all, name)
|
|
42
63
|
});
|
|
43
64
|
};
|
|
44
65
|
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
@@ -832,7 +853,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
832
853
|
this._exitCallback = (err) => {
|
|
833
854
|
if (err.code !== "commander.executeSubCommandAsync") {
|
|
834
855
|
throw err;
|
|
835
|
-
}
|
|
856
|
+
}
|
|
836
857
|
};
|
|
837
858
|
}
|
|
838
859
|
return this;
|
|
@@ -3069,7 +3090,7 @@ var require_cell = __commonJS((exports, module) => {
|
|
|
3069
3090
|
let content = utils.truncate(this.content, 10, this.truncate);
|
|
3070
3091
|
if (!lineNum) {
|
|
3071
3092
|
info(`${this.y}-${this.x}: ${this.rowSpan - lineNum}x${this.colSpan} Cell ${content}`);
|
|
3072
|
-
}
|
|
3093
|
+
}
|
|
3073
3094
|
let padLen = Math.max(this.height - this.lines.length, 0);
|
|
3074
3095
|
let padTop;
|
|
3075
3096
|
switch (this.vAlign) {
|
|
@@ -26838,7 +26859,7 @@ var require_node_gyp_build_optional_packages = __commonJS((exports, module) => {
|
|
|
26838
26859
|
|
|
26839
26860
|
// ../../node_modules/.pnpm/msgpackr-extract@3.0.4/node_modules/msgpackr-extract/index.js
|
|
26840
26861
|
var require_msgpackr_extract = __commonJS((exports, module) => {
|
|
26841
|
-
var __dirname = "/Users/
|
|
26862
|
+
var __dirname = "/Users/work/Code/awsless/node_modules/.pnpm/msgpackr-extract@3.0.4/node_modules/msgpackr-extract";
|
|
26842
26863
|
module.exports = require_node_gyp_build_optional_packages()(__dirname);
|
|
26843
26864
|
});
|
|
26844
26865
|
|
|
@@ -39706,7 +39727,7 @@ var require_src3 = __commonJS((exports) => {
|
|
|
39706
39727
|
|
|
39707
39728
|
// ../../node_modules/.pnpm/@grpc+grpc-js@1.12.6/node_modules/@grpc/grpc-js/build/src/channelz.js
|
|
39708
39729
|
var require_channelz = __commonJS((exports) => {
|
|
39709
|
-
var __dirname = "/Users/
|
|
39730
|
+
var __dirname = "/Users/work/Code/awsless/node_modules/.pnpm/@grpc+grpc-js@1.12.6/node_modules/@grpc/grpc-js/build/src";
|
|
39710
39731
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39711
39732
|
exports.registerChannelzSocket = exports.registerChannelzServer = exports.registerChannelzSubchannel = exports.registerChannelzChannel = exports.ChannelzCallTrackerStub = exports.ChannelzCallTracker = exports.ChannelzChildrenTrackerStub = exports.ChannelzChildrenTracker = exports.ChannelzTrace = exports.ChannelzTraceStub = undefined;
|
|
39712
39733
|
exports.unregisterChannelzRef = unregisterChannelzRef;
|
|
@@ -57210,7 +57231,7 @@ var require_zipEntries = __commonJS((exports, module) => {
|
|
|
57210
57231
|
if (this.centralDirRecords !== this.files.length) {
|
|
57211
57232
|
if (this.centralDirRecords !== 0 && this.files.length === 0) {
|
|
57212
57233
|
throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length);
|
|
57213
|
-
}
|
|
57234
|
+
}
|
|
57214
57235
|
}
|
|
57215
57236
|
},
|
|
57216
57237
|
readEndOfCentral: function() {
|
|
@@ -74431,7 +74452,7 @@ WD9f
|
|
|
74431
74452
|
|
|
74432
74453
|
// ../../node_modules/.pnpm/ioredis@5.10.1_supports-color@8.1.1/node_modules/ioredis/built/utils/index.js
|
|
74433
74454
|
var require_utils5 = __commonJS((exports) => {
|
|
74434
|
-
var __dirname = "/Users/
|
|
74455
|
+
var __dirname = "/Users/work/Code/awsless/node_modules/.pnpm/ioredis@5.10.1_supports-color@8.1.1/node_modules/ioredis/built/utils";
|
|
74435
74456
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
74436
74457
|
exports.noop = exports.defaults = exports.Debug = exports.getPackageMeta = exports.zipMap = exports.CONNECTION_CLOSED_ERROR_MSG = exports.shuffle = exports.sample = exports.resolveTLSProfile = exports.parseURL = exports.optimizeErrorStack = exports.toArg = exports.convertMapToArray = exports.convertObjectToArray = exports.timeout = exports.packObject = exports.isInt = exports.wrapMultiResult = exports.convertBufferToString = undefined;
|
|
74437
74458
|
var fs_1 = __require("fs");
|
|
@@ -74717,7 +74738,7 @@ var require_argumentParsers = __commonJS((exports) => {
|
|
|
74717
74738
|
|
|
74718
74739
|
// ../../node_modules/.pnpm/ioredis@5.10.1_supports-color@8.1.1/node_modules/ioredis/built/Command.js
|
|
74719
74740
|
var require_Command = __commonJS((exports) => {
|
|
74720
|
-
var __dirname = "/Users/
|
|
74741
|
+
var __dirname = "/Users/work/Code/awsless/node_modules/.pnpm/ioredis@5.10.1_supports-color@8.1.1/node_modules/ioredis/built";
|
|
74721
74742
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
74722
74743
|
var commands_1 = require_built();
|
|
74723
74744
|
var calculateSlot = require_lib4();
|
|
@@ -95364,7 +95385,7 @@ var require_db_util = __commonJS((exports) => {
|
|
|
95364
95385
|
|
|
95365
95386
|
// ../../node_modules/.pnpm/redis-memory-server@0.16.1_supports-color@8.1.1/node_modules/redis-memory-server/lib/util/RedisInstance.js
|
|
95366
95387
|
var require_RedisInstance = __commonJS((exports) => {
|
|
95367
|
-
var __dirname = "/Users/
|
|
95388
|
+
var __dirname = "/Users/work/Code/awsless/node_modules/.pnpm/redis-memory-server@0.16.1_supports-color@8.1.1/node_modules/redis-memory-server/lib/util";
|
|
95368
95389
|
var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P3, generator) {
|
|
95369
95390
|
function adopt(value) {
|
|
95370
95391
|
return value instanceof P3 ? value : new P3(function(resolve3) {
|
|
@@ -101278,7 +101299,7 @@ var require_unbzip2_stream = __commonJS((exports, module) => {
|
|
|
101278
101299
|
stream2.queue(d5);
|
|
101279
101300
|
if (d5 !== null) {
|
|
101280
101301
|
outlength += d5.length;
|
|
101281
|
-
}
|
|
101302
|
+
}
|
|
101282
101303
|
});
|
|
101283
101304
|
} catch (e4) {
|
|
101284
101305
|
stream2.emit("error", e4);
|
|
@@ -103024,7 +103045,8 @@ var import_decompress, import_sleep_await, mock, searchClient = (options = {}, s
|
|
|
103024
103045
|
if (mock) {
|
|
103025
103046
|
return mock;
|
|
103026
103047
|
}
|
|
103027
|
-
const
|
|
103048
|
+
const scheme = process.env.AWSLESS_ENV === "local" ? "http://" : "https://";
|
|
103049
|
+
const node = options.node ?? scheme + process.env.SEARCH_DOMAIN;
|
|
103028
103050
|
const first = Array.isArray(node) ? node[0] : node;
|
|
103029
103051
|
const nodeUrl = typeof first === "string" ? first : String(first?.url ?? "");
|
|
103030
103052
|
return new Client4({
|
|
@@ -108458,6 +108480,10 @@ var format = (parts) => {
|
|
|
108458
108480
|
if (part instanceof Error) {
|
|
108459
108481
|
return part.stack ?? part.message;
|
|
108460
108482
|
}
|
|
108483
|
+
if (Array.isArray(part)) {
|
|
108484
|
+
return part.map((entry) => format([entry])).join(`
|
|
108485
|
+
`);
|
|
108486
|
+
}
|
|
108461
108487
|
return JSON.stringify(part);
|
|
108462
108488
|
}).join(" ");
|
|
108463
108489
|
};
|
|
@@ -114453,7 +114479,7 @@ var getSanitizedDevTypeScriptVersion = (version2 = "") => {
|
|
|
114453
114479
|
};
|
|
114454
114480
|
|
|
114455
114481
|
// ../../node_modules/.pnpm/@aws-sdk+util-user-agent-node@3.973.14_aws-crt@1.30.0_supports-color@8.1.1_/node_modules/@aws-sdk/util-user-agent-node/dist-es/getTypeScriptUserAgentPair.js
|
|
114456
|
-
var __dirname = "/Users/
|
|
114482
|
+
var __dirname = "/Users/work/Code/awsless/node_modules/.pnpm/@aws-sdk+util-user-agent-node@3.973.14_aws-crt@1.30.0_supports-color@8.1.1_/node_modules/@aws-sdk/util-user-agent-node/dist-es";
|
|
114457
114483
|
var tscVersion;
|
|
114458
114484
|
var TS_PACKAGE_JSON = join7("node_modules", "typescript", "package.json");
|
|
114459
114485
|
var getTypeScriptUserAgentPair = async () => {
|
|
@@ -128375,7 +128401,7 @@ import {
|
|
|
128375
128401
|
UpdateKeysCommand
|
|
128376
128402
|
} from "@aws-sdk/client-cloudfront-keyvaluestore";
|
|
128377
128403
|
|
|
128378
|
-
// ../../node_modules/.pnpm/@terraforge+core@0.0.
|
|
128404
|
+
// ../../node_modules/.pnpm/@terraforge+core@0.0.44_aws-crt@1.30.0_debug@4.4.3_supports-color@8.1.1__supports-color@8.1.1__graphology-types@0.24.8/node_modules/@terraforge/core/dist/index.mjs
|
|
128379
128405
|
var import_async_on_exit = __toESM(require_async_on_exit(), 1);
|
|
128380
128406
|
|
|
128381
128407
|
// ../../node_modules/.pnpm/p-limit@6.2.0/node_modules/p-limit/index.js
|
|
@@ -131530,6 +131556,17 @@ var $forEachNodeInTopologicalOrder = sort.forEachNodeInTopologicalOrder;
|
|
|
131530
131556
|
var $topologicalSort = sort.topologicalSort;
|
|
131531
131557
|
var $topologicalGenerations = sort.topologicalGenerations;
|
|
131532
131558
|
var $forEachTopologicalGeneration = sort.forEachTopologicalGeneration;
|
|
131559
|
+
// ../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/sha1.js
|
|
131560
|
+
import { createHash as createHash3 } from "crypto";
|
|
131561
|
+
function sha1(bytes) {
|
|
131562
|
+
if (Array.isArray(bytes)) {
|
|
131563
|
+
bytes = Buffer.from(bytes);
|
|
131564
|
+
} else if (typeof bytes === "string") {
|
|
131565
|
+
bytes = Buffer.from(bytes, "utf8");
|
|
131566
|
+
}
|
|
131567
|
+
return createHash3("sha1").update(bytes).digest();
|
|
131568
|
+
}
|
|
131569
|
+
var sha1_default = sha1;
|
|
131533
131570
|
|
|
131534
131571
|
// ../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/regex.js
|
|
131535
131572
|
var regex_default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;
|
|
@@ -131595,18 +131632,6 @@ function v35(version2, hash, value, namespace, buf, offset) {
|
|
|
131595
131632
|
return unsafeStringify(bytes);
|
|
131596
131633
|
}
|
|
131597
131634
|
|
|
131598
|
-
// ../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/sha1.js
|
|
131599
|
-
import { createHash as createHash3 } from "crypto";
|
|
131600
|
-
function sha1(bytes) {
|
|
131601
|
-
if (Array.isArray(bytes)) {
|
|
131602
|
-
bytes = Buffer.from(bytes);
|
|
131603
|
-
} else if (typeof bytes === "string") {
|
|
131604
|
-
bytes = Buffer.from(bytes, "utf8");
|
|
131605
|
-
}
|
|
131606
|
-
return createHash3("sha1").update(bytes).digest();
|
|
131607
|
-
}
|
|
131608
|
-
var sha1_default = sha1;
|
|
131609
|
-
|
|
131610
131635
|
// ../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm/v5.js
|
|
131611
131636
|
function v5(value, namespace, buf, offset) {
|
|
131612
131637
|
return v35(80, sha1_default, value, namespace, buf, offset);
|
|
@@ -131713,7 +131738,7 @@ var getter = (options = {}) => {
|
|
|
131713
131738
|
};
|
|
131714
131739
|
var get = getter();
|
|
131715
131740
|
|
|
131716
|
-
// ../../node_modules/.pnpm/@terraforge+core@0.0.
|
|
131741
|
+
// ../../node_modules/.pnpm/@terraforge+core@0.0.44_aws-crt@1.30.0_debug@4.4.3_supports-color@8.1.1__supports-color@8.1.1__graphology-types@0.24.8/node_modules/@terraforge/core/dist/index.mjs
|
|
131717
131742
|
import { appendFile, mkdir, readFile as readFile4, rename, rm, writeFile as writeFile2 } from "fs/promises";
|
|
131718
131743
|
var import_proper_lockfile = __toESM(require_proper_lockfile(), 1);
|
|
131719
131744
|
import { DynamoDB } from "@aws-sdk/client-dynamodb";
|
|
@@ -131986,7 +132011,7 @@ var unmarshall = (data, options) => {
|
|
|
131986
132011
|
return convertToNative({ M: data }, options);
|
|
131987
132012
|
};
|
|
131988
132013
|
|
|
131989
|
-
// ../../node_modules/.pnpm/@terraforge+core@0.0.
|
|
132014
|
+
// ../../node_modules/.pnpm/@terraforge+core@0.0.44_aws-crt@1.30.0_debug@4.4.3_supports-color@8.1.1__supports-color@8.1.1__graphology-types@0.24.8/node_modules/@terraforge/core/dist/index.mjs
|
|
131990
132015
|
import { createHash as createHash4, randomUUID as randomUUID2 } from "crypto";
|
|
131991
132016
|
import { DeleteObjectCommand, GetObjectCommand, PutObjectCommand, S3Client } from "@aws-sdk/client-s3";
|
|
131992
132017
|
var nodeMetaSymbol = Symbol("metadata");
|
|
@@ -132004,9 +132029,6 @@ var isDataSource = (obj) => {
|
|
|
132004
132029
|
return isNode(obj) && obj[nodeMetaSymbol].tag === "data";
|
|
132005
132030
|
};
|
|
132006
132031
|
var Group = class Group2 {
|
|
132007
|
-
parent;
|
|
132008
|
-
type;
|
|
132009
|
-
name;
|
|
132010
132032
|
children = [];
|
|
132011
132033
|
constructor(parent, type, name) {
|
|
132012
132034
|
this.parent = parent;
|
|
@@ -132052,7 +132074,6 @@ var Group = class Group2 {
|
|
|
132052
132074
|
}
|
|
132053
132075
|
};
|
|
132054
132076
|
var Stack = class extends Group {
|
|
132055
|
-
app;
|
|
132056
132077
|
dependencies = /* @__PURE__ */ new Set;
|
|
132057
132078
|
constructor(app, name) {
|
|
132058
132079
|
super(app, "stack", name);
|
|
@@ -132067,7 +132088,6 @@ var findParentStack = (group4) => {
|
|
|
132067
132088
|
return findParentStack(group4.parent);
|
|
132068
132089
|
};
|
|
132069
132090
|
var App = class extends Group {
|
|
132070
|
-
name;
|
|
132071
132091
|
constructor(name) {
|
|
132072
132092
|
super(undefined, "app", name);
|
|
132073
132093
|
this.name = name;
|
|
@@ -132081,8 +132101,6 @@ var PENDING = 1;
|
|
|
132081
132101
|
var RESOLVED = 2;
|
|
132082
132102
|
var REJECTED = 3;
|
|
132083
132103
|
var Future = class Future2 {
|
|
132084
|
-
callback;
|
|
132085
|
-
volatile;
|
|
132086
132104
|
listeners = /* @__PURE__ */ new Set;
|
|
132087
132105
|
status = IDLE;
|
|
132088
132106
|
data;
|
|
@@ -132104,28 +132122,28 @@ var Future = class Future2 {
|
|
|
132104
132122
|
}
|
|
132105
132123
|
}
|
|
132106
132124
|
pipe(cb) {
|
|
132107
|
-
return new Future2((resolve, reject) => {
|
|
132125
|
+
return new Future2((resolve$1, reject) => {
|
|
132108
132126
|
this.then((value) => {
|
|
132109
|
-
Promise.resolve(cb(value)).then((
|
|
132110
|
-
resolve(
|
|
132127
|
+
Promise.resolve(cb(value)).then((value$1) => {
|
|
132128
|
+
resolve$1(value$1);
|
|
132111
132129
|
}).catch(reject);
|
|
132112
132130
|
}, reject);
|
|
132113
132131
|
}, this.volatile);
|
|
132114
132132
|
}
|
|
132115
|
-
then(resolve, reject) {
|
|
132133
|
+
then(resolve$1, reject) {
|
|
132116
132134
|
if (this.volatile)
|
|
132117
132135
|
try {
|
|
132118
|
-
Promise.resolve(this.callback(resolve, (error3) => reject?.(error3))).catch((error3) => reject?.(error3));
|
|
132136
|
+
Promise.resolve(this.callback(resolve$1, (error3) => reject?.(error3))).catch((error3) => reject?.(error3));
|
|
132119
132137
|
} catch (error3) {
|
|
132120
132138
|
reject?.(error3);
|
|
132121
132139
|
}
|
|
132122
132140
|
else if (this.status === RESOLVED)
|
|
132123
|
-
resolve(this.data);
|
|
132141
|
+
resolve$1(this.data);
|
|
132124
132142
|
else if (this.status === REJECTED)
|
|
132125
132143
|
reject?.(this.error);
|
|
132126
132144
|
else {
|
|
132127
132145
|
this.listeners.add({
|
|
132128
|
-
resolve,
|
|
132146
|
+
resolve: resolve$1,
|
|
132129
132147
|
reject
|
|
132130
132148
|
});
|
|
132131
132149
|
if (this.status === IDLE) {
|
|
@@ -132134,7 +132152,7 @@ var Future = class Future2 {
|
|
|
132134
132152
|
if (this.status === PENDING) {
|
|
132135
132153
|
this.status = RESOLVED;
|
|
132136
132154
|
this.data = data;
|
|
132137
|
-
this.listeners.forEach(({ resolve:
|
|
132155
|
+
this.listeners.forEach(({ resolve: resolve$2 }) => resolve$2(data));
|
|
132138
132156
|
this.listeners.clear();
|
|
132139
132157
|
}
|
|
132140
132158
|
};
|
|
@@ -132142,7 +132160,7 @@ var Future = class Future2 {
|
|
|
132142
132160
|
if (this.status === PENDING) {
|
|
132143
132161
|
this.status = REJECTED;
|
|
132144
132162
|
this.error = error3;
|
|
132145
|
-
this.listeners.forEach(({ reject:
|
|
132163
|
+
this.listeners.forEach(({ reject: reject$1 }) => reject$1?.(error3));
|
|
132146
132164
|
this.listeners.clear();
|
|
132147
132165
|
}
|
|
132148
132166
|
};
|
|
@@ -132157,13 +132175,13 @@ var Future = class Future2 {
|
|
|
132157
132175
|
};
|
|
132158
132176
|
var findInputDeps = (props) => {
|
|
132159
132177
|
const deps = [];
|
|
132160
|
-
const find = (
|
|
132161
|
-
if (
|
|
132162
|
-
deps.push(...
|
|
132163
|
-
else if (Array.isArray(
|
|
132164
|
-
|
|
132165
|
-
else if (
|
|
132166
|
-
Object.values(
|
|
132178
|
+
const find = (props$1) => {
|
|
132179
|
+
if (props$1 instanceof Output)
|
|
132180
|
+
deps.push(...props$1.dependencies);
|
|
132181
|
+
else if (Array.isArray(props$1))
|
|
132182
|
+
props$1.map(find);
|
|
132183
|
+
else if (props$1?.constructor === Object)
|
|
132184
|
+
Object.values(props$1).map(find);
|
|
132167
132185
|
};
|
|
132168
132186
|
find(props);
|
|
132169
132187
|
return deps;
|
|
@@ -132186,7 +132204,7 @@ var resolveWithTimeout = async (promise) => {
|
|
|
132186
132204
|
}
|
|
132187
132205
|
};
|
|
132188
132206
|
var resolveInputs = async (inputs, fallback) => {
|
|
132189
|
-
const resolve = async (value, path) => {
|
|
132207
|
+
const resolve$1 = async (value, path) => {
|
|
132190
132208
|
if (value instanceof Output || value instanceof Future || value instanceof Promise)
|
|
132191
132209
|
try {
|
|
132192
132210
|
return await resolveWithTimeout(value);
|
|
@@ -132196,31 +132214,30 @@ var resolveInputs = async (inputs, fallback) => {
|
|
|
132196
132214
|
throw error3;
|
|
132197
132215
|
}
|
|
132198
132216
|
if (Array.isArray(value))
|
|
132199
|
-
return Promise.all(value.map((item, index) => resolve(item, [...path, index])));
|
|
132217
|
+
return Promise.all(value.map((item, index) => resolve$1(item, [...path, index])));
|
|
132200
132218
|
if (value?.constructor === Object) {
|
|
132201
|
-
const entries = Object.entries(value);
|
|
132202
|
-
const resolved = await Promise.all(entries.map(([key, item]) => resolve(item, [...path, key])));
|
|
132219
|
+
const entries$1 = Object.entries(value);
|
|
132220
|
+
const resolved = await Promise.all(entries$1.map(([key, item]) => resolve$1(item, [...path, key])));
|
|
132203
132221
|
const result = {};
|
|
132204
|
-
entries.forEach(([key], i3) => {
|
|
132222
|
+
entries$1.forEach(([key], i3) => {
|
|
132205
132223
|
result[key] = resolved[i3];
|
|
132206
132224
|
});
|
|
132207
132225
|
return result;
|
|
132208
132226
|
}
|
|
132209
132227
|
return value;
|
|
132210
132228
|
};
|
|
132211
|
-
return resolve(inputs, []);
|
|
132229
|
+
return resolve$1(inputs, []);
|
|
132212
132230
|
};
|
|
132213
132231
|
var Output = class Output2 extends Future {
|
|
132214
|
-
dependencies;
|
|
132215
132232
|
constructor(dependencies, callback, volatile = false) {
|
|
132216
132233
|
super(callback, volatile);
|
|
132217
132234
|
this.dependencies = dependencies;
|
|
132218
132235
|
}
|
|
132219
132236
|
pipe(cb) {
|
|
132220
|
-
return new Output2(this.dependencies, (resolve, reject) => {
|
|
132237
|
+
return new Output2(this.dependencies, (resolve$1, reject) => {
|
|
132221
132238
|
this.then((value) => {
|
|
132222
|
-
Promise.resolve(cb(value)).then((
|
|
132223
|
-
resolve(
|
|
132239
|
+
Promise.resolve(cb(value)).then((value$1) => {
|
|
132240
|
+
resolve$1(value$1);
|
|
132224
132241
|
}).catch(reject);
|
|
132225
132242
|
}, reject);
|
|
132226
132243
|
}, this.volatile);
|
|
@@ -132236,9 +132253,9 @@ var hasVolatileInput = (props) => {
|
|
|
132236
132253
|
return false;
|
|
132237
132254
|
};
|
|
132238
132255
|
var combine = (...inputs) => {
|
|
132239
|
-
return new Output(new Set(findInputDeps(inputs)), (resolve, reject) => {
|
|
132256
|
+
return new Output(new Set(findInputDeps(inputs)), (resolve$1, reject) => {
|
|
132240
132257
|
Promise.all(inputs).then(resolveInputs).then((result) => {
|
|
132241
|
-
resolve(result);
|
|
132258
|
+
resolve$1(result);
|
|
132242
132259
|
}, reject);
|
|
132243
132260
|
}, hasVolatileInput(inputs));
|
|
132244
132261
|
};
|
|
@@ -132262,7 +132279,7 @@ var createUrn = (tag, type, name, parentUrn) => {
|
|
|
132262
132279
|
var createMeta = (tag, provider, parent, type, logicalId, input, config) => {
|
|
132263
132280
|
const urn = createUrn(tag, type, logicalId, parent.urn);
|
|
132264
132281
|
const stack = findParentStack(parent);
|
|
132265
|
-
let output;
|
|
132282
|
+
let output$1;
|
|
132266
132283
|
let resolved = false;
|
|
132267
132284
|
return {
|
|
132268
132285
|
tag,
|
|
@@ -132287,16 +132304,16 @@ var createMeta = (tag, provider, parent, type, logicalId, input, config) => {
|
|
|
132287
132304
|
return dependencies;
|
|
132288
132305
|
},
|
|
132289
132306
|
resolve(data) {
|
|
132290
|
-
output = data;
|
|
132307
|
+
output$1 = data;
|
|
132291
132308
|
resolved = true;
|
|
132292
132309
|
},
|
|
132293
132310
|
output(cb) {
|
|
132294
|
-
return new Output(
|
|
132311
|
+
return new Output(new Set([this]), (resolve$1, reject) => {
|
|
132295
132312
|
if (!resolved) {
|
|
132296
132313
|
reject(/* @__PURE__ */ new Error(`Unresolved output for ${tag}: ${urn}`));
|
|
132297
132314
|
return;
|
|
132298
132315
|
}
|
|
132299
|
-
|
|
132316
|
+
resolve$1(cb(output$1));
|
|
132300
132317
|
}, true);
|
|
132301
132318
|
}
|
|
132302
132319
|
};
|
|
@@ -132316,7 +132333,6 @@ var createDebugger = (group4) => {
|
|
|
132316
132333
|
};
|
|
132317
132334
|
};
|
|
132318
132335
|
var AlreadyLockedError = class extends Error {
|
|
132319
|
-
urn;
|
|
132320
132336
|
constructor(urn) {
|
|
132321
132337
|
super(`Already locked: ${urn}`);
|
|
132322
132338
|
this.urn = urn;
|
|
@@ -132522,9 +132538,6 @@ var allowsDependentReplace = (replaceOnChanges, dependencyPaths) => {
|
|
|
132522
132538
|
return false;
|
|
132523
132539
|
};
|
|
132524
132540
|
var ResourceError = class ResourceError2 extends Error {
|
|
132525
|
-
urn;
|
|
132526
|
-
type;
|
|
132527
|
-
operation;
|
|
132528
132541
|
static wrap(urn, type, operation, error3) {
|
|
132529
132542
|
if (error3 instanceof Error)
|
|
132530
132543
|
return new ResourceError2(urn, type, operation, error3.message);
|
|
@@ -132538,8 +132551,6 @@ var ResourceError = class ResourceError2 extends Error {
|
|
|
132538
132551
|
}
|
|
132539
132552
|
};
|
|
132540
132553
|
var AppError = class extends Error {
|
|
132541
|
-
app;
|
|
132542
|
-
issues;
|
|
132543
132554
|
constructor(app, issues, message4) {
|
|
132544
132555
|
super(message4);
|
|
132545
132556
|
this.app = app;
|
|
@@ -132568,8 +132579,8 @@ var v1 = (oldAppState) => {
|
|
|
132568
132579
|
const stacks = {};
|
|
132569
132580
|
for (const [urn, stack] of entries(oldAppState.stacks)) {
|
|
132570
132581
|
const nodes2 = {};
|
|
132571
|
-
for (const [
|
|
132572
|
-
nodes2[
|
|
132582
|
+
for (const [urn$1, resource] of entries(stack.resources))
|
|
132583
|
+
nodes2[urn$1] = {
|
|
132573
132584
|
...resource,
|
|
132574
132585
|
tag: "resource"
|
|
132575
132586
|
};
|
|
@@ -132810,6 +132821,8 @@ var importResource = async (resource, input, opt) => {
|
|
|
132810
132821
|
}
|
|
132811
132822
|
});
|
|
132812
132823
|
} catch (error3) {
|
|
132824
|
+
if (error3 instanceof ResourceNotFound)
|
|
132825
|
+
throw new ResourceNotFound(`The "${meta.type}" resource import "${meta.config?.import}" doesn't exist. (${meta.urn})`);
|
|
132813
132826
|
throw ResourceError.wrap(meta.urn, meta.type, "import", error3);
|
|
132814
132827
|
}
|
|
132815
132828
|
return {
|
|
@@ -132991,11 +133004,11 @@ var deployApp = async (app, opt) => {
|
|
|
132991
133004
|
});
|
|
132992
133005
|
const isFilteredIn = !opt.filters?.length || opt.filters.includes(stackState.name);
|
|
132993
133006
|
if (!found && isFilteredIn)
|
|
132994
|
-
for (const [
|
|
132995
|
-
graph.add(
|
|
133007
|
+
for (const [urn$1, nodeState] of entries(stackState.nodes))
|
|
133008
|
+
graph.add(urn$1, dependentsOn(allNodes, urn$1), async () => {
|
|
132996
133009
|
if (nodeState.tag === "resource")
|
|
132997
|
-
await queue(() => deleteResource(appState.idempotentToken,
|
|
132998
|
-
delete stackState.nodes[
|
|
133010
|
+
await queue(() => deleteResource(appState.idempotentToken, urn$1, nodeState, opt));
|
|
133011
|
+
delete stackState.nodes[urn$1];
|
|
132999
133012
|
});
|
|
133000
133013
|
}
|
|
133001
133014
|
for (const stack of stacks) {
|
|
@@ -133024,16 +133037,16 @@ var deployApp = async (app, opt) => {
|
|
|
133024
133037
|
throw ResourceError.wrap(meta.urn, meta.type, "resolve", error3);
|
|
133025
133038
|
}
|
|
133026
133039
|
if (isDataSource(node)) {
|
|
133027
|
-
const
|
|
133040
|
+
const meta$1 = getMeta(node);
|
|
133028
133041
|
if (!nodeState) {
|
|
133029
|
-
const dataSourceState = await getDataSource(
|
|
133030
|
-
nodeState = stackState.nodes[
|
|
133042
|
+
const dataSourceState = await getDataSource(meta$1, input, opt);
|
|
133043
|
+
nodeState = stackState.nodes[meta$1.urn] = {
|
|
133031
133044
|
...dataSourceState,
|
|
133032
133045
|
drifted: undefined,
|
|
133033
133046
|
...partialNewResourceState
|
|
133034
133047
|
};
|
|
133035
133048
|
} else if (!compareState(nodeState.input, input) || nodeState.drifted) {
|
|
133036
|
-
const dataSourceState = await getDataSource(
|
|
133049
|
+
const dataSourceState = await getDataSource(meta$1, input, opt);
|
|
133037
133050
|
Object.assign(nodeState, {
|
|
133038
133051
|
...dataSourceState,
|
|
133039
133052
|
drifted: undefined,
|
|
@@ -133043,78 +133056,87 @@ var deployApp = async (app, opt) => {
|
|
|
133043
133056
|
Object.assign(nodeState, partialNewResourceState);
|
|
133044
133057
|
}
|
|
133045
133058
|
if (isResource(node)) {
|
|
133046
|
-
const
|
|
133047
|
-
if (!nodeState)
|
|
133048
|
-
if (
|
|
133059
|
+
const meta$1 = getMeta(node);
|
|
133060
|
+
if (!nodeState) {
|
|
133061
|
+
if (meta$1.config?.import) {
|
|
133049
133062
|
const importedState = await importResource(node, input, opt);
|
|
133050
|
-
|
|
133051
|
-
|
|
133052
|
-
|
|
133053
|
-
|
|
133054
|
-
|
|
133055
|
-
|
|
133056
|
-
|
|
133063
|
+
if (importedState) {
|
|
133064
|
+
const newResourceState = await updateResource(node, appState.idempotentToken, importedState.input, importedState.output, input, opt);
|
|
133065
|
+
nodeState = stackState.nodes[meta$1.urn] = {
|
|
133066
|
+
...importedState,
|
|
133067
|
+
...newResourceState,
|
|
133068
|
+
...partialNewResourceState
|
|
133069
|
+
};
|
|
133070
|
+
}
|
|
133071
|
+
}
|
|
133072
|
+
if (!nodeState) {
|
|
133057
133073
|
const newResourceState = await createResource(node, appState.idempotentToken, input, opt);
|
|
133058
|
-
nodeState = stackState.nodes[
|
|
133074
|
+
nodeState = stackState.nodes[meta$1.urn] = {
|
|
133059
133075
|
...newResourceState,
|
|
133060
133076
|
...partialNewResourceState
|
|
133061
133077
|
};
|
|
133062
133078
|
}
|
|
133063
|
-
else {
|
|
133079
|
+
} else {
|
|
133064
133080
|
const inputChanged = !compareState(nodeState.input, input);
|
|
133065
133081
|
const hasDrift = !!nodeState.drifted;
|
|
133066
133082
|
if (!inputChanged && !hasDrift)
|
|
133067
133083
|
Object.assign(nodeState, partialNewResourceState);
|
|
133068
133084
|
else {
|
|
133069
133085
|
let newResourceState;
|
|
133070
|
-
const ignoreReplace = forcedUpdateDependents.has(
|
|
133071
|
-
if (!ignoreReplace && requiresReplacement(nodeState.input, input,
|
|
133072
|
-
if (
|
|
133073
|
-
|
|
133086
|
+
const ignoreReplace = forcedUpdateDependents.has(meta$1.urn);
|
|
133087
|
+
if (!ignoreReplace && requiresReplacement(nodeState.input, input, meta$1.config?.replaceOnChanges ?? []))
|
|
133088
|
+
if (meta$1.config?.createBeforeReplace) {
|
|
133089
|
+
meta$1.resolve(input);
|
|
133074
133090
|
try {
|
|
133075
133091
|
for (const [dependentUrn, dependentNode] of nodeByUrn.entries()) {
|
|
133076
133092
|
if (!isResource(dependentNode))
|
|
133077
133093
|
continue;
|
|
133078
133094
|
const dependentMeta = getMeta(dependentNode);
|
|
133079
|
-
if (!dependentMeta.dependencies.has(
|
|
133095
|
+
if (!dependentMeta.dependencies.has(meta$1.urn))
|
|
133080
133096
|
continue;
|
|
133081
133097
|
const dependentStackState = stackStates.get(dependentMeta.stack.urn);
|
|
133082
133098
|
const dependentState = dependentStackState?.nodes[dependentUrn];
|
|
133083
133099
|
if (!dependentStackState || !dependentState)
|
|
133084
133100
|
continue;
|
|
133085
|
-
const dependencyPaths = findDependencyPaths(dependentMeta.input,
|
|
133101
|
+
const dependencyPaths = findDependencyPaths(dependentMeta.input, meta$1.urn);
|
|
133086
133102
|
if (dependencyPaths.length === 0)
|
|
133087
133103
|
continue;
|
|
133088
133104
|
const dependentProvider = findProvider(opt.providers, dependentMeta.provider);
|
|
133089
133105
|
if (dependentProvider.planResourceChange) {
|
|
133090
133106
|
const dependentProposedInput = await resolveInputs(dependentMeta.input, (path) => getAtPath(dependentState.input, path));
|
|
133091
|
-
|
|
133092
|
-
|
|
133093
|
-
|
|
133094
|
-
|
|
133095
|
-
|
|
133107
|
+
let dependentRequiresReplacement;
|
|
133108
|
+
try {
|
|
133109
|
+
dependentRequiresReplacement = !!(await dependentProvider.planResourceChange({
|
|
133110
|
+
type: dependentMeta.type,
|
|
133111
|
+
priorState: dependentState.output,
|
|
133112
|
+
proposedState: dependentProposedInput
|
|
133113
|
+
})).requiresReplacement;
|
|
133114
|
+
} catch {
|
|
133115
|
+
dependentRequiresReplacement = true;
|
|
133116
|
+
}
|
|
133117
|
+
if (dependentRequiresReplacement) {
|
|
133096
133118
|
if (!allowsDependentReplace(dependentMeta.config?.replaceOnChanges, dependencyPaths))
|
|
133097
|
-
throw ResourceError.wrap(dependentMeta.urn, dependentMeta.type, "update", /* @__PURE__ */ new Error(`Replacing ${
|
|
133119
|
+
throw ResourceError.wrap(dependentMeta.urn, dependentMeta.type, "update", /* @__PURE__ */ new Error(`Replacing ${meta$1.urn} requires ${dependentMeta.urn} to set replaceOnChanges for its dependency fields.`));
|
|
133098
133120
|
}
|
|
133099
133121
|
}
|
|
133100
133122
|
}
|
|
133101
133123
|
} finally {
|
|
133102
|
-
|
|
133124
|
+
meta$1.resolve(nodeState.output);
|
|
133103
133125
|
}
|
|
133104
133126
|
const priorState = { ...nodeState };
|
|
133105
133127
|
newResourceState = await createResource(node, appState.idempotentToken, input, opt);
|
|
133106
133128
|
if (newResourceState.output)
|
|
133107
|
-
|
|
133108
|
-
if (!
|
|
133129
|
+
meta$1.resolve(newResourceState.output);
|
|
133130
|
+
if (!meta$1.config?.retainOnDelete) {
|
|
133109
133131
|
appState.pendingDeletes ??= {};
|
|
133110
|
-
appState.pendingDeletes[
|
|
133132
|
+
appState.pendingDeletes[meta$1.urn] = priorState;
|
|
133111
133133
|
}
|
|
133112
133134
|
} else {
|
|
133113
133135
|
for (const [dependentUrn, dependentNode] of nodeByUrn.entries()) {
|
|
133114
133136
|
if (!isResource(dependentNode))
|
|
133115
133137
|
continue;
|
|
133116
133138
|
const dependentMeta = getMeta(dependentNode);
|
|
133117
|
-
if (!dependentMeta.dependencies.has(
|
|
133139
|
+
if (!dependentMeta.dependencies.has(meta$1.urn))
|
|
133118
133140
|
continue;
|
|
133119
133141
|
if (plannedDependents.has(dependentUrn))
|
|
133120
133142
|
continue;
|
|
@@ -133122,10 +133144,10 @@ var deployApp = async (app, opt) => {
|
|
|
133122
133144
|
const dependentState = dependentStackState?.nodes[dependentUrn];
|
|
133123
133145
|
if (!dependentStackState || !dependentState)
|
|
133124
133146
|
continue;
|
|
133125
|
-
const dependencyPaths = findDependencyPaths(dependentMeta.input,
|
|
133147
|
+
const dependencyPaths = findDependencyPaths(dependentMeta.input, meta$1.urn);
|
|
133126
133148
|
if (dependencyPaths.length === 0)
|
|
133127
133149
|
continue;
|
|
133128
|
-
const detachedInput = stripDependencyInputs(dependentState.input, dependentMeta.input,
|
|
133150
|
+
const detachedInput = stripDependencyInputs(dependentState.input, dependentMeta.input, meta$1.urn);
|
|
133129
133151
|
if (compareState(dependentState.input, detachedInput))
|
|
133130
133152
|
continue;
|
|
133131
133153
|
plannedDependents.add(dependentUrn);
|
|
@@ -133143,7 +133165,7 @@ var deployApp = async (app, opt) => {
|
|
|
133143
133165
|
}
|
|
133144
133166
|
if (dependentRequiresReplacement) {
|
|
133145
133167
|
if (!allowsDependentReplace(dependentMeta.config?.replaceOnChanges, dependencyPaths))
|
|
133146
|
-
throw ResourceError.wrap(dependentMeta.urn, dependentMeta.type, "update", /* @__PURE__ */ new Error(`Replacing ${
|
|
133168
|
+
throw ResourceError.wrap(dependentMeta.urn, dependentMeta.type, "update", /* @__PURE__ */ new Error(`Replacing ${meta$1.urn} requires ${dependentMeta.urn} to set replaceOnChanges for its dependency fields.`));
|
|
133147
133169
|
await deleteResource(appState.idempotentToken, dependentUrn, dependentState, opt);
|
|
133148
133170
|
delete dependentStackState.nodes[dependentUrn];
|
|
133149
133171
|
} else {
|
|
@@ -133157,12 +133179,12 @@ var deployApp = async (app, opt) => {
|
|
|
133157
133179
|
}
|
|
133158
133180
|
newResourceState = await replaceResource(node, appState.idempotentToken, nodeState.input, nodeState.output, input, opt);
|
|
133159
133181
|
if (newResourceState.output)
|
|
133160
|
-
|
|
133182
|
+
meta$1.resolve(newResourceState.output);
|
|
133161
133183
|
}
|
|
133162
133184
|
else {
|
|
133163
133185
|
newResourceState = await updateResource(node, appState.idempotentToken, nodeState.input, nodeState.output, input, opt);
|
|
133164
133186
|
if (ignoreReplace)
|
|
133165
|
-
forcedUpdateDependents.delete(
|
|
133187
|
+
forcedUpdateDependents.delete(meta$1.urn);
|
|
133166
133188
|
}
|
|
133167
133189
|
Object.assign(nodeState, {
|
|
133168
133190
|
input,
|
|
@@ -133411,7 +133433,6 @@ var status = async (app, opt) => {
|
|
|
133411
133433
|
return stacks;
|
|
133412
133434
|
};
|
|
133413
133435
|
var WorkSpace = class {
|
|
133414
|
-
props;
|
|
133415
133436
|
constructor(props) {
|
|
133416
133437
|
this.props = props;
|
|
133417
133438
|
}
|
|
@@ -133506,7 +133527,6 @@ var isConditionalCheckFailed = (error3) => {
|
|
|
133506
133527
|
return error3 instanceof Error && error3.name === "ConditionalCheckFailedException";
|
|
133507
133528
|
};
|
|
133508
133529
|
var DynamoLockBackend = class {
|
|
133509
|
-
props;
|
|
133510
133530
|
client;
|
|
133511
133531
|
constructor(props) {
|
|
133512
133532
|
this.props = props;
|
|
@@ -133590,7 +133610,6 @@ var DynamoLockBackend = class {
|
|
|
133590
133610
|
}
|
|
133591
133611
|
};
|
|
133592
133612
|
var S3StateBackend = class {
|
|
133593
|
-
props;
|
|
133594
133613
|
client;
|
|
133595
133614
|
constructor(props) {
|
|
133596
133615
|
this.props = props;
|
|
@@ -133628,16 +133647,16 @@ var S3StateBackend = class {
|
|
|
133628
133647
|
}
|
|
133629
133648
|
};
|
|
133630
133649
|
var file = (path, encoding = "utf8") => {
|
|
133631
|
-
return new Future(async (
|
|
133650
|
+
return new Future(async (resolve$1, reject) => {
|
|
133632
133651
|
try {
|
|
133633
|
-
|
|
133652
|
+
resolve$1(await readFile4(path, { encoding }));
|
|
133634
133653
|
} catch (error3) {
|
|
133635
133654
|
reject(error3);
|
|
133636
133655
|
}
|
|
133637
133656
|
});
|
|
133638
133657
|
};
|
|
133639
133658
|
var hash = (path, algo = "sha256") => {
|
|
133640
|
-
return file(path).pipe((
|
|
133659
|
+
return file(path).pipe((file$1) => createHash4(algo).update(file$1).digest("hex"));
|
|
133641
133660
|
};
|
|
133642
133661
|
globalThis.$resolve = resolve;
|
|
133643
133662
|
globalThis.$combine = combine;
|
|
@@ -133648,7 +133667,7 @@ var createCustomResourceClass = (providerId, resourceType) => {
|
|
|
133648
133667
|
return new Proxy(class {
|
|
133649
133668
|
}, { construct(_3, [parent, id, input, config]) {
|
|
133650
133669
|
const meta = createMeta("resource", `custom:${providerId}`, parent, resourceType, id, input, config);
|
|
133651
|
-
const node = new Proxy({}, { get(
|
|
133670
|
+
const node = new Proxy({}, { get(_$1, key) {
|
|
133652
133671
|
if (key === nodeMetaSymbol)
|
|
133653
133672
|
return meta;
|
|
133654
133673
|
if (key === "urn")
|
|
@@ -133663,68 +133682,67 @@ var createCustomResourceClass = (providerId, resourceType) => {
|
|
|
133663
133682
|
};
|
|
133664
133683
|
var createCustomProvider = (providerId, resourceProviders) => {
|
|
133665
133684
|
const version2 = 1;
|
|
133666
|
-
const hasRefreshResource = Object.values(resourceProviders).some((
|
|
133685
|
+
const hasRefreshResource = Object.values(resourceProviders).some((provider$1) => !!provider$1.refreshResource);
|
|
133667
133686
|
const getProvider = (type) => {
|
|
133668
|
-
const
|
|
133669
|
-
if (!
|
|
133687
|
+
const provider$1 = resourceProviders[type];
|
|
133688
|
+
if (!provider$1)
|
|
133670
133689
|
throw new Error(`The "${providerId}" provider doesn't support the "${type}" resource type.`);
|
|
133671
|
-
return
|
|
133690
|
+
return provider$1;
|
|
133672
133691
|
};
|
|
133673
133692
|
const provider = {
|
|
133674
133693
|
ownResource(id) {
|
|
133675
133694
|
return id === `custom:${providerId}`;
|
|
133676
133695
|
},
|
|
133677
133696
|
async getResource({ type, ...props }) {
|
|
133678
|
-
const
|
|
133679
|
-
if (!
|
|
133697
|
+
const provider$1 = getProvider(type);
|
|
133698
|
+
if (!provider$1.getResource)
|
|
133680
133699
|
return {
|
|
133681
133700
|
version: version2,
|
|
133682
133701
|
state: props.state
|
|
133683
133702
|
};
|
|
133684
133703
|
return {
|
|
133685
133704
|
version: version2,
|
|
133686
|
-
state: await
|
|
133705
|
+
state: await provider$1.getResource(props)
|
|
133687
133706
|
};
|
|
133688
133707
|
},
|
|
133689
133708
|
async createResource({ type, ...props }) {
|
|
133690
|
-
const
|
|
133691
|
-
if (!
|
|
133709
|
+
const provider$1 = getProvider(type);
|
|
133710
|
+
if (!provider$1.createResource)
|
|
133692
133711
|
return {
|
|
133693
133712
|
version: version2,
|
|
133694
133713
|
state: props.state
|
|
133695
133714
|
};
|
|
133696
133715
|
return {
|
|
133697
133716
|
version: version2,
|
|
133698
|
-
state: await
|
|
133717
|
+
state: await provider$1.createResource(props)
|
|
133699
133718
|
};
|
|
133700
133719
|
},
|
|
133701
133720
|
async updateResource({ type, ...props }) {
|
|
133702
|
-
const
|
|
133703
|
-
if (!
|
|
133721
|
+
const provider$1 = getProvider(type);
|
|
133722
|
+
if (!provider$1.updateResource)
|
|
133704
133723
|
return {
|
|
133705
133724
|
version: version2,
|
|
133706
133725
|
state: props.proposedState
|
|
133707
133726
|
};
|
|
133708
133727
|
return {
|
|
133709
133728
|
version: version2,
|
|
133710
|
-
state: await
|
|
133729
|
+
state: await provider$1.updateResource(props)
|
|
133711
133730
|
};
|
|
133712
133731
|
},
|
|
133713
133732
|
async deleteResource({ type, ...props }) {
|
|
133714
133733
|
await getProvider(type).deleteResource?.(props);
|
|
133715
133734
|
},
|
|
133716
133735
|
async planResourceChange({ type, ...props }) {
|
|
133717
|
-
const
|
|
133718
|
-
if (!
|
|
133736
|
+
const provider$1 = getProvider(type);
|
|
133737
|
+
if (!provider$1.planResourceChange)
|
|
133719
133738
|
return {
|
|
133720
133739
|
version: version2,
|
|
133721
133740
|
state: props.proposedState,
|
|
133722
133741
|
requiresReplacement: false
|
|
133723
133742
|
};
|
|
133724
|
-
const result = await provider2.planResourceChange(props);
|
|
133725
133743
|
return {
|
|
133726
133744
|
version: version2,
|
|
133727
|
-
...
|
|
133745
|
+
...await provider$1.planResourceChange(props)
|
|
133728
133746
|
};
|
|
133729
133747
|
},
|
|
133730
133748
|
async getData({ type, ...props }) {
|
|
@@ -141079,14 +141097,12 @@ if (!nativeAccelerationDisabled) {
|
|
|
141079
141097
|
try {
|
|
141080
141098
|
if (true)
|
|
141081
141099
|
extractor = require_msgpackr_extract();
|
|
141082
|
-
else
|
|
141083
|
-
;
|
|
141084
141100
|
if (extractor)
|
|
141085
141101
|
setExtractor(extractor.extractStrings);
|
|
141086
141102
|
} catch (error3) {}
|
|
141087
141103
|
}
|
|
141088
141104
|
|
|
141089
|
-
// ../../node_modules/.pnpm/@terraforge+terraform@0.0.35_@terraforge+core@0.0.
|
|
141105
|
+
// ../../node_modules/.pnpm/@terraforge+terraform@0.0.35_@terraforge+core@0.0.44_aws-crt@1.30.0_debug@4.4.3_support_4501f5c353e25a801cf638e931a8dd2d/node_modules/@terraforge/terraform/dist/index.mjs
|
|
141090
141106
|
var import_grpc_js = __toESM(require_src4(), 1);
|
|
141091
141107
|
var import_proto_loader = __toESM(require_src3(), 1);
|
|
141092
141108
|
var import_jszip = __toESM(require_lib3(), 1);
|
|
@@ -143597,7 +143613,7 @@ var createTerraformProxy = (props) => {
|
|
|
143597
143613
|
});
|
|
143598
143614
|
};
|
|
143599
143615
|
|
|
143600
|
-
// ../../node_modules/.pnpm/@terraforge+aws@6.53.0_@terraforge+core@0.0.
|
|
143616
|
+
// ../../node_modules/.pnpm/@terraforge+aws@6.53.0_@terraforge+core@0.0.44_aws-crt@1.30.0_debug@4.4.3_supports-colo_7835ee9c943a9b106f7a0c962824b2e8/node_modules/@terraforge/aws/dist/index.js
|
|
143601
143617
|
var aws2 = createTerraformProxy({
|
|
143602
143618
|
namespace: "aws",
|
|
143603
143619
|
provider: { org: "hashicorp", type: "aws", version: "6.53.0" }
|
|
@@ -155591,7 +155607,11 @@ var createDnsValidatedCertificate = (group4, id, props) => {
|
|
|
155591
155607
|
validationMethod: "DNS",
|
|
155592
155608
|
keyAlgorithm: "RSA_2048",
|
|
155593
155609
|
subjectAlternativeNames: props.subjectAlternativeNames
|
|
155594
|
-
},
|
|
155610
|
+
}, {
|
|
155611
|
+
...props.provider ? { provider: props.provider } : {},
|
|
155612
|
+
replaceOnChanges: ["domainName", "subjectAlternativeNames"],
|
|
155613
|
+
createBeforeReplace: true
|
|
155614
|
+
});
|
|
155595
155615
|
const option = (index) => {
|
|
155596
155616
|
return certificate.domainValidationOptions.pipe((options) => {
|
|
155597
155617
|
return options[index];
|
|
@@ -155604,6 +155624,8 @@ var createDnsValidatedCertificate = (group4, id, props) => {
|
|
|
155604
155624
|
ttl: toSeconds2(minutes5(5)),
|
|
155605
155625
|
records: [option(0).pipe((r4) => r4.resourceRecordValue)],
|
|
155606
155626
|
allowOverwrite: true
|
|
155627
|
+
}, {
|
|
155628
|
+
replaceOnChanges: ["name", "type", "zoneId", "records"]
|
|
155607
155629
|
});
|
|
155608
155630
|
const record2 = new aws2.route53.Record(group4, `${props.recordIdPrefix}-2`, {
|
|
155609
155631
|
zoneId: props.zoneId,
|
|
@@ -155612,14 +155634,17 @@ var createDnsValidatedCertificate = (group4, id, props) => {
|
|
|
155612
155634
|
ttl: toSeconds2(minutes5(5)),
|
|
155613
155635
|
records: [option(1).pipe((r4) => r4.resourceRecordValue)],
|
|
155614
155636
|
allowOverwrite: true
|
|
155637
|
+
}, {
|
|
155638
|
+
replaceOnChanges: ["name", "type", "zoneId", "records"]
|
|
155615
155639
|
});
|
|
155616
155640
|
const validation = new aws2.acm.CertificateValidation(group4, id, {
|
|
155617
155641
|
certificateArn: certificate.arn,
|
|
155618
155642
|
validationRecordFqdns: [record1.fqdn, record2.fqdn]
|
|
155619
|
-
},
|
|
155643
|
+
}, {
|
|
155620
155644
|
...props.dependsOn ? { dependsOn: props.dependsOn } : {},
|
|
155621
|
-
...props.provider ? { provider: props.provider } : {}
|
|
155622
|
-
|
|
155645
|
+
...props.provider ? { provider: props.provider } : {},
|
|
155646
|
+
replaceOnChanges: ["certificateArn", "validationRecordFqdns"]
|
|
155647
|
+
});
|
|
155623
155648
|
return validation;
|
|
155624
155649
|
};
|
|
155625
155650
|
var getDomainNameById = (config, id) => {
|
|
@@ -155660,9 +155685,14 @@ var domainFeature = defineFeature({
|
|
|
155660
155685
|
const zone = new aws2.route53.Zone(ctx.zones, "zone", {
|
|
155661
155686
|
name: props.domain,
|
|
155662
155687
|
forceDestroy: true
|
|
155688
|
+
}, {
|
|
155689
|
+
replaceOnChanges: ["name"],
|
|
155690
|
+
createBeforeReplace: true
|
|
155663
155691
|
});
|
|
155664
155692
|
const nsCheck = new NsCheck(group5, "check", {
|
|
155665
155693
|
zoneId: zone.id
|
|
155694
|
+
}, {
|
|
155695
|
+
replaceOnChanges: ["zoneId"]
|
|
155666
155696
|
});
|
|
155667
155697
|
ctx.registerDomainZone(zone);
|
|
155668
155698
|
ctx.shared.add("domain", `zone-id`, id, zone.id);
|
|
@@ -155689,7 +155719,9 @@ var domainFeature = defineFeature({
|
|
|
155689
155719
|
const identity = new aws2.ses.DomainIdentity(group5, "mail", {
|
|
155690
155720
|
domain: props.domain
|
|
155691
155721
|
}, {
|
|
155692
|
-
import: ctx.import ? props.domain : undefined
|
|
155722
|
+
import: ctx.import ? props.domain : undefined,
|
|
155723
|
+
replaceOnChanges: ["domain"],
|
|
155724
|
+
createBeforeReplace: true
|
|
155693
155725
|
});
|
|
155694
155726
|
const verificationRecord = new aws2.route53.Record(group5, `verification`, {
|
|
155695
155727
|
zoneId: zone.id,
|
|
@@ -155697,11 +155729,15 @@ var domainFeature = defineFeature({
|
|
|
155697
155729
|
type: "TXT",
|
|
155698
155730
|
ttl: toSeconds3(minutes6(5)),
|
|
155699
155731
|
records: [identity.verificationToken]
|
|
155732
|
+
}, {
|
|
155733
|
+
replaceOnChanges: ["name", "type", "zoneId", "records"]
|
|
155700
155734
|
});
|
|
155701
155735
|
const dkim = new aws2.ses.DomainDkim(group5, "dkim", {
|
|
155702
155736
|
domain: props.domain
|
|
155703
155737
|
}, {
|
|
155704
|
-
import: ctx.import ? props.domain : undefined
|
|
155738
|
+
import: ctx.import ? props.domain : undefined,
|
|
155739
|
+
replaceOnChanges: ["domain"],
|
|
155740
|
+
createBeforeReplace: true
|
|
155705
155741
|
});
|
|
155706
155742
|
for (let i3 = 0;i3 < 3; i3++) {
|
|
155707
155743
|
new aws2.route53.Record(group5, `dkim-${i3}`, {
|
|
@@ -155710,6 +155746,8 @@ var domainFeature = defineFeature({
|
|
|
155710
155746
|
name: dkim.dkimTokens.pipe((t2) => `${t2.at(i3)}._domainkey`),
|
|
155711
155747
|
ttl: toSeconds3(minutes6(5)),
|
|
155712
155748
|
records: [dkim.dkimTokens.pipe((t2) => `${t2.at(i3)}.dkim.amazonses.com`)]
|
|
155749
|
+
}, {
|
|
155750
|
+
replaceOnChanges: ["name", "type", "zoneId", "records"]
|
|
155713
155751
|
});
|
|
155714
155752
|
}
|
|
155715
155753
|
const mailFrom = new aws2.ses.DomainMailFrom(group5, "mail-from", {
|
|
@@ -155717,7 +155755,9 @@ var domainFeature = defineFeature({
|
|
|
155717
155755
|
mailFromDomain: `mail.${props.domain}`,
|
|
155718
155756
|
behaviorOnMxFailure: "UseDefaultValue"
|
|
155719
155757
|
}, {
|
|
155720
|
-
import: ctx.import ? props.domain : undefined
|
|
155758
|
+
import: ctx.import ? props.domain : undefined,
|
|
155759
|
+
replaceOnChanges: ["domain"],
|
|
155760
|
+
createBeforeReplace: true
|
|
155721
155761
|
});
|
|
155722
155762
|
new aws2.route53.Record(group5, `MX`, {
|
|
155723
155763
|
zoneId: zone.id,
|
|
@@ -155725,6 +155765,8 @@ var domainFeature = defineFeature({
|
|
|
155725
155765
|
type: "MX",
|
|
155726
155766
|
ttl: toSeconds3(minutes6(5)),
|
|
155727
155767
|
records: [`10 feedback-smtp.${ctx.appConfig.region}.amazonses.com`]
|
|
155768
|
+
}, {
|
|
155769
|
+
replaceOnChanges: ["name", "type", "zoneId"]
|
|
155728
155770
|
});
|
|
155729
155771
|
new aws2.route53.Record(group5, `SPF`, {
|
|
155730
155772
|
zoneId: zone.id,
|
|
@@ -155732,6 +155774,8 @@ var domainFeature = defineFeature({
|
|
|
155732
155774
|
type: "TXT",
|
|
155733
155775
|
ttl: toSeconds3(minutes6(5)),
|
|
155734
155776
|
records: ["v=spf1 include:amazonses.com -all"]
|
|
155777
|
+
}, {
|
|
155778
|
+
replaceOnChanges: ["name", "type", "zoneId"]
|
|
155735
155779
|
});
|
|
155736
155780
|
new aws2.route53.Record(group5, `DMARC`, {
|
|
155737
155781
|
zoneId: zone.id,
|
|
@@ -155739,8 +155783,13 @@ var domainFeature = defineFeature({
|
|
|
155739
155783
|
type: "TXT",
|
|
155740
155784
|
ttl: toSeconds3(minutes6(5)),
|
|
155741
155785
|
records: ["v=DMARC1; p=none;"]
|
|
155786
|
+
}, {
|
|
155787
|
+
replaceOnChanges: ["name", "type", "zoneId"]
|
|
155788
|
+
});
|
|
155789
|
+
new aws2.ses.DomainIdentityVerification(group5, "mail", { domain: props.domain }, {
|
|
155790
|
+
dependsOn: [identity, verificationRecord, nsCheck],
|
|
155791
|
+
replaceOnChanges: ["domain"]
|
|
155742
155792
|
});
|
|
155743
|
-
new aws2.ses.DomainIdentityVerification(group5, "mail", { domain: props.domain }, { dependsOn: [identity, verificationRecord, nsCheck] });
|
|
155744
155793
|
for (const record of props.dns ?? []) {
|
|
155745
155794
|
const name = record.name ?? props.domain;
|
|
155746
155795
|
new aws2.route53.Record(group5, `${name}-${record.type}`, {
|
|
@@ -155749,6 +155798,8 @@ var domainFeature = defineFeature({
|
|
|
155749
155798
|
ttl: toSeconds3(record.ttl),
|
|
155750
155799
|
type: record.type,
|
|
155751
155800
|
records: record.records
|
|
155801
|
+
}, {
|
|
155802
|
+
replaceOnChanges: ["name", "type", "zoneId"]
|
|
155752
155803
|
});
|
|
155753
155804
|
}
|
|
155754
155805
|
}
|
|
@@ -158381,11 +158432,16 @@ var restFeature = defineFeature({
|
|
|
158381
158432
|
endpointType: "REGIONAL",
|
|
158382
158433
|
securityPolicy: "TLS_1_2"
|
|
158383
158434
|
}
|
|
158435
|
+
}, {
|
|
158436
|
+
replaceOnChanges: ["domainName", "domainNameConfiguration"],
|
|
158437
|
+
createBeforeReplace: true
|
|
158384
158438
|
});
|
|
158385
158439
|
const mapping = new aws2.apigatewayv2.ApiMapping(group4, "mapping", {
|
|
158386
158440
|
apiId: api.id,
|
|
158387
158441
|
domainName: domain.domainName,
|
|
158388
158442
|
stage: stage.name
|
|
158443
|
+
}, {
|
|
158444
|
+
replaceOnChanges: ["domainName"]
|
|
158389
158445
|
});
|
|
158390
158446
|
new aws2.route53.Record(group4, "record", {
|
|
158391
158447
|
zoneId,
|
|
@@ -158397,7 +158453,8 @@ var restFeature = defineFeature({
|
|
|
158397
158453
|
evaluateTargetHealth: false
|
|
158398
158454
|
}
|
|
158399
158455
|
}, {
|
|
158400
|
-
dependsOn: [mapping]
|
|
158456
|
+
dependsOn: [mapping],
|
|
158457
|
+
replaceOnChanges: ["name", "type", "zoneId", "alias"]
|
|
158401
158458
|
});
|
|
158402
158459
|
ctx.bind(`REST_${constantCase(id)}_ENDPOINT`, domainName);
|
|
158403
158460
|
} else {
|
|
@@ -162836,6 +162893,8 @@ var routerFeature = defineFeature({
|
|
|
162836
162893
|
zoneId: "Z2FDTNDATAQYW2",
|
|
162837
162894
|
evaluateTargetHealth: false
|
|
162838
162895
|
}
|
|
162896
|
+
}, {
|
|
162897
|
+
replaceOnChanges: ["name", "type", "zoneId", "alias"]
|
|
162839
162898
|
});
|
|
162840
162899
|
new aws2.route53.Record(group4, `${recordId}-ipv6`, {
|
|
162841
162900
|
zoneId,
|
|
@@ -162846,6 +162905,8 @@ var routerFeature = defineFeature({
|
|
|
162846
162905
|
zoneId: "Z2FDTNDATAQYW2",
|
|
162847
162906
|
evaluateTargetHealth: false
|
|
162848
162907
|
}
|
|
162908
|
+
}, {
|
|
162909
|
+
replaceOnChanges: ["name", "type", "zoneId", "alias"]
|
|
162849
162910
|
});
|
|
162850
162911
|
}
|
|
162851
162912
|
ctx.bind(`ROUTER_${constantCase(id)}_ENDPOINT`, domainName);
|
|
@@ -164231,16 +164292,148 @@ var del9 = (program3) => {
|
|
|
164231
164292
|
import { LambdaClient as LambdaClient4 } from "@aws-sdk/client-lambda";
|
|
164232
164293
|
import { DynamoDBClient as DynamoDBClient4 } from "@awsless/dynamodb";
|
|
164233
164294
|
|
|
164295
|
+
// src/test/environment.ts
|
|
164296
|
+
import { mkdir as mkdir7, writeFile as writeFile10 } from "fs/promises";
|
|
164297
|
+
import { join as join47 } from "path";
|
|
164298
|
+
|
|
164299
|
+
// src/test/manifest.ts
|
|
164300
|
+
import { isAbsolute as isAbsolute5, join as join46 } from "path";
|
|
164301
|
+
var absolute = (file2) => {
|
|
164302
|
+
return isAbsolute5(file2) ? file2 : join46(directories.root, file2);
|
|
164303
|
+
};
|
|
164304
|
+
var createTestManifest = (appConfig, stackConfigs) => {
|
|
164305
|
+
const manifest = {
|
|
164306
|
+
app: appConfig.name,
|
|
164307
|
+
region: appConfig.region,
|
|
164308
|
+
configs: appConfig.test.configs,
|
|
164309
|
+
tables: [],
|
|
164310
|
+
tableKeys: [],
|
|
164311
|
+
streams: [],
|
|
164312
|
+
searches: [],
|
|
164313
|
+
functions: [],
|
|
164314
|
+
tasks: [],
|
|
164315
|
+
queues: [],
|
|
164316
|
+
topics: appConfig.topics ?? [],
|
|
164317
|
+
pubsub: Object.keys(appConfig.pubsub ?? {}),
|
|
164318
|
+
caches: [],
|
|
164319
|
+
alerts: Object.keys(appConfig.alerts ?? {}),
|
|
164320
|
+
jobs: [],
|
|
164321
|
+
instances: []
|
|
164322
|
+
};
|
|
164323
|
+
for (const stack of stackConfigs) {
|
|
164324
|
+
for (const [id, props] of Object.entries(stack.tables ?? {})) {
|
|
164325
|
+
const name = formatLocalResourceName({
|
|
164326
|
+
appName: appConfig.name,
|
|
164327
|
+
stackName: stack.name,
|
|
164328
|
+
resourceType: "table",
|
|
164329
|
+
resourceName: id
|
|
164330
|
+
});
|
|
164331
|
+
manifest.tables.push(createTableInput(name, props));
|
|
164332
|
+
manifest.tableKeys.push({ stack: stack.name, id, keys: formatTableKeys(props) });
|
|
164333
|
+
if (props.stream) {
|
|
164334
|
+
manifest.streams.push({
|
|
164335
|
+
stack: stack.name,
|
|
164336
|
+
id,
|
|
164337
|
+
file: absolute(props.stream.consumer.code.file),
|
|
164338
|
+
hash: props.hash,
|
|
164339
|
+
sort: props.sort
|
|
164340
|
+
});
|
|
164341
|
+
}
|
|
164342
|
+
}
|
|
164343
|
+
for (const [id, props] of Object.entries(stack.searchs ?? {})) {
|
|
164344
|
+
manifest.searches.push({
|
|
164345
|
+
stack: stack.name,
|
|
164346
|
+
id,
|
|
164347
|
+
mappings: resolveSearchMappings(props),
|
|
164348
|
+
settings: props.settings
|
|
164349
|
+
});
|
|
164350
|
+
}
|
|
164351
|
+
for (const [id, props] of Object.entries(stack.functions ?? {})) {
|
|
164352
|
+
manifest.functions.push({ stack: stack.name, id, file: absolute(props.code.file) });
|
|
164353
|
+
}
|
|
164354
|
+
for (const [id, props] of Object.entries(stack.tasks ?? {})) {
|
|
164355
|
+
manifest.tasks.push({ stack: stack.name, id, file: absolute(props.consumer.code.file) });
|
|
164356
|
+
}
|
|
164357
|
+
for (const [id, props] of Object.entries(stack.queues ?? {})) {
|
|
164358
|
+
manifest.queues.push({
|
|
164359
|
+
stack: stack.name,
|
|
164360
|
+
id,
|
|
164361
|
+
file: props.consumer ? absolute(props.consumer.code.file) : undefined
|
|
164362
|
+
});
|
|
164363
|
+
}
|
|
164364
|
+
for (const id of Object.keys(stack.caches ?? {})) {
|
|
164365
|
+
manifest.caches.push({ stack: stack.name, id });
|
|
164366
|
+
}
|
|
164367
|
+
for (const id of Object.keys(stack.jobs ?? {})) {
|
|
164368
|
+
manifest.jobs.push({ stack: stack.name, id });
|
|
164369
|
+
}
|
|
164370
|
+
for (const id of Object.keys(stack.instances ?? {})) {
|
|
164371
|
+
manifest.instances.push({ stack: stack.name, id });
|
|
164372
|
+
}
|
|
164373
|
+
}
|
|
164374
|
+
return manifest;
|
|
164375
|
+
};
|
|
164376
|
+
|
|
164377
|
+
// src/test/environment.ts
|
|
164378
|
+
var waitForSearch2 = async (port, timeoutMs) => {
|
|
164379
|
+
const deadline = Date.now() + timeoutMs;
|
|
164380
|
+
while (Date.now() < deadline) {
|
|
164381
|
+
try {
|
|
164382
|
+
const res = await fetch(`http://localhost:${port}`);
|
|
164383
|
+
if (res.ok) {
|
|
164384
|
+
return;
|
|
164385
|
+
}
|
|
164386
|
+
} catch (_4) {}
|
|
164387
|
+
await new Promise((resolve5) => setTimeout(resolve5, 500));
|
|
164388
|
+
}
|
|
164389
|
+
throw new Error("The local OpenSearch server never became ready.");
|
|
164390
|
+
};
|
|
164391
|
+
var withTestEnvironment = async (appConfig, stackConfigs, run) => {
|
|
164392
|
+
const manifest = createTestManifest(appConfig, stackConfigs);
|
|
164393
|
+
const manifestFile = join47(directories.output, "test", "manifest.json");
|
|
164394
|
+
let redis;
|
|
164395
|
+
let killSearch;
|
|
164396
|
+
manifest.servers = {};
|
|
164397
|
+
try {
|
|
164398
|
+
if (manifest.searches.length > 0) {
|
|
164399
|
+
const { download: download2, launch: launch2, VERSION_3_5_0_MIN: VERSION_3_5_0_MIN2 } = await Promise.resolve().then(() => (init_dist2(), exports_dist));
|
|
164400
|
+
const port = await findFreePort();
|
|
164401
|
+
const path6 = await download2(VERSION_3_5_0_MIN2);
|
|
164402
|
+
killSearch = await launch2({
|
|
164403
|
+
path: path6,
|
|
164404
|
+
port,
|
|
164405
|
+
host: "localhost",
|
|
164406
|
+
version: VERSION_3_5_0_MIN2,
|
|
164407
|
+
debug: false
|
|
164408
|
+
});
|
|
164409
|
+
await waitForSearch2(port, 60000);
|
|
164410
|
+
manifest.servers.search = { domain: `localhost:${port}` };
|
|
164411
|
+
}
|
|
164412
|
+
if (manifest.caches.length > 0) {
|
|
164413
|
+
redis = new RedisServer;
|
|
164414
|
+
await redis.start(undefined, undefined, ["--databases", "256"]);
|
|
164415
|
+
await redis.ping();
|
|
164416
|
+
manifest.servers.redis = { host: "127.0.0.1", port: await redis.getPort() };
|
|
164417
|
+
}
|
|
164418
|
+
await mkdir7(join47(directories.output, "test"), { recursive: true });
|
|
164419
|
+
await writeFile10(manifestFile, JSON.stringify(manifest));
|
|
164420
|
+
return await run({ manifest, manifestFile });
|
|
164421
|
+
} finally {
|
|
164422
|
+
await redis?.kill();
|
|
164423
|
+
await killSearch?.();
|
|
164424
|
+
}
|
|
164425
|
+
};
|
|
164426
|
+
|
|
164234
164427
|
// src/cli/ui/complex/run-tests.ts
|
|
164235
164428
|
var import_wildstring2 = __toESM(require_wildstring(), 1);
|
|
164236
|
-
import { mkdir as
|
|
164237
|
-
import { join as
|
|
164429
|
+
import { mkdir as mkdir8, readFile as readFile19, writeFile as writeFile11 } from "fs/promises";
|
|
164430
|
+
import { join as join49 } from "path";
|
|
164238
164431
|
import { parse as parse7, stringify as stringify4 } from "@awsless/json";
|
|
164239
164432
|
import { generateFileHash as generateFileHash5, generateFolderHash, loadWorkspace as loadWorkspace2 } from "@awsless/ts-file-cache";
|
|
164240
164433
|
import { createHash as createHash21 } from "crypto";
|
|
164241
164434
|
|
|
164242
164435
|
// src/test/start.ts
|
|
164243
|
-
import { dirname as dirname21, join as
|
|
164436
|
+
import { dirname as dirname21, join as join48 } from "path";
|
|
164244
164437
|
import { fileURLToPath as fileURLToPath15 } from "url";
|
|
164245
164438
|
import { configDefaults } from "vitest/config";
|
|
164246
164439
|
import { startVitest } from "vitest/node";
|
|
@@ -164316,7 +164509,7 @@ var startTest = async (props) => {
|
|
|
164316
164509
|
reporters: [new NullReporter],
|
|
164317
164510
|
env: props.env,
|
|
164318
164511
|
setupFiles: [
|
|
164319
|
-
|
|
164512
|
+
join48(__dirname4, "test-global-setup.js")
|
|
164320
164513
|
]
|
|
164321
164514
|
}, {
|
|
164322
164515
|
logLevel: "silent",
|
|
@@ -164471,8 +164664,8 @@ var logTestErrors = (event) => {
|
|
|
164471
164664
|
}
|
|
164472
164665
|
};
|
|
164473
164666
|
var runTest = async (stack, dir, filters, workspace, opts) => {
|
|
164474
|
-
await
|
|
164475
|
-
const file2 =
|
|
164667
|
+
await mkdir8(directories.test, { recursive: true });
|
|
164668
|
+
const file2 = join49(directories.test, `${stack}.json`);
|
|
164476
164669
|
const fingerprint = await generateFolderHash(workspace, dir) + (opts.fingerprint ?? "");
|
|
164477
164670
|
if (!process.env.NO_CACHE) {
|
|
164478
164671
|
const exists4 = await fileExist(file2);
|
|
@@ -164503,7 +164696,7 @@ var runTest = async (stack, dir, filters, workspace, opts) => {
|
|
|
164503
164696
|
env: opts.env
|
|
164504
164697
|
});
|
|
164505
164698
|
if (result2.errors.length > 0) {
|
|
164506
|
-
throw result2.errors.map((error3) => new ExpectedError(error3.message));
|
|
164699
|
+
throw result2.errors.map((error3) => new ExpectedError(error3.type && error3.type !== "Error" ? `${error3.type}: ${error3.message}` : error3.message));
|
|
164507
164700
|
}
|
|
164508
164701
|
ctx.updateSuccessMessage(formatResult({
|
|
164509
164702
|
stack,
|
|
@@ -164517,7 +164710,7 @@ var runTest = async (stack, dir, filters, workspace, opts) => {
|
|
|
164517
164710
|
logTestLogs(result);
|
|
164518
164711
|
}
|
|
164519
164712
|
logTestErrors(result);
|
|
164520
|
-
await
|
|
164713
|
+
await writeFile11(file2, stringify4({
|
|
164521
164714
|
...result,
|
|
164522
164715
|
fingerprint
|
|
164523
164716
|
}));
|
|
@@ -164789,14 +164982,18 @@ var deploy = (program3) => {
|
|
|
164789
164982
|
}
|
|
164790
164983
|
}
|
|
164791
164984
|
if (!options.skipTests) {
|
|
164792
|
-
const passed = await
|
|
164793
|
-
|
|
164794
|
-
|
|
164795
|
-
|
|
164796
|
-
|
|
164797
|
-
|
|
164798
|
-
|
|
164799
|
-
|
|
164985
|
+
const passed = await withTestEnvironment(appConfig, stackConfigs, ({ manifest, manifestFile }) => {
|
|
164986
|
+
return runTests(tests, [], [], {
|
|
164987
|
+
showLogs: false,
|
|
164988
|
+
manifest,
|
|
164989
|
+
env: {
|
|
164990
|
+
APP: appConfig.name,
|
|
164991
|
+
APP_ID: appId,
|
|
164992
|
+
AWS_REGION: appConfig.region,
|
|
164993
|
+
AWS_ACCOUNT_ID: accountId,
|
|
164994
|
+
AWSLESS_TEST_MANIFEST: manifestFile
|
|
164995
|
+
}
|
|
164996
|
+
});
|
|
164800
164997
|
});
|
|
164801
164998
|
if (!passed) {
|
|
164802
164999
|
throw new ExpectedError("Tests failed.");
|
|
@@ -165352,12 +165549,12 @@ var auth = (program3) => {
|
|
|
165352
165549
|
|
|
165353
165550
|
// src/cli/command/bind.ts
|
|
165354
165551
|
import { readFile as readFile20 } from "fs/promises";
|
|
165355
|
-
import { join as
|
|
165552
|
+
import { join as join50 } from "path";
|
|
165356
165553
|
var bind = (program3) => {
|
|
165357
165554
|
program3.command("bind").argument("[command...]", "The command to execute").option("--config <string...>", "List of config values that will be accessable", (v3) => v3.split(",")).option("--local", "Bind against the running local dev environment instead of the deployed app").description(`Bind your site environment variables to a command`).action(async (commands5 = [], opts) => {
|
|
165358
165555
|
await layout("bind", async ({ appConfig, stackConfigs }) => {
|
|
165359
165556
|
if (opts.local) {
|
|
165360
|
-
const file2 =
|
|
165557
|
+
const file2 = join50(directories.output, "local", "env.json");
|
|
165361
165558
|
let env5;
|
|
165362
165559
|
try {
|
|
165363
165560
|
env5 = JSON.parse(await readFile20(file2, "utf8"));
|
|
@@ -166153,18 +166350,18 @@ var watchConfig = async (options, resolve5, reject) => {
|
|
|
166153
166350
|
|
|
166154
166351
|
// src/dev/index.ts
|
|
166155
166352
|
import { loadWorkspace as loadWorkspace3 } from "@awsless/ts-file-cache";
|
|
166156
|
-
import { mkdir as
|
|
166157
|
-
import { join as
|
|
166353
|
+
import { mkdir as mkdir11, rm as rm12, writeFile as writeFile15 } from "fs/promises";
|
|
166354
|
+
import { join as join57 } from "path";
|
|
166158
166355
|
|
|
166159
166356
|
// src/dev/context.ts
|
|
166160
166357
|
import { DynamoDBServer } from "@awsless/dynamodb-server";
|
|
166161
|
-
import { join as
|
|
166358
|
+
import { join as join52 } from "path";
|
|
166162
166359
|
|
|
166163
166360
|
// src/dev/servers/s3.ts
|
|
166164
166361
|
import { createHash as createHash22 } from "crypto";
|
|
166165
|
-
import { mkdir as
|
|
166362
|
+
import { mkdir as mkdir9, readdir as readdir8, readFile as readFile21, rm as rm10, stat as stat7, writeFile as writeFile12 } from "fs/promises";
|
|
166166
166363
|
import { createServer as createServer7 } from "http";
|
|
166167
|
-
import { dirname as dirname22, isAbsolute as
|
|
166364
|
+
import { dirname as dirname22, isAbsolute as isAbsolute6, join as join51, relative as relative10, sep as sep4 } from "path";
|
|
166168
166365
|
var escapeXml = (value) => {
|
|
166169
166366
|
return value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll('"', """).replaceAll("'", "'");
|
|
166170
166367
|
};
|
|
@@ -166229,11 +166426,11 @@ var createS3Server = (props) => {
|
|
|
166229
166426
|
res.end(xmlError("InvalidRequest", "Missing bucket name"));
|
|
166230
166427
|
return;
|
|
166231
166428
|
}
|
|
166232
|
-
const bucketDir =
|
|
166233
|
-
const file2 =
|
|
166429
|
+
const bucketDir = join51(props.root, bucket);
|
|
166430
|
+
const file2 = join51(bucketDir, ...keyParts);
|
|
166234
166431
|
const escapes = (base, path6) => {
|
|
166235
166432
|
const rel = relative10(base, path6);
|
|
166236
|
-
return rel.startsWith("..") ||
|
|
166433
|
+
return rel.startsWith("..") || isAbsolute6(rel);
|
|
166237
166434
|
};
|
|
166238
166435
|
if (escapes(props.root, bucketDir) || escapes(bucketDir, file2)) {
|
|
166239
166436
|
res.writeHead(400, { "content-type": "application/xml" });
|
|
@@ -166251,7 +166448,7 @@ var createS3Server = (props) => {
|
|
|
166251
166448
|
return;
|
|
166252
166449
|
}
|
|
166253
166450
|
for (const entry of entries2) {
|
|
166254
|
-
const path6 =
|
|
166451
|
+
const path6 = join51(dir, entry.name);
|
|
166255
166452
|
if (entry.isDirectory()) {
|
|
166256
166453
|
await walk2(path6);
|
|
166257
166454
|
} else {
|
|
@@ -166277,8 +166474,8 @@ var createS3Server = (props) => {
|
|
|
166277
166474
|
if (typeof encoding === "string" && encoding.includes("aws-chunked") || typeof sha === "string" && sha.startsWith("STREAMING")) {
|
|
166278
166475
|
body = decodeAwsChunked(body);
|
|
166279
166476
|
}
|
|
166280
|
-
await
|
|
166281
|
-
await
|
|
166477
|
+
await mkdir9(dirname22(file2), { recursive: true });
|
|
166478
|
+
await writeFile12(file2, body);
|
|
166282
166479
|
const eTag = createHash22("md5").update(body).digest("hex");
|
|
166283
166480
|
res.writeHead(200, { etag: `"${eTag}"` });
|
|
166284
166481
|
res.end();
|
|
@@ -166719,7 +166916,7 @@ var createDevContext = (props) => {
|
|
|
166719
166916
|
const value = await props.pool.keep("store", null, async () => {
|
|
166720
166917
|
const rules = [];
|
|
166721
166918
|
const server = createS3Server({
|
|
166722
|
-
root:
|
|
166919
|
+
root: join52(directories.output, "local", "store"),
|
|
166723
166920
|
region: props.appConfig.region,
|
|
166724
166921
|
rules
|
|
166725
166922
|
});
|
|
@@ -166819,9 +167016,9 @@ var createDevContext = (props) => {
|
|
|
166819
167016
|
|
|
166820
167017
|
// src/dev/seed.ts
|
|
166821
167018
|
import { spawn as spawn6 } from "child_process";
|
|
166822
|
-
import { isAbsolute as
|
|
167019
|
+
import { isAbsolute as isAbsolute7, join as join53 } from "path";
|
|
166823
167020
|
var createSeedRunner = (props) => {
|
|
166824
|
-
const file2 = props.seed && (
|
|
167021
|
+
const file2 = props.seed && (isAbsolute7(props.seed) ? props.seed : join53(directories.root, props.seed));
|
|
166825
167022
|
let running;
|
|
166826
167023
|
const run = () => {
|
|
166827
167024
|
running ??= (async () => {
|
|
@@ -166870,15 +167067,15 @@ var import_ioredis5 = __toESM(require_built3(), 1);
|
|
|
166870
167067
|
import { DynamoDBClient as DynamoDBClient5 } from "@aws-sdk/client-dynamodb";
|
|
166871
167068
|
import { DynamoDBDocumentClient, ScanCommand as ScanCommand2 } from "@aws-sdk/lib-dynamodb";
|
|
166872
167069
|
import { randomUUID as randomUUID8 } from "crypto";
|
|
166873
|
-
import { readdir as readdir9, readFile as readFile22, stat as stat8, writeFile as
|
|
167070
|
+
import { readdir as readdir9, readFile as readFile22, stat as stat8, writeFile as writeFile14 } from "fs/promises";
|
|
166874
167071
|
import { createServer as createServer9 } from "http";
|
|
166875
|
-
import { join as
|
|
167072
|
+
import { join as join55, relative as relative11, sep as sep5 } from "path";
|
|
166876
167073
|
|
|
166877
167074
|
// src/dev/worker.ts
|
|
166878
167075
|
import { spawn as spawn7 } from "child_process";
|
|
166879
|
-
import { writeFile as
|
|
167076
|
+
import { writeFile as writeFile13 } from "fs/promises";
|
|
166880
167077
|
import { availableParallelism } from "os";
|
|
166881
|
-
import { join as
|
|
167078
|
+
import { join as join54 } from "path";
|
|
166882
167079
|
class WorkerError extends Error {
|
|
166883
167080
|
name;
|
|
166884
167081
|
constructor(name, message4, stack) {
|
|
@@ -166995,7 +167192,7 @@ var createBundleWorker = (props) => {
|
|
|
166995
167192
|
throw new Error("The bundle worker never became ready.");
|
|
166996
167193
|
};
|
|
166997
167194
|
const startWorker = async () => {
|
|
166998
|
-
const entry =
|
|
167195
|
+
const entry = join54(props.buildDir, "worker.mjs");
|
|
166999
167196
|
const port = await findFreePort();
|
|
167000
167197
|
const child = spawn7("node", ["--enable-source-maps", entry], {
|
|
167001
167198
|
cwd: props.buildDir,
|
|
@@ -167054,7 +167251,7 @@ var createBundleWorker = (props) => {
|
|
|
167054
167251
|
return worker;
|
|
167055
167252
|
};
|
|
167056
167253
|
const doStart = async () => {
|
|
167057
|
-
await
|
|
167254
|
+
await writeFile13(join54(props.buildDir, "worker.mjs"), WORKER_ENTRY);
|
|
167058
167255
|
const results = await Promise.allSettled(Array.from({ length: concurrency }, () => startWorker()));
|
|
167059
167256
|
const started = results.filter((result) => result.status === "fulfilled").map((result) => result.value);
|
|
167060
167257
|
const failed = results.find((result) => result.status === "rejected");
|
|
@@ -168718,7 +168915,7 @@ var createDashboardServer = (props) => {
|
|
|
168718
168915
|
return;
|
|
168719
168916
|
}
|
|
168720
168917
|
for (const entry of entries2) {
|
|
168721
|
-
const path6 =
|
|
168918
|
+
const path6 = join55(dir, entry.name);
|
|
168722
168919
|
if (entry.isDirectory()) {
|
|
168723
168920
|
await walk2(path6);
|
|
168724
168921
|
} else {
|
|
@@ -168783,7 +168980,7 @@ var createDashboardServer = (props) => {
|
|
|
168783
168980
|
if (url.pathname === "/api/config") {
|
|
168784
168981
|
if (req.method === "PUT") {
|
|
168785
168982
|
const values2 = JSON.parse((await readBody(req)).toString() || "{}");
|
|
168786
|
-
await
|
|
168983
|
+
await writeFile14(props.configFile, JSON.stringify(values2, null, "\t") + `
|
|
168787
168984
|
`);
|
|
168788
168985
|
return { status: 200, body: JSON.stringify({ ok: true }) };
|
|
168789
168986
|
}
|
|
@@ -169029,43 +169226,49 @@ var createLambdaServer = (props) => {
|
|
|
169029
169226
|
};
|
|
169030
169227
|
|
|
169031
169228
|
// src/dev/sdk.ts
|
|
169032
|
-
import { readdir as readdir10, readFile as readFile23, mkdir as
|
|
169229
|
+
import { readdir as readdir10, readFile as readFile23, mkdir as mkdir10, rm as rm11, stat as stat9, symlink } from "fs/promises";
|
|
169033
169230
|
import { createRequire } from "module";
|
|
169034
|
-
import { dirname as dirname23, join as
|
|
169231
|
+
import { dirname as dirname23, join as join56 } from "path";
|
|
169035
169232
|
var linkSdkPackages = async (buildDir, onWarn) => {
|
|
169036
|
-
const filesDir =
|
|
169233
|
+
const filesDir = join56(buildDir, "files");
|
|
169037
169234
|
const packages = new Set;
|
|
169038
169235
|
for (const file2 of await readdir10(filesDir)) {
|
|
169039
169236
|
if (!file2.endsWith(".mjs")) {
|
|
169040
169237
|
continue;
|
|
169041
169238
|
}
|
|
169042
|
-
const code = await readFile23(
|
|
169239
|
+
const code = await readFile23(join56(filesDir, file2), "utf8");
|
|
169043
169240
|
for (const match3 of code.matchAll(/(?:from\s*|import\()\s*["'](@aws-sdk\/[a-z0-9-]+|sharp)["']/g)) {
|
|
169044
169241
|
packages.add(match3[1]);
|
|
169045
169242
|
}
|
|
169046
169243
|
}
|
|
169047
|
-
const projectRequire = createRequire(join54(directories.root, "noop.js"));
|
|
169048
169244
|
const ownRequire = createRequire(import.meta.url);
|
|
169245
|
+
const isProjectDep = async (name) => {
|
|
169246
|
+
try {
|
|
169247
|
+
await stat9(join56(directories.root, "node_modules", name, "package.json"));
|
|
169248
|
+
return true;
|
|
169249
|
+
} catch (_4) {
|
|
169250
|
+
return false;
|
|
169251
|
+
}
|
|
169252
|
+
};
|
|
169049
169253
|
const resolveFromStore = async (name) => {
|
|
169050
|
-
const store =
|
|
169254
|
+
const store = join56(directories.root, "node_modules", ".pnpm");
|
|
169051
169255
|
const prefix = name.replaceAll("/", "+") + "@";
|
|
169052
169256
|
try {
|
|
169053
169257
|
const entries2 = (await readdir10(store)).filter((entry) => entry.startsWith(prefix));
|
|
169054
169258
|
const best = entries2.sort((a4, b6) => a4.slice(prefix.length).localeCompare(b6.slice(prefix.length), undefined, { numeric: true })).at(-1);
|
|
169055
|
-
return best ?
|
|
169259
|
+
return best ? join56(store, best, "node_modules", name) : undefined;
|
|
169056
169260
|
} catch (_4) {
|
|
169057
169261
|
return;
|
|
169058
169262
|
}
|
|
169059
169263
|
};
|
|
169060
169264
|
for (const name of packages) {
|
|
169061
|
-
const target2 =
|
|
169265
|
+
const target2 = join56(buildDir, "node_modules", name);
|
|
169062
169266
|
try {
|
|
169063
|
-
|
|
169064
|
-
projectRequire.resolve(`${name}/package.json`);
|
|
169267
|
+
if (await isProjectDep(name)) {
|
|
169065
169268
|
await rm11(target2, { recursive: true, force: true });
|
|
169066
169269
|
debug(`Sdk link ${name}: project resolves`);
|
|
169067
169270
|
continue;
|
|
169068
|
-
}
|
|
169271
|
+
}
|
|
169069
169272
|
let source = await resolveFromStore(name);
|
|
169070
169273
|
if (!source) {
|
|
169071
169274
|
try {
|
|
@@ -169075,10 +169278,10 @@ var linkSdkPackages = async (buildDir, onWarn) => {
|
|
|
169075
169278
|
continue;
|
|
169076
169279
|
}
|
|
169077
169280
|
}
|
|
169078
|
-
await
|
|
169281
|
+
await mkdir10(dirname23(target2), { recursive: true });
|
|
169079
169282
|
await rm11(target2, { recursive: true, force: true });
|
|
169080
169283
|
await symlink(source, target2, "dir");
|
|
169081
|
-
await stat9(
|
|
169284
|
+
await stat9(join56(target2, "package.json"));
|
|
169082
169285
|
debug(`Sdk link ${name}: ${source}`);
|
|
169083
169286
|
} catch (error3) {
|
|
169084
169287
|
onWarn?.(`Linking the "${name}" sdk package failed: ${error3 instanceof Error ? error3.message : String(error3)}`);
|
|
@@ -169102,7 +169305,7 @@ var startDev = async (props) => {
|
|
|
169102
169305
|
dev: true
|
|
169103
169306
|
});
|
|
169104
169307
|
ready2();
|
|
169105
|
-
await
|
|
169308
|
+
await mkdir11(join57(directories.output, "local"), { recursive: true });
|
|
169106
169309
|
const routerPorts = {};
|
|
169107
169310
|
Object.keys(appConfig.router ?? {}).forEach((id, index) => {
|
|
169108
169311
|
routerPorts[id] = props.port + 1 + index;
|
|
@@ -169157,7 +169360,7 @@ var startDev = async (props) => {
|
|
|
169157
169360
|
for (const [id, port] of Object.entries(routerPorts)) {
|
|
169158
169361
|
env5[`ROUTER_${constantCase(id)}_ENDPOINT`] = `localhost:${port}`;
|
|
169159
169362
|
}
|
|
169160
|
-
await
|
|
169363
|
+
await writeFile15(join57(directories.output, "local", "env.json"), JSON.stringify(env5, null, "\t") + `
|
|
169161
169364
|
`);
|
|
169162
169365
|
return { env: env5, lambda: lambda2 };
|
|
169163
169366
|
});
|
|
@@ -169172,7 +169375,7 @@ var startDev = async (props) => {
|
|
|
169172
169375
|
}
|
|
169173
169376
|
debug(`Build ${builder.type}:${builder.name}`, meta?.cached ? "cached" : String(meta?.buildTime));
|
|
169174
169377
|
}
|
|
169175
|
-
await
|
|
169378
|
+
await writeFile15(getBuildPath("bundle", bundleName, "files/awsless-env.mjs"), `export default {}
|
|
169176
169379
|
`);
|
|
169177
169380
|
await linkSdkPackages(buildDir, log);
|
|
169178
169381
|
return changed;
|
|
@@ -169299,8 +169502,8 @@ var startDev = async (props) => {
|
|
|
169299
169502
|
resources: dev.resources,
|
|
169300
169503
|
routes: dev.routes,
|
|
169301
169504
|
env: env4,
|
|
169302
|
-
storeRoot:
|
|
169303
|
-
configFile:
|
|
169505
|
+
storeRoot: join57(directories.output, "local", "store"),
|
|
169506
|
+
configFile: join57(directories.output, "local", "config.json"),
|
|
169304
169507
|
getEmails: () => props.pool.peek("shim:ses-email")?.server.list() ?? [],
|
|
169305
169508
|
configPulled: Object.keys(props.pool.peek("config:pull") ?? {}),
|
|
169306
169509
|
auth: createAuthAdmin({
|
|
@@ -169342,7 +169545,7 @@ var startDev = async (props) => {
|
|
|
169342
169545
|
routerPorts,
|
|
169343
169546
|
async stop() {
|
|
169344
169547
|
stopping = true;
|
|
169345
|
-
await rm12(
|
|
169548
|
+
await rm12(join57(directories.output, "local", "env.json"), { force: true });
|
|
169346
169549
|
clearTimeout(rebuildTimer);
|
|
169347
169550
|
await watcher.close();
|
|
169348
169551
|
await restartWatcher?.close();
|
|
@@ -169407,8 +169610,8 @@ var createServerPool = () => {
|
|
|
169407
169610
|
};
|
|
169408
169611
|
|
|
169409
169612
|
// src/type-gen/generate.ts
|
|
169410
|
-
import { mkdir as
|
|
169411
|
-
import { dirname as dirname24, join as
|
|
169613
|
+
import { mkdir as mkdir12, writeFile as writeFile16 } from "fs/promises";
|
|
169614
|
+
import { dirname as dirname24, join as join58, relative as relative12 } from "path";
|
|
169412
169615
|
var generateTypes = async (props) => {
|
|
169413
169616
|
const files = [];
|
|
169414
169617
|
await Promise.all(features.map((feature) => {
|
|
@@ -169416,13 +169619,13 @@ var generateTypes = async (props) => {
|
|
|
169416
169619
|
...props,
|
|
169417
169620
|
async write(file2, data, include = false) {
|
|
169418
169621
|
const code = data?.toString("utf8");
|
|
169419
|
-
const path6 =
|
|
169622
|
+
const path6 = join58(directories.types, file2);
|
|
169420
169623
|
if (code) {
|
|
169421
169624
|
if (include) {
|
|
169422
169625
|
files.push(relative12(directories.root, path6));
|
|
169423
169626
|
}
|
|
169424
|
-
await
|
|
169425
|
-
await
|
|
169627
|
+
await mkdir12(dirname24(path6), { recursive: true });
|
|
169628
|
+
await writeFile16(path6, code);
|
|
169426
169629
|
}
|
|
169427
169630
|
}
|
|
169428
169631
|
});
|
|
@@ -169430,7 +169633,7 @@ var generateTypes = async (props) => {
|
|
|
169430
169633
|
if (files.length) {
|
|
169431
169634
|
const code = files.map((file2) => `/// <reference path='${file2}' />`).join(`
|
|
169432
169635
|
`);
|
|
169433
|
-
await
|
|
169636
|
+
await writeFile16(join58(directories.root, `awsless.d.ts`), code);
|
|
169434
169637
|
}
|
|
169435
169638
|
};
|
|
169436
169639
|
|
|
@@ -176706,7 +176909,7 @@ ${job.error.stack.split(`
|
|
|
176706
176909
|
stream2.shift();
|
|
176707
176910
|
} else if (stream2.length > 0) {
|
|
176708
176911
|
this._BOMseen = true;
|
|
176709
|
-
}
|
|
176912
|
+
}
|
|
176710
176913
|
}
|
|
176711
176914
|
return codePointsToString(stream2);
|
|
176712
176915
|
}
|
|
@@ -185082,101 +185285,6 @@ var state = (program3) => {
|
|
|
185082
185285
|
};
|
|
185083
185286
|
|
|
185084
185287
|
// src/cli/command/test.ts
|
|
185085
|
-
import { mkdir as mkdir12, writeFile as writeFile16 } from "fs/promises";
|
|
185086
|
-
import { join as join58 } from "path";
|
|
185087
|
-
|
|
185088
|
-
// src/test/manifest.ts
|
|
185089
|
-
import { isAbsolute as isAbsolute7, join as join57 } from "path";
|
|
185090
|
-
var absolute = (file2) => {
|
|
185091
|
-
return isAbsolute7(file2) ? file2 : join57(directories.root, file2);
|
|
185092
|
-
};
|
|
185093
|
-
var createTestManifest = (appConfig, stackConfigs) => {
|
|
185094
|
-
const manifest = {
|
|
185095
|
-
app: appConfig.name,
|
|
185096
|
-
region: appConfig.region,
|
|
185097
|
-
configs: appConfig.test.configs,
|
|
185098
|
-
tables: [],
|
|
185099
|
-
tableKeys: [],
|
|
185100
|
-
streams: [],
|
|
185101
|
-
searches: [],
|
|
185102
|
-
functions: [],
|
|
185103
|
-
tasks: [],
|
|
185104
|
-
queues: [],
|
|
185105
|
-
topics: appConfig.topics ?? [],
|
|
185106
|
-
pubsub: Object.keys(appConfig.pubsub ?? {}),
|
|
185107
|
-
caches: [],
|
|
185108
|
-
alerts: Object.keys(appConfig.alerts ?? {}),
|
|
185109
|
-
jobs: [],
|
|
185110
|
-
instances: []
|
|
185111
|
-
};
|
|
185112
|
-
for (const stack of stackConfigs) {
|
|
185113
|
-
for (const [id, props] of Object.entries(stack.tables ?? {})) {
|
|
185114
|
-
const name = formatLocalResourceName({
|
|
185115
|
-
appName: appConfig.name,
|
|
185116
|
-
stackName: stack.name,
|
|
185117
|
-
resourceType: "table",
|
|
185118
|
-
resourceName: id
|
|
185119
|
-
});
|
|
185120
|
-
manifest.tables.push(createTableInput(name, props));
|
|
185121
|
-
manifest.tableKeys.push({ stack: stack.name, id, keys: formatTableKeys(props) });
|
|
185122
|
-
if (props.stream) {
|
|
185123
|
-
manifest.streams.push({
|
|
185124
|
-
stack: stack.name,
|
|
185125
|
-
id,
|
|
185126
|
-
file: absolute(props.stream.consumer.code.file),
|
|
185127
|
-
hash: props.hash,
|
|
185128
|
-
sort: props.sort
|
|
185129
|
-
});
|
|
185130
|
-
}
|
|
185131
|
-
}
|
|
185132
|
-
for (const [id, props] of Object.entries(stack.searchs ?? {})) {
|
|
185133
|
-
manifest.searches.push({
|
|
185134
|
-
stack: stack.name,
|
|
185135
|
-
id,
|
|
185136
|
-
mappings: resolveSearchMappings(props),
|
|
185137
|
-
settings: props.settings
|
|
185138
|
-
});
|
|
185139
|
-
}
|
|
185140
|
-
for (const [id, props] of Object.entries(stack.functions ?? {})) {
|
|
185141
|
-
manifest.functions.push({ stack: stack.name, id, file: absolute(props.code.file) });
|
|
185142
|
-
}
|
|
185143
|
-
for (const [id, props] of Object.entries(stack.tasks ?? {})) {
|
|
185144
|
-
manifest.tasks.push({ stack: stack.name, id, file: absolute(props.consumer.code.file) });
|
|
185145
|
-
}
|
|
185146
|
-
for (const [id, props] of Object.entries(stack.queues ?? {})) {
|
|
185147
|
-
manifest.queues.push({
|
|
185148
|
-
stack: stack.name,
|
|
185149
|
-
id,
|
|
185150
|
-
file: props.consumer ? absolute(props.consumer.code.file) : undefined
|
|
185151
|
-
});
|
|
185152
|
-
}
|
|
185153
|
-
for (const id of Object.keys(stack.caches ?? {})) {
|
|
185154
|
-
manifest.caches.push({ stack: stack.name, id });
|
|
185155
|
-
}
|
|
185156
|
-
for (const id of Object.keys(stack.jobs ?? {})) {
|
|
185157
|
-
manifest.jobs.push({ stack: stack.name, id });
|
|
185158
|
-
}
|
|
185159
|
-
for (const id of Object.keys(stack.instances ?? {})) {
|
|
185160
|
-
manifest.instances.push({ stack: stack.name, id });
|
|
185161
|
-
}
|
|
185162
|
-
}
|
|
185163
|
-
return manifest;
|
|
185164
|
-
};
|
|
185165
|
-
|
|
185166
|
-
// src/cli/command/test.ts
|
|
185167
|
-
var waitForSearch2 = async (port, timeoutMs) => {
|
|
185168
|
-
const deadline = Date.now() + timeoutMs;
|
|
185169
|
-
while (Date.now() < deadline) {
|
|
185170
|
-
try {
|
|
185171
|
-
const res = await fetch(`http://localhost:${port}`);
|
|
185172
|
-
if (res.ok) {
|
|
185173
|
-
return;
|
|
185174
|
-
}
|
|
185175
|
-
} catch (_4) {}
|
|
185176
|
-
await new Promise((resolve5) => setTimeout(resolve5, 500));
|
|
185177
|
-
}
|
|
185178
|
-
throw new Error("The local OpenSearch server never became ready.");
|
|
185179
|
-
};
|
|
185180
185288
|
var test2 = (program3) => {
|
|
185181
185289
|
program3.command("test").argument("[stacks...]", "Optionally filter stacks to test").option("-f --filters <string...>", "Optionally filter test files").description("Test your app").action(async (stacks, options) => {
|
|
185182
185290
|
await layout(`test ${stacks ?? ""}`, async (props) => {
|
|
@@ -185185,36 +185293,8 @@ var test2 = (program3) => {
|
|
|
185185
185293
|
if (tests.length === 0) {
|
|
185186
185294
|
return "No tests found.";
|
|
185187
185295
|
}
|
|
185188
|
-
const
|
|
185189
|
-
|
|
185190
|
-
let redis;
|
|
185191
|
-
let killSearch;
|
|
185192
|
-
manifest.servers = {};
|
|
185193
|
-
let passed = false;
|
|
185194
|
-
try {
|
|
185195
|
-
if (manifest.searches.length > 0) {
|
|
185196
|
-
const { download: download2, launch: launch2, VERSION_3_5_0_MIN: VERSION_3_5_0_MIN2 } = await Promise.resolve().then(() => (init_dist2(), exports_dist));
|
|
185197
|
-
const port = await findFreePort();
|
|
185198
|
-
const path6 = await download2(VERSION_3_5_0_MIN2);
|
|
185199
|
-
killSearch = await launch2({
|
|
185200
|
-
path: path6,
|
|
185201
|
-
port,
|
|
185202
|
-
host: "localhost",
|
|
185203
|
-
version: VERSION_3_5_0_MIN2,
|
|
185204
|
-
debug: false
|
|
185205
|
-
});
|
|
185206
|
-
await waitForSearch2(port, 60000);
|
|
185207
|
-
manifest.servers.search = { domain: `localhost:${port}` };
|
|
185208
|
-
}
|
|
185209
|
-
if (manifest.caches.length > 0) {
|
|
185210
|
-
redis = new RedisServer;
|
|
185211
|
-
await redis.start(undefined, undefined, ["--databases", "256"]);
|
|
185212
|
-
await redis.ping();
|
|
185213
|
-
manifest.servers.redis = { host: "127.0.0.1", port: await redis.getPort() };
|
|
185214
|
-
}
|
|
185215
|
-
await mkdir12(join58(directories.output, "test"), { recursive: true });
|
|
185216
|
-
await writeFile16(manifestFile, JSON.stringify(manifest));
|
|
185217
|
-
passed = await runTests(tests, stacks, options?.filters, {
|
|
185296
|
+
const passed = await withTestEnvironment(props.appConfig, props.stackConfigs, ({ manifest, manifestFile }) => {
|
|
185297
|
+
return runTests(tests, stacks, options?.filters, {
|
|
185218
185298
|
showLogs: true,
|
|
185219
185299
|
manifest,
|
|
185220
185300
|
env: {
|
|
@@ -185225,10 +185305,7 @@ var test2 = (program3) => {
|
|
|
185225
185305
|
AWSLESS_TEST_MANIFEST: manifestFile
|
|
185226
185306
|
}
|
|
185227
185307
|
});
|
|
185228
|
-
}
|
|
185229
|
-
await redis?.kill();
|
|
185230
|
-
await killSearch?.();
|
|
185231
|
-
}
|
|
185308
|
+
});
|
|
185232
185309
|
if (!passed) {
|
|
185233
185310
|
throw new ExpectedError("Tests failed.");
|
|
185234
185311
|
}
|