@napi-rs/cli 3.0.0-alpha.3 → 3.0.0-alpha.30

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