@napi-rs/cli 3.0.0-alpha.2 → 3.0.0-alpha.20

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 (201) hide show
  1. package/dist/api/artifacts.js +5 -2
  2. package/dist/api/artifacts.js.map +1 -0
  3. package/dist/api/build.d.ts +1 -1
  4. package/dist/api/build.js +182 -32
  5. package/dist/api/build.js.map +1 -0
  6. package/dist/api/create-npm-dirs.js +3 -2
  7. package/dist/api/create-npm-dirs.js.map +1 -0
  8. package/dist/api/load-wasi-template.d.ts +1 -0
  9. package/dist/api/load-wasi-template.js +60 -0
  10. package/dist/api/load-wasi-template.js.map +1 -0
  11. package/dist/api/new.js +31 -12
  12. package/dist/api/new.js.map +1 -0
  13. package/dist/api/pre-publish.js +4 -3
  14. package/dist/api/pre-publish.js.map +1 -0
  15. package/dist/api/rename.js +9 -0
  16. package/dist/api/rename.js.map +1 -0
  17. package/dist/api/templates/.gitignore.d.ts +1 -1
  18. package/dist/api/templates/.gitignore.js +2 -0
  19. package/dist/api/templates/.gitignore.js.map +1 -0
  20. package/dist/api/templates/.npmignore.js +1 -0
  21. package/dist/api/templates/.npmignore.js.map +1 -0
  22. package/dist/api/templates/build.rs.js +1 -0
  23. package/dist/api/templates/build.rs.js.map +1 -0
  24. package/dist/api/templates/cargo.toml.js +1 -0
  25. package/dist/api/templates/cargo.toml.js.map +1 -0
  26. package/dist/api/templates/ci-template.js +64 -57
  27. package/dist/api/templates/ci-template.js.map +1 -0
  28. package/dist/api/templates/ci.yml.d.ts +1 -1
  29. package/dist/api/templates/ci.yml.js +10 -3
  30. package/dist/api/templates/ci.yml.js.map +1 -0
  31. package/dist/api/templates/index.js +1 -0
  32. package/dist/api/templates/index.js.map +1 -0
  33. package/dist/api/templates/js-binding.d.ts +1 -1
  34. package/dist/api/templates/js-binding.js +306 -108
  35. package/dist/api/templates/js-binding.js.map +1 -0
  36. package/dist/api/templates/lib.rs.js +2 -4
  37. package/dist/api/templates/lib.rs.js.map +1 -0
  38. package/dist/api/templates/package.json.js +30 -28
  39. package/dist/api/templates/package.json.js.map +1 -0
  40. package/dist/api/universalize.js +2 -1
  41. package/dist/api/universalize.js.map +1 -0
  42. package/dist/api/version.js +2 -1
  43. package/dist/api/version.js.map +1 -0
  44. package/dist/api/wasi-worker-template.d.ts +1 -0
  45. package/dist/api/wasi-worker-template.js +53 -0
  46. package/dist/api/wasi-worker-template.js.map +1 -0
  47. package/dist/cli.js +1 -0
  48. package/dist/cli.js.map +1 -0
  49. package/dist/commands/artifacts.js +1 -0
  50. package/dist/commands/artifacts.js.map +1 -0
  51. package/dist/commands/build.js +1 -0
  52. package/dist/commands/build.js.map +1 -0
  53. package/dist/commands/create-npm-dirs.js +1 -0
  54. package/dist/commands/create-npm-dirs.js.map +1 -0
  55. package/dist/commands/help.js +1 -0
  56. package/dist/commands/help.js.map +1 -0
  57. package/dist/commands/new.js +2 -4
  58. package/dist/commands/new.js.map +1 -0
  59. package/dist/commands/pre-publish.js +1 -0
  60. package/dist/commands/pre-publish.js.map +1 -0
  61. package/dist/commands/rename.js +1 -0
  62. package/dist/commands/rename.js.map +1 -0
  63. package/dist/commands/universalize.js +1 -0
  64. package/dist/commands/universalize.js.map +1 -0
  65. package/dist/commands/version.js +1 -0
  66. package/dist/commands/version.js.map +1 -0
  67. package/dist/def/artifacts.d.ts +11 -1
  68. package/dist/def/artifacts.js +7 -2
  69. package/dist/def/artifacts.js.map +1 -0
  70. package/dist/def/build.d.ts +32 -2
  71. package/dist/def/build.js +23 -2
  72. package/dist/def/build.js.map +1 -0
  73. package/dist/def/create-npm-dirs.d.ts +10 -0
  74. package/dist/def/create-npm-dirs.js +5 -0
  75. package/dist/def/create-npm-dirs.js.map +1 -0
  76. package/dist/def/new.d.ts +2 -2
  77. package/dist/def/new.js +1 -0
  78. package/dist/def/new.js.map +1 -0
  79. package/dist/def/pre-publish.d.ts +10 -0
  80. package/dist/def/pre-publish.js +7 -2
  81. package/dist/def/pre-publish.js.map +1 -0
  82. package/dist/def/rename.d.ts +11 -1
  83. package/dist/def/rename.js +6 -1
  84. package/dist/def/rename.js.map +1 -0
  85. package/dist/def/universalize.d.ts +10 -0
  86. package/dist/def/universalize.js +5 -0
  87. package/dist/def/universalize.js.map +1 -0
  88. package/dist/def/version.d.ts +10 -0
  89. package/dist/def/version.js +5 -0
  90. package/dist/def/version.js.map +1 -0
  91. package/dist/index.cjs +3424 -8044
  92. package/dist/index.d.ts +1 -0
  93. package/dist/index.js +2 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/utils/__tests__/config.spec.d.ts +1 -0
  96. package/dist/utils/__tests__/config.spec.js +63 -0
  97. package/dist/utils/__tests__/config.spec.js.map +1 -0
  98. package/dist/utils/__tests__/target.spec.js +1 -0
  99. package/dist/utils/__tests__/target.spec.js.map +1 -0
  100. package/dist/utils/__tests__/typegen.spec.js +9 -4
  101. package/dist/utils/__tests__/typegen.spec.js.map +1 -0
  102. package/dist/utils/__tests__/version.spec.js +1 -0
  103. package/dist/utils/__tests__/version.spec.js.map +1 -0
  104. package/dist/utils/cargo.js +1 -0
  105. package/dist/utils/cargo.js.map +1 -0
  106. package/dist/utils/ci.js +10 -0
  107. package/dist/utils/ci.js.map +1 -0
  108. package/dist/utils/config.d.ts +16 -5
  109. package/dist/utils/config.js +37 -6
  110. package/dist/utils/config.js.map +1 -0
  111. package/dist/utils/index.js +1 -0
  112. package/dist/utils/index.js.map +1 -0
  113. package/dist/utils/log.js +1 -0
  114. package/dist/utils/log.js.map +1 -0
  115. package/dist/utils/metadata.js +1 -0
  116. package/dist/utils/metadata.js.map +1 -0
  117. package/dist/utils/misc.js +1 -0
  118. package/dist/utils/misc.js.map +1 -0
  119. package/dist/utils/target.d.ts +6 -5
  120. package/dist/utils/target.js +15 -1
  121. package/dist/utils/target.js.map +1 -0
  122. package/dist/utils/typegen.d.ts +4 -1
  123. package/dist/utils/typegen.js +27 -6
  124. package/dist/utils/typegen.js.map +1 -0
  125. package/dist/utils/version.d.ts +2 -1
  126. package/dist/utils/version.js +13 -10
  127. package/dist/utils/version.js.map +1 -0
  128. package/package.json +48 -15
  129. package/src/api/artifacts.ts +7 -4
  130. package/src/api/build.ts +283 -39
  131. package/src/api/create-npm-dirs.ts +5 -2
  132. package/src/api/load-wasi-template.ts +62 -0
  133. package/src/api/new.ts +37 -14
  134. package/src/api/pre-publish.ts +14 -8
  135. package/src/api/rename.ts +9 -0
  136. package/src/api/templates/.gitignore.ts +1 -0
  137. package/src/api/templates/ci-template.ts +63 -57
  138. package/src/api/templates/ci.yml.ts +9 -6
  139. package/src/api/templates/js-binding.ts +299 -104
  140. package/src/api/templates/lib.rs.ts +1 -4
  141. package/src/api/templates/package.json.ts +31 -27
  142. package/src/api/universalize.ts +4 -1
  143. package/src/api/version.ts +4 -1
  144. package/src/api/wasi-worker-template.ts +52 -0
  145. package/src/commands/new.ts +1 -5
  146. package/src/def/artifacts.ts +12 -3
  147. package/src/def/build.ts +51 -4
  148. package/src/def/create-npm-dirs.ts +9 -0
  149. package/src/def/new.ts +1 -1
  150. package/src/def/pre-publish.ts +11 -2
  151. package/src/def/rename.ts +11 -2
  152. package/src/def/universalize.ts +9 -0
  153. package/src/def/version.ts +9 -0
  154. package/src/index.ts +2 -0
  155. package/src/utils/__tests__/__snapshots__/config.spec.ts.md +97 -0
  156. package/src/utils/__tests__/__snapshots__/config.spec.ts.snap +0 -0
  157. package/src/utils/__tests__/__snapshots__/target.spec.ts.md +7 -0
  158. package/src/utils/__tests__/__snapshots__/target.spec.ts.snap +0 -0
  159. package/src/utils/__tests__/__snapshots__/typegen.spec.ts.md +555 -0
  160. package/src/utils/__tests__/__snapshots__/typegen.spec.ts.snap +0 -0
  161. package/src/utils/__tests__/__snapshots__/version.spec.ts.md +9 -8
  162. package/src/utils/__tests__/__snapshots__/version.spec.ts.snap +0 -0
  163. package/src/utils/__tests__/config.spec.ts +81 -0
  164. package/src/utils/__tests__/typegen.spec.ts +19 -4
  165. package/src/utils/ci.ts +9 -0
  166. package/src/utils/config.ts +64 -9
  167. package/src/utils/target.ts +22 -8
  168. package/src/utils/typegen.ts +30 -5
  169. package/src/utils/version.ts +11 -9
  170. package/dist/def/commands/artifacts.d.ts +0 -15
  171. package/dist/def/commands/artifacts.js +0 -29
  172. package/dist/def/commands/build.d.ts +0 -53
  173. package/dist/def/commands/build.js +0 -105
  174. package/dist/def/commands/create-npm-dirs.d.ts +0 -15
  175. package/dist/def/commands/create-npm-dirs.js +0 -29
  176. package/dist/def/commands/new.d.ts +0 -27
  177. package/dist/def/commands/new.js +0 -53
  178. package/dist/def/commands/pre-publish.d.ts +0 -23
  179. package/dist/def/commands/pre-publish.js +0 -45
  180. package/dist/def/commands/rename.d.ts +0 -25
  181. package/dist/def/commands/rename.js +0 -49
  182. package/dist/def/commands/universalize.d.ts +0 -13
  183. package/dist/def/commands/universalize.js +0 -25
  184. package/dist/def/commands/version.d.ts +0 -13
  185. package/dist/def/commands/version.js +0 -25
  186. package/dist/def/options/artifacts.d.ts +0 -35
  187. package/dist/def/options/artifacts.js +0 -11
  188. package/dist/def/options/build.d.ts +0 -97
  189. package/dist/def/options/build.js +0 -3
  190. package/dist/def/options/create-npm-dirs.d.ts +0 -35
  191. package/dist/def/options/create-npm-dirs.js +0 -11
  192. package/dist/def/options/new.d.ts +0 -79
  193. package/dist/def/options/new.js +0 -15
  194. package/dist/def/options/pre-publish.d.ts +0 -65
  195. package/dist/def/options/pre-publish.js +0 -13
  196. package/dist/def/options/rename.d.ts +0 -75
  197. package/dist/def/options/rename.js +0 -11
  198. package/dist/def/options/universalize.d.ts +0 -28
  199. package/dist/def/options/universalize.js +0 -10
  200. package/dist/def/options/version.d.ts +0 -28
  201. package/dist/def/options/version.js +0 -10
