jiek 2.2.5 → 2.2.7-alpha.1

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 (136) hide show
  1. package/bin/build.cjs +2 -0
  2. package/bin/index.cjs +2 -0
  3. package/bin-helper/index.cjs +31 -0
  4. package/bin-helper/index.d.cts +1 -0
  5. package/bin-helper/index.d.ts +1 -0
  6. package/bin-helper/package.json +5 -1
  7. package/dist/.internal/+/bin/parseArgv.cjs +33 -0
  8. package/dist/.internal/+/bin/parseArgv.d.cts +5 -0
  9. package/dist/.internal/+/bin/parseArgv.d.ts +5 -0
  10. package/dist/.internal/+/bin/parseArgv.js +27 -0
  11. package/dist/.internal/+/bridge.cjs +12 -0
  12. package/dist/.internal/+/bridge.d.cts +39 -0
  13. package/dist/.internal/+/bridge.d.ts +39 -0
  14. package/dist/.internal/+/bridge.js +9 -0
  15. package/dist/.internal/+/commands/build/analyzer.cjs +201 -0
  16. package/dist/.internal/+/commands/build/analyzer.d.cts +30 -0
  17. package/dist/.internal/+/commands/build/analyzer.d.ts +30 -0
  18. package/dist/.internal/+/commands/build/analyzer.js +195 -0
  19. package/dist/.internal/+/commands/descriptions.cjs +21 -0
  20. package/dist/.internal/+/commands/descriptions.d.cts +5 -0
  21. package/dist/.internal/+/commands/descriptions.d.ts +5 -0
  22. package/dist/.internal/+/commands/descriptions.js +17 -0
  23. package/dist/.internal/+/commands/meta.cjs +16 -0
  24. package/dist/.internal/+/commands/meta.d.cts +3 -0
  25. package/dist/.internal/+/commands/meta.d.ts +3 -0
  26. package/dist/.internal/+/commands/meta.js +15 -0
  27. package/dist/.internal/+/commands/utils/optionParser.cjs +8 -0
  28. package/dist/.internal/+/commands/utils/optionParser.d.cts +3 -0
  29. package/dist/.internal/+/commands/utils/optionParser.d.ts +3 -0
  30. package/dist/.internal/+/commands/utils/optionParser.js +6 -0
  31. package/dist/.internal/+/rollup/base.cjs +10 -0
  32. package/dist/{cli-only-build.d.cts → .internal/+/rollup/base.d.cts} +8 -15
  33. package/dist/{cli-only-build.d.ts → .internal/+/rollup/base.d.ts} +8 -15
  34. package/dist/.internal/+/rollup/base.js +7 -0
  35. package/dist/.internal/+/rollup/bundle-analyzer.cjs +51 -0
  36. package/dist/.internal/+/rollup/bundle-analyzer.d.cts +92 -0
  37. package/dist/.internal/+/rollup/bundle-analyzer.d.ts +92 -0
  38. package/dist/.internal/+/rollup/bundle-analyzer.js +45 -0
  39. package/dist/.internal/+/server.cjs +33 -0
  40. package/dist/.internal/+/server.d.cts +8 -0
  41. package/dist/.internal/+/server.d.ts +8 -0
  42. package/dist/.internal/+/server.js +27 -0
  43. package/dist/.internal/+/utils/checkDependency.cjs +39 -0
  44. package/dist/.internal/+/utils/checkDependency.d.cts +3 -0
  45. package/dist/.internal/+/utils/checkDependency.d.ts +3 -0
  46. package/dist/.internal/+/utils/checkDependency.js +34 -0
  47. package/dist/.internal/+/utils/filterSupport.cjs +20 -0
  48. package/dist/.internal/+/utils/filterSupport.d.cts +15 -0
  49. package/dist/.internal/+/utils/filterSupport.d.ts +15 -0
  50. package/dist/.internal/+/utils/filterSupport.js +10 -0
  51. package/dist/.internal/+/utils/getInternalModuleName.cjs +5 -0
  52. package/dist/.internal/+/utils/getInternalModuleName.d.cts +3 -0
  53. package/dist/.internal/+/utils/getInternalModuleName.d.ts +3 -0
  54. package/dist/.internal/+/utils/getInternalModuleName.js +3 -0
  55. package/dist/.internal/+/utils/getRoot.cjs +17 -0
  56. package/dist/.internal/+/utils/getRoot.d.cts +3 -0
  57. package/dist/.internal/+/utils/getRoot.d.ts +3 -0
  58. package/dist/.internal/+/utils/getRoot.js +11 -0
  59. package/dist/.internal/+/utils/getWD.cjs +15 -0
  60. package/dist/.internal/+/utils/getWD.d.cts +6 -0
  61. package/dist/.internal/+/utils/getWD.d.ts +6 -0
  62. package/dist/.internal/+/utils/getWD.js +10 -0
  63. package/dist/.internal/+/utils/intersection.cjs +5 -0
  64. package/dist/.internal/+/utils/intersection.d.cts +3 -0
  65. package/dist/.internal/+/utils/intersection.d.ts +3 -0
  66. package/dist/.internal/+/utils/intersection.js +3 -0
  67. package/dist/.internal/+/utils/loadConfig.cjs +100 -0
  68. package/dist/.internal/+/utils/loadConfig.d.cts +10 -0
  69. package/dist/.internal/+/utils/loadConfig.d.ts +10 -0
  70. package/dist/.internal/+/utils/loadConfig.js +94 -0
  71. package/dist/.internal/+/utils/recursiveListFiles.cjs +19 -0
  72. package/dist/.internal/+/utils/recursiveListFiles.d.cts +3 -0
  73. package/dist/.internal/+/utils/recursiveListFiles.d.ts +3 -0
  74. package/dist/.internal/+/utils/recursiveListFiles.js +13 -0
  75. package/dist/.internal/+/utils/resolveExports.cjs +118 -0
  76. package/dist/.internal/+/utils/resolveExports.d.cts +26 -0
  77. package/dist/.internal/+/utils/resolveExports.d.ts +26 -0
  78. package/dist/.internal/+/utils/resolveExports.js +111 -0
  79. package/dist/.internal/+/utils/ts.cjs +68 -0
  80. package/dist/.internal/+/utils/ts.d.cts +3 -0
  81. package/dist/.internal/+/utils/ts.d.ts +3 -0
  82. package/dist/.internal/+/utils/ts.js +62 -0
  83. package/dist/.internal/+/utils/tsRegister.cjs +25 -0
  84. package/dist/.internal/+/utils/tsRegister.d.cts +3 -0
  85. package/dist/.internal/+/utils/tsRegister.d.ts +3 -0
  86. package/dist/.internal/+/utils/tsRegister.js +26 -0
  87. package/dist/.internal/getWD-BRJ3PK1S.js +105 -0
  88. package/dist/.internal/getWD-Cmxzjf-f.js +95 -0
  89. package/dist/{cli.js → .internal/index-B6RQz1DZ.js} +1 -731
  90. package/dist/{cli.cjs → .internal/index-DlHFuTjM.js} +1 -753
  91. package/dist/.internal/jiek_create-require-CWFWNQHj.js +5 -0
  92. package/dist/.internal/jiek_create-require-CxSGbkTB.js +5 -0
  93. package/dist/.internal/package.json +10 -0
  94. package/dist/bin/build.cjs +505 -0
  95. package/dist/bin/index.cjs +488 -0
  96. package/dist/index.d.cts +1 -113
  97. package/dist/index.d.ts +1 -113
  98. package/dist/rollup/index.cjs +282 -4569
  99. package/dist/rollup/index.d.cts +7 -1
  100. package/dist/rollup/index.d.ts +7 -1
  101. package/dist/rollup/index.js +270 -4554
  102. package/package.json +25 -28
  103. package/src/bin/build.cts +11 -0
  104. package/src/bin/index.cts +6 -0
  105. package/src/bridge.ts +1 -1
  106. package/src/commands/base.ts +3 -3
  107. package/src/commands/build/analyzer.ts +5 -5
  108. package/src/commands/build/client/analyzer.tsx +1 -1
  109. package/src/commands/build/client/index.ts +5 -7
  110. package/src/commands/build.ts +218 -209
  111. package/src/commands/meta.ts +1 -1
  112. package/src/commands/publish.ts +101 -31
  113. package/src/rollup/base.ts +2 -2
  114. package/src/rollup/index.ts +309 -115
  115. package/src/rollup/plugins/with-external.ts +23 -0
  116. package/src/rollup/utils/externalResolver.ts +20 -8
  117. package/src/utils/checkDependency.ts +1 -1
  118. package/src/utils/filterSupport.ts +17 -16
  119. package/src/utils/getInternalModuleName.ts +5 -0
  120. package/src/utils/intersection.ts +1 -0
  121. package/src/utils/{recusiveListFiles.ts → recursiveListFiles.ts} +2 -2
  122. package/src/utils/{getExports.ts → resolveExports.ts} +16 -14
  123. package/bin/jiek-build.js +0 -16
  124. package/bin/jiek.js +0 -13
  125. package/bin-helper.cjs +0 -43
  126. package/cli/package.json +0 -1
  127. package/cli-only-build/package.json +0 -1
  128. package/dist/cli-only-build.cjs +0 -977
  129. package/dist/cli-only-build.js +0 -969
  130. package/dist/cli.d.cts +0 -14
  131. package/dist/cli.d.ts +0 -14
  132. package/src/bin/build.ts +0 -0
  133. package/src/cli-only-build.ts +0 -11
  134. package/src/cli.ts +0 -6
  135. /package/{bin-helper.js → bin-helper/index.js} +0 -0
  136. /package/src/{parseArgv.ts → bin/parseArgv.ts} +0 -0
