@napi-rs/cli 3.0.0-alpha.5 → 3.0.0-alpha.50

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 (178) hide show
  1. package/dist/api/artifacts.js +32 -8
  2. package/dist/api/artifacts.js.map +1 -0
  3. package/dist/api/build.d.ts +1 -1
  4. package/dist/api/build.js +249 -25
  5. package/dist/api/build.js.map +1 -0
  6. package/dist/api/create-npm-dirs.js +46 -8
  7. package/dist/api/create-npm-dirs.js.map +1 -0
  8. package/dist/api/new.js +58 -20
  9. package/dist/api/new.js.map +1 -0
  10. package/dist/api/pre-publish.js +10 -7
  11. package/dist/api/pre-publish.js.map +1 -0
  12. package/dist/api/rename.js +10 -1
  13. package/dist/api/rename.js.map +1 -0
  14. package/dist/api/templates/.gitignore.d.ts +1 -1
  15. package/dist/api/templates/.gitignore.js +2 -0
  16. package/dist/api/templates/.gitignore.js.map +1 -0
  17. package/dist/api/templates/.npmignore.js +1 -0
  18. package/dist/api/templates/.npmignore.js.map +1 -0
  19. package/dist/api/templates/build.rs.js +1 -0
  20. package/dist/api/templates/build.rs.js.map +1 -0
  21. package/dist/api/templates/cargo.toml.js +1 -0
  22. package/dist/api/templates/cargo.toml.js.map +1 -0
  23. package/dist/api/templates/ci-template.d.ts +3 -1
  24. package/dist/api/templates/ci-template.js +167 -150
  25. package/dist/api/templates/ci-template.js.map +1 -0
  26. package/dist/api/templates/ci.yml.d.ts +3 -1
  27. package/dist/api/templates/ci.yml.js +13 -2
  28. package/dist/api/templates/ci.yml.js.map +1 -0
  29. package/dist/api/templates/index.js +1 -0
  30. package/dist/api/templates/index.js.map +1 -0
  31. package/dist/api/templates/js-binding.js +150 -225
  32. package/dist/api/templates/js-binding.js.map +1 -0
  33. package/dist/api/templates/lib.rs.js +2 -4
  34. package/dist/api/templates/lib.rs.js.map +1 -0
  35. package/dist/api/templates/load-wasi-template.d.ts +2 -0
  36. package/dist/api/templates/load-wasi-template.js +146 -0
  37. package/dist/api/templates/load-wasi-template.js.map +1 -0
  38. package/dist/api/templates/package.json.d.ts +9 -2
  39. package/dist/api/templates/package.json.js +27 -4
  40. package/dist/api/templates/package.json.js.map +1 -0
  41. package/dist/api/templates/wasi-worker-template.d.ts +2 -0
  42. package/dist/api/templates/wasi-worker-template.js +103 -0
  43. package/dist/api/templates/wasi-worker-template.js.map +1 -0
  44. package/dist/api/universalize.js +6 -5
  45. package/dist/api/universalize.js.map +1 -0
  46. package/dist/api/version.js +3 -2
  47. package/dist/api/version.js.map +1 -0
  48. package/dist/cli.js +1 -0
  49. package/dist/cli.js.map +1 -0
  50. package/dist/commands/artifacts.js +3 -2
  51. package/dist/commands/artifacts.js.map +1 -0
  52. package/dist/commands/build.js +2 -1
  53. package/dist/commands/build.js.map +1 -0
  54. package/dist/commands/create-npm-dirs.js +1 -0
  55. package/dist/commands/create-npm-dirs.js.map +1 -0
  56. package/dist/commands/help.js +1 -0
  57. package/dist/commands/help.js.map +1 -0
  58. package/dist/commands/new.js +17 -6
  59. package/dist/commands/new.js.map +1 -0
  60. package/dist/commands/pre-publish.js +1 -0
  61. package/dist/commands/pre-publish.js.map +1 -0
  62. package/dist/commands/rename.js +1 -0
  63. package/dist/commands/rename.js.map +1 -0
  64. package/dist/commands/universalize.js +1 -0
  65. package/dist/commands/universalize.js.map +1 -0
  66. package/dist/commands/version.js +1 -0
  67. package/dist/commands/version.js.map +1 -0
  68. package/dist/def/artifacts.d.ts +21 -1
  69. package/dist/def/artifacts.js +11 -2
  70. package/dist/def/artifacts.js.map +1 -0
  71. package/dist/def/build.d.ts +20 -2
  72. package/dist/def/build.js +15 -2
  73. package/dist/def/build.js.map +1 -0
  74. package/dist/def/create-npm-dirs.d.ts +10 -0
  75. package/dist/def/create-npm-dirs.js +5 -0
  76. package/dist/def/create-npm-dirs.js.map +1 -0
  77. package/dist/def/new.d.ts +24 -6
  78. package/dist/def/new.js +12 -1
  79. package/dist/def/new.js.map +1 -0
  80. package/dist/def/pre-publish.d.ts +10 -0
  81. package/dist/def/pre-publish.js +8 -3
  82. package/dist/def/pre-publish.js.map +1 -0
  83. package/dist/def/rename.d.ts +11 -1
  84. package/dist/def/rename.js +6 -1
  85. package/dist/def/rename.js.map +1 -0
  86. package/dist/def/universalize.d.ts +10 -0
  87. package/dist/def/universalize.js +5 -0
  88. package/dist/def/universalize.js.map +1 -0
  89. package/dist/def/version.d.ts +10 -0
  90. package/dist/def/version.js +5 -0
  91. package/dist/def/version.js.map +1 -0
  92. package/dist/index.cjs +3918 -715
  93. package/dist/index.d.ts +1 -0
  94. package/dist/index.js +2 -0
  95. package/dist/index.js.map +1 -0
  96. package/dist/utils/__tests__/config.spec.d.ts +1 -0
  97. package/dist/utils/__tests__/config.spec.js +63 -0
  98. package/dist/utils/__tests__/config.spec.js.map +1 -0
  99. package/dist/utils/__tests__/target.spec.js +1 -0
  100. package/dist/utils/__tests__/target.spec.js.map +1 -0
  101. package/dist/utils/__tests__/typegen.spec.js +9 -4
  102. package/dist/utils/__tests__/typegen.spec.js.map +1 -0
  103. package/dist/utils/__tests__/version.spec.js +1 -0
  104. package/dist/utils/__tests__/version.spec.js.map +1 -0
  105. package/dist/utils/cargo.js +2 -1
  106. package/dist/utils/cargo.js.map +1 -0
  107. package/dist/utils/config.d.ts +40 -5
  108. package/dist/utils/config.js +39 -6
  109. package/dist/utils/config.js.map +1 -0
  110. package/dist/utils/index.d.ts +0 -1
  111. package/dist/utils/index.js +1 -1
  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 +3 -2
  116. package/dist/utils/metadata.js.map +1 -0
  117. package/dist/utils/misc.d.ts +1 -1
  118. package/dist/utils/misc.js +4 -3
  119. package/dist/utils/misc.js.map +1 -0
  120. package/dist/utils/target.d.ts +9 -5
  121. package/dist/utils/target.js +25 -1
  122. package/dist/utils/target.js.map +1 -0
  123. package/dist/utils/typegen.d.ts +1 -1
  124. package/dist/utils/typegen.js +8 -6
  125. package/dist/utils/typegen.js.map +1 -0
  126. package/dist/utils/version.d.ts +2 -1
  127. package/dist/utils/version.js +11 -8
  128. package/dist/utils/version.js.map +1 -0
  129. package/package.json +46 -13
  130. package/src/api/artifacts.ts +83 -8
  131. package/src/api/build.ts +416 -27
  132. package/src/api/create-npm-dirs.ts +56 -8
  133. package/src/api/new.ts +82 -31
  134. package/src/api/pre-publish.ts +13 -7
  135. package/src/api/rename.ts +10 -1
  136. package/src/api/templates/.gitignore.ts +1 -0
  137. package/src/api/templates/ci-template.ts +176 -150
  138. package/src/api/templates/ci.yml.ts +16 -3
  139. package/src/api/templates/js-binding.ts +150 -225
  140. package/src/api/templates/lib.rs.ts +1 -4
  141. package/src/api/templates/load-wasi-template.ts +157 -0
  142. package/src/api/templates/package.json.ts +47 -5
  143. package/src/api/templates/wasi-worker-template.ts +103 -0
  144. package/src/api/universalize.ts +8 -5
  145. package/src/api/version.ts +5 -2
  146. package/src/commands/artifacts.ts +2 -2
  147. package/src/commands/build.ts +1 -1
  148. package/src/commands/new.ts +16 -6
  149. package/src/def/artifacts.ts +22 -3
  150. package/src/def/build.ts +32 -4
  151. package/src/def/create-npm-dirs.ts +9 -0
  152. package/src/def/new.ts +28 -3
  153. package/src/def/pre-publish.ts +12 -3
  154. package/src/def/rename.ts +11 -2
  155. package/src/def/universalize.ts +9 -0
  156. package/src/def/version.ts +9 -0
  157. package/src/index.ts +2 -0
  158. package/src/utils/__tests__/__snapshots__/config.spec.ts.md +97 -0
  159. package/src/utils/__tests__/__snapshots__/config.spec.ts.snap +0 -0
  160. package/src/utils/__tests__/__snapshots__/target.spec.ts.md +28 -0
  161. package/src/utils/__tests__/__snapshots__/target.spec.ts.snap +0 -0
  162. package/src/utils/__tests__/__snapshots__/typegen.spec.ts.md +555 -0
  163. package/src/utils/__tests__/__snapshots__/typegen.spec.ts.snap +0 -0
  164. package/src/utils/__tests__/__snapshots__/version.spec.ts.md +8 -7
  165. package/src/utils/__tests__/__snapshots__/version.spec.ts.snap +0 -0
  166. package/src/utils/__tests__/config.spec.ts +81 -0
  167. package/src/utils/__tests__/typegen.spec.ts +18 -3
  168. package/src/utils/cargo.ts +1 -1
  169. package/src/utils/config.ts +104 -12
  170. package/src/utils/index.ts +0 -1
  171. package/src/utils/metadata.ts +2 -2
  172. package/src/utils/misc.ts +11 -3
  173. package/src/utils/target.ts +34 -7
  174. package/src/utils/typegen.ts +11 -5
  175. package/src/utils/version.ts +10 -8
  176. package/dist/utils/ci.d.ts +0 -11
  177. package/dist/utils/ci.js +0 -95
  178. package/src/utils/ci.ts +0 -111
