@plugjs/build 0.2.0 → 0.2.2

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.
@@ -8,7 +8,11 @@ var tasks = build({
8
8
  async bootstrap_resources() {
9
9
  const pipe = find("**/*", "**/.*", { directory: "@../resources" });
10
10
  const sources = await pipe;
11
- const targets = await pipe.copy(".", { overwrite });
11
+ const targets = await pipe.copy(".", {
12
+ // it seems NPM has _some_ problems with some dotfiles (e.g. .gitignore)
13
+ rename: (relative) => relative.replaceAll(/(^|\/)__dot_/g, "$1."),
14
+ overwrite
15
+ });
12
16
  log("Bootstrapped", targets.length, "of", sources.length, "files:");
13
17
  for (const file of targets.absolutePaths())
14
18
  log(` ${$p(file)}`);
@@ -43,7 +47,7 @@ var tasks = build({
43
47
  [buildJson.name]: `^${buildJson.version}`
44
48
  };
45
49
  log(`Writing ${$p(targetPackage)}`);
46
- await fs.writeFile(targetPackage, JSON.stringify(targetJson, null, 2), "utf-8");
50
+ await fs.writeFile(targetPackage, JSON.stringify(targetJson, null, 2) + "\n", "utf-8");
47
51
  },
48
52
  /** Bootstrap the project */
49
53
  async bootstrap() {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/bootstrap.mts"],
4
- "mappings": ";;;AAGA,SAAS,OAAO,MAAM,IAAI,QAAQ,KAAK,eAAe;AACtD,SAAS,UAAU;AAEnB,IAAM,QAAQ,MAAM;AAAA;AAAA,EAElB,MAAM,sBAAqC;AACzC,UAAM,OAAO,KAAK,QAAQ,SAAS,EAAE,WAAW,gBAAgB,CAAC;AACjE,UAAM,UAAU,MAAM;AACtB,UAAM,UAAU,MAAM,KAAK,KAAK,KAAK,EAAE,UAAU,CAAC;AAElD,QAAI,gBAAgB,QAAQ,QAAQ,MAAM,QAAQ,QAAQ,QAAQ;AAClE,eAAW,QAAQ,QAAQ,cAAc;AAAG,UAAI,OAAO,GAAG,IAAI,GAAG;AAAA,EACnE;AAAA;AAAA,EAGA,MAAM,oBAAmC;AAEvC,UAAM,eAAe,QAAQ,kBAAkB;AAC/C,QAAI,WAAW,GAAG,YAAY,GAAG;AACjC,UAAM,YAAY,MAAM,GAAG,SAAS,cAAc,OAAO;AACzD,UAAM,YAAY,KAAK,MAAM,SAAS;AAGtC,UAAM,aAAkC,CAAC;AACzC,UAAM,gBAAgB,QAAQ,gBAAgB;AAC9C,QAAI,OAAO,aAAa,GAAG;AACzB,UAAI,WAAW,GAAG,aAAa,GAAG;AAClC,YAAM,aAAa,MAAM,GAAG,SAAS,eAAe,OAAO;AAC3D,aAAO,OAAO,YAAY,KAAK,MAAM,UAAU,CAAC;AAAA,IAClD;AAGA,QAAI,YAAY,GAAG,aAAa,GAAG;AAGnC,eAAW,UAAU;AAAA,MACnB,OAAO;AAAA,MACP,UAAU;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,GAAG,WAAW;AAAA,IAChB;AAGA,UAAM,cAAc,oBAAI,IAAI,CAAE,GAAI,WAAW,SAAS,CAAC,GAAI,QAAQ,SAAS,MAAO,CAAC;AACpF,eAAW,QAAQ,CAAE,GAAG,WAAY,EAAE,KAAK;AAG3C,eAAW,kBAAkB;AAAA,MAC3B,GAAG,WAAW;AAAA,MACd,CAAC,UAAU,IAAI,GAAG,IAAI,UAAU;AAAA,IAClC;AAGA,QAAI,WAAW,GAAG,aAAa,GAAG;AAClC,UAAM,GAAG,UAAU,eAAe,KAAK,UAAU,YAAY,MAAM,CAAC,GAAG,OAAO;AAAA,EAChF;AAAA;AAAA,EAGA,MAAM,YAA2B;AAC/B,QAAI,kCAAkC,GAAG,QAAQ,GAAG,CAAC,GAAG;AACxD,UAAM,KAAK,oBAAoB;AAC/B,UAAM,KAAK,kBAAkB;AAAA,EAC/B;AACF,CAAC;AAED,IAAM,YAAY,QAAQ,KAAK,CAAC,MAAM,gBAAgB,cAAc;AACpE,MAAM,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,IAAI,KAAK;",
4
+ "mappings": ";;;AAGA,SAAS,OAAO,MAAM,IAAI,QAAQ,KAAK,eAAe;AACtD,SAAS,UAAU;AAEnB,IAAM,QAAQ,MAAM;AAAA;AAAA,EAElB,MAAM,sBAAqC;AACzC,UAAM,OAAO,KAAK,QAAQ,SAAS,EAAE,WAAW,gBAAgB,CAAC;AACjE,UAAM,UAAU,MAAM;AACtB,UAAM,UAAU,MAAM,KAAK,KAAK,KAAK;AAAA;AAAA,MAEnC,QAAQ,CAAC,aAAa,SAAS,WAAW,iBAAiB,KAAK;AAAA,MAChE;AAAA,IACF,CAAC;AAED,QAAI,gBAAgB,QAAQ,QAAQ,MAAM,QAAQ,QAAQ,QAAQ;AAClE,eAAW,QAAQ,QAAQ,cAAc;AAAG,UAAI,OAAO,GAAG,IAAI,GAAG;AAAA,EACnE;AAAA;AAAA,EAGA,MAAM,oBAAmC;AAEvC,UAAM,eAAe,QAAQ,kBAAkB;AAC/C,QAAI,WAAW,GAAG,YAAY,GAAG;AACjC,UAAM,YAAY,MAAM,GAAG,SAAS,cAAc,OAAO;AACzD,UAAM,YAAY,KAAK,MAAM,SAAS;AAGtC,UAAM,aAAkC,CAAC;AACzC,UAAM,gBAAgB,QAAQ,gBAAgB;AAC9C,QAAI,OAAO,aAAa,GAAG;AACzB,UAAI,WAAW,GAAG,aAAa,GAAG;AAClC,YAAM,aAAa,MAAM,GAAG,SAAS,eAAe,OAAO;AAC3D,aAAO,OAAO,YAAY,KAAK,MAAM,UAAU,CAAC;AAAA,IAClD;AAGA,QAAI,YAAY,GAAG,aAAa,GAAG;AAGnC,eAAW,UAAU;AAAA,MACnB,OAAO;AAAA,MACP,UAAU;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,GAAG,WAAW;AAAA,IAChB;AAGA,UAAM,cAAc,oBAAI,IAAI,CAAE,GAAI,WAAW,SAAS,CAAC,GAAI,QAAQ,SAAS,MAAO,CAAC;AACpF,eAAW,QAAQ,CAAE,GAAG,WAAY,EAAE,KAAK;AAG3C,eAAW,kBAAkB;AAAA,MAC3B,GAAG,WAAW;AAAA,MACd,CAAC,UAAU,IAAI,GAAG,IAAI,UAAU;AAAA,IAClC;AAGA,QAAI,WAAW,GAAG,aAAa,GAAG;AAClC,UAAM,GAAG,UAAU,eAAe,KAAK,UAAU,YAAY,MAAM,CAAC,IAAI,MAAM,OAAO;AAAA,EACvF;AAAA;AAAA,EAGA,MAAM,YAA2B;AAC/B,QAAI,kCAAkC,GAAG,QAAQ,GAAG,CAAC,GAAG;AACxD,UAAM,KAAK,oBAAoB;AAC/B,UAAM,KAAK,kBAAkB;AAAA,EAC/B;AACF,CAAC;AAED,IAAM,YAAY,QAAQ,KAAK,CAAC,MAAM,gBAAgB,cAAc;AACpE,MAAM,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,IAAI,KAAK;",
5
5
  "names": []
6
6
  }
package/dist/index.cjs CHANGED
@@ -21,6 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  // index.ts
22
22
  var src_exports = {};
23
23
  __export(src_exports, {
24
+ banner: () => banner,
24
25
  tasks: () => tasks
25
26
  });
26
27
  module.exports = __toCommonJS(src_exports);
@@ -61,7 +62,7 @@ function tasks(options = {}) {
61
62
  optimalFileCoverage: _optimalFileCoverage = void 0,
62
63
  esbuildOptions: _esbuildOptions = {}
63
64
  } = options;
64
- const banner = _banners ? emitBanner : (...args) => void 0;
65
+ const emitBanner = _banners ? banner : (...args) => void 0;
65
66
  const esbuildMergedOptions = Object.assign({}, esbuildDefaults, _esbuildOptions);
66
67
  return (0, import_plug.build)({
67
68
  /** The directory for the original sources (default: `src`) */
@@ -110,8 +111,8 @@ function tasks(options = {}) {
110
111
  _find_types() {
111
112
  return (0, import_plug.find)("**/*.d.ts", { directory: this.sourceDir });
112
113
  },
113
- /** Find all types definition files within sources */
114
- _find_extras() {
114
+ /** Find all extra types definition files from `extraTypesDir` */
115
+ _find_extra_types() {
115
116
  if (!(0, import_plug.isDirectory)(this.extraTypesDir))
116
117
  return (0, import_plug.noop)();
117
118
  return (0, import_plug.find)("**/*.d.ts", { directory: this.extraTypesDir });
@@ -124,6 +125,15 @@ function tasks(options = {}) {
124
125
  _find_tests() {
125
126
  return (0, import_plug.find)(this.testGlob, { directory: this.testDir, ignore: "**/*.d.ts" });
126
127
  },
128
+ /** Find all source files to lint */
129
+ _find_lint_sources() {
130
+ return (0, import_plug.merge)([
131
+ this._find_sources(),
132
+ this._find_tests(),
133
+ this._find_types(),
134
+ this._find_extra_types()
135
+ ]);
136
+ },
127
137
  /* ====================================================================== *
128
138
  * TRANSPILE *
129
139
  * ====================================================================== */
@@ -150,7 +160,7 @@ function tasks(options = {}) {
150
160
  return (0, import_plug.merge)([
151
161
  this._find_sources(),
152
162
  this._find_types(),
153
- this._find_extras()
163
+ this._find_extra_types()
154
164
  ]).tsc("tsconfig.json", {
155
165
  noEmit: false,
156
166
  rootDir: this.sourceDir,
@@ -160,7 +170,7 @@ function tasks(options = {}) {
160
170
  });
161
171
  },
162
172
  /** Copy all resources coming alongside our sources */
163
- transpile_resources() {
173
+ copy_resources() {
164
174
  return (0, import_plug.merge)([
165
175
  this._find_resources(),
166
176
  this._find_types()
@@ -168,34 +178,35 @@ function tasks(options = {}) {
168
178
  },
169
179
  /** Transpile all source code */
170
180
  async transpile() {
171
- banner("Transpiling source files");
181
+ emitBanner("Transpiling source files");
172
182
  if ((0, import_plug.isDirectory)(this.destDir))
173
183
  await (0, import_plug.rmrf)(this.destDir);
174
- return (0, import_plug.merge)([
184
+ const result = await (0, import_plug.merge)([
175
185
  _cjsTranspile ? this.transpile_cjs() : (0, import_plug.noop)(),
176
186
  _esmTranspile ? this.transpile_esm() : (0, import_plug.noop)(),
177
187
  this.transpile_types(),
178
- this.transpile_resources()
188
+ this.copy_resources()
179
189
  ]);
190
+ return result;
180
191
  },
181
192
  /* ====================================================================== *
182
- * TEST, COVERAGE & LINTING *
193
+ * TEST & COVERAGE *
183
194
  * ====================================================================== */
184
- /** Run test and emit coverage data */
195
+ /** Run tests */
185
196
  async test() {
186
- banner("Running tests");
197
+ emitBanner("Running tests");
187
198
  if (_coverage && (0, import_plug.isDirectory)(this.coverageDataDir))
188
199
  await (0, import_plug.rmrf)(this.coverageDataDir);
189
200
  await this._find_tests().jasmine({ coverageDir: _coverage ? this.coverageDataDir : void 0 });
190
201
  },
191
- /** Run tests (always) and generate a coverage report */
202
+ /** Ensure tests have run and generate a coverage report */
192
203
  async coverage() {
193
- let files;
204
+ let coveragePipe;
194
205
  try {
195
206
  await this.test();
196
207
  } finally {
197
- banner("Preparing coverage report");
198
- files = await this._find_sources().coverage(this.coverageDataDir, {
208
+ emitBanner("Preparing coverage report");
209
+ coveragePipe = this._find_sources().coverage(this.coverageDataDir, {
199
210
  reportDir: this.coverageDir,
200
211
  minimumCoverage: _minimumCoverage,
201
212
  minimumFileCoverage: _minimumFileCoverage,
@@ -203,17 +214,15 @@ function tasks(options = {}) {
203
214
  optimalFileCoverage: _optimalFileCoverage
204
215
  });
205
216
  }
206
- return files;
217
+ return coveragePipe;
207
218
  },
208
- /** Run test and emit coverage data */
219
+ /* ====================================================================== *
220
+ * LINTING *
221
+ * ====================================================================== */
222
+ /** Lint all sources */
209
223
  async lint() {
210
- banner("Linting sources");
211
- await (0, import_plug.merge)([
212
- this._find_sources(),
213
- this._find_tests(),
214
- this._find_types(),
215
- this._find_extras()
216
- ]).eslint();
224
+ emitBanner("Linting sources");
225
+ await this._find_lint_sources().eslint();
217
226
  },
218
227
  /* ====================================================================== *
219
228
  * PACKAGE.JSON EXPORTS *
@@ -221,7 +230,7 @@ function tasks(options = {}) {
221
230
  /** Inject `exports` into the `package.json` file */
222
231
  async exports() {
223
232
  const files = await this.transpile();
224
- banner('Updating exports in "package.json"');
233
+ emitBanner('Updating exports in "package.json"');
225
234
  return (0, import_plug.merge)([files]).filter(this.exportsGlob, { directory: this.destDir, ignore: "**/*.map" }).exports({
226
235
  cjsExtension: this.cjsExtension,
227
236
  esmExtension: this.esmExtension,
@@ -230,11 +239,11 @@ function tasks(options = {}) {
230
239
  });
231
240
  },
232
241
  /* ====================================================================== *
233
- * DEFAULT: DO EVERYTHING *
242
+ * ALL: DO EVERYTHING *
234
243
  * ====================================================================== */
235
244
  /* coverage ignore next */
236
- /** Build everything */
237
- async default() {
245
+ /** Build everything. */
246
+ async all() {
238
247
  if (_parallelize) {
239
248
  await Promise.all([
240
249
  this.transpile(),
@@ -247,11 +256,23 @@ function tasks(options = {}) {
247
256
  await this.coverage();
248
257
  await this.lint();
249
258
  }
250
- await this.exports();
259
+ },
260
+ /* ====================================================================== *
261
+ * DEFAULT: DO EVERYTHING *
262
+ * ====================================================================== */
263
+ /* coverage ignore next */
264
+ /**
265
+ * Default task (simply invokes `this._all()`).
266
+ *
267
+ * Override this and invoke `this._all()` to inject tasks _before_ or
268
+ * _after_ the normal build execution.
269
+ */
270
+ async default() {
271
+ await this.all();
251
272
  }
252
273
  });
253
274
  }
254
- function emitBanner(message) {
275
+ function banner(message) {
255
276
  import_plug.log.notice([
256
277
  "",
257
278
  (0, import_plug.$gry)(`\u2554${"".padStart(60, "\u2550")}\u2557`),
@@ -262,6 +283,7 @@ function emitBanner(message) {
262
283
  }
263
284
  // Annotate the CommonJS export names for ESM import in node:
264
285
  0 && (module.exports = {
286
+ banner,
265
287
  tasks
266
288
  });
267
289
  //# sourceMappingURL=index.cjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
package/dist/index.d.ts CHANGED
@@ -97,12 +97,14 @@ export declare function tasks(options?: TasksOptions): import("@plugjs/plug").Bu
97
97
  _find_sources(): Pipe;
98
98
  /** Find all types definition files within sources */
99
99
  _find_types(): Pipe;
100
- /** Find all types definition files within sources */
101
- _find_extras(): Pipe;
100
+ /** Find all extra types definition files from `extraTypesDir` */
101
+ _find_extra_types(): Pipe;
102
102
  /** Find all resource files (non-typescript files) within sources */
103
103
  _find_resources(): Pipe;
104
104
  /** Find all test source files */
105
105
  _find_tests(): Pipe;
106
+ /** Find all source files to lint */
107
+ _find_lint_sources(): Pipe;
106
108
  /** Transpile to CJS */
107
109
  transpile_cjs(): Pipe;
108
110
  /** Transpile to ESM */
@@ -110,17 +112,25 @@ export declare function tasks(options?: TasksOptions): import("@plugjs/plug").Bu
110
112
  /** Generate all .d.ts files */
111
113
  transpile_types(): Pipe;
112
114
  /** Copy all resources coming alongside our sources */
113
- transpile_resources(): Pipe;
115
+ copy_resources(): Pipe;
114
116
  /** Transpile all source code */
115
117
  transpile(): Promise<Pipe>;
116
- /** Run test and emit coverage data */
118
+ /** Run tests */
117
119
  test(): Promise<void>;
118
- /** Run tests (always) and generate a coverage report */
120
+ /** Ensure tests have run and generate a coverage report */
119
121
  coverage(): Promise<Pipe>;
120
- /** Run test and emit coverage data */
122
+ /** Lint all sources */
121
123
  lint(): Promise<void>;
122
124
  /** Inject `exports` into the `package.json` file */
123
125
  exports(): Promise<Pipe>;
124
- /** Build everything */
126
+ /** Build everything. */
127
+ all(): Promise<void>;
128
+ /**
129
+ * Default task (simply invokes `this._all()`).
130
+ *
131
+ * Override this and invoke `this._all()` to inject tasks _before_ or
132
+ * _after_ the normal build execution.
133
+ */
125
134
  default(): Promise<void>;
126
135
  }>;
136
+ export declare function banner(message: string): void;
package/dist/index.mjs CHANGED
@@ -47,7 +47,7 @@ function tasks(options = {}) {
47
47
  optimalFileCoverage: _optimalFileCoverage = void 0,
48
48
  esbuildOptions: _esbuildOptions = {}
49
49
  } = options;
50
- const banner = _banners ? emitBanner : (...args) => void 0;
50
+ const emitBanner = _banners ? banner : (...args) => void 0;
51
51
  const esbuildMergedOptions = Object.assign({}, esbuildDefaults, _esbuildOptions);
52
52
  return build({
53
53
  /** The directory for the original sources (default: `src`) */
@@ -96,8 +96,8 @@ function tasks(options = {}) {
96
96
  _find_types() {
97
97
  return find("**/*.d.ts", { directory: this.sourceDir });
98
98
  },
99
- /** Find all types definition files within sources */
100
- _find_extras() {
99
+ /** Find all extra types definition files from `extraTypesDir` */
100
+ _find_extra_types() {
101
101
  if (!isDirectory(this.extraTypesDir))
102
102
  return noop();
103
103
  return find("**/*.d.ts", { directory: this.extraTypesDir });
@@ -110,6 +110,15 @@ function tasks(options = {}) {
110
110
  _find_tests() {
111
111
  return find(this.testGlob, { directory: this.testDir, ignore: "**/*.d.ts" });
112
112
  },
113
+ /** Find all source files to lint */
114
+ _find_lint_sources() {
115
+ return merge([
116
+ this._find_sources(),
117
+ this._find_tests(),
118
+ this._find_types(),
119
+ this._find_extra_types()
120
+ ]);
121
+ },
113
122
  /* ====================================================================== *
114
123
  * TRANSPILE *
115
124
  * ====================================================================== */
@@ -136,7 +145,7 @@ function tasks(options = {}) {
136
145
  return merge([
137
146
  this._find_sources(),
138
147
  this._find_types(),
139
- this._find_extras()
148
+ this._find_extra_types()
140
149
  ]).tsc("tsconfig.json", {
141
150
  noEmit: false,
142
151
  rootDir: this.sourceDir,
@@ -146,7 +155,7 @@ function tasks(options = {}) {
146
155
  });
147
156
  },
148
157
  /** Copy all resources coming alongside our sources */
149
- transpile_resources() {
158
+ copy_resources() {
150
159
  return merge([
151
160
  this._find_resources(),
152
161
  this._find_types()
@@ -154,34 +163,35 @@ function tasks(options = {}) {
154
163
  },
155
164
  /** Transpile all source code */
156
165
  async transpile() {
157
- banner("Transpiling source files");
166
+ emitBanner("Transpiling source files");
158
167
  if (isDirectory(this.destDir))
159
168
  await rmrf(this.destDir);
160
- return merge([
169
+ const result = await merge([
161
170
  _cjsTranspile ? this.transpile_cjs() : noop(),
162
171
  _esmTranspile ? this.transpile_esm() : noop(),
163
172
  this.transpile_types(),
164
- this.transpile_resources()
173
+ this.copy_resources()
165
174
  ]);
175
+ return result;
166
176
  },
167
177
  /* ====================================================================== *
168
- * TEST, COVERAGE & LINTING *
178
+ * TEST & COVERAGE *
169
179
  * ====================================================================== */
170
- /** Run test and emit coverage data */
180
+ /** Run tests */
171
181
  async test() {
172
- banner("Running tests");
182
+ emitBanner("Running tests");
173
183
  if (_coverage && isDirectory(this.coverageDataDir))
174
184
  await rmrf(this.coverageDataDir);
175
185
  await this._find_tests().jasmine({ coverageDir: _coverage ? this.coverageDataDir : void 0 });
176
186
  },
177
- /** Run tests (always) and generate a coverage report */
187
+ /** Ensure tests have run and generate a coverage report */
178
188
  async coverage() {
179
- let files;
189
+ let coveragePipe;
180
190
  try {
181
191
  await this.test();
182
192
  } finally {
183
- banner("Preparing coverage report");
184
- files = await this._find_sources().coverage(this.coverageDataDir, {
193
+ emitBanner("Preparing coverage report");
194
+ coveragePipe = this._find_sources().coverage(this.coverageDataDir, {
185
195
  reportDir: this.coverageDir,
186
196
  minimumCoverage: _minimumCoverage,
187
197
  minimumFileCoverage: _minimumFileCoverage,
@@ -189,17 +199,15 @@ function tasks(options = {}) {
189
199
  optimalFileCoverage: _optimalFileCoverage
190
200
  });
191
201
  }
192
- return files;
202
+ return coveragePipe;
193
203
  },
194
- /** Run test and emit coverage data */
204
+ /* ====================================================================== *
205
+ * LINTING *
206
+ * ====================================================================== */
207
+ /** Lint all sources */
195
208
  async lint() {
196
- banner("Linting sources");
197
- await merge([
198
- this._find_sources(),
199
- this._find_tests(),
200
- this._find_types(),
201
- this._find_extras()
202
- ]).eslint();
209
+ emitBanner("Linting sources");
210
+ await this._find_lint_sources().eslint();
203
211
  },
204
212
  /* ====================================================================== *
205
213
  * PACKAGE.JSON EXPORTS *
@@ -207,7 +215,7 @@ function tasks(options = {}) {
207
215
  /** Inject `exports` into the `package.json` file */
208
216
  async exports() {
209
217
  const files = await this.transpile();
210
- banner('Updating exports in "package.json"');
218
+ emitBanner('Updating exports in "package.json"');
211
219
  return merge([files]).filter(this.exportsGlob, { directory: this.destDir, ignore: "**/*.map" }).exports({
212
220
  cjsExtension: this.cjsExtension,
213
221
  esmExtension: this.esmExtension,
@@ -216,11 +224,11 @@ function tasks(options = {}) {
216
224
  });
217
225
  },
218
226
  /* ====================================================================== *
219
- * DEFAULT: DO EVERYTHING *
227
+ * ALL: DO EVERYTHING *
220
228
  * ====================================================================== */
221
229
  /* coverage ignore next */
222
- /** Build everything */
223
- async default() {
230
+ /** Build everything. */
231
+ async all() {
224
232
  if (_parallelize) {
225
233
  await Promise.all([
226
234
  this.transpile(),
@@ -233,11 +241,23 @@ function tasks(options = {}) {
233
241
  await this.coverage();
234
242
  await this.lint();
235
243
  }
236
- await this.exports();
244
+ },
245
+ /* ====================================================================== *
246
+ * DEFAULT: DO EVERYTHING *
247
+ * ====================================================================== */
248
+ /* coverage ignore next */
249
+ /**
250
+ * Default task (simply invokes `this._all()`).
251
+ *
252
+ * Override this and invoke `this._all()` to inject tasks _before_ or
253
+ * _after_ the normal build execution.
254
+ */
255
+ async default() {
256
+ await this.all();
237
257
  }
238
258
  });
239
259
  }
240
- function emitBanner(message) {
260
+ function banner(message) {
241
261
  log.notice([
242
262
  "",
243
263
  $gry(`\u2554${"".padStart(60, "\u2550")}\u2557`),
@@ -247,6 +267,7 @@ function emitBanner(message) {
247
267
  ].join("\n"));
248
268
  }
249
269
  export {
270
+ banner,
250
271
  tasks
251
272
  };
252
273
  //# sourceMappingURL=index.mjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "mappings": "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",
4
+ "mappings": ";AAAA,OAAO;AACP,OAAO;AACP,OAAO;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAAa;AAAA,EAAK;AAAA,EAClB;AAAA,EACA;AAAA,OACK;AACP,OAAO;AAIP,cAAc;AAGd,IAAM,kBAAkC;AAAA,EACtC,UAAU;AAAA,EACV,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,SAAS,CAAE,cAAc,CAAE;AAC7B;AAoFO,SAAS,MAAM,UAAwB,CAAC,GAAG;AAChD,QAAM;AAAA,IACJ,WAAW,aAAa;AAAA,IACxB,SAAS,WAAW;AAAA,IACpB,SAAS,WAAW;AAAA,IACpB,aAAa,eAAe;AAAA,IAC5B,iBAAiB,mBAAmB;AAAA,IACpC,eAAe,iBAAiB;AAAA,IAEhC,aAAa,eAAe;AAAA,IAC5B,mBAAmB,qBAAqB;AAAA,IAExC,cAAc,gBAAgB;AAAA,IAC9B,cAAc,gBAAgB;AAAA,IAC9B,cAAc,gBAAgB;AAAA,IAC9B,cAAc,gBAAgB;AAAA,IAE9B,aAAa,eAAe;AAAA,IAC5B,SAAS,WAAW,CAAC;AAAA,IACrB,UAAU,YAAY;AAAA,IACtB,aAAa,eAAe;AAAA,IAC5B,UAAU,YAAY;AAAA,IACtB,iBAAiB,mBAAmB;AAAA,IACpC,qBAAqB,uBAAuB;AAAA,IAC5C,iBAAiB,mBAAmB;AAAA,IACpC,qBAAqB,uBAAuB;AAAA,IAE5C,gBAAgB,kBAAkB,CAAC;AAAA,EACrC,IAAI;AAGJ,QAAM,aAAa,WAAW,SAAS,IAAI,SAAc;AAGzD,QAAM,uBAAuB,OAAO,OAAO,CAAC,GAAG,iBAAiB,eAAe;AAE/E,SAAO,MAAM;AAAA;AAAA,IAEX,WAAW;AAAA;AAAA,IAEX,SAAS;AAAA;AAAA,IAET,SAAS;AAAA;AAAA,IAET,aAAa;AAAA;AAAA,IAEb,iBAAiB;AAAA;AAAA,IAEjB,eAAe;AAAA;AAAA,IAEf,aAAa;AAAA;AAAA,IAEb,mBAAmB;AAAA;AAAA,IAEnB,cAAc;AAAA;AAAA,IAEd,cAAc;AAAA;AAAA,IAEd,UAAU;AAAA;AAAA,IAEV,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,IAOb,oBAA0B;AACxB,aAAO,KAAK,eAAe,EAAE,WAAW,KAAK,WAAW,QAAQ,YAAY,CAAC;AAAA,IAC/E;AAAA;AAAA,IAGA,oBAA0B;AACxB,aAAO,KAAK,eAAe,EAAE,WAAW,KAAK,WAAW,QAAQ,YAAY,CAAC;AAAA,IAC/E;AAAA;AAAA,IAGA,gBAAsB;AACpB,aAAO,MAAM;AAAA,QACX,gBAAgB,KAAK,kBAAkB,IAAI,KAAK;AAAA,QAChD,gBAAgB,KAAK,kBAAkB,IAAI,KAAK;AAAA,MAClD,CAAC;AAAA,IACH;AAAA;AAAA,IAGA,cAAoB;AAClB,aAAO,KAAK,aAAa,EAAE,WAAW,KAAK,UAAU,CAAC;AAAA,IACxD;AAAA;AAAA,IAGA,oBAA0B;AACxB,UAAI,CAAE,YAAY,KAAK,aAAa;AAAG,eAAO,KAAK;AACnD,aAAO,KAAK,aAAa,EAAE,WAAW,KAAK,cAAc,CAAC;AAAA,IAC5D;AAAA;AAAA,IAGA,kBAAwB;AACtB,aAAO,KAAK,QAAQ,EAAE,WAAW,KAAK,WAAW,QAAQ,iBAAiB,CAAC;AAAA,IAC7E;AAAA;AAAA,IAGA,cAAoB;AAClB,aAAO,KAAK,KAAK,UAAU,EAAE,WAAW,KAAK,SAAS,QAAQ,YAAY,CAAC;AAAA,IAC7E;AAAA;AAAA,IAGA,qBAA2B;AACzB,aAAO,MAAM;AAAA,QACX,KAAK,cAAc;AAAA,QACnB,KAAK,YAAY;AAAA,QACjB,KAAK,YAAY;AAAA,QACjB,KAAK,kBAAkB;AAAA,MACzB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,gBAAsB;AACpB,aAAO,KAAK,kBAAkB,EACzB,QAAQ;AAAA,QACP,GAAG;AAAA,QACH,QAAQ;AAAA,QACR,QAAQ,KAAK;AAAA,QACb,cAAc,EAAE,OAAO,KAAK,aAAa;AAAA,MAC3C,CAAC;AAAA,IACP;AAAA;AAAA,IAGA,gBAAsB;AACpB,aAAO,KAAK,kBAAkB,EACzB,QAAQ;AAAA,QACP,GAAG;AAAA,QACH,QAAQ;AAAA,QACR,QAAQ,KAAK;AAAA,QACb,cAAc,EAAE,OAAO,KAAK,aAAa;AAAA,MAC3C,CAAC;AAAA,IACP;AAAA;AAAA,IAGA,kBAAwB;AACtB,aAAO,MAAM;AAAA,QACX,KAAK,cAAc;AAAA,QACnB,KAAK,YAAY;AAAA,QACjB,KAAK,kBAAkB;AAAA,MACzB,CAAC,EAAE,IAAI,iBAAiB;AAAA,QACtB,QAAQ;AAAA,QACR,SAAS,KAAK;AAAA,QACd,aAAa;AAAA,QACb,qBAAqB;AAAA,QACrB,QAAQ,KAAK;AAAA,MACf,CAAC;AAAA,IACH;AAAA;AAAA,IAGA,iBAAuB;AACrB,aAAO,MAAM;AAAA,QACX,KAAK,gBAAgB;AAAA,QACrB,KAAK,YAAY;AAAA,MACnB,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA,IACtB;AAAA;AAAA,IAGA,MAAM,YAA2B;AAC/B,iBAAW,0BAA0B;AAErC,UAAI,YAAY,KAAK,OAAO;AAAG,cAAM,KAAK,KAAK,OAAO;AAEtD,YAAM,SAAS,MAAM,MAAM;AAAA,QACzB,gBAAgB,KAAK,cAAc,IAAI,KAAK;AAAA,QAC5C,gBAAgB,KAAK,cAAc,IAAI,KAAK;AAAA,QAC5C,KAAK,gBAAgB;AAAA,QACrB,KAAK,eAAe;AAAA,MACtB,CAAC;AAED,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAsB;AAC1B,iBAAW,eAAe;AAE1B,UAAI,aAAa,YAAY,KAAK,eAAe;AAAG,cAAM,KAAK,KAAK,eAAe;AAEnF,YAAM,KACD,YAAY,EACZ,QAAQ,EAAE,aAAa,YAAY,KAAK,kBAAkB,OAAU,CAAC;AAAA,IAC5E;AAAA;AAAA,IAGA,MAAM,WAA0B;AAC9B,UAAI;AAGJ,UAAI;AACF,cAAM,KAAK,KAAK;AAAA,MAClB,UAAE;AACA,mBAAW,2BAA2B;AAEtC,uBAAe,KAAK,cAAc,EAC7B,SAAS,KAAK,iBAAiB;AAAA,UAC9B,WAAW,KAAK;AAAA,UAChB,iBAAiB;AAAA,UACjB,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,qBAAqB;AAAA,QACvB,CAAC;AAAA,MACP;AAGA,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAsB;AAC1B,iBAAW,iBAAiB;AAE5B,YAAM,KAAK,mBAAmB,EAAE,OAAO;AAAA,IACzC;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,UAAyB;AAC7B,YAAM,QAAQ,MAAM,KAAK,UAAU;AAEnC,iBAAW,oCAAoC;AAE/C,aAAO,MAAM,CAAE,KAAM,CAAC,EACjB,OAAO,KAAK,aAAa,EAAE,WAAW,KAAK,SAAS,QAAQ,WAAW,CAAC,EACxE,QAAQ;AAAA,QACP,cAAc,KAAK;AAAA,QACnB,cAAc,KAAK;AAAA,QACnB,aAAa,KAAK;AAAA,QAClB,mBAAmB,KAAK;AAAA,MAC1B,CAAC;AAAA,IACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,MAAM,MAAqB;AACzB,UAAI,cAAc;AAChB,cAAM,QAAQ,IAAI;AAAA,UAChB,KAAK,UAAU;AAAA,UACf,KAAK,SAAS;AAAA;AAAA,UACd,KAAK,KAAK;AAAA,QACZ,CAAC;AAAA,MACH,OAAO;AACL,cAAM,KAAK,UAAU;AACrB,cAAM,KAAK,SAAS;AACpB,cAAM,KAAK,KAAK;AAAA,MAClB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAaA,MAAM,UAAyB;AAC7B,YAAM,KAAK,IAAI;AAAA,IACjB;AAAA,EACF,CAAC;AACH;AAIO,SAAS,OAAO,SAAuB;AAC5C,MAAI,OAAO;AAAA,IACT;AAAA,IAAI,KAAK,SAAS,GAAG,SAAS,IAAI,QAAQ,SAAS;AAAA,IACnD,GAAG,KAAK,QAAQ,KAAK,KAAK,QAAQ,OAAO,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ;AAAA,IACnE,KAAK,SAAS,GAAG,SAAS,IAAI,QAAQ,SAAS;AAAA,IAAG;AAAA,EACpD,EAAE,KAAK,IAAI,CAAC;AACd;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plugjs/build",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Simple shared build using PlugJS",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",
@@ -29,12 +29,12 @@
29
29
  "transpile": "plug transpile"
30
30
  },
31
31
  "dependencies": {
32
- "@plugjs/cov8": "^0.2.0",
33
- "@plugjs/eslint": "^0.2.0",
32
+ "@plugjs/cov8": "^0.2.1",
33
+ "@plugjs/eslint": "^0.2.1",
34
34
  "@plugjs/eslint-plugin": "^0.1.2",
35
- "@plugjs/jasmine": "^0.2.0",
36
- "@plugjs/plug": "^0.2.0",
37
- "@plugjs/typescript": "^0.2.0"
35
+ "@plugjs/jasmine": "^0.2.1",
36
+ "@plugjs/plug": "^0.2.1",
37
+ "@plugjs/typescript": "^0.2.1"
38
38
  },
39
39
  "files": [
40
40
  "*.md",
@@ -0,0 +1,3 @@
1
+ {
2
+ "typescript.tsdk": "node_modules/typescript/lib"
3
+ }
package/src/bootstrap.mts CHANGED
@@ -9,7 +9,11 @@ const tasks = build({
9
9
  async bootstrap_resources(): Promise<void> {
10
10
  const pipe = find('**/*', '**/.*', { directory: '@../resources' })
11
11
  const sources = await pipe
12
- const targets = await pipe.copy('.', { overwrite })
12
+ const targets = await pipe.copy('.', {
13
+ // it seems NPM has _some_ problems with some dotfiles (e.g. .gitignore)
14
+ rename: (relative) => relative.replaceAll(/(^|\/)__dot_/g, '$1.'),
15
+ overwrite,
16
+ })
13
17
 
14
18
  log('Bootstrapped', targets.length, 'of', sources.length, 'files:')
15
19
  for (const file of targets.absolutePaths()) log(` ${$p(file)}`)
@@ -58,7 +62,7 @@ const tasks = build({
58
62
 
59
63
  // Overwrite taget package.json file
60
64
  log(`Writing ${$p(targetPackage)}`)
61
- await fs.writeFile(targetPackage, JSON.stringify(targetJson, null, 2), 'utf-8')
65
+ await fs.writeFile(targetPackage, JSON.stringify(targetJson, null, 2) + '\n', 'utf-8')
62
66
  },
63
67
 
64
68
  /** Bootstrap the project */
package/src/index.ts CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  } from '@plugjs/plug'
14
14
  import '@plugjs/typescript'
15
15
 
16
- import type { ESBuildOptions, Files, Pipe } from '@plugjs/plug'
16
+ import type { ESBuildOptions, Pipe } from '@plugjs/plug'
17
17
 
18
18
  export * from '@plugjs/plug'
19
19
 
@@ -89,7 +89,6 @@ export interface TasksOptions {
89
89
  /** Optimal per-file coverage percentage (default: _none_) */
90
90
  optimalFileCoverage?: number,
91
91
 
92
-
93
92
  /**
94
93
  * ESBuild compilation options
95
94
  *
@@ -139,7 +138,7 @@ export function tasks(options: TasksOptions = {}) {
139
138
  } = options
140
139
 
141
140
  // coverage ignore next
142
- const banner = _banners ? emitBanner : (...args: any) => void args
141
+ const emitBanner = _banners ? banner : (...args: any) => void args
143
142
 
144
143
  // Merge esbuild defaults with specified options
145
144
  const esbuildMergedOptions = Object.assign({}, esbuildDefaults, _esbuildOptions)
@@ -197,13 +196,12 @@ export function tasks(options: TasksOptions = {}) {
197
196
  return find('**/*.d.ts', { directory: this.sourceDir })
198
197
  },
199
198
 
200
- /** Find all types definition files within sources */
201
- _find_extras(): Pipe {
199
+ /** Find all extra types definition files from `extraTypesDir` */
200
+ _find_extra_types(): Pipe {
202
201
  if (! isDirectory(this.extraTypesDir)) return noop()
203
202
  return find('**/*.d.ts', { directory: this.extraTypesDir })
204
203
  },
205
204
 
206
-
207
205
  /** Find all resource files (non-typescript files) within sources */
208
206
  _find_resources(): Pipe {
209
207
  return find('**/*', { directory: this.sourceDir, ignore: '**/*.([cm])?ts' })
@@ -214,6 +212,16 @@ export function tasks(options: TasksOptions = {}) {
214
212
  return find(this.testGlob, { directory: this.testDir, ignore: '**/*.d.ts' })
215
213
  },
216
214
 
215
+ /** Find all source files to lint */
216
+ _find_lint_sources(): Pipe {
217
+ return merge([
218
+ this._find_sources(),
219
+ this._find_tests(),
220
+ this._find_types(),
221
+ this._find_extra_types(),
222
+ ])
223
+ },
224
+
217
225
  /* ====================================================================== *
218
226
  * TRANSPILE *
219
227
  * ====================================================================== */
@@ -245,7 +253,7 @@ export function tasks(options: TasksOptions = {}) {
245
253
  return merge([
246
254
  this._find_sources(),
247
255
  this._find_types(),
248
- this._find_extras(),
256
+ this._find_extra_types(),
249
257
  ]).tsc('tsconfig.json', {
250
258
  noEmit: false,
251
259
  rootDir: this.sourceDir,
@@ -256,7 +264,7 @@ export function tasks(options: TasksOptions = {}) {
256
264
  },
257
265
 
258
266
  /** Copy all resources coming alongside our sources */
259
- transpile_resources(): Pipe {
267
+ copy_resources(): Pipe {
260
268
  return merge([
261
269
  this._find_resources(),
262
270
  this._find_types(),
@@ -265,25 +273,27 @@ export function tasks(options: TasksOptions = {}) {
265
273
 
266
274
  /** Transpile all source code */
267
275
  async transpile(): Promise<Pipe> {
268
- banner('Transpiling source files')
276
+ emitBanner('Transpiling source files')
269
277
 
270
278
  if (isDirectory(this.destDir)) await rmrf(this.destDir)
271
279
 
272
- return merge([
280
+ const result = await merge([
273
281
  _cjsTranspile ? this.transpile_cjs() : noop(),
274
282
  _esmTranspile ? this.transpile_esm() : noop(),
275
283
  this.transpile_types(),
276
- this.transpile_resources(),
284
+ this.copy_resources(),
277
285
  ])
286
+
287
+ return result
278
288
  },
279
289
 
280
290
  /* ====================================================================== *
281
- * TEST, COVERAGE & LINTING *
291
+ * TEST & COVERAGE *
282
292
  * ====================================================================== */
283
293
 
284
- /** Run test and emit coverage data */
294
+ /** Run tests */
285
295
  async test(): Promise<void> {
286
- banner('Running tests')
296
+ emitBanner('Running tests')
287
297
 
288
298
  if (_coverage && isDirectory(this.coverageDataDir)) await rmrf(this.coverageDataDir)
289
299
 
@@ -292,16 +302,17 @@ export function tasks(options: TasksOptions = {}) {
292
302
  .jasmine({ coverageDir: _coverage ? this.coverageDataDir : undefined })
293
303
  },
294
304
 
295
- /** Run tests (always) and generate a coverage report */
305
+ /** Ensure tests have run and generate a coverage report */
296
306
  async coverage(): Promise<Pipe> {
307
+ let coveragePipe: Pipe
308
+
297
309
  // Capture error from running tests, but always produce coverage
298
- let files: Files
299
310
  try {
300
311
  await this.test()
301
312
  } finally {
302
- banner('Preparing coverage report')
303
- files = await this
304
- ._find_sources()
313
+ emitBanner('Preparing coverage report')
314
+
315
+ coveragePipe = this._find_sources()
305
316
  .coverage(this.coverageDataDir, {
306
317
  reportDir: this.coverageDir,
307
318
  minimumCoverage: _minimumCoverage,
@@ -311,20 +322,19 @@ export function tasks(options: TasksOptions = {}) {
311
322
  })
312
323
  }
313
324
 
314
- // No exceptions!
315
- return files
325
+ // If the tests didn't throw, return the coverage
326
+ return coveragePipe
316
327
  },
317
328
 
318
- /** Run test and emit coverage data */
329
+ /* ====================================================================== *
330
+ * LINTING *
331
+ * ====================================================================== */
332
+
333
+ /** Lint all sources */
319
334
  async lint(): Promise<void> {
320
- banner('Linting sources')
335
+ emitBanner('Linting sources')
321
336
 
322
- await merge([
323
- this._find_sources(),
324
- this._find_tests(),
325
- this._find_types(),
326
- this._find_extras(),
327
- ]).eslint()
337
+ await this._find_lint_sources().eslint()
328
338
  },
329
339
 
330
340
  /* ====================================================================== *
@@ -335,7 +345,7 @@ export function tasks(options: TasksOptions = {}) {
335
345
  async exports(): Promise<Pipe> {
336
346
  const files = await this.transpile()
337
347
 
338
- banner('Updating exports in "package.json"')
348
+ emitBanner('Updating exports in "package.json"')
339
349
 
340
350
  return merge([ files ])
341
351
  .filter(this.exportsGlob, { directory: this.destDir, ignore: '**/*.map' })
@@ -348,12 +358,12 @@ export function tasks(options: TasksOptions = {}) {
348
358
  },
349
359
 
350
360
  /* ====================================================================== *
351
- * DEFAULT: DO EVERYTHING *
361
+ * ALL: DO EVERYTHING *
352
362
  * ====================================================================== */
353
363
 
354
364
  /* coverage ignore next */
355
- /** Build everything */
356
- async default(): Promise<void> {
365
+ /** Build everything. */
366
+ async all(): Promise<void> {
357
367
  if (_parallelize) {
358
368
  await Promise.all([
359
369
  this.transpile(),
@@ -365,14 +375,28 @@ export function tasks(options: TasksOptions = {}) {
365
375
  await this.coverage() // implies "test"
366
376
  await this.lint()
367
377
  }
368
- await this.exports()
378
+ },
379
+
380
+ /* ====================================================================== *
381
+ * DEFAULT: DO EVERYTHING *
382
+ * ====================================================================== */
383
+
384
+ /* coverage ignore next */
385
+ /**
386
+ * Default task (simply invokes `this._all()`).
387
+ *
388
+ * Override this and invoke `this._all()` to inject tasks _before_ or
389
+ * _after_ the normal build execution.
390
+ */
391
+ async default(): Promise<void> {
392
+ await this.all()
369
393
  },
370
394
  })
371
395
  }
372
396
 
373
397
  /* coverage ignore next */
374
398
  /* Leave this at the _end_ of the file, unicode messes up sitemaps... */
375
- function emitBanner(message: string): void {
399
+ export function banner(message: string): void {
376
400
  log.notice([
377
401
  '', $gry(`\u2554${''.padStart(60, '\u2550')}\u2557`),
378
402
  `${$gry('\u2551')} ${$wht(message.padEnd(58, ' '))} ${$gry('\u2551')}`,
File without changes
File without changes
File without changes