@appthreat/caxa 2.0.2 → 2.0.3

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/README.md CHANGED
@@ -29,6 +29,7 @@ When the binary is executed, the stub reads its own file content, locates the pa
29
29
  - **Zero Config**: No need to manually define assets.
30
30
  - **Native Modules**: Fully supports projects with native C++ bindings (`.node` files).
31
31
  - **No Magic**: Does not patch `require()`. Filesystem access works exactly as it does in a standard Node.js environment.
32
+ - **UPX Compression**: Optional post-build compression with [UPX](https://upx.github.io/) to further reduce binary size.
32
33
 
33
34
  ### Installation
34
35
 
@@ -55,6 +56,18 @@ Call `caxa` from the command line:
55
56
  $ npx caxa --input "." --output "my-app" -- "{{caxa}}/node_modules/.bin/node" "{{caxa}}/dist/index.js"
56
57
  ```
57
58
 
59
+ To create a smaller binary, use the --upx flag. You must have upx installed on your system.
60
+
61
+ ```console
62
+ $ npx caxa --input "." --output "my-app" --upx --upx-args="--best" -- "{{caxa}}/node_modules/.bin/node" "{{caxa}}/dist/index.js"
63
+ ```
64
+
65
+ pnpm is also supported. Below is how `cdxgen` SEA binaries gets created.
66
+
67
+ ```
68
+ $ pnpm --package=@appthreat/caxa dlx caxa --input . --output cdxgen -- "{{caxa}}/node_modules/.bin/node" "{{caxa}}/bin/cdxgen.js"
69
+ ```
70
+
58
71
  ### CLI Reference
59
72
 
60
73
  ```text
@@ -76,6 +89,8 @@ Options:
76
89
  --identifier <identifier> Build identifier used for the extraction path.
77
90
  -B, --no-remove-build-directory [Legacy] Ignored in v2 due to streaming build architecture.
78
91
  -m, --uncompression-message <message> A message to show to the user while uncompressing.
92
+ --upx Compress the output binary with UPX.
93
+ --upx-args <args...> Arguments to pass to UPX (e.g., '--best --lzma').
79
94
  -V, --version output the version number
80
95
  -h, --help display help for command
81
96
  ```
@@ -97,6 +112,8 @@ import caxa from "@appthreat/caxa";
97
112
  "--custom-flag",
98
113
  ],
99
114
  exclude: ["*.log", "tmp/**"],
115
+ upx: true,
116
+ upxArgs: ["--best"],
100
117
  });
101
118
  })();
102
119
  ```
package/build/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import fs from "fs-extra";
3
- export default function caxa({ input, output, command, force, exclude, includeNode, stub, identifier, uncompressionMessage, }: {
3
+ export default function caxa({ input, output, command, force, exclude, includeNode, stub, identifier, uncompressionMessage, upx, upxArgs, }: {
4
4
  input: string;
5
5
  output: string;
6
6
  command: string[];
@@ -12,5 +12,7 @@ export default function caxa({ input, output, command, force, exclude, includeNo
12
12
  identifier?: string;
13
13
  removeBuildDirectory?: boolean;
14
14
  uncompressionMessage?: string;
15
+ upx?: boolean;
16
+ upxArgs?: string[];
15
17
  }): Promise<void>;
16
18
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../source/index.mts"],"names":[],"mappings":";AAKA,OAAO,EAAE,MAAM,UAAU,CAAC;AAyC1B,wBAA8B,IAAI,CAAC,EACjC,KAAK,EACL,MAAM,EACN,OAAO,EACP,KAAY,EACZ,OAAyB,EACzB,WAAkB,EAClB,IAKC,EACD,UAGC,EACD,oBAAoB,GACrB,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,eAAe,CAAC;IAChD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CAmPhB"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../source/index.mts"],"names":[],"mappings":";AAKA,OAAO,EAAE,MAAM,UAAU,CAAC;AAsE1B,wBAA8B,IAAI,CAAC,EACjC,KAAK,EACL,MAAM,EACN,OAAO,EACP,KAAY,EACZ,OAAyB,EACzB,WAAkB,EAClB,IAKC,EACD,UAGC,EACD,oBAAoB,EACpB,GAAW,EACX,OAAY,GACb,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,eAAe,CAAC;IAChD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyPhB"}
package/build/index.mjs CHANGED
@@ -9,6 +9,30 @@ import bash from "dedent";
9
9
  import archiver from "archiver";
10
10
  import * as commander from "commander";
11
11
  import process from "node:process";
12
+ import { spawn } from "node:child_process";
13
+ async function runUpx(file, args) {
14
+ return new Promise((resolve, reject) => {
15
+ const upxProcess = spawn("upx", [...args, file], {
16
+ stdio: "inherit",
17
+ });
18
+ upxProcess.on("error", (error) => {
19
+ if (error.code === "ENOENT") {
20
+ reject(new Error("UPX command not found. Please install UPX and ensure it is in your system's PATH."));
21
+ }
22
+ else {
23
+ reject(error);
24
+ }
25
+ });
26
+ upxProcess.on("close", (code) => {
27
+ if (code !== 0) {
28
+ reject(new Error(`UPX process exited with code ${code}`));
29
+ }
30
+ else {
31
+ resolve();
32
+ }
33
+ });
34
+ });
35
+ }
12
36
  const defaultExcludes = [
13
37
  ".*",
14
38
  "*.exe",
@@ -41,7 +65,7 @@ const defaultExcludes = [
41
65
  "biome.json",
42
66
  "jest.config.js",
43
67
  ];
44
- export default async function caxa({ input, output, command, force = true, exclude = defaultExcludes, includeNode = true, stub = url.fileURLToPath(new URL(`../stubs/stub--${process.platform}--${process.arch}`, import.meta.url)), identifier = path.join(path.basename(path.basename(path.basename(output, ".exe"), ".app"), ".sh"), cryptoRandomString({ length: 10, type: "alphanumeric" }).toLowerCase()), uncompressionMessage, }) {
68
+ export default async function caxa({ input, output, command, force = true, exclude = defaultExcludes, includeNode = true, stub = url.fileURLToPath(new URL(`../stubs/stub--${process.platform}--${process.arch}`, import.meta.url)), identifier = path.join(path.basename(path.basename(path.basename(output, ".exe"), ".app"), ".sh"), cryptoRandomString({ length: 10, type: "alphanumeric" }).toLowerCase()), uncompressionMessage, upx = false, upxArgs = [], }) {
45
69
  if (!(await fs.pathExists(input)) || !(await fs.lstat(input)).isDirectory())
46
70
  throw new Error(`Input isn’t a directory: ‘${input}’.`);
47
71
  if ((await fs.pathExists(output)) && !force)
@@ -213,6 +237,12 @@ export default async function caxa({ input, output, command, force = true, exclu
213
237
  await appendApplicationPayload(output);
214
238
  await fs.appendFile(output, "\n" + JSON.stringify({ identifier, command, uncompressionMessage }));
215
239
  }
240
+ if (upx && !output.endsWith(".app") && !output.endsWith(".sh")) {
241
+ const processedArgs = upxArgs
242
+ .flatMap((arg) => arg.split(/\s+/))
243
+ .filter((arg) => arg.length > 0);
244
+ await runUpx(output, processedArgs);
245
+ }
216
246
  }
217
247
  if (url.fileURLToPath(import.meta.url) === (await fs.realpath(process.argv[1])))
218
248
  await commander.program
@@ -227,6 +257,8 @@ if (url.fileURLToPath(import.meta.url) === (await fs.realpath(process.argv[1])))
227
257
  .option("--identifier <id>", "Build identifier.")
228
258
  .option("-B, --no-remove-build-directory", "Ignored in v2 (streaming build).")
229
259
  .option("-m, --uncompression-message <msg>", "Message to show during extraction.")
260
+ .option("--upx", "Compress the output binary with UPX.")
261
+ .option("--upx-args <args...>", "Arguments to pass to UPX (e.g., '--best --lzma').")
230
262
  .argument("<command...>", "Command to run.")
231
263
  .version(JSON.parse(await fs.readFile(new URL("../package.json", import.meta.url), "utf8")).version)
232
264
  .action(async (command, opts) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../source/index.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../source/index.mts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appthreat/caxa",
3
- "version": "2.0.2",
3
+ "version": "2.0.3",
4
4
  "description": "Package Node.js applications into executable binaries",
5
5
  "author": "Team AppThreat <cloud@appthreat.com>",
6
6
  "homepage": "https://github.com/appthreat/caxa",
package/source/index.mts CHANGED
@@ -10,6 +10,35 @@ import bash from "dedent";
10
10
  import archiver from "archiver";
11
11
  import * as commander from "commander";
12
12
  import process from "node:process";
13
+ import { spawn } from "node:child_process";
14
+
15
+ async function runUpx(file: string, args: string[]): Promise<void> {
16
+ return new Promise((resolve, reject) => {
17
+ const upxProcess = spawn("upx", [...args, file], {
18
+ stdio: "inherit",
19
+ });
20
+
21
+ upxProcess.on("error", (error: NodeJS.ErrnoException) => {
22
+ if (error.code === "ENOENT") {
23
+ reject(
24
+ new Error(
25
+ "UPX command not found. Please install UPX and ensure it is in your system's PATH.",
26
+ ),
27
+ );
28
+ } else {
29
+ reject(error);
30
+ }
31
+ });
32
+
33
+ upxProcess.on("close", (code) => {
34
+ if (code !== 0) {
35
+ reject(new Error(`UPX process exited with code ${code}`));
36
+ } else {
37
+ resolve();
38
+ }
39
+ });
40
+ });
41
+ }
13
42
 
14
43
  const defaultExcludes = [
15
44
  ".*",
@@ -62,6 +91,8 @@ export default async function caxa({
62
91
  cryptoRandomString({ length: 10, type: "alphanumeric" }).toLowerCase(),
63
92
  ),
64
93
  uncompressionMessage,
94
+ upx = false,
95
+ upxArgs = [],
65
96
  }: {
66
97
  input: string;
67
98
  output: string;
@@ -74,6 +105,8 @@ export default async function caxa({
74
105
  identifier?: string;
75
106
  removeBuildDirectory?: boolean;
76
107
  uncompressionMessage?: string;
108
+ upx?: boolean;
109
+ upxArgs?: string[];
77
110
  }): Promise<void> {
78
111
  if (!(await fs.pathExists(input)) || !(await fs.lstat(input)).isDirectory())
79
112
  throw new Error(`Input isn’t a directory: ‘${input}’.`);
@@ -317,6 +350,12 @@ export default async function caxa({
317
350
  "\n" + JSON.stringify({ identifier, command, uncompressionMessage }),
318
351
  );
319
352
  }
353
+ if (upx && !output.endsWith(".app") && !output.endsWith(".sh")) {
354
+ const processedArgs = upxArgs
355
+ .flatMap((arg) => arg.split(/\s+/))
356
+ .filter((arg) => arg.length > 0);
357
+ await runUpx(output, processedArgs);
358
+ }
320
359
  }
321
360
 
322
361
  if (url.fileURLToPath(import.meta.url) === (await fs.realpath(process.argv[1])))
@@ -341,6 +380,11 @@ if (url.fileURLToPath(import.meta.url) === (await fs.realpath(process.argv[1])))
341
380
  "-m, --uncompression-message <msg>",
342
381
  "Message to show during extraction.",
343
382
  )
383
+ .option("--upx", "Compress the output binary with UPX.")
384
+ .option(
385
+ "--upx-args <args...>",
386
+ "Arguments to pass to UPX (e.g., '--best --lzma').",
387
+ )
344
388
  .argument("<command...>", "Command to run.")
345
389
  .version(
346
390
  JSON.parse(