@stacksjs/ts-cloud 0.2.6 → 0.2.7
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/cli.js +181 -181
- package/dist/index.js +183 -183
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -1193,7 +1193,7 @@ __export(exports_client, {
|
|
|
1193
1193
|
AWSClient: () => AWSClient
|
|
1194
1194
|
});
|
|
1195
1195
|
import * as crypto2 from "node:crypto";
|
|
1196
|
-
import { existsSync as
|
|
1196
|
+
import { existsSync as existsSync9, readFileSync as readFileSync4 } from "node:fs";
|
|
1197
1197
|
import { homedir as homedir3 } from "node:os";
|
|
1198
1198
|
import { join as join6 } from "node:path";
|
|
1199
1199
|
|
|
@@ -1243,7 +1243,7 @@ class AWSClient {
|
|
|
1243
1243
|
loadCredentialsFromFile() {
|
|
1244
1244
|
const profile = process.env.AWS_PROFILE || "default";
|
|
1245
1245
|
const credentialsPath = process.env.AWS_SHARED_CREDENTIALS_FILE || join6(homedir3(), ".aws", "credentials");
|
|
1246
|
-
if (!
|
|
1246
|
+
if (!existsSync9(credentialsPath)) {
|
|
1247
1247
|
return null;
|
|
1248
1248
|
}
|
|
1249
1249
|
try {
|
|
@@ -1419,7 +1419,7 @@ class AWSClient {
|
|
|
1419
1419
|
return result;
|
|
1420
1420
|
}
|
|
1421
1421
|
buildUrl(options) {
|
|
1422
|
-
const { service, region, path
|
|
1422
|
+
const { service, region, path, queryParams } = options;
|
|
1423
1423
|
let host;
|
|
1424
1424
|
if (service === "s3") {
|
|
1425
1425
|
if (options.bucket) {
|
|
@@ -1442,7 +1442,7 @@ class AWSClient {
|
|
|
1442
1442
|
} else {
|
|
1443
1443
|
host = `${service}.${region}.amazonaws.com`;
|
|
1444
1444
|
}
|
|
1445
|
-
let url = `https://${host}${
|
|
1445
|
+
let url = `https://${host}${path}`;
|
|
1446
1446
|
if (queryParams && Object.keys(queryParams).length > 0) {
|
|
1447
1447
|
const queryString = Object.keys(queryParams).map((k) => `${this.uriEncode(k)}=${this.uriEncode(queryParams[k])}`).join("&");
|
|
1448
1448
|
url += `?${queryString}`;
|
|
@@ -1450,7 +1450,7 @@ class AWSClient {
|
|
|
1450
1450
|
return url;
|
|
1451
1451
|
}
|
|
1452
1452
|
signRequest(options, credentials) {
|
|
1453
|
-
const { service, region, method, path
|
|
1453
|
+
const { service, region, method, path, queryParams, body } = options;
|
|
1454
1454
|
const now = new Date;
|
|
1455
1455
|
const amzDate = this.getAmzDate(now);
|
|
1456
1456
|
const dateStamp = this.getDateStamp(now);
|
|
@@ -1493,7 +1493,7 @@ class AWSClient {
|
|
|
1493
1493
|
}
|
|
1494
1494
|
const payloadHash = this.sha256(body || "");
|
|
1495
1495
|
headers["x-amz-content-sha256"] = payloadHash;
|
|
1496
|
-
const canonicalUri =
|
|
1496
|
+
const canonicalUri = path;
|
|
1497
1497
|
const canonicalQueryString2 = queryParams ? Object.keys(queryParams).sort().map((k) => `${this.uriEncode(k)}=${this.uriEncode(queryParams[k])}`).join("&") : "";
|
|
1498
1498
|
const sortedHeaderKeys = Object.keys(headers).sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));
|
|
1499
1499
|
const canonicalHeaders = sortedHeaderKeys.map((key) => `${key.toLowerCase()}:${headers[key].trim()}
|
|
@@ -1732,7 +1732,7 @@ function detectCredentialSource() {
|
|
|
1732
1732
|
}
|
|
1733
1733
|
const profile = process.env.AWS_PROFILE || "default";
|
|
1734
1734
|
const credentialsPath = process.env.AWS_SHARED_CREDENTIALS_FILE || join6(homedir3(), ".aws", "credentials");
|
|
1735
|
-
if (
|
|
1735
|
+
if (existsSync9(credentialsPath)) {
|
|
1736
1736
|
return {
|
|
1737
1737
|
source: "file",
|
|
1738
1738
|
profile,
|
|
@@ -2354,8 +2354,8 @@ var init_cloudformation = __esm(() => {
|
|
|
2354
2354
|
// src/aws/s3.ts
|
|
2355
2355
|
import * as crypto3 from "node:crypto";
|
|
2356
2356
|
import { readdir as readdir2 } from "node:fs/promises";
|
|
2357
|
-
import { join as
|
|
2358
|
-
import { readFileSync as
|
|
2357
|
+
import { join as join8 } from "node:path";
|
|
2358
|
+
import { readFileSync as readFileSync6 } from "node:fs";
|
|
2359
2359
|
function toFetchBody(data) {
|
|
2360
2360
|
const { buffer, byteOffset, byteLength } = data;
|
|
2361
2361
|
if (buffer instanceof ArrayBuffer) {
|
|
@@ -2377,9 +2377,9 @@ class S3Client2 {
|
|
|
2377
2377
|
this.client = new AWSClient(creds);
|
|
2378
2378
|
}
|
|
2379
2379
|
resolveProfileCredentialsSync() {
|
|
2380
|
-
const { existsSync: existsSync8, readFileSync:
|
|
2380
|
+
const { existsSync: existsSync8, readFileSync: readFileSync5 } = __require("node:fs");
|
|
2381
2381
|
const { homedir: homedir4 } = __require("node:os");
|
|
2382
|
-
const { join:
|
|
2382
|
+
const { join: join7 } = __require("node:path");
|
|
2383
2383
|
const envProfile = process.env.AWS_PROFILE;
|
|
2384
2384
|
const envAccessKey = process.env.AWS_ACCESS_KEY_ID;
|
|
2385
2385
|
const envSecretKey = process.env.AWS_SECRET_ACCESS_KEY;
|
|
@@ -2390,9 +2390,9 @@ class S3Client2 {
|
|
|
2390
2390
|
sessionToken: process.env.AWS_SESSION_TOKEN
|
|
2391
2391
|
};
|
|
2392
2392
|
}
|
|
2393
|
-
const credentialsPath = process.env.AWS_SHARED_CREDENTIALS_FILE ||
|
|
2393
|
+
const credentialsPath = process.env.AWS_SHARED_CREDENTIALS_FILE || join7(homedir4(), ".aws", "credentials");
|
|
2394
2394
|
if (existsSync8(credentialsPath)) {
|
|
2395
|
-
const content =
|
|
2395
|
+
const content = readFileSync5(credentialsPath, "utf-8");
|
|
2396
2396
|
const lines = content.split(`
|
|
2397
2397
|
`);
|
|
2398
2398
|
let currentProfile = null;
|
|
@@ -2458,7 +2458,7 @@ class S3Client2 {
|
|
|
2458
2458
|
}
|
|
2459
2459
|
loadCredentialsFromFile() {
|
|
2460
2460
|
try {
|
|
2461
|
-
const { existsSync: existsSync8, readFileSync:
|
|
2461
|
+
const { existsSync: existsSync8, readFileSync: readFileSync5 } = __require("node:fs");
|
|
2462
2462
|
const { homedir: homedir4 } = __require("node:os");
|
|
2463
2463
|
const { join: pathJoin } = __require("node:path");
|
|
2464
2464
|
const profile = process.env.AWS_PROFILE || "default";
|
|
@@ -2466,7 +2466,7 @@ class S3Client2 {
|
|
|
2466
2466
|
if (!existsSync8(credentialsPath)) {
|
|
2467
2467
|
return null;
|
|
2468
2468
|
}
|
|
2469
|
-
const content =
|
|
2469
|
+
const content = readFileSync5(credentialsPath, "utf-8");
|
|
2470
2470
|
const lines = content.split(`
|
|
2471
2471
|
`);
|
|
2472
2472
|
let currentProfile = "";
|
|
@@ -2793,7 +2793,7 @@ class S3Client2 {
|
|
|
2793
2793
|
}
|
|
2794
2794
|
}
|
|
2795
2795
|
async copy(options) {
|
|
2796
|
-
const fileContent =
|
|
2796
|
+
const fileContent = readFileSync6(options.source);
|
|
2797
2797
|
await this.putObject({
|
|
2798
2798
|
bucket: options.bucket,
|
|
2799
2799
|
key: options.key,
|
|
@@ -2816,7 +2816,7 @@ class S3Client2 {
|
|
|
2816
2816
|
const relativePath = file.substring(options.source.length + 1);
|
|
2817
2817
|
const s3Key = options.prefix ? `${options.prefix}/${relativePath}` : relativePath;
|
|
2818
2818
|
if (!options.dryRun) {
|
|
2819
|
-
const fileContent =
|
|
2819
|
+
const fileContent = readFileSync6(file);
|
|
2820
2820
|
await this.putObject({
|
|
2821
2821
|
bucket: options.bucket,
|
|
2822
2822
|
key: s3Key,
|
|
@@ -2847,7 +2847,7 @@ class S3Client2 {
|
|
|
2847
2847
|
const files = [];
|
|
2848
2848
|
const entries = await readdir2(dir, { withFileTypes: true });
|
|
2849
2849
|
for (const entry of entries) {
|
|
2850
|
-
const fullPath =
|
|
2850
|
+
const fullPath = join8(dir, entry.name);
|
|
2851
2851
|
if (entry.isDirectory()) {
|
|
2852
2852
|
const subFiles = await this.listFilesRecursive(fullPath);
|
|
2853
2853
|
files.push(...subFiles);
|
|
@@ -4075,7 +4075,7 @@ class CloudFrontClient {
|
|
|
4075
4075
|
<Paths>
|
|
4076
4076
|
<Quantity>${options.paths.length}</Quantity>
|
|
4077
4077
|
<Items>
|
|
4078
|
-
${options.paths.map((
|
|
4078
|
+
${options.paths.map((path) => `<Path>${path}</Path>`).join(`
|
|
4079
4079
|
`)}
|
|
4080
4080
|
</Items>
|
|
4081
4081
|
</Paths>
|
|
@@ -4201,17 +4201,17 @@ class CloudFrontClient {
|
|
|
4201
4201
|
});
|
|
4202
4202
|
}
|
|
4203
4203
|
async invalidatePaths(distributionId, paths) {
|
|
4204
|
-
const formattedPaths = paths.map((
|
|
4204
|
+
const formattedPaths = paths.map((path) => path.startsWith("/") ? path : `/${path}`);
|
|
4205
4205
|
return this.createInvalidation({
|
|
4206
4206
|
distributionId,
|
|
4207
4207
|
paths: formattedPaths
|
|
4208
4208
|
});
|
|
4209
4209
|
}
|
|
4210
4210
|
async invalidatePattern(distributionId, pattern) {
|
|
4211
|
-
const
|
|
4211
|
+
const path = pattern.startsWith("/") ? pattern : `/${pattern}`;
|
|
4212
4212
|
return this.createInvalidation({
|
|
4213
4213
|
distributionId,
|
|
4214
|
-
paths: [
|
|
4214
|
+
paths: [path]
|
|
4215
4215
|
});
|
|
4216
4216
|
}
|
|
4217
4217
|
async invalidateAfterDeployment(options) {
|
|
@@ -8883,13 +8883,13 @@ async function uploadStaticFiles(options) {
|
|
|
8883
8883
|
const { sourceDir, bucket, region, cacheControl = "max-age=31536000, public", onProgress } = options;
|
|
8884
8884
|
const s32 = new S3Client2(region);
|
|
8885
8885
|
const { readdir: readdir3 } = await import("node:fs/promises");
|
|
8886
|
-
const { join:
|
|
8886
|
+
const { join: join7, relative: relative3 } = await import("node:path");
|
|
8887
8887
|
const { createHash: createHash5 } = await import("node:crypto");
|
|
8888
8888
|
async function listFiles(dir) {
|
|
8889
8889
|
const files2 = [];
|
|
8890
8890
|
const entries = await readdir3(dir, { withFileTypes: true });
|
|
8891
8891
|
for (const entry of entries) {
|
|
8892
|
-
const fullPath =
|
|
8892
|
+
const fullPath = join7(dir, entry.name);
|
|
8893
8893
|
if (entry.isDirectory()) {
|
|
8894
8894
|
files2.push(...await listFiles(fullPath));
|
|
8895
8895
|
} else {
|
|
@@ -8949,7 +8949,7 @@ async function uploadStaticFiles(options) {
|
|
|
8949
8949
|
let skipped = 0;
|
|
8950
8950
|
const existingETags = await getExistingETags();
|
|
8951
8951
|
for (const file of files) {
|
|
8952
|
-
const key =
|
|
8952
|
+
const key = relative3(sourceDir, file);
|
|
8953
8953
|
const contentType = getContentType(file);
|
|
8954
8954
|
const fileCacheControl = file.endsWith(".html") ? "max-age=3600, public" : cacheControl;
|
|
8955
8955
|
try {
|
|
@@ -12732,11 +12732,11 @@ import { readFileSync as readFileSync22, existsSync as existsSync32 } from "node
|
|
|
12732
12732
|
import { homedir as homedir2 } from "node:os";
|
|
12733
12733
|
import { join as join32 } from "node:path";
|
|
12734
12734
|
import { createHash as createHash2 } from "node:crypto";
|
|
12735
|
-
import
|
|
12736
|
-
import
|
|
12735
|
+
import { existsSync as existsSync42, mkdirSync as mkdirSync2, readFileSync as readFileSync3, readdirSync as readdirSync32, unlinkSync, writeFileSync as writeFileSync22 } from "node:fs";
|
|
12736
|
+
import { join as join4 } from "node:path";
|
|
12737
12737
|
import { createHash as createHash3 } from "node:crypto";
|
|
12738
|
-
import
|
|
12739
|
-
import
|
|
12738
|
+
import { createReadStream as createReadStream2, readdirSync as readdirSync4, statSync as statSync22 } from "node:fs";
|
|
12739
|
+
import { join as join5, relative as relative2 } from "node:path";
|
|
12740
12740
|
var __defProp3 = Object.defineProperty;
|
|
12741
12741
|
var __returnValue3 = (v) => v;
|
|
12742
12742
|
function __exportSetter3(name, newValue) {
|
|
@@ -12865,7 +12865,7 @@ function signRequest(options) {
|
|
|
12865
12865
|
cache: options.cache
|
|
12866
12866
|
});
|
|
12867
12867
|
}
|
|
12868
|
-
const
|
|
12868
|
+
const path = urlObj.pathname || "/";
|
|
12869
12869
|
const query = canonicalQueryString(urlObj.searchParams);
|
|
12870
12870
|
const headers = {
|
|
12871
12871
|
host,
|
|
@@ -12887,7 +12887,7 @@ function signRequest(options) {
|
|
|
12887
12887
|
const payloadHash = headers["x-amz-content-sha256"] || hash(body);
|
|
12888
12888
|
const canonicalRequest = [
|
|
12889
12889
|
method,
|
|
12890
|
-
encodePath(
|
|
12890
|
+
encodePath(path),
|
|
12891
12891
|
query,
|
|
12892
12892
|
canonicalHeaders,
|
|
12893
12893
|
signedHeaders,
|
|
@@ -12962,7 +12962,7 @@ async function signRequestAsync(options) {
|
|
|
12962
12962
|
cache: options.cache
|
|
12963
12963
|
});
|
|
12964
12964
|
}
|
|
12965
|
-
const
|
|
12965
|
+
const path = urlObj.pathname || "/";
|
|
12966
12966
|
const query = canonicalQueryString(urlObj.searchParams);
|
|
12967
12967
|
const headers = {
|
|
12968
12968
|
host,
|
|
@@ -12985,7 +12985,7 @@ async function signRequestAsync(options) {
|
|
|
12985
12985
|
const payloadHash = headers["x-amz-content-sha256"] || bodyHash;
|
|
12986
12986
|
const canonicalRequest = [
|
|
12987
12987
|
method,
|
|
12988
|
-
encodePath(
|
|
12988
|
+
encodePath(path),
|
|
12989
12989
|
query,
|
|
12990
12990
|
canonicalHeaders,
|
|
12991
12991
|
signedHeaders,
|
|
@@ -13046,13 +13046,13 @@ function signWithQueryString(params) {
|
|
|
13046
13046
|
if (sessionToken) {
|
|
13047
13047
|
signedUrl.searchParams.set("X-Amz-Security-Token", sessionToken);
|
|
13048
13048
|
}
|
|
13049
|
-
const
|
|
13049
|
+
const path = encodePath(signedUrl.pathname || "/");
|
|
13050
13050
|
const canonicalHeaders = `host:${signedUrl.hostname}
|
|
13051
13051
|
`;
|
|
13052
13052
|
const query = canonicalQueryString(signedUrl.searchParams);
|
|
13053
13053
|
const canonicalRequest = [
|
|
13054
13054
|
method,
|
|
13055
|
-
|
|
13055
|
+
path,
|
|
13056
13056
|
query,
|
|
13057
13057
|
canonicalHeaders,
|
|
13058
13058
|
signedHeaders,
|
|
@@ -13107,13 +13107,13 @@ async function signWithQueryStringAsync(params) {
|
|
|
13107
13107
|
if (sessionToken) {
|
|
13108
13108
|
signedUrl.searchParams.set("X-Amz-Security-Token", sessionToken);
|
|
13109
13109
|
}
|
|
13110
|
-
const
|
|
13110
|
+
const path = encodePath(signedUrl.pathname || "/");
|
|
13111
13111
|
const canonicalHeaders = `host:${signedUrl.hostname}
|
|
13112
13112
|
`;
|
|
13113
13113
|
const query = canonicalQueryString(signedUrl.searchParams);
|
|
13114
13114
|
const canonicalRequest = [
|
|
13115
13115
|
method,
|
|
13116
|
-
|
|
13116
|
+
path,
|
|
13117
13117
|
query,
|
|
13118
13118
|
canonicalHeaders,
|
|
13119
13119
|
signedHeaders,
|
|
@@ -13197,8 +13197,8 @@ function canonicalQueryString(params) {
|
|
|
13197
13197
|
});
|
|
13198
13198
|
return sorted.map(([k, v]) => `${k}=${v}`).join("&");
|
|
13199
13199
|
}
|
|
13200
|
-
function encodePath(
|
|
13201
|
-
return
|
|
13200
|
+
function encodePath(path) {
|
|
13201
|
+
return path.split("/").map((segment) => encodeRfc3986(segment)).join("/");
|
|
13202
13202
|
}
|
|
13203
13203
|
function encodeRfc3986(str) {
|
|
13204
13204
|
return encodeURIComponent(str).replace(/[!'()*]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);
|
|
@@ -14131,11 +14131,11 @@ function analyzeStackDiff(oldTemplate, newTemplate) {
|
|
|
14131
14131
|
}
|
|
14132
14132
|
};
|
|
14133
14133
|
}
|
|
14134
|
-
function compareProperties(oldProps, newProps,
|
|
14134
|
+
function compareProperties(oldProps, newProps, path = "") {
|
|
14135
14135
|
const changes = [];
|
|
14136
14136
|
const allKeys = new Set([...Object.keys(oldProps), ...Object.keys(newProps)]);
|
|
14137
14137
|
for (const key of allKeys) {
|
|
14138
|
-
const currentPath =
|
|
14138
|
+
const currentPath = path ? `${path}.${key}` : key;
|
|
14139
14139
|
const oldValue = oldProps[key];
|
|
14140
14140
|
const newValue = newProps[key];
|
|
14141
14141
|
if (oldValue === undefined && newValue !== undefined) {
|
|
@@ -16647,8 +16647,8 @@ class Security {
|
|
|
16647
16647
|
if (!webAcl.Properties.Rules) {
|
|
16648
16648
|
webAcl.Properties.Rules = [];
|
|
16649
16649
|
}
|
|
16650
|
-
const pathConditions = rule.paths.map((
|
|
16651
|
-
SearchString:
|
|
16650
|
+
const pathConditions = rule.paths.map((path) => ({
|
|
16651
|
+
SearchString: path,
|
|
16652
16652
|
FieldToMatch: {
|
|
16653
16653
|
UriPath: {}
|
|
16654
16654
|
},
|
|
@@ -18221,7 +18221,7 @@ echo "Database tools installed!"
|
|
|
18221
18221
|
static LoadBalancerConfig = {
|
|
18222
18222
|
healthCheck: (options) => {
|
|
18223
18223
|
const {
|
|
18224
|
-
path
|
|
18224
|
+
path = "/",
|
|
18225
18225
|
interval = 30,
|
|
18226
18226
|
timeout = 5,
|
|
18227
18227
|
healthyThreshold = 2,
|
|
@@ -18235,7 +18235,7 @@ echo "Database tools installed!"
|
|
|
18235
18235
|
UnhealthyThresholdCount: unhealthyThreshold
|
|
18236
18236
|
};
|
|
18237
18237
|
if (protocol !== "TCP") {
|
|
18238
|
-
config4.HealthCheckPath =
|
|
18238
|
+
config4.HealthCheckPath = path;
|
|
18239
18239
|
config4.HealthCheckProtocol = protocol;
|
|
18240
18240
|
}
|
|
18241
18241
|
return config4;
|
|
@@ -19410,7 +19410,7 @@ class FileSystem {
|
|
|
19410
19410
|
const {
|
|
19411
19411
|
slug,
|
|
19412
19412
|
environment,
|
|
19413
|
-
path
|
|
19413
|
+
path = "/",
|
|
19414
19414
|
uid = "1000",
|
|
19415
19415
|
gid = "1000",
|
|
19416
19416
|
permissions = "755"
|
|
@@ -19420,7 +19420,7 @@ class FileSystem {
|
|
|
19420
19420
|
environment,
|
|
19421
19421
|
resourceType: "efs-ap"
|
|
19422
19422
|
});
|
|
19423
|
-
const logicalId = generateLogicalId(`${resourceName}-${
|
|
19423
|
+
const logicalId = generateLogicalId(`${resourceName}-${path.replace(/\//g, "-")}`);
|
|
19424
19424
|
const accessPoint = {
|
|
19425
19425
|
Type: "AWS::EFS::AccessPoint",
|
|
19426
19426
|
Properties: {
|
|
@@ -19430,7 +19430,7 @@ class FileSystem {
|
|
|
19430
19430
|
Gid: gid
|
|
19431
19431
|
},
|
|
19432
19432
|
RootDirectory: {
|
|
19433
|
-
Path:
|
|
19433
|
+
Path: path,
|
|
19434
19434
|
CreationInfo: {
|
|
19435
19435
|
OwnerUid: uid,
|
|
19436
19436
|
OwnerGid: gid,
|
|
@@ -19438,7 +19438,7 @@ class FileSystem {
|
|
|
19438
19438
|
}
|
|
19439
19439
|
},
|
|
19440
19440
|
AccessPointTags: [
|
|
19441
|
-
{ Key: "Name", Value: `${resourceName}-${
|
|
19441
|
+
{ Key: "Name", Value: `${resourceName}-${path}` },
|
|
19442
19442
|
{ Key: "Environment", Value: environment }
|
|
19443
19443
|
]
|
|
19444
19444
|
}
|
|
@@ -22134,16 +22134,16 @@ class JobLoader {
|
|
|
22134
22134
|
const fullPath = `${projectRoot}/${jobsPath}`;
|
|
22135
22135
|
const jobs = [];
|
|
22136
22136
|
try {
|
|
22137
|
-
const
|
|
22138
|
-
const
|
|
22139
|
-
if (!
|
|
22137
|
+
const fs = await import("node:fs");
|
|
22138
|
+
const path = await import("node:path");
|
|
22139
|
+
if (!fs.existsSync(fullPath)) {
|
|
22140
22140
|
return [];
|
|
22141
22141
|
}
|
|
22142
|
-
const files =
|
|
22142
|
+
const files = fs.readdirSync(fullPath).filter((f) => f.endsWith(".ts") && !f.startsWith("_") && f !== "runner.ts");
|
|
22143
22143
|
for (const file of files) {
|
|
22144
|
-
const filePath =
|
|
22144
|
+
const filePath = path.join(fullPath, file);
|
|
22145
22145
|
const jobName = file.replace(".ts", "");
|
|
22146
|
-
const content =
|
|
22146
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
22147
22147
|
const metadata = JobLoader.parseJobMetadata(content, jobName, filePath);
|
|
22148
22148
|
if (metadata) {
|
|
22149
22149
|
jobs.push(metadata);
|
|
@@ -22154,7 +22154,7 @@ class JobLoader {
|
|
|
22154
22154
|
}
|
|
22155
22155
|
return jobs;
|
|
22156
22156
|
}
|
|
22157
|
-
static parseJobMetadata(content, name,
|
|
22157
|
+
static parseJobMetadata(content, name, path) {
|
|
22158
22158
|
const scheduleMatch = content.match(/export\s+const\s+schedule\s*=\s*['"`]([^'"`]+)['"`]/) || content.match(/schedule:\s*['"`]([^'"`]+)['"`]/);
|
|
22159
22159
|
const enabledMatch = content.match(/export\s+const\s+enabled\s*=\s*(true|false)/) || content.match(/enabled:\s*(true|false)/);
|
|
22160
22160
|
const retriesMatch = content.match(/export\s+const\s+retries\s*=\s*(\d+)/) || content.match(/retries:\s*(\d+)/);
|
|
@@ -22167,7 +22167,7 @@ class JobLoader {
|
|
|
22167
22167
|
}
|
|
22168
22168
|
return {
|
|
22169
22169
|
name,
|
|
22170
|
-
path
|
|
22170
|
+
path,
|
|
22171
22171
|
schedule: scheduleMatch?.[1],
|
|
22172
22172
|
handler: `${name}.handle`,
|
|
22173
22173
|
enabled: enabledMatch?.[1] !== "false",
|
|
@@ -22182,16 +22182,16 @@ class JobLoader {
|
|
|
22182
22182
|
const fullPath = `${projectRoot}/${actionsPath}`;
|
|
22183
22183
|
const actions = [];
|
|
22184
22184
|
try {
|
|
22185
|
-
const
|
|
22186
|
-
const
|
|
22187
|
-
if (!
|
|
22185
|
+
const fs = await import("node:fs");
|
|
22186
|
+
const path = await import("node:path");
|
|
22187
|
+
if (!fs.existsSync(fullPath)) {
|
|
22188
22188
|
return [];
|
|
22189
22189
|
}
|
|
22190
|
-
const files =
|
|
22190
|
+
const files = fs.readdirSync(fullPath).filter((f) => f.endsWith(".ts") && !f.startsWith("_"));
|
|
22191
22191
|
for (const file of files) {
|
|
22192
|
-
const filePath =
|
|
22192
|
+
const filePath = path.join(fullPath, file);
|
|
22193
22193
|
const actionName = file.replace(".ts", "");
|
|
22194
|
-
const content =
|
|
22194
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
22195
22195
|
const metadata = JobLoader.parseActionMetadata(content, actionName, filePath);
|
|
22196
22196
|
if (metadata) {
|
|
22197
22197
|
actions.push(metadata);
|
|
@@ -22202,7 +22202,7 @@ class JobLoader {
|
|
|
22202
22202
|
}
|
|
22203
22203
|
return actions;
|
|
22204
22204
|
}
|
|
22205
|
-
static parseActionMetadata(content, name,
|
|
22205
|
+
static parseActionMetadata(content, name, path) {
|
|
22206
22206
|
const hasHandle = content.includes("export async function handle") || content.includes("export function handle") || content.includes("export default");
|
|
22207
22207
|
if (!hasHandle) {
|
|
22208
22208
|
return null;
|
|
@@ -22210,7 +22210,7 @@ class JobLoader {
|
|
|
22210
22210
|
const descriptionMatch = content.match(/export\s+const\s+description\s*=\s*['"`]([^'"`]+)['"`]/) || content.match(/description:\s*['"`]([^'"`]+)['"`]/);
|
|
22211
22211
|
return {
|
|
22212
22212
|
name,
|
|
22213
|
-
path
|
|
22213
|
+
path,
|
|
22214
22214
|
handler: `${name}.handle`,
|
|
22215
22215
|
description: descriptionMatch?.[1]
|
|
22216
22216
|
};
|
|
@@ -27807,22 +27807,22 @@ class AssetHasher {
|
|
|
27807
27807
|
};
|
|
27808
27808
|
const oldPaths = new Set(Object.keys(oldManifest.hashMap));
|
|
27809
27809
|
const newPaths = new Set(Object.keys(newManifest.hashMap));
|
|
27810
|
-
for (const
|
|
27811
|
-
if (!oldPaths.has(
|
|
27812
|
-
result.added.push(
|
|
27810
|
+
for (const path of newPaths) {
|
|
27811
|
+
if (!oldPaths.has(path)) {
|
|
27812
|
+
result.added.push(path);
|
|
27813
27813
|
}
|
|
27814
27814
|
}
|
|
27815
|
-
for (const
|
|
27816
|
-
if (!newPaths.has(
|
|
27817
|
-
result.removed.push(
|
|
27815
|
+
for (const path of oldPaths) {
|
|
27816
|
+
if (!newPaths.has(path)) {
|
|
27817
|
+
result.removed.push(path);
|
|
27818
27818
|
}
|
|
27819
27819
|
}
|
|
27820
|
-
for (const
|
|
27821
|
-
if (oldPaths.has(
|
|
27822
|
-
if (oldManifest.hashMap[
|
|
27823
|
-
result.changed.push(
|
|
27820
|
+
for (const path of newPaths) {
|
|
27821
|
+
if (oldPaths.has(path)) {
|
|
27822
|
+
if (oldManifest.hashMap[path] !== newManifest.hashMap[path]) {
|
|
27823
|
+
result.changed.push(path);
|
|
27824
27824
|
} else {
|
|
27825
|
-
result.unchanged.push(
|
|
27825
|
+
result.unchanged.push(path);
|
|
27826
27826
|
}
|
|
27827
27827
|
}
|
|
27828
27828
|
}
|
|
@@ -28670,19 +28670,19 @@ ${redirectMap}
|
|
|
28670
28670
|
protocol,
|
|
28671
28671
|
preservePath: true
|
|
28672
28672
|
}),
|
|
28673
|
-
httpToHttps: (
|
|
28674
|
-
source:
|
|
28675
|
-
target:
|
|
28673
|
+
httpToHttps: (path = "/") => ({
|
|
28674
|
+
source: path,
|
|
28675
|
+
target: path,
|
|
28676
28676
|
statusCode: 301
|
|
28677
28677
|
}),
|
|
28678
|
-
addTrailingSlash: (paths) => paths.map((
|
|
28679
|
-
source:
|
|
28680
|
-
target:
|
|
28678
|
+
addTrailingSlash: (paths) => paths.map((path) => ({
|
|
28679
|
+
source: path.endsWith("/") ? path.slice(0, -1) : path,
|
|
28680
|
+
target: path.endsWith("/") ? path : `${path}/`,
|
|
28681
28681
|
statusCode: 301
|
|
28682
28682
|
})),
|
|
28683
|
-
removeTrailingSlash: (paths) => paths.map((
|
|
28684
|
-
source:
|
|
28685
|
-
target:
|
|
28683
|
+
removeTrailingSlash: (paths) => paths.map((path) => ({
|
|
28684
|
+
source: path.endsWith("/") && path !== "/" ? path : `${path}/`,
|
|
28685
|
+
target: path.endsWith("/") && path !== "/" ? path.slice(0, -1) : path,
|
|
28686
28686
|
statusCode: 301
|
|
28687
28687
|
}))
|
|
28688
28688
|
};
|
|
@@ -28716,8 +28716,8 @@ ${redirectMap}
|
|
|
28716
28716
|
statusCode: 307,
|
|
28717
28717
|
preserveQueryString: true
|
|
28718
28718
|
})),
|
|
28719
|
-
gonePages: (paths) => paths.map((
|
|
28720
|
-
source:
|
|
28719
|
+
gonePages: (paths) => paths.map((path) => ({
|
|
28720
|
+
source: path,
|
|
28721
28721
|
target: "/410",
|
|
28722
28722
|
statusCode: 301
|
|
28723
28723
|
}))
|
|
@@ -31486,10 +31486,10 @@ function addCDNResources(builder, config4) {
|
|
|
31486
31486
|
};
|
|
31487
31487
|
}
|
|
31488
31488
|
if (config4.errorPages) {
|
|
31489
|
-
distributionConfig.CustomErrorResponses = Object.entries(config4.errorPages).map(([code,
|
|
31489
|
+
distributionConfig.CustomErrorResponses = Object.entries(config4.errorPages).map(([code, path]) => ({
|
|
31490
31490
|
ErrorCode: Number.parseInt(code),
|
|
31491
31491
|
ResponseCode: 200,
|
|
31492
|
-
ResponsePagePath:
|
|
31492
|
+
ResponsePagePath: path,
|
|
31493
31493
|
ErrorCachingMinTTL: 300
|
|
31494
31494
|
}));
|
|
31495
31495
|
}
|
|
@@ -35993,29 +35993,29 @@ class FileCache {
|
|
|
35993
35993
|
constructor(cacheDir, options = {}) {
|
|
35994
35994
|
this.cacheDir = cacheDir;
|
|
35995
35995
|
this.ttl = options.ttl || 86400000;
|
|
35996
|
-
if (!
|
|
35997
|
-
|
|
35996
|
+
if (!existsSync42(cacheDir)) {
|
|
35997
|
+
mkdirSync2(cacheDir, { recursive: true });
|
|
35998
35998
|
}
|
|
35999
35999
|
}
|
|
36000
36000
|
getCachePath(key) {
|
|
36001
36001
|
const hash2 = createHash2("sha256").update(key).digest("hex");
|
|
36002
|
-
return
|
|
36002
|
+
return join4(this.cacheDir, `${hash2}.json`);
|
|
36003
36003
|
}
|
|
36004
36004
|
get(key) {
|
|
36005
36005
|
const cachePath = this.getCachePath(key);
|
|
36006
|
-
if (!
|
|
36006
|
+
if (!existsSync42(cachePath)) {
|
|
36007
36007
|
return;
|
|
36008
36008
|
}
|
|
36009
36009
|
try {
|
|
36010
|
-
const data =
|
|
36010
|
+
const data = readFileSync3(cachePath, "utf-8");
|
|
36011
36011
|
const entry = JSON.parse(data);
|
|
36012
36012
|
if (Date.now() - entry.timestamp > this.ttl) {
|
|
36013
|
-
|
|
36013
|
+
unlinkSync(cachePath);
|
|
36014
36014
|
return;
|
|
36015
36015
|
}
|
|
36016
36016
|
return entry.value;
|
|
36017
36017
|
} catch {
|
|
36018
|
-
|
|
36018
|
+
unlinkSync(cachePath);
|
|
36019
36019
|
return;
|
|
36020
36020
|
}
|
|
36021
36021
|
}
|
|
@@ -36026,30 +36026,30 @@ class FileCache {
|
|
|
36026
36026
|
timestamp: Date.now(),
|
|
36027
36027
|
hash: hash2
|
|
36028
36028
|
};
|
|
36029
|
-
|
|
36029
|
+
writeFileSync22(cachePath, JSON.stringify(entry), "utf-8");
|
|
36030
36030
|
}
|
|
36031
36031
|
has(key) {
|
|
36032
36032
|
return this.get(key) !== undefined;
|
|
36033
36033
|
}
|
|
36034
36034
|
clear() {
|
|
36035
|
-
const files =
|
|
36035
|
+
const files = readdirSync32(this.cacheDir);
|
|
36036
36036
|
for (const file of files) {
|
|
36037
|
-
|
|
36037
|
+
unlinkSync(join4(this.cacheDir, file));
|
|
36038
36038
|
}
|
|
36039
36039
|
}
|
|
36040
36040
|
prune() {
|
|
36041
|
-
const files =
|
|
36041
|
+
const files = readdirSync32(this.cacheDir);
|
|
36042
36042
|
const now = Date.now();
|
|
36043
36043
|
for (const file of files) {
|
|
36044
|
-
const filePath =
|
|
36044
|
+
const filePath = join4(this.cacheDir, file);
|
|
36045
36045
|
try {
|
|
36046
|
-
const data =
|
|
36046
|
+
const data = readFileSync3(filePath, "utf-8");
|
|
36047
36047
|
const entry = JSON.parse(data);
|
|
36048
36048
|
if (now - entry.timestamp > this.ttl) {
|
|
36049
|
-
|
|
36049
|
+
unlinkSync(filePath);
|
|
36050
36050
|
}
|
|
36051
36051
|
} catch {
|
|
36052
|
-
|
|
36052
|
+
unlinkSync(filePath);
|
|
36053
36053
|
}
|
|
36054
36054
|
}
|
|
36055
36055
|
}
|
|
@@ -36094,7 +36094,7 @@ async function hashFile(filePath, options = {}) {
|
|
|
36094
36094
|
const chunkSize = options.chunkSize || 65536;
|
|
36095
36095
|
return new Promise((resolve4, reject) => {
|
|
36096
36096
|
const hash2 = createHash3(algorithm);
|
|
36097
|
-
const stream =
|
|
36097
|
+
const stream = createReadStream2(filePath, { highWaterMark: chunkSize });
|
|
36098
36098
|
stream.on("data", (chunk) => hash2.update(chunk));
|
|
36099
36099
|
stream.on("end", () => resolve4(hash2.digest("hex")));
|
|
36100
36100
|
stream.on("error", reject);
|
|
@@ -36116,17 +36116,17 @@ async function hashDirectory(dirPath, options = {}) {
|
|
|
36116
36116
|
];
|
|
36117
36117
|
const files = [];
|
|
36118
36118
|
async function walk(dir) {
|
|
36119
|
-
const entries =
|
|
36119
|
+
const entries = readdirSync4(dir, { withFileTypes: true });
|
|
36120
36120
|
for (const entry of entries) {
|
|
36121
|
-
const fullPath =
|
|
36122
|
-
const relativePath =
|
|
36121
|
+
const fullPath = join5(dir, entry.name);
|
|
36122
|
+
const relativePath = relative2(dirPath, fullPath);
|
|
36123
36123
|
if (ignorePatterns.some((pattern) => relativePath.includes(pattern))) {
|
|
36124
36124
|
continue;
|
|
36125
36125
|
}
|
|
36126
36126
|
if (entry.isDirectory()) {
|
|
36127
36127
|
await walk(fullPath);
|
|
36128
36128
|
} else if (entry.isFile()) {
|
|
36129
|
-
const stats =
|
|
36129
|
+
const stats = statSync22(fullPath);
|
|
36130
36130
|
const hash2 = await hashFile(fullPath, options);
|
|
36131
36131
|
files.push({
|
|
36132
36132
|
path: relativePath,
|
|
@@ -36147,7 +36147,7 @@ function hashManifest(fileHashes) {
|
|
|
36147
36147
|
return hashString(content);
|
|
36148
36148
|
}
|
|
36149
36149
|
function quickHash(filePath) {
|
|
36150
|
-
const stats =
|
|
36150
|
+
const stats = statSync22(filePath);
|
|
36151
36151
|
return hashString(`${filePath}:${stats.size}:${stats.mtimeMs}`);
|
|
36152
36152
|
}
|
|
36153
36153
|
function findChangedFiles(oldHashes, newHashes) {
|
|
@@ -36156,16 +36156,16 @@ function findChangedFiles(oldHashes, newHashes) {
|
|
|
36156
36156
|
const added = [];
|
|
36157
36157
|
const modified = [];
|
|
36158
36158
|
const deleted = [];
|
|
36159
|
-
for (const [
|
|
36160
|
-
const oldFile = oldMap.get(
|
|
36159
|
+
for (const [path, newFile] of newMap) {
|
|
36160
|
+
const oldFile = oldMap.get(path);
|
|
36161
36161
|
if (!oldFile) {
|
|
36162
36162
|
added.push(newFile);
|
|
36163
36163
|
} else if (oldFile.hash !== newFile.hash) {
|
|
36164
36164
|
modified.push(newFile);
|
|
36165
36165
|
}
|
|
36166
36166
|
}
|
|
36167
|
-
for (const [
|
|
36168
|
-
if (!newMap.has(
|
|
36167
|
+
for (const [path, oldFile] of oldMap) {
|
|
36168
|
+
if (!newMap.has(path)) {
|
|
36169
36169
|
deleted.push(oldFile);
|
|
36170
36170
|
}
|
|
36171
36171
|
}
|
|
@@ -36178,7 +36178,7 @@ class HashCache {
|
|
|
36178
36178
|
this.cache = new Map;
|
|
36179
36179
|
}
|
|
36180
36180
|
get(filePath) {
|
|
36181
|
-
const stats =
|
|
36181
|
+
const stats = statSync22(filePath);
|
|
36182
36182
|
const cached = this.cache.get(filePath);
|
|
36183
36183
|
if (cached && cached.mtime === stats.mtimeMs && cached.size === stats.size) {
|
|
36184
36184
|
return cached.hash;
|
|
@@ -36186,7 +36186,7 @@ class HashCache {
|
|
|
36186
36186
|
return;
|
|
36187
36187
|
}
|
|
36188
36188
|
set(filePath, hash2) {
|
|
36189
|
-
const stats =
|
|
36189
|
+
const stats = statSync22(filePath);
|
|
36190
36190
|
this.cache.set(filePath, {
|
|
36191
36191
|
hash: hash2,
|
|
36192
36192
|
mtime: stats.mtimeMs,
|
|
@@ -38851,8 +38851,8 @@ class REPL {
|
|
|
38851
38851
|
if (!this.options.historyFile)
|
|
38852
38852
|
return;
|
|
38853
38853
|
try {
|
|
38854
|
-
const
|
|
38855
|
-
const data = await
|
|
38854
|
+
const fs = await import("node:fs/promises");
|
|
38855
|
+
const data = await fs.readFile(this.options.historyFile, "utf-8");
|
|
38856
38856
|
this.history.commands = data.split(`
|
|
38857
38857
|
`).filter((line) => line.trim());
|
|
38858
38858
|
this.historyIndex = this.history.commands.length;
|
|
@@ -38862,8 +38862,8 @@ class REPL {
|
|
|
38862
38862
|
if (!this.options.historyFile)
|
|
38863
38863
|
return;
|
|
38864
38864
|
try {
|
|
38865
|
-
const
|
|
38866
|
-
await
|
|
38865
|
+
const fs = await import("node:fs/promises");
|
|
38866
|
+
await fs.writeFile(this.options.historyFile, this.history.commands.join(`
|
|
38867
38867
|
`));
|
|
38868
38868
|
} catch (error) {
|
|
38869
38869
|
console.error(`Failed to save history: ${error}`);
|
|
@@ -38899,8 +38899,8 @@ class REPLContext {
|
|
|
38899
38899
|
clear() {
|
|
38900
38900
|
this.variables.clear();
|
|
38901
38901
|
}
|
|
38902
|
-
setWorkingDirectory(
|
|
38903
|
-
this.workingDirectory =
|
|
38902
|
+
setWorkingDirectory(path) {
|
|
38903
|
+
this.workingDirectory = path;
|
|
38904
38904
|
}
|
|
38905
38905
|
getWorkingDirectory() {
|
|
38906
38906
|
return this.workingDirectory;
|
|
@@ -39017,9 +39017,9 @@ class CommandHistory {
|
|
|
39017
39017
|
if (!this.persistFile)
|
|
39018
39018
|
return;
|
|
39019
39019
|
try {
|
|
39020
|
-
const
|
|
39020
|
+
const fs = await import("node:fs/promises");
|
|
39021
39021
|
const data = JSON.stringify(this.entries, null, 2);
|
|
39022
|
-
await
|
|
39022
|
+
await fs.writeFile(this.persistFile, data, "utf-8");
|
|
39023
39023
|
} catch (error) {
|
|
39024
39024
|
throw new Error(`Failed to save history: ${error}`);
|
|
39025
39025
|
}
|
|
@@ -39028,8 +39028,8 @@ class CommandHistory {
|
|
|
39028
39028
|
if (!this.persistFile)
|
|
39029
39029
|
return;
|
|
39030
39030
|
try {
|
|
39031
|
-
const
|
|
39032
|
-
const data = await
|
|
39031
|
+
const fs = await import("node:fs/promises");
|
|
39032
|
+
const data = await fs.readFile(this.persistFile, "utf-8");
|
|
39033
39033
|
const parsed = JSON.parse(data);
|
|
39034
39034
|
this.entries = parsed.map((entry) => ({
|
|
39035
39035
|
...entry,
|
|
@@ -42442,14 +42442,14 @@ class CloudTrailManager {
|
|
|
42442
42442
|
if (trail.advancedEventSelectors) {
|
|
42443
42443
|
cf.Properties.AdvancedEventSelectors = trail.advancedEventSelectors.map((selector) => ({
|
|
42444
42444
|
Name: selector.name,
|
|
42445
|
-
FieldSelectors: selector.fieldSelectors.map((
|
|
42446
|
-
Field:
|
|
42447
|
-
...
|
|
42448
|
-
...
|
|
42449
|
-
...
|
|
42450
|
-
...
|
|
42451
|
-
...
|
|
42452
|
-
...
|
|
42445
|
+
FieldSelectors: selector.fieldSelectors.map((fs) => ({
|
|
42446
|
+
Field: fs.field,
|
|
42447
|
+
...fs.equals && { Equals: fs.equals },
|
|
42448
|
+
...fs.startsWith && { StartsWith: fs.startsWith },
|
|
42449
|
+
...fs.endsWith && { EndsWith: fs.endsWith },
|
|
42450
|
+
...fs.notEquals && { NotEquals: fs.notEquals },
|
|
42451
|
+
...fs.notStartsWith && { NotStartsWith: fs.notStartsWith },
|
|
42452
|
+
...fs.notEndsWith && { NotEndsWith: fs.notEndsWith }
|
|
42453
42453
|
}))
|
|
42454
42454
|
}));
|
|
42455
42455
|
}
|
|
@@ -51962,8 +51962,8 @@ The {{appName}} Team`,
|
|
|
51962
51962
|
});
|
|
51963
51963
|
return result;
|
|
51964
51964
|
}
|
|
51965
|
-
static getNestedValue(obj,
|
|
51966
|
-
return
|
|
51965
|
+
static getNestedValue(obj, path) {
|
|
51966
|
+
return path.split(".").reduce((current, key) => current?.[key], obj);
|
|
51967
51967
|
}
|
|
51968
51968
|
static extractVariables(template) {
|
|
51969
51969
|
const variables = new Set;
|
|
@@ -59922,23 +59922,23 @@ function findCircularDependencies(resources) {
|
|
|
59922
59922
|
const visited = new Set;
|
|
59923
59923
|
const recursionStack = new Set;
|
|
59924
59924
|
const cycle = [];
|
|
59925
|
-
function dfs(node,
|
|
59925
|
+
function dfs(node, path) {
|
|
59926
59926
|
visited.add(node);
|
|
59927
59927
|
recursionStack.add(node);
|
|
59928
|
-
|
|
59928
|
+
path.push(node);
|
|
59929
59929
|
const neighbors = graph[node] || [];
|
|
59930
59930
|
for (const neighbor of neighbors) {
|
|
59931
59931
|
if (!visited.has(neighbor)) {
|
|
59932
|
-
if (dfs(neighbor,
|
|
59932
|
+
if (dfs(neighbor, path)) {
|
|
59933
59933
|
return true;
|
|
59934
59934
|
}
|
|
59935
59935
|
} else if (recursionStack.has(neighbor)) {
|
|
59936
|
-
const cycleStart =
|
|
59937
|
-
cycle.push(...
|
|
59936
|
+
const cycleStart = path.indexOf(neighbor);
|
|
59937
|
+
cycle.push(...path.slice(cycleStart), neighbor);
|
|
59938
59938
|
return true;
|
|
59939
59939
|
}
|
|
59940
59940
|
}
|
|
59941
|
-
|
|
59941
|
+
path.pop();
|
|
59942
59942
|
recursionStack.delete(node);
|
|
59943
59943
|
return false;
|
|
59944
59944
|
}
|
|
@@ -62478,12 +62478,12 @@ class SSMClient {
|
|
|
62478
62478
|
});
|
|
62479
62479
|
return result.Parameter?.Value;
|
|
62480
62480
|
}
|
|
62481
|
-
async getAllByPath(
|
|
62481
|
+
async getAllByPath(path, recursive = true) {
|
|
62482
62482
|
const allParams = [];
|
|
62483
62483
|
let nextToken;
|
|
62484
62484
|
do {
|
|
62485
62485
|
const result = await this.getParametersByPath({
|
|
62486
|
-
Path:
|
|
62486
|
+
Path: path,
|
|
62487
62487
|
Recursive: recursive,
|
|
62488
62488
|
WithDecryption: true,
|
|
62489
62489
|
NextToken: nextToken
|
|
@@ -63238,7 +63238,7 @@ class SESClient {
|
|
|
63238
63238
|
});
|
|
63239
63239
|
}
|
|
63240
63240
|
async listEmailIdentities(params) {
|
|
63241
|
-
let
|
|
63241
|
+
let path = "/v2/email/identities";
|
|
63242
63242
|
const queryParams = [];
|
|
63243
63243
|
if (params?.PageSize) {
|
|
63244
63244
|
queryParams.push(`PageSize=${params.PageSize}`);
|
|
@@ -63247,13 +63247,13 @@ class SESClient {
|
|
|
63247
63247
|
queryParams.push(`NextToken=${encodeURIComponent(params.NextToken)}`);
|
|
63248
63248
|
}
|
|
63249
63249
|
if (queryParams.length > 0) {
|
|
63250
|
-
|
|
63250
|
+
path += `?${queryParams.join("&")}`;
|
|
63251
63251
|
}
|
|
63252
63252
|
const result = await this.client.request({
|
|
63253
63253
|
service: "email",
|
|
63254
63254
|
region: this.region,
|
|
63255
63255
|
method: "GET",
|
|
63256
|
-
path
|
|
63256
|
+
path,
|
|
63257
63257
|
headers: {
|
|
63258
63258
|
"Content-Type": "application/json"
|
|
63259
63259
|
}
|
|
@@ -63352,7 +63352,7 @@ class SESClient {
|
|
|
63352
63352
|
});
|
|
63353
63353
|
}
|
|
63354
63354
|
async listEmailTemplates(params) {
|
|
63355
|
-
let
|
|
63355
|
+
let path = "/v2/email/templates";
|
|
63356
63356
|
const queryParams = [];
|
|
63357
63357
|
if (params?.PageSize) {
|
|
63358
63358
|
queryParams.push(`PageSize=${params.PageSize}`);
|
|
@@ -63361,13 +63361,13 @@ class SESClient {
|
|
|
63361
63361
|
queryParams.push(`NextToken=${encodeURIComponent(params.NextToken)}`);
|
|
63362
63362
|
}
|
|
63363
63363
|
if (queryParams.length > 0) {
|
|
63364
|
-
|
|
63364
|
+
path += `?${queryParams.join("&")}`;
|
|
63365
63365
|
}
|
|
63366
63366
|
const result = await this.client.request({
|
|
63367
63367
|
service: "email",
|
|
63368
63368
|
region: this.region,
|
|
63369
63369
|
method: "GET",
|
|
63370
|
-
path
|
|
63370
|
+
path,
|
|
63371
63371
|
headers: {
|
|
63372
63372
|
"Content-Type": "application/json"
|
|
63373
63373
|
}
|
|
@@ -68307,7 +68307,7 @@ class BedrockRuntimeClient {
|
|
|
68307
68307
|
}
|
|
68308
68308
|
return { accessKeyId, secretAccessKey, sessionToken };
|
|
68309
68309
|
}
|
|
68310
|
-
signStreamRequest(method,
|
|
68310
|
+
signStreamRequest(method, path, headers, body, credentials) {
|
|
68311
68311
|
const crypto4 = __require("node:crypto");
|
|
68312
68312
|
const service = "bedrock-runtime";
|
|
68313
68313
|
const region = this.region;
|
|
@@ -68332,7 +68332,7 @@ class BedrockRuntimeClient {
|
|
|
68332
68332
|
const signedHeaders = sortedHeaderKeys.map((key) => key.toLowerCase()).join(";");
|
|
68333
68333
|
const canonicalRequest = [
|
|
68334
68334
|
method,
|
|
68335
|
-
|
|
68335
|
+
path,
|
|
68336
68336
|
"",
|
|
68337
68337
|
canonicalHeaders,
|
|
68338
68338
|
signedHeaders,
|
|
@@ -68631,15 +68631,15 @@ class BedrockClient {
|
|
|
68631
68631
|
});
|
|
68632
68632
|
}
|
|
68633
68633
|
async getGuardrail(params) {
|
|
68634
|
-
let
|
|
68634
|
+
let path = `/guardrails/${encodeURIComponent(params.guardrailIdentifier)}`;
|
|
68635
68635
|
if (params.guardrailVersion) {
|
|
68636
|
-
|
|
68636
|
+
path += `?guardrailVersion=${encodeURIComponent(params.guardrailVersion)}`;
|
|
68637
68637
|
}
|
|
68638
68638
|
return this.client.request({
|
|
68639
68639
|
service: "bedrock",
|
|
68640
68640
|
region: this.region,
|
|
68641
68641
|
method: "GET",
|
|
68642
|
-
path
|
|
68642
|
+
path
|
|
68643
68643
|
});
|
|
68644
68644
|
}
|
|
68645
68645
|
async listGuardrails(params) {
|
|
@@ -68659,15 +68659,15 @@ class BedrockClient {
|
|
|
68659
68659
|
});
|
|
68660
68660
|
}
|
|
68661
68661
|
async deleteGuardrail(params) {
|
|
68662
|
-
let
|
|
68662
|
+
let path = `/guardrails/${encodeURIComponent(params.guardrailIdentifier)}`;
|
|
68663
68663
|
if (params.guardrailVersion) {
|
|
68664
|
-
|
|
68664
|
+
path += `?guardrailVersion=${encodeURIComponent(params.guardrailVersion)}`;
|
|
68665
68665
|
}
|
|
68666
68666
|
return this.client.request({
|
|
68667
68667
|
service: "bedrock",
|
|
68668
68668
|
region: this.region,
|
|
68669
68669
|
method: "DELETE",
|
|
68670
|
-
path
|
|
68670
|
+
path
|
|
68671
68671
|
});
|
|
68672
68672
|
}
|
|
68673
68673
|
async listModelInvocationJobs(params) {
|
|
@@ -71122,7 +71122,7 @@ class ApplicationAutoScalingClient {
|
|
|
71122
71122
|
init_s3();
|
|
71123
71123
|
import * as net from "node:net";
|
|
71124
71124
|
import * as tls from "node:tls";
|
|
71125
|
-
import
|
|
71125
|
+
import { readFileSync as readFileSync7 } from "node:fs";
|
|
71126
71126
|
import * as crypto4 from "node:crypto";
|
|
71127
71127
|
|
|
71128
71128
|
class ImapServer {
|
|
@@ -71157,8 +71157,8 @@ class ImapServer {
|
|
|
71157
71157
|
});
|
|
71158
71158
|
if (this.config.tls?.key && this.config.tls?.cert) {
|
|
71159
71159
|
const tlsOptions = {
|
|
71160
|
-
key:
|
|
71161
|
-
cert:
|
|
71160
|
+
key: readFileSync7(this.config.tls.key),
|
|
71161
|
+
cert: readFileSync7(this.config.tls.cert)
|
|
71162
71162
|
};
|
|
71163
71163
|
this.tlsServer = tls.createServer(tlsOptions, (socket) => {
|
|
71164
71164
|
this.handleConnection(socket);
|
|
@@ -71962,8 +71962,8 @@ class ImapServer {
|
|
|
71962
71962
|
}
|
|
71963
71963
|
this.send(session, `${tag} OK Begin TLS negotiation`);
|
|
71964
71964
|
const tlsOptions = {
|
|
71965
|
-
key:
|
|
71966
|
-
cert:
|
|
71965
|
+
key: readFileSync7(this.config.tls.key),
|
|
71966
|
+
cert: readFileSync7(this.config.tls.cert),
|
|
71967
71967
|
isServer: true
|
|
71968
71968
|
};
|
|
71969
71969
|
const tlsSocket = new tls.TLSSocket(session.socket, tlsOptions);
|
|
@@ -72554,7 +72554,7 @@ ${text}`);
|
|
|
72554
72554
|
// src/aws/smtp-server.ts
|
|
72555
72555
|
import * as net2 from "node:net";
|
|
72556
72556
|
import * as tls2 from "node:tls";
|
|
72557
|
-
import
|
|
72557
|
+
import { readFileSync as readFileSync8 } from "node:fs";
|
|
72558
72558
|
import * as crypto5 from "node:crypto";
|
|
72559
72559
|
init_s3();
|
|
72560
72560
|
|
|
@@ -72586,8 +72586,8 @@ class SmtpServer {
|
|
|
72586
72586
|
});
|
|
72587
72587
|
if (this.config.tls?.key && this.config.tls?.cert) {
|
|
72588
72588
|
const tlsOptions = {
|
|
72589
|
-
key:
|
|
72590
|
-
cert:
|
|
72589
|
+
key: readFileSync8(this.config.tls.key),
|
|
72590
|
+
cert: readFileSync8(this.config.tls.cert)
|
|
72591
72591
|
};
|
|
72592
72592
|
this.tlsServer = tls2.createServer(tlsOptions, (socket) => {
|
|
72593
72593
|
this.handleConnection(socket, true);
|
|
@@ -72721,8 +72721,8 @@ class SmtpServer {
|
|
|
72721
72721
|
}
|
|
72722
72722
|
this.send(session, "220 Ready to start TLS");
|
|
72723
72723
|
const tlsOptions = {
|
|
72724
|
-
key:
|
|
72725
|
-
cert:
|
|
72724
|
+
key: readFileSync8(this.config.tls.key),
|
|
72725
|
+
cert: readFileSync8(this.config.tls.cert),
|
|
72726
72726
|
isServer: true
|
|
72727
72727
|
};
|
|
72728
72728
|
const tlsSocket = new tls2.TLSSocket(session.socket, tlsOptions);
|
|
@@ -74469,31 +74469,31 @@ class EFSClient {
|
|
|
74469
74469
|
if (options?.CreationToken) {
|
|
74470
74470
|
queryParams.push(`CreationToken=${encodeURIComponent(options.CreationToken)}`);
|
|
74471
74471
|
}
|
|
74472
|
-
const
|
|
74472
|
+
const path = `/2015-02-01/file-systems${queryParams.length > 0 ? `?${queryParams.join("&")}` : ""}`;
|
|
74473
74473
|
const result = await this.client.request({
|
|
74474
74474
|
service: "elasticfilesystem",
|
|
74475
74475
|
region: this.region,
|
|
74476
74476
|
method: "GET",
|
|
74477
|
-
path
|
|
74477
|
+
path,
|
|
74478
74478
|
headers: {
|
|
74479
74479
|
"Content-Type": "application/json"
|
|
74480
74480
|
}
|
|
74481
74481
|
});
|
|
74482
74482
|
return {
|
|
74483
|
-
FileSystems: (result.FileSystems || []).map((
|
|
74484
|
-
FileSystemId:
|
|
74485
|
-
Name:
|
|
74486
|
-
CreationTime:
|
|
74487
|
-
LifeCycleState:
|
|
74488
|
-
NumberOfMountTargets:
|
|
74489
|
-
SizeInBytes:
|
|
74490
|
-
Value:
|
|
74491
|
-
Timestamp:
|
|
74483
|
+
FileSystems: (result.FileSystems || []).map((fs) => ({
|
|
74484
|
+
FileSystemId: fs.FileSystemId,
|
|
74485
|
+
Name: fs.Name,
|
|
74486
|
+
CreationTime: fs.CreationTime,
|
|
74487
|
+
LifeCycleState: fs.LifeCycleState,
|
|
74488
|
+
NumberOfMountTargets: fs.NumberOfMountTargets,
|
|
74489
|
+
SizeInBytes: fs.SizeInBytes ? {
|
|
74490
|
+
Value: fs.SizeInBytes.Value,
|
|
74491
|
+
Timestamp: fs.SizeInBytes.Timestamp
|
|
74492
74492
|
} : undefined,
|
|
74493
|
-
PerformanceMode:
|
|
74494
|
-
Encrypted:
|
|
74495
|
-
ThroughputMode:
|
|
74496
|
-
Tags:
|
|
74493
|
+
PerformanceMode: fs.PerformanceMode,
|
|
74494
|
+
Encrypted: fs.Encrypted,
|
|
74495
|
+
ThroughputMode: fs.ThroughputMode,
|
|
74496
|
+
Tags: fs.Tags
|
|
74497
74497
|
}))
|
|
74498
74498
|
};
|
|
74499
74499
|
}
|