@@ -6,20 +6,21 @@ import { MultiBar, Presets } from 'cli-progress'
6
6
  import { program } from 'commander'
7
7
  import { execaCommand } from 'execa'
8
8
 
9
- import type { RollupBuildEvent } from '#~/bridge.ts'
10
- import type { AnalyzerBuildOptions } from '#~/commands/build/analyzer.ts'
11
- import { registerAnalyzerCommandOptions, useAnalyzer } from '#~/commands/build/analyzer.ts'
12
- import { entriesDescription, filterDescription, outdirDescription } from '#~/commands/descriptions.ts'
13
- import { IS_WORKSPACE } from '#~/commands/meta.ts'
14
- import { parseBoolean } from '#~/commands/utils/optionParser.ts'
15
- import type { TemplateOptions } from '#~/rollup/base.ts'
16
- import { BUILDER_TYPES, BUILDER_TYPE_PACKAGE_NAME_MAP } from '#~/rollup/base.ts'
17
- import { createServer } from '#~/server.ts'
18
- import { checkDependency } from '#~/utils/checkDependency.ts'
19
- import type { ProjectsGraph } from '#~/utils/filterSupport.ts'
20
- import { filterPackagesGraph, getSelectedProjectsGraph } from '#~/utils/filterSupport.ts'
21
- import { loadConfig } from '#~/utils/loadConfig.ts'
22
- import { tsRegisterName } from '#~/utils/tsRegister.ts'
9
+ import type { RollupBuildEvent } from '#~/bridge'
10
+ import type { AnalyzerBuildOptions } from '#~/commands/build/analyzer'
11
+ import { registerAnalyzerCommandOptions, useAnalyzer } from '#~/commands/build/analyzer'
12
+ import { entriesDescription, filterDescription, outdirDescription } from '#~/commands/descriptions'
13
+ import { IS_WORKSPACE } from '#~/commands/meta'
14
+ import { parseBoolean } from '#~/commands/utils/optionParser'
15
+ import type { TemplateOptions } from '#~/rollup/base'
16
+ import { BUILDER_TYPES, BUILDER_TYPE_PACKAGE_NAME_MAP } from '#~/rollup/base'
17
+ import { createServer } from '#~/server'
18
+ import { checkDependency } from '#~/utils/checkDependency'
19
+ import type { Manifest } from '#~/utils/filterSupport'
20
+ import { filterPackagesGraph, getSelectedProjectsGraph } from '#~/utils/filterSupport'
21
+ import { getWD } from '#~/utils/getWD'
22
+ import { loadConfig } from '#~/utils/loadConfig'
23
+ import { tsRegisterName } from '#~/utils/tsRegister'
23
24
 