@@ -8,19 +8,21 @@ export var NapiVersion;
8
8
  NapiVersion[NapiVersion["Napi6"] = 6] = "Napi6";
9
9
  NapiVersion[NapiVersion["Napi7"] = 7] = "Napi7";
10
10
  NapiVersion[NapiVersion["Napi8"] = 8] = "Napi8";
11
+ NapiVersion[NapiVersion["Napi9"] = 9] = "Napi9";
11
12
  })(NapiVersion || (NapiVersion = {}));
12
13
  /// because node support new napi version in some minor version updates, so we might meet such situation:
13
14
  /// `node v10.20.0` supports `napi5` and `napi6`, but `node v12.0.0` only support `napi4`,
14
- /// by which, we can not tell directly napi version supportness from node version directly.
15
+ /// by which, we can not tell directly napi version supportless from node version directly.
15
16
  const NAPI_VERSION_MATRIX = new Map([
16
- [NapiVersion.Napi1, '8.6.0'],
17
- [NapiVersion.Napi2, '8.10.0 | 9.3.0'],
18
- [NapiVersion.Napi3, '6.14.2 | 8.11.2 | 9.11.0'],
19
- [NapiVersion.Napi4, '10.16.0 | 11.8.0'],
20
- [NapiVersion.Napi5, '10.17.0 | 12.11.0'],
17
+ [NapiVersion.Napi1, '8.6.0 | 9.0.0 | 10.0.0'],
18
+ [NapiVersion.Napi2, '8.10.0 | 9.3.0 | 10.0.0'],
19
+ [NapiVersion.Napi3, '6.14.2 | 8.11.2 | 9.11.0 | 10.0.0'],
20
+ [NapiVersion.Napi4, '10.16.0 | 11.8.0 | 12.0.0'],
21
+ [NapiVersion.Napi5, '10.17.0 | 12.11.0 | 13.0.0'],
21
22
  [NapiVersion.Napi6, '10.20.0 | 12.17.0 | 14.0.0'],
22
- [NapiVersion.Napi7, '10.23.0 | 12.19.0 | 14.12.0'],
23
- [NapiVersion.Napi8, '12.22.0 | 14.17.0 | 15.12.0'],
23
+ [NapiVersion.Napi7, '10.23.0 | 12.19.0 | 14.12.0 | 15.0.0'],
24
+ [NapiVersion.Napi8, '12.22.0 | 14.17.0 | 15.12.0 | 16.0.0'],
25
+ [NapiVersion.Napi9, '18.17.0 | 20.3.0 | 21.1.0'],
24
26
  ]);
