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

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 +165 -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 +22 -5
  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 +155 -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 +25 -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 +3931 -718
  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 +49 -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 +417 -27
  132. package/src/api/create-npm-dirs.ts +56 -8
  133. package/src/api/new.ts +86 -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 +174 -150
  138. package/src/api/templates/ci.yml.ts +24 -6
  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 +168 -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 +25 -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 +114 -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,81 @@ 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: '${wasiTargetName}'
104
+ build: ${packageManager} build --platform --target ${wasiTargetName}
105
105
 
106
- name: stable - \${{ matrix.settings.target }} - node@18
106
+ name: stable - \${{ matrix.settings.target }} - node@20
107
107
  runs-on: \${{ matrix.settings.host }}
108
108
 
109
109
  steps:
110
- - uses: actions/checkout@v3
110
+ - uses: actions/checkout@v4
111
111
 
112
112
  - name: Setup node
113
- uses: actions/setup-node@v3
114
- if: \${{ !matrix.settings.docker }}
113
+ uses: actions/setup-node@v4
115
114
  with:
116
- node-version: 18
117
- cache: yarn
115
+ node-version: 20
116
+ cache: ${packageManager}
118
117
 
119
118
  - name: Install
120
119
  uses: dtolnay/rust-toolchain@stable
121
- if: \${{ !matrix.settings.docker }}
122
120
  with:
123
121
  toolchain: stable
124
122
  targets: \${{ matrix.settings.target }}
@@ -130,14 +128,15 @@ jobs:
130
128
  ~/.cargo/registry/index/
131
129
  ~/.cargo/registry/cache/
132
130
  ~/.cargo/git/db/
131
+ ~/.napi-rs
133
132
  .cargo-cache
134
133
  target/
135
134
  key: \${{ matrix.settings.target }}-cargo-\${{ matrix.settings.host }}
136
135
 
137
136
  - uses: goto-bus-stop/setup-zig@v2
138
- if: \${{ matrix.settings.target == 'armv7-unknown-linux-gnueabihf' }}
137
+ if: \${{ contains(matrix.settings.target, 'musl') }}
139
138
  with:
140
- version: 0.10.1
139
+ version: 0.11.0
141
140
 
142
141
  - name: Setup toolchain
143
142
  run: \${{ matrix.settings.setup }}
@@ -150,80 +149,80 @@ jobs:
150
149
  shell: bash
151
150
 
152
151
  - name: 'Install dependencies'
153
- run: yarn install
152
+ run: ${packageManager} install
154
153
 
155
154
  - name: Setup node x86
156
- uses: actions/setup-node@v3
155
+ uses: actions/setup-node@v4
157
156
  if: matrix.settings.target == 'i686-pc-windows-msvc'
158
157
  with:
159
- node-version: 18
160
- cache: yarn
158
+ node-version: 20
161
159
  architecture: x86
162
160
 
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
161
  - name: 'Build'
172
162
  run: \${{ matrix.settings.build }}
173
- if: \${{ !matrix.settings.docker }}
174
163
  shell: bash
175
164
 
176
165
  - name: Upload artifact
177
- uses: actions/upload-artifact@v3
166
+ uses: actions/upload-artifact@v4
167
+ if: matrix.settings.target != '${wasiTargetName}'
178
168
  with:
179
169
  name: bindings-\${{ matrix.settings.target }}
180
170
  path: "*.node"
181
171
  if-no-files-found: error
182
172
 
173
+ - name: Upload artifact
174
+ uses: actions/upload-artifact@v4
175
+ if: matrix.settings.target == '${wasiTargetName}'
176
+ with:
177
+ name: bindings-\${{ matrix.settings.target }}
178
+ path: "*.wasm"
179
+ if-no-files-found: error
180
+
183
181
  build-freebsd:
184
182
  runs-on: macos-12
185
183
  name: Build FreeBSD
186
184
  steps:
187
- - uses: actions/checkout@v3
185
+ - uses: actions/checkout@v4
188
186
  - name: Build
189
187
  id: build
190
- uses: vmactions/freebsd-vm@v0
188
+ uses: cross-platform-actions/action@v0.23.0
189
+ timeout-minutes: 30
191
190
  env:
192
191
  DEBUG: 'napi:*'
193
- RUSTUP_HOME: /usr/local/rustup
194
- CARGO_HOME: /usr/local/cargo
195
192
  RUSTUP_IO_THREADS: 1
196
193
  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
194
+ operating_system: freebsd
195
+ version: '13.2'
196
+ memory: 8G
197
+ cpu_count: 3
198
+ environment_variables: 'DEBUG RUSTUP_IO_THREADS'
199
+ shell: bash
200
+ run: |
201
+ sudo pkg install -y -f curl node libnghttp2 npm
202
+ sudo npm install -g ${packageManager} --ignore-scripts
202
203
  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"
