@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
@@ -1,10 +1,24 @@
1
- export const YAML = () => `
1
+ import type { SupportedPackageManager } from '../../utils/config.js'
2
+
3
+ export type WasiTargetName =
4
+ | 'wasm32-wasi-preview1-threads'
5
+ | 'wasm32-wasip1-threads'
6
+ | 'wasm32-wasip2'
7
+
8
+ export const YAML = (
9
+ packageManager: SupportedPackageManager,
10
+ wasiTargetName?: WasiTargetName,
11
+ ) => `
2
12
  name: CI
3
13
 
4
14
  env:
5
15
  DEBUG: 'napi:*'
6
16
  MACOSX_DEPLOYMENT_TARGET: '10.13'
7
17
 
18
+ permissions:
19
+ contents: write
20
+ id-token: write
21
+
8
22
  on:
9
23
  push:
10
24
  branches:
@@ -28,97 +42,83 @@ jobs:
28
42
  settings:
29
43
  - host: macos-latest
30
44
  target: 'x86_64-apple-darwin'
31
- build: |
32
- yarn build --platform
33
- strip -x *.node
45
+ build: ${packageManager} build --platform
34
46
  - host: windows-latest
35
- build: yarn build --platform
47
+ build: ${packageManager} build --platform
36
48
  target: 'x86_64-pc-windows-msvc'
37
49
  - host: windows-latest
38
50
  build: |
39
- yarn build --platform --target i686-pc-windows-msvc
40
- yarn test
51
+ ${packageManager} build --platform --target i686-pc-windows-msvc
52
+ ${packageManager} test
41
53
  target: 'i686-pc-windows-msvc'
42
54
  - host: ubuntu-latest
43
55
  target: 'x86_64-unknown-linux-gnu'
44
- docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian
45
- build: >-
46
- set -e &&\n
47
- yarn build --platform --target x86_64-unknown-linux-gnu &&\n
48
- strip *.node
56
+ build: ${packageManager} build --platform --target x86_64-unknown-linux-gnu --use-napi-cross
49
57
  - host: ubuntu-latest
50
58
  target: 'x86_64-unknown-linux-musl'
51
- docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
52
- build: >-
53
- set -e &&
54
- yarn build --platform &&
55
- strip *.node
59
+ build: ${packageManager} build --platform --target x86_64-unknown-linux-musl -x
56
60
  - host: macos-latest
57
61
  target: 'aarch64-apple-darwin'
58
- build: |
59
- yarn build --platform --target aarch64-apple-darwin
60
- strip -x *.node
62
+ build: ${packageManager} build --platform --target aarch64-apple-darwin
61
63
  - host: ubuntu-latest
62
64
  target: 'aarch64-unknown-linux-gnu'
63
- docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64
64
- build: >-
65
- set -e &&\n
66
- yarn build --platform --target aarch64-unknown-linux-gnu &&\n
67
- aarch64-unknown-linux-gnu-strip *.node
65
+ build: ${packageManager} build --platform --target aarch64-unknown-linux-gnu --use-napi-cross
68
66
  - host: ubuntu-latest
69
67
  target: 'armv7-unknown-linux-gnueabihf'
70
- setup: |
71
- sudo apt-get update
72
- sudo apt-get install gcc-arm-linux-gnueabihf -y
73
- build: |
74
- yarn build --platform --target armv7-unknown-linux-gnueabihf --cross-compile
75
- arm-linux-gnueabihf-strip *.node
68
+ build: ${packageManager} build --platform --target armv7-unknown-linux-gnueabihf --use-napi-cross
69
+ - host: ubuntu-latest
70
+ target: 'armv7-unknown-linux-musleabihf'
71
+ build: ${packageManager} build --platform --target armv7-unknown-linux-musleabihf -x
76
72
  - host: ubuntu-latest
77
73
  target: 'aarch64-linux-android'
