nx 19.4.0 → 19.5.0-beta.0

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 (35) hide show
  1. package/package.json +30 -26
  2. package/src/command-line/graph/graph.js +7 -2
  3. package/src/command-line/reset/reset.js +1 -1
  4. package/src/command-line/watch/watch.js +6 -0
  5. package/src/commands-runner/create-command-graph.js +32 -10
  6. package/src/core/graph/main.js +1 -1
  7. package/src/core/graph/styles.css +1 -1
  8. package/src/daemon/client/client.d.ts +1 -0
  9. package/src/daemon/client/client.js +14 -2
  10. package/src/devkit-exports.d.ts +1 -0
  11. package/src/devkit-exports.js +3 -1
  12. package/src/native/browser.js +1 -0
  13. package/src/native/index.d.ts +178 -138
  14. package/src/native/index.js +16 -0
  15. package/src/native/native-bindings.js +352 -238
  16. package/src/native/nx.wasi-browser.js +108 -0
  17. package/src/native/nx.wasi.cjs +139 -0
  18. package/src/native/nx.wasm32-wasi.wasm +0 -0
  19. package/src/native/wasi-worker-browser.mjs +32 -0
  20. package/src/native/wasi-worker.mjs +63 -0
  21. package/src/plugins/js/utils/register.js +29 -13
  22. package/src/project-graph/plugins/internal-api.js +0 -1
  23. package/src/project-graph/plugins/isolation/plugin-pool.js +1 -1
  24. package/src/project-graph/utils/project-configuration-utils.d.ts +8 -6
  25. package/src/project-graph/utils/project-configuration-utils.js +109 -44
  26. package/src/project-graph/utils/retrieve-workspace-files.d.ts +3 -3
  27. package/src/tasks-runner/pseudo-terminal.js +3 -0
  28. package/src/tasks-runner/task-graph-utils.d.ts +1 -1
  29. package/src/tasks-runner/task-graph-utils.js +4 -4
  30. package/src/tasks-runner/utils.js +1 -1
  31. package/src/utils/nx-plugin.deprecated.js +0 -2
  32. package/src/plugins/target-defaults/symbols.d.ts +0 -17
  33. package/src/plugins/target-defaults/symbols.js +0 -20
  34. package/src/plugins/target-defaults/target-defaults-plugin.d.ts +0 -121
  35. package/src/plugins/target-defaults/target-defaults-plugin.js +0 -176
@@ -1,268 +1,382 @@
1
- const { existsSync, readFileSync } = require('fs')
2
- const { join } = require('path')
1
+ // prettier-ignore
2
+ /* eslint-disable */
3
+ /* auto-generated by NAPI-RS */
3
4
 
4
- const { platform, arch } = process
5
+ const { readFileSync } = require('fs')
5
6
 
6
7
  let nativeBinding = null
7
- let localFileExisted = false
8
- let loadError = null
8
+ const loadErrors = []
9
9
 
