@napi-rs/cli 3.0.0-alpha.9 → 3.0.0-alpha.90

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 (163) hide show
  1. package/cli.mjs +1 -1
  2. package/dist/api/__tests__/new.spec.d.ts +1 -0
  3. package/dist/api/__tests__/new.spec.js +283 -0
  4. package/dist/api/__tests__/new.spec.js.map +1 -0
  5. package/dist/api/artifacts.js +28 -7
  6. package/dist/api/artifacts.js.map +1 -1
  7. package/dist/api/build.d.ts +1 -1
  8. package/dist/api/build.js +324 -115
  9. package/dist/api/build.js.map +1 -1
  10. package/dist/api/create-npm-dirs.js +46 -9
  11. package/dist/api/create-npm-dirs.js.map +1 -1
  12. package/dist/api/new.js +312 -107
  13. package/dist/api/new.js.map +1 -1
  14. package/dist/api/pre-publish.js +9 -7
  15. package/dist/api/pre-publish.js.map +1 -1
  16. package/dist/api/rename.js +74 -12
  17. package/dist/api/rename.js.map +1 -1
  18. package/dist/api/templates/cargo.toml.js +1 -0
  19. package/dist/api/templates/cargo.toml.js.map +1 -1
  20. package/dist/api/templates/ci-template.d.ts +3 -1
  21. package/dist/api/templates/ci-template.js +140 -125
  22. package/dist/api/templates/ci-template.js.map +1 -1
  23. package/dist/api/templates/ci.yml.d.ts +3 -1
  24. package/dist/api/templates/ci.yml.js +21 -5
  25. package/dist/api/templates/ci.yml.js.map +1 -1
  26. package/dist/api/templates/js-binding.d.ts +1 -0
  27. package/dist/api/templates/js-binding.js +142 -222
  28. package/dist/api/templates/js-binding.js.map +1 -1
  29. package/dist/api/templates/load-wasi-template.d.ts +2 -0
  30. package/dist/api/templates/load-wasi-template.js +168 -0
  31. package/dist/api/templates/load-wasi-template.js.map +1 -0
  32. package/dist/api/templates/package.json.d.ts +9 -2
  33. package/dist/api/templates/package.json.js +26 -4
  34. package/dist/api/templates/package.json.js.map +1 -1
  35. package/dist/api/templates/wasi-worker-template.d.ts +2 -0
  36. package/dist/api/templates/wasi-worker-template.js +122 -0
  37. package/dist/api/templates/wasi-worker-template.js.map +1 -0
  38. package/dist/api/universalize.js +5 -5
  39. package/dist/api/universalize.js.map +1 -1
  40. package/dist/api/version.js +2 -2
  41. package/dist/api/version.js.map +1 -1
  42. package/dist/commands/artifacts.js +2 -2
  43. package/dist/commands/artifacts.js.map +1 -1
  44. package/dist/commands/build.js +1 -1
  45. package/dist/commands/build.js.map +1 -1
  46. package/dist/commands/new.js +34 -34
  47. package/dist/commands/new.js.map +1 -1
  48. package/dist/def/artifacts.d.ts +21 -1
  49. package/dist/def/artifacts.js +10 -2
  50. package/dist/def/artifacts.js.map +1 -1
  51. package/dist/def/build.d.ts +149 -4
  52. package/dist/def/build.js +26 -4
  53. package/dist/def/build.js.map +1 -1
  54. package/dist/def/create-npm-dirs.d.ts +10 -0
  55. package/dist/def/create-npm-dirs.js +4 -0
  56. package/dist/def/create-npm-dirs.js.map +1 -1
  57. package/dist/def/new.d.ts +25 -7
  58. package/dist/def/new.js +11 -1
  59. package/dist/def/new.js.map +1 -1
  60. package/dist/def/pre-publish.d.ts +12 -2
  61. package/dist/def/pre-publish.js +7 -3
  62. package/dist/def/pre-publish.js.map +1 -1
  63. package/dist/def/rename.d.ts +16 -6
  64. package/dist/def/rename.js +5 -1
  65. package/dist/def/rename.js.map +1 -1
  66. package/dist/def/universalize.d.ts +10 -0
  67. package/dist/def/universalize.js +4 -0
  68. package/dist/def/universalize.js.map +1 -1
  69. package/dist/def/version.d.ts +10 -0
  70. package/dist/def/version.js +4 -0
  71. package/dist/def/version.js.map +1 -1
  72. package/dist/index.cjs +8743 -14849
  73. package/dist/utils/__tests__/config.spec.d.ts +1 -0
  74. package/dist/utils/__tests__/config.spec.js +63 -0
  75. package/dist/utils/__tests__/config.spec.js.map +1 -0
  76. package/dist/utils/cargo.js +2 -2
  77. package/dist/utils/cargo.js.map +1 -1
  78. package/dist/utils/config.d.ts +48 -4
  79. package/dist/utils/config.js +36 -4
  80. package/dist/utils/config.js.map +1 -1
  81. package/dist/utils/index.d.ts +1 -1
  82. package/dist/utils/index.js +1 -1
  83. package/dist/utils/index.js.map +1 -1
  84. package/dist/utils/log.js +1 -1
  85. package/dist/utils/log.js.map +1 -1
  86. package/dist/utils/metadata.d.ts +13 -1
  87. package/dist/utils/metadata.js +31 -11
  88. package/dist/utils/metadata.js.map +1 -1
  89. package/dist/utils/misc.d.ts +3 -3
  90. package/dist/utils/misc.js +13 -11
  91. package/dist/utils/misc.js.map +1 -1
  92. package/dist/utils/read-config.d.ts +7 -0
  93. package/dist/utils/read-config.js +8 -0
  94. package/dist/utils/read-config.js.map +1 -0
  95. package/dist/utils/target.d.ts +7 -5
  96. package/dist/utils/target.js +17 -3
  97. package/dist/utils/target.js.map +1 -1
  98. package/dist/utils/typegen.d.ts +1 -1
  99. package/dist/utils/typegen.js +63 -32
  100. package/dist/utils/typegen.js.map +1 -1
  101. package/dist/utils/version.d.ts +2 -1
  102. package/dist/utils/version.js +10 -8
  103. package/dist/utils/version.js.map +1 -1
  104. package/package.json +34 -32
  105. package/src/api/__tests__/new.spec.ts +429 -0
  106. package/src/api/artifacts.ts +81 -9
  107. package/src/api/build.ts +498 -149
  108. package/src/api/create-npm-dirs.ts +57 -9
  109. package/src/api/new.ts +389 -122
  110. package/src/api/pre-publish.ts +13 -7
  111. package/src/api/rename.ts +103 -17
  112. package/src/api/templates/cargo.toml.ts +1 -0
  113. package/src/api/templates/ci-template.ts +150 -125
  114. package/src/api/templates/ci.yml.ts +27 -6
  115. package/src/api/templates/js-binding.ts +148 -220
  116. package/src/api/templates/load-wasi-template.ts +182 -0
  117. package/src/api/templates/package.json.ts +47 -5
  118. package/src/api/templates/wasi-worker-template.ts +122 -0
  119. package/src/api/universalize.ts +13 -8
  120. package/src/api/version.ts +5 -2
  121. package/src/commands/artifacts.ts +2 -2
  122. package/src/commands/build.ts +1 -1
  123. package/src/commands/new.ts +46 -45
  124. package/src/def/artifacts.ts +22 -3
  125. package/src/def/build.ts +55 -8
  126. package/src/def/create-npm-dirs.ts +9 -0
  127. package/src/def/new.ts +28 -3
  128. package/src/def/pre-publish.ts +12 -3
  129. package/src/def/rename.ts +11 -2
  130. package/src/def/universalize.ts +9 -0
  131. package/src/def/version.ts +9 -0
  132. package/src/utils/__tests__/__fixtures__/napi_type_def +130 -130
  133. package/src/utils/__tests__/__snapshots__/config.spec.ts.md +97 -0
  134. package/src/utils/__tests__/__snapshots__/config.spec.ts.snap +0 -0
  135. package/src/utils/__tests__/__snapshots__/target.spec.ts.md +28 -0
  136. package/src/utils/__tests__/__snapshots__/target.spec.ts.snap +0 -0
  137. package/src/utils/__tests__/__snapshots__/typegen.spec.ts.md +316 -332
  138. package/src/utils/__tests__/__snapshots__/typegen.spec.ts.snap +0 -0
  139. package/src/utils/__tests__/__snapshots__/version.spec.ts.md +8 -7
  140. package/src/utils/__tests__/__snapshots__/version.spec.ts.snap +0 -0
  141. package/src/utils/__tests__/config.spec.ts +81 -0
  142. package/src/utils/cargo.ts +2 -2
  143. package/src/utils/config.ts +110 -9
  144. package/src/utils/index.ts +1 -1
  145. package/src/utils/log.ts +1 -1
  146. package/src/utils/metadata.ts +52 -14
  147. package/src/utils/misc.ts +21 -12
  148. package/src/utils/read-config.ts +20 -0
  149. package/src/utils/target.ts +22 -4
  150. package/src/utils/typegen.ts +87 -52
  151. package/src/utils/version.ts +10 -8
  152. package/dist/api/load-wasi-template.d.ts +0 -1
  153. package/dist/api/load-wasi-template.js +0 -64
  154. package/dist/api/load-wasi-template.js.map +0 -1
  155. package/dist/api/wasi-worker-template.d.ts +0 -1
  156. package/dist/api/wasi-worker-template.js +0 -53
  157. package/dist/api/wasi-worker-template.js.map +0 -1
  158. package/dist/utils/ci.d.ts +0 -11
  159. package/dist/utils/ci.js +0 -96
  160. package/dist/utils/ci.js.map +0 -1
  161. package/src/api/load-wasi-template.ts +0 -66
  162. package/src/api/wasi-worker-template.ts +0 -52
  163. package/src/utils/ci.ts +0 -111
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,63 @@
1
+ import { unlink, writeFile } from 'node:fs/promises';
2
+ import { tmpdir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import ava from 'ava';
5
+ import { readNapiConfig, } from '../config.js';
6
+ const NON_EXISTENT_FILE = 'non-existent-file';
7
+ const test = ava;
8
+ test.before(async (t) => {
9
+ const tmp = tmpdir();
10
+ const configPath = join(tmp, 'napi.json');
11
+ const packageJson = join(tmp, 'package.json');
12
+ const pkgJson = {
13
+ name: '@napi-rs/testing',
14
+ version: '0.0.0',
15
+ napi: {
16
+ binaryName: 'testing',
17
+ packageName: '@napi-rs/testing',
18
+ targets: [
19
+ 'x86_64-unknown-linux-gnu',
20
+ 'x86_64-pc-windows-msvc',
21
+ 'x86_64-apple-darwin',
22
+ ],
23
+ },
24
+ };
25
+ await writeFile(packageJson, JSON.stringify(pkgJson, null, 2));
26
+ const config = {
27
+ binaryName: 'testing',
28
+ packageName: '@node-rs/testing',
29
+ targets: [
30
+ 'x86_64-unknown-linux-gnu',
31
+ 'x86_64-apple-darwin',
32
+ 'aarch64-apple-darwin',
33
+ ],
34
+ };
35
+ await writeFile(configPath, JSON.stringify(config, null, 2));
36
+ t.context = { configPath, config, packageJson, pkgJson };
37
+ });
38
+ test.after(async (t) => {
39
+ await unlink(t.context.configPath);
40
+ await unlink(t.context.packageJson);
41
+ });
42
+ test('should throw if package.json not found', async (t) => {
43
+ await t.throwsAsync(() => readNapiConfig(NON_EXISTENT_FILE), {
44
+ message: `package.json not found at ${NON_EXISTENT_FILE}`,
45
+ });
46
+ });
47
+ test('should throw if napi.json not found', async (t) => {
48
+ const { packageJson } = t.context;
49
+ await t.throwsAsync(() => readNapiConfig(packageJson, NON_EXISTENT_FILE), {
50
+ message: `NAPI-RS config not found at ${NON_EXISTENT_FILE}`,
51
+ });
52
+ });
53
+ test('should be able to read config from package.json', async (t) => {
54
+ const { packageJson } = t.context;
55
+ const config = await readNapiConfig(packageJson);
56
+ t.snapshot(config);
57
+ });
58
+ test('should be able to read config from napi.json', async (t) => {
59
+ const { packageJson, configPath } = t.context;
60
+ const config = await readNapiConfig(packageJson, configPath);
61
+ t.snapshot(config);
62
+ });
63
+ //# sourceMappingURL=config.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.spec.js","sourceRoot":"","sources":["../../../src/utils/__tests__/config.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,GAAe,MAAM,KAAK,CAAA;AAEjC,OAAO,EAGL,cAAc,GACf,MAAM,cAAc,CAAA;AAErB,MAAM,iBAAiB,GAAG,mBAAmB,CAAA;AAE7C,MAAM,IAAI,GAAG,GAKX,CAAA;AAEF,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;IACtB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAA;IACpB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IACzC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE;YACJ,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,kBAAkB;YAC/B,OAAO,EAAE;gBACP,0BAA0B;gBAC1B,wBAAwB;gBACxB,qBAAqB;aACtB;SACF;KACF,CAAA;IACD,MAAM,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAC9D,MAAM,MAAM,GAAG;QACb,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE;YACP,0BAA0B;YAC1B,qBAAqB;YACrB,sBAAsB;SACvB;KACF,CAAA;IACD,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAC5D,CAAC,CAAC,OAAO,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAA;AAC1D,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;IACrB,MAAM,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAClC,MAAM,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;AACrC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,wCAAwC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACzD,MAAM,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE;QAC3D,OAAO,EAAE,6BAA6B,iBAAiB,EAAE;KAC1D,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,qCAAqC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACtD,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,OAAO,CAAA;IACjC,MAAM,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE;QACxE,OAAO,EAAE,+BAA+B,iBAAiB,EAAE;KAC5D,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,iDAAiD,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAClE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,OAAO,CAAA;IACjC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAA;IAChD,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AACpB,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,8CAA8C,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC/D,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,OAAO,CAAA;IAC7C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IAC5D,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AACpB,CAAC,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- import { execSync } from 'child_process';
1
+ import { execSync } from 'node:child_process';
2
2
  import { debug } from './log.js';
3
3
  export function tryInstallCargoBinary(name, bin) {
4
4
  if (detectCargoBinary(bin)) {
@@ -26,7 +26,7 @@ function detectCargoBinary(bin) {
26
26
  debug('Cargo binary detected: %s', bin);
27
27
  return true;
28
28
  }
29
- catch (e) {
29
+ catch {
30
30
  debug('Cargo binary not detected: %s', bin);
31
31
  return false;
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cargo.js","sourceRoot":"","sources":["../../src/utils/cargo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,GAAW;IAC7D,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE;QAC1B,KAAK,CAAC,oCAAoC,EAAE,IAAI,CAAC,CAAA;QACjD,OAAM;KACP;IAED,IAAI;QACF,KAAK,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAA;QAC1C,QAAQ,CAAC,iBAAiB,IAAI,EAAE,EAAE;YAChC,KAAK,EAAE,SAAS;SACjB,CAAC,CAAA;KACH;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,EAAE,EAAE;YACzD,KAAK,EAAE,CAAC;SACT,CAAC,CAAA;KACH;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAA;IACxC,IAAI;QACF,QAAQ,CAAC,cAAc,GAAG,EAAE,EAAE;YAC5B,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAA;QACF,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAA;QACvC,OAAO,IAAI,CAAA;KACZ;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAA;QAC3C,OAAO,KAAK,CAAA;KACb;AACH,CAAC"}
1
+ {"version":3,"file":"cargo.js","sourceRoot":"","sources":["../../src/utils/cargo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,GAAW;IAC7D,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,oCAAoC,EAAE,IAAI,CAAC,CAAA;QACjD,OAAM;IACR,CAAC;IAED,IAAI,CAAC;QACH,KAAK,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAA;QAC1C,QAAQ,CAAC,iBAAiB,IAAI,EAAE,EAAE;YAChC,KAAK,EAAE,SAAS;SACjB,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,EAAE,EAAE;YACzD,KAAK,EAAE,CAAC;SACT,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAA;IACxC,IAAI,CAAC;QACH,QAAQ,CAAC,cAAc,GAAG,EAAE,EAAE;YAC5B,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAA;QACF,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAA;QACvC,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAA;QAC3C,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
@@ -1,5 +1,10 @@
1
1
  import { Target } from './target.js';
2
- interface UserNapiConfig {
2
+ export type ValueOfConstArray<T> = T[Exclude<keyof T, keyof Array<any>>];
3
+ export declare const SupportedPackageManagers: readonly ["yarn", "pnpm"];
4
+ export declare const SupportedTestFrameworks: readonly ["ava"];
5
+ export type SupportedPackageManager = ValueOfConstArray<typeof SupportedPackageManagers>;
6
+ export type SupportedTestFramework = ValueOfConstArray<typeof SupportedTestFrameworks>;
7
+ export interface UserNapiConfig {
3
8
  /**
4
9
  * Name of the binary to be generated, default to `index`
5
10
  */
@@ -22,6 +27,42 @@ interface UserNapiConfig {
22
27
  * Whether generate const enum for typescript bindings
23
28
  */
24
29
  constEnum?: boolean;
30
+ /**
31
+ * dts header prepend to the generated dts file
32
+ */
33
+ dtsHeader?: string;
34
+ /**
35
+ * dts header file path to be prepended to the generated dts file
36
+ * if both dtsHeader and dtsHeaderFile are provided, dtsHeaderFile will be used
37
+ */
38
+ dtsHeaderFile?: string;
39
+ /**
40
+ * wasm compilation options
41
+ */
42
+ wasm?: {
43
+ /**
44
+ * https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/Memory
45
+ * @default 4000 pages (256MiB)
46
+ */
47
+ initialMemory?: number;
48
+ /**
49
+ * @default 65536 pages (4GiB)
50
+ */
51
+ maximumMemory?: number;
52
+ /**
53
+ * Browser wasm binding configuration
54
+ */
55
+ browser: {
56
+ /**
57
+ * Whether to use fs module in browser
58
+ */
59
+ fs?: boolean;
60
+ /**
61
+ * Whether to initialize wasm asynchronously
62
+ */
63
+ asyncInit?: boolean;
64
+ };
65
+ };
25
66
  /**
26
67
  * @deprecated binaryName instead
27
68
  */
@@ -65,13 +106,16 @@ export interface CommonPackageJsonFields {
65
106
  main?: string;
66
107
  module?: string;
67
108
  types?: string;
109
+ browser?: string;
68
110
  exports?: any;
69
111
  dependencies?: Record<string, string>;
70
112
  devDependencies?: Record<string, string>;
113
+ ava?: {
114
+ timeout?: string;
115
+ };
71
116
  }
72
- export type NapiConfig = Required<Pick<UserNapiConfig, 'binaryName' | 'packageName' | 'npmClient'>> & {
117
+ export type NapiConfig = Required<Pick<UserNapiConfig, 'binaryName' | 'packageName' | 'npmClient'>> & Pick<UserNapiConfig, 'wasm' | 'dtsHeader' | 'dtsHeaderFile' | 'constEnum'> & {
73
118
  targets: Target[];
74
119
  packageJson: CommonPackageJsonFields;
75
120
  };
76
- export declare function readNapiConfig(path: string): Promise<NapiConfig>;
77
- export {};
121
+ export declare function readNapiConfig(path: string, configPath?: string): Promise<NapiConfig>;
@@ -1,9 +1,15 @@
1
+ import { underline, yellow } from 'colorette';
1
2
  import { merge, omit } from 'lodash-es';
2
3
  import { fileExists, readFileAsync } from './misc.js';
3
4
  import { DEFAULT_TARGETS, parseTriple } from './target.js';
4
- export async function readNapiConfig(path) {
5
+ export const SupportedPackageManagers = ['yarn', 'pnpm'];
6
+ export const SupportedTestFrameworks = ['ava'];
7
+ export async function readNapiConfig(path, configPath) {
8
+ if (configPath && !(await fileExists(configPath))) {
9
+ throw new Error(`NAPI-RS config not found at ${configPath}`);
10
+ }
5
11
  if (!(await fileExists(path))) {
6
- throw new Error(`napi-rs config not found at ${path}`);
12
+ throw new Error(`package.json not found at ${path}`);
7
13
  }
8
14
  // May support multiple config sources later on.
9
15
  const content = await readFileAsync(path, 'utf8');
@@ -12,11 +18,29 @@ export async function readNapiConfig(path) {
12
18
  pkgJson = JSON.parse(content);
13
19
  }
14
20
  catch (e) {
15
- throw new Error('Failed to parse napi-rs config', {
21
+ throw new Error(`Failed to parse package.json at ${path}`, {
16
22
  cause: e,
17
23
  });
18
24
  }
25
+ let separatedConfig;
26
+ if (configPath) {
27
+ const configContent = await readFileAsync(configPath, 'utf8');
28
+ try {
29
+ separatedConfig = JSON.parse(configContent);
30
+ }
31
+ catch (e) {
32
+ throw new Error(`Failed to parse NAPI-RS config at ${configPath}`, {
33
+ cause: e,
34
+ });
35
+ }
36
+ }
19
37
  const userNapiConfig = pkgJson.napi ?? {};
38
+ if (pkgJson.napi && separatedConfig) {
39
+ const pkgJsonPath = underline(path);
40
+ const configPathUnderline = underline(configPath);
41
+ console.warn(yellow(`Both napi field in ${pkgJsonPath} and [NAPI-RS config](${configPathUnderline}) file are found, the NAPI-RS config file will be used.`));
42
+ Object.assign(userNapiConfig, separatedConfig);
43
+ }
20
44
  const napiConfig = merge({
21
45
  binaryName: 'index',
22
46
  packageName: pkgJson.name,
@@ -27,14 +51,22 @@ export async function readNapiConfig(path) {
27
51
  let targets = userNapiConfig.targets ?? [];
28
52
  // compatible with old config
29
53
  if (userNapiConfig?.name) {
30
- napiConfig.packageName = userNapiConfig.name;
54
+ console.warn(yellow(`[DEPRECATED] napi.name is deprecated, use napi.binaryName instead.`));
55
+ napiConfig.binaryName = userNapiConfig.name;
31
56
  }
32
57
  if (!targets.length) {
58
+ let deprecatedWarned = false;
59
+ const warning = yellow(`[DEPRECATED] napi.triples is deprecated, use napi.targets instead.`);
33
60
  if (userNapiConfig.triples?.defaults) {
61
+ deprecatedWarned = true;
62
+ console.warn(warning);
34
63
  targets = targets.concat(DEFAULT_TARGETS);
35
64
  }
36
65
  if (userNapiConfig.triples?.additional?.length) {
37
66
  targets = targets.concat(userNapiConfig.triples.additional);
67
+ if (!deprecatedWarned) {
68
+ console.warn(warning);
69
+ }
38
70
  }
39
71
  }
40
72
  napiConfig.targets = targets.map(parseTriple);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEvC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAU,MAAM,aAAa,CAAA;AAwFlE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAA;KACvD;IACD,gDAAgD;IAChD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACjD,IAAI,OAAO,CAAA;IACX,IAAI;QACF,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAA;KACzD;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,gCAAgC,EAAE;YAChD,KAAK,EAAE,CAAC;SACT,CAAC,CAAA;KACH;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAA;IACzC,MAAM,UAAU,GAAe,KAAK,CAClC;QACE,UAAU,EAAE,OAAO;QACnB,WAAW,EAAE,OAAO,CAAC,IAAI;QACzB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,OAAO;QACpB,SAAS,EAAE,KAAK;KACjB,EACD,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAChC,CAAA;IAED,IAAI,OAAO,GAAa,cAAc,CAAC,OAAO,IAAI,EAAE,CAAA;IAEpD,6BAA6B;IAC7B,IAAI,cAAc,EAAE,IAAI,EAAE;QACxB,UAAU,CAAC,WAAW,GAAG,cAAc,CAAC,IAAI,CAAA;KAC7C;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QACnB,IAAI,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE;YACpC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;SAC1C;QAED,IAAI,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE;YAC9C,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;SAC5D;KACF;IAED,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAE7C,OAAO,UAAU,CAAA;AACnB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- export * from './ci.js';
2
1
  export * from './log.js';
3
2
  export * from './misc.js';
4
3
  export * from './target.js';
@@ -7,3 +6,4 @@ export * from './metadata.js';
7
6
  export * from './config.js';
8
7
  export * from './cargo.js';
9
8
  export * from './typegen.js';
9
+ export * from './read-config.js';
@@ -1,4 +1,3 @@
1
- export * from './ci.js';
2
1
  export * from './log.js';
3
2
  export * from './misc.js';
4
3
  export * from './target.js';
@@ -7,4 +6,5 @@ export * from './metadata.js';
7
6
  export * from './config.js';
8
7
  export * from './cargo.js';
9
8
  export * from './typegen.js';
9
+ export * from './read-config.js';
10
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA"}
package/dist/utils/log.js CHANGED
@@ -8,7 +8,7 @@ export const debugFactory = (namespace) => {
8
8
  const debug = rawDebug(`napi:${namespace}`);
9
9
  debug.info = (...args) => console.error(colors.black(colors.bgGreen(' INFO ')), ...args);
10
10
  debug.warn = (...args) => console.error(colors.black(colors.bgYellow(' WARNING ')), ...args);
11
- debug.error = (...args) => console.error(colors.white(colors.bgRed(' ERROR ')), ...args.map((arg) => arg instanceof Error ? arg.stack ?? arg.message : arg));
11
+ debug.error = (...args) => console.error(colors.white(colors.bgRed(' ERROR ')), ...args.map((arg) => arg instanceof Error ? (arg.stack ?? arg.message) : arg));
12
12
  return debug;
13
13
  };
14
14
  export const debug = debugFactory('utils');
@@ -1 +1 @@
1
- {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/utils/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,WAAW,CAAA;AACnC,OAAO,QAAQ,MAAM,OAAO,CAAA;AAE5B,iCAAiC;AACjC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE;IAC5B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACxB,CAAC,CAAA;AAUD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAE,EAAE;IAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,SAAS,EAAE,CAAC,CAAA;IAE3C,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAC9B,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;IAChE,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAC9B,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;IACpE,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAC/B,OAAO,CAAC,KAAK,CACX,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EACrC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAClB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CACtD,CACF,CAAA;IAEH,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA"}
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/utils/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,WAAW,CAAA;AACnC,OAAO,QAAQ,MAAM,OAAO,CAAA;AAE5B,iCAAiC;AACjC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE;IAC5B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACxB,CAAC,CAAA;AAUD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAE,EAAE;IAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,SAAS,EAAE,CAAC,CAAA;IAE3C,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAC9B,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;IAChE,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAC9B,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;IACpE,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAC/B,OAAO,CAAC,KAAK,CACX,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EACrC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAClB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CACxD,CACF,CAAA;IAEH,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA"}
@@ -13,6 +13,18 @@ export interface Crate {
13
13
  targets: CrateTarget[];
14
14
  features: Record<string, string[]>;
15
15
  manifest_path: string;
16
+ dependencies: Array<{
17
+ name: string;
18
+ source: string;
19
+ req: string;
20
+ kind: string | null;
21
+ rename: string | null;
22
+ optional: boolean;
23
+ uses_default_features: boolean;
24
+ features: string[];
25
+ target: string | null;
26
+ registry: string | null;
27
+ }>;
16
28
  }
17
29
  export interface CargoWorkspaceMetadata {
18
30
  version: number;
@@ -21,4 +33,4 @@ export interface CargoWorkspaceMetadata {
21
33
  target_directory: string;
22
34
  workspace_root: string;
23
35
  }
24
- export declare function parseMetadata(manifestPath: string): CargoWorkspaceMetadata;
36
+ export declare function parseMetadata(manifestPath: string): Promise<CargoWorkspaceMetadata>;
@@ -1,20 +1,40 @@
1
- import { execSync } from 'child_process';
2
- import fs from 'fs';
3
- export function parseMetadata(manifestPath) {
1
+ import { spawn } from 'node:child_process';
2
+ import fs from 'node:fs';
3
+ export async function parseMetadata(manifestPath) {
4
4
  if (!fs.existsSync(manifestPath)) {
5
5
  throw new Error(`No crate found in manifest: ${manifestPath}`);
6
6
  }
7
- const cmd = `cargo metadata --manifest-path ${manifestPath} --format-version 1 --no-deps`;
8
- try {
9
- const output = execSync(cmd, {
10
- encoding: 'utf-8',
7
+ const childProcess = spawn('cargo', ['metadata', '--manifest-path', manifestPath, '--format-version', '1'], { stdio: 'pipe' });
8
+ let stdout = '';
9
+ let stderr = '';
10
+ let status = 0;
11
+ let error = null;
12
+ childProcess.stdout.on('data', (data) => {
13
+ stdout += data;
14
+ });
15
+ childProcess.stderr.on('data', (data) => {
16
+ stderr += data;
17
+ });
18
+ await new Promise((resolve) => {
19
+ childProcess.on('close', (code) => {
20
+ status = code ?? 0;
21
+ resolve();
11
22
  });
12
- return JSON.parse(output);
23
+ });
24
+ if (error) {
25
+ throw new Error('cargo metadata failed to run', { cause: error });
13
26
  }
14
- catch (e) {
15
- throw new Error(`Failed to parse cargo metadata output by command: ${cmd}`, {
16
- cause: e,
27
+ if (status !== 0) {
28
+ const simpleMessage = `cargo metadata exited with code ${status}`;
29
+ throw new Error(`${simpleMessage} and error message:\n\n${stderr}`, {
30
+ cause: new Error(simpleMessage),
17
31
  });
18
32
  }
33
+ try {
34
+ return JSON.parse(stdout);
35
+ }
36
+ catch (e) {
37
+ throw new Error('Failed to parse cargo metadata JSON', { cause: e });
38
+ }
19
39
  }
20
40
  //# sourceMappingURL=metadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/utils/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,IAAI,CAAA;AAqCnB,MAAM,UAAU,aAAa,CAAC,YAAoB;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAA;KAC/D;IAED,MAAM,GAAG,GAAG,kCAAkC,YAAY,+BAA+B,CAAA;IAEzF,IAAI;QACF,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE;YAC3B,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAA2B,CAAA;KACpD;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,IAAI,KAAK,CACb,qDAAqD,GAAG,EAAE,EAC1D;YACE,KAAK,EAAE,CAAC;SACT,CACF,CAAA;KACF;AACH,CAAC"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/utils/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,MAAM,SAAS,CAAA;AAiDxB,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,YAAoB;IACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAA;IAChE,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CACxB,OAAO,EACP,CAAC,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,kBAAkB,EAAE,GAAG,CAAC,EACtE,EAAE,KAAK,EAAE,MAAM,EAAE,CAClB,CAAA;IAED,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,IAAI,KAAK,GAAG,IAAI,CAAA;IAEhB,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACtC,MAAM,IAAI,IAAI,CAAA;IAChB,CAAC,CAAC,CAAA;IAEF,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACtC,MAAM,IAAI,IAAI,CAAA;IAChB,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,GAAG,IAAI,IAAI,CAAC,CAAA;YAClB,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IACnE,CAAC;IACD,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,MAAM,aAAa,GAAG,mCAAmC,MAAM,EAAE,CAAA;QACjE,MAAM,IAAI,KAAK,CAAC,GAAG,aAAa,0BAA0B,MAAM,EAAE,EAAE;YAClE,KAAK,EAAE,IAAI,KAAK,CAAC,aAAa,CAAC;SAChC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAA2B,CAAA;IACrD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,qCAAqC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;IACtE,CAAC;AACH,CAAC"}
@@ -1,5 +1,4 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- import { readFile, writeFile, copyFile, mkdir, unlink, stat, readdir } from 'fs';
1
+ import { readFile, writeFile, copyFile, mkdir, unlink, stat, readdir } from 'node:fs';
3
2
  export declare const readFileAsync: typeof readFile.__promisify__;
4
3
  export declare const writeFileAsync: typeof writeFile.__promisify__;
5
4
  export declare const unlinkAsync: typeof unlink.__promisify__;
@@ -8,6 +7,7 @@ export declare const mkdirAsync: typeof mkdir.__promisify__;
8
7
  export declare const statAsync: typeof stat.__promisify__;
9
8
  export declare const readdirAsync: typeof readdir.__promisify__;
10
9
  export declare function fileExists(path: string): Promise<boolean>;
10
+ export declare function dirExistsAsync(path: string): Promise<boolean>;
11
11
  export declare function pick<O, K extends keyof O>(o: O, ...keys: K[]): Pick<O, K>;
12
12
  export declare function updatePackageJson(path: string, partial: Record<string, any>): Promise<void>;
13
- export declare const CLI_VERSION: any;
13
+ export declare const CLI_VERSION: string;
@@ -1,14 +1,7 @@
1
- import { readFile, writeFile, copyFile, mkdir, unlink, stat, readdir } from 'fs';
2
- import { createRequire } from 'module';
3
- import { promisify } from 'util';
1
+ import { readFile, writeFile, copyFile, mkdir, unlink, stat, readdir, } from 'node:fs';
2
+ import { promisify } from 'node:util';
3
+ import pkgJson from '../../package.json' with { type: 'json' };
4
4
  import { debug } from './log.js';
5
- const require = createRequire(import.meta.url);
6
- // NOTE:
7
- // import pkgJson from '@napi-rs/cli/package.json' assert { type: 'json' }
8
- // is experimental feature now, avoid using it.
9
- // see: https://nodejs.org/api/esm.html#import-assertions
10
- // eslint-disable-next-line import/no-extraneous-dependencies
11
- const pkgJson = require('@napi-rs/cli/package.json');
12
5
  export const readFileAsync = promisify(readFile);
13
6
  export const writeFileAsync = promisify(writeFile);
14
7
  export const unlinkAsync = promisify(unlink);
@@ -22,6 +15,15 @@ export async function fileExists(path) {
22
15
  .catch(() => false);
23
16
  return exists;
24
17
  }
18
+ export async function dirExistsAsync(path) {
19
+ try {
20
+ const stats = await statAsync(path);
21
+ return stats.isDirectory();
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ }
25
27
  export function pick(o, ...keys) {
26
28
  return keys.reduce((acc, key) => {
27
29
  acc[key] = o[key];
@@ -34,7 +36,7 @@ export async function updatePackageJson(path, partial) {
34
36
  debug(`File not exists ${path}`);
35
37
  return;
36
38
  }
37
- const old = require(path);
39
+ const old = JSON.parse(await readFileAsync(path, 'utf8'));
38
40
  await writeFileAsync(path, JSON.stringify({ ...old, ...partial }, null, 2));
39
41
  }
40
42
  export const CLI_VERSION = pkgJson.version;
@@ -1 +1 @@
1
- {"version":3,"file":"misc.js","sourceRoot":"","sources":["../../src/utils/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAEhC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC9C,QAAQ;AACR,4EAA4E;AAC5E,iDAAiD;AACjD,2DAA2D;AAC3D,6DAA6D;AAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAA;AAEpD,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;AAClD,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAChD,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;AAC1C,MAAM,CAAC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC;SACjC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;IACrB,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,IAAI,CAAuB,CAAI,EAAE,GAAG,IAAS;IAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QACjB,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAO,CAAC,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAY,EACZ,OAA4B;IAE5B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAA;IACrC,IAAI,CAAC,MAAM,EAAE;QACX,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAA;QAChC,OAAM;KACP;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC7E,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAA"}
1
+ {"version":3,"file":"misc.js","sourceRoot":"","sources":["../../src/utils/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,KAAK,EACL,MAAM,EACN,IAAI,EACJ,OAAO,GACR,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,OAAO,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;AAClD,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAChD,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;AAC1C,MAAM,CAAC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC;SACjC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;IACrB,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;QACnC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAA;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,IAAI,CAAuB,CAAI,EAAE,GAAG,IAAS;IAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QACjB,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAO,CAAC,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAY,EACZ,OAA4B;IAE5B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAA;IACrC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAA;QAChC,OAAM;IACR,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;IACzD,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC7E,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAA"}
@@ -0,0 +1,7 @@
1
+ interface MinimalNapiOptions {
2
+ cwd: string;
3
+ configPath?: string;
4
+ packageJsonPath?: string;
5
+ }
6
+ export declare function readConfig(options: MinimalNapiOptions): Promise<import("./config.js").NapiConfig>;
7
+ export {};
@@ -0,0 +1,8 @@
1
+ import { resolve } from 'node:path';
2
+ import { readNapiConfig } from './config.js';
3
+ export async function readConfig(options) {
4
+ const resolvePath = (...paths) => resolve(options.cwd, ...paths);
5
+ const config = await readNapiConfig(resolvePath(options.configPath ?? options.packageJsonPath ?? 'package.json'), options.configPath ? resolvePath(options.configPath) : undefined);
6
+ return config;
7
+ }
8
+ //# sourceMappingURL=read-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-config.js","sourceRoot":"","sources":["../../src/utils/read-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAQ5C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAA2B;IAC1D,MAAM,WAAW,GAAG,CAAC,GAAG,KAAe,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAA;IAC1E,MAAM,MAAM,GAAG,MAAM,cAAc,CACjC,WAAW,CACT,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,eAAe,IAAI,cAAc,CAChE,EACD,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CACjE,CAAA;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -1,17 +1,19 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  export type Platform = NodeJS.Platform | 'wasm' | 'wasi';
3
- export declare const AVAILABLE_TARGETS: readonly ["aarch64-apple-darwin", "aarch64-linux-android", "aarch64-unknown-linux-gnu", "aarch64-unknown-linux-musl", "aarch64-pc-windows-msvc", "x86_64-apple-darwin", "x86_64-pc-windows-msvc", "x86_64-unknown-linux-gnu", "x86_64-unknown-linux-musl", "x86_64-unknown-freebsd", "i686-pc-windows-msvc", "armv7-unknown-linux-gnueabihf", "armv7-linux-androideabi", "universal-apple-darwin", "riscv64gc-unknown-linux-gnu"];
2
+ export declare const UNIVERSAL_TARGETS: {
3
+ readonly 'universal-apple-darwin': readonly ["aarch64-apple-darwin", "x86_64-apple-darwin"];
4
+ };
5
+ export declare const AVAILABLE_TARGETS: readonly ["aarch64-apple-darwin", "aarch64-linux-android", "aarch64-unknown-linux-gnu", "aarch64-unknown-linux-musl", "aarch64-pc-windows-msvc", "x86_64-apple-darwin", "x86_64-pc-windows-msvc", "x86_64-unknown-linux-gnu", "x86_64-unknown-linux-musl", "x86_64-unknown-freebsd", "i686-pc-windows-msvc", "armv7-unknown-linux-gnueabihf", "armv7-unknown-linux-musleabihf", "armv7-linux-androideabi", "universal-apple-darwin", "riscv64gc-unknown-linux-gnu", "powerpc64le-unknown-linux-gnu", "s390x-unknown-linux-gnu", "wasm32-wasi-preview1-threads"];
4
6
  export type TargetTriple = (typeof AVAILABLE_TARGETS)[number];
5
- export declare const DEFAULT_TARGETS: readonly ["x86_64-apple-darwin", "x86_64-pc-windows-msvc", "x86_64-unknown-linux-gnu"];
7
+ export declare const DEFAULT_TARGETS: readonly ["x86_64-apple-darwin", "aarch64-apple-darwin", "x86_64-pc-windows-msvc", "x86_64-unknown-linux-gnu"];
6
8
  export declare const TARGET_LINKER: Record<string, string>;
7
- type NodeJSArch = 'arm' | 'arm64' | 'ia32' | 'mips' | 'mipsel' | 'ppc' | 'ppc64' | 'riscv64' | 's390' | 's390x' | 'x32' | 'x64' | 'universal';
9
+ type NodeJSArch = 'arm' | 'arm64' | 'ia32' | 'mips' | 'mipsel' | 'ppc' | 'ppc64' | 'riscv64' | 's390' | 's390x' | 'x32' | 'x64' | 'universal' | 'wasm32';
8
10
  export declare const NodeArchToCpu: Record<string, string>;
9
11
  export declare const UniArchsByPlatform: Partial<Record<Platform, NodeJSArch[]>>;
10
12
  export interface Target {
11
13
  triple: string;
12
14
  platformArchABI: string;
13
15
  platform: Platform;
14
- arch: NodeJSArch | 'wasm32';
16
+ arch: NodeJSArch;
15
17
  abi: string | null;
16
18
  }
17
19
  /**
@@ -1,4 +1,7 @@
1
- import { execSync } from 'child_process';
1
+ import { execSync } from 'node:child_process';
2
+ export const UNIVERSAL_TARGETS = {
3
+ 'universal-apple-darwin': ['aarch64-apple-darwin', 'x86_64-apple-darwin'],
4
+ };
2
5
  export const AVAILABLE_TARGETS = [
3
6
  'aarch64-apple-darwin',
4
7
  'aarch64-linux-android',
@@ -12,18 +15,25 @@ export const AVAILABLE_TARGETS = [
12
15
  'x86_64-unknown-freebsd',
13
16
  'i686-pc-windows-msvc',
14
17
  'armv7-unknown-linux-gnueabihf',
18
+ 'armv7-unknown-linux-musleabihf',
15
19
  'armv7-linux-androideabi',
16
20
  'universal-apple-darwin',
17
21
  'riscv64gc-unknown-linux-gnu',
22
+ 'powerpc64le-unknown-linux-gnu',
23
+ 's390x-unknown-linux-gnu',
24
+ 'wasm32-wasi-preview1-threads',
18
25
  ];
19
26
  export const DEFAULT_TARGETS = [
20
27
  'x86_64-apple-darwin',
28
+ 'aarch64-apple-darwin',
21
29
  'x86_64-pc-windows-msvc',
22
30
  'x86_64-unknown-linux-gnu',
23
31
  ];
24
32
  export const TARGET_LINKER = {
25
33
  'aarch64-unknown-linux-musl': 'aarch64-linux-musl-gcc',
26
34
  'riscv64gc-unknown-linux-gnu': 'riscv64-linux-gnu-gcc',
35
+ 'powerpc64le-unknown-linux-gnu': 'powerpc64le-linux-gnu-gcc',
36
+ 's390x-unknown-linux-gnu': 's390x-linux-gnu-gcc',
27
37
  };
28
38
  const CpuToNodeArch = {
29
39
  x86_64: 'x64',
@@ -31,6 +41,7 @@ const CpuToNodeArch = {
31
41
  i686: 'ia32',
32
42
  armv7: 'arm',
33
43
  riscv64gc: 'riscv64',
44
+ powerpc64le: 'ppc64',
34
45
  };
35
46
  export const NodeArchToCpu = {
36
47
  x64: 'x86_64',
@@ -38,6 +49,7 @@ export const NodeArchToCpu = {
38
49
  ia32: 'i686',
39
50
  arm: 'armv7',
40
51
  riscv64: 'riscv64gc',
52
+ ppc64: 'powerpc64le',
41
53
  };
42
54
  const SysToNodePlatform = {
43
55
  linux: 'linux',
@@ -59,10 +71,12 @@ export const UniArchsByPlatform = {
59
71
  * - `abi` = The ABI, for example `gnu`, `android`, `eabi`, etc.
60
72
  */
61
73
  export function parseTriple(rawTriple) {
62
- if (rawTriple === 'wasm32-wasi-preview1-threads') {
74
+ if (rawTriple === 'wasm32-wasi' ||
75
+ rawTriple === 'wasm32-wasi-preview1-threads' ||
76
+ rawTriple.startsWith('wasm32-wasip')) {
63
77
  return {
64
78
  triple: rawTriple,
65
- platformArchABI: rawTriple,
79
+ platformArchABI: 'wasm32-wasi',
66
80
  platform: 'wasi',
67
81
  arch: 'wasm32',
68
82
  abi: 'wasi',
@@ -1 +1 @@
1
- {"version":3,"file":"target.js","sourceRoot":"","sources":["../../src/utils/target.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"target.js","sourceRoot":"","sources":["../../src/utils/target.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export declare const DEFAULT_TYPE_DEF_HEADER = "/* auto-generated by NAPI-RS */\n/* eslint-disable */\n";
2
- export declare function processTypeDef(intermediateTypeFile: string, constEnum: boolean, header?: string): Promise<{
2
+ export declare function processTypeDef(intermediateTypeFile: string, constEnum: boolean): Promise<{
3
3
  dts: string;
4
4
  exports: string[];
5
5
  }>;