204
+ sh rustup.sh -y --profile minimal --default-toolchain stable
205
+ source "$HOME/.cargo/env"
205
206
  echo "~~~~ rustc --version ~~~~"
206
207
  rustc --version
207
208
  echo "~~~~ node -v ~~~~"
208
209
  node -v
209
210
  echo "~~~~ yarn --version ~~~~"
210
211
  yarn --version
211
- run: |
212
- export PATH="/usr/local/cargo/bin:$PATH"
213
212
  pwd
214
213
  ls -lah
215
214
  whoami
216
215
  env
217
216
  freebsd-version
218
- yarn install
219
- yarn build
217
+ ${packageManager} install
218
+ ${packageManager} build
220
219
  strip -x *.node
221
220
  yarn test
222
221
  rm -rf node_modules
223
222
  rm -rf target
224
223
  rm -rf .yarn/cache
225
224
  - name: Upload artifact
226
- uses: actions/upload-artifact@v3
225
+ uses: actions/upload-artifact@v4
227
226
  with:
228
227
  name: bindings-freebsd
229
228
  path: "*.node"
@@ -241,23 +240,23 @@ jobs:
241
240
  target: 'x86_64-apple-darwin'
242
241
  - host: windows-latest
243
242
  target: 'x86_64-pc-windows-msvc'
244
- node: ['16', '18']
243
+ node: ['18', '20']
245
244
  runs-on: \${{ matrix.settings.host }}
246
245
 
247
246
  steps:
248
- - uses: actions/checkout@v3
247
+ - uses: actions/checkout@v4
249
248
 
250
249
  - name: Setup node
251
- uses: actions/setup-node@v3
250
+ uses: actions/setup-node@v4
252
251
  with:
253
252
  node-version: \${{ matrix.node }}
254
- cache: 'yarn'
253
+ cache: '${packageManager}'
255
254
 
256
255
  - name: 'Install dependencies'
257
- run: yarn install
256
+ run: ${packageManager} install
258
257
 
259
258
  - name: Download artifacts
260
- uses: actions/download-artifact@v3
259
+ uses: actions/download-artifact@v4
261
260
  with:
262
261
  name: bindings-\${{ matrix.settings.target }}
263
262
  path: .
@@ -267,7 +266,7 @@ jobs:
267
266
  shell: bash
268
267
 
269
268
  - name: Test bindings
270
- run: yarn test
269
+ run: ${packageManager} test
271
270
 
272
271
  test-linux-x64-gnu-binding:
273
272
  name: Test bindings on Linux-x64-gnu - node@\${{ matrix.node }}
@@ -276,23 +275,23 @@ jobs:
276
275
  strategy:
277
276
  fail-fast: false
278
277
  matrix:
279
- node: ['16', '18']
278
+ node: ['18', '20']
280
279
  runs-on: ubuntu-latest
281
280
 
282
281
  steps:
283
- - uses: actions/checkout@v3
282
+ - uses: actions/checkout@v4
284
283
 
285
284
  - name: Setup node
286
- uses: actions/setup-node@v3
285
+ uses: actions/setup-node@v4
287
286
  with:
288
287
  node-version: \${{ matrix.node }}
289
- cache: 'yarn'
288
+ cache: '${packageManager}'
290
289
 
291
290
  - name: 'Install dependencies'
292
- run: yarn install
291
+ run: ${packageManager} install
293
292
 
294
293
  - name: Download artifacts
295
- uses: actions/download-artifact@v3
294
+ uses: actions/download-artifact@v4
296
295
  with:
297
296
  name: bindings-x86_64-unknown-linux-gnu
298
297
  path: .
@@ -311,14 +310,14 @@ jobs:
311
310
  strategy:
312
311
  fail-fast: false
313
312
  matrix:
314
- node: ['16', '18']
313
+ node: ['18', '20']
315
314
  runs-on: ubuntu-latest
316
315
 
317
316
  steps:
318
- - uses: actions/checkout@v3
317
+ - uses: actions/checkout@v4
319
318
 
320
319
  - name: Setup node
321
- uses: actions/setup-node@v3
320
+ uses: actions/setup-node@v4
322
321
  with:
323
322
  node-version: \${{ matrix.node }}
324
323
  cache: 'yarn'
@@ -326,10 +325,10 @@ jobs:
326
325
  - name: 'Install dependencies'
327
326
  run: |
328
327
  yarn config set supportedArchitectures.libc "musl"
329
- yarn install
328
+ ${packageManager} install
330
329
 
331
330
  - name: Download artifacts
332
- uses: actions/download-artifact@v3
331
+ uses: actions/download-artifact@v4
333
332
  with:
334
333
  name: bindings-x86_64-unknown-linux-musl
335
334
  path: .
