@napi-rs/cli 3.0.0-alpha.4 → 3.0.0-alpha.41

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