@saws/core 2.0.0-beta.0 → 2.0.0-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/Host.d.ts +62 -0
  3. package/dist/Host.js +202 -0
  4. package/dist/ServiceDefinition.d.ts +66 -0
  5. package/dist/ServiceDefinition.js +182 -0
  6. package/dist/find-service-definition.d.ts +1 -8
  7. package/dist/find-service-definition.js +0 -6
  8. package/dist/get-saws-config.d.ts +14 -3
  9. package/dist/get-saws-config.js +16 -54
  10. package/dist/global-hosts.d.ts +8 -0
  11. package/dist/global-hosts.js +119 -0
  12. package/dist/host-readiness.d.ts +12 -0
  13. package/dist/host-readiness.js +230 -0
  14. package/dist/index.d.ts +5 -5
  15. package/dist/index.js +5 -4
  16. package/dist/secrets-manager.d.ts +66 -0
  17. package/dist/secrets-manager.js +325 -0
  18. package/dist/tsconfig.tsbuildinfo +1 -0
  19. package/dist/utils/constants.d.ts +4 -0
  20. package/dist/utils/constants.js +5 -0
  21. package/dist/utils/create-directories.d.ts +2 -0
  22. package/dist/utils/create-directories.js +20 -0
  23. package/dist/utils/create-file-if-not-exists.d.ts +1 -0
  24. package/dist/utils/create-file-if-not-exists.js +12 -0
  25. package/dist/utils/create-file-if-note-exists.d.ts +1 -0
  26. package/dist/utils/create-file-if-note-exists.js +11 -0
  27. package/dist/utils/dependency-management.d.ts +16 -0
  28. package/dist/utils/dependency-management.js +132 -0
  29. package/dist/utils/file-exists.d.ts +1 -0
  30. package/dist/utils/file-exists.js +12 -0
  31. package/dist/utils/generate-token.d.ts +1 -0
  32. package/dist/utils/generate-token.js +13 -0
  33. package/dist/utils/get-project-name.d.ts +1 -0
  34. package/dist/utils/get-project-name.js +5 -0
  35. package/dist/utils/get-service-path.js +1 -0
  36. package/dist/utils/list-files.d.ts +1 -0
  37. package/dist/utils/list-files.js +17 -0
  38. package/dist/utils/on-exit.d.ts +1 -0
  39. package/dist/utils/on-exit.js +14 -0
  40. package/dist/utils/parameterized-env-var-name.d.ts +1 -0
  41. package/dist/utils/parameterized-env-var-name.js +1 -0
  42. package/dist/utils/recursively-read-dir.d.ts +1 -0
  43. package/dist/utils/recursively-read-dir.js +15 -0
  44. package/dist/utils/retry-until.d.ts +1 -0
  45. package/dist/utils/retry-until.js +9 -0
  46. package/dist/utils/run-local.d.ts +9 -0
  47. package/dist/utils/run-local.js +87 -0
  48. package/dist/utils/shell-quote.d.ts +1 -0
  49. package/dist/utils/shell-quote.js +3 -0
  50. package/dist/utils/stage-outputs.d.ts +3 -0
  51. package/dist/utils/stage-outputs.js +24 -0
  52. package/dist/utils/uppercase.d.ts +1 -0
  53. package/dist/utils/uppercase.js +4 -0
  54. package/package.json +34 -21
  55. package/dist/context.d.ts +0 -41
  56. package/dist/context.d.ts.map +0 -1
  57. package/dist/context.js +0 -38
  58. package/dist/context.test.d.ts +0 -2
  59. package/dist/context.test.d.ts.map +0 -1
  60. package/dist/context.test.js +0 -13
  61. package/dist/find-service-definition.d.ts.map +0 -1
  62. package/dist/find-service-definition.test.d.ts +0 -2
  63. package/dist/find-service-definition.test.d.ts.map +0 -1
  64. package/dist/find-service-definition.test.js +0 -44
  65. package/dist/get-saws-config.d.ts.map +0 -1
  66. package/dist/index.d.ts.map +0 -1
  67. package/dist/service-commands.d.ts +0 -10
  68. package/dist/service-commands.d.ts.map +0 -1
  69. package/dist/service-commands.js +0 -25
  70. package/dist/service-commands.test.d.ts +0 -2
  71. package/dist/service-commands.test.d.ts.map +0 -1
  72. package/dist/service-commands.test.js +0 -26
  73. package/dist/service-definition.d.ts +0 -36
  74. package/dist/service-definition.d.ts.map +0 -1
  75. package/dist/service-definition.js +0 -104
  76. package/dist/service-types.d.ts +0 -9
  77. package/dist/service-types.d.ts.map +0 -1
  78. /package/dist/{service-types.js → utils/get-service-path.d.ts} +0 -0
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
- export * from "./context.js";
1
+ export * from "./ServiceDefinition.js";
2
2
  export * from "./find-service-definition.js";