@@ -348,14 +347,14 @@ jobs:
348
347
  strategy:
349
348
  fail-fast: false
350
349
  matrix:
351
- node: ['16', '18']
350
+ node: ['20']
352
351
  runs-on: ubuntu-latest
353
352
 
354
353
  steps:
355
- - uses: actions/checkout@v3
354
+ - uses: actions/checkout@v4
356
355
 
357
356
  - name: Download artifacts
358
- uses: actions/download-artifact@v3
357
+ uses: actions/download-artifact@v4
359
358
  with:
360
359
  name: bindings-aarch64-unknown-linux-gnu
361
360
  path: .
@@ -368,10 +367,10 @@ jobs:
368
367
  run: |
369
368
  yarn config set supportedArchitectures.cpu "arm64"
370
369
  yarn config set supportedArchitectures.libc "glibc"
371
- yarn install
370
+ ${packageManager} install
372
371
 
373
372
  - name: Set up QEMU
374
- uses: docker/setup-qemu-action@v2
373
+ uses: docker/setup-qemu-action@v3
375
374
  with:
376
375
  platforms: arm64
377
376
  - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
@@ -381,23 +380,24 @@ jobs:
381
380
  with:
382
381
  image: node:\${{ matrix.node }}-slim
383
382
  options: --platform linux/arm64 -v \${{ github.workspace }}:/build -w /build
384
- run: |
385
- set -e
386
- yarn test
387
- ls -la
383
+ run: yarn test
388
384
 
389
385
  test-linux-aarch64-musl-binding:
390
386
  name: Test bindings on aarch64-unknown-linux-musl - node@\${{ matrix.node }}
391
387
  needs:
392
388
  - build
389
+ strategy:
390
+ fail-fast: false
391
+ matrix:
392
+ node: ['18', '20']
393
393
 
394
394
  runs-on: ubuntu-latest
395
395
 
396
396
  steps:
397
- - uses: actions/checkout@v3
397
+ - uses: actions/checkout@v4
398
398
 
399
399
  - name: Download artifacts
400
- uses: actions/download-artifact@v3
400
+ uses: actions/download-artifact@v4
401
401
  with:
402
402
  name: bindings-aarch64-unknown-linux-musl
403
403
  path: .
@@ -410,10 +410,10 @@ jobs:
410
410
  run: |
411
411
  yarn config set supportedArchitectures.cpu "arm64"
412
412
  yarn config set supportedArchitectures.libc "musl"
413
- yarn install
413
+ ${packageManager} install
414
414
 
415
415
  - name: Set up QEMU
416
- uses: docker/setup-qemu-action@v2
416
+ uses: docker/setup-qemu-action@v3
417
417
  with:
418
418
  platforms: arm64
419
419
  - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
@@ -421,11 +421,9 @@ jobs:
421
421
  - name: Setup and run tests
422
422
  uses: addnab/docker-run-action@v3
423
423
  with:
424
- image: node:lts-alpine
424
+ image: node:\${{ matrix.node }}-alpine
425
425
  options: --platform linux/arm64 -v \${{ github.workspace }}:/build -w /build
426
- run: |
427
- set -e
428
- yarn test
426
+ run: yarn test
429
427
 
430
428
  test-linux-arm-gnueabihf-binding:
431
429
  name: Test bindings on armv7-unknown-linux-gnueabihf - node@\${{ matrix.node }}
@@ -434,14 +432,14 @@ jobs:
434
432
  strategy:
435
433
  fail-fast: false
436
434
  matrix:
437
- node: ['16', '18']
435
+ node: ['18', '20']
438
436
  runs-on: ubuntu-latest
439
437
 
440
438
  steps:
441
- - uses: actions/checkout@v3
439
+ - uses: actions/checkout@v4
442
440
 
443
441
  - name: Download artifacts
444
- uses: actions/download-artifact@v3
442
+ uses: actions/download-artifact@v4
445
443
  with:
446
444
  name: bindings-armv7-unknown-linux-gnueabihf
447
445
  path: .
@@ -453,10 +451,10 @@ jobs:
453
451
  - name: Install dependencies
454
452
  run: |
455
453
  yarn config set supportedArchitectures.cpu "arm"
456
- yarn install
454
+ ${packageManager} install
457
455
 
458
456
  - name: Set up QEMU
459
- uses: docker/setup-qemu-action@v2
457
+ uses: docker/setup-qemu-action@v3
460
458
  with:
461
459
  platforms: arm
462
460
  - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
@@ -466,10 +464,7 @@ jobs:
466
464
  with:
467
465
  image: node:\${{ matrix.node }}-bullseye-slim
468
466
  options: --platform linux/arm/v7 -v \${{ github.workspace }}:/build -w /build
469
- run: |
470
- set -e
471
- yarn test
472
- ls -la
467
+ run: ${packageManager} test
473
468
 
