@awsless/awsless 0.0.377 → 0.0.378

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
@@ -7252,6 +7252,9 @@ var directories = {
7252
7252
  get types() {
7253
7253
  return join(this.output, "types");
7254
7254
  },
7255
+ get temp() {
7256
+ return join(this.output, "temp");
7257
+ },
7255
7258
  // get template() {
7256
7259
  // return join(this.output, 'template')
7257
7260
  // },
@@ -8961,7 +8964,7 @@ var generateGlobalAppId = (opt) => {
8961
8964
  // src/feature/function/util.ts
8962
8965
  import { Asset, aws as aws2 } from "@awsless/formation";
8963
8966
  import deepmerge from "deepmerge";
8964
- import { dirname as dirname7 } from "path";
8967
+ import { basename as basename4, dirname as dirname7 } from "path";
8965
8968
 
8966
8969
  // ../ts-file-cache/dist/index.js
8967
8970
  import { createHash } from "crypto";
@@ -10440,7 +10443,13 @@ import { dirname as dirname6 } from "path";
10440
10443
  import { rollup } from "rollup";
10441
10444
  import natives from "rollup-plugin-natives";
10442
10445
  import { swc, minify as swcMinify } from "rollup-plugin-swc3";
10443
- var bundleTypeScript = async ({ format: format2 = "esm", minify = true, file, external }) => {
10446
+ var bundleTypeScript = async ({
10447
+ format: format2 = "esm",
10448
+ minify = true,
10449
+ file,
10450
+ nativeDir,
10451
+ external
10452
+ }) => {
10444
10453
  const bundle = await rollup({
10445
10454
  input: file,
10446
10455
  external: (importee) => {
@@ -10457,7 +10466,11 @@ var bundleTypeScript = async ({ format: format2 = "esm", minify = true, file, ex
10457
10466
  commonjs({ sourceMap: true }),
10458
10467
  nodeResolve({ preferBuiltins: true }),
10459
10468
  // @ts-ignore
10460
- natives({}),
10469
+ nativeDir ? natives({
10470
+ copyTo: nativeDir,
10471
+ targetEsm: format2 === "esm",
10472
+ sourcemap: true
10473
+ }) : void 0,
10461
10474
  swc({
10462
10475
  // minify,
10463
10476
  // module: true,
@@ -10506,11 +10519,16 @@ var bundleTypeScript = async ({ format: format2 = "esm", minify = true, file, ex
10506
10519
  };
10507
10520
 
10508
10521
  // src/feature/function/build/zip.ts
10522
+ import { createReadStream } from "fs";
10509
10523
  import JSZip from "jszip";
10510
10524
  var zipFiles = (files) => {
10511
10525
  const zip2 = new JSZip();
10512
10526
  for (const file of files) {
10513
- zip2.file(file.name, file.code);
10527
+ if ("path" in file) {
10528
+ zip2.file(file.name, createReadStream(file.path));
10529
+ } else {
10530
+ zip2.file(file.name, file.code);
10531
+ }
10514
10532
  }
10515
10533
  return zip2.generateAsync({
10516
10534
  type: "nodebuffer",
@@ -10524,6 +10542,26 @@ var zipFiles = (files) => {
10524
10542
  // src/feature/function/util.ts
10525
10543
  import { hashElement } from "folder-hash";
10526
10544
 
10545
+ // src/util/temp.ts
10546
+ import { mkdir as mkdir3, readdir, rm as rm2 } from "fs/promises";
10547
+ import { join as join8 } from "path";
10548
+ var createTempFolder = async (name) => {
10549
+ const path = join8(directories.temp, name);
10550
+ await mkdir3(join8(directories.temp, name), { recursive: true });
10551
+ process.on("SIGTERM", async () => {
10552
+ await rm2(path, { recursive: true });
10553
+ });
10554
+ return {
10555
+ path,
10556
+ async files() {
10557
+ return readdir(path, { recursive: true });
10558
+ },
10559
+ async delete() {
10560
+ await rm2(path, { recursive: true });
10561
+ }
10562
+ };
10563
+ };
10564
+
10527
10565
  // src/feature/function/build/container/build.ts
10528
10566
  import { exec } from "promisify-child-process";
10529
10567
  var buildDockerImage = async (opts) => {
@@ -10599,18 +10637,28 @@ var createLambdaFunction = (group, ctx, ns, id, local2) => {
10599
10637
  ctx.registerBuild("function", name, async (build3, { workspace }) => {
10600
10638
  const version = await generateFileHash(workspace, local2.file);
10601
10639
  return build3(version, async (write) => {
10640
+ const temp = await createTempFolder(`function--${name}`);
10602
10641
  const bundle = await bundleTypeScript({
10603
10642
  file: local2.file,
10604
10643
  external: props.build.external,
10605
- minify: props.build.minify
10644
+ minify: props.build.minify,
10645
+ nativeDir: temp.path
10606
10646
  });
10607
- const archive = await zipFiles(bundle.files);
10647
+ const nativeFiles = await temp.files();
10648
+ const archive = await zipFiles([
10649
+ ...bundle.files,
10650
+ ...nativeFiles.map((file) => ({
10651
+ name: basename4(file),
10652
+ path: file
10653
+ }))
10654
+ ]);
10608
10655
  await Promise.all([
10609
10656
  write("HASH", bundle.hash),
10610
10657
  write("bundle.zip", archive),
10611
10658
  ...bundle.files.map((file) => write(`files/${file.name}`, file.code)),
10612
10659
  ...bundle.files.map((file) => file.map && write(`files/${file.name}.map`, file.map))
10613
10660
  ]);
10661
+ await temp.delete();
10614
10662
  return {
10615
10663
  size: formatByteSize(archive.byteLength)
10616
10664
  };
@@ -11919,7 +11967,7 @@ var httpFeature = defineFeature({
11919
11967
  import { days as days4 } from "@awsless/duration";
11920
11968
  import { Asset as Asset3, aws as aws10, combine, Node as Node9, Output as Output2, unwrap } from "@awsless/formation";
11921
11969
  import { hashElement as hashElement2 } from "folder-hash";
11922
- import { mkdir as mkdir3 } from "fs/promises";
11970
+ import { mkdir as mkdir4 } from "fs/promises";
11923
11971
  import { dirname as dirname9 } from "path";
11924
11972
  import { zip } from "zip-a-folder";
11925
11973
  var instanceFeature = defineFeature({
@@ -12003,7 +12051,7 @@ var instanceFeature = defineFeature({
12003
12051
  }
12004
12052
  });
12005
12053
  await build3(version.hash, async () => {
12006
- await mkdir3(dirname9(bundleFile), { recursive: true });
12054
+ await mkdir4(dirname9(bundleFile), { recursive: true });
12007
12055
  await zip(props.code, bundleFile);
12008
12056
  });
12009
12057
  });
@@ -12459,7 +12507,7 @@ var restFeature = defineFeature({
12459
12507
  import { camelCase as camelCase6, constantCase as constantCase9, paramCase as paramCase6 } from "change-case";
12460
12508
  import { aws as aws17, Node as Node16, Output as Output3 } from "@awsless/formation";
12461
12509
  import { mebibytes as mebibytes2 } from "@awsless/size";
12462
- import { dirname as dirname10, join as join8, relative as relative5 } from "path";
12510
+ import { dirname as dirname10, join as join9, relative as relative5 } from "path";
12463
12511
  import { fileURLToPath } from "node:url";
12464
12512
 
12465
12513
  // src/feature/function/prebuild.ts
@@ -12655,8 +12703,8 @@ var rpcFeature = defineFeature({
12655
12703
  resourceName: id
12656
12704
  });
12657
12705
  const { lambda } = createPrebuildLambdaFunction(group, ctx, "rpc", id, {
12658
- bundleFile: join8(__dirname, "/prebuild/rpc/bundle.zip"),
12659
- bundleHash: join8(__dirname, "/prebuild/rpc/HASH"),
12706
+ bundleFile: join9(__dirname, "/prebuild/rpc/bundle.zip"),
12707
+ bundleHash: join9(__dirname, "/prebuild/rpc/HASH"),
12660
12708
  memorySize: mebibytes2(256),
12661
12709
  warm: 3
12662
12710
  });
@@ -12834,7 +12882,7 @@ var searchFeature = defineFeature({
12834
12882
  import { days as days6, seconds as seconds4 } from "@awsless/duration";
12835
12883
  import { Asset as Asset5, aws as aws19, Node as Node18 } from "@awsless/formation";
12836
12884
  import { glob as glob2 } from "glob";
12837
- import { join as join9 } from "path";
12885
+ import { join as join10 } from "path";
12838
12886
 
12839
12887
  // src/feature/site/util.ts
12840
12888
  import { lookup, contentType } from "mime-types";
@@ -12943,7 +12991,7 @@ var siteFeature = defineFeature({
12943
12991
  const object = new aws19.s3.BucketObject(group, file, {
12944
12992
  bucket: bucket.name,
12945
12993
  key: file,
12946
- body: Asset5.fromFile(join9(props.static, file)),
12994
+ body: Asset5.fromFile(join10(props.static, file)),
12947
12995
  cacheControl: getCacheControl(file),
12948
12996
  contentType: getContentType(file)
12949
12997
  });
@@ -14308,13 +14356,13 @@ import { confirm as confirm4, isCancel as isCancel5 } from "@clack/prompts";
14308
14356
  // src/cli/ui/complex/run-tests.ts
14309
14357
  import { log as log8 } from "@clack/prompts";
14310
14358
  import chalk6 from "chalk";
14311
- import { mkdir as mkdir4, readFile as readFile7, writeFile as writeFile3 } from "fs/promises";
14312
- import { join as join12 } from "path";
14359
+ import { mkdir as mkdir5, readFile as readFile7, writeFile as writeFile3 } from "fs/promises";
14360
+ import { join as join13 } from "path";
14313
14361
 
14314
14362
  // src/build/__fingerprint.ts
14315
14363
  import { createHash as createHash5 } from "crypto";
14316
- import { readdir, readFile as readFile6, stat as stat4 } from "fs/promises";
14317
- import { basename as basename4, dirname as dirname11, extname as extname3, join as join10 } from "path";
14364
+ import { readdir as readdir2, readFile as readFile6, stat as stat4 } from "fs/promises";
14365
+ import { basename as basename5, dirname as dirname11, extname as extname3, join as join11 } from "path";
14318
14366
  import parseStaticImports from "parse-static-imports";
14319
14367
  var extensions = ["js", "mjs", "jsx", "ts", "mts", "tsx"];
14320
14368
  var generateFileHashes = async (file, hashes) => {
@@ -14333,10 +14381,10 @@ var generateFileHashes = async (file, hashes) => {
14333
14381
  };
14334
14382
  var fingerprintFromDirectory = async (dir) => {
14335
14383
  const hashes = /* @__PURE__ */ new Map();
14336
- const files = await readdir(dir, { recursive: true });
14384
+ const files = await readdir2(dir, { recursive: true });
14337
14385
  for (const file of files) {
14338
14386
  if (extensions.includes(extname3(file).substring(1)) && file.at(0) !== "_") {
14339
- await generateFileHashes(join10(dir, file), hashes);
14387
+ await generateFileHashes(join11(dir, file), hashes);
14340
14388
  }
14341
14389
  }
14342
14390
  const merge2 = Buffer.concat(Array.from(hashes.values()).sort());
@@ -14346,11 +14394,11 @@ var readModuleFile = (file) => {
14346
14394
  if (file.endsWith(".js")) {
14347
14395
  return readFiles([file, file.substring(0, file.length - 3) + ".ts"]);
14348
14396
  }
14349
- if (!basename4(file).includes(".")) {
14397
+ if (!basename5(file).includes(".")) {
14350
14398
  return readFiles([
14351
14399
  file,
14352
14400
  ...extensions.map((exp) => `${file}.${exp}`),
14353
- ...extensions.map((exp) => join10(file, `/index.${exp}`))
14401
+ ...extensions.map((exp) => join11(file, `/index.${exp}`))
14354
14402
  ]);
14355
14403
  }
14356
14404
  return readFile6(file, "utf8");
@@ -14370,7 +14418,7 @@ var readFiles = async (files) => {
14370
14418
  };
14371
14419
  var findDependencies = async (file, code) => {
14372
14420
  const imports = await parseStaticImports(code);
14373
- return imports.map((entry) => entry.moduleName).filter(Boolean).map((value) => value?.startsWith(".") ? join10(dirname11(file), value) : value);
14421
+ return imports.map((entry) => entry.moduleName).filter(Boolean).map((value) => value?.startsWith(".") ? join11(dirname11(file), value) : value);
14374
14422
  };
14375
14423
 
14376
14424
  // src/test/reporter.ts
@@ -14453,7 +14501,7 @@ import { startVitest } from "vitest/node";
14453
14501
  import commonjs3 from "@rollup/plugin-commonjs";
14454
14502
  import nodeResolve3 from "@rollup/plugin-node-resolve";
14455
14503
  import json3 from "@rollup/plugin-json";
14456
- import { dirname as dirname12, join as join11 } from "path";
14504
+ import { dirname as dirname12, join as join12 } from "path";
14457
14505
  import { fileURLToPath as fileURLToPath2 } from "url";
14458
14506
  var startTest = async (props) => {
14459
14507
  const __dirname2 = dirname12(fileURLToPath2(import.meta.url));
@@ -14470,7 +14518,7 @@ var startTest = async (props) => {
14470
14518
  exclude: ["**/_*", "**/_*/**", ...configDefaults.exclude],
14471
14519
  globals: true,
14472
14520
  reporters: props.reporter,
14473
- globalSetup: join11(__dirname2, "test-global-setup.js")
14521
+ globalSetup: join12(__dirname2, "test-global-setup.js")
14474
14522
  // env: {
14475
14523
  // TZ: 'UTC',
14476
14524
  // },
@@ -14562,9 +14610,9 @@ var logTestErrors = (event) => {
14562
14610
  });
14563
14611
  };
14564
14612
  var runTest = async (stack, dir, filters) => {
14565
- await mkdir4(directories.test, { recursive: true });
14613
+ await mkdir5(directories.test, { recursive: true });
14566
14614
  const fingerprint = await fingerprintFromDirectory(dir);
14567
- const file = join12(directories.test, `${stack}.json`);
14615
+ const file = join13(directories.test, `${stack}.json`);
14568
14616
  const exists = await fileExist(file);
14569
14617
  if (exists && !process.env.NO_CACHE) {
14570
14618
  const raw = await readFile7(file, { encoding: "utf8" });
@@ -14871,8 +14919,8 @@ var watchConfig = async (options, resolve2, reject) => {
14871
14919
  import { log as log10 } from "@clack/prompts";
14872
14920
 
14873
14921
  // src/type-gen/generate.ts
14874
- import { mkdir as mkdir5, writeFile as writeFile4 } from "fs/promises";
14875
- import { dirname as dirname13, join as join13, relative as relative7 } from "path";
14922
+ import { mkdir as mkdir6, writeFile as writeFile4 } from "fs/promises";
14923
+ import { dirname as dirname13, join as join14, relative as relative7 } from "path";
14876
14924
  var generateTypes = async (props) => {
14877
14925
  const files = [];
14878
14926
  await Promise.all(
@@ -14881,12 +14929,12 @@ var generateTypes = async (props) => {
14881
14929
  ...props,
14882
14930
  async write(file, data, include = false) {
14883
14931
  const code = data?.toString("utf8");
14884
- const path = join13(directories.types, file);
14932
+ const path = join14(directories.types, file);
14885
14933
  if (code) {
14886
14934
  if (include) {
14887
14935
  files.push(relative7(directories.root, path));
14888
14936
  }
14889
- await mkdir5(dirname13(path), { recursive: true });
14937
+ await mkdir6(dirname13(path), { recursive: true });
14890
14938
  await writeFile4(path, code);
14891
14939
  }
14892
14940
  }
@@ -14895,7 +14943,7 @@ var generateTypes = async (props) => {
14895
14943
  );
14896
14944
  if (files.length) {
14897
14945
  const code = files.map((file) => `/// <reference path='${file}' />`).join("\n");
14898
- await writeFile4(join13(directories.root, `awsless.d.ts`), code);
14946
+ await writeFile4(join14(directories.root, `awsless.d.ts`), code);
14899
14947
  }
14900
14948
  };
14901
14949
 
@@ -56,6 +56,9 @@ var directories = {
56
56
  get types() {
57
57
  return join(this.output, "types");
58
58
  },
59
+ get temp() {
60
+ return join(this.output, "temp");
61
+ },
59
62
  // get template() {
60
63
  // return join(this.output, 'template')
61
64
  // },
Binary file
package/dist/prebuild.js CHANGED
@@ -48,7 +48,13 @@ var debugError = (error) => {
48
48
  };
49
49
 
50
50
  // src/feature/function/build/typescript/bundle.ts
51
- var bundleTypeScript = async ({ format = "esm", minify = true, file, external }) => {
51
+ var bundleTypeScript = async ({
52
+ format = "esm",
53
+ minify = true,
54
+ file,
55
+ nativeDir,
56
+ external
57
+ }) => {
52
58
  const bundle = await rollup({
53
59
  input: file,
54
60
  external: (importee) => {
@@ -65,7 +71,11 @@ var bundleTypeScript = async ({ format = "esm", minify = true, file, external })
65
71
  commonjs({ sourceMap: true }),
66
72
  nodeResolve({ preferBuiltins: true }),
67
73
  // @ts-ignore
68
- natives({}),
74
+ nativeDir ? natives({
75
+ copyTo: nativeDir,
76
+ targetEsm: format === "esm",
77
+ sourcemap: true
78
+ }) : void 0,
69
79
  swc({
70
80
  // minify,
71
81
  // module: true,
@@ -114,11 +124,16 @@ var bundleTypeScript = async ({ format = "esm", minify = true, file, external })
114
124
  };
115
125
 
116
126
  // src/feature/function/build/zip.ts
127
+ import { createReadStream } from "fs";
117
128
  import JSZip from "jszip";
118
129
  var zipFiles = (files) => {
119
130
  const zip = new JSZip();
120
131
  for (const file of files) {
121
- zip.file(file.name, file.code);
132
+ if ("path" in file) {
133
+ zip.file(file.name, createReadStream(file.path));
134
+ } else {
135
+ zip.file(file.name, file.code);
136
+ }
122
137
  }
123
138
  return zip.generateAsync({
124
139
  type: "nodebuffer",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@awsless/awsless",
3
- "version": "0.0.377",
3
+ "version": "0.0.378",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -29,14 +29,14 @@
29
29
  },
30
30
  "peerDependencies": {
31
31
  "@awsless/iot": "^0.0.2",
32
- "@awsless/lambda": "^0.0.26",
33
32
  "@awsless/open-search": "^0.0.15",
33
+ "@awsless/s3": "^0.0.18",
34
34
  "@awsless/redis": "^0.0.13",
35
+ "@awsless/sqs": "^0.0.7",
35
36
  "@awsless/ssm": "^0.0.7",
37
+ "@awsless/lambda": "^0.0.26",
36
38
  "@awsless/validate": "^0.0.15",
37
39
  "@awsless/sns": "^0.0.7",
38
- "@awsless/s3": "^0.0.18",
39
- "@awsless/sqs": "^0.0.7",
40
40
  "@awsless/weak-cache": "^0.0.1",
41
41
  "@awsless/mqtt": "^0.0.2"
42
42
  },
@@ -120,6 +120,9 @@
120
120
  "@awsless/ts-file-cache": "^0.0.10",
121
121
  "@awsless/validate": "^0.0.15"
122
122
  },
123
+ "devDependencies": {
124
+ "@node-rs/bcrypt": "^1.10.5"
125
+ },
123
126
  "scripts": {
124
127
  "test": "pnpm code test",
125
128
  "term": "zsh -c 'node dist/bin.js ${*} --config-file=./test/_data/app.jsonc' --",