@plugjs/plug 0.0.15 → 0.0.17

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 (127) hide show
  1. package/dist/assert.cjs +18 -38
  2. package/dist/assert.cjs.map +1 -1
  3. package/dist/assert.d.ts +2 -16
  4. package/dist/assert.mjs +17 -32
  5. package/dist/assert.mjs.map +1 -1
  6. package/dist/async.cjs +2 -2
  7. package/dist/async.cjs.map +1 -1
  8. package/dist/async.d.ts +1 -1
  9. package/dist/async.mjs +2 -2
  10. package/dist/async.mjs.map +1 -1
  11. package/dist/build.cjs +20 -72
  12. package/dist/build.cjs.map +2 -2
  13. package/dist/build.d.ts +5 -3
  14. package/dist/build.mjs +22 -74
  15. package/dist/build.mjs.map +2 -2
  16. package/dist/failure.cjs +48 -0
  17. package/dist/failure.cjs.map +6 -0
  18. package/dist/failure.d.ts +13 -0
  19. package/dist/failure.mjs +22 -0
  20. package/dist/failure.mjs.map +6 -0
  21. package/dist/fork.cjs +21 -10
  22. package/dist/fork.cjs.map +1 -1
  23. package/dist/fork.d.ts +19 -1
  24. package/dist/fork.mjs +21 -11
  25. package/dist/fork.mjs.map +1 -1
  26. package/dist/helpers.cjs +8 -40
  27. package/dist/helpers.cjs.map +1 -1
  28. package/dist/helpers.d.ts +23 -3
  29. package/dist/helpers.mjs +8 -40
  30. package/dist/helpers.mjs.map +1 -1
  31. package/dist/index.cjs +16 -0
  32. package/dist/index.cjs.map +1 -1
  33. package/dist/index.d.ts +3 -1
  34. package/dist/index.mjs +7 -0
  35. package/dist/index.mjs.map +1 -1
  36. package/dist/log/logger.cjs +15 -12
  37. package/dist/log/logger.cjs.map +1 -1
  38. package/dist/log/logger.d.ts +2 -0
  39. package/dist/log/logger.mjs +15 -12
  40. package/dist/log/logger.mjs.map +1 -1
  41. package/dist/log/report.cjs +7 -4
  42. package/dist/log/report.cjs.map +1 -1
  43. package/dist/log/report.mjs +7 -4
  44. package/dist/log/report.mjs.map +1 -1
  45. package/dist/log.cjs +3 -0
  46. package/dist/log.cjs.map +1 -1
  47. package/dist/log.mjs +3 -0
  48. package/dist/log.mjs.map +1 -1
  49. package/dist/pipe.cjs +56 -14
  50. package/dist/pipe.cjs.map +1 -1
  51. package/dist/pipe.d.ts +42 -28
  52. package/dist/pipe.mjs +60 -13
  53. package/dist/pipe.mjs.map +1 -1
  54. package/dist/plugs/copy.cjs +1 -1
  55. package/dist/plugs/copy.cjs.map +1 -1
  56. package/dist/plugs/copy.mjs +1 -1
  57. package/dist/plugs/copy.mjs.map +1 -1
  58. package/dist/plugs/coverage.cjs +1 -2
  59. package/dist/plugs/coverage.cjs.map +1 -1
  60. package/dist/plugs/coverage.mjs +1 -2
  61. package/dist/plugs/coverage.mjs.map +1 -1
  62. package/dist/plugs/debug.cjs +6 -1
  63. package/dist/plugs/debug.cjs.map +1 -1
  64. package/dist/plugs/debug.d.ts +1 -1
  65. package/dist/plugs/debug.mjs +7 -2
  66. package/dist/plugs/debug.mjs.map +1 -1
  67. package/dist/plugs/esbuild.mjs.map +1 -1
  68. package/dist/plugs/eslint/runner.cjs +2 -1
  69. package/dist/plugs/eslint/runner.cjs.map +1 -1
  70. package/dist/plugs/eslint/runner.d.ts +1 -1
  71. package/dist/plugs/eslint/runner.mjs +3 -2
  72. package/dist/plugs/eslint/runner.mjs.map +1 -1
  73. package/dist/plugs/eslint.cjs +2 -2
  74. package/dist/plugs/eslint.cjs.map +1 -1
  75. package/dist/plugs/eslint.mjs +1 -1
  76. package/dist/plugs/exec.cjs +1 -1
  77. package/dist/plugs/exec.cjs.map +1 -1
  78. package/dist/plugs/exec.mjs +1 -1
  79. package/dist/plugs/exec.mjs.map +1 -1
  80. package/dist/plugs/mocha/runner.cjs +2 -2
  81. package/dist/plugs/mocha/runner.cjs.map +1 -1
  82. package/dist/plugs/mocha/runner.d.ts +1 -1
  83. package/dist/plugs/mocha/runner.mjs +2 -2
  84. package/dist/plugs/mocha/runner.mjs.map +1 -1
  85. package/dist/plugs/mocha.cjs +2 -2
  86. package/dist/plugs/mocha.cjs.map +1 -1
  87. package/dist/plugs/mocha.mjs +1 -1
  88. package/dist/plugs/rmf.mjs.map +1 -1
  89. package/dist/plugs/tsc/report.cjs.map +1 -1
  90. package/dist/plugs/tsc/report.mjs.map +1 -1
  91. package/dist/plugs/tsc/runner.cjs +3 -6
  92. package/dist/plugs/tsc/runner.cjs.map +2 -2
  93. package/dist/plugs/tsc/runner.mjs +4 -7
  94. package/dist/plugs/tsc/runner.mjs.map +2 -2
  95. package/dist/plugs/tsc.cjs +2 -2
  96. package/dist/plugs/tsc.cjs.map +1 -1
  97. package/dist/plugs/tsc.mjs +1 -1
  98. package/dist/types.d.ts +7 -8
  99. package/dist/utils/asyncfs.cjs.map +1 -1
  100. package/dist/utils/asyncfs.mjs.map +1 -1
  101. package/extra/cli.mjs +1 -1
  102. package/package.json +14 -13
  103. package/src/assert.ts +20 -34
  104. package/src/async.ts +3 -3
  105. package/src/failure.ts +31 -0
  106. package/src/fork.ts +43 -10
  107. package/src/helpers.ts +35 -56
  108. package/src/index.ts +4 -3
  109. package/src/log/logger.ts +22 -16
  110. package/src/log/report.ts +7 -3
  111. package/src/log.ts +4 -0
  112. package/src/pipe.ts +147 -44
  113. package/src/plugs/copy.ts +2 -2
  114. package/src/plugs/coverage/report.ts +1 -1
  115. package/src/plugs/coverage.ts +2 -3
  116. package/src/plugs/debug.ts +11 -4
  117. package/src/plugs/esbuild.ts +1 -1
  118. package/src/plugs/eslint/runner.ts +4 -3
  119. package/src/plugs/eslint.ts +1 -1
  120. package/src/plugs/exec.ts +1 -1
  121. package/src/plugs/mocha/runner.ts +3 -3
  122. package/src/plugs/mocha.ts +1 -1
  123. package/src/plugs/rmf.ts +1 -1
  124. package/src/plugs/tsc/runner.ts +5 -8
  125. package/src/plugs/tsc.ts +1 -1
  126. package/src/types.ts +8 -15
  127. package/src/utils/asyncfs.ts +1 -0