3
3
  export * from "./get-saws-config.js";
4
- export * from "./service-commands.js";
5
- export * from "./service-definition.js";
6
- export * from "./service-types.js";
4
+ export * from "./Host.js";
5
+ export * from "./global-hosts.js";
6
+ export * from "./host-readiness.js";
7
+ export * from "./secrets-manager.js";
@@ -0,0 +1,66 @@
1
+ export interface SecretsManagerConfig {
2
+ /** Overrides the stage derived from the command's runtime context or STAGE. */
3
+ stage?: string;
4
+ rootDir?: string;
5
+ /** Overrides the directory containing secrets state. Defaults to `<rootDir>/.saws`. */
6
+ sawsDirectory?: string;
7
+ /** Overrides SAWS_SECRETS_PASSCODE and the project-root .env file. */
8
+ passcode?: string;
9
+ }
10
+ export type SecretScope = "stage" | "global";
11
+ export interface SecretResolutionContext {
12
+ stage: string;
13
+ rootDir?: string;
14
+ }
15
+ export declare class ParameterNotFoundError extends Error {
16
+ constructor(name: string);
17
+ }
18
+ export declare class SecretsDecryptionError extends Error {
19
+ constructor();
20
+ }
21
+ /**
22
+ * A lazy reference to either a stage-aware or global secret.
23
+ *
24
+ * References can safely be created while saws.ts is loaded, before the CLI
25
+ * knows which runtime stage will consume a stage-aware secret.
26
+ */
27
+ export declare class SecretReference {
28
+ readonly name: string;
29
+ readonly scope: SecretScope;
30
+ private readonly manager;
31
+ constructor(manager: SecretsManager, name: string, scope: SecretScope);
32
+ resolve(context?: SecretResolutionContext): Promise<string>;
33
+ /** @internal */
34
+ isManagedBy(manager: SecretsManager): boolean;
35
+ }
36
+ export declare class GlobalSecrets {
37
+ private readonly manager;
38
+ constructor(manager: SecretsManager);
39
+ reference(name: string): SecretReference;
40
+ get(name: string): Promise<string>;
41
+ set(name: string, value: string): Promise<void>;
42
+ get secretsFilePath(): string;
43
+ }
44
+ export declare class SecretsManager {
45
+ readonly global: GlobalSecrets;
46
+ readonly rootDir: string;
47
+ readonly sawsDirectory: string;
48
+ private readonly configuredStage?;
49
+ private readonly configuredPasscode?;
50
+ constructor(config?: SecretsManagerConfig);
51
+ get stage(): string;
52
+ reference(name: string): SecretReference;
53
+ get(name: string): Promise<string>;
54
+ set(name: string, value: string): Promise<void>;
55
+ get secretsFilePath(): string;
56
+ /** @internal */
57
+ getFromScope(name: string, scope: SecretScope, resolutionStage?: string): Promise<string>;
58
+ /** @internal */
59
+ setInScope(name: string, value: string, scope: SecretScope, resolutionStage?: string): Promise<void>;
60
+ /** @internal */
61
+ getSecretsFilePath(scope: SecretScope, resolutionStage?: string): string;
62
+ private resolveStage;
63
+ private readSecrets;
64
+ private writeSecrets;
65
+ private getPasscode;
66
+ }
@@ -0,0 +1,325 @@
1
+ import { appendFile, chmod, mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
2
+ import { createCipheriv, createDecipheriv, randomBytes, scrypt } from "node:crypto";
3
+ import path from "node:path";
4
+ const PASSCODE_ENV_NAME = "SAWS_SECRETS_PASSCODE";
5
+ const GLOBAL_SCOPE = "global";
6
+ const ENCRYPTION_VERSION = 1;
7
+ const KEY_LENGTH = 32;
8
+ const SCRYPT_COST = 16_384;
9
+ const SCRYPT_BLOCK_SIZE = 8;
10
+ const SCRYPT_PARALLELIZATION = 1;
11
+ export class ParameterNotFoundError extends Error {
12
+ constructor(name) {
13
+ super(`Secret not found: ${name}`);
14
+ this.name = "ParameterNotFound";
15
+ }
16
+ }
17
+ export class SecretsDecryptionError extends Error {
18
+ constructor() {
19
+ super(`Unable to decrypt secrets. Check ${PASSCODE_ENV_NAME} in the project-root .env file.`);
20
+ this.name = "SecretsDecryptionError";
21
+ }
22
+ }
23
+ /**
24
+ * A lazy reference to either a stage-aware or global secret.
25
+ *
26
+ * References can safely be created while saws.ts is loaded, before the CLI
27
+ * knows which runtime stage will consume a stage-aware secret.
28
+ */
29
+ export class SecretReference {
30
+ name;
31
+ scope;
32
+ manager;
33
+ constructor(manager, name, scope) {
34
+ if (name.trim().length === 0) {
35
+ throw new Error("Secret reference name cannot be empty");
36
+ }
37
+ this.manager = manager;
38
+ this.name = name;
39
+ this.scope = scope;
40
+ }
41
+ resolve(context) {
42
+ if (this.scope === "stage" && context == null) {
43
+ return this.manager.getFromScope(this.name, this.scope);
44
+ }
45
+ return this.manager.getFromScope(this.name, this.scope, context?.stage);
46
+ }
47
+ /** @internal */
48
+ isManagedBy(manager) {
49
+ return this.manager === manager;
50
+ }
51
+ }
52
+ export class GlobalSecrets {
53
+ manager;
54
+ constructor(manager) {
55
+ this.manager = manager;
56
+ }
57
+ reference(name) {
58
+ return new SecretReference(this.manager, name, GLOBAL_SCOPE);
59
+ }
60
+ async get(name) {
61
+ return this.manager.getFromScope(name, GLOBAL_SCOPE);
62
+ }
63
+ async set(name, value) {
64
+ await this.manager.setInScope(name, value, GLOBAL_SCOPE);
65
+ }
66
+ get secretsFilePath() {
67
+ return this.manager.getSecretsFilePath(GLOBAL_SCOPE);
68
+ }
69
+ }
70
+ export class SecretsManager {
71
+ global;
72
+ rootDir;
73
+ sawsDirectory;
74
+ configuredStage;
75
+ configuredPasscode;
76
+ constructor(config = {}) {
77
+ this.configuredStage = config.stage == null ? undefined : requireValidStage(config.stage);
78
+ this.rootDir = config.rootDir ?? process.cwd();
79
+ this.sawsDirectory = config.sawsDirectory ?? path.resolve(this.rootDir, ".saws");
80
+ this.configuredPasscode = config.passcode;
81
+ this.global = new GlobalSecrets(this);
82
+ }
83
+ get stage() {
84
+ return this.resolveStage();
85
+ }
86
+ reference(name) {
87
+ return new SecretReference(this, name, "stage");
88
+ }
89
+ async get(name) {
90
+ return this.getFromScope(name, "stage");
91
+ }
92
+ async set(name, value) {
93
+ await this.setInScope(name, value, "stage");
94
+ }
95
+ get secretsFilePath() {
96
+ return this.getSecretsFilePath("stage");
97
+ }
98
+ /** @internal */
99
+ async getFromScope(name, scope, resolutionStage) {
100
+ const secrets = await this.readSecrets(scope, resolutionStage);
101
+ const value = secrets[name];
102
+ if (value == null)
103
+ throw new ParameterNotFoundError(name);
104
+ return value;
105
+ }
106
+ /** @internal */
107
+ async setInScope(name, value, scope, resolutionStage) {
108
+ const secrets = await this.readSecrets(scope, resolutionStage);
109
+ secrets[name] = value;
110
+ await this.writeSecrets(secrets, scope, resolutionStage);
111
+ }
112
+ /** @internal */
113
+ getSecretsFilePath(scope, resolutionStage) {
114
+ const fileName = scope === GLOBAL_SCOPE ? "global.env" : `${this.resolveStage(resolutionStage)}.env`;
115
+ return path.resolve(this.sawsDirectory, "secrets", fileName);
116
+ }
117
+ resolveStage(resolutionStage) {
118
+ const stage = this.configuredStage ?? resolutionStage ?? process.env.STAGE;
119
+ if (stage == null || stage.length === 0) {
120
+ throw new Error("Unable to determine the secrets stage. Run the command with --stage or set STAGE.");
121
+ }
122
+ return requireValidStage(stage);
123
+ }
124
+ async readSecrets(scope, resolutionStage) {
125
+ const secretsFilePath = this.getSecretsFilePath(scope, resolutionStage);
126
+ let contents;
127
+ try {
128
+ contents = await readFile(secretsFilePath, "utf8");
129
+ }
130
+ catch (error) {
131
+ if (error.code !== "ENOENT")
132
+ throw error;
133
+ return {};
134
+ }
135
+ const encrypted = parseEncryptedFile(contents);
136
+ if (encrypted != null) {
137
+ const passcode = await this.getPasscode(false);
138
+ if (passcode == null) {
139
+ throw new Error(`${PASSCODE_ENV_NAME} is required to decrypt ${secretsFilePath}`);
140
+ }
141
+ return decryptSecrets(encrypted, passcode);
142
+ }
143
+ // Migrate files written by older SAWS versions as soon as they are used.
144
+ const secrets = parseEnvFile(contents);
145
+ await this.writeSecrets(secrets, scope, resolutionStage);
146
+ return secrets;
147
+ }
148
+ async writeSecrets(secrets, scope, resolutionStage) {
149
+ const passcode = await this.getPasscode(true);
150
+ if (passcode == null) {
151
+ throw new Error(`Unable to create ${PASSCODE_ENV_NAME}`);
152
+ }
153
+ const secretsFilePath = this.getSecretsFilePath(scope, resolutionStage);
154
+ await mkdir(path.dirname(secretsFilePath), { recursive: true });
155
+ const temporaryPath = `${secretsFilePath}.${randomBytes(8).toString("hex")}.tmp`;
156
+ try {
157
+ await writeFile(temporaryPath, JSON.stringify(await encryptSecrets(secrets, passcode), null, 2).concat("\n"), { mode: 0o600 });
158
+ await rename(temporaryPath, secretsFilePath);
159
+ await chmod(secretsFilePath, 0o600);
160
+ }
161
+ finally {
162
+ await rm(temporaryPath, { force: true });
163
+ }
164
+ }
165
+ async getPasscode(createIfMissing) {
166
+ if (this.configuredPasscode != null) {
167
+ return requireNonemptyPasscode(this.configuredPasscode);
168
+ }
169
+ if (process.env[PASSCODE_ENV_NAME] != null) {
170
+ return requireNonemptyPasscode(process.env[PASSCODE_ENV_NAME]);
171
+ }
172
+ const envFilePath = path.resolve(this.rootDir, ".env");
173
+ try {
174
+ const environment = parseEnvFile(await readFile(envFilePath, "utf8"));
175
+ if (environment[PASSCODE_ENV_NAME] != null) {
176
+ return requireNonemptyPasscode(environment[PASSCODE_ENV_NAME]);
177
+ }
178
+ }
179
+ catch (error) {
180
+ if (error.code !== "ENOENT")
181
+ throw error;
182
+ }
183
+ if (!createIfMissing)
184
+ return undefined;
185
+ const passcode = randomBytes(32).toString("base64url");
186
+ let needsLeadingNewline = false;
187
+ try {
188
+ const contents = await readFile(envFilePath, "utf8");
189
+ needsLeadingNewline = contents.length > 0 && !contents.endsWith("\n");
190
+ }
191
+ catch (error) {
192
+ if (error.code !== "ENOENT")
193
+ throw error;
194
+ }
195
+ await appendFile(envFilePath, `${needsLeadingNewline ? "\n" : ""}${PASSCODE_ENV_NAME}=${passcode}\n`, { mode: 0o600 });
196
+ await chmod(envFilePath, 0o600);
197
+ return passcode;
198
+ }
199
+ }
200
+ function requireValidStage(stage) {
201
+ if (!/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/.test(stage)) {
202
+ throw new Error("Secrets stage must start with a letter or number and contain only letters, numbers, underscores, and hyphens");
203
+ }
204
+ if (stage.toLowerCase() === GLOBAL_SCOPE) {
205
+ throw new Error(`Secrets stage "${GLOBAL_SCOPE}" is reserved for global secrets`);
206
+ }
207
+ return stage;
208
+ }
209
+ function requireNonemptyPasscode(passcode) {
210
+ if (passcode.length === 0) {
211
+ throw new Error(`${PASSCODE_ENV_NAME} cannot be empty`);
212
+ }
213
+ return passcode;
214
+ }
215
+ function parseEncryptedFile(contents) {
216
+ let value;
217
+ try {
218
+ value = JSON.parse(contents);
219
+ }
220
+ catch {
221
+ return undefined;
222
+ }
223
+ if (value == null || typeof value !== "object" || !("version" in value)) {
224
+ return undefined;
225
+ }
226
+ const encrypted = value;
227
+ if (encrypted.version !== ENCRYPTION_VERSION ||
228
+ encrypted.kdf?.name !== "scrypt" ||
229
+ typeof encrypted.kdf.salt !== "string" ||
230
+ encrypted.kdf.cost !== SCRYPT_COST ||
231
+ encrypted.kdf.blockSize !== SCRYPT_BLOCK_SIZE ||
232
+ encrypted.kdf.parallelization !== SCRYPT_PARALLELIZATION ||
233
+ encrypted.cipher?.name !== "aes-256-gcm" ||
234
+ typeof encrypted.cipher.iv !== "string" ||
235
+ typeof encrypted.cipher.authTag !== "string" ||
236
+ typeof encrypted.ciphertext !== "string") {
237
+ throw new Error("Unsupported or invalid encrypted secrets file");
238
+ }
239
+ return encrypted;
240
+ }
241
+ async function encryptSecrets(secrets, passcode) {
242
+ const salt = randomBytes(16);
243
+ const iv = randomBytes(12);
244
+ const key = await deriveKey(passcode, salt);
245
+ const cipher = createCipheriv("aes-256-gcm", key, iv);
246
+ const ciphertext = Buffer.concat([
247
+ cipher.update(stringifyEnvFile(secrets), "utf8"),
248
+ cipher.final(),
249
+ ]);
250
+ return {
251
+ version: ENCRYPTION_VERSION,
252
+ kdf: {
253
+ name: "scrypt",
254
+ salt: salt.toString("base64"),
255
+ cost: SCRYPT_COST,
256
+ blockSize: SCRYPT_BLOCK_SIZE,
257
+ parallelization: SCRYPT_PARALLELIZATION,
258
+ },
259
+ cipher: {
260
+ name: "aes-256-gcm",
261
+ iv: iv.toString("base64"),
262
+ authTag: cipher.getAuthTag().toString("base64"),
263
+ },
264
+ ciphertext: ciphertext.toString("base64"),
265
+ };
266
+ }
267
+ async function decryptSecrets(encrypted, passcode) {
268
+ try {
269
+ const salt = Buffer.from(encrypted.kdf.salt, "base64");
270
+ const key = await deriveKey(passcode, salt);
271
+ const decipher = createDecipheriv("aes-256-gcm", key, Buffer.from(encrypted.cipher.iv, "base64"));
272
+ decipher.setAuthTag(Buffer.from(encrypted.cipher.authTag, "base64"));
273
+ const plaintext = Buffer.concat([
274
+ decipher.update(Buffer.from(encrypted.ciphertext, "base64")),
275
+ decipher.final(),
276
+ ]).toString("utf8");
277
+ return parseEnvFile(plaintext);
278
+ }
279
+ catch {
280
+ throw new SecretsDecryptionError();
281
+ }
282
+ }
283
+ function deriveKey(passcode, salt) {
284
+ return new Promise((resolve, reject) => {
285
+ scrypt(passcode, salt, KEY_LENGTH, {
286
+ N: SCRYPT_COST,
287
+ r: SCRYPT_BLOCK_SIZE,
288
+ p: SCRYPT_PARALLELIZATION,
289
+ }, (error, key) => {
290
+ if (error != null)
291
+ reject(error);
292
+ else
293
+ resolve(key);
294
+ });
295
+ });
296
+ }
297
+ function parseEnvFile(contents) {
298
+ const values = {};
299
+ for (const line of contents.split(/\r?\n/)) {
300
+ const trimmed = line.trim();
301
+ if (trimmed.length === 0 || trimmed.startsWith("#"))
302
+ continue;
303
+ const separatorIndex = trimmed.indexOf("=");
304
+ if (separatorIndex === -1)
305
+ continue;
306
+ const key = trimmed.slice(0, separatorIndex).trim();
307
+ const rawValue = trimmed.slice(separatorIndex + 1).trim();
308
+ values[key] = parseEnvValue(rawValue);
309
+ }
310
+ return values;
311
+ }
312
+ function parseEnvValue(value) {
313
+ if ((value.startsWith('"') && value.endsWith('"')) ||
314
+ (value.startsWith("'") && value.endsWith("'"))) {
315
+ return value.slice(1, -1).replaceAll("\\n", "\n").replaceAll('\\"', '"');
316
+ }
317
+ return value;
318
+ }
319
+ function stringifyEnvFile(values) {
320
+ return Object.entries(values)
321
+ .sort(([left], [right]) => left.localeCompare(right))
322
+ .map(([key, value]) => `${key}=${JSON.stringify(value)}`)
323
+ .join("\n")
324
+ .concat("\n");
325
+ }
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../utils/dist/src/stage-outputs.d.ts","../../utils/dist/src/aws-permission.d.ts","../../utils/dist/src/parameterized-env-var-name.d.ts","../src/servicedefinition.ts","../src/get-saws-config.ts","../src/index.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/file.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/filereader.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/dom-events.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@20.17.27/node_modules/@types/node/index.d.ts"],"fileIdsList":[[70,109,112],[70,111,112],[112],[70,112,117,146],[70,112,113,118,124,125,132,143,154],[70,112,113,114,124,132],[70,112],[65,66,67,70,112],[70,112,115,155],[70,112,116,117,125,133],[70,112,117,143,151],[70,112,118,120,124,132],[70,111,112,119],[70,112,120,121],[70,112,124],[70,112,122,124],[70,111,112,124],[70,112,124,125,126,143,154],[70,112,124,125,126,139,143,146],[70,107,112,159],[70,112,120,124,127,132,143,154],[70,112,124,125,127,128,132,143,151,154],[70,112,127,129,143,151,154],[68,69,70,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160],[70,112,124,130],[70,112,131,154,159],[70,112,120,124,132,143],[70,112,133],[70,112,134],[70,111,112,135],[70,109,110,111,112,113,114,115,116,117,118,119,120,121,122,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160],[70,112,137],[70,112,138],[70,112,124,139,140],[70,112,139,141,155,157],[70,112,124,143,144,146],[70,112,145,146],[70,112,143,144],[70,112,146],[70,112,147],[70,109,112,143],[70,112,124,149,150],[70,112,149,150],[70,112,117,132,143,151],[70,112,152],[70,112,132,153],[70,112,127,138,154],[70,112,117,155],[70,112,143,156],[70,112,131,157],[70,112,158],[70,112,117,124,126,135,143,154,157,159],[70,112,143,160],[70,79,83,112,154],[70,79,112,143,154],[70,74,112],[70,76,79,112,151,154],[70,112,132,151],[70,112,161],[70,74,112,161],[70,76,79,112,132,154],[70,71,72,75,78,112,124,143,154],[70,79,86,112],[70,71,77,112],[70,79,100,101,112],[70,75,79,112,146,154,161],[70,100,112,161],[70,73,74,112,161],[70,79,112],[70,73,74,75,76,77,78,79,80,81,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,101,102,103,104,105,106,112],[70,79,94,112],[70,79,86,87,112],[70,77,79,87,88,112],[70,78,112],[70,71,74,79,112],[70,79,83,87,88,112],[70,83,112],[70,77,79,82,112,154],[70,71,76,79,86,112],[70,112,143],[70,74,79,100,112,159,161],[62,70,112,134],[62,63,70,112],[59,60,61,70,112,143]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"b507173a7718609bb52011f33e6fc61b0f3de62ec38c935b38dcfbb68223dea9","impliedFormat":1},{"version":"02a81c65d86a2ad4528096fa5bfdb06b702b52fb58513e09a4e0fb9cd0de3747","impliedFormat":1},{"version":"49f2c62555d3f5877b6a995aea392f83f4badffc143e93de43d7827d5b4cc05f","impliedFormat":1},{"version":"8aab055fe13e06f3167e28cbebc61c43aefe2670a851bd957b63f8871ed1ec65","signature":"12109b53bf659854e8248feb3e5134ebf8f96a8f5a5dffebb7600a89d05324d2","impliedFormat":1},{"version":"12aa70b30a76c0bce7a30a1e4fa7241de0165bb5c2d1dc579b66484243afbdd2","signature":"243828236d4436f8faf41005da557f6ace5521c90282c0f78f23493edea327b9","impliedFormat":1},{"version":"baeb0e9da898fdb3cde061a4dbcbe9b5d90737220e646101111617a22aab6d9a","signature":"c85b423b254ef24cee6f24b136a4635d6a693b0d397827d8e4080c9fe491edd9","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"6b80c6175da9de59bace50a72c2d68490d4ab5b07016ff5367bc7ba33cf2f219","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"4d2b0eb911816f66abe4970898f97a2cfc902bcd743cbfa5017fad79f7ef90d8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","impliedFormat":1},{"version":"24b8685c62562f5d98615c5a0c1d05f297cf5065f15246edfe99e81ec4c0e011","impliedFormat":1},{"version":"93507c745e8f29090efb99399c3f77bec07db17acd75634249dc92f961573387","impliedFormat":1},{"version":"339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"08faa97886e71757779428dd4c69a545c32c85fd629d1116d42710b32c6378bc","affectsGlobalScope":true,"impliedFormat":1},{"version":"6b042aa5d277ad6963e2837179fd2f8fbb01968ac67115b0833c0244e93d1d50","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"3d77c73be94570813f8cadd1f05ebc3dc5e2e4fdefe4d340ca20cd018724ee36","impliedFormat":1},{"version":"23cfd70b42094e54cc3c5dab996d81b97e2b6f38ccb24ead85454b8ddfe2fc4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3e58c4c18a031cbb17abec7a4ad0bd5ae9fc70c1f4ba1e7fb921ad87c504aca","impliedFormat":1},{"version":"a3e8bafb2af8e850c644f4be7f5156cf7d23b7bfdc3b786bd4d10ed40329649c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4b87f767c7bc841511113c876a6b8bf1fd0cb0b718c888ad84478b372ec486b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d04e3640dd9eb67f7f1e5bd3d0bf96c784666f7aefc8ac1537af6f2d38d4c29","impliedFormat":1},{"version":"3c884d9d9ec454bdf0d5a0b8465bf8297d2caa4d853851d92cc417ac6f30b969","impliedFormat":1},{"version":"5a369483ac4cfbdf0331c248deeb36140e6907db5e1daed241546b4a2055f82c","impliedFormat":1},{"version":"e8f5b5cc36615c17d330eaf8eebbc0d6bdd942c25991f96ef122f246f4ff722f","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ada07543808f3b967624645a8e1ccd446f8b01ade47842acf1328aec899fed0","affectsGlobalScope":true,"impliedFormat":1},{"version":"809de4a91e5f9ea79963802ef3ea0144533c6f94ca8eee10efa70f5f42d6eecc","impliedFormat":1},{"version":"71adf5dbc59568663d252a46179e71e4d544c053978bfc526d11543a3f716f42","impliedFormat":1},{"version":"38bf8ff1b403c861e9052c9ea651cb4f38c1ecc084a34d79f8acc6d6477a7321","impliedFormat":1},{"version":"93bd413918fa921c8729cef45302b24d8b6c7855d72d5bf82d3972595ae8dcbf","impliedFormat":1},{"version":"4ff41188773cbf465807dd2f7059c7494cbee5115608efc297383832a1150c43","impliedFormat":1},{"version":"dccdf1677e531e33f8ac961a68bc537418c9a414797c1ea7e91307501cdc3f5e","impliedFormat":1},{"version":"e184c4b8918ef56c8c9e68bd79f3f3780e2d0d75bf2b8a41da1509a40c2deb46","affectsGlobalScope":true,"impliedFormat":1},{"version":"d206b4baf4ddcc15d9d69a9a2f4999a72a2c6adeaa8af20fa7a9960816287555","impliedFormat":1},{"version":"93f437e1398a4f06a984f441f7fa7a9f0535c04399619b5c22e0b87bdee182cb","impliedFormat":1},{"version":"afbe24ab0d74694372baa632ecb28bb375be53f3be53f9b07ecd7fc994907de5","impliedFormat":1},{"version":"70731d10d5311bd4cf710ef7f6539b62660f4b0bfdbb3f9fbe1d25fe6366a7fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"6b19db3600a17af69d4f33d08cc7076a7d19fb65bb36e442cac58929ec7c9482","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"137c2894e8f3e9672d401cc0a305dc7b1db7c69511cf6d3970fb53302f9eae09","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"ba1f814c22fd970255ddd60d61fb7e00c28271c933ab5d5cc19cd3ca66b8f57c","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"295f068af94245ee9d780555351bef98adfd58f8baf0b9dadbc31a489b881f8b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1851a3b4db78664f83901bb9cac9e45e03a37bb5933cc5bf37e10bb7e91ab4eb","impliedFormat":1},{"version":"09d479208911ac3ac6a7c2fe86217fc1abe6c4f04e2d52e4890e500699eeab32","affectsGlobalScope":true,"impliedFormat":1},{"version":"27d8987fd22d92efe6560cf0ce11767bf089903ffe26047727debfd1f3bf438b","affectsGlobalScope":true,"impliedFormat":1},{"version":"578d8bb6dcb2a1c03c4c3f8eb71abc9677e1a5c788b7f24848e3138ce17f3400","impliedFormat":1},{"version":"4f029899f9bae07e225c43aef893590541b2b43267383bf5e32e3a884d219ed5","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"5b566927cad2ed2139655d55d690ffa87df378b956e7fe1c96024c4d9f75c4cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"bce947017cb7a2deebcc4f5ba04cead891ce6ad1602a4438ae45ed9aa1f39104","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3dffd70e6375b872f0b4e152de4ae682d762c61a24881ecc5eb9f04c5caf76f","impliedFormat":1},{"version":"e2c72c065a36bc9ab2a00ac6a6f51e71501619a72c0609defd304d46610487a4","impliedFormat":1},{"version":"d91a7d8b5655c42986f1bdfe2105c4408f472831c8f20cf11a8c3345b6b56c8c","impliedFormat":1},{"version":"616075a6ac578cf5a013ee12964188b4412823796ce0b202c6f1d2e4ca8480d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"e8a979b8af001c9fc2e774e7809d233c8ca955a28756f52ee5dee88ccb0611d2","impliedFormat":1},{"version":"cac793cc47c29e26e4ac3601dcb00b4435ebed26203485790e44f2ad8b6ad847","impliedFormat":1}],"root":[[62,64]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"esModuleInterop":true,"inlineSourceMap":true,"jsx":2,"module":100,"outDir":"./","rootDir":"..","skipLibCheck":true,"strict":true,"target":9},"referencedMap":[[109,1],[110,1],[111,2],[70,3],[112,4],[113,5],[114,6],[65,7],[68,8],[66,7],[67,7],[115,9],[116,10],[117,11],[118,12],[119,13],[120,14],[121,14],[123,15],[122,16],[124,17],[125,18],[126,19],[108,20],[69,7],[127,21],[128,22],[129,23],[161,24],[130,25],[131,26],[132,27],[133,28],[134,29],[135,30],[136,31],[137,32],[138,33],[139,34],[140,34],[141,35],[142,7],[143,36],[145,37],[144,38],[146,39],[147,40],[148,41],[149,42],[150,43],[151,44],[152,45],[153,46],[154,47],[155,48],[156,49],[157,50],[158,51],[159,52],[160,53],[57,7],[58,7],[10,7],[12,7],[11,7],[2,7],[13,7],[14,7],[15,7],[16,7],[17,7],[18,7],[19,7],[20,7],[3,7],[21,7],[22,7],[4,7],[23,7],[27,7],[24,7],[25,7],[26,7],[28,7],[29,7],[30,7],[5,7],[31,7],[32,7],[33,7],[34,7],[6,7],[38,7],[35,7],[36,7],[37,7],[39,7],[7,7],[40,7],[45,7],[46,7],[41,7],[42,7],[43,7],[44,7],[8,7],[50,7],[47,7],[48,7],[49,7],[51,7],[9,7],[52,7],[53,7],[54,7],[56,7],[55,7],[1,7],[86,54],[96,55],[85,54],[106,56],[77,57],[76,58],[105,59],[99,60],[104,61],[79,62],[93,63],[78,64],[102,65],[74,66],[73,59],[103,67],[75,68],[80,69],[81,7],[84,69],[71,7],[107,70],[97,71],[88,72],[89,73],[91,74],[87,75],[90,76],[100,59],[82,77],[83,78],[92,79],[72,80],[95,71],[94,69],[98,7],[101,81],[63,82],[64,83],[62,84],[60,7],[61,7],[59,7]],"latestChangedDtsFile":"./src/index.d.ts","version":"5.8.2"}
@@ -0,0 +1,4 @@
1
+ export declare const SAWS_DIR: string;
2
+ export declare const BUILD_DIR: string;
3
+ export declare const DB_PASSWORD_PARAMETER_NAME = "db-password";
4
+ export declare const DEV_USER_PASSWORD_PARAMETER_NAME = "dev-user-password";
@@ -0,0 +1,5 @@
1
+ import * as path from "node:path";
2
+ export const SAWS_DIR = path.resolve("./.saws");
3
+ export const BUILD_DIR = path.resolve(SAWS_DIR, "build");
4
+ export const DB_PASSWORD_PARAMETER_NAME = "db-password";
5
+ export const DEV_USER_PASSWORD_PARAMETER_NAME = "dev-user-password";
@@ -0,0 +1,2 @@
1
+ export declare const createCacheDir: () => Promise<void>;
2
+ export declare const createSawsDir: () => Promise<void>;
@@ -0,0 +1,20 @@
1
+ import { promises as fs, constants } from "node:fs";
2
+ import { BUILD_DIR, SAWS_DIR } from "./constants.js";
3
+ export const createCacheDir = async () => {
4
+ // check if the cache dir exists already or not
5
+ // if not create it
6
+ try {
7
+ await fs.access(BUILD_DIR, constants.F_OK);
8
+ }
9
+ catch (err) {
10
+ await fs.mkdir(BUILD_DIR, { recursive: true });
11
+ }
12
+ };
13
+ export const createSawsDir = async () => {
14
+ try {
15
+ await fs.access(SAWS_DIR, constants.F_OK);
16
+ }
17
+ catch (err) {
18
+ await fs.mkdir(SAWS_DIR, { recursive: true });
19
+ }
20
+ };
@@ -0,0 +1 @@
1
+ export declare function createFileIfNotExists(path: string, contents: string): Promise<false | undefined>;
@@ -0,0 +1,12 @@
1
+ import * as fs from "node:fs/promises";
2
+ export async function createFileIfNotExists(path, contents) {
3
+ try {
4
+ await fs.writeFile(path, contents, { flag: "wx" });
5
+ }
6
+ catch (err) {
7
+ if (typeof err === "object" && err !== null && "code" in err && err.code === "EEXIST") {
8
+ return false;
9
+ }
10
+ throw err;
11
+ }
12
+ }
@@ -0,0 +1 @@
1
+ export declare function createFileIfNotExists(path: string, contents: string): Promise<false | undefined>;
@@ -0,0 +1,11 @@
1
+ import * as fs from "node:fs/promises";
2
+ export async function createFileIfNotExists(path, contents) {
3
+ try {
4
+ await fs.writeFile(path, contents, { flag: "wx" });
5
+ }
6
+ catch (err) {
7
+ if (err === "EEXIST")
8
+ return false;
9
+ throw err;
10
+ }
11
+ }
@@ -0,0 +1,16 @@
1
+ import type { RuntimeLogSink } from "../ServiceDefinition.js";
2
+ export interface InstallDependenciesOptions {
3
+ /**
4
+ * The package or workspace root. Defaults to the current working directory.
5
+ */
6
+ cwd?: string;
7
+ /**
8
+ * A workspace directory, relative to `cwd`.
9
+ */
10
+ workspace?: string;
11
+ development?: boolean;
12
+ logSink?: RuntimeLogSink;
13
+ serviceName?: string;
14
+ }
15
+ export declare function installDependencies(dependencies: string[], options?: InstallDependenciesOptions): Promise<void>;
16
+ export declare function hasDependency(dependency: string, cwd?: string): Promise<boolean>;