25
27
  function parseNodeVersion(v) {
26
28
  const matches = v.match(/v?([0-9]+)\.([0-9]+)\.([0-9]+)/i);
@@ -57,3 +59,4 @@ function toEngineRequirement(versions) {
57
59
  export function napiEngineRequirement(napiVersion) {
58
60
  return toEngineRequirement(requiredNodeVersions(napiVersion));
59
61
  }
62
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@napi-rs/cli",
3
- "version": "3.0.0-alpha.5",
3
+ "version": "3.0.0-alpha.50",
4
4
  "description": "Cli tools for napi-rs",
5
5
  "author": "LongYinan <lynweklm@gmail.com>",
6
6
  "homepage": "https://github.com/napi-rs/napi-rs",
@@ -67,24 +67,49 @@
67
67
  "url": "https://github.com/napi-rs/napi-rs/issues"
68
68
  },
69
69
  "dependencies": {
70
- "@octokit/rest": "^20.0.1",
70
+ "@napi-rs/cross-toolchain": "^0.0.14",
71
+ "@napi-rs/wasm-tools": "^0.0.1",
72
+ "@octokit/rest": "^20.0.2",
71
73
  "clipanion": "^3.2.1",
72
74
  "colorette": "^2.0.20",
73
75
  "debug": "^4.3.4",
74
- "inquirer": "^9.2.8",
76
+ "emnapi": "1.1.1",
77
+ "inquirer": "^9.2.13",
75
78
  "js-yaml": "^4.1.0",
76
79
  "lodash-es": "^4.17.21",
77
- "typanion": "^3.13.0"
80
+ "semver": "^7.5.4",
81
+ "toml": "^3.0.0",
82
+ "typanion": "^3.14.0",
83
+ "wasm-sjlj": "^1.0.5"
78
84
  },
79
85
  "devDependencies": {
80
- "@types/inquirer": "^9.0.3",
81
- "@types/js-yaml": "^4.0.5",
82
- "@types/lodash-es": "^4.17.8",
83
- "ava": "^5.3.1",
84
- "esbuild": "^0.18.13",
85
- "prettier": "^3.0.0",
86
- "ts-node": "^10.9.1",
87
- "typescript": "^5.1.6"
86
+ "@emnapi/core": "^1.1.0",
87
+ "@emnapi/runtime": "^1.1.0",
88
+ "@types/debug": "^4.1.12",
89
+ "@types/inquirer": "^9.0.7",
90
+ "@types/js-yaml": "^4.0.9",
91
+ "@types/lodash-es": "^4.17.12",
92
+ "@types/node": "^20.11.13",
93
+ "@types/semver": "^7.5.8",
94
+ "ava": "^6.1.1",
95
+ "env-paths": "^3.0.0",
96
+ "esbuild": "^0.20.0",
97
+ "prettier": "^3.2.4",
98
+ "ts-node": "^10.9.2",
99
+ "tslib": "^2.6.2",
100
+ "typescript": "^5.4.4"
101
+ },
102
+ "peerDependencies": {
103
+ "@emnapi/runtime": "^1.1.0",
104
+ "emnapi": "^1.1.0"
105
+ },
106
+ "peerDependenciesMeta": {
107
+ "@emnapi/runtime": {
108
+ "optional": true
109
+ },
110
+ "emnapi": {
111
+ "optional": true
112
+ }
88
113
  },
89
114
  "funding": {
90
115
  "type": "github",
@@ -96,5 +121,13 @@
96
121
  "build:cjs": "node ./esbuild.mjs",
97
122
  "test": "node --loader ts-node/esm/transpile-only ../node_modules/ava/entrypoints/cli.mjs"
98
123
  },
99
- "gitHead": "cbed8fceb2996af195085aa13a94ff779879b999"
124
+ "ava": {
125
+ "extensions": {
126
+ "ts": "module"
127
+ },
128
+ "files": [
129
+ "**/__tests__/**/*.spec.ts"
130
+ ]
131
+ },
132
+ "gitHead": "3187e30d5bf432d7e126e6afd857d65c1b8aaa72"
100
133
  }