@@ -1,6 +1,7 @@
1
- import ts from 'typescript'; // TypeScript does NOT support ESM modules
1
+ import ts from 'typescript' // TypeScript does NOT support ESM modules
2
2
 
3
- import { failure } from '../../assert'
3
+ import { assertPromises } from '../../assert'
4
+ import { BuildFailure } from '../../failure'
4
5
  import { Files } from '../../files'
5
6
  import { $p, log } from '../../log'
6
7
  import { AbsolutePath, resolveFile } from '../../paths'
@@ -95,16 +96,12 @@ export default class Tsc implements Plug<Files> {
95
96
  promises.push(builder.write(fileName, code).then((file) => {
96
97
  log.trace('Written', $p(file))
97
98
  }).catch((error) => {
98
- context.log.error('Error writing to', fileName, error)
99
- throw failure() // no more logs!
99
+ throw new BuildFailure(`Error writing to ${fileName}`, [ error ])
100
100
  }))
101
101
  })
102
102
 
103
103
  /* Await for all files to be written and check */
104
- const settlements = await Promise.allSettled(promises)
105
- const failures = settlements
106
- .reduce((failures, s) => failures + s.status === 'rejected' ? 1 : 0, 0)
107
- if (failures) throw failure() // already logged above
104
+ await assertPromises(promises, 'Error writing files')
108
105
 
