@metamask-previews/local-node-utils 0.0.0-preview-3e8f1945e → 0.0.0-preview-5133205c8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/CHANGELOG.md +0 -4
  2. package/README.md +1 -11
  3. package/dist/index.cjs +10 -34
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.d.cts +7 -15
  6. package/dist/index.d.cts.map +1 -1
  7. package/dist/index.d.mts +7 -15
  8. package/dist/index.d.mts.map +1 -1
  9. package/dist/index.mjs +9 -13
  10. package/dist/index.mjs.map +1 -1
  11. package/package.json +1 -5
  12. package/dist/archive.cjs +0 -13
  13. package/dist/archive.cjs.map +0 -1
  14. package/dist/archive.d.cts +0 -3
  15. package/dist/archive.d.cts.map +0 -1
  16. package/dist/archive.d.mts +0 -3
  17. package/dist/archive.d.mts.map +0 -1
  18. package/dist/archive.mjs +0 -8
  19. package/dist/archive.mjs.map +0 -1
  20. package/dist/artifact.cjs +0 -40
  21. package/dist/artifact.cjs.map +0 -1
  22. package/dist/artifact.d.cts +0 -6
  23. package/dist/artifact.d.cts.map +0 -1
  24. package/dist/artifact.d.mts +0 -6
  25. package/dist/artifact.d.mts.map +0 -1
  26. package/dist/artifact.mjs +0 -33
  27. package/dist/artifact.mjs.map +0 -1
  28. package/dist/cache-directory.cjs +0 -28
  29. package/dist/cache-directory.cjs.map +0 -1
  30. package/dist/cache-directory.d.cts +0 -6
  31. package/dist/cache-directory.d.cts.map +0 -1
  32. package/dist/cache-directory.d.mts +0 -6
  33. package/dist/cache-directory.d.mts.map +0 -1
  34. package/dist/cache-directory.mjs +0 -24
  35. package/dist/cache-directory.mjs.map +0 -1
  36. package/dist/cache.cjs +0 -14
  37. package/dist/cache.cjs.map +0 -1
  38. package/dist/cache.d.cts +0 -5
  39. package/dist/cache.d.cts.map +0 -1
  40. package/dist/cache.d.mts +0 -5
  41. package/dist/cache.d.mts.map +0 -1
  42. package/dist/cache.mjs +0 -10
  43. package/dist/cache.mjs.map +0 -1
  44. package/dist/checksum.cjs +0 -17
  45. package/dist/checksum.cjs.map +0 -1
  46. package/dist/checksum.d.cts +0 -2
  47. package/dist/checksum.d.cts.map +0 -1
  48. package/dist/checksum.d.mts +0 -2
  49. package/dist/checksum.d.mts.map +0 -1
  50. package/dist/checksum.mjs +0 -13
  51. package/dist/checksum.mjs.map +0 -1
  52. package/dist/cli.cjs +0 -11
  53. package/dist/cli.cjs.map +0 -1
  54. package/dist/cli.d.cts +0 -2
  55. package/dist/cli.d.cts.map +0 -1
  56. package/dist/cli.d.mts +0 -2
  57. package/dist/cli.d.mts.map +0 -1
  58. package/dist/cli.mjs +0 -7
  59. package/dist/cli.mjs.map +0 -1
  60. package/dist/command.cjs +0 -28
  61. package/dist/command.cjs.map +0 -1
  62. package/dist/command.d.cts +0 -2
  63. package/dist/command.d.cts.map +0 -1
  64. package/dist/command.d.mts +0 -2
  65. package/dist/command.d.mts.map +0 -1
  66. package/dist/command.mjs +0 -24
  67. package/dist/command.mjs.map +0 -1
  68. package/dist/download.cjs +0 -47
  69. package/dist/download.cjs.map +0 -1
  70. package/dist/download.d.cts +0 -4
  71. package/dist/download.d.cts.map +0 -1
  72. package/dist/download.d.mts +0 -4
  73. package/dist/download.d.mts.map +0 -1
  74. package/dist/download.mjs +0 -42
  75. package/dist/download.mjs.map +0 -1
  76. package/dist/errors.cjs +0 -11
  77. package/dist/errors.cjs.map +0 -1
  78. package/dist/errors.d.cts +0 -2
  79. package/dist/errors.d.cts.map +0 -1
  80. package/dist/errors.d.mts +0 -2
  81. package/dist/errors.d.mts.map +0 -1
  82. package/dist/errors.mjs +0 -7
  83. package/dist/errors.mjs.map +0 -1
  84. package/dist/executable-wrapper.cjs +0 -76
  85. package/dist/executable-wrapper.cjs.map +0 -1
  86. package/dist/executable-wrapper.d.cts +0 -9
  87. package/dist/executable-wrapper.d.cts.map +0 -1
  88. package/dist/executable-wrapper.d.mts +0 -9
  89. package/dist/executable-wrapper.d.mts.map +0 -1
  90. package/dist/executable-wrapper.mjs +0 -72
  91. package/dist/executable-wrapper.mjs.map +0 -1
  92. package/dist/filesystem.cjs +0 -45
  93. package/dist/filesystem.cjs.map +0 -1
  94. package/dist/filesystem.d.cts +0 -4
  95. package/dist/filesystem.d.cts.map +0 -1
  96. package/dist/filesystem.d.mts +0 -4
  97. package/dist/filesystem.d.mts.map +0 -1
  98. package/dist/filesystem.mjs +0 -39
  99. package/dist/filesystem.mjs.map +0 -1
  100. package/dist/package-json.cjs +0 -29
  101. package/dist/package-json.cjs.map +0 -1
  102. package/dist/package-json.d.cts +0 -6
  103. package/dist/package-json.d.cts.map +0 -1
  104. package/dist/package-json.d.mts +0 -6
  105. package/dist/package-json.d.mts.map +0 -1
  106. package/dist/package-json.mjs +0 -25
  107. package/dist/package-json.mjs.map +0 -1
  108. package/dist/platform.cjs +0 -25
  109. package/dist/platform.cjs.map +0 -1
  110. package/dist/platform.d.cts +0 -3
  111. package/dist/platform.d.cts.map +0 -1
  112. package/dist/platform.d.mts +0 -3
  113. package/dist/platform.d.mts.map +0 -1
  114. package/dist/platform.mjs +0 -20
  115. package/dist/platform.mjs.map +0 -1
  116. package/dist/types.cjs +0 -3
  117. package/dist/types.cjs.map +0 -1
  118. package/dist/types.d.cts +0 -14
  119. package/dist/types.d.cts.map +0 -1
  120. package/dist/types.d.mts +0 -14
  121. package/dist/types.d.mts.map +0 -1
  122. package/dist/types.mjs +0 -2
  123. package/dist/types.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"checksum.mjs","sourceRoot":"","sources":["../src/checksum.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,UAAU,EAAE,oBAAoB;AACzC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB;AAC3C,OAAO,EAAE,QAAQ,EAAE,6BAA6B;AAEhD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,gBAAwB,EACxB,KAAa;IAEb,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpC,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,gCAAgC,gBAAgB,SAAS,QAAQ,GAAG,CAC7E,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["/* eslint-disable import-x/no-nodejs-modules */\nimport { createHash } from 'node:crypto';\nimport { createReadStream } from 'node:fs';\nimport { pipeline } from 'node:stream/promises';\n\nexport async function verifyFileChecksum(\n filePath: string,\n expectedChecksum: string,\n label: string,\n): Promise<void> {\n const hash = createHash('sha256');\n await pipeline(createReadStream(filePath), hash);\n const checksum = hash.digest('hex');\n\n if (checksum !== expectedChecksum) {\n throw new Error(\n `${label} checksum mismatch. Expected ${expectedChecksum}, got ${checksum}.`,\n );\n }\n}\n"]}
package/dist/cli.cjs DELETED
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readCliValue = void 0;
4
- function readCliValue(option, value) {
5
- if (!value || value.startsWith('--')) {
6
- throw new Error(`${option} requires a value.`);
7
- }
8
- return value;
9
- }
10
- exports.readCliValue = readCliValue;
11
- //# sourceMappingURL=cli.cjs.map
package/dist/cli.cjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.cjs","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAAA,SAAgB,YAAY,CAC1B,MAAc,EACd,KAAyB;IAEzB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,oBAAoB,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AATD,oCASC","sourcesContent":["export function readCliValue(\n option: string,\n value: string | undefined,\n): string {\n if (!value || value.startsWith('--')) {\n throw new Error(`${option} requires a value.`);\n }\n\n return value;\n}\n"]}
package/dist/cli.d.cts DELETED
@@ -1,2 +0,0 @@
1
- export declare function readCliValue(option: string, value: string | undefined): string;
2
- //# sourceMappingURL=cli.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.cts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,CAMR"}
package/dist/cli.d.mts DELETED
@@ -1,2 +0,0 @@
1
- export declare function readCliValue(option: string, value: string | undefined): string;
2
- //# sourceMappingURL=cli.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.mts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,CAMR"}
package/dist/cli.mjs DELETED
@@ -1,7 +0,0 @@
1
- export function readCliValue(option, value) {
2
- if (!value || value.startsWith('--')) {
3
- throw new Error(`${option} requires a value.`);
4
- }
5
- return value;
6
- }
7
- //# sourceMappingURL=cli.mjs.map
package/dist/cli.mjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.mjs","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAC1B,MAAc,EACd,KAAyB;IAEzB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,oBAAoB,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["export function readCliValue(\n option: string,\n value: string | undefined,\n): string {\n if (!value || value.startsWith('--')) {\n throw new Error(`${option} requires a value.`);\n }\n\n return value;\n}\n"]}
package/dist/command.cjs DELETED
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runCommand = void 0;
4
- /* eslint-disable import-x/no-nodejs-modules */
5
- const node_child_process_1 = require("node:child_process");
6
- async function runCommand(command, args) {
7
- await new Promise((resolvePromise, rejectPromise) => {
8
- const child = (0, node_child_process_1.spawn)(command, args, {
9
- shell: false,
10
- stdio: ['ignore', 'ignore', 'pipe'],
11
- });
12
- let stderr = '';
13
- child.stderr.on('data', (chunk) => {
14
- stderr += chunk.toString();
15
- });
16
- child.on('error', rejectPromise);
17
- child.on('close', (code, signal) => {
18
- if (code === 0) {
19
- resolvePromise();
20
- return;
21
- }
22
- const exitStatus = signal ? `signal ${signal}` : `code ${code ?? 'null'}`;
23
- rejectPromise(new Error(`${command} ${args.join(' ')} failed with ${exitStatus}: ${stderr}`));
24
- });
25
- });
26
- }
27
- exports.runCommand = runCommand;
28
- //# sourceMappingURL=command.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command.cjs","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":";;;AAAA,+CAA+C;AAC/C,2DAA2C;AAEpC,KAAK,UAAU,UAAU,CAC9B,OAAe,EACf,IAAc;IAEd,MAAM,IAAI,OAAO,CAAO,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;QACxD,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,OAAO,EAAE,IAAI,EAAE;YACjC,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;SACpC,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACjC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACjC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,cAAc,EAAE,CAAC;gBACjB,OAAO;YACT,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1E,aAAa,CACX,IAAI,KAAK,CACP,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,UAAU,KAAK,MAAM,EAAE,CACpE,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AA7BD,gCA6BC","sourcesContent":["/* eslint-disable import-x/no-nodejs-modules */\nimport { spawn } from 'node:child_process';\n\nexport async function runCommand(\n command: string,\n args: string[],\n): Promise<void> {\n await new Promise<void>((resolvePromise, rejectPromise) => {\n const child = spawn(command, args, {\n shell: false,\n stdio: ['ignore', 'ignore', 'pipe'],\n });\n let stderr = '';\n\n child.stderr.on('data', (chunk) => {\n stderr += chunk.toString();\n });\n child.on('error', rejectPromise);\n child.on('close', (code, signal) => {\n if (code === 0) {\n resolvePromise();\n return;\n }\n\n const exitStatus = signal ? `signal ${signal}` : `code ${code ?? 'null'}`;\n rejectPromise(\n new Error(\n `${command} ${args.join(' ')} failed with ${exitStatus}: ${stderr}`,\n ),\n );\n });\n });\n}\n"]}
@@ -1,2 +0,0 @@
1
- export declare function runCommand(command: string, args: string[]): Promise<void>;
2
- //# sourceMappingURL=command.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command.d.cts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAGA,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
@@ -1,2 +0,0 @@
1
- export declare function runCommand(command: string, args: string[]): Promise<void>;
2
- //# sourceMappingURL=command.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command.d.mts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAGA,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
package/dist/command.mjs DELETED
@@ -1,24 +0,0 @@
1
- /* eslint-disable import-x/no-nodejs-modules */
2
- import { spawn } from "node:child_process";
3
- export async function runCommand(command, args) {
4
- await new Promise((resolvePromise, rejectPromise) => {
5
- const child = spawn(command, args, {
6
- shell: false,
7
- stdio: ['ignore', 'ignore', 'pipe'],
8
- });
9
- let stderr = '';
10
- child.stderr.on('data', (chunk) => {
11
- stderr += chunk.toString();
12
- });
13
- child.on('error', rejectPromise);
14
- child.on('close', (code, signal) => {
15
- if (code === 0) {
16
- resolvePromise();
17
- return;
18
- }
19
- const exitStatus = signal ? `signal ${signal}` : `code ${code ?? 'null'}`;
20
- rejectPromise(new Error(`${command} ${args.join(' ')} failed with ${exitStatus}: ${stderr}`));
21
- });
22
- });
23
- }
24
- //# sourceMappingURL=command.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command.mjs","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,KAAK,EAAE,2BAA2B;AAE3C,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAe,EACf,IAAc;IAEd,MAAM,IAAI,OAAO,CAAO,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;QACxD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;YACjC,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;SACpC,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACjC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACjC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,cAAc,EAAE,CAAC;gBACjB,OAAO;YACT,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1E,aAAa,CACX,IAAI,KAAK,CACP,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,UAAU,KAAK,MAAM,EAAE,CACpE,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/* eslint-disable import-x/no-nodejs-modules */\nimport { spawn } from 'node:child_process';\n\nexport async function runCommand(\n command: string,\n args: string[],\n): Promise<void> {\n await new Promise<void>((resolvePromise, rejectPromise) => {\n const child = spawn(command, args, {\n shell: false,\n stdio: ['ignore', 'ignore', 'pipe'],\n });\n let stderr = '';\n\n child.stderr.on('data', (chunk) => {\n stderr += chunk.toString();\n });\n child.on('error', rejectPromise);\n child.on('close', (code, signal) => {\n if (code === 0) {\n resolvePromise();\n return;\n }\n\n const exitStatus = signal ? `signal ${signal}` : `code ${code ?? 'null'}`;\n rejectPromise(\n new Error(\n `${command} ${args.join(' ')} failed with ${exitStatus}: ${stderr}`,\n ),\n );\n });\n });\n}\n"]}
package/dist/download.cjs DELETED
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.openDownloadStream = exports.downloadFileFromUrl = void 0;
4
- /* eslint-disable import-x/no-nodejs-modules */
5
- const node_fs_1 = require("node:fs");
6
- const promises_1 = require("node:fs/promises");
7
- const node_http_1 = require("node:http");
8
- const node_https_1 = require("node:https");
9
- const node_path_1 = require("node:path");
10
- const promises_2 = require("node:stream/promises");
11
- async function downloadFileFromUrl(url, destination) {
12
- await (0, promises_1.mkdir)((0, node_path_1.dirname)(destination), { recursive: true });
13
- await (0, promises_2.pipeline)(await openDownloadStream(new URL(url)), (0, node_fs_1.createWriteStream)(destination));
14
- }
15
- exports.downloadFileFromUrl = downloadFileFromUrl;
16
- async function openDownloadStream(url, redirectsRemaining = 5) {
17
- const request = url.protocol === 'http:' ? node_http_1.request : node_https_1.request;
18
- return await new Promise((resolvePromise, rejectPromise) => {
19
- const req = request(url, (response) => {
20
- const { headers, statusCode, statusMessage } = response;
21
- if (statusCode &&
22
- statusCode >= 300 &&
23
- statusCode < 400 &&
24
- headers.location) {
25
- response.resume();
26
- if (redirectsRemaining <= 0) {
27
- rejectPromise(new Error(`Too many redirects downloading ${url}`));
28
- return;
29
- }
30
- openDownloadStream(new URL(headers.location, url), redirectsRemaining - 1)
31
- .then(resolvePromise)
32
- .catch(rejectPromise);
33
- return;
34
- }
35
- if (!statusCode || statusCode < 200 || statusCode >= 300) {
36
- response.resume();
37
- rejectPromise(new Error(`Request to ${url} failed with ${statusCode ?? 'unknown'} ${statusMessage ?? ''}`.trim()));
38
- return;
39
- }
40
- resolvePromise(response);
41
- });
42
- req.on('error', rejectPromise);
43
- req.end();
44
- });
45
- }
46
- exports.openDownloadStream = openDownloadStream;
47
- //# sourceMappingURL=download.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"download.cjs","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":";;;AAAA,+CAA+C;AAC/C,qCAA4C;AAC5C,+CAAyC;AACzC,yCAAmD;AACnD,2CAAqD;AACrD,yCAAoC;AACpC,mDAAgD;AAEzC,KAAK,UAAU,mBAAmB,CACvC,GAAW,EACX,WAAmB;IAEnB,MAAM,IAAA,gBAAK,EAAC,IAAA,mBAAO,EAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,IAAA,mBAAQ,EACZ,MAAM,kBAAkB,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EACtC,IAAA,2BAAiB,EAAC,WAAW,CAAC,CAC/B,CAAC;AACJ,CAAC;AATD,kDASC;AAEM,KAAK,UAAU,kBAAkB,CACtC,GAAQ,EACR,kBAAkB,GAAG,CAAC;IAEtB,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAW,CAAC,CAAC,CAAC,oBAAY,CAAC;IAEtE,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;QACzD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE;YACpC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAC;YAExD,IACE,UAAU;gBACV,UAAU,IAAI,GAAG;gBACjB,UAAU,GAAG,GAAG;gBAChB,OAAO,CAAC,QAAQ,EAChB,CAAC;gBACD,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAClB,IAAI,kBAAkB,IAAI,CAAC,EAAE,CAAC;oBAC5B,aAAa,CAAC,IAAI,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC,CAAC;oBAClE,OAAO;gBACT,CAAC;gBAED,kBAAkB,CAChB,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,EAC9B,kBAAkB,GAAG,CAAC,CACvB;qBACE,IAAI,CAAC,cAAc,CAAC;qBACpB,KAAK,CAAC,aAAa,CAAC,CAAC;gBACxB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,UAAU,IAAI,UAAU,GAAG,GAAG,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;gBACzD,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAClB,aAAa,CACX,IAAI,KAAK,CACP,cAAc,GAAG,gBAAgB,UAAU,IAAI,SAAS,IACtD,aAAa,IAAI,EACnB,EAAE,CAAC,IAAI,EAAE,CACV,CACF,CAAC;gBACF,OAAO;YACT,CAAC;YAED,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAjDD,gDAiDC","sourcesContent":["/* eslint-disable import-x/no-nodejs-modules */\nimport { createWriteStream } from 'node:fs';\nimport { mkdir } from 'node:fs/promises';\nimport { request as requestHttp } from 'node:http';\nimport { request as requestHttps } from 'node:https';\nimport { dirname } from 'node:path';\nimport { pipeline } from 'node:stream/promises';\n\nexport async function downloadFileFromUrl(\n url: string,\n destination: string,\n): Promise<void> {\n await mkdir(dirname(destination), { recursive: true });\n await pipeline(\n await openDownloadStream(new URL(url)),\n createWriteStream(destination),\n );\n}\n\nexport async function openDownloadStream(\n url: URL,\n redirectsRemaining = 5,\n): Promise<NodeJS.ReadableStream> {\n const request = url.protocol === 'http:' ? requestHttp : requestHttps;\n\n return await new Promise((resolvePromise, rejectPromise) => {\n const req = request(url, (response) => {\n const { headers, statusCode, statusMessage } = response;\n\n if (\n statusCode &&\n statusCode >= 300 &&\n statusCode < 400 &&\n headers.location\n ) {\n response.resume();\n if (redirectsRemaining <= 0) {\n rejectPromise(new Error(`Too many redirects downloading ${url}`));\n return;\n }\n\n openDownloadStream(\n new URL(headers.location, url),\n redirectsRemaining - 1,\n )\n .then(resolvePromise)\n .catch(rejectPromise);\n return;\n }\n\n if (!statusCode || statusCode < 200 || statusCode >= 300) {\n response.resume();\n rejectPromise(\n new Error(\n `Request to ${url} failed with ${statusCode ?? 'unknown'} ${\n statusMessage ?? ''\n }`.trim(),\n ),\n );\n return;\n }\n\n resolvePromise(response);\n });\n\n req.on('error', rejectPromise);\n req.end();\n });\n}\n"]}
@@ -1,4 +0,0 @@
1
- /// <reference types="node" />
2
- export declare function downloadFileFromUrl(url: string, destination: string): Promise<void>;
3
- export declare function openDownloadStream(url: URL, redirectsRemaining?: number): Promise<NodeJS.ReadableStream>;
4
- //# sourceMappingURL=download.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"download.d.cts","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":";AAQA,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,GAAG,EACR,kBAAkB,SAAI,GACrB,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CA8ChC"}
@@ -1,4 +0,0 @@
1
- /// <reference types="node" />
2
- export declare function downloadFileFromUrl(url: string, destination: string): Promise<void>;
3
- export declare function openDownloadStream(url: URL, redirectsRemaining?: number): Promise<NodeJS.ReadableStream>;
4
- //# sourceMappingURL=download.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"download.d.mts","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":";AAQA,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,GAAG,EACR,kBAAkB,SAAI,GACrB,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CA8ChC"}
package/dist/download.mjs DELETED
@@ -1,42 +0,0 @@
1
- /* eslint-disable import-x/no-nodejs-modules */
2
- import { createWriteStream } from "node:fs";
3
- import { mkdir } from "node:fs/promises";
4
- import { request as requestHttp } from "node:http";
5
- import { request as requestHttps } from "node:https";
6
- import { dirname } from "node:path";
7
- import { pipeline } from "node:stream/promises";
8
- export async function downloadFileFromUrl(url, destination) {
9
- await mkdir(dirname(destination), { recursive: true });
10
- await pipeline(await openDownloadStream(new URL(url)), createWriteStream(destination));
11
- }
12
- export async function openDownloadStream(url, redirectsRemaining = 5) {
13
- const request = url.protocol === 'http:' ? requestHttp : requestHttps;
14
- return await new Promise((resolvePromise, rejectPromise) => {
15
- const req = request(url, (response) => {
16
- const { headers, statusCode, statusMessage } = response;
17
- if (statusCode &&
18
- statusCode >= 300 &&
19
- statusCode < 400 &&
20
- headers.location) {
21
- response.resume();
22
- if (redirectsRemaining <= 0) {
23
- rejectPromise(new Error(`Too many redirects downloading ${url}`));
24
- return;
25
- }
26
- openDownloadStream(new URL(headers.location, url), redirectsRemaining - 1)
27
- .then(resolvePromise)
28
- .catch(rejectPromise);
29
- return;
30
- }
31
- if (!statusCode || statusCode < 200 || statusCode >= 300) {
32
- response.resume();
33
- rejectPromise(new Error(`Request to ${url} failed with ${statusCode ?? 'unknown'} ${statusMessage ?? ''}`.trim()));
34
- return;
35
- }
36
- resolvePromise(response);
37
- });
38
- req.on('error', rejectPromise);
39
- req.end();
40
- });
41
- }
42
- //# sourceMappingURL=download.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"download.mjs","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,iBAAiB,EAAE,gBAAgB;AAC5C,OAAO,EAAE,KAAK,EAAE,yBAAyB;AACzC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,kBAAkB;AACnD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,mBAAmB;AACrD,OAAO,EAAE,OAAO,EAAE,kBAAkB;AACpC,OAAO,EAAE,QAAQ,EAAE,6BAA6B;AAEhD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAW,EACX,WAAmB;IAEnB,MAAM,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,QAAQ,CACZ,MAAM,kBAAkB,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EACtC,iBAAiB,CAAC,WAAW,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAQ,EACR,kBAAkB,GAAG,CAAC;IAEtB,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;IAEtE,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;QACzD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE;YACpC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAC;YAExD,IACE,UAAU;gBACV,UAAU,IAAI,GAAG;gBACjB,UAAU,GAAG,GAAG;gBAChB,OAAO,CAAC,QAAQ,EAChB,CAAC;gBACD,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAClB,IAAI,kBAAkB,IAAI,CAAC,EAAE,CAAC;oBAC5B,aAAa,CAAC,IAAI,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC,CAAC;oBAClE,OAAO;gBACT,CAAC;gBAED,kBAAkB,CAChB,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,EAC9B,kBAAkB,GAAG,CAAC,CACvB;qBACE,IAAI,CAAC,cAAc,CAAC;qBACpB,KAAK,CAAC,aAAa,CAAC,CAAC;gBACxB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,UAAU,IAAI,UAAU,GAAG,GAAG,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;gBACzD,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAClB,aAAa,CACX,IAAI,KAAK,CACP,cAAc,GAAG,gBAAgB,UAAU,IAAI,SAAS,IACtD,aAAa,IAAI,EACnB,EAAE,CAAC,IAAI,EAAE,CACV,CACF,CAAC;gBACF,OAAO;YACT,CAAC;YAED,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/* eslint-disable import-x/no-nodejs-modules */\nimport { createWriteStream } from 'node:fs';\nimport { mkdir } from 'node:fs/promises';\nimport { request as requestHttp } from 'node:http';\nimport { request as requestHttps } from 'node:https';\nimport { dirname } from 'node:path';\nimport { pipeline } from 'node:stream/promises';\n\nexport async function downloadFileFromUrl(\n url: string,\n destination: string,\n): Promise<void> {\n await mkdir(dirname(destination), { recursive: true });\n await pipeline(\n await openDownloadStream(new URL(url)),\n createWriteStream(destination),\n );\n}\n\nexport async function openDownloadStream(\n url: URL,\n redirectsRemaining = 5,\n): Promise<NodeJS.ReadableStream> {\n const request = url.protocol === 'http:' ? requestHttp : requestHttps;\n\n return await new Promise((resolvePromise, rejectPromise) => {\n const req = request(url, (response) => {\n const { headers, statusCode, statusMessage } = response;\n\n if (\n statusCode &&\n statusCode >= 300 &&\n statusCode < 400 &&\n headers.location\n ) {\n response.resume();\n if (redirectsRemaining <= 0) {\n rejectPromise(new Error(`Too many redirects downloading ${url}`));\n return;\n }\n\n openDownloadStream(\n new URL(headers.location, url),\n redirectsRemaining - 1,\n )\n .then(resolvePromise)\n .catch(rejectPromise);\n return;\n }\n\n if (!statusCode || statusCode < 200 || statusCode >= 300) {\n response.resume();\n rejectPromise(\n new Error(\n `Request to ${url} failed with ${statusCode ?? 'unknown'} ${\n statusMessage ?? ''\n }`.trim(),\n ),\n );\n return;\n }\n\n resolvePromise(response);\n });\n\n req.on('error', rejectPromise);\n req.end();\n });\n}\n"]}
package/dist/errors.cjs DELETED
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isFileMissingError = void 0;
4
- function isFileMissingError(error) {
5
- return (typeof error === 'object' &&
6
- error !== null &&
7
- Object.prototype.hasOwnProperty.call(error, 'code') &&
8
- error.code === 'ENOENT');
9
- }
10
- exports.isFileMissingError = isFileMissingError;
11
- //# sourceMappingURL=errors.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.cjs","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,SAAgB,kBAAkB,CAAC,KAAc;IAC/C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;QAClD,KAA+B,CAAC,IAAI,KAAK,QAAQ,CACnD,CAAC;AACJ,CAAC;AAPD,gDAOC","sourcesContent":["export function isFileMissingError(error: unknown): boolean {\n return (\n typeof error === 'object' &&\n error !== null &&\n Object.prototype.hasOwnProperty.call(error, 'code') &&\n (error as NodeJS.ErrnoException).code === 'ENOENT'\n );\n}\n"]}
package/dist/errors.d.cts DELETED
@@ -1,2 +0,0 @@
1
- export declare function isFileMissingError(error: unknown): boolean;
2
- //# sourceMappingURL=errors.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.cts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAO1D"}
package/dist/errors.d.mts DELETED
@@ -1,2 +0,0 @@
1
- export declare function isFileMissingError(error: unknown): boolean;
2
- //# sourceMappingURL=errors.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.mts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAO1D"}
package/dist/errors.mjs DELETED
@@ -1,7 +0,0 @@
1
- export function isFileMissingError(error) {
2
- return (typeof error === 'object' &&
3
- error !== null &&
4
- Object.prototype.hasOwnProperty.call(error, 'code') &&
5
- error.code === 'ENOENT');
6
- }
7
- //# sourceMappingURL=errors.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.mjs","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;QAClD,KAA+B,CAAC,IAAI,KAAK,QAAQ,CACnD,CAAC;AACJ,CAAC","sourcesContent":["export function isFileMissingError(error: unknown): boolean {\n return (\n typeof error === 'object' &&\n error !== null &&\n Object.prototype.hasOwnProperty.call(error, 'code') &&\n (error as NodeJS.ErrnoException).code === 'ENOENT'\n );\n}\n"]}
@@ -1,76 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.installExecutableWrapper = void 0;
4
- /* eslint-disable import-x/no-nodejs-modules */
5
- const promises_1 = require("node:fs/promises");
6
- const node_path_1 = require("node:path");
7
- const errors_1 = require("./errors.cjs");
8
- async function installExecutableWrapper({ binDirectory, commandName, executableArgs = [], executablePath, pathResolution = 'absolute', }) {
9
- const binaryPath = (0, node_path_1.join)(binDirectory, commandName);
10
- const wrapperSource = buildExecutableWrapperSource({
11
- binDirectory,
12
- executableArgs,
13
- executablePath,
14
- pathResolution,
15
- });
16
- await (0, promises_1.mkdir)(binDirectory, { recursive: true });
17
- await (0, promises_1.unlink)(binaryPath).catch((error) => {
18
- if (!(0, errors_1.isFileMissingError)(error)) {
19
- throw error;
20
- }
21
- });
22
- await (0, promises_1.writeFile)(binaryPath, wrapperSource);
23
- await (0, promises_1.chmod)(binaryPath, 0o755);
24
- return binaryPath;
25
- }
26
- exports.installExecutableWrapper = installExecutableWrapper;
27
- function buildExecutableWrapperSource({ binDirectory, executableArgs, executablePath, pathResolution, }) {
28
- if (pathResolution === 'relative') {
29
- const relativeExecutablePath = (0, node_path_1.relative)(binDirectory, executablePath);
30
- return `#!/usr/bin/env node
31
- const { spawnSync } = require('node:child_process');
32
- const path = require('node:path');
33
-
34
- const executablePath = path.resolve(__dirname, ${JSON.stringify(relativeExecutablePath)});
35
- const executableArgs = ${JSON.stringify(executableArgs)};
36
- const result = spawnSync(executablePath, executableArgs.concat(process.argv.slice(2)), {
37
- stdio: 'inherit',
38
- });
39
-
40
- if (result.error) {
41
- console.error(result.error.message);
42
- process.exit(1);
43
- }
44
-
45
- if (result.signal) {
46
- process.kill(process.pid, result.signal);
47
- process.exit(1);
48
- }
49
-
50
- process.exit(result.status ?? 0);
51
- `;
52
- }
53
- const resolvedExecutablePath = (0, node_path_1.resolve)(executablePath);
54
- return `#!/usr/bin/env node
55
- const { spawnSync } = require('node:child_process');
56
-
57
- const executablePath = ${JSON.stringify(resolvedExecutablePath)};
58
- const executableArgs = ${JSON.stringify(executableArgs)};
59
- const result = spawnSync(executablePath, executableArgs.concat(process.argv.slice(2)), {
60
- stdio: 'inherit',
61
- });
62
-
63
- if (result.error) {
64
- console.error(result.error.message);
65
- process.exit(1);
66
- }
67
-
68
- if (result.signal) {
69
- process.kill(process.pid, result.signal);
70
- process.exit(1);
71
- }
72
-
73
- process.exit(result.status ?? 0);
74
- `;
75
- }
76
- //# sourceMappingURL=executable-wrapper.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executable-wrapper.cjs","sourceRoot":"","sources":["../src/executable-wrapper.ts"],"names":[],"mappings":";;;AAAA,+CAA+C;AAC/C,+CAAmE;AACnE,yCAAoD;AAEpD,yCAA8C;AAIvC,KAAK,UAAU,wBAAwB,CAAC,EAC7C,YAAY,EACZ,WAAW,EACX,cAAc,GAAG,EAAE,EACnB,cAAc,EACd,cAAc,GAAG,UAAU,GAO5B;IACC,MAAM,UAAU,GAAG,IAAA,gBAAI,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,4BAA4B,CAAC;QACjD,YAAY;QACZ,cAAc;QACd,cAAc;QACd,cAAc;KACf,CAAC,CAAC;IAEH,MAAM,IAAA,gBAAK,EAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,IAAA,iBAAM,EAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACvC,IAAI,CAAC,IAAA,2BAAkB,EAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,IAAA,oBAAS,EAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC3C,MAAM,IAAA,gBAAK,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAE/B,OAAO,UAAU,CAAC;AACpB,CAAC;AA/BD,4DA+BC;AAED,SAAS,4BAA4B,CAAC,EACpC,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,GAMf;IACC,IAAI,cAAc,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,sBAAsB,GAAG,IAAA,oBAAQ,EAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAEtE,OAAO;;;;iDAIsC,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC;yBAC9D,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;CAgBtD,CAAC;IACA,CAAC;IAED,MAAM,sBAAsB,GAAG,IAAA,mBAAO,EAAC,cAAc,CAAC,CAAC;IAEvD,OAAO;;;yBAGgB,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC;yBACtC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;CAgBtD,CAAC;AACF,CAAC","sourcesContent":["/* eslint-disable import-x/no-nodejs-modules */\nimport { chmod, mkdir, unlink, writeFile } from 'node:fs/promises';\nimport { join, relative, resolve } from 'node:path';\n\nimport { isFileMissingError } from './errors';\n\nexport type ExecutableWrapperPathResolution = 'absolute' | 'relative';\n\nexport async function installExecutableWrapper({\n binDirectory,\n commandName,\n executableArgs = [],\n executablePath,\n pathResolution = 'absolute',\n}: {\n binDirectory: string;\n commandName: string;\n executableArgs?: string[];\n executablePath: string;\n pathResolution?: ExecutableWrapperPathResolution;\n}): Promise<string> {\n const binaryPath = join(binDirectory, commandName);\n const wrapperSource = buildExecutableWrapperSource({\n binDirectory,\n executableArgs,\n executablePath,\n pathResolution,\n });\n\n await mkdir(binDirectory, { recursive: true });\n await unlink(binaryPath).catch((error) => {\n if (!isFileMissingError(error)) {\n throw error;\n }\n });\n await writeFile(binaryPath, wrapperSource);\n await chmod(binaryPath, 0o755);\n\n return binaryPath;\n}\n\nfunction buildExecutableWrapperSource({\n binDirectory,\n executableArgs,\n executablePath,\n pathResolution,\n}: {\n binDirectory: string;\n executableArgs: string[];\n executablePath: string;\n pathResolution: ExecutableWrapperPathResolution;\n}): string {\n if (pathResolution === 'relative') {\n const relativeExecutablePath = relative(binDirectory, executablePath);\n\n return `#!/usr/bin/env node\nconst { spawnSync } = require('node:child_process');\nconst path = require('node:path');\n\nconst executablePath = path.resolve(__dirname, ${JSON.stringify(relativeExecutablePath)});\nconst executableArgs = ${JSON.stringify(executableArgs)};\nconst result = spawnSync(executablePath, executableArgs.concat(process.argv.slice(2)), {\n stdio: 'inherit',\n});\n\nif (result.error) {\n console.error(result.error.message);\n process.exit(1);\n}\n\nif (result.signal) {\n process.kill(process.pid, result.signal);\n process.exit(1);\n}\n\nprocess.exit(result.status ?? 0);\n`;\n }\n\n const resolvedExecutablePath = resolve(executablePath);\n\n return `#!/usr/bin/env node\nconst { spawnSync } = require('node:child_process');\n\nconst executablePath = ${JSON.stringify(resolvedExecutablePath)};\nconst executableArgs = ${JSON.stringify(executableArgs)};\nconst result = spawnSync(executablePath, executableArgs.concat(process.argv.slice(2)), {\n stdio: 'inherit',\n});\n\nif (result.error) {\n console.error(result.error.message);\n process.exit(1);\n}\n\nif (result.signal) {\n process.kill(process.pid, result.signal);\n process.exit(1);\n}\n\nprocess.exit(result.status ?? 0);\n`;\n}\n"]}
@@ -1,9 +0,0 @@
1
- export type ExecutableWrapperPathResolution = 'absolute' | 'relative';
2
- export declare function installExecutableWrapper({ binDirectory, commandName, executableArgs, executablePath, pathResolution, }: {
3
- binDirectory: string;
4
- commandName: string;
5
- executableArgs?: string[];
6
- executablePath: string;
7
- pathResolution?: ExecutableWrapperPathResolution;
8
- }): Promise<string>;
9
- //# sourceMappingURL=executable-wrapper.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executable-wrapper.d.cts","sourceRoot":"","sources":["../src/executable-wrapper.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,+BAA+B,GAAG,UAAU,GAAG,UAAU,CAAC;AAEtE,wBAAsB,wBAAwB,CAAC,EAC7C,YAAY,EACZ,WAAW,EACX,cAAmB,EACnB,cAAc,EACd,cAA2B,GAC5B,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,+BAA+B,CAAC;CAClD,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBlB"}
@@ -1,9 +0,0 @@
1
- export type ExecutableWrapperPathResolution = 'absolute' | 'relative';
2
- export declare function installExecutableWrapper({ binDirectory, commandName, executableArgs, executablePath, pathResolution, }: {
3
- binDirectory: string;
4
- commandName: string;
5
- executableArgs?: string[];
6
- executablePath: string;
7
- pathResolution?: ExecutableWrapperPathResolution;
8
- }): Promise<string>;
9
- //# sourceMappingURL=executable-wrapper.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executable-wrapper.d.mts","sourceRoot":"","sources":["../src/executable-wrapper.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,+BAA+B,GAAG,UAAU,GAAG,UAAU,CAAC;AAEtE,wBAAsB,wBAAwB,CAAC,EAC7C,YAAY,EACZ,WAAW,EACX,cAAmB,EACnB,cAAc,EACd,cAA2B,GAC5B,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,+BAA+B,CAAC;CAClD,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBlB"}
@@ -1,72 +0,0 @@
1
- /* eslint-disable import-x/no-nodejs-modules */
2
- import { chmod, mkdir, unlink, writeFile } from "node:fs/promises";
3
- import { join, relative, resolve } from "node:path";
4
- import { isFileMissingError } from "./errors.mjs";
5
- export async function installExecutableWrapper({ binDirectory, commandName, executableArgs = [], executablePath, pathResolution = 'absolute', }) {
6
- const binaryPath = join(binDirectory, commandName);
7
- const wrapperSource = buildExecutableWrapperSource({
8
- binDirectory,
9
- executableArgs,
10
- executablePath,
11
- pathResolution,
12
- });
13
- await mkdir(binDirectory, { recursive: true });
14
- await unlink(binaryPath).catch((error) => {
15
- if (!isFileMissingError(error)) {
16
- throw error;
17
- }
18
- });
19
- await writeFile(binaryPath, wrapperSource);
20
- await chmod(binaryPath, 0o755);
21
- return binaryPath;
22
- }
23
- function buildExecutableWrapperSource({ binDirectory, executableArgs, executablePath, pathResolution, }) {
24
- if (pathResolution === 'relative') {
25
- const relativeExecutablePath = relative(binDirectory, executablePath);
26
- return `#!/usr/bin/env node
27
- const { spawnSync } = require('node:child_process');
28
- const path = require('node:path');
29
-
30
- const executablePath = path.resolve(__dirname, ${JSON.stringify(relativeExecutablePath)});
31
- const executableArgs = ${JSON.stringify(executableArgs)};
32
- const result = spawnSync(executablePath, executableArgs.concat(process.argv.slice(2)), {
33
- stdio: 'inherit',
34
- });
35
-
36
- if (result.error) {
37
- console.error(result.error.message);
38
- process.exit(1);
39
- }
40
-
41
- if (result.signal) {
42
- process.kill(process.pid, result.signal);
43
- process.exit(1);
44
- }
45
-
46
- process.exit(result.status ?? 0);
47
- `;
48
- }
49
- const resolvedExecutablePath = resolve(executablePath);
50
- return `#!/usr/bin/env node
51
- const { spawnSync } = require('node:child_process');
52
-
53
- const executablePath = ${JSON.stringify(resolvedExecutablePath)};
54
- const executableArgs = ${JSON.stringify(executableArgs)};
55
- const result = spawnSync(executablePath, executableArgs.concat(process.argv.slice(2)), {
56
- stdio: 'inherit',
57
- });
58
-
59
- if (result.error) {
60
- console.error(result.error.message);
61
- process.exit(1);
62
- }
63
-
64
- if (result.signal) {
65
- process.kill(process.pid, result.signal);
66
- process.exit(1);
67
- }
68
-
69
- process.exit(result.status ?? 0);
70
- `;
71
- }
72
- //# sourceMappingURL=executable-wrapper.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executable-wrapper.mjs","sourceRoot":"","sources":["../src/executable-wrapper.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,yBAAyB;AACnE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB;AAEpD,OAAO,EAAE,kBAAkB,EAAE,qBAAiB;AAI9C,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,EAC7C,YAAY,EACZ,WAAW,EACX,cAAc,GAAG,EAAE,EACnB,cAAc,EACd,cAAc,GAAG,UAAU,GAO5B;IACC,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,4BAA4B,CAAC;QACjD,YAAY;QACZ,cAAc;QACd,cAAc;QACd,cAAc;KACf,CAAC,CAAC;IAEH,MAAM,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACvC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC3C,MAAM,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAE/B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,4BAA4B,CAAC,EACpC,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,GAMf;IACC,IAAI,cAAc,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,sBAAsB,GAAG,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAEtE,OAAO;;;;iDAIsC,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC;yBAC9D,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;CAgBtD,CAAC;IACA,CAAC;IAED,MAAM,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAEvD,OAAO;;;yBAGgB,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC;yBACtC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;CAgBtD,CAAC;AACF,CAAC","sourcesContent":["/* eslint-disable import-x/no-nodejs-modules */\nimport { chmod, mkdir, unlink, writeFile } from 'node:fs/promises';\nimport { join, relative, resolve } from 'node:path';\n\nimport { isFileMissingError } from './errors';\n\nexport type ExecutableWrapperPathResolution = 'absolute' | 'relative';\n\nexport async function installExecutableWrapper({\n binDirectory,\n commandName,\n executableArgs = [],\n executablePath,\n pathResolution = 'absolute',\n}: {\n binDirectory: string;\n commandName: string;\n executableArgs?: string[];\n executablePath: string;\n pathResolution?: ExecutableWrapperPathResolution;\n}): Promise<string> {\n const binaryPath = join(binDirectory, commandName);\n const wrapperSource = buildExecutableWrapperSource({\n binDirectory,\n executableArgs,\n executablePath,\n pathResolution,\n });\n\n await mkdir(binDirectory, { recursive: true });\n await unlink(binaryPath).catch((error) => {\n if (!isFileMissingError(error)) {\n throw error;\n }\n });\n await writeFile(binaryPath, wrapperSource);\n await chmod(binaryPath, 0o755);\n\n return binaryPath;\n}\n\nfunction buildExecutableWrapperSource({\n binDirectory,\n executableArgs,\n executablePath,\n pathResolution,\n}: {\n binDirectory: string;\n executableArgs: string[];\n executablePath: string;\n pathResolution: ExecutableWrapperPathResolution;\n}): string {\n if (pathResolution === 'relative') {\n const relativeExecutablePath = relative(binDirectory, executablePath);\n\n return `#!/usr/bin/env node\nconst { spawnSync } = require('node:child_process');\nconst path = require('node:path');\n\nconst executablePath = path.resolve(__dirname, ${JSON.stringify(relativeExecutablePath)});\nconst executableArgs = ${JSON.stringify(executableArgs)};\nconst result = spawnSync(executablePath, executableArgs.concat(process.argv.slice(2)), {\n stdio: 'inherit',\n});\n\nif (result.error) {\n console.error(result.error.message);\n process.exit(1);\n}\n\nif (result.signal) {\n process.kill(process.pid, result.signal);\n process.exit(1);\n}\n\nprocess.exit(result.status ?? 0);\n`;\n }\n\n const resolvedExecutablePath = resolve(executablePath);\n\n return `#!/usr/bin/env node\nconst { spawnSync } = require('node:child_process');\n\nconst executablePath = ${JSON.stringify(resolvedExecutablePath)};\nconst executableArgs = ${JSON.stringify(executableArgs)};\nconst result = spawnSync(executablePath, executableArgs.concat(process.argv.slice(2)), {\n stdio: 'inherit',\n});\n\nif (result.error) {\n console.error(result.error.message);\n process.exit(1);\n}\n\nif (result.signal) {\n process.kill(process.pid, result.signal);\n process.exit(1);\n}\n\nprocess.exit(result.status ?? 0);\n`;\n}\n"]}
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isFile = exports.isDirectory = exports.findExecutable = void 0;
4
- /* eslint-disable import-x/no-nodejs-modules */
5
- const node_fs_1 = require("node:fs");
6
- const node_path_1 = require("node:path");
7
- function findExecutable(root, name) {
8
- if (!(0, node_fs_1.existsSync)(root)) {
9
- return undefined;
10
- }
11
- for (const entry of (0, node_fs_1.readdirSync)(root)) {
12
- const entryPath = (0, node_path_1.join)(root, entry);
13
- const stat = (0, node_fs_1.statSync)(entryPath);
14
- if (stat.isDirectory()) {
15
- const found = findExecutable(entryPath, name);
16
- if (found) {
17
- return found;
18
- }
19
- }
20
- else if (entry === name) {
21
- return entryPath;
22
- }
23
- }
24
- return undefined;
25
- }
26
- exports.findExecutable = findExecutable;
27
- function isDirectory(path) {
28
- try {
29
- return (0, node_fs_1.statSync)(path).isDirectory();
30
- }
31
- catch {
32
- return false;
33
- }
34
- }
35
- exports.isDirectory = isDirectory;
36
- function isFile(path) {
37
- try {
38
- return (0, node_fs_1.statSync)(path).isFile();
39
- }
40
- catch {
41
- return false;
42
- }
43
- }
44
- exports.isFile = isFile;
45
- //# sourceMappingURL=filesystem.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filesystem.cjs","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":";;;AAAA,+CAA+C;AAC/C,qCAA4D;AAC5D,yCAAiC;AAEjC,SAAgB,cAAc,CAAC,IAAY,EAAE,IAAY;IACvD,IAAI,CAAC,IAAA,oBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,IAAA,qBAAW,EAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAA,kBAAQ,EAAC,SAAS,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC9C,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAnBD,wCAmBC;AAED,SAAgB,WAAW,CAAC,IAAY;IACtC,IAAI,CAAC;QACH,OAAO,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAND,kCAMC;AAED,SAAgB,MAAM,CAAC,IAAY;IACjC,IAAI,CAAC;QACH,OAAO,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAND,wBAMC","sourcesContent":["/* eslint-disable import-x/no-nodejs-modules */\nimport { existsSync, readdirSync, statSync } from 'node:fs';\nimport { join } from 'node:path';\n\nexport function findExecutable(root: string, name: string): string | undefined {\n if (!existsSync(root)) {\n return undefined;\n }\n\n for (const entry of readdirSync(root)) {\n const entryPath = join(root, entry);\n const stat = statSync(entryPath);\n if (stat.isDirectory()) {\n const found = findExecutable(entryPath, name);\n if (found) {\n return found;\n }\n } else if (entry === name) {\n return entryPath;\n }\n }\n\n return undefined;\n}\n\nexport function isDirectory(path: string): boolean {\n try {\n return statSync(path).isDirectory();\n } catch {\n return false;\n }\n}\n\nexport function isFile(path: string): boolean {\n try {\n return statSync(path).isFile();\n } catch {\n return false;\n }\n}\n"]}
@@ -1,4 +0,0 @@
1
- export declare function findExecutable(root: string, name: string): string | undefined;
2
- export declare function isDirectory(path: string): boolean;
3
- export declare function isFile(path: string): boolean;
4
- //# sourceMappingURL=filesystem.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filesystem.d.cts","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"AAIA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAmB7E;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMjD;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM5C"}
@@ -1,4 +0,0 @@
1
- export declare function findExecutable(root: string, name: string): string | undefined;
2
- export declare function isDirectory(path: string): boolean;
3
- export declare function isFile(path: string): boolean;
4
- //# sourceMappingURL=filesystem.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filesystem.d.mts","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"AAIA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAmB7E;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMjD;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM5C"}