@@ -1,4 +1,4 @@
1
- import { join, parse, resolve } from 'path'
1
+ import { join, parse } from 'node:path'
2
2
 
3
3
  import * as colors from 'colorette'
4
4
 
@@ -20,11 +20,12 @@ const debug = debugFactory('artifacts')
20
20
  export async function collectArtifacts(userOptions: ArtifactsOptions) {
21
21
  const options = applyDefaultArtifactsOptions(userOptions)
22
22
 
23
- const packageJsonPath = resolve(options.cwd, options.packageJsonPath)
24
- const { targets, binaryName } = await readNapiConfig(packageJsonPath)
23
+ const packageJsonPath = join(options.cwd, options.packageJsonPath)
24
+ const { targets, binaryName, packageName } =
25
+ await readNapiConfig(packageJsonPath)
25
26
 
26
27
  const distDirs = targets.map((platform) =>
27
- resolve(options.cwd, options.npmDir, platform.platformArchABI),
28
+ join(options.cwd, options.npmDir, platform.platformArchABI),
28
29
  )
29
30
 
30
31
  const universalSourceBins = new Set(
@@ -36,14 +37,17 @@ export async function collectArtifacts(userOptions: ArtifactsOptions) {
36
37
  .filter(Boolean) as string[],
37
38
  )
38
39
 
39
- await collectNodeBinaries(resolve(options.cwd, options.outputDir)).then(
40
+ await collectNodeBinaries(join(options.cwd, options.outputDir)).then(
40
41
  (output) =>
41
42
  Promise.all(
42
43
  output.map(async (filePath) => {
43
44
  debug.info(`Read [${colors.yellowBright(filePath)}]`)
44
45
  const sourceContent = await readFileAsync(filePath)
45
46
  const parsedName = parse(filePath)
46
- const [_binaryName, platformArchABI] = parsedName.name.split('.')
47
+ const terms = parsedName.name.split('.')
48
+ const platformArchABI = terms.pop()!
49
+ const _binaryName = terms.join('.')
50
+
47
51
  if (_binaryName !== binaryName) {
48
52
  debug.warn(
49
53
  `[${_binaryName}] is not matched with [${binaryName}], skip`,
@@ -77,17 +81,88 @@ export async function collectArtifacts(userOptions: ArtifactsOptions) {
77
81
  }),
78
82
  ),
79
83
  )
84
+
85
+ const wasiTarget = targets.find((t) => t.platform === 'wasi')
86
+ if (wasiTarget) {
87
+ const wasiDir = join(
88
+ options.cwd,
89
+ options.npmDir,
90
+ wasiTarget.platformArchABI,
91
+ )
92
+ const cjsFile = join(
93
+ options.buildOutputDir ?? options.cwd,
94
+ `${binaryName}.wasi.cjs`,
95
+ )
96
+ const workerFile = join(
97
+ options.buildOutputDir ?? options.cwd,
98
+ `wasi-worker.mjs`,
99
+ )
100
+ const browserEntry = join(
101
+ options.buildOutputDir ?? options.cwd,
102
+ `${binaryName}.wasi-browser.js`,
103
+ )
104
+ const browserWorkerFile = join(
105
+ options.buildOutputDir ?? options.cwd,
106
+ `wasi-worker-browser.mjs`,
107
+ )
108
+ debug.info(
109
+ `Move wasi binding file [${colors.yellowBright(
110
+ cjsFile,
111
+ )}] to [${colors.yellowBright(wasiDir)}]`,
112
+ )
113
+ await writeFileAsync(
114
+ join(wasiDir, `${binaryName}.wasi.cjs`),
115
+ await readFileAsync(cjsFile),
116
+ )
117
+ debug.info(
118
+ `Move wasi worker file [${colors.yellowBright(
119
+ workerFile,
120
+ )}] to [${colors.yellowBright(wasiDir)}]`,
121
+ )
122
+ await writeFileAsync(
123
+ join(wasiDir, `wasi-worker.mjs`),
124
+ await readFileAsync(workerFile),
125
+ )
126
+ debug.info(
127
+ `Move wasi browser entry file [${colors.yellowBright(
128
+ browserEntry,
129
+ )}] to [${colors.yellowBright(wasiDir)}]`,
130
+ )
131
+ await writeFileAsync(
132
+ join(wasiDir, `${binaryName}.wasi-browser.js`),
133
+ // https://github.com/vitejs/vite/issues/8427
134
+ (await readFileAsync(browserEntry, 'utf8')).replace(
135
+ `new URL('./wasi-worker-browser.mjs', import.meta.url)`,
136
+ `new URL('${packageName}-wasm32-wasi/wasi-worker-browser.mjs', import.meta.url)`,
137
+ ),
138
+ )
139
+ debug.info(
140
+ `Move wasi browser worker file [${colors.yellowBright(
141
+ browserWorkerFile,
142
+ )}] to [${colors.yellowBright(wasiDir)}]`,
143
+ )
144
+ await writeFileAsync(
145
+ join(wasiDir, `wasi-worker-browser.mjs`),
146
+ await readFileAsync(browserWorkerFile),
147
+ )
148
+ }
80
149
  }
81
150
 
82
151
  async function collectNodeBinaries(root: string) {
83
152
  const files = await readdirAsync(root, { withFileTypes: true })
84
153
  const nodeBinaries = files
85
- .filter((file) => file.isFile() && file.name.endsWith('.node'))
154
+ .filter(
155
+ (file) =>
156
+ file.isFile() &&
157
+ (file.name.endsWith('.node') || file.name.endsWith('.wasm')),
158
+ )
86
159
  .map((file) => join(root, file.name))
87
160
 
88
161
  const dirs = files.filter((file) => file.isDirectory())
89
162
  for (const dir of dirs) {
90
- nodeBinaries.push(...(await collectNodeBinaries(join(root, dir.name))))
163
+ if (dir.name !== 'node_modules') {
164
+ nodeBinaries.push(...(await collectNodeBinaries(join(root, dir.name))))
165
+ }
91
166
  }
92
167
  return nodeBinaries
93
168
  }