24
25
  declare module 'jiek' {
25
26
  export interface Config {
@@ -38,7 +39,11 @@ const FILE_TEMPLATE = (manifest: unknown) => (`
38
39
  module.exports = require('jiek/rollup').template(${JSON.stringify(manifest, null, 2)})
39
40
  `.trimStart())
40
41
 
41
- const isDefault = process.env.JIEK_IS_ONLY_BUILD === 'true'
42
+ const ROLLUP_BIN = require
43
+ .resolve('rollup')
44
+ .replace(/dist\/rollup.js$/, 'dist/bin/rollup')
45
+
46
+ const isDefault = process.env.JIEK_BIN__FILENAME === 'build.cjs'
42
47
 
43
48
  const description = `
44
49
  Build the package according to the 'exports' field from the package.json.
@@ -102,6 +107,8 @@ interface BuildOptions extends AnalyzerBuildOptions {
102
107
  * - ./tsconfig.dts.json
103
108
  */
104
109
  dtsconfig?: string
110
+
111
+ 'features.keepImportAttributes'?: boolean | 'assert'
105
112
  }
106
113
 
107
114
  let DEFAULT_BUILDER_TYPE: typeof BUILDER_TYPES[number]
@@ -143,7 +150,6 @@ let command = isDefault
143
150
  command = command
144
151
  .description(description)
145
152
  .option('-t, --type <TYPE>', `The type of build, support ${BUILDER_TYPES.map(s => `"${s}"`).join(', ')}.`, v => {
146
- // eslint-disable-next-line ts/no-unsafe-argument
147
153
  if (!BUILDER_TYPES.includes(v as any)) {
148
154
  throw new Error(`The value of 'type' must be ${BUILDER_TYPES.map(s => `"${s}"`).join(', ')}`)
149
155
  }
@@ -173,6 +179,9 @@ command = command
173
179
  parseBoolean
174
180
  )
175
181
 
182
+ command = command
183
+ .option('--features.keepImportAttributes', 'Keep the import attributes in the output.')
184
+
176
185
  command = command
177
186
  .option('--tsconfig <TSCONFIG>', 'The path of the tsconfig file which is used to generate js and dts files.', String)
178
187
  .option('--dtsconfig <DTSCONFIG>', 'The path of the tsconfig file which is used to generate dts files.', String)
@@ -277,6 +286,9 @@ command
277
286
  JIEK_MINIFY_TYPE: minifyType,
278
287
  JIEK_TSCONFIG: tsconfig,
279
288
  JIEK_DTSCONFIG: dtsconfig,
289
+ JIEK_FEATURES: JSON.stringify({
290
+ keepImportAttributes: options['features.keepImportAttributes']
291
+ }),
280
292
  ...process.env
281
293
  }
282
294
 
@@ -286,201 +298,196 @@ command
286
298
  format: '- {bar} | {status} | {pkgName} | {input} | {message}'
287
299
  }, Presets.shades_classic)
288
300
 
289
- const buildPackage = async ({
290
- wd,
291
- value = {}
292
- }: ProjectsGraph) => {
293
- if (Object.keys(value).length === 0) {
294
- throw new Error('no package found')
301
+ const { wd } = getWD()
302
+ const wdNodeModules = path.resolve(wd, 'node_modules')
303
+ if (!existsSync(wdNodeModules)) {
304
+ mkdirSync(wdNodeModules)
305
+ }
306
+ const resolveByJiekTemp = (...paths: string[]) => path.resolve(wdNodeModules, '.jiek', ...paths)
307
+ const jiekTemp = resolveByJiekTemp()
308
+ if (!existsSync(jiekTemp)) {
309
+ mkdirSync(jiekTemp)
310
+ }
311
+
312
+ let i = 0
313
+ const buildPackage = async ([pkgCWD, manifest]: [
314
+ string,
315
+ Manifest
316
+ ], {
317
+ resolveByJiekTemp
318
+ }: {
319
+ resolveByJiekTemp: (...paths: string[]) => string
320
+ }) => {
321
+ if (manifest.name == null) {
322
+ throw new Error('package.json must have a name field')
295
323
  }
296
- const wdNodeModules = path.resolve(wd, 'node_modules')
297
- if (!existsSync(wdNodeModules)) {
298
- mkdirSync(wdNodeModules)
324
+
325
+ // TODO support auto build child packages in workspaces
326
+ const escapeManifestName = manifest.name.replace(/^@/g, '').replace(/\//g, '+')
327
+ const configFile = resolveByJiekTemp(
328
+ `${escapeManifestName ?? `anonymous-${i++}`}.rollup.config.js`
329
+ )
330
+ writeFileSync(configFile, FILE_TEMPLATE(manifest))
331
+ const command = [ROLLUP_BIN, '--silent', '-c', configFile]
332
+ if (tsRegisterName != null) {
333
+ command.unshift(`node -r ${tsRegisterName}`)
299
334
  }
300
- const resolveByJiekTemp = (...paths: string[]) => path.resolve(wdNodeModules, '.jiek', ...paths)
301
- const jiekTemp = resolveByJiekTemp()
302
- if (!existsSync(jiekTemp)) {
303
- try {
304
- mkdirSync(jiekTemp)
305
- } catch {}
335
+ if (watch) {
336
+ command.push('--watch')
306
337
  }
307
-
308
- const rollupBinaryPath = require.resolve('rollup')
309
- .replace(/dist\/rollup.js$/, 'dist/bin/rollup')
310
- let i = 0
311
- await Promise.all(
312
- Object.entries(value).map(async ([pkgCWD, manifest]) => {
313
- if (manifest.name == null) {
314
- throw new Error('package.json must have a name field')
315
- }
316
-
317
- // TODO support auto build child packages in workspaces
318
- const escapeManifestName = manifest.name.replace(/^@/g, '').replace(/\//g, '+')
319
- const configFile = resolveByJiekTemp(
320
- `${escapeManifestName ?? `anonymous-${i++}`}.rollup.config.js`
321
- )
322
- writeFileSync(configFile, FILE_TEMPLATE(manifest))
323
- const command = [rollupBinaryPath, '--silent', '-c', configFile]
324
- if (tsRegisterName != null) {
325
- command.unshift(`node -r ${tsRegisterName}`)
326
- }
327
- if (watch) {
328
- command.push('--watch')
329
- }
330
- command.push(...passThroughOptions)
331
- const child = execaCommand(command.join(' '), {
332
- ipc: true,
333
- cwd: pkgCWD,
334
- env: {
335
- ...env,
336
- JIEK_NAME: manifest.name,
337
- JIEK_ROOT: wd
338
- }
339
- })
340
- const bars: Record<string, ReturnType<typeof multiBars.create>> = {}
341
- const times: Record<string, number> = {}
342
- const locks: Record<string, boolean> = {}
343
- let inputMaxLen = 10
344
- child.on('message', (e: RollupBuildEvent) => {
345
- if (
346
- silent && [
347
- 'init',
348
- 'progress',
349
- 'watchChange'
350
- ].includes(e.type)
351
- ) return
352
- switch (e.type) {
353
- case 'init': {
354
- const { leafMap, targetsLength } = e.data
355
- const leafs = Array
356
- .from(leafMap.entries())
357
- .flatMap(([input, pathAndCondiions]) =>
358
- pathAndCondiions.map(([path, ...conditions]) => ({
359
- input,
360
- path,
361
- conditions
362
- }))
363
- )
364
- let initMessage = `Package '${manifest.name}' has ${targetsLength} targets to build`
365
- if (watch) {
366
- initMessage += ' and watching...'
367
- }
368
- // eslint-disable-next-line no-console
369
- console.log(initMessage)
370
- leafs.forEach(({ input }) => {
371
- inputMaxLen = Math.max(inputMaxLen, input.length)
372
- })
373
- leafs.forEach(({ input, path }) => {
374
- const key = `${input}:${path}`
375
- // eslint-disable-next-line ts/strict-boolean-expressions
376
- if (bars[key]) return
377
- bars[key] = multiBars.create(50, 0, {
378
- pkgName: manifest.name,
379
- input: input.padEnd(inputMaxLen + 5),
380
- status: 'waiting'.padEnd(10)
381
- }, {
382
- barsize: 20,
383
- linewrap: true
384
- })
385
- })
386
- break
387
- }
388
- case 'progress': {
389
- const {
390
- path,
391
- tags,
338
+ command.push(...passThroughOptions)
339
+ const child = execaCommand(command.join(' '), {
340
+ ipc: true,
341
+ cwd: pkgCWD,
342
+ windowsHide: true,
343
+ env: {
344
+ ...env,
345
+ JIEK_NAME: manifest.name,
346
+ JIEK_ROOT: wd
347
+ }
348
+ })
349
+ const bars: Record<string, ReturnType<typeof multiBars.create>> = {}
350
+ const times: Record<string, number> = {}
351
+ const locks: Record<string, boolean> = {}
352
+ let inputMaxLen = 10
353
+ child.on('message', (e: RollupBuildEvent) => {
354
+ if (
355
+ silent && [
356
+ 'init',
357
+ 'progress',
358
+ 'watchChange'
359
+ ].includes(e.type)
360
+ ) return
361
+ switch (e.type) {
362
+ case 'init': {
363
+ const { leafMap, targetsLength } = e.data
364
+ const leafs = Array
365
+ .from(leafMap.entries())
366
+ .flatMap(([input, pathAndConditions]) =>
367
+ pathAndConditions.map(([path, ...conditions]) => ({
392
368
  input,
393
- event,
394
- message
395
- } = e.data
396
- const bar = bars[`${input}:${path}`]
397
- // eslint-disable-next-line ts/strict-boolean-expressions
398
- if (!bar) return
399
- const time = times[`${input}:${path}`]
400
- bar.update(
401
- {
402
- start: 0,
403
- resolve: 20,
404
- end: 50
405
- }[event ?? 'start'] ?? 0,
406
- {
407
- input: (
408
- time
409
- ? `${input}(x${time.toString().padStart(2, '0')})`
410
- : input
411
- ).padEnd(inputMaxLen + 5),
412
- status: event?.padEnd(10),
413
- message: `${tags?.join(', ')}: ${message}`
414
- }
415
- )
416
- break
417
- }
418
- case 'watchChange': {
419
- const {
420
369
  path,
421
- input
422
- } = e.data
423
- const key = `${input}:${path}`
424
- const bar = bars[key]
425
- // eslint-disable-next-line ts/strict-boolean-expressions
426
- if (!bar) return
427
- let time = times[key] ?? 1
428
- if (!locks[key]) {
429
- time += 1
430
- times[key] = time
431
- setTimeout(() => {
432
- locks[key] = false
433
- }, 100)
434
- bar.update(0, {
435
- input: `${input}(x${time.toString().padStart(2, '0')})`.padEnd(inputMaxLen + 5),
436
- status: 'watching'.padEnd(10),
437
- message: 'watching...'
438
- })
439
- }
440
- locks[key] = true
441
- break
442
- }
443
- case 'modulesAnalyze': {
444
- const {
445
- data: {
446
- type,
447
- modules: pkgModules
448
- }
449
- } = e
450
- void refreshAnalyzer(
451
- pkgCWD,
452
- pkgModules.map(m => ({
453
- ...m,
454
- type,
455
- filename: `${manifest.name}/${m.filename}`,
456
- label: `${manifest.name}/${m.label}`
457
- }))
458
- )
459
- break
460
- }
461
- case 'debug': {
462
- // eslint-disable-next-line no-console,ts/no-unsafe-argument
463
- console.log(...(Array.isArray(e.data) ? e.data : [e.data]))
464
- break
465
- }
466
- default:
370
+ conditions
371
+ }))
372
+ )
373
+ let initMessage = `Package '${manifest.name}' has ${targetsLength} targets to build`
374
+ if (watch) {
375
+ initMessage += ' and watching...'
467
376
  }
468
- })
469
- await new Promise<void>((resolve, reject) => {
470
- let errorStr = `rollup build failed\n`
471
- + `package name: ${manifest.name}\n`
472
- + `cwd: ${pkgCWD}\n\n`
473
- child.stderr?.on('data', (data) => {
474
- errorStr += data
377
+ // eslint-disable-next-line no-console
378
+ console.log(initMessage)
379
+ leafs.forEach(({ input }) => {
380
+ inputMaxLen = Math.max(inputMaxLen, input.length)
475
381
  })
476
- child.once('exit', (code) =>
477
- code === 0
478
- ? resolve()
479
- : reject(new Error(errorStr)))
480
- verbose && child.stdout?.pipe(process.stdout)
481
- })
382
+ leafs.forEach(({ input, path }) => {
383
+ const key = `${input}:${path}`
384
+ // eslint-disable-next-line ts/strict-boolean-expressions
385
+ if (bars[key]) return
386
+ bars[key] = multiBars.create(50, 0, {
387
+ pkgName: manifest.name,
388
+ input: input.padEnd(inputMaxLen + 5),
389
+ status: 'waiting'.padEnd(10)
390
+ }, {
391
+ barsize: 20,
392
+ linewrap: true
393
+ })
394
+ })
395
+ break
396
+ }
397
+ case 'progress': {
398
+ const {
399
+ path,
400
+ tags,
401
+ input,
402
+ event,
403
+ message
404
+ } = e.data
405
+ const bar = bars[`${input}:${path}`]
406
+ // eslint-disable-next-line ts/strict-boolean-expressions
407
+ if (!bar) return
408
+ const time = times[`${input}:${path}`]
409
+ bar.update(
410
+ {
411
+ start: 0,
412
+ resolve: 20,
413
+ end: 50
414
+ }[event ?? 'start'] ?? 0,
415
+ {
416
+ input: (
417
+ time
418
+ ? `${input}(x${time.toString().padStart(2, '0')})`
419
+ : input
420
+ ).padEnd(inputMaxLen + 5),
421
+ status: event?.padEnd(10),
422
+ message: `${tags?.join(', ')}: ${message}`
423
+ }
424
+ )
425
+ break
426
+ }
427
+ case 'watchChange': {
428
+ const {
429
+ path,
430
+ input
431
+ } = e.data
432
+ const key = `${input}:${path}`
433
+ const bar = bars[key]
434
+ // eslint-disable-next-line ts/strict-boolean-expressions
435
+ if (!bar) return
436
+ let time = times[key] ?? 1
437
+ if (!locks[key]) {
438
+ time += 1
439
+ times[key] = time
440
+ setTimeout(() => {
441
+ locks[key] = false
442
+ }, 100)
443
+ bar.update(0, {
444
+ input: `${input}(x${time.toString().padStart(2, '0')})`.padEnd(inputMaxLen + 5),
445
+ status: 'watching'.padEnd(10),
446
+ message: 'watching...'
447
+ })
448
+ }
449
+ locks[key] = true
450
+ break
451
+ }
452
+ case 'modulesAnalyze': {
453
+ const {
454
+ data: {
455
+ type,
456
+ modules: pkgModules
457
+ }
458
+ } = e
459
+ void refreshAnalyzer(
460
+ pkgCWD,
461
+ pkgModules.map(m => ({
462
+ ...m,
463
+ type,
464
+ filename: `${manifest.name}/${m.filename}`,
465
+ label: `${manifest.name}/${m.label}`
466
+ }))
467
+ )
468
+ break
469
+ }
470
+ case 'debug': {
471
+ // eslint-disable-next-line no-console,ts/no-unsafe-argument
472
+ console.log(...(Array.isArray(e.data) ? e.data : [e.data]))
473
+ break
474
+ }
475
+ default:
476
+ }
477
+ })
478
+ await new Promise<void>((resolve, reject) => {
479
+ let errorStr = `rollup build failed\n`
480
+ + `package name: ${manifest.name}\n`
481
+ + `cwd: ${pkgCWD}\n\n`
482
+ child.stderr?.on('data', (data) => {
483
+ errorStr += data
482
484
  })
483
- )
485
+ child.once('exit', (code) =>
486
+ code === 0
487
+ ? resolve()
488
+ : reject(new Error(errorStr)))
489
+ verbose && child.stdout?.pipe(process.stdout)
490
+ })
484
491
  }
485
492
 
486
493
  const commandFilters = IS_WORKSPACE ? commandFiltersOrEntries : undefined
@@ -499,12 +506,14 @@ command
499
506
  ])
500
507
  ]
501
508
  try {
502
- if (filters.length > 0) {
503
- const packages = await filterPackagesGraph(filters)
504
- await Promise.all(packages.map(buildPackage))
505
- } else {
506
- await buildPackage(await getSelectedProjectsGraph())
507
- }
509
+ const packages = (
510
+ filters.length > 0
511
+ ? await filterPackagesGraph(filters)
512
+ : [await getSelectedProjectsGraph()]
513
+ ).flatMap(({ value }) => Object.entries(value ?? {}))
514
+ await Promise.allSettled(
515
+ packages.map(async ([cwd, manifest]) => buildPackage([cwd, manifest], { resolveByJiekTemp }))
516
+ )
508
517
  } finally {
509
518
  multiBars.stop()
510
519
  // eslint-disable-next-line no-console
@@ -1,4 +1,4 @@
1
- import { getWD } from '#~/utils/getWD.ts'
1
+ import { getWD } from '#~/utils/getWD'
2
2
 
3
3
  const { notWorkspace } = getWD()
4
4