10
- function isMusl() {
11
- // For Node 10
12
- if (!process.report || typeof process.report.getReport !== 'function') {
13
- try {
14
- const lddPath = require('child_process').execSync('which ldd').toString().trim();
15
- return readFileSync(lddPath, 'utf8').includes('musl')
16
- } catch (e) {
10
+ const isMusl = () => {
11
+ let musl = false
12
+ if (process.platform === 'linux') {
13
+ musl = isMuslFromFilesystem()
14
+ if (musl === null) {
15
+ musl = isMuslFromReport()
16
+ }
17
+ if (musl === null) {
18
+ musl = isMuslFromChildProcess()
19
+ }
20
+ }
21
+ return musl
22
+ }
23
+
24
+ const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-')
25
+
26
+ const isMuslFromFilesystem = () => {
27
+ try {
28
+ return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl')
29
+ } catch {
30
+ return null
31
+ }
32
+ }
33
+
34
+ const isMuslFromReport = () => {
35
+ const report = typeof process.report.getReport === 'function' ? process.report.getReport() : null
36
+ if (!report) {
37
+ return null
38
+ }
39
+ if (report.header && report.header.glibcVersionRuntime) {
40
+ return false
41
+ }
42
+ if (Array.isArray(report.sharedObjects)) {
43
+ if (report.sharedObjects.some(isFileMusl)) {
17
44
  return true
18
45
  }
19
- } else {
20
- const { glibcVersionRuntime } = process.report.getReport().header
21
- return !glibcVersionRuntime
22
46
  }
47
+ return false
23
48
  }
24
49
 
25
- switch (platform) {
26
- case 'android':
27
- switch (arch) {
28
- case 'arm64':
29
- localFileExisted = existsSync(join(__dirname, 'nx.android-arm64.node'))
50
+ const isMuslFromChildProcess = () => {
51
+ try {
52
+ return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl')
53
+ } catch (e) {
54
+ // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false
55
+ return false
56
+ }
57
+ }
58
+
59
+ function requireNative() {
60
+ if (process.platform === 'android') {
61
+ if (process.arch === 'arm64') {
62
+ try {
63
+ return require('./nx.android-arm64.node')
64
+ } catch (e) {
65
+ loadErrors.push(e)
66
+ }
67
+ try {
68
+ return require('@nx/nx-android-arm64')
69
+ } catch (e) {
70
+ loadErrors.push(e)
71
+ }
72
+
73
+ } else if (process.arch === 'arm') {
74
+ try {
75
+ return require('./nx.android-arm-eabi.node')
76
+ } catch (e) {
77
+ loadErrors.push(e)
78
+ }
79
+ try {
80
+ return require('@nx/nx-android-arm-eabi')
81
+ } catch (e) {
82
+ loadErrors.push(e)
83
+ }
84
+
85
+ } else {
86
+ loadErrors.push(new Error(`Unsupported architecture on Android ${process.arch}`))
87
+ }
88
+ } else if (process.platform === 'win32') {
89
+ if (process.arch === 'x64') {
90
+ try {
91
+ return require('./nx.win32-x64-msvc.node')
92
+ } catch (e) {
93
+ loadErrors.push(e)
94
+ }
95
+ try {
96
+ return require('@nx/nx-win32-x64-msvc')
97
+ } catch (e) {
98
+ loadErrors.push(e)
99
+ }
100
+
101
+ } else if (process.arch === 'ia32') {
102
+ try {
103
+ return require('./nx.win32-ia32-msvc.node')
104
+ } catch (e) {
105
+ loadErrors.push(e)
106
+ }
107
+ try {
108
+ return require('@nx/nx-win32-ia32-msvc')
109
+ } catch (e) {
110
+ loadErrors.push(e)
111
+ }
112
+
113
+ } else if (process.arch === 'arm64') {
114
+ try {
115
+ return require('./nx.win32-arm64-msvc.node')
116
+ } catch (e) {
117
+ loadErrors.push(e)
118
+ }
119
+ try {
120
+ return require('@nx/nx-win32-arm64-msvc')
121
+ } catch (e) {
122
+ loadErrors.push(e)
123
+ }
124
+
125
+ } else {
126
+ loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`))
127
+ }
128
+ } else if (process.platform === 'darwin') {
129
+ try {
130
+ return require('./nx.darwin-universal.node')
131
+ } catch (e) {
132
+ loadErrors.push(e)
133
+ }
134
+ try {
135
+ return require('@nx/nx-darwin-universal')
136
+ } catch (e) {
137
+ loadErrors.push(e)
138
+ }
139
+
140
+ if (process.arch === 'x64') {
141
+ try {
142
+ return require('./nx.darwin-x64.node')
143
+ } catch (e) {
144
+ loadErrors.push(e)
145
+ }
146
+ try {
147
+ return require('@nx/nx-darwin-x64')
148
+ } catch (e) {
149
+ loadErrors.push(e)
150
+ }
151
+
152
+ } else if (process.arch === 'arm64') {
153
+ try {
154
+ return require('./nx.darwin-arm64.node')
155
+ } catch (e) {
156
+ loadErrors.push(e)
157
+ }
158
+ try {
159
+ return require('@nx/nx-darwin-arm64')
160
+ } catch (e) {
161
+ loadErrors.push(e)
162
+ }
163
+
164
+ } else {
165
+ loadErrors.push(new Error(`Unsupported architecture on macOS: ${process.arch}`))
166
+ }
167
+ } else if (process.platform === 'freebsd') {
168
+ if (process.arch === 'x64') {
169
+ try {
170
+ return require('./nx.freebsd-x64.node')
171
+ } catch (e) {
172
+ loadErrors.push(e)
173
+ }
174
+ try {
175
+ return require('@nx/nx-freebsd-x64')
176
+ } catch (e) {
177
+ loadErrors.push(e)
178
+ }
179
+
180
+ } else if (process.arch === 'arm64') {
181
+ try {
182
+ return require('./nx.freebsd-arm64.node')
183
+ } catch (e) {
184
+ loadErrors.push(e)
185
+ }
186
+ try {
187
+ return require('@nx/nx-freebsd-arm64')
188
+ } catch (e) {
189
+ loadErrors.push(e)
190
+ }
191
+
192
+ } else {
193
+ loadErrors.push(new Error(`Unsupported architecture on FreeBSD: ${process.arch}`))
194
+ }
195
+ } else if (process.platform === 'linux') {
196
+ if (process.arch === 'x64') {
197
+ if (isMusl()) {
30
198
  try {
31
- if (localFileExisted) {
32
- nativeBinding = require('./nx.android-arm64.node')
33
- } else {
34
- nativeBinding = require('@nx/nx-android-arm64')
35
- }
36
- } catch (e) {
37
- loadError = e
38
- }
39
- break
40
- case 'arm':
41
- localFileExisted = existsSync(join(__dirname, 'nx.android-arm-eabi.node'))
199
+ return require('./nx.linux-x64-musl.node')
200
+ } catch (e) {
201
+ loadErrors.push(e)
202
+ }
203
+ try {
204
+ return require('@nx/nx-linux-x64-musl')
205
+ } catch (e) {
206
+ loadErrors.push(e)
207
+ }
208
+
209
+ } else {
42
210
  try {
43
- if (localFileExisted) {
44
- nativeBinding = require('./nx.android-arm-eabi.node')
45
- } else {
46
- nativeBinding = require('@nx/nx-android-arm-eabi')
47
- }
48
- } catch (e) {
49
- loadError = e
50
- }
51
- break
52
- default:
53
- throw new Error(`Unsupported architecture on Android ${arch}`)
54
- }
55
- break
56
- case 'win32':
57
- switch (arch) {
58
- case 'x64':
59
- localFileExisted = existsSync(
60
- join(__dirname, 'nx.win32-x64-msvc.node')
61
- )
211
+ return require('./nx.linux-x64-gnu.node')
212
+ } catch (e) {
213
+ loadErrors.push(e)
214
+ }
215
+ try {
216
+ return require('@nx/nx-linux-x64-gnu')
217
+ } catch (e) {
218
+ loadErrors.push(e)
219
+ }
220
+
221
+ }
222
+ } else if (process.arch === 'arm64') {
223
+ if (isMusl()) {
62
224
  try {
63
- if (localFileExisted) {
64
- nativeBinding = require('./nx.win32-x64-msvc.node')
65
- } else {
66
- nativeBinding = require('@nx/nx-win32-x64-msvc')
67
- }
68
- } catch (e) {
69
- loadError = e
70
- }
71
- break
72
- case 'ia32':
73
- localFileExisted = existsSync(
74
- join(__dirname, 'nx.win32-ia32-msvc.node')
75
- )
225
+ return require('./nx.linux-arm64-musl.node')
226
+ } catch (e) {
227
+ loadErrors.push(e)
228
+ }
229
+ try {
230
+ return require('@nx/nx-linux-arm64-musl')
231
+ } catch (e) {
232
+ loadErrors.push(e)
233
+ }
234
+
235
+ } else {
76
236
  try {
77
- if (localFileExisted) {
78
- nativeBinding = require('./nx.win32-ia32-msvc.node')
79
- } else {
80
- nativeBinding = require('@nx/nx-win32-ia32-msvc')
81
- }
82
- } catch (e) {
83
- loadError = e
84
- }
85
- break
86
- case 'arm64':
87
- localFileExisted = existsSync(
88
- join(__dirname, 'nx.win32-arm64-msvc.node')
89
- )
237
+ return require('./nx.linux-arm64-gnu.node')
238
+ } catch (e) {
239
+ loadErrors.push(e)
240
+ }
241
+ try {
242
+ return require('@nx/nx-linux-arm64-gnu')
243
+ } catch (e) {
244
+ loadErrors.push(e)
245
+ }
246
+
247
+ }
248
+ } else if (process.arch === 'arm') {
249
+ if (isMusl()) {
90
250
  try {
91
- if (localFileExisted) {
92
- nativeBinding = require('./nx.win32-arm64-msvc.node')
93
- } else {
94
- nativeBinding = require('@nx/nx-win32-arm64-msvc')
95
- }
96
- } catch (e) {
97
- loadError = e
98
- }
99
- break
100
- default:
101
- throw new Error(`Unsupported architecture on Windows: ${arch}`)
102
- }
103
- break
104
- case 'darwin':
105
- localFileExisted = existsSync(join(__dirname, 'nx.darwin-universal.node'))
106
- try {
107
- if (localFileExisted) {
108
- nativeBinding = require('./nx.darwin-universal.node')
251
+ return require('./nx.linux-arm-musleabihf.node')
252
+ } catch (e) {
253
+ loadErrors.push(e)
254
+ }
255
+ try {
256
+ return require('@nx/nx-linux-arm-musleabihf')
257
+ } catch (e) {
258
+ loadErrors.push(e)
259
+ }
260
+
109
261
  } else {
110
- nativeBinding = require('@nx/nx-darwin-universal')
262
+ try {
263
+ return require('./nx.linux-arm-gnueabihf.node')
264
+ } catch (e) {
265
+ loadErrors.push(e)
266
+ }
267
+ try {
268
+ return require('@nx/nx-linux-arm-gnueabihf')
269
+ } catch (e) {
270
+ loadErrors.push(e)
271
+ }
272
+
111
273
  }
112
- break
113
- } catch {}
114
- switch (arch) {
115
- case 'x64':
116
- localFileExisted = existsSync(join(__dirname, 'nx.darwin-x64.node'))
274
+ } else if (process.arch === 'riscv64') {
275
+ if (isMusl()) {
117
276
  try {
118
- if (localFileExisted) {
119
- nativeBinding = require('./nx.darwin-x64.node')
120
- } else {
121
- nativeBinding = require('@nx/nx-darwin-x64')
122
- }
123
- } catch (e) {
124
- loadError = e
125
- }
126
- break
127
- case 'arm64':
128
- localFileExisted = existsSync(
129
- join(__dirname, 'nx.darwin-arm64.node')
130
- )
277
+ return require('./nx.linux-riscv64-musl.node')
278
+ } catch (e) {
279
+ loadErrors.push(e)
280
+ }
281
+ try {
282
+ return require('@nx/nx-linux-riscv64-musl')
283
+ } catch (e) {
284
+ loadErrors.push(e)
285
+ }
286
+
287
+ } else {
131
288
  try {
132
- if (localFileExisted) {
133
- nativeBinding = require('./nx.darwin-arm64.node')
134
- } else {
135
- nativeBinding = require('@nx/nx-darwin-arm64')
136
- }
137
- } catch (e) {
138
- loadError = e
139
- }
140
- break
141
- default:
142
- throw new Error(`Unsupported architecture on macOS: ${arch}`)
289
+ return require('./nx.linux-riscv64-gnu.node')
290
+ } catch (e) {
291
+ loadErrors.push(e)
292
+ }
293
+ try {
294
+ return require('@nx/nx-linux-riscv64-gnu')
295
+ } catch (e) {
296
+ loadErrors.push(e)
297
+ }
298
+
299
+ }
300
+ } else if (process.arch === 'ppc64') {
301
+ try {
302
+ return require('./nx.linux-ppc64-gnu.node')
303
+ } catch (e) {
304
+ loadErrors.push(e)
305
+ }
306
+ try {
307
+ return require('@nx/nx-linux-ppc64-gnu')
308
+ } catch (e) {
309
+ loadErrors.push(e)
310
+ }
311
+
312
+ } else if (process.arch === 's390x') {
313
+ try {
314
+ return require('./nx.linux-s390x-gnu.node')
315
+ } catch (e) {
316
+ loadErrors.push(e)
317
+ }
318
+ try {
319
+ return require('@nx/nx-linux-s390x-gnu')
320
+ } catch (e) {
321
+ loadErrors.push(e)
322
+ }
323
+
324
+ } else {
325
+ loadErrors.push(new Error(`Unsupported architecture on Linux: ${process.arch}`))
143
326
  }
144
- break
145
- case 'freebsd':
146
- if (arch !== 'x64') {
147
- throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
327
+ } else {
328
+ loadErrors.push(new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`))
329
+ }
330
+ }
331
+
332
+ nativeBinding = requireNative()
333
+
334
+ if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {
335
+ try {
336
+ nativeBinding = require('./nx.wasi.cjs')
337
+ } catch (err) {
338
+ if (process.env.NAPI_RS_FORCE_WASI) {
339
+ console.error(err)
148
340
  }
149
- localFileExisted = existsSync(join(__dirname, 'nx.freebsd-x64.node'))
341
+ }
342
+ if (!nativeBinding) {
150
343
  try {
151
- if (localFileExisted) {
152
- nativeBinding = require('./nx.freebsd-x64.node')
153
- } else {
154
- nativeBinding = require('@nx/nx-freebsd-x64')
344
+ nativeBinding = require('@nx/nx-wasm32-wasi')
345
+ } catch (err) {
346
+ if (process.env.NAPI_RS_FORCE_WASI) {
347
+ console.error(err)
155
348
  }
156
- } catch (e) {
157
- loadError = e
158
349
  }
159
- break
160
- case 'linux':
161
- switch (arch) {
162
- case 'x64':
163
- if (isMusl()) {
164
- localFileExisted = existsSync(
165
- join(__dirname, 'nx.linux-x64-musl.node')
166
- )
167
- try {
168
- if (localFileExisted) {
169
- nativeBinding = require('./nx.linux-x64-musl.node')
170
- } else {
171
- nativeBinding = require('@nx/nx-linux-x64-musl')
172
- }
173
- } catch (e) {
174
- loadError = e
175
- }
176
- } else {
177
- localFileExisted = existsSync(
178
- join(__dirname, 'nx.linux-x64-gnu.node')
179
- )
180
- try {
181
- if (localFileExisted) {
182
- nativeBinding = require('./nx.linux-x64-gnu.node')
183
- } else {
184
- nativeBinding = require('@nx/nx-linux-x64-gnu')
185
- }
186
- } catch (e) {
187
- loadError = e
188
- }
189
- }
190
- break
191
- case 'arm64':
192
- if (isMusl()) {
193
- localFileExisted = existsSync(
194
- join(__dirname, 'nx.linux-arm64-musl.node')
195
- )
196
- try {
197
- if (localFileExisted) {
198
- nativeBinding = require('./nx.linux-arm64-musl.node')
199
- } else {
200
- nativeBinding = require('@nx/nx-linux-arm64-musl')
201
- }
202
- } catch (e) {
203
- loadError = e
204
- }
205
- } else {
206
- localFileExisted = existsSync(
207
- join(__dirname, 'nx.linux-arm64-gnu.node')
208
- )
209
- try {
210
- if (localFileExisted) {
211
- nativeBinding = require('./nx.linux-arm64-gnu.node')
212
- } else {
213
- nativeBinding = require('@nx/nx-linux-arm64-gnu')
214
- }
215
- } catch (e) {
216
- loadError = e
217
- }
218
- }
219
- break
220
- case 'arm':
221
- localFileExisted = existsSync(
222
- join(__dirname, 'nx.linux-arm-gnueabihf.node')
223
- )
224
- try {
225
- if (localFileExisted) {
226
- nativeBinding = require('./nx.linux-arm-gnueabihf.node')
227
- } else {
228
- nativeBinding = require('@nx/nx-linux-arm-gnueabihf')
229
- }
230
- } catch (e) {
231
- loadError = e
232
- }
233
- break
234
- default:
235
- throw new Error(`Unsupported architecture on Linux: ${arch}`)
236
- }
237
- break
238
- default:
239
- throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
350
+ }
240
351
  }
241
352
 
242
353
  if (!nativeBinding) {
243
- if (loadError) {
244
- throw loadError
354
+ if (loadErrors.length > 0) {
355
+ // TODO Link to documentation with potential fixes
356
+ // - The package owner could build/publish bindings for this arch
357
+ // - The user may need to bundle the correct files
358
+ // - The user may need to re-install node_modules to get new packages
359
+ throw new Error('Failed to load native binding', { cause: loadErrors })
245
360
  }
246
361
  throw new Error(`Failed to load native binding`)
247
362
  }
248
363
 
249
- const { expandOutputs, getFilesForOutputs, remove, copy, hashArray, hashFile, ImportResult, findImports, transferProjectGraph, ChildProcess, RustPseudoTerminal, HashPlanner, TaskHasher, EventType, Watcher, WorkspaceContext, WorkspaceErrors, testOnlyTransferFileMap } = nativeBinding
250
-
251
- module.exports.expandOutputs = expandOutputs
252
- module.exports.getFilesForOutputs = getFilesForOutputs
253
- module.exports.remove = remove
254
- module.exports.copy = copy
255
- module.exports.hashArray = hashArray
256
- module.exports.hashFile = hashFile
257
- module.exports.ImportResult = ImportResult
258
- module.exports.findImports = findImports
259
- module.exports.transferProjectGraph = transferProjectGraph
260
- module.exports.ChildProcess = ChildProcess
261
- module.exports.RustPseudoTerminal = RustPseudoTerminal
262
- module.exports.HashPlanner = HashPlanner
263
- module.exports.TaskHasher = TaskHasher
264
- module.exports.EventType = EventType
265
- module.exports.Watcher = Watcher
266
- module.exports.WorkspaceContext = WorkspaceContext
267
- module.exports.WorkspaceErrors = WorkspaceErrors
268
- module.exports.testOnlyTransferFileMap = testOnlyTransferFileMap
364
+ module.exports.ChildProcess = nativeBinding.ChildProcess
365
+ module.exports.HashPlanner = nativeBinding.HashPlanner
366
+ module.exports.ImportResult = nativeBinding.ImportResult
367
+ module.exports.RustPseudoTerminal = nativeBinding.RustPseudoTerminal
368
+ module.exports.TaskHasher = nativeBinding.TaskHasher
369
+ module.exports.Watcher = nativeBinding.Watcher
370
+ module.exports.WorkspaceContext = nativeBinding.WorkspaceContext
371
+ module.exports.copy = nativeBinding.copy
372
+ module.exports.EventType = nativeBinding.EventType
373
+ module.exports.expandOutputs = nativeBinding.expandOutputs
374
+ module.exports.findImports = nativeBinding.findImports
375
+ module.exports.getFilesForOutputs = nativeBinding.getFilesForOutputs
376
+ module.exports.hashArray = nativeBinding.hashArray
377
+ module.exports.hashFile = nativeBinding.hashFile
378
+ module.exports.IS_WASM = nativeBinding.IS_WASM
379
+ module.exports.remove = nativeBinding.remove
380
+ module.exports.testOnlyTransferFileMap = nativeBinding.testOnlyTransferFileMap
381
+ module.exports.transferProjectGraph = nativeBinding.transferProjectGraph
382
+ module.exports.WorkspaceErrors = nativeBinding.WorkspaceErrors