78
- build: |
79
- yarn build --platform --target aarch64-linux-android
80
- \${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip *.node
74
+ build: ${packageManager} build --platform --target aarch64-linux-android
81
75
  - host: ubuntu-latest
82
76
  target: 'armv7-linux-androideabi'
83
- build: |
84
- yarn build --platform --target armv7-linux-androideabi
85
- \${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip *.node
77
+ build: ${packageManager} build --platform --target armv7-linux-androideabi
86
78
  - host: ubuntu-latest
87
79
  target: 'aarch64-unknown-linux-musl'
88
- docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
89
- build: >-
90
- set -e &&\n
91
- rustup target add aarch64-unknown-linux-musl &&\n
92
- yarn build --platform --target aarch64-unknown-linux-musl &&\n
93
- /aarch64-linux-musl-cross/bin/aarch64-linux-musl-strip *.node
80
+ build: ${packageManager} build --platform --target aarch64-unknown-linux-musl -x
94
81
  - host: windows-latest
95
82
  target: 'aarch64-pc-windows-msvc'
96
- build: yarn build --platform --target aarch64-pc-windows-msvc
83
+ build: ${packageManager} build --platform --target aarch64-pc-windows-msvc
97
84
  - host: ubuntu-latest
98
85
  target: 'riscv64gc-unknown-linux-gnu'
99
86
  setup: |
100
87
  sudo apt-get update
101
88
  sudo apt-get install gcc-riscv64-linux-gnu -y
102
- build: |
103
- yarn build --platform --target riscv64gc-unknown-linux-gnu
104
- riscv64-linux-gnu-strip *.node
89
+ build: ${packageManager} build --platform --target riscv64gc-unknown-linux-gnu
90
+ - host: ubuntu-latest
91
+ target: 'powerpc64le-unknown-linux-gnu'
92
+ setup: |
93
+ sudo apt-get update
94
+ sudo apt-get install gcc-powerpc64le-linux-gnu -y
95
+ build: ${packageManager} build --platform --target powerpc64le-unknown-linux-gnu
96
+ - host: ubuntu-latest
97
+ target: 's390x-unknown-linux-gnu'
98
+ setup: |
99
+ sudo apt-get update
100
+ sudo apt-get install gcc-s390x-linux-gnu -y
101
+ build: ${packageManager} build --platform --target s390x-unknown-linux-gnu
102
+ - host: ubuntu-latest
103
+ target: 'wasm32-wasi-preview1-threads'
104
+ build: ${packageManager} build --platform --target wasm32-wasi-preview1-threads
105
+ target: '${wasiTargetName}'
106
+ build: ${packageManager} build --platform --target ${wasiTargetName}
105
107
 
106
- name: stable - \${{ matrix.settings.target }} - node@18
108
+ name: stable - \${{ matrix.settings.target }} - node@20
107
109
  runs-on: \${{ matrix.settings.host }}
108
110
 
109
111
  steps:
110
- - uses: actions/checkout@v3
112
+ - uses: actions/checkout@v4
111
113
 
112
114
  - name: Setup node
113
- uses: actions/setup-node@v3
114
- if: \${{ !matrix.settings.docker }}
115
+ uses: actions/setup-node@v4
115
116
  with:
116
- node-version: 18
117
- cache: yarn
117
+ node-version: 20
118
+ cache: ${packageManager}
118
119
 
119
120
  - name: Install
120
121
  uses: dtolnay/rust-toolchain@stable
121
- if: \${{ !matrix.settings.docker }}
122
122
  with:
123
123
  toolchain: stable
124
124
  targets: \${{ matrix.settings.target }}
@@ -130,14 +130,15 @@ jobs:
130
130
  ~/.cargo/registry/index/
131
131
  ~/.cargo/registry/cache/
132
132
  ~/.cargo/git/db/
133
+ ~/.napi-rs
133
134
  .cargo-cache
134
135
  target/
135
136
  key: \${{ matrix.settings.target }}-cargo-\${{ matrix.settings.host }}
136
137
 
137
138
  - uses: goto-bus-stop/setup-zig@v2
138
- if: \${{ matrix.settings.target == 'armv7-unknown-linux-gnueabihf' }}
139
+ if: \${{ contains(matrix.settings.target, 'musl') }}
139
140
  with:
140
- version: 0.10.1
141
+ version: 0.11.0
141
142
 
142
143
  - name: Setup toolchain
143
144
  run: \${{ matrix.settings.setup }}
@@ -150,80 +151,80 @@ jobs:
150
151
  shell: bash
151
152
 
152
153
  - name: 'Install dependencies'
153
- run: yarn install
154
+ run: ${packageManager} install
154
155
 
155
156
  - name: Setup node x86
156
- uses: actions/setup-node@v3
157
+ uses: actions/setup-node@v4
157
158
  if: matrix.settings.target == 'i686-pc-windows-msvc'
158
159
  with:
159
- node-version: 18
160
- cache: yarn
160
+ node-version: 20
161
161
  architecture: x86
162
162
 
163
- - name: Build in docker
164
- uses: addnab/docker-run-action@v3
165
- if: \${{ matrix.settings.docker }}
166
- with:
167
- image: \${{ matrix.settings.docker }}
168
- options: --user 0:0 -v \${{ github.workspace }}/.cargo-cache/git/db:/usr/local/cargo/git/db -v \${{ github.workspace }}/.cargo/registry/cache:/usr/local/cargo/registry/cache -v \${{ github.workspace }}/.cargo/registry/index:/usr/local/cargo/registry/index -v \${{ github.workspace }}:/build -w /build
169
- run: \${{ matrix.settings.build }}
170
-
171
163
  - name: 'Build'
172
164
  run: \${{ matrix.settings.build }}
173
- if: \${{ !matrix.settings.docker }}
174
165
  shell: bash
175
166
 
176
167
  - name: Upload artifact
177
- uses: actions/upload-artifact@v3
168
+ uses: actions/upload-artifact@v4
169
+ if: matrix.settings.target != '${wasiTargetName}'
178
170
  with:
179
171
  name: bindings-\${{ matrix.settings.target }}
180
172
  path: "*.node"
181
173
  if-no-files-found: error
182
174
 
175
+ - name: Upload artifact
176
+ uses: actions/upload-artifact@v4
177
+ if: matrix.settings.target == '${wasiTargetName}'
178
+ with:
179
+ name: bindings-\${{ matrix.settings.target }}
180
+ path: "*.wasm"
181
+ if-no-files-found: error
182
+
183
183
  build-freebsd:
184
184
  runs-on: macos-12
185
185
  name: Build FreeBSD
186
186
  steps:
187
- - uses: actions/checkout@v3
187
+ - uses: actions/checkout@v4
188
188
  - name: Build
189
189
  id: build
190
- uses: vmactions/freebsd-vm@v0
190
+ uses: cross-platform-actions/action@v0.23.0
191
+ timeout-minutes: 30
191
192
  env:
192
193
  DEBUG: 'napi:*'
193
- RUSTUP_HOME: /usr/local/rustup
194
- CARGO_HOME: /usr/local/cargo
195
194
  RUSTUP_IO_THREADS: 1
196
195
  with:
197
- envs: 'DEBUG RUSTUP_HOME CARGO_HOME RUSTUP_IO_THREADS'
198
- usesh: true
199
- mem: 3000
200
- prepare: |
201
- pkg install -y -f curl node libnghttp2 npm yarn
196
+ operating_system: freebsd
197
+ version: '13.2'
198
+ memory: 8G
199
+ cpu_count: 3
200
+ environment_variables: 'DEBUG RUSTUP_IO_THREADS'
201
+ shell: bash
202
+ run: |
203
+ sudo pkg install -y -f curl node libnghttp2 npm
204
+ sudo npm install -g ${packageManager} --ignore-scripts
202
205
  curl https://sh.rustup.rs -sSf --output rustup.sh
203
- sh rustup.sh -y --profile minimal --default-toolchain beta
204
- export PATH="/usr/local/cargo/bin:$PATH"
206
+ sh rustup.sh -y --profile minimal --default-toolchain stable
207
+ source "$HOME/.cargo/env"
205
208
  echo "~~~~ rustc --version ~~~~"
206
209
  rustc --version
207
210
  echo "~~~~ node -v ~~~~"
208
211
  node -v
209
212
  echo "~~~~ yarn --version ~~~~"
210
213
  yarn --version
211
- run: |
212
- export PATH="/usr/local/cargo/bin:$PATH"
213
214
  pwd
214
215
  ls -lah
215
216
  whoami
216
217
  env
217
218
  freebsd-version
218
- yarn install
219
- yarn build
219
+ ${packageManager} install
220
+ ${packageManager} build
220
221
  strip -x *.node
221
222
  yarn test
222
223
  rm -rf node_modules
223
224
  rm -rf target
224
225
  rm -rf .yarn/cache
225
226
  - name: Upload artifact
226
- uses: actions/upload-artifact@v3
227
+ uses: actions/upload-artifact@v4
227
228
  with:
228
229
  name: bindings-freebsd
229
230
  path: "*.node"
@@ -241,23 +242,23 @@ jobs:
241
242
  target: 'x86_64-apple-darwin'
242
243
  - host: windows-latest
243
244
  target: 'x86_64-pc-windows-msvc'
244
- node: ['16', '18']
245
+ node: ['18', '20']
245
246
  runs-on: \${{ matrix.settings.host }}
246
247
 
247
248
  steps:
248
- - uses: actions/checkout@v3
249
+ - uses: actions/checkout@v4
249
250
 
250
251
  - name: Setup node
251
- uses: actions/setup-node@v3
252
+ uses: actions/setup-node@v4
252
253
  with:
253
254
  node-version: \${{ matrix.node }}
254
- cache: 'yarn'
255
+ cache: '${packageManager}'
255
256
 
256
257
  - name: 'Install dependencies'
257
- run: yarn install
258
+ run: ${packageManager} install
258
259
 
259
260
  - name: Download artifacts
260
- uses: actions/download-artifact@v3
261
+ uses: actions/download-artifact@v4
261
262
  with:
262
263
  name: bindings-\${{ matrix.settings.target }}
263
264
  path: .
@@ -267,7 +268,7 @@ jobs:
267
268
  shell: bash
268
269
 
269
270
  - name: Test bindings
270
- run: yarn test
271
+ run: ${packageManager} test
271
272
 
272
273
  test-linux-x64-gnu-binding:
273
274
  name: Test bindings on Linux-x64-gnu - node@\${{ matrix.node }}
@@ -276,23 +277,23 @@ jobs:
276
277
  strategy:
277
278
  fail-fast: false
278
279
  matrix:
279
- node: ['16', '18']
280
+ node: ['18', '20']
280
281
  runs-on: ubuntu-latest
281
282
 
282
283
  steps:
283
- - uses: actions/checkout@v3
284
+ - uses: actions/checkout@v4
284
285
 
285
286
  - name: Setup node
286
- uses: actions/setup-node@v3
287
+ uses: actions/setup-node@v4
287
288
  with:
288
289
  node-version: \${{ matrix.node }}
289
- cache: 'yarn'
290
+ cache: '${packageManager}'
290
291
 
291
292
  - name: 'Install dependencies'
292
- run: yarn install
293
+ run: ${packageManager} install
293
294
 
294
295
  - name: Download artifacts
295
- uses: actions/download-artifact@v3
296
+ uses: actions/download-artifact@v4
296
297
  with:
297
298
  name: bindings-x86_64-unknown-linux-gnu
298
299
  path: .
@@ -311,14 +312,14 @@ jobs:
311
312
  strategy:
312
313
  fail-fast: false
313
314
  matrix:
314
- node: ['16', '18']
315
+ node: ['18', '20']
315
316
  runs-on: ubuntu-latest
316
317
 
317
318
  steps:
318
- - uses: actions/checkout@v3
319
+ - uses: actions/checkout@v4
319
320
 
320
321
  - name: Setup node
321
- uses: actions/setup-node@v3
322
+ uses: actions/setup-node@v4
322
323
  with:
323
324
  node-version: \${{ matrix.node }}
324
325
  cache: 'yarn'
@@ -326,10 +327,10 @@ jobs:
326
327
  - name: 'Install dependencies'
327
328
  run: |
328
329
  yarn config set supportedArchitectures.libc "musl"
329
- yarn install
330
+ ${packageManager} install
330
331
 
331
332
  - name: Download artifacts
332
- uses: actions/download-artifact@v3
333
+ uses: actions/download-artifact@v4
333
334
  with:
334
335
  name: bindings-x86_64-unknown-linux-musl
335
336
  path: .
@@ -348,14 +349,14 @@ jobs:
348
349
  strategy:
349
350
  fail-fast: false
350
351
  matrix:
351
- node: ['16', '18']
352
+ node: ['20']
352
353
  runs-on: ubuntu-latest
353
354
 
354
355
  steps:
355
- - uses: actions/checkout@v3
356
+ - uses: actions/checkout@v4
356
357
 
357
358
  - name: Download artifacts
358
- uses: actions/download-artifact@v3
359
+ uses: actions/download-artifact@v4
359
360
  with:
360
361
  name: bindings-aarch64-unknown-linux-gnu
361
362
  path: .
@@ -368,10 +369,10 @@ jobs:
368
369
  run: |
369
370
  yarn config set supportedArchitectures.cpu "arm64"
370
371
  yarn config set supportedArchitectures.libc "glibc"
371
- yarn install
372
+ ${packageManager} install
372
373
 
373
374
  - name: Set up QEMU
374
- uses: docker/setup-qemu-action@v2
375
+ uses: docker/setup-qemu-action@v3
375
376
  with:
376
377
  platforms: arm64
377
378
  - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
@@ -381,23 +382,24 @@ jobs:
381
382
  with:
382
383
  image: node:\${{ matrix.node }}-slim
383
384
  options: --platform linux/arm64 -v \${{ github.workspace }}:/build -w /build
384
- run: |
385
- set -e
386
- yarn test
387
- ls -la
385
+ run: yarn test
388
386
 
389
387
  test-linux-aarch64-musl-binding:
390
388
  name: Test bindings on aarch64-unknown-linux-musl - node@\${{ matrix.node }}
391
389
  needs:
392
390
  - build
391
+ strategy:
392
+ fail-fast: false
393
+ matrix:
394
+ node: ['18', '20']
393
395
 
394
396
  runs-on: ubuntu-latest
395
397
 
396
398
  steps:
397
- - uses: actions/checkout@v3
399
+ - uses: actions/checkout@v4
398
400
 
399
401
  - name: Download artifacts
400
- uses: actions/download-artifact@v3
402
+ uses: actions/download-artifact@v4
401
403
  with:
402
404
  name: bindings-aarch64-unknown-linux-musl
403
405
  path: .
@@ -410,10 +412,10 @@ jobs:
410
412
  run: |
411
413
  yarn config set supportedArchitectures.cpu "arm64"
412
414
  yarn config set supportedArchitectures.libc "musl"
413
- yarn install
415
+ ${packageManager} install
414
416
 
415
417
  - name: Set up QEMU
416
- uses: docker/setup-qemu-action@v2
418
+ uses: docker/setup-qemu-action@v3
417
419
  with:
418
420
  platforms: arm64
419
421
  - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
@@ -421,11 +423,9 @@ jobs:
421
423
  - name: Setup and run tests
422
424
  uses: addnab/docker-run-action@v3
423
425
  with:
424
- image: node:lts-alpine
426
+ image: node:\${{ matrix.node }}-alpine
425
427
  options: --platform linux/arm64 -v \${{ github.workspace }}:/build -w /build
426
- run: |
427
- set -e
428
- yarn test
428
+ run: yarn test
429
429
 
430
430
  test-linux-arm-gnueabihf-binding:
431
431
  name: Test bindings on armv7-unknown-linux-gnueabihf - node@\${{ matrix.node }}
@@ -434,14 +434,14 @@ jobs:
434
434
  strategy:
435
435
  fail-fast: false
436
436
  matrix:
437
- node: ['16', '18']
437
+ node: ['18', '20']
438
438
  runs-on: ubuntu-latest
439
439
 
440
440
  steps:
441
- - uses: actions/checkout@v3
441
+ - uses: actions/checkout@v4
442
442
 
443
443
  - name: Download artifacts
444
- uses: actions/download-artifact@v3
444
+ uses: actions/download-artifact@v4
445
445
  with:
446
446
  name: bindings-armv7-unknown-linux-gnueabihf
447
447
  path: .
@@ -453,10 +453,10 @@ jobs:
453
453
  - name: Install dependencies
454
454
  run: |
455
455
  yarn config set supportedArchitectures.cpu "arm"
456
- yarn install
456
+ ${packageManager} install
457
457
 
458
458
  - name: Set up QEMU
459
- uses: docker/setup-qemu-action@v2
459
+ uses: docker/setup-qemu-action@v3
460
460
  with:
461
461
  platforms: arm
462
462
  - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
@@ -466,10 +466,7 @@ jobs:
466
466
  with:
467
467
  image: node:\${{ matrix.node }}-bullseye-slim
468
468
  options: --platform linux/arm/v7 -v \${{ github.workspace }}:/build -w /build
469
- run: |
470
- set -e
471
- yarn test
472
- ls -la
469
+ run: ${packageManager} test
473
470
 
474
471
  universal-macOS:
475
472
  name: Build universal macOS binary
@@ -478,38 +475,67 @@ jobs:
478
475
  runs-on: macos-latest
479
476
 
480
477
  steps:
481
- - uses: actions/checkout@v3
478
+ - uses: actions/checkout@v4
482
479
 
483
480
  - name: Setup node
484
- uses: actions/setup-node@v3
481
+ uses: actions/setup-node@v4
485
482
  with:
486
- node-version: 18
487
- cache: yarn
483
+ node-version: 20
484
+ cache: ${packageManager}
488
485
 
489
486
  - name: 'Install dependencies'
490
- run: yarn install
487
+ run: ${packageManager} install
491
488
 
492
489
  - name: Download macOS x64 artifact
493
- uses: actions/download-artifact@v3
490
+ uses: actions/download-artifact@v4
494
491
  with:
495
492
  name: bindings-x86_64-apple-darwin
496
493
  path: .
497
494
  - name: Download macOS arm64 artifact
498
- uses: actions/download-artifact@v3
495
+ uses: actions/download-artifact@v4
499
496
  with:
500
497
  name: bindings-aarch64-apple-darwin
501
498
  path: .
502
499
 
503
500
  - name: Combine binaries
504
- run: yarn napi universalize
501
+ run: ${packageManager} napi universalize
505
502
 
506
503
  - name: Upload artifact
507
- uses: actions/upload-artifact@v3
504
+ uses: actions/upload-artifact@v4
508
505
  with:
509
506
  name: bindings-universal-apple-darwin
510
507
  path: "*.node"
511
508
  if-no-files-found: error
512
509
 
510
+ test-wasi-nodejs:
511
+ name: Test bindings on wasi - node@\${{ matrix.node }}
512
+ needs:
513
+ - build
514
+ strategy:
515
+ fail-fast: false
516
+ matrix:
517
+ node: ['18', '20']
518
+ runs-on: ubuntu-latest
519
+ steps:
520
+ - uses: actions/checkout@v4
521
+ - name: Download artifacts
522
+ uses: actions/download-artifact@v4
523
+ with:
524
+ name: bindings-${wasiTargetName}
525
+ path: .
526
+ - name: List packages
527
+ run: ls -R .
528
+ - uses: actions/setup-node@v4
529
+ with:
530
+ node-version: \${{ matrix.node }}
531
+ cache: ${packageManager}
532
+ - name: 'Install dependencies'
533
+ run: ${packageManager} install
534
+ - name: Test
535
+ run: ${packageManager} test
536
+ env:
537
+ NAPI_RS_FORCE_WASI: true
538
+
513
539
  publish:
514
540
  name: Publish
515
541
  runs-on: ubuntu-latest
@@ -520,22 +546,24 @@ jobs:
520
546
  - test-linux-arm-gnueabihf-binding
521
547
  - test-macOS-windows-binding
522
548
  - test-linux-aarch64-musl-binding
549
+ - test-wasi-nodejs
523
550
  - build-freebsd
524
551
 
525
552
  steps:
526
- - uses: actions/checkout@v3
553
+ - uses: actions/checkout@v4
527
554
 
528
555
  - name: Setup node
529
- uses: actions/setup-node@v3
556
+ uses: actions/setup-node@v4
530
557
  with:
531
- node-version: 18
532
- cache: 'yarn'
558
+ node-version: 20
559
+ cache: '${packageManager}'
560
+ registry-url: 'https://registry.npmjs.org'
533
561
 
534
562
  - name: 'Install dependencies'
535
- run: yarn install
563
+ run: ${packageManager} install
536
564
 
537
565
  - name: Download all artifacts
538
- uses: actions/download-artifact@v3
566
+ uses: actions/download-artifact@v4
539
567
  with:
540
568
  path: artifacts
541
569
 
@@ -550,16 +578,14 @@ jobs:
550
578
  run: |
551
579
  if git log -1 --pretty=%B | grep "^[0-9]\\+\\.[0-9]\\+\\.[0-9]\\+$";
552
580
  then
553
- echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
554
- npm publish --access public
581
+ npm publish --access public --provenance
555
582
  elif git log -1 --pretty=%B | grep "^[0-9]\\+\\.[0-9]\\+\\.[0-9]\\+";
556
583
  then
557
- echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
558
- npm publish --tag next --access public
584
+ npm publish --tag next --access public --provenance
559
585
  else
560
586
  echo "Not a release, skipping publish"
561
587
  fi
562
588
  env:
563
589
  GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}
564
- NPM_TOKEN: \${{ secrets.NPM_TOKEN }}
590
+ NODE_AUTH_TOKEN: \${{ secrets.NPM_TOKEN }}
565
591
  `