@@ -1,4 +1,4 @@
1
- import { join, parse, resolve } from 'path';
1
+ import { join, parse, resolve } from 'node:path';
2
2
  import * as colors from 'colorette';
3
3
  import { applyDefaultArtifactsOptions, } from '../def/artifacts.js';
4
4
  import { readNapiConfig, debugFactory, readFileAsync, writeFileAsync, UniArchsByPlatform, readdirAsync, } from '../utils/index.js';
@@ -16,7 +16,9 @@ export async function collectArtifacts(userOptions) {
16
16
  debug.info(`Read [${colors.yellowBright(filePath)}]`);
17
17
  const sourceContent = await readFileAsync(filePath);
18
18
  const parsedName = parse(filePath);
19
- const [_binaryName, platformArchABI] = parsedName.name.split('.');
19
+ const terms = parsedName.name.split('.');
20
+ const platformArchABI = terms.pop();
21
+ const _binaryName = terms.join('.');
20
22
  if (_binaryName !== binaryName) {
21
23
  debug.warn(`[${_binaryName}] is not matched with [${binaryName}], skip`);
22
24
  return;
@@ -48,3 +50,4 @@ async function collectNodeBinaries(root) {
48
50
  }
49
51
  return nodeBinaries;
50
52
  }
53
+ //# sourceMappingURL=artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/api/artifacts.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { BuildOptions as RawBuildOptions } from '../def/build.js';
2
- type OutputKind = 'js' | 'dts' | 'node' | 'exe';
2
+ type OutputKind = 'js' | 'dts' | 'node' | 'exe' | 'wasm';
3
3
  type Output = {
4
4
  kind: OutputKind;
5
5
  path: string;
package/dist/api/build.js CHANGED
@@ -1,11 +1,16 @@
1
- import { spawn } from 'child_process';
2
- import { createHash } from 'crypto';
3
- import { tmpdir } from 'os';
4
- import { parse, join, resolve } from 'path';
1
+ import { spawn } from 'node:child_process';
2
+ import { createHash } from 'node:crypto';
3
+ import { existsSync, mkdirSync } from 'node:fs';
4
+ import { createRequire } from 'node:module';
5
+ import { tmpdir, homedir } from 'node:os';
6
+ import { parse, join, resolve } from 'node:path';
5
7
  import * as colors from 'colorette';
6
- import { CLI_VERSION, copyFileAsync, debugFactory, DEFAULT_TYPE_DEF_HEADER, fileExists, getSystemDefaultTarget, getTargetLinker, mkdirAsync, parseMetadata, parseTriple, processTypeDef, readNapiConfig, targetToEnvVar, tryInstallCargoBinary, unlinkAsync, writeFileAsync, } from '../utils/index.js';
7
- import { createJsBinding } from './templates/index.js';
8
+ import { CLI_VERSION, copyFileAsync, debugFactory, DEFAULT_TYPE_DEF_HEADER, fileExists, getSystemDefaultTarget, getTargetLinker, mkdirAsync, parseMetadata, parseTriple, processTypeDef, readFileAsync, readNapiConfig, targetToEnvVar, tryInstallCargoBinary, unlinkAsync, writeFileAsync, } from '../utils/index.js';
9
+ import { createWasiBinding } from './load-wasi-template.js';
10
+ import { createCjsBinding } from './templates/index.js';
11
+ import { WASI_WORKER_TEMPLATE } from './wasi-worker-template.js';
8
12
  const debug = debugFactory('build');
13
+ const require = createRequire(import.meta.url);
9
14
  export async function buildProject(options) {
10
15
  debug('napi build command receive options: %O', options);
11
16
  const cwd = options.cwd ?? process.cwd();
@@ -31,7 +36,7 @@ export async function buildProject(options) {
31
36
  ? parseTriple(process.env.CARGO_BUILD_TARGET)
32
37
  : getSystemDefaultTarget(), crateDir, resolvePath(options.outputDir ?? crateDir), options.targetDir ??
33
38
  process.env.CARGO_BUILD_TARGET_DIR ??
34
- metadata.target_directory, await readNapiConfig(resolvePath(options.packageJsonPath ?? 'package.json')));
39
+ metadata.target_directory, await readNapiConfig(resolvePath(options.configPath ?? options.packageJsonPath ?? 'package.json'), options.configPath ? resolvePath(options.configPath) : undefined));
35
40
  return builder.build();
36
41
  }
37
42
  class Builder {
@@ -81,21 +86,82 @@ class Builder {
81
86
  .setPackage()
82
87
  .setFeatures()
83
88
  .setTarget()
89
+ .pickCrossToolchain()
84
90
  .setEnvs()
85
91
  .setBypassArgs()
86
92
  .exec();
87
93
  }
94
+ pickCrossToolchain() {
95
+ if (!this.options.useNapiCross) {
96
+ return this;
97
+ }
98
+ if (this.options.useCross) {
99
+ debug.warn('You are trying to use both `--cross` and `--use-napi-cross` options, `--use-cross` will be ignored.');
100
+ }
101
+ if (this.options.crossCompile) {
102
+ debug.warn('You are trying to use both `--cross-compile` and `--use-napi-cross` options, `--cross-compile` will be ignored.');
103
+ }
104
+ try {
105
+ const { version, download } = require('@napi-rs/cross-toolchain');
106
+ const toolchainPath = join(homedir(), '.napi-rs', 'cross-toolchain', version, this.target.triple);
107
+ mkdirSync(toolchainPath, { recursive: true });
108
+ if (existsSync(join(toolchainPath, 'package.json'))) {
109
+ debug(`Toolchain ${toolchainPath} exists, skip extracting`);
110
+ }
111
+ else {
112
+ const tarArchive = download(process.arch, this.target.triple);
113
+ tarArchive.unpack(toolchainPath);
114
+ }
115
+ const upperCaseTarget = targetToEnvVar(this.target.triple);
116
+ const linkerEnv = `CARGO_TARGET_${upperCaseTarget}_LINKER`;
117
+ this.envs[linkerEnv] = join(toolchainPath, 'bin', `${this.target.triple}-gcc`);
118
+ if (!process.env.TARGET_SYSROOT) {
119
+ this.envs[`TARGET_SYSROOT`] = join(toolchainPath, this.target.triple, 'sysroot');
120
+ }
121
+ if (!process.env.TARGET_AR) {
122
+ this.envs[`TARGET_AR`] = join(toolchainPath, 'bin', `${this.target.triple}-ar`);
123
+ }
124
+ if (!process.env.TARGET_RANLIB) {
125
+ this.envs[`TARGET_RANLIB`] = join(toolchainPath, 'bin', `${this.target.triple}-ranlib`);
126
+ }
127
+ if (!process.env.TARGET_READELF) {
128
+ this.envs[`TARGET_READELF`] = join(toolchainPath, 'bin', `${this.target.triple}-readelf`);
129
+ }
130
+ if (!process.env.TARGET_C_INCLUDE_PATH) {
131
+ this.envs[`TARGET_C_INCLUDE_PATH`] = join(toolchainPath, this.target.triple, 'sysroot', 'usr', 'include/');
132
+ }
133
+ if (!process.env.CC && !process.env.TARGET_CC) {
134
+ this.envs[`CC`] = join(toolchainPath, 'bin', `${this.target.triple}-gcc`);
135
+ this.envs[`TARGET_CC`] = join(toolchainPath, 'bin', `${this.target.triple}-gcc`);
136
+ }
137
+ if ((process.env.CC === 'clang' &&
138
+ (process.env.TARGET_CC === 'clang' || !process.env.TARGET_CC)) ||
139
+ process.env.TARGET_CC === 'clang') {
140
+ this.envs.CFLAGS = `--sysroot=${this.envs.TARGET_SYSROOT}`;
141
+ }
142
+ }
143
+ catch (e) {
144
+ debug.warn('Pick cross toolchain failed', e);
145
+ // ignore, do nothing
146
+ }
147
+ return this;
148
+ }
88
149
  exec() {
89
150
  debug(`Start building crate: ${this.crate.name}`);
90
151
  debug(' %i', `cargo ${this.args.join(' ')}`);
91
152
  const controller = new AbortController();
153
+ const watch = this.options.watch;
92
154
  const buildTask = new Promise((resolve, reject) => {
93
- const buildProcess = spawn('cargo', this.args, {
155
+ if (this.options.useCross && this.options.crossCompile) {
156
+ throw new Error('`--use-cross` and `--cross-compile` can not be used together');
157
+ }
158
+ const command = process.env.CARGO ?? (this.options.useCross ? 'cross' : 'cargo');
159
+ const buildProcess = spawn(command, this.args, {
94
160
  env: {
95
161
  ...process.env,
96
162
  ...this.envs,
97
163
  },
98
- stdio: 'inherit',
164
+ stdio: watch ? ['inherit', 'inherit', 'pipe'] : 'inherit',
99
165
  cwd: this.cwd,
100
166
  signal: controller.signal,
101
167
  });
@@ -113,6 +179,14 @@ class Builder {
113
179
  cause: e,
114
180
  }));
115
181
  });
182
+ // watch mode only, they are piped through stderr
183
+ buildProcess.stderr?.on('data', (data) => {
184
+ const output = data.toString();
185
+ console.error(output);
186
+ if (/Finished\s(dev|release)/.test(output)) {
187
+ this.postBuild().catch(() => { });
188
+ }
189
+ });
116
190
  });
117
191
  return {
118
192
  task: buildTask.then(() => this.postBuild()),
@@ -132,7 +206,7 @@ class Builder {
132
206
  // ===>
133
207
  // cargo watch [...] -- build --target x86_64-unknown-linux-gnu
134
208
  // cargo watch [...] -- zigbuild --target x86_64-unknown-linux-gnu
135
- this.args.push('watch', '--why', '-i', '*.{js,ts,node}', '-w', this.crateDir, '--', 'cargo');
209
+ this.args.push('watch', '--why', '-i', '*.{js,ts,node}', '-w', this.crateDir, '--', 'cargo', 'build');
136
210
  set = true;
137
211
  }
138
212
  }
@@ -244,17 +318,27 @@ class Builder {
244
318
  }
245
319
  const targetArch = this.target.arch === 'arm' ? 'armv7a' : 'aarch64';
246
320
  const targetPlatform = this.target.arch === 'arm' ? 'androideabi24' : 'android24';
321
+ const hostPlatform = process.platform === 'darwin'
322
+ ? 'darwin'
323
+ : process.platform === 'win32'
324
+ ? 'windows'
325
+ : 'linux';
247
326
  Object.assign(this.envs, {
248
- CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/${targetArch}-linux-android24-clang`,
249
- CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/${targetArch}-linux-androideabi24-clang`,
250
- CC: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/${targetArch}-linux-${targetPlatform}-clang`,
251
- CXX: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/${targetArch}-linux-${targetPlatform}-clang++`,
252
- AR: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar`,
327
+ CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-android24-clang`,
328
+ CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-androideabi24-clang`,
329
+ CC: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-${targetPlatform}-clang`,
330
+ CXX: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-${targetPlatform}-clang++`,
331
+ AR: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/llvm-ar`,
332
+ RANLIB: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/llvm-ranlib`,
253
333
  ANDROID_NDK: ANDROID_NDK_LATEST_HOME,
254
- PATH: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${process.env.PATH}`,
334
+ PATH: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin:${process.env.PATH}`,
255
335
  });
256
336
  }
257
337
  // END LINKER
338
+ if (this.target.platform === 'wasi') {
339
+ const emnapi = join(require.resolve('emnapi'), '..', 'lib', 'wasm32-wasi-threads');
340
+ this.envs.EMNAPI_LINK_DIR = emnapi;
341
+ }
258
342
  debug('Set envs: ');
259
343
  Object.entries(this.envs).forEach(([k, v]) => {
260
344
  debug(' %i', `${k}=${v}`);
@@ -263,13 +347,16 @@ class Builder {
263
347
  }
264
348
  setFeatures() {
265
349
  const args = [];
350
+ if (this.options.allFeatures && this.options.allFeatures) {
351
+ throw new Error('Cannot specify --all-features and --no-default-features together');
352
+ }
266
353
  if (this.options.allFeatures) {
267
354
  args.push('--all-features');
268
355
  }
269
356
  else if (this.options.noDefaultFeatures) {
270
357
  args.push('--no-default-features');
271
358
  }
272
- else if (this.options.features) {
359
+ if (this.options.features) {
273
360
  args.push('--features', ...this.options.features);
274
361
  }
275
362
  debug('Set features flags: ');
@@ -287,6 +374,12 @@ class Builder {
287
374
  if (this.options.targetDir) {
288
375
  this.args.push('--target-dir', this.options.targetDir);
289
376
  }
377
+ if (this.options.profile) {
378
+ this.args.push('--profile', this.options.profile);
379
+ }
380
+ if (this.options.manifestPath) {
381
+ this.args.push('--manifest-path', this.options.manifestPath);
382
+ }
290
383
  if (this.options.cargoOptions?.length) {
291
384
  this.args.push(...this.options.cargoOptions);
292
385
  }
@@ -318,11 +411,35 @@ class Builder {
318
411
  cause: e,
319
412
  });
320
413
  }
321
- await this.copyArtifact();
414
+ const dest = await this.copyArtifact();
322
415
  // only for cdylib
323
416
  if (this.cdyLibName) {
324
- await this.generateTypeDef();
325
- await this.writeJsBinding();
417
+ const idents = await this.generateTypeDef();
418
+ const intermediateWasiRegisterFile = this.envs.WASI_REGISTER_TMP_PATH;
419
+ const wasiRegisterFunctions = this.target.arch === 'wasm32'
420
+ ? await (async function readIntermediateWasiRegisterFile() {
421
+ const fileContent = await readFileAsync(intermediateWasiRegisterFile, 'utf8').catch((err) => {
422
+ console.warn(`Read ${colors.yellowBright(intermediateWasiRegisterFile)} failed, reason: ${err.message}`);
423
+ return ``;
424
+ });
425
+ return fileContent
426
+ .split('\n')
427
+ .map((l) => l.trim())
428
+ .filter((l) => l.length)
429
+ .map((line) => {
430
+ const [_, fn] = line.split(':');
431
+ return fn.trim();
432
+ });
433
+ })()
434
+ : [];
435
+ const jsOutput = await this.writeJsBinding(idents);
436
+ const wasmOutput = await this.writeWasiBinding(wasiRegisterFunctions, dest ?? 'index.wasm', idents);
437
+ if (jsOutput) {
438
+ this.outputs.push(jsOutput);
439
+ }
440
+ if (wasmOutput) {
441
+ this.outputs.push(wasmOutput);
442
+ }
326
443
  }
327
444
  return this.outputs;
328
445
  }
@@ -331,7 +448,9 @@ class Builder {
331
448
  if (!srcName || !destName) {
332
449
  return;
333
450
  }
334
- const src = join(this.targetDir, this.target.triple, this.options.release ? 'release' : 'debug', srcName);
451
+ const profile = this.options.profile ?? (this.options.release ? 'release' : 'debug');
452
+ const src = join(this.targetDir, this.target.triple, profile, srcName);
453
+ debug(`Copy artifact from: [${src}]`);
335
454
  const dest = join(this.outputDir, destName);
336
455
  try {
337
456
  if (await fileExists(dest)) {
@@ -345,6 +464,7 @@ class Builder {
345
464
  kind: dest.endsWith('.node') ? 'node' : 'exe',
346
465
  path: dest,
347
466
  });
467
+ return dest;
348
468
  }
349
469
  catch (e) {
350
470
  throw new Error('Failed to copy artifact', {
@@ -359,7 +479,9 @@ class Builder {
359
479
  ? `lib${cdyLib}.dylib`
360
480
  : this.target.platform === 'win32'
361
481
  ? `${cdyLib}.dll`
362
- : `lib${cdyLib}.so`;
482
+ : this.target.platform === 'wasi' || this.target.platform === 'wasm'
483
+ ? `${cdyLib}.wasm`
484
+ : `lib${cdyLib}.so`;
363
485
  let destName = this.config.binaryName;
364
486
  // add platform suffix to binary name
365
487
  // index[.linux-x64-gnu].node
@@ -367,7 +489,12 @@ class Builder {
367
489
  if (this.options.platform) {
368
490
  destName += `.${this.target.platformArchABI}`;
369
491
  }
370
- destName += '.node';
492
+ if (srcName.endsWith('.wasm')) {
493
+ destName += '.wasi-wasm32.wasm';
494
+ }
495
+ else {
496
+ destName += '.node';
497
+ }
371
498
  return [srcName, destName];
372
499
  }
373
500
  else if (this.binName) {
@@ -378,10 +505,10 @@ class Builder {
378
505
  }
379
506
  async generateTypeDef() {
380
507
  if (!(await fileExists(this.envs.TYPE_DEF_TMP_PATH))) {
381
- return;
508
+ return [];
382
509
  }
383
510
  const dest = join(this.outputDir, this.options.dts ?? 'index.d.ts');
384
- const dts = await processTypeDef(this.envs.TYPE_DEF_TMP_PATH, !this.options.noDtsHeader
511
+ const { dts, exports } = await processTypeDef(this.envs.TYPE_DEF_TMP_PATH, this.options.constEnum ?? true, !this.options.noDtsHeader
385
512
  ? this.options.dtsHeader ?? DEFAULT_TYPE_DEF_HEADER
386
513
  : '');
387
514
  try {
@@ -397,24 +524,47 @@ class Builder {
397
524
  debug.error('Failed to write type def file');
398
525
  debug.error(e);
399
526
  }
527
+ return exports;
400
528
  }
401
- async writeJsBinding() {
402
- if (!this.options.platform || this.options.noJsBinding) {
529
+ async writeJsBinding(idents) {
530
+ if (!this.options.platform ||
531
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
532
+ this.options.noJsBinding ||
533
+ idents.length === 0) {
403
534
  return;
404
535
  }
405
- const dest = join(this.outputDir, this.options.jsBinding ?? 'index.js');
406
- const js = createJsBinding(this.config.binaryName, this.config.packageName);
536
+ const name = this.options.jsBinding ?? 'index.js';
537
+ const cjs = createCjsBinding(this.config.binaryName, this.config.packageName, idents);
407
538
  try {
539
+ const dest = join(this.outputDir, name);
408
540
  debug('Writing js binding to:');
409
541
  debug(' %i', dest);
410
- await writeFileAsync(dest, js, 'utf-8');
411
- this.outputs.push({
542
+ await writeFileAsync(dest, cjs, 'utf-8');
543
+ return {
412
544
  kind: 'js',
413
545
  path: dest,
414
- });
546
+ };
415
547
  }
416
548
  catch (e) {
417
549
  throw new Error('Failed to write js binding file', { cause: e });
418
550
  }
419
551
  }
552
+ async writeWasiBinding(wasiRegisterFunctions, distFileName, idents) {
553
+ if (distFileName && wasiRegisterFunctions.length) {
554
+ const { name, dir } = parse(distFileName);
555
+ const newPath = join(dir, `${this.config.binaryName}.wasi.cjs`);
556
+ const workerPath = join(dir, 'wasi-worker.mjs');
557
+ const exportsCode = idents
558
+ .map((ident) => `module.exports.${ident} = __napiModule.exports.${ident}`)
559
+ .join(',\n');
560
+ await writeFileAsync(newPath, createWasiBinding(name, wasiRegisterFunctions) + exportsCode + '\n', 'utf8');
561
+ await writeFileAsync(workerPath, WASI_WORKER_TEMPLATE, 'utf8');
562
+ return {
563
+ kind: 'wasm',
564
+ path: newPath,
565
+ };
566
+ }
567
+ return null;
568
+ }
420
569
  }
570
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/api/build.ts"],"names":[],"mappings":"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"}
@@ -23,8 +23,8 @@ export async function createNpmDirs(userOptions) {
23
23
  }
24
24
  const packageJsonPath = resolve(options.cwd, options.packageJsonPath);
25
25
  const npmPath = resolve(options.cwd, options.npmDir);
26
- debug(`Read content from [${packageJsonPath}]`);
27
- const { targets, binaryName, packageName, packageJson } = await readNapiConfig(packageJsonPath);
26
+ debug(`Read content from [${options.configPath ?? packageJsonPath}]`);
27
+ const { targets, binaryName, packageName, packageJson } = await readNapiConfig(packageJsonPath, options.configPath ? resolve(options.cwd, options.configPath) : undefined);
28
28
  for (const target of targets) {
29
29
  const targetDir = join(npmPath, `${target.platformArchABI}`);
30
30
  await mkdirAsync(targetDir);
@@ -61,3 +61,4 @@ function readme(packageName, target) {
61
61
  This is the **${target.triple}** binary for \`${packageName}\`
62
62
  `;
63
63
  }
64
+ //# sourceMappingURL=create-npm-dirs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-npm-dirs.js","sourceRoot":"","sources":["../../src/api/create-npm-dirs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const createWasiBinding: (wasmFileName: string, wasiRegisterFunctions: string[]) => string;
@@ -0,0 +1,60 @@
1
+ export const createWasiBinding = (wasmFileName, wasiRegisterFunctions) => `/* eslint-disable */
2
+ /* prettier-ignore */
3
+
4
+ /* auto-generated by NAPI-RS */
5
+
6
+ const __nodeFs= require('node:fs')
7
+ const __nodePath = require('node:path')
8
+ const { WASI: __nodeWASI } = require('node:wasi')
9
+ const { Worker } = require('node:worker_threads')
10
+
11
+ const { instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync } = require('@emnapi/core')
12
+ const { getDefaultContext: __emnapiGetDefaultContext } = require('@emnapi/runtime')
13
+
14
+ const __wasi = new __nodeWASI({
15
+ version: 'preview1',
16
+ env: process.env,
17
+ preopens: {
18
+ '/': __dirname,
19
+ }
20
+ })
21
+
22
+ const __emnapiContext = __emnapiGetDefaultContext()
23
+
24
+ const __sharedMemory = new WebAssembly.Memory({
25
+ initial: 1024,
26
+ maximum: 10240,
27
+ shared: true,
28
+ })
29
+
30
+ const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule } = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__nodePath.join(__dirname, '${wasmFileName}.wasm')), {
31
+ context: __emnapiContext,
32
+ asyncWorkPoolSize: 4,
33
+ wasi: __wasi,
34
+ onCreateWorker() {
35
+ return new Worker(__nodePath.join(__dirname, 'wasi-worker.mjs'), {
36
+ env: process.env,
37
+ execArgv: ['--experimental-wasi-unstable-preview1'],
38
+ })
39
+ },
40
+ overwriteImports(importObject) {
41
+ importObject.env = {
42
+ ...importObject.env,
43
+ ...importObject.napi,
44
+ ...importObject.emnapi,
45
+ memory: __sharedMemory,
46
+ }
47
+ return importObject
48
+ },
49
+ beforeInit({ instance }) {
50
+ __napi_rs_initialize_modules(instance)
51
+ }
52
+ })
53
+
54
+ function __napi_rs_initialize_modules(__napiInstance) {
55
+ ${wasiRegisterFunctions
56
+ .map((name) => ` __napiInstance.exports['${name}']?.()`)
57
+ .join('\n')}
58
+ }
59
+ `;
60
+ //# sourceMappingURL=load-wasi-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-wasi-template.js","sourceRoot":"","sources":["../../src/api/load-wasi-template.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,YAAoB,EACpB,qBAA+B,EAC/B,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2KA6BsK,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;EAyBrL,qBAAqB;KACpB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,6BAA6B,IAAI,QAAQ,CAAC;KACxD,IAAI,CAAC,IAAI,CAAC;;CAEZ,CAAA"}
package/dist/api/new.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import path from 'path';
2
2
  import { applyDefaultNewOptions, } from '../def/new.js';
3
- import { AVAILABLE_TARGETS, CLI_VERSION, debugFactory, DEFAULT_TARGETS, mkdirAsync, writeFileAsync, } from '../utils/index.js';
3
+ import { AVAILABLE_TARGETS, CLI_VERSION, debugFactory, DEFAULT_TARGETS, mkdirAsync, readdirAsync, statAsync, writeFileAsync, } from '../utils/index.js';
4
4
  import { napiEngineRequirement } from '../utils/version.js';
5
5
  import { createBuildRs, createCargoToml, createGithubActionsCIYml, createLibRs, createPackageJson, gitIgnore, npmIgnore, } from './templates/index.js';
6
6
  const debug = debugFactory('new');
@@ -34,19 +34,37 @@ export async function newProject(userOptions) {
34
34
  debug('Targets to be enabled:');
35
35
  debug(options.targets);
36
36
  const outputs = generateFiles(options);
37
- try {
38
- debug(`Try to create target directory: ${options.path}`);
39
- if (!options.dryRun) {
40
- await mkdirAsync(options.path, { recursive: true });
37
+ await ensurePath(options.path, options.dryRun);
38
+ await dumpOutputs(outputs, options.dryRun);
39
+ debug(`Project created at: ${options.path}`);
40
+ }
41
+ async function ensurePath(path, dryRun = false) {
42
+ const stat = await statAsync(path, {}).catch(() => undefined);
43
+ // file descriptor exists
44
+ if (stat) {
45
+ if (stat.isFile()) {
46
+ throw new Error(`Path ${path} for creating new napi-rs project already exists and it's not a directory.`);
47
+ }
48
+ else if (stat.isDirectory()) {
49
+ const files = await readdirAsync(path);
50
+ if (files.length) {
51
+ throw new Error(`Path ${path} for creating new napi-rs project already exists and it's not empty.`);
52
+ }
41
53
  }
42
54
  }
43
- catch (e) {
44
- throw new Error(`Failed to create target directory: ${options.path}`, {
45
- cause: e,
46
- });
55
+ if (!dryRun) {
56
+ try {
57
+ debug(`Try to create target directory: ${path}`);
58
+ if (!dryRun) {
59
+ await mkdirAsync(path, { recursive: true });
60
+ }
61
+ }
62
+ catch (e) {
63
+ throw new Error(`Failed to create target directory: ${path}`, {
64
+ cause: e,
65
+ });
66
+ }
47
67
  }
48
- await dumpOutputs(outputs, options.dryRun);
49
- debug(`Project created at: ${options.path}`);
50
68
  }
51
69
  function generateFiles(options) {
52
70
  return [
@@ -114,7 +132,7 @@ function generateGithubWorkflow(options) {
114
132
  }
115
133
  return {
116
134
  target: './.github/workflows/ci.yml',
117
- content: createGithubActionsCIYml(getBinaryName(options.name), options.targets),
135
+ content: createGithubActionsCIYml(options.targets),
118
136
  };
119
137
  }
120
138
  function generateIgnoreFiles(_options) {
@@ -152,3 +170,4 @@ async function dumpOutputs(outputs, dryRun) {
152
170
  function getBinaryName(name) {
153
171
  return name.split('/').pop();
154
172
  }
173
+ //# sourceMappingURL=new.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/api/new.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { execSync } from 'child_process';
2
2
  import { existsSync, statSync } from 'fs';
3
- import { join, relative, resolve } from 'path';
3
+ import { join, resolve } from 'path';
4
4
  import { Octokit } from '@octokit/rest';
5
5
  import { applyDefaultPrePublishOptions, } from '../def/pre-publish.js';
6
6
  import { readFileAsync, readNapiConfig, debugFactory, updatePackageJson, } from '../utils/index.js';
@@ -10,8 +10,8 @@ export async function prePublish(userOptions) {
10
10
  debug('Receive pre-publish options:');
11
11
  debug(' %O', userOptions);
12
12
  const options = applyDefaultPrePublishOptions(userOptions);
13
- const packageJsonPath = relative(options.cwd, options.packageJsonPath);
14
- const { packageJson, targets, packageName, binaryName, npmClient } = await readNapiConfig(packageJsonPath);
13
+ const packageJsonPath = resolve(options.cwd, options.packageJsonPath);
14
+ const { packageJson, targets, packageName, binaryName, npmClient } = await readNapiConfig(packageJsonPath, options.configPath ? resolve(options.cwd, options.configPath) : undefined);
15
15
  async function createGhRelease(packageName, version) {
16
16
  if (!options.ghRelease) {
17
17
  return {
@@ -155,3 +155,4 @@ function parseTag(tag) {
155
155
  tag,
156
156
  };
157
157
  }
158
+ //# sourceMappingURL=pre-publish.js.map