@awsless/cli 0.0.46-next.16 → 0.0.46-next.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin.js CHANGED
@@ -56327,7 +56327,7 @@ var require_client2 = __commonJS((exports) => {
56327
56327
  // ../../node_modules/.pnpm/@smithy+core@3.29.7/node_modules/@smithy/core/dist-cjs/submodules/config/index.js
56328
56328
  var require_config = __commonJS((exports) => {
56329
56329
  var { homedir: homedir2 } = __require("os");
56330
- var { sep: sep2, join: join28 } = __require("path");
56330
+ var { sep: sep2, join: join29 } = __require("path");
56331
56331
  var { createHash: createHash16 } = __require("crypto");
56332
56332
  var { readFile: readFile$1 } = __require("fs/promises");
56333
56333
  var { IniSectionType: IniSectionType2 } = require_dist_cjs();
@@ -56485,7 +56485,7 @@ var require_config = __commonJS((exports) => {
56485
56485
  var getSSOTokenFilepath = (id) => {
56486
56486
  const hasher = createHash16("sha1");
56487
56487
  const cacheName = hasher.update(id).digest("hex");
56488
- return join28(getHomeDir(), ".aws", "sso", "cache", `${cacheName}.json`);
56488
+ return join29(getHomeDir(), ".aws", "sso", "cache", `${cacheName}.json`);
56489
56489
  };
56490
56490
  var tokenIntercept = {};
56491
56491
  var getSSOTokenFromFile = async (id) => {
@@ -56512,9 +56512,9 @@ var require_config = __commonJS((exports) => {
56512
56512
  ...data.default && { default: data.default }
56513
56513
  });
56514
56514
  var ENV_CONFIG_PATH = "AWS_CONFIG_FILE";
56515
- var getConfigFilepath = () => process.env[ENV_CONFIG_PATH] || join28(getHomeDir(), ".aws", "config");
56515
+ var getConfigFilepath = () => process.env[ENV_CONFIG_PATH] || join29(getHomeDir(), ".aws", "config");
56516
56516
  var ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE";
56517
- var getCredentialsFilepath = () => process.env[ENV_CREDENTIALS_PATH] || join28(getHomeDir(), ".aws", "credentials");
56517
+ var getCredentialsFilepath = () => process.env[ENV_CREDENTIALS_PATH] || join29(getHomeDir(), ".aws", "credentials");
56518
56518
  var prefixKeyRegex = /^([\w-]+)\s(["'])?([\w-@+.%:/]+)\2$/;
56519
56519
  var profileNameBlockList = ["__proto__", "profile __proto__"];
56520
56520
  var parseIni = (iniData) => {
@@ -56580,11 +56580,11 @@ var require_config = __commonJS((exports) => {
56580
56580
  const relativeHomeDirPrefix = "~/";
56581
56581
  let resolvedFilepath = filepath;
56582
56582
  if (filepath.startsWith(relativeHomeDirPrefix)) {
56583
- resolvedFilepath = join28(homeDir, filepath.slice(2));
56583
+ resolvedFilepath = join29(homeDir, filepath.slice(2));
56584
56584
  }
56585
56585
  let resolvedConfigFilepath = configFilepath;
56586
56586
  if (configFilepath.startsWith(relativeHomeDirPrefix)) {
56587
- resolvedConfigFilepath = join28(homeDir, configFilepath.slice(2));
56587
+ resolvedConfigFilepath = join29(homeDir, configFilepath.slice(2));
56588
56588
  }
56589
56589
  const parsedFiles = await Promise.all([
56590
56590
  readFile13(resolvedConfigFilepath, {
@@ -74177,7 +74177,7 @@ var require_signin = __commonJS((exports) => {
74177
74177
  import { createHash as createHash16, createPrivateKey, createPublicKey, sign } from "crypto";
74178
74178
  import { promises as fs3 } from "fs";
74179
74179
  import { homedir as homedir3 } from "os";
74180
- import { dirname as dirname17, join as join31 } from "path";
74180
+ import { dirname as dirname17, join as join32 } from "path";
74181
74181
  var import_config24, import_protocols3, LoginCredentialsFetcher;
74182
74182
  var init_LoginCredentialsFetcher = __esm(() => {
74183
74183
  import_config24 = __toESM(require_config(), 1);
@@ -74336,10 +74336,10 @@ var init_LoginCredentialsFetcher = __esm(() => {
74336
74336
  await fs3.writeFile(tokenFilePath, JSON.stringify(token, null, 2), "utf8");
74337
74337
  }
74338
74338
  getTokenFilePath() {
74339
- const directory = process.env.AWS_LOGIN_CACHE_DIRECTORY ?? join31(homedir3(), ".aws", "login", "cache");
74339
+ const directory = process.env.AWS_LOGIN_CACHE_DIRECTORY ?? join32(homedir3(), ".aws", "login", "cache");
74340
74340
  const loginSessionBytes = Buffer.from(this.loginSession, "utf8");
74341
74341
  const loginSessionSha256 = createHash16("sha256").update(loginSessionBytes).digest("hex");
74342
- return join31(directory, `${loginSessionSha256}.json`);
74342
+ return join32(directory, `${loginSessionSha256}.json`);
74343
74343
  }
74344
74344
  derToRawSignature(derSignature) {
74345
74345
  let offset = 2;
@@ -104737,7 +104737,7 @@ var createPrebuildLambdaFunction = (parentGroup, ctx, ns, id, props) => {
104737
104737
  }));
104738
104738
  })
104739
104739
  });
104740
- const dependsOn = [];
104740
+ const dependsOn = [policy];
104741
104741
  if (props.vpc) {
104742
104742
  dependsOn.push(new aws.iam.RolePolicy(group, "vpc-policy", {
104743
104743
  role: role.name,
@@ -104831,6 +104831,8 @@ var createPrebuildLambdaFunction = (parentGroup, ctx, ns, id, props) => {
104831
104831
  destinationArn: ctx.shared.get("on-error-log", "subscriber-arn"),
104832
104832
  logGroupName: logGroup.name,
104833
104833
  filterPattern
104834
+ }, {
104835
+ dependsOn: [ctx.shared.get("on-error-log", "permission")]
104834
104836
  });
104835
104837
  }
104836
104838
  }
@@ -106147,7 +106149,7 @@ var searchFeature = defineFeature({
106147
106149
 
106148
106150
  // src/feature/site/index.ts
106149
106151
  import { createHash as createHash12 } from "crypto";
106150
- import { basename as basename3, dirname as dirname12, join as join19 } from "path";
106152
+ import { dirname as dirname12, join as join20 } from "path";
106151
106153
 
106152
106154
  // src/util/cache.ts
106153
106155
  import { lstat as lstat3, readdir as readdir4 } from "fs/promises";
@@ -106186,6 +106188,40 @@ var listAllFiles = async (list2) => {
106186
106188
  return files;
106187
106189
  };
106188
106190
 
106191
+ // src/feature/site/static-routes.ts
106192
+ import { basename as basename3, join as join19 } from "path";
106193
+ var planStaticRoutes = (files, sitePath) => {
106194
+ const plan = { files: {}, dirs: [] };
106195
+ const assetDirs = new Set;
106196
+ for (const file2 of files) {
106197
+ if (file2.endsWith(".html")) {
106198
+ const strippedHtmlFile = file2.endsWith("index.html") ? file2.slice(0, -11) : file2.slice(0, -5);
106199
+ const urlFriendlyFile = strippedHtmlFile.endsWith("/") ? strippedHtmlFile.slice(0, -1) : strippedHtmlFile;
106200
+ plan.files[join19(sitePath, urlFriendlyFile)] = file2;
106201
+ continue;
106202
+ }
106203
+ if (!basename3(file2).includes(".")) {
106204
+ plan.files[join19(sitePath, file2)] = file2;
106205
+ continue;
106206
+ }
106207
+ if (sitePath !== "/") {
106208
+ continue;
106209
+ }
106210
+ const firstSegment = file2.split("/")[0];
106211
+ if (file2.includes("/") && !firstSegment.includes(".")) {
106212
+ assetDirs.add(firstSegment);
106213
+ continue;
106214
+ }
106215
+ plan.files[join19(sitePath, file2)] = file2;
106216
+ }
106217
+ if (sitePath === "/") {
106218
+ plan.dirs = [...assetDirs].map((dir) => join19(sitePath, dir, "*."));
106219
+ } else {
106220
+ plan.catchAll = join19(sitePath, "*.");
106221
+ }
106222
+ return plan;
106223
+ };
106224
+
106189
106225
  // src/feature/site/index.ts
106190
106226
  var siteFeature = defineFeature({
106191
106227
  name: "site",
@@ -106207,7 +106243,7 @@ var siteFeature = defineFeature({
106207
106243
  return build2(fingerprint, async (write) => {
106208
106244
  const credentialProvider = await getCredentials(ctx.appConfig.profile);
106209
106245
  const credentials2 = await credentialProvider();
106210
- const cwd = join19(directories.root, dirname12(ctx.stackConfig.file));
106246
+ const cwd = join20(directories.root, dirname12(ctx.stackConfig.file));
106211
106247
  const env2 = {
106212
106248
  ...process.env,
106213
106249
  APP: ctx.appConfig.name,
@@ -106271,7 +106307,7 @@ ${(errors3.trim() || output.trim()).slice(-2000)}`);
106271
106307
  cwd: staticDir,
106272
106308
  nodir: true
106273
106309
  }).sort();
106274
- const hashes = files.map((file2) => $hash(join19(staticDir, file2)));
106310
+ const hashes = files.map((file2) => $hash(join20(staticDir, file2)));
106275
106311
  const version = $combine(...hashes).pipe((hashes2) => {
106276
106312
  const hash2 = createHash12("sha1");
106277
106313
  for (const [index, file2] of files.entries()) {
@@ -106287,26 +106323,16 @@ ${(errors3.trim() || output.trim()).slice(-2000)}`);
106287
106323
  version
106288
106324
  });
106289
106325
  const staticRoutes = {};
106290
- for (const file2 of files) {
106291
- if (file2.endsWith(".html")) {
106292
- const strippedHtmlFile = file2.endsWith("index.html") ? file2.slice(0, -11) : file2.slice(0, -5);
106293
- const urlFriendlyFile = strippedHtmlFile.endsWith("/") ? strippedHtmlFile.slice(0, -1) : strippedHtmlFile;
106294
- const routeFileKey = join19(props.path, urlFriendlyFile);
106295
- staticRoutes[routeFileKey] = {
106296
- type: "s3",
106297
- domainName: bucket.regionalDomainName,
106298
- rewrite: { to: $interpolate`/${folder}v-${deployment.version}/${file2}` }
106299
- };
106300
- } else if (!basename3(file2).includes(".")) {
106301
- staticRoutes[join19(props.path, file2)] = {
106302
- type: "s3",
106303
- domainName: bucket.regionalDomainName,
106304
- rewrite: { to: $interpolate`/${folder}v-${deployment.version}/${file2}` }
106305
- };
106306
- }
106326
+ const plan = planStaticRoutes(files, props.path);
106327
+ for (const [routeFileKey, file2] of Object.entries(plan.files)) {
106328
+ staticRoutes[routeFileKey] = {
106329
+ type: "s3",
106330
+ domainName: bucket.regionalDomainName,
106331
+ rewrite: { to: $interpolate`/${folder}v-${deployment.version}/${file2}` }
106332
+ };
106307
106333
  }
106308
106334
  const pathPattern = props.path === "/" ? "" : props.path.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
106309
- staticRoutes[join19(props.path, "*.")] = {
106335
+ const assetRoute = {
106310
106336
  type: "s3",
106311
106337
  domainName: bucket.regionalDomainName,
106312
106338
  rewrite: {
@@ -106314,6 +106340,12 @@ ${(errors3.trim() || output.trim()).slice(-2000)}`);
106314
106340
  to: $interpolate`/${folder}v-${deployment.version}/$1`
106315
106341
  }
106316
106342
  };
106343
+ for (const routeDirKey of plan.dirs) {
106344
+ staticRoutes[routeDirKey] = assetRoute;
106345
+ }
106346
+ if (plan.catchAll) {
106347
+ staticRoutes[plan.catchAll] = assetRoute;
106348
+ }
106317
106349
  addRoutes(staticRoutes, { dependsOn: [deployment, bucket.policy] });
106318
106350
  }
106319
106351
  });
@@ -106323,7 +106355,7 @@ ${(errors3.trim() || output.trim()).slice(-2000)}`);
106323
106355
  });
106324
106356
 
106325
106357
  // src/feature/store/index.ts
106326
- import { join as join20 } from "path";
106358
+ import { join as join21 } from "path";
106327
106359
  import { toDays as toDays8 } from "@awsless/duration";
106328
106360
 
106329
106361
  // src/feature/store/util.ts
@@ -106446,8 +106478,8 @@ var storeFeature = defineFeature({
106446
106478
  key: `${folder}${file2}`,
106447
106479
  cacheControl: getCacheControl(file2),
106448
106480
  contentType: getContentType(file2),
106449
- source: join20(props.static, file2),
106450
- sourceHash: $hash(join20(props.static, file2))
106481
+ source: join21(props.static, file2),
106482
+ sourceHash: $hash(join21(props.static, file2))
106451
106483
  }, {
106452
106484
  replaceOnChanges: ["bucket", "key"]
106453
106485
  });
@@ -107072,7 +107104,7 @@ var layerFeature = defineFeature({
107072
107104
  // src/feature/image/index.ts
107073
107105
  import { toDays as toDays9 } from "@awsless/duration";
107074
107106
  import { formatRouteEnvName as formatRouteEnvName4 } from "awsless";
107075
- import { dirname as dirname13, join as join21 } from "path";
107107
+ import { dirname as dirname13, join as join22 } from "path";
107076
107108
  import { fileURLToPath as fileURLToPath9 } from "url";
107077
107109
  var imageFeature = defineFeature({
107078
107110
  name: "image",
@@ -107087,7 +107119,7 @@ var imageFeature = defineFeature({
107087
107119
  throw new FileError("app.json", "The image feature requires an arm64 function bundle.");
107088
107120
  }
107089
107121
  const group = new Group(ctx.base, "image", "layer");
107090
- const path2 = join21(dirname13(fileURLToPath9(import.meta.url)), "/layers/sharp-arm.zip");
107122
+ const path2 = join22(dirname13(fileURLToPath9(import.meta.url)), "/layers/sharp-arm.zip");
107091
107123
  const layerId = formatGlobalResourceName({
107092
107124
  appName: ctx.appConfig.name,
107093
107125
  resourceType: "layer",
@@ -107152,7 +107184,7 @@ var imageFeature = defineFeature({
107152
107184
  const serverRouteKey = formatRouteKey(ctx.stack.name, "image", id);
107153
107185
  bundle.addHandler({
107154
107186
  routeKey: serverRouteKey,
107155
- file: join21(dirname13(fileURLToPath9(import.meta.url)), "/handlers/image.js"),
107187
+ file: join22(dirname13(fileURLToPath9(import.meta.url)), "/handlers/image.js"),
107156
107188
  exportName: "default",
107157
107189
  external: ["sharp"]
107158
107190
  });
@@ -107190,8 +107222,8 @@ var imageFeature = defineFeature({
107190
107222
  new aws.s3.BucketObject(group, `static-${file2}`, {
107191
107223
  bucket: bucket.name,
107192
107224
  key: `${folder}origin/${file2}`,
107193
- source: join21(props.origin.static, file2),
107194
- sourceHash: $hash(join21(props.origin.static, file2))
107225
+ source: join22(props.origin.static, file2),
107226
+ sourceHash: $hash(join22(props.origin.static, file2))
107195
107227
  }, {
107196
107228
  replaceOnChanges: ["bucket", "key"]
107197
107229
  });
@@ -107207,7 +107239,7 @@ var imageFeature = defineFeature({
107207
107239
  // src/feature/icon/index.ts
107208
107240
  import { toDays as toDays10 } from "@awsless/duration";
107209
107241
  import { formatRouteEnvName as formatRouteEnvName5 } from "awsless";
107210
- import { dirname as dirname14, join as join22 } from "path";
107242
+ import { dirname as dirname14, join as join23 } from "path";
107211
107243
  import { fileURLToPath as fileURLToPath10 } from "url";
107212
107244
  var iconFeature = defineFeature({
107213
107245
  name: "icon",
@@ -107239,7 +107271,7 @@ var iconFeature = defineFeature({
107239
107271
  const serverRouteKey = formatRouteKey(ctx.stack.name, "icon", id);
107240
107272
  bundle.addHandler({
107241
107273
  routeKey: serverRouteKey,
107242
- file: join22(dirname14(fileURLToPath10(import.meta.url)), "/handlers/icon.js"),
107274
+ file: join23(dirname14(fileURLToPath10(import.meta.url)), "/handlers/icon.js"),
107243
107275
  exportName: "default"
107244
107276
  });
107245
107277
  addRoutes({
@@ -107279,8 +107311,8 @@ var iconFeature = defineFeature({
107279
107311
  new aws.s3.BucketObject(group, `static-${file2}`, {
107280
107312
  bucket: bucket.name,
107281
107313
  key: `${folder}origin/${file2}`,
107282
- source: join22(props.origin.static, file2),
107283
- sourceHash: $hash(join22(props.origin.static, file2))
107314
+ source: join23(props.origin.static, file2),
107315
+ sourceHash: $hash(join23(props.origin.static, file2))
107284
107316
  }, {
107285
107317
  replaceOnChanges: ["bucket", "key"]
107286
107318
  });
@@ -107307,10 +107339,10 @@ var import_deepmerge3 = __toESM(require_cjs2(), 1);
107307
107339
  // src/feature/job/build/executable.ts
107308
107340
  import { createHash as createHash13 } from "crypto";
107309
107341
  import { readFile as readFile11, writeFile as writeFile7 } from "fs/promises";
107310
- import { join as join23, resolve as resolve3 } from "path";
107342
+ import { join as join24, resolve as resolve3 } from "path";
107311
107343
  var buildJobExecutable = async (input, outputPath, architecture) => {
107312
- const filePath = join23(outputPath, "program");
107313
- const wrapperPath = join23(outputPath, "wrapper.ts");
107344
+ const filePath = join24(outputPath, "program");
107345
+ const wrapperPath = join24(outputPath, "wrapper.ts");
107314
107346
  const handlerPath = resolve3(input);
107315
107347
  await writeFile7(wrapperPath, `import { parse } from '@awsless/json'
107316
107348
  import { getObject } from '@awsless/s3'
@@ -107820,7 +107852,7 @@ import { stringify as stringify3 } from "@awsless/json";
107820
107852
  import { generateFileHash as generateFileHash3 } from "@awsless/ts-file-cache";
107821
107853
  var import_deepmerge5 = __toESM(require_cjs2(), 1);
107822
107854
  import { createHash as createHash15 } from "crypto";
107823
- import { join as join24 } from "path";
107855
+ import { join as join25 } from "path";
107824
107856
  var createFargateTask = (parentGroup, ctx, ns, id, local) => {
107825
107857
  const group = new Group(parentGroup, "instance", ns);
107826
107858
  const name = formatLocalResourceName({
@@ -108025,7 +108057,7 @@ var createFargateTask = (parentGroup, ctx, ns, id, local) => {
108025
108057
  healthCheck: props.healthCheck ? {
108026
108058
  command: [
108027
108059
  "CMD-SHELL",
108028
- `curl -f http://${join24("localhost", props.healthCheck.path)} || exit 1`
108060
+ `curl -f http://${join25("localhost", props.healthCheck.path)} || exit 1`
108029
108061
  ],
108030
108062
  interval: toSeconds10(props.healthCheck.interval),
108031
108063
  retries: props.healthCheck.retries,
@@ -110721,12 +110753,12 @@ import { DynamoDBClient as DynamoDBClient3 } from "@awsless/dynamodb";
110721
110753
  // src/cli/ui/complex/run-tests.ts
110722
110754
  var import_wildstring3 = __toESM(require_wildstring(), 1);
110723
110755
  import { mkdir as mkdir6, readFile as readFile12, writeFile as writeFile8 } from "fs/promises";
110724
- import { join as join26 } from "path";
110756
+ import { join as join27 } from "path";
110725
110757
  import { parse as parse5, stringify as stringify4 } from "@awsless/json";
110726
110758
  import { generateFolderHash, loadWorkspace as loadWorkspace2 } from "@awsless/ts-file-cache";
110727
110759
 
110728
110760
  // src/test/start.ts
110729
- import { dirname as dirname15, join as join25 } from "path";
110761
+ import { dirname as dirname15, join as join26 } from "path";
110730
110762
  import { fileURLToPath as fileURLToPath11 } from "url";
110731
110763
  import { configDefaults } from "vitest/config";
110732
110764
  import { startVitest } from "vitest/node";
@@ -110747,7 +110779,7 @@ var startTest = async (props) => {
110747
110779
  globals: true,
110748
110780
  reporters: [new NullReporter],
110749
110781
  setupFiles: [
110750
- join25(__dirname4, "test-global-setup.js")
110782
+ join26(__dirname4, "test-global-setup.js")
110751
110783
  ]
110752
110784
  }, {
110753
110785
  logLevel: "silent",
@@ -110901,7 +110933,7 @@ var logTestErrors = (event) => {
110901
110933
  };
110902
110934
  var runTest = async (stack, dir, filters, workspace, opts) => {
110903
110935
  await mkdir6(directories.test, { recursive: true });
110904
- const file2 = join26(directories.test, `${stack}.json`);
110936
+ const file2 = join27(directories.test, `${stack}.json`);
110905
110937
  const fingerprint = await generateFolderHash(workspace, dir);
110906
110938
  if (!process.env.NO_CACHE) {
110907
110939
  const exists2 = await fileExist(file2);
@@ -112255,7 +112287,7 @@ var watchConfig = async (options, resolve4, reject) => {
112255
112287
 
112256
112288
  // src/type-gen/generate.ts
112257
112289
  import { mkdir as mkdir7, writeFile as writeFile9 } from "fs/promises";
112258
- import { dirname as dirname16, join as join27, relative as relative8 } from "path";
112290
+ import { dirname as dirname16, join as join28, relative as relative8 } from "path";
112259
112291
  var generateTypes = async (props) => {
112260
112292
  const files = [];
112261
112293
  await Promise.all(features.map((feature) => {
@@ -112263,7 +112295,7 @@ var generateTypes = async (props) => {
112263
112295
  ...props,
112264
112296
  async write(file2, data, include = false) {
112265
112297
  const code = data?.toString("utf8");
112266
- const path2 = join27(directories.types, file2);
112298
+ const path2 = join28(directories.types, file2);
112267
112299
  if (code) {
112268
112300
  if (include) {
112269
112301
  files.push(relative8(directories.root, path2));
@@ -112277,7 +112309,7 @@ var generateTypes = async (props) => {
112277
112309
  if (files.length) {
112278
112310
  const code = files.map((file2) => `/// <reference path='${file2}' />`).join(`
112279
112311
  `);
112280
- await writeFile9(join27(directories.root, `awsless.d.ts`), code);
112312
+ await writeFile9(join28(directories.root, `awsless.d.ts`), code);
112281
112313
  }
112282
112314
  };
112283
112315
 
@@ -114374,7 +114406,7 @@ var DEFAULT_PROFILE = "default";
114374
114406
  var getProfileName = (init) => init.profile || process.env[ENV_PROFILE] || DEFAULT_PROFILE;
114375
114407
 
114376
114408
  // ../../node_modules/.pnpm/@smithy+shared-ini-file-loader@4.4.7/node_modules/@smithy/shared-ini-file-loader/dist-es/loadSharedConfigFiles.js
114377
- import { join as join30 } from "path";
114409
+ import { join as join31 } from "path";
114378
114410
 
114379
114411
  // ../../node_modules/.pnpm/@smithy+shared-ini-file-loader@4.4.7/node_modules/@smithy/shared-ini-file-loader/dist-es/constants.js
114380
114412
  var CONFIG_PREFIX_SEPARATOR = ".";
@@ -114396,14 +114428,14 @@ var getConfigData = (data) => Object.entries(data).filter(([key]) => {
114396
114428
  });
114397
114429
 
114398
114430
  // ../../node_modules/.pnpm/@smithy+shared-ini-file-loader@4.4.7/node_modules/@smithy/shared-ini-file-loader/dist-es/getConfigFilepath.js
114399
- import { join as join28 } from "path";
114431
+ import { join as join29 } from "path";
114400
114432
  var ENV_CONFIG_PATH = "AWS_CONFIG_FILE";
114401
- var getConfigFilepath = () => process.env[ENV_CONFIG_PATH] || join28(getHomeDir(), ".aws", "config");
114433
+ var getConfigFilepath = () => process.env[ENV_CONFIG_PATH] || join29(getHomeDir(), ".aws", "config");
114402
114434
 
114403
114435
  // ../../node_modules/.pnpm/@smithy+shared-ini-file-loader@4.4.7/node_modules/@smithy/shared-ini-file-loader/dist-es/getCredentialsFilepath.js
114404
- import { join as join29 } from "path";
114436
+ import { join as join30 } from "path";
114405
114437
  var ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE";
114406
- var getCredentialsFilepath = () => process.env[ENV_CREDENTIALS_PATH] || join29(getHomeDir(), ".aws", "credentials");
114438
+ var getCredentialsFilepath = () => process.env[ENV_CREDENTIALS_PATH] || join30(getHomeDir(), ".aws", "credentials");
114407
114439
 
114408
114440
  // ../../node_modules/.pnpm/@smithy+shared-ini-file-loader@4.4.7/node_modules/@smithy/shared-ini-file-loader/dist-es/parseIni.js
114409
114441
  var prefixKeyRegex = /^([\w-]+)\s(["'])?([\w-@\+\.%:/]+)\2$/;
@@ -114476,11 +114508,11 @@ var loadSharedConfigFiles = async (init = {}) => {
114476
114508
  const relativeHomeDirPrefix = "~/";
114477
114509
  let resolvedFilepath = filepath;
114478
114510
  if (filepath.startsWith(relativeHomeDirPrefix)) {
114479
- resolvedFilepath = join30(homeDir, filepath.slice(2));
114511
+ resolvedFilepath = join31(homeDir, filepath.slice(2));
114480
114512
  }
114481
114513
  let resolvedConfigFilepath = configFilepath;
114482
114514
  if (configFilepath.startsWith(relativeHomeDirPrefix)) {
114483
- resolvedConfigFilepath = join30(homeDir, configFilepath.slice(2));
114515
+ resolvedConfigFilepath = join31(homeDir, configFilepath.slice(2));
114484
114516
  }
114485
114517
  const parsedFiles = await Promise.all([
114486
114518
  readFile13(resolvedConfigFilepath, {
@@ -115573,7 +115605,7 @@ var getRuntimeUserAgentPair = () => {
115573
115605
 
115574
115606
  // ../../node_modules/.pnpm/@aws-sdk+util-user-agent-node@3.973.14_aws-crt@1.30.0_supports-color@8.1.1_/node_modules/@aws-sdk/util-user-agent-node/dist-es/getTypeScriptUserAgentPair.js
115575
115607
  import { readFile as readFile15 } from "fs/promises";
115576
- import { join as join32 } from "path";
115608
+ import { join as join33 } from "path";
115577
115609
 
115578
115610
  // ../../node_modules/.pnpm/@aws-sdk+util-user-agent-node@3.973.14_aws-crt@1.30.0_supports-color@8.1.1_/node_modules/@aws-sdk/util-user-agent-node/dist-es/getNodeModulesParentDirs.js
115579
115611
  import { normalize as normalize3, sep as sep3 } from "path";
@@ -115621,7 +115653,7 @@ var getSanitizedDevTypeScriptVersion = (version2 = "") => {
115621
115653
  // ../../node_modules/.pnpm/@aws-sdk+util-user-agent-node@3.973.14_aws-crt@1.30.0_supports-color@8.1.1_/node_modules/@aws-sdk/util-user-agent-node/dist-es/getTypeScriptUserAgentPair.js
115622
115654
  var __dirname = "/Users/work/Code/awsless/node_modules/.pnpm/@aws-sdk+util-user-agent-node@3.973.14_aws-crt@1.30.0_supports-color@8.1.1_/node_modules/@aws-sdk/util-user-agent-node/dist-es";
115623
115655
  var tscVersion;
115624
- var TS_PACKAGE_JSON = join32("node_modules", "typescript", "package.json");
115656
+ var TS_PACKAGE_JSON = join33("node_modules", "typescript", "package.json");
115625
115657
  var getTypeScriptUserAgentPair = async () => {
115626
115658
  if (tscVersion === null) {
115627
115659
  return;
@@ -115641,7 +115673,7 @@ var getTypeScriptUserAgentPair = async () => {
115641
115673
  let versionFromApp;
115642
115674
  for (const nodeModulesParentDir of nodeModulesParentDirs) {
115643
115675
  try {
115644
- const appPackageJsonPath = join32(nodeModulesParentDir, "package.json");
115676
+ const appPackageJsonPath = join33(nodeModulesParentDir, "package.json");
115645
115677
  const packageJson = await readFile15(appPackageJsonPath, "utf-8");
115646
115678
  const { dependencies, devDependencies } = JSON.parse(packageJson);
115647
115679
  const version2 = devDependencies?.typescript ?? dependencies?.typescript;
@@ -115659,7 +115691,7 @@ var getTypeScriptUserAgentPair = async () => {
115659
115691
  let versionFromNodeModules;
115660
115692
  for (const nodeModulesParentDir of nodeModulesParentDirs) {
115661
115693
  try {
115662
- const tsPackageJsonPath = join32(nodeModulesParentDir, TS_PACKAGE_JSON);
115694
+ const tsPackageJsonPath = join33(nodeModulesParentDir, TS_PACKAGE_JSON);
115663
115695
  const packageJson = await readFile15(tsPackageJsonPath, "utf-8");
115664
115696
  const { version: version2 } = JSON.parse(packageJson);
115665
115697
  const sanitizedVersion2 = getSanitizedTypeScriptVersion(version2);
@@ -118720,7 +118752,7 @@ var sinon;
118720
118752
  const arraySlice = arrayProto.slice;
118721
118753
  const concat = arrayProto.concat;
118722
118754
  const forEach = arrayProto.forEach;
118723
- const join33 = arrayProto.join;
118755
+ const join34 = arrayProto.join;
118724
118756
  const splice = arrayProto.splice;
118725
118757
  function applyDefaults(obj, defaults2) {
118726
118758
  for (const key of Object.keys(defaults2)) {
@@ -118756,7 +118788,7 @@ var sinon;
118756
118788
  let actual = "";
118757
118789
  if (!calledInOrder(arguments)) {
118758
118790
  try {
118759
- expected = join33(arguments, ", ");
118791
+ expected = join34(arguments, ", ");
118760
118792
  const calls = arraySlice(arguments);
118761
118793
  let i4 = calls.length;
118762
118794
  while (i4) {
@@ -118764,7 +118796,7 @@ var sinon;
118764
118796
  splice(calls, i4, 1);
118765
118797
  }
118766
118798
  }
118767
- actual = join33(orderByFirstCall(calls), ", ");
118799
+ actual = join34(orderByFirstCall(calls), ", ");
118768
118800
  } catch (e7) {}
118769
118801
  failAssertion(this, `expected ${expected} to be called in order but were called as ${actual}`);
118770
118802
  } else {
@@ -118809,7 +118841,7 @@ var sinon;
118809
118841
  ` expected = ${inspect(expectation)}`,
118810
118842
  ` actual = ${inspect(actual)}`
118811
118843
  ];
118812
- failAssertion(this, join33(formatted, `
118844
+ failAssertion(this, join34(formatted, `
118813
118845
  `));
118814
118846
  }
118815
118847
  }
@@ -118914,7 +118946,7 @@ var sinon;
118914
118946
  const valueToString = require2("@sinonjs/commons").valueToString;
118915
118947
  const exportAsyncBehaviors = require2("./util/core/export-async-behaviors");
118916
118948
  const concat = arrayProto.concat;
118917
- const join33 = arrayProto.join;
118949
+ const join34 = arrayProto.join;
118918
118950
  const reverse = arrayProto.reverse;
118919
118951
  const slice = arrayProto.slice;
118920
118952
  const useLeftMostCallback = -1;
@@ -118951,7 +118983,7 @@ var sinon;
118951
118983
  msg = `${functionName(behavior.stub)} expected to yield, but no callback was passed.`;
118952
118984
  }
118953
118985
  if (args.length > 0) {
118954
- msg += ` Received [${join33(args, ", ")}]`;
118986
+ msg += ` Received [${join34(args, ", ")}]`;
118955
118987
  }
118956
118988
  return msg;
118957
118989
  }
@@ -119761,7 +119793,7 @@ var sinon;
119761
119793
  const filter2 = arrayProto.filter;
119762
119794
  const forEach = arrayProto.forEach;
119763
119795
  const every = arrayProto.every;
119764
- const join33 = arrayProto.join;
119796
+ const join34 = arrayProto.join;
119765
119797
  const push = arrayProto.push;
119766
119798
  const slice = arrayProto.slice;
119767
119799
  const unshift = arrayProto.unshift;
@@ -119838,10 +119870,10 @@ var sinon;
119838
119870
  });
119839
119871
  this.restore();
119840
119872
  if (messages.length > 0) {
119841
- mockExpectation.fail(join33(concat(messages, met), `
119873
+ mockExpectation.fail(join34(concat(messages, met), `
119842
119874
  `));
119843
119875
  } else if (met.length > 0) {
119844
- mockExpectation.pass(join33(concat(messages, met), `
119876
+ mockExpectation.pass(join34(concat(messages, met), `
119845
119877
  `));
119846
119878
  }
119847
119879
  return true;
@@ -119894,7 +119926,7 @@ var sinon;
119894
119926
  args,
119895
119927
  stack: err.stack
119896
119928
  })}`);
119897
- mockExpectation.fail(join33(messages, `
119929
+ mockExpectation.fail(join34(messages, `
119898
119930
  `));
119899
119931
  }
119900
119932
  });
@@ -120001,14 +120033,14 @@ var sinon;
120001
120033
  const valueToString = require2("@sinonjs/commons").valueToString;
120002
120034
  const concat = arrayProto.concat;
120003
120035
  const filter2 = arrayProto.filter;
120004
- const join33 = arrayProto.join;
120036
+ const join34 = arrayProto.join;
120005
120037
  const map = arrayProto.map;
120006
120038
  const reduce = arrayProto.reduce;
120007
120039
  const slice = arrayProto.slice;
120008
120040
  function throwYieldError(proxy, text2, args) {
120009
120041
  let msg = functionName(proxy) + text2;
120010
120042
  if (args.length) {
120011
- msg += ` Received [${join33(slice(args), ", ")}]`;
120043
+ msg += ` Received [${join34(slice(args), ", ")}]`;
120012
120044
  }
120013
120045
  throw new Error(msg);
120014
120046
  }
@@ -120130,7 +120162,7 @@ var sinon;
120130
120162
  const formattedArgs = map(this.args, function(arg) {
120131
120163
  return inspect(arg);
120132
120164
  });
120133
- callStr = `${callStr + join33(formattedArgs, ", ")})`;
120165
+ callStr = `${callStr + join34(formattedArgs, ", ")})`;
120134
120166
  if (typeof this.returnValue !== "undefined") {
120135
120167
  callStr += ` => ${inspect(this.returnValue)}`;
120136
120168
  }
@@ -120861,7 +120893,7 @@ var sinon;
120861
120893
  const timesInWords = require2("./util/core/times-in-words");
120862
120894
  const inspect = require2("util").inspect;
120863
120895
  const jsDiff = require2("diff");
120864
- const join33 = arrayProto.join;
120896
+ const join34 = arrayProto.join;
120865
120897
  const map = arrayProto.map;
120866
120898
  const push = arrayProto.push;
120867
120899
  const slice = arrayProto.slice;
@@ -120889,7 +120921,7 @@ var sinon;
120889
120921
  }
120890
120922
  return text2;
120891
120923
  });
120892
- return join33(objects, "");
120924
+ return join34(objects, "");
120893
120925
  }
120894
120926
  function quoteStringValue(value) {
120895
120927
  if (typeof value === "string") {
@@ -120947,7 +120979,7 @@ ${stringifiedCall}`;
120947
120979
  push(calls, stringifiedCall);
120948
120980
  }
120949
120981
  return calls.length > 0 ? `
120950
- ${join33(calls, `
120982
+ ${join34(calls, `
120951
120983
  `)}` : "";
120952
120984
  },
120953
120985
  t: function(spyInstance) {
@@ -120955,10 +120987,10 @@ ${join33(calls, `
120955
120987
  for (let i4 = 0, l5 = spyInstance.callCount;i4 < l5; ++i4) {
120956
120988
  push(objects, inspect(spyInstance.thisValues[i4]));
120957
120989
  }
120958
- return join33(objects, ", ");
120990
+ return join34(objects, ", ");
120959
120991
  },
120960
120992
  "*": function(spyInstance, args) {
120961
- return join33(map(args, function(arg) {
120993
+ return join34(map(args, function(arg) {
120962
120994
  return inspect(arg);
120963
120995
  }), ", ");
120964
120996
  }
@@ -121290,7 +121322,7 @@ ${join33(calls, `
121290
121322
  }, { "@sinonjs/commons": 48 }], 26: [function(require2, module, exports) {
121291
121323
  const arrayProto = require2("@sinonjs/commons").prototypes.array;
121292
121324
  const hasOwnProperty2 = require2("@sinonjs/commons").prototypes.object.hasOwnProperty;
121293
- const join33 = arrayProto.join;
121325
+ const join34 = arrayProto.join;
121294
121326
  const push = arrayProto.push;
121295
121327
  const hasDontEnumBug = function() {
121296
121328
  const obj = {
@@ -121331,7 +121363,7 @@ ${join33(calls, `
121331
121363
  push(result, obj[prop]());
121332
121364
  }
121333
121365
  }
121334
- return join33(result, "") !== "0123456789";
121366
+ return join34(result, "") !== "0123456789";
121335
121367
  }();
121336
121368
  function extendCommon(target2, sources, doCopy) {
121337
121369
  let source, i4, prop;
@@ -123396,7 +123428,7 @@ ${job.error.stack.split(`
123396
123428
  module.exports = matcherPrototype;
123397
123429
  }, { "../create-matcher": 63 }], 71: [function(require2, module, exports) {
123398
123430
  var functionName = require2("@sinonjs/commons").functionName;
123399
- var join33 = require2("@sinonjs/commons").prototypes.array.join;
123431
+ var join34 = require2("@sinonjs/commons").prototypes.array.join;
123400
123432
  var map = require2("@sinonjs/commons").prototypes.array.map;
123401
123433
  var stringIndexOf = require2("@sinonjs/commons").prototypes.string.indexOf;
123402
123434
  var valueToString = require2("@sinonjs/commons").valueToString;
@@ -123427,7 +123459,7 @@ ${job.error.stack.split(`
123427
123459
  m5.test = function(actual) {
123428
123460
  return matchObject(actual, expectation, match3);
123429
123461
  };
123430
- m5.message = `match(${join33(array, ", ")})`;
123462
+ m5.message = `match(${join34(array, ", ")})`;
123431
123463
  return m5;
123432
123464
  },
123433
123465
  regexp: function(m5, expectation) {
@@ -126751,7 +126783,7 @@ ${job.error.stack.split(`
126751
126783
  tokenize: function tokenize(value) {
126752
126784
  return value.split("");
126753
126785
  },
126754
- join: function join33(chars) {
126786
+ join: function join34(chars) {
126755
126787
  return chars.join("");
126756
126788
  }
126757
126789
  };
@@ -1,7 +1,7 @@
1
1
  // src/feature/bundle/server/handle.ts
2
2
  import { patch, unpatch } from "@awsless/json";
3
3
  import { ExpectedError, invoke, isErrorResponse } from "@awsless/lambda";
4
- import { formatRoutePayload, getCurrentRoute, withRoute } from "awsless";
4
+ import { formatRoutePayload, getCurrentRoute, withBundleRoute } from "awsless";
5
5
 
6
6
  // src/feature/bundle/server/resource/util.ts
7
7
  var routeType = (route) => {
@@ -198,6 +198,18 @@ var restHandler = (event) => {
198
198
  return;
199
199
  };
200
200
 
201
+ // src/feature/bundle/server/resource/route.ts
202
+ var routeHandler = (event) => {
203
+ if (typeof event?.["$awsless-route"] === "string") {
204
+ return;
205
+ }
206
+ const route = event?.headers?.["x-awsless-route"];
207
+ if (typeof route === "string" && routeType(route) === "route") {
208
+ return webRoute(route, event);
209
+ }
210
+ return;
211
+ };
212
+
201
213
  // src/feature/bundle/server/resource/rpc.ts
202
214
  var rpcHandler = (event) => {
203
215
  const route = event?.["$awsless-route"];
@@ -320,6 +332,7 @@ var createBundle = (handlers) => {
320
332
  topicHandler,
321
333
  taskHandler,
322
334
  restHandler,
335
+ routeHandler,
323
336
  rpcHandler,
324
337
  siteHandler,
325
338
  storeHandler,
@@ -333,8 +346,7 @@ var createBundle = (handlers) => {
333
346
  return match;
334
347
  }
335
348
  }
336
- const route = event?.["$awsless-route"] ?? event?.headers?.["x-awsless-route"];
337
- throw new Error("Unknown bundle route: " + route);
349
+ throw new Error(`Unknown bundle route: ${event?.["$awsless-route"] ?? event?.headers?.["x-awsless-route"]} `);
338
350
  };
339
351
  return async (event, context) => {
340
352
  const handleRoute = (match2) => {
@@ -343,13 +355,13 @@ var createBundle = (handlers) => {
343
355
  throw new Error("Unknown bundle route: " + match2.key);
344
356
  }
345
357
  process.env.AWSLESS_ROUTE = match2.key;
346
- return withRoute(match2.key, invokeRoute, async () => {
358
+ return withBundleRoute(match2.key, internalInvoke, async () => {
347
359
  const handle = await load();
348
360
  const routedContext = { ...context, route: match2.key };
349
361
  return handle(match2.payload ?? {}, routedContext);
350
362
  });
351
363
  };
352
- const invokeRoute = async (key, payload) => {
364
+ const internalInvoke = async (key, payload) => {
353
365
  const caller = getCurrentRoute();
354
366
  const throwExpectedErrors = process.env.THROW_EXPECTED_ERRORS;
355
367
  let result;
@@ -14048,7 +14048,7 @@ var require_svgstore = __commonJS((exports, module) => {
14048
14048
 
14049
14049
  // src/feature/icon/server/handle.ts
14050
14050
  import { getObject, putObject } from "@awsless/s3";
14051
- import { getRouteEnv, invokeRoute } from "awsless";
14051
+ import { getRouteEnv, internalInvoke } from "awsless";
14052
14052
 
14053
14053
  // ../../node_modules/.pnpm/svgo@4.0.1/node_modules/svgo/dist/svgo.browser.js
14054
14054
  var visitSkip = Symbol();
@@ -33332,7 +33332,7 @@ var handle_default = async (event) => {
33332
33332
  }
33333
33333
  const originRoute = getRouteEnv("ICON_ORIGIN");
33334
33334
  if (!baseIcon && originRoute) {
33335
- const result = await invokeRoute(originRoute, { path });
33335
+ const result = await internalInvoke(originRoute, { path });
33336
33336
  if (typeof result === "string") {
33337
33337
  baseIcon = Buffer.from(result);
33338
33338
  } else if (result === undefined) {
@@ -1,7 +1,7 @@
1
1
  // src/feature/image/server/handle.ts
2
2
  import { getObject, putObject } from "@awsless/s3";
3
3
  import sharp from "sharp";
4
- import { getRouteEnv, invokeRoute } from "awsless";
4
+ import { getRouteEnv, internalInvoke } from "awsless";
5
5
 
6
6
  // src/feature/image/server/validate.ts
7
7
  import { object, picklist, pipe, safeParse, string, transform } from "@awsless/validate";
@@ -92,7 +92,7 @@ var handle_default = async (event) => {
92
92
  }
93
93
  const originRoute = getRouteEnv("IMAGE_ORIGIN");
94
94
  if (!baseImage && originRoute) {
95
- const result = await invokeRoute(originRoute, { path: originalPath });
95
+ const result = await internalInvoke(originRoute, { path: originalPath });
96
96
  if (typeof result === "string") {
97
97
  baseImage = Buffer.from(result, "base64");
98
98
  } else if (result === undefined) {
@@ -22,7 +22,7 @@ import {
22
22
  putItem,
23
23
  string as dbString
24
24
  } from "@awsless/dynamodb";
25
- import { getRouteEnv, invokeRoute } from "awsless";
25
+ import { getRouteEnv, internalInvoke } from "awsless";
26
26
  import { createHash } from "crypto";
27
27
  import * as zlib from "zlib";
28
28
  var RuntimeErrorSchema = object({
@@ -107,7 +107,7 @@ var handle_default = async (event, context) => {
107
107
  if (!error || await isOwnRequest(error.requestId)) {
108
108
  continue;
109
109
  }
110
- const invoke = invokeRoute(consumerRoute, {
110
+ const invoke = internalInvoke(consumerRoute, {
111
111
  ...error,
112
112
  origin,
113
113
  date: logEvent.timestamp
@@ -1,6 +1,6 @@
1
1
  // src/feature/rpc/server/handle.ts
2
2
  import { ExpectedError, ViewableError } from "@awsless/lambda";
3
- import { invokeRoute as invokeRoute2 } from "awsless";
3
+ import { internalInvoke as internalInvoke2 } from "awsless";
4
4
  import { randomUUID } from "node:crypto";
5
5
 
6
6
  // src/feature/rpc/server/auth.ts
@@ -51,7 +51,7 @@ function isFuture(date) {
51
51
  }
52
52
 
53
53
  // src/feature/rpc/server/auth.ts
54
- import { getRouteEnv, invokeRoute } from "awsless";
54
+ import { getRouteEnv, internalInvoke } from "awsless";
55
55
 
56
56
  // src/feature/rpc/server/validate.ts
57
57
  import {
@@ -135,7 +135,7 @@ var authenticate = async (token) => {
135
135
  }
136
136
  let response;
137
137
  try {
138
- response = await invokeRoute(authRoute, { token });
138
+ response = await internalInvoke(authRoute, { token });
139
139
  } catch (error) {
140
140
  console.error(error);
141
141
  return {
@@ -463,7 +463,7 @@ var handle_default = async (event) => {
463
463
  }
464
464
  let data;
465
465
  try {
466
- data = await invokeRoute2(fn.details.name, {
466
+ data = await internalInvoke2(fn.details.name, {
467
467
  ...fn.payload ?? {},
468
468
  ...auth.context ?? {},
469
469
  viewer: buildViewerPayload(request.output)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@awsless/cli",
3
- "version": "0.0.46-next.16",
3
+ "version": "0.0.46-next.18",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -38,15 +38,15 @@
38
38
  "@awsless/ts-file-cache": "^0.0.16"
39
39
  },
40
40
  "peerDependencies": {
41
- "@awsless/big-float": "^0.1.7",
42
- "@awsless/duration": "^0.0.4",
41
+ "@awsless/validate": "^0.1.7",
42
+ "@awsless/json": "^0.0.11",
43
43
  "@awsless/dynamodb": "^0.3.21",
44
+ "@awsless/big-float": "^0.1.7",
44
45
  "@awsless/lambda": "^0.0.47",
45
- "@awsless/json": "^0.0.11",
46
- "@awsless/validate": "^0.1.7",
47
- "awsless": "^0.0.15-next.3",
46
+ "@awsless/s3": "^0.0.22",
47
+ "@awsless/duration": "^0.0.4",
48
48
  "@awsless/weak-cache": "^0.0.1",
49
- "@awsless/s3": "^0.0.22"
49
+ "awsless": "^0.0.15-next.4"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@clack/prompts": "^0.7.0",
@@ -100,25 +100,25 @@
100
100
  "zip-a-folder": "^3.1.6",
101
101
  "zod": "^3.24.2",
102
102
  "zod-to-json-schema": "^3.24.3",
103
- "@awsless/clui": "^0.0.9",
104
- "@awsless/cloudwatch": "^0.0.1",
105
103
  "@awsless/big-float": "^0.1.7",
106
- "@awsless/duration": "^0.0.4",
104
+ "@awsless/cloudwatch": "^0.0.1",
105
+ "@awsless/clui": "^0.0.9",
107
106
  "@awsless/dynamodb": "^0.3.21",
108
107
  "@awsless/iot": "^0.0.5",
109
108
  "@awsless/json": "^0.0.11",
110
109
  "@awsless/lambda": "^0.0.47",
111
110
  "@awsless/open-search": "^0.0.24",
112
- "@awsless/redis": "^0.1.13",
113
- "@awsless/s3": "^0.0.22",
114
- "@awsless/size": "^0.0.2",
115
- "@awsless/sqs": "^0.0.24",
116
111
  "@awsless/scheduler": "^0.0.5",
117
112
  "@awsless/sns": "^0.0.11",
118
- "@awsless/ssm": "^0.0.8",
119
- "@awsless/weak-cache": "^0.0.1",
113
+ "@awsless/sqs": "^0.0.24",
114
+ "@awsless/redis": "^0.1.13",
120
115
  "@awsless/validate": "^0.1.7",
121
- "awsless": "^0.0.15-next.3"
116
+ "@awsless/s3": "^0.0.22",
117
+ "@awsless/weak-cache": "^0.0.1",
118
+ "@awsless/ssm": "^0.0.8",
119
+ "awsless": "^0.0.15-next.4",
120
+ "@awsless/size": "^0.0.2",
121
+ "@awsless/duration": "^0.0.4"
122
122
  },
123
123
  "scripts": {
124
124
  "test": "bun cli/build-handlers.ts && pnpm vitest",