474
469
  universal-macOS:
475
470
  name: Build universal macOS binary
@@ -478,38 +473,67 @@ jobs:
478
473
  runs-on: macos-latest
479
474
 
480
475
  steps:
481
- - uses: actions/checkout@v3
476
+ - uses: actions/checkout@v4
482
477
 
483
478
  - name: Setup node
484
- uses: actions/setup-node@v3
479
+ uses: actions/setup-node@v4
485
480
  with:
486
- node-version: 18
487
- cache: yarn
481
+ node-version: 20
482
+ cache: ${packageManager}
488
483
 
489
484
  - name: 'Install dependencies'
490
- run: yarn install
485
+ run: ${packageManager} install
491
486
 
492
487
  - name: Download macOS x64 artifact
493
- uses: actions/download-artifact@v3
488
+ uses: actions/download-artifact@v4
494
489
  with:
495
490
  name: bindings-x86_64-apple-darwin
496
491
  path: .
497
492
  - name: Download macOS arm64 artifact
498
- uses: actions/download-artifact@v3
493
+ uses: actions/download-artifact@v4
499
494
  with:
500
495
  name: bindings-aarch64-apple-darwin
501
496
  path: .
502
497
 
503
498
  - name: Combine binaries
504
- run: yarn napi universalize
499
+ run: ${packageManager} napi universalize
505
500
 
506
501
  - name: Upload artifact
507
- uses: actions/upload-artifact@v3
502
+ uses: actions/upload-artifact@v4
508
503
  with:
509
504
  name: bindings-universal-apple-darwin
510
505
  path: "*.node"
511
506
  if-no-files-found: error
512
507
 
508
+ test-wasi-nodejs:
509
+ name: Test bindings on wasi - node@\${{ matrix.node }}
510
+ needs:
511
+ - build
512
+ strategy:
513
+ fail-fast: false
514
+ matrix:
515
+ node: ['18', '20']
516
+ runs-on: ubuntu-latest
517
+ steps:
518
+ - uses: actions/checkout@v4
519
+ - name: Download artifacts
520
+ uses: actions/download-artifact@v4
521
+ with:
522
+ name: bindings-${wasiTargetName}
523
+ path: .
524
+ - name: List packages
525
+ run: ls -R .
526
+ - uses: actions/setup-node@v4
527
+ with:
528
+ node-version: \${{ matrix.node }}
529
+ cache: ${packageManager}
530
+ - name: 'Install dependencies'
531
+ run: ${packageManager} install
532
+ - name: Test
533
+ run: ${packageManager} test
534
+ env:
535
+ NAPI_RS_FORCE_WASI: true
536
+
513
537
  publish:
514
538
  name: Publish
515
539
  runs-on: ubuntu-latest
@@ -520,22 +544,24 @@ jobs:
520
544
  - test-linux-arm-gnueabihf-binding
521
545
  - test-macOS-windows-binding
522
546
  - test-linux-aarch64-musl-binding
547
+ - test-wasi-nodejs
523
548
  - build-freebsd
524
549
 
525
550
  steps:
526
- - uses: actions/checkout@v3
551
+ - uses: actions/checkout@v4
527
552
 
528
553
  - name: Setup node
529
- uses: actions/setup-node@v3
554
+ uses: actions/setup-node@v4
530
555
  with:
531
- node-version: 18
532
- cache: 'yarn'
556
+ node-version: 20
557
+ cache: '${packageManager}'
558
+ registry-url: 'https://registry.npmjs.org'
533
559
 
534
560
  - name: 'Install dependencies'
535
- run: yarn install
561
+ run: ${packageManager} install
536
562
 
537
563
  - name: Download all artifacts
538
- uses: actions/download-artifact@v3
564
+ uses: actions/download-artifact@v4
539
565
  with:
540
566
  path: artifacts
541
567
 
@@ -550,16 +576,14 @@ jobs:
550
576
  run: |
551
577
  if git log -1 --pretty=%B | grep "^[0-9]\\+\\.[0-9]\\+\\.[0-9]\\+$";
552
578
  then
553
- echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
554
- npm publish --access public
579
+ npm publish --access public --provenance
555
580
  elif git log -1 --pretty=%B | grep "^[0-9]\\+\\.[0-9]\\+\\.[0-9]\\+";
556
581
  then
557
- echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
558
- npm publish --tag next --access public
582
+ npm publish --tag next --access public --provenance
559
583
  else
560
584
  echo "Not a release, skipping publish"
561
585
  fi
562
586
  env:
563
587
  GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}
564
- NPM_TOKEN: \${{ secrets.NPM_TOKEN }}
588
+ NODE_AUTH_TOKEN: \${{ secrets.NPM_TOKEN }}
565
589
  `