109
106
  /* Update report and fail on errors */
110
107
  updateReport(report, result.diagnostics, rootDir)
package/src/plugs/tsc.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { CompilerOptions } from 'typescript'
2
2
 
3
+ import { installForking } from '../fork'
3
4
  import { requireResolve } from '../paths'
4
- import { installForking } from '../pipe'
5
5
 
6
6
  declare module '../pipe' {
7
7
  export interface Pipe {
package/src/types.ts CHANGED
@@ -44,14 +44,14 @@ export interface Task<T extends Result = Result> {
44
44
  /** The absolute file name where this {@link Task} was defined */
45
45
  readonly buildFile: AbsolutePath,
46
46
  /** Invoke a task from (possibly) a different {@link Context} */
47
- call(state: State, taskName: string): Promise<T>
47
+ invoke(state: State, taskName: string): Promise<T>
48
48
  }
49
49
 
50
50
  /**
51
51
  * The {@link TaskResult} type identifies _what_ can be returned by a
52
52
  * {@link TaskDef | _task definition_}.
53
53
  */
54
- export type TaskResult = Pipe | Promise<undefined> | Files | void | undefined
54
+ export type TaskResult = Pipe | Files | void | undefined
55
55
 
56
56
  /** The {@link TaskDef} type identifies the _definition_ of a task. */
57
57
  export type TaskDef<R extends TaskResult = TaskResult> = () => R | Promise<R>
@@ -70,9 +70,7 @@ export type Tasks<D extends BuildDef = BuildDef> = {
70
70
  readonly [ k in string & keyof D as D[k] extends TaskDef | Task ? k : never ] :
71
71
  D[k] extends TaskDef<infer R> ?
72
72
  R extends void | undefined ? Task<undefined> :
73
- R extends Promise<undefined> ? Task<undefined> :
74
- R extends Pipe ? Task<Files> :
75
- R extends Files ? Task<Files> :
73
+ R extends Pipe | Files ? Task<Files> :
76
74
  never :
77
75
  D[k] extends Task ? D[k] :
78
76
  never
@@ -83,9 +81,8 @@ export type Tasks<D extends BuildDef = BuildDef> = {
83
81
  * ========================================================================== */
84
82
 
85
83
  /**
86
- * The {@link BuildDef} interface describes the _definition_ of a
87
- * {@link Context}, that is the object passed to {@link build} to produce
88
- * a {@link Build}.
84
+ * The {@link BuildDef} interface describes the _definition_ of a {@link Build},
85
+ * all its properties and tasks.
89
86
  */
90
87
  export interface BuildDef {
91
88
  [ k : string ] : string | TaskDef | Task
@@ -100,11 +97,11 @@ export type ThisBuild<D extends BuildDef> = {
100
97
  k extends string ?
101
98
  D[k] extends TaskDef<infer R> ?
102
99
  R extends Promise<undefined> | void | undefined ? () => Promise<undefined> :
103
- R extends Pipe | Files ? () => Pipe & Promise<Files> :
100
+ R extends Pipe | Files ? () => Pipe :
104
101
  never :
105
102
  D[k] extends Task<infer R> ?
106
103
  R extends undefined ? () => Promise<undefined> :
107
- R extends Files ? () => Pipe & Promise<Files> :
104
+ R extends Files ? () => Pipe :
108
105
  never :
109
106
  D[k] extends string ?
110
107
  string :
@@ -116,8 +113,4 @@ export type ThisBuild<D extends BuildDef> = {
116
113
  * The {@link Build} type represents the collection of {@link Task}s
117
114
  * and _properties_ compiled from a {@link BuildDef | build definition}.
118
115
  */
119
- export type Build<
120
- D extends BuildDef = BuildDef,
121
- T extends Tasks<D> = Tasks<D>,
122
- P extends Props<D> = Props<D>,
123
- > = T & P
116
+ export type Build<D extends BuildDef = BuildDef> = Tasks<D> & Props<D>
@@ -1,4 +1,5 @@
1
1
  import { constants } from 'node:fs'
2
+
2
3
  import fsp from 'node:fs/promises'
3
4
 
4
5
  type FsPromises = typeof fsp