@checkdigit/typescript-config 9.1.1-PR.74-63d5 → 9.2.0-PR.76-0a46

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.
package/README.md CHANGED
@@ -10,7 +10,7 @@ This module contains the standard Check Digit TypeScript configuration, along wi
10
10
 
11
11
  ## TypeScript Configuration
12
12
 
13
- - currently requires Node 22.11 or above.
13
+ - currently requires Node 22.15 or above.
14
14
  - emits `esnext`, with the default libraries, to avoid down-leveling. It is intended that application spec tests pick
15
15
  up any issues with using newer features unavailable in a particular environment. Browsers and Node.js are fast-moving
16
16
  targets, and can add language features at any time.
package/bin/builder.mjs CHANGED
@@ -8,23 +8,37 @@ import { parseArgs } from "node:util";
8
8
  // src/analyze.ts
9
9
  import { strict as assert } from "node:assert";
10
10
  function analyze(metafile) {
11
- const source = new Set(Object.keys(metafile.inputs).filter((key) => !key.startsWith("node_modules")));
12
- const modules = new Set(Object.keys(metafile.inputs).filter((key) => key.startsWith("node_modules")));
11
+ const source = new Set(
12
+ Object.keys(metafile.inputs).filter(
13
+ (key) => !key.startsWith("node_modules")
14
+ )
15
+ );
16
+ const modules = new Set(
17
+ Object.keys(metafile.inputs).filter(
18
+ (key) => key.startsWith("node_modules")
19
+ )
20
+ );
13
21
  const [output] = Object.entries(metafile.outputs);
14
22
  assert.ok(output !== void 0);
15
23
  const [, bundle] = output;
16
- const sourceBytes = Object.entries(bundle.inputs).reduce((bytes, [file, value]) => {
17
- if (source.has(file)) {
18
- return bytes + value.bytesInOutput;
19
- }
20
- return bytes;
21
- }, 0);
22
- const moduleBytes = Object.entries(bundle.inputs).reduce((bytes, [file, value]) => {
23
- if (modules.has(file)) {
24
- return bytes + value.bytesInOutput;
25
- }
26
- return bytes;
27
- }, 0);
24
+ const sourceBytes = Object.entries(bundle.inputs).reduce(
25
+ (bytes, [file, value]) => {
26
+ if (source.has(file)) {
27
+ return bytes + value.bytesInOutput;
28
+ }
29
+ return bytes;
30
+ },
31
+ 0
32
+ );
33
+ const moduleBytes = Object.entries(bundle.inputs).reduce(
34
+ (bytes, [file, value]) => {
35
+ if (modules.has(file)) {
36
+ return bytes + value.bytesInOutput;
37
+ }
38
+ return bytes;
39
+ },
40
+ 0
41
+ );
28
42
  return {
29
43
  sourceBytes,
30
44
  moduleBytes,
@@ -116,13 +130,15 @@ function excludeSourceMaps(filter) {
116
130
  }
117
131
  function resolveTypescriptPaths() {
118
132
  return (pluginBuild) => {
119
- pluginBuild.onResolve({ filter: /.*/u }, async (resolved) => {
133
+ pluginBuild.onResolve({ filter: /.*/ }, async (resolved) => {
120
134
  if (resolved.kind === "entry-point" || !resolved.path.startsWith(".") || resolved.path.endsWith(".js") || resolved.path.endsWith(".json")) {
121
135
  return { external: resolved.kind !== "entry-point" };
122
136
  }
123
137
  let isDirectory = false;
124
138
  try {
125
- const stats = await fs.lstat(path.join(resolved.resolveDir, resolved.path));
139
+ const stats = await fs.lstat(
140
+ path.join(resolved.resolveDir, resolved.path)
141
+ );
126
142
  isDirectory = stats.isDirectory();
127
143
  } catch {
128
144
  }
@@ -153,7 +169,11 @@ async function compile_default({
153
169
  );
154
170
  const allSourceFiles = await getFiles(inDir2);
155
171
  const productionSourceFiles = entryPoint2 === void 0 ? allSourceFiles.filter((file) => file.endsWith(".ts")) : [path.join(inDir2, entryPoint2)];
156
- const compilerOptions = typescript.parseJsonConfigFileContent(tsconfig_default, typescript.sys, outDir2).options;
172
+ const compilerOptions = typescript.parseJsonConfigFileContent(
173
+ tsconfig_default,
174
+ typescript.sys,
175
+ outDir2
176
+ ).options;
157
177
  const program = typescript.createProgram(productionSourceFiles, {
158
178
  ...compilerOptions,
159
179
  noEmit: type2 !== "types",
@@ -172,11 +192,21 @@ async function compile_default({
172
192
  for (const diagnostic of allDiagnostics) {
173
193
  if (diagnostic.file) {
174
194
  assert2.ok(diagnostic.start !== void 0);
175
- const { line, character } = typescript.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start);
176
- const message = typescript.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
177
- messages.push(`tsc: ${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`);
195
+ const { line, character } = typescript.getLineAndCharacterOfPosition(
196
+ diagnostic.file,
197
+ diagnostic.start
198
+ );
199
+ const message = typescript.flattenDiagnosticMessageText(
200
+ diagnostic.messageText,
201
+ "\n"
202
+ );
203
+ messages.push(
204
+ `tsc: ${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`
205
+ );
178
206
  } else {
179
- messages.push(`tsc: ${typescript.flattenDiagnosticMessageText(diagnostic.messageText, "\n")}`);
207
+ messages.push(
208
+ `tsc: ${typescript.flattenDiagnosticMessageText(diagnostic.messageText, "\n")}`
209
+ );
180
210
  }
181
211
  }
182
212
  if (messages.length > 0) {
@@ -221,12 +251,16 @@ async function compile_default({
221
251
  plugins: [
222
252
  {
223
253
  name: "exclude-source-maps",
224
- setup: excludeSourceMaps(/node_modules/u)
254
+ // Note: the /u flag cannot be used here because the underlying Go implementation does not support it
255
+ // eslint-disable-next-line require-unicode-regexp
256
+ setup: excludeSourceMaps(/node_modules/)
225
257
  }
226
258
  ]
227
259
  }
228
260
  });
229
- messages.push(...buildResult.errors.map((error) => `esbuild error: ${error.text}`));
261
+ messages.push(
262
+ ...buildResult.errors.map((error) => `esbuild error: ${error.text}`)
263
+ );
230
264
  if (messages.length > 0) {
231
265
  throw new Error(`esbuild failed ${JSON.stringify(messages)}`);
232
266
  }
@@ -235,7 +269,16 @@ async function compile_default({
235
269
 
236
270
  // src/builder.ts
237
271
  var {
238
- values: { type, inDir, outDir, entryPoint, outFile, external, minify, sourceMap }
272
+ values: {
273
+ type,
274
+ inDir,
275
+ outDir,
276
+ entryPoint,
277
+ outFile,
278
+ external,
279
+ minify,
280
+ sourceMap
281
+ }
239
282
  } = parseArgs({
240
283
  options: {
241
284
  type: { type: "string", short: "t", default: "module" },
@@ -248,7 +291,10 @@ var {
248
291
  sourceMap: { type: "boolean", short: "s", default: false }
249
292
  }
250
293
  });
251
- assert3.ok(type === "module" || type === "types", "type must be types or module");
294
+ assert3.ok(
295
+ type === "module" || type === "types",
296
+ "type must be types or module"
297
+ );
252
298
  var compileResult = await compile_default({
253
299
  type,
254
300
  inDir: path2.join(process.cwd(), inDir),
@@ -267,7 +313,10 @@ await Promise.all(
267
313
  );
268
314
  if (compileResult.metafile !== void 0) {
269
315
  const analysis = analyze(compileResult.metafile);
270
- await fs2.writeFile(path2.join(outDir, "metafile.json"), JSON.stringify(compileResult.metafile, void 0, 2));
316
+ await fs2.writeFile(
317
+ path2.join(outDir, "metafile.json"),
318
+ JSON.stringify(compileResult.metafile, void 0, 2)
319
+ );
271
320
  console.log(
272
321
  `${outFile}: src ${analysis.sourceBytes}, node_modules ${analysis.moduleBytes}, total ${analysis.totalBytes}`
273
322
  );
@@ -1,23 +1,37 @@
1
1
  // src/analyze.ts
2
2
  import { strict as assert } from "node:assert";
3
3
  function analyze(metafile) {
4
- const source = new Set(Object.keys(metafile.inputs).filter((key) => !key.startsWith("node_modules")));
5
- const modules = new Set(Object.keys(metafile.inputs).filter((key) => key.startsWith("node_modules")));
4
+ const source = new Set(
5
+ Object.keys(metafile.inputs).filter(
6
+ (key) => !key.startsWith("node_modules")
7
+ )
8
+ );
9
+ const modules = new Set(
10
+ Object.keys(metafile.inputs).filter(
11
+ (key) => key.startsWith("node_modules")
12
+ )
13
+ );
6
14
  const [output] = Object.entries(metafile.outputs);
7
15
  assert.ok(output !== void 0);
8
16
  const [, bundle] = output;
9
- const sourceBytes = Object.entries(bundle.inputs).reduce((bytes, [file, value]) => {
10
- if (source.has(file)) {
11
- return bytes + value.bytesInOutput;
12
- }
13
- return bytes;
14
- }, 0);
15
- const moduleBytes = Object.entries(bundle.inputs).reduce((bytes, [file, value]) => {
16
- if (modules.has(file)) {
17
- return bytes + value.bytesInOutput;
18
- }
19
- return bytes;
20
- }, 0);
17
+ const sourceBytes = Object.entries(bundle.inputs).reduce(
18
+ (bytes, [file, value]) => {
19
+ if (source.has(file)) {
20
+ return bytes + value.bytesInOutput;
21
+ }
22
+ return bytes;
23
+ },
24
+ 0
25
+ );
26
+ const moduleBytes = Object.entries(bundle.inputs).reduce(
27
+ (bytes, [file, value]) => {
28
+ if (modules.has(file)) {
29
+ return bytes + value.bytesInOutput;
30
+ }
31
+ return bytes;
32
+ },
33
+ 0
34
+ );
21
35
  return {
22
36
  sourceBytes,
23
37
  moduleBytes,
@@ -27,4 +41,4 @@ function analyze(metafile) {
27
41
  export {
28
42
  analyze as default
29
43
  };
30
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2FuYWx5emUudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBRUEsU0FBUyxVQUFVLGNBQWM7QUFJbEIsU0FBUixRQUF5QixVQUFzRjtBQUNwSCxRQUFNLFNBQVMsSUFBSSxJQUFJLE9BQU8sS0FBSyxTQUFTLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksV0FBVyxjQUFjLENBQUMsQ0FBQztBQUNwRyxRQUFNLFVBQVUsSUFBSSxJQUFJLE9BQU8sS0FBSyxTQUFTLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLFdBQVcsY0FBYyxDQUFDLENBQUM7QUFFcEcsUUFBTSxDQUFDLE1BQU0sSUFBSSxPQUFPLFFBQVEsU0FBUyxPQUFPO0FBQ2hELFNBQU8sR0FBRyxXQUFXLE1BQVM7QUFDOUIsUUFBTSxDQUFDLEVBQUUsTUFBTSxJQUFJO0FBRW5CLFFBQU0sY0FBYyxPQUFPLFFBQVEsT0FBTyxNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssTUFBTTtBQUNqRixRQUFJLE9BQU8sSUFBSSxJQUFJLEdBQUc7QUFDcEIsYUFBTyxRQUFRLE1BQU07QUFBQSxJQUN2QjtBQUNBLFdBQU87QUFBQSxFQUNULEdBQUcsQ0FBQztBQUVKLFFBQU0sY0FBYyxPQUFPLFFBQVEsT0FBTyxNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssTUFBTTtBQUNqRixRQUFJLFFBQVEsSUFBSSxJQUFJLEdBQUc7QUFDckIsYUFBTyxRQUFRLE1BQU07QUFBQSxJQUN2QjtBQUNBLFdBQU87QUFBQSxFQUNULEdBQUcsQ0FBQztBQUVKLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQTtBQUFBLElBQ0EsWUFBWSxPQUFPO0FBQUEsRUFDckI7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
44
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2FuYWx5emUudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBRUEsU0FBUyxVQUFVLGNBQWM7QUFJbEIsU0FBUixRQUF5QixVQUk5QjtBQUNBLFFBQU0sU0FBUyxJQUFJO0FBQUEsSUFDakIsT0FBTyxLQUFLLFNBQVMsTUFBTSxFQUFFO0FBQUEsTUFDM0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxXQUFXLGNBQWM7QUFBQSxJQUN6QztBQUFBLEVBQ0Y7QUFDQSxRQUFNLFVBQVUsSUFBSTtBQUFBLElBQ2xCLE9BQU8sS0FBSyxTQUFTLE1BQU0sRUFBRTtBQUFBLE1BQU8sQ0FBQyxRQUNuQyxJQUFJLFdBQVcsY0FBYztBQUFBLElBQy9CO0FBQUEsRUFDRjtBQUVBLFFBQU0sQ0FBQyxNQUFNLElBQUksT0FBTyxRQUFRLFNBQVMsT0FBTztBQUNoRCxTQUFPLEdBQUcsV0FBVyxNQUFTO0FBQzlCLFFBQU0sQ0FBQyxFQUFFLE1BQU0sSUFBSTtBQUVuQixRQUFNLGNBQWMsT0FBTyxRQUFRLE9BQU8sTUFBTSxFQUFFO0FBQUEsSUFDaEQsQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLE1BQU07QUFDeEIsVUFBSSxPQUFPLElBQUksSUFBSSxHQUFHO0FBQ3BCLGVBQU8sUUFBUSxNQUFNO0FBQUEsTUFDdkI7QUFDQSxhQUFPO0FBQUEsSUFDVDtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBRUEsUUFBTSxjQUFjLE9BQU8sUUFBUSxPQUFPLE1BQU0sRUFBRTtBQUFBLElBQ2hELENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxNQUFNO0FBQ3hCLFVBQUksUUFBUSxJQUFJLElBQUksR0FBRztBQUNyQixlQUFPLFFBQVEsTUFBTTtBQUFBLE1BQ3ZCO0FBQ0EsYUFBTztBQUFBLElBQ1Q7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQTtBQUFBLElBQ0EsWUFBWSxPQUFPO0FBQUEsRUFDckI7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -5,7 +5,16 @@ import path from "node:path";
5
5
  import { parseArgs } from "node:util";
6
6
  import { analyze, compile } from "./index.mjs";
7
7
  var {
8
- values: { type, inDir, outDir, entryPoint, outFile, external, minify, sourceMap }
8
+ values: {
9
+ type,
10
+ inDir,
11
+ outDir,
12
+ entryPoint,
13
+ outFile,
14
+ external,
15
+ minify,
16
+ sourceMap
17
+ }
9
18
  } = parseArgs({
10
19
  options: {
11
20
  type: { type: "string", short: "t", default: "module" },
@@ -18,7 +27,10 @@ var {
18
27
  sourceMap: { type: "boolean", short: "s", default: false }
19
28
  }
20
29
  });
21
- assert.ok(type === "module" || type === "types", "type must be types or module");
30
+ assert.ok(
31
+ type === "module" || type === "types",
32
+ "type must be types or module"
33
+ );
22
34
  var compileResult = await compile({
23
35
  type,
24
36
  inDir: path.join(process.cwd(), inDir),
@@ -37,9 +49,12 @@ await Promise.all(
37
49
  );
38
50
  if (compileResult.metafile !== void 0) {
39
51
  const analysis = analyze(compileResult.metafile);
40
- await fs.writeFile(path.join(outDir, "metafile.json"), JSON.stringify(compileResult.metafile, void 0, 2));
52
+ await fs.writeFile(
53
+ path.join(outDir, "metafile.json"),
54
+ JSON.stringify(compileResult.metafile, void 0, 2)
55
+ );
41
56
  console.log(
42
57
  `${outFile}: src ${analysis.sourceBytes}, node_modules ${analysis.moduleBytes}, total ${analysis.totalBytes}`
43
58
  );
44
59
  }
45
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2J1aWxkZXIudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBRUEsU0FBUyxVQUFVLGNBQWM7QUFDakMsU0FBUyxZQUFZLFVBQVU7QUFDL0IsT0FBTyxVQUFVO0FBQ2pCLFNBQVMsaUJBQWlCO0FBRTFCLFNBQVMsU0FBUyxlQUFlO0FBRWpDLElBQU07QUFBQSxFQUNKLFFBQVEsRUFBRSxNQUFNLE9BQU8sUUFBUSxZQUFZLFNBQVMsVUFBVSxRQUFRLFVBQVU7QUFDbEYsSUFBSSxVQUFVO0FBQUEsRUFDWixTQUFTO0FBQUEsSUFDUCxNQUFNLEVBQUUsTUFBTSxVQUFVLE9BQU8sS0FBSyxTQUFTLFNBQVM7QUFBQSxJQUN0RCxPQUFPLEVBQUUsTUFBTSxVQUFVLE9BQU8sS0FBSyxTQUFTLE1BQU07QUFBQSxJQUNwRCxRQUFRLEVBQUUsTUFBTSxVQUFVLE9BQU8sS0FBSyxTQUFTLFFBQVE7QUFBQSxJQUN2RCxZQUFZLEVBQUUsTUFBTSxVQUFVLE9BQU8sS0FBSyxTQUFTLE9BQVU7QUFBQSxJQUM3RCxTQUFTLEVBQUUsTUFBTSxVQUFVLE9BQU8sS0FBSyxTQUFTLE9BQVU7QUFBQSxJQUMxRCxVQUFVLEVBQUUsTUFBTSxVQUFVLE9BQU8sS0FBSyxVQUFVLE1BQU0sU0FBUyxDQUFDLEVBQUU7QUFBQSxJQUNwRSxRQUFRLEVBQUUsTUFBTSxXQUFXLE9BQU8sS0FBSyxTQUFTLE1BQU07QUFBQSxJQUN0RCxXQUFXLEVBQUUsTUFBTSxXQUFXLE9BQU8sS0FBSyxTQUFTLE1BQU07QUFBQSxFQUMzRDtBQUNGLENBQUM7QUFFRCxPQUFPLEdBQUcsU0FBUyxZQUFZLFNBQVMsU0FBUyw4QkFBOEI7QUFFL0UsSUFBTSxnQkFBZ0IsTUFBTSxRQUFRO0FBQUEsRUFDbEM7QUFBQSxFQUNBLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUs7QUFBQSxFQUNyQyxRQUFRLEtBQUssS0FBSyxRQUFRLElBQUksR0FBRyxNQUFNO0FBQUEsRUFDdkM7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0YsQ0FBQztBQUdELE1BQU0sUUFBUTtBQUFBLEVBQ1osY0FBYyxZQUFZLElBQUksT0FBTyxTQUFTO0FBQzVDLFVBQU0sR0FBRyxNQUFNLEtBQUssS0FBSyxLQUFLLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLFdBQVcsS0FBSyxDQUFDO0FBQ3RFLFVBQU0sR0FBRyxVQUFVLEtBQUssTUFBTSxLQUFLLElBQUk7QUFBQSxFQUN6QyxDQUFDO0FBQ0g7QUFHQSxJQUFJLGNBQWMsYUFBYSxRQUFXO0FBQ3hDLFFBQU0sV0FBVyxRQUFRLGNBQWMsUUFBUTtBQUMvQyxRQUFNLEdBQUcsVUFBVSxLQUFLLEtBQUssUUFBUSxlQUFlLEdBQUcsS0FBSyxVQUFVLGNBQWMsVUFBVSxRQUFXLENBQUMsQ0FBQztBQUczRyxVQUFRO0FBQUEsSUFDTixHQUFHLE9BQU8sU0FBUyxTQUFTLFdBQVcsa0JBQWtCLFNBQVMsV0FBVyxXQUFXLFNBQVMsVUFBVTtBQUFBLEVBQzdHO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
60
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2J1aWxkZXIudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBRUEsU0FBUyxVQUFVLGNBQWM7QUFDakMsU0FBUyxZQUFZLFVBQVU7QUFDL0IsT0FBTyxVQUFVO0FBQ2pCLFNBQVMsaUJBQWlCO0FBRTFCLFNBQVMsU0FBUyxlQUFlO0FBRWpDLElBQU07QUFBQSxFQUNKLFFBQVE7QUFBQSxJQUNOO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFDRixJQUFJLFVBQVU7QUFBQSxFQUNaLFNBQVM7QUFBQSxJQUNQLE1BQU0sRUFBRSxNQUFNLFVBQVUsT0FBTyxLQUFLLFNBQVMsU0FBUztBQUFBLElBQ3RELE9BQU8sRUFBRSxNQUFNLFVBQVUsT0FBTyxLQUFLLFNBQVMsTUFBTTtBQUFBLElBQ3BELFFBQVEsRUFBRSxNQUFNLFVBQVUsT0FBTyxLQUFLLFNBQVMsUUFBUTtBQUFBLElBQ3ZELFlBQVksRUFBRSxNQUFNLFVBQVUsT0FBTyxLQUFLLFNBQVMsT0FBVTtBQUFBLElBQzdELFNBQVMsRUFBRSxNQUFNLFVBQVUsT0FBTyxLQUFLLFNBQVMsT0FBVTtBQUFBLElBQzFELFVBQVUsRUFBRSxNQUFNLFVBQVUsT0FBTyxLQUFLLFVBQVUsTUFBTSxTQUFTLENBQUMsRUFBRTtBQUFBLElBQ3BFLFFBQVEsRUFBRSxNQUFNLFdBQVcsT0FBTyxLQUFLLFNBQVMsTUFBTTtBQUFBLElBQ3RELFdBQVcsRUFBRSxNQUFNLFdBQVcsT0FBTyxLQUFLLFNBQVMsTUFBTTtBQUFBLEVBQzNEO0FBQ0YsQ0FBQztBQUVELE9BQU87QUFBQSxFQUNMLFNBQVMsWUFBWSxTQUFTO0FBQUEsRUFDOUI7QUFDRjtBQUVBLElBQU0sZ0JBQWdCLE1BQU0sUUFBUTtBQUFBLEVBQ2xDO0FBQUEsRUFDQSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksR0FBRyxLQUFLO0FBQUEsRUFDckMsUUFBUSxLQUFLLEtBQUssUUFBUSxJQUFJLEdBQUcsTUFBTTtBQUFBLEVBQ3ZDO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLENBQUM7QUFHRCxNQUFNLFFBQVE7QUFBQSxFQUNaLGNBQWMsWUFBWSxJQUFJLE9BQU8sU0FBUztBQUM1QyxVQUFNLEdBQUcsTUFBTSxLQUFLLEtBQUssS0FBSyxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxXQUFXLEtBQUssQ0FBQztBQUN0RSxVQUFNLEdBQUcsVUFBVSxLQUFLLE1BQU0sS0FBSyxJQUFJO0FBQUEsRUFDekMsQ0FBQztBQUNIO0FBR0EsSUFBSSxjQUFjLGFBQWEsUUFBVztBQUN4QyxRQUFNLFdBQVcsUUFBUSxjQUFjLFFBQVE7QUFDL0MsUUFBTSxHQUFHO0FBQUEsSUFDUCxLQUFLLEtBQUssUUFBUSxlQUFlO0FBQUEsSUFDakMsS0FBSyxVQUFVLGNBQWMsVUFBVSxRQUFXLENBQUM7QUFBQSxFQUNyRDtBQUdBLFVBQVE7QUFBQSxJQUNOLEdBQUcsT0FBTyxTQUFTLFNBQVMsV0FBVyxrQkFBa0IsU0FBUyxXQUFXLFdBQVcsU0FBUyxVQUFVO0FBQUEsRUFDN0c7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -40,13 +40,15 @@ function excludeSourceMaps(filter) {
40
40
  }
41
41
  function resolveTypescriptPaths() {
42
42
  return (pluginBuild) => {
43
- pluginBuild.onResolve({ filter: /.*/u }, async (resolved) => {
43
+ pluginBuild.onResolve({ filter: /.*/ }, async (resolved) => {
44
44
  if (resolved.kind === "entry-point" || !resolved.path.startsWith(".") || resolved.path.endsWith(".js") || resolved.path.endsWith(".json")) {
45
45
  return { external: resolved.kind !== "entry-point" };
46
46
  }
47
47
  let isDirectory = false;
48
48
  try {
49
- const stats = await fs.lstat(path.join(resolved.resolveDir, resolved.path));
49
+ const stats = await fs.lstat(
50
+ path.join(resolved.resolveDir, resolved.path)
51
+ );
50
52
  isDirectory = stats.isDirectory();
51
53
  } catch {
52
54
  }
@@ -77,7 +79,11 @@ async function compile_default({
77
79
  );
78
80
  const allSourceFiles = await getFiles(inDir);
79
81
  const productionSourceFiles = entryPoint === void 0 ? allSourceFiles.filter((file) => file.endsWith(".ts")) : [path.join(inDir, entryPoint)];
80
- const compilerOptions = typescript.parseJsonConfigFileContent(tsConfigJson, typescript.sys, outDir).options;
82
+ const compilerOptions = typescript.parseJsonConfigFileContent(
83
+ tsConfigJson,
84
+ typescript.sys,
85
+ outDir
86
+ ).options;
81
87
  const program = typescript.createProgram(productionSourceFiles, {
82
88
  ...compilerOptions,
83
89
  noEmit: type !== "types",
@@ -96,11 +102,21 @@ async function compile_default({
96
102
  for (const diagnostic of allDiagnostics) {
97
103
  if (diagnostic.file) {
98
104
  assert.ok(diagnostic.start !== void 0);
99
- const { line, character } = typescript.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start);
100
- const message = typescript.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
101
- messages.push(`tsc: ${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`);
105
+ const { line, character } = typescript.getLineAndCharacterOfPosition(
106
+ diagnostic.file,
107
+ diagnostic.start
108
+ );
109
+ const message = typescript.flattenDiagnosticMessageText(
110
+ diagnostic.messageText,
111
+ "\n"
112
+ );
113
+ messages.push(
114
+ `tsc: ${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`
115
+ );
102
116
  } else {
103
- messages.push(`tsc: ${typescript.flattenDiagnosticMessageText(diagnostic.messageText, "\n")}`);
117
+ messages.push(
118
+ `tsc: ${typescript.flattenDiagnosticMessageText(diagnostic.messageText, "\n")}`
119
+ );
104
120
  }
105
121
  }
106
122
  if (messages.length > 0) {
@@ -145,12 +161,16 @@ async function compile_default({
145
161
  plugins: [
146
162
  {
147
163
  name: "exclude-source-maps",
148
- setup: excludeSourceMaps(/node_modules/u)
164
+ // Note: the /u flag cannot be used here because the underlying Go implementation does not support it
165
+ // eslint-disable-next-line require-unicode-regexp
166
+ setup: excludeSourceMaps(/node_modules/)
149
167
  }
150
168
  ]
151
169
  }
152
170
  });
153
- messages.push(...buildResult.errors.map((error) => `esbuild error: ${error.text}`));
171
+ messages.push(
172
+ ...buildResult.errors.map((error) => `esbuild error: ${error.text}`)
173
+ );
154
174
  if (messages.length > 0) {
155
175
  throw new Error(`esbuild failed ${JSON.stringify(messages)}`);
156
176
  }
@@ -159,4 +179,4 @@ async function compile_default({
159
179
  export {
160
180
  compile_default as default
161
181
  };
162
- //# sourceMappingURL=data:application/json;base64,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
182
+ //# sourceMappingURL=data:application/json;base64,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
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@checkdigit/typescript-config","version":"9.1.1-PR.74-63d5","description":"Check Digit standard Typescript configuration","homepage":"https://github.com/checkdigit/typescript-config#readme","bugs":{"url":"https://github.com/checkdigit/typescript-config/issues"},"repository":{"type":"git","url":"git+https://github.com/checkdigit/typescript-config.git"},"license":"MIT","author":"Check Digit, LLC","type":"module","exports":{".":{"types":"./dist-types/index.d.ts","import":"./dist-mjs/index.mjs","default":"./tsconfig.json"}},"bin":{"builder":"./bin/builder.mjs"},"files":["bin","tsconfig.json","src","dist-types","dist-mjs","!src/**/test/**","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/test/**","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-mjs/**/test/**","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"build":"npm run build:builder && npm run build:types && npm run build:mjs && npm run build:mjs-bundle && npm run build:mjs-bundle-minify && npm run build:mjs-bundle-no-external","build:builder":"esbuild src/builder.ts --bundle --platform=node --format=esm --external:typescript --external:esbuild --outfile=build-builder/builder.mjs && mkdir -p bin && { echo '#!/usr/bin/env node'; cat build-builder/builder.mjs; } > bin/builder.mjs && chmod +x bin/builder.mjs","build:dist-mjs":"rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","build:mjs":"rimraf build-mjs && bin/builder.mjs --type=module --outDir=build-mjs","build:mjs-bundle":"rimraf build-mjs-bundle && bin/builder.mjs --type=module --outDir=build-mjs-bundle --entryPoint=index.test.ts --outFile=index.test.mjs","build:mjs-bundle-minify":"rimraf build-mjs-bundle-minify && bin/builder.mjs --type=module --minify --outDir=build-mjs-bundle-minify --entryPoint=index.test.ts --outFile=index.test.mjs","build:mjs-bundle-no-external":"rimraf build-mjs-bundle-no-external && bin/builder.mjs --type=module --external=./node_modules/* --outDir=build-mjs-bundle-no-external --entryPoint=index.test.ts --outFile=index.test.mjs --minify","build:types":"rimraf build-types && bin/builder.mjs --type=types --outDir=build-types","ci:compile":"tsc --noEmit --rootDir src","ci:lint":"npm run lint","ci:style":"npm run prettier","ci:test":"npm run build && npm run test:node-mjs && npm run test:mjs && npm run test:mjs-bundle && npm run test:mjs-bundle-no-external","lint":"eslint --max-warnings 0 .","lint:fix":"eslint . --fix","prepare":"","prepublishOnly":"npm run build:builder && npm run build:dist-types && npm run build:dist-mjs","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style","test:mjs":"node --test build-mjs/test/index.mjs","test:mjs-bundle":"node --test build-mjs-bundle/index.test.mjs","test:mjs-bundle-minify":"node --test build-mjs-bundle-minify/index.test.mjs","test:mjs-bundle-no-external":"node --test build-mjs-bundle-no-external/index.test.mjs","test:node-mjs":"node --disable-warning ExperimentalWarning --experimental-strip-types --test-timeout 600000 --test \"src/**/*.spec.ts\""},"prettier":"@checkdigit/prettier-config","devDependencies":{"@checkdigit/prettier-config":"^6.3.0","@eslint/js":"^9.22.0","@eslint/json":"^0.11.0","@eslint/markdown":"^6.3.0","eslint":"^9.22.0","eslint-config-prettier":"^10.1.1","eslint-plugin-yml":"^1.17.0","rimraf":"^6.0.1","typescript-eslint":"^8.26.1"},"peerDependencies":{"@swc-node/register":"1.10.10","@types/node":">=22","esbuild":"0.25.1","typescript":">=5.8.2 <5.9.0"},"engines":{"node":">=22.14"}}
1
+ {"name":"@checkdigit/typescript-config","version":"9.2.0-PR.76-0a46","description":"Check Digit standard Typescript configuration","homepage":"https://github.com/checkdigit/typescript-config#readme","bugs":{"url":"https://github.com/checkdigit/typescript-config/issues"},"repository":{"type":"git","url":"git+https://github.com/checkdigit/typescript-config.git"},"license":"MIT","author":"Check Digit, LLC","type":"module","exports":{".":{"types":"./dist-types/index.d.ts","import":"./dist-mjs/index.mjs","default":"./tsconfig.json"}},"bin":{"builder":"./bin/builder.mjs"},"files":["bin","tsconfig.json","src","dist-types","dist-mjs","!src/**/test/**","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/test/**","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-mjs/**/test/**","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"build":"npm run build:builder && npm run build:types && npm run build:mjs && npm run build:mjs-bundle && npm run build:mjs-bundle-minify && npm run build:mjs-bundle-no-external","build:builder":"esbuild src/builder.ts --bundle --platform=node --format=esm --external:typescript --external:esbuild --outfile=build-builder/builder.mjs && mkdir -p bin && { echo '#!/usr/bin/env node'; cat build-builder/builder.mjs; } > bin/builder.mjs && chmod +x bin/builder.mjs","build:dist-mjs":"rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","build:mjs":"rimraf build-mjs && bin/builder.mjs --type=module --outDir=build-mjs","build:mjs-bundle":"rimraf build-mjs-bundle && bin/builder.mjs --type=module --outDir=build-mjs-bundle --entryPoint=index.test.ts --outFile=index.test.mjs","build:mjs-bundle-minify":"rimraf build-mjs-bundle-minify && bin/builder.mjs --type=module --minify --outDir=build-mjs-bundle-minify --entryPoint=index.test.ts --outFile=index.test.mjs","build:mjs-bundle-no-external":"rimraf build-mjs-bundle-no-external && bin/builder.mjs --type=module --external=./node_modules/* --outDir=build-mjs-bundle-no-external --entryPoint=index.test.ts --outFile=index.test.mjs --minify","build:types":"rimraf build-types && bin/builder.mjs --type=types --outDir=build-types","ci:compile":"tsc --noEmit --rootDir src","ci:lint":"npm run lint","ci:style":"npm run prettier","ci:test":"npm run build && npm run test:node-mjs && npm run test:mjs && npm run test:mjs-bundle && npm run test:mjs-bundle-no-external","lint":"eslint --max-warnings 0 .","lint:fix":"eslint . --fix","prepare":"","prepublishOnly":"npm run build:builder && npm run build:dist-types && npm run build:dist-mjs","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style","test:mjs":"node --test build-mjs/test/index.mjs","test:mjs-bundle":"node --test build-mjs-bundle/index.test.mjs","test:mjs-bundle-minify":"node --test build-mjs-bundle-minify/index.test.mjs","test:mjs-bundle-no-external":"node --test build-mjs-bundle-no-external/index.test.mjs","test:node-mjs":"node --disable-warning ExperimentalWarning --experimental-strip-types --test-timeout 600000 --test \"src/**/*.spec.ts\""},"prettier":"@checkdigit/prettier-config","devDependencies":{"@checkdigit/prettier-config":"^7.1.1","@eslint/js":"^9.30.0","@eslint/json":"^0.12.0","@eslint/markdown":"^6.6.0","eslint":"^9.30.0","eslint-config-prettier":"^10.1.5","eslint-plugin-yml":"^1.18.0","rimraf":"^6.0.1","typescript-eslint":"^8.35.1"},"peerDependencies":{"@swc-node/register":"1.10.10","@types/node":">=22","esbuild":"0.25.5","typescript":">=5.8.3 <5.9.0"},"engines":{"node":">=22.15"}}
package/src/analyze.ts CHANGED
@@ -4,27 +4,45 @@ import { strict as assert } from 'node:assert';
4
4
 
5
5
  import type { Metafile } from 'esbuild';
6
6
 
7
- export default function analyze(metafile: Metafile): { sourceBytes: number; moduleBytes: number; totalBytes: number } {
8
- const source = new Set(Object.keys(metafile.inputs).filter((key) => !key.startsWith('node_modules')));
9
- const modules = new Set(Object.keys(metafile.inputs).filter((key) => key.startsWith('node_modules')));
7
+ export default function analyze(metafile: Metafile): {
8
+ sourceBytes: number;
9
+ moduleBytes: number;
10
+ totalBytes: number;
11
+ } {
12
+ const source = new Set(
13
+ Object.keys(metafile.inputs).filter(
14
+ (key) => !key.startsWith('node_modules'),
15
+ ),
16
+ );
17
+ const modules = new Set(
18
+ Object.keys(metafile.inputs).filter((key) =>
19
+ key.startsWith('node_modules'),
20
+ ),
21
+ );
10
22
 
11
23
  const [output] = Object.entries(metafile.outputs);
12
24
  assert.ok(output !== undefined);
13
25
  const [, bundle] = output;
14
26
 
15
- const sourceBytes = Object.entries(bundle.inputs).reduce((bytes, [file, value]) => {
16
- if (source.has(file)) {
17
- return bytes + value.bytesInOutput;
18
- }
19
- return bytes;
20
- }, 0);
27
+ const sourceBytes = Object.entries(bundle.inputs).reduce(
28
+ (bytes, [file, value]) => {
29
+ if (source.has(file)) {
30
+ return bytes + value.bytesInOutput;
31
+ }
32
+ return bytes;
33
+ },
34
+ 0,
35
+ );
21
36
 
22
- const moduleBytes = Object.entries(bundle.inputs).reduce((bytes, [file, value]) => {
23
- if (modules.has(file)) {
24
- return bytes + value.bytesInOutput;
25
- }
26
- return bytes;
27
- }, 0);
37
+ const moduleBytes = Object.entries(bundle.inputs).reduce(
38
+ (bytes, [file, value]) => {
39
+ if (modules.has(file)) {
40
+ return bytes + value.bytesInOutput;
41
+ }
42
+ return bytes;
43
+ },
44
+ 0,
45
+ );
28
46
 
29
47
  return {
30
48
  sourceBytes,
package/src/builder.ts CHANGED
@@ -8,7 +8,16 @@ import { parseArgs } from 'node:util';
8
8
  import { analyze, compile } from './index.ts';
9
9
 
10
10
  const {
11
- values: { type, inDir, outDir, entryPoint, outFile, external, minify, sourceMap },
11
+ values: {
12
+ type,
13
+ inDir,
14
+ outDir,
15
+ entryPoint,
16
+ outFile,
17
+ external,
18
+ minify,
19
+ sourceMap,
20
+ },
12
21
  } = parseArgs({
13
22
  options: {
14
23
  type: { type: 'string', short: 't', default: 'module' },
@@ -22,7 +31,10 @@ const {
22
31
  },
23
32
  });
24
33
 
25
- assert.ok(type === 'module' || type === 'types', 'type must be types or module');
34
+ assert.ok(
35
+ type === 'module' || type === 'types',
36
+ 'type must be types or module',
37
+ );
26
38
 
27
39
  const compileResult = await compile({
28
40
  type,
@@ -46,7 +58,10 @@ await Promise.all(
46
58
  // write metafile.json
47
59
  if (compileResult.metafile !== undefined) {
48
60
  const analysis = analyze(compileResult.metafile);
49
- await fs.writeFile(path.join(outDir, 'metafile.json'), JSON.stringify(compileResult.metafile, undefined, 2));
61
+ await fs.writeFile(
62
+ path.join(outDir, 'metafile.json'),
63
+ JSON.stringify(compileResult.metafile, undefined, 2),
64
+ );
50
65
 
51
66
  // eslint-disable-next-line no-console
52
67
  console.log(
package/src/compile.ts CHANGED
@@ -157,7 +157,9 @@ function excludeSourceMaps(filter: RegExp) {
157
157
  function resolveTypescriptPaths() {
158
158
  return (pluginBuild: PluginBuild) => {
159
159
  // rewrite paths based on standard node resolution
160
- pluginBuild.onResolve({ filter: /.*/u }, async (resolved) => {
160
+ // Note: the /u flag cannot be used here because the underlying Go implementation does not support it
161
+ // eslint-disable-next-line require-unicode-regexp
162
+ pluginBuild.onResolve({ filter: /.*/ }, async (resolved) => {
161
163
  if (
162
164
  resolved.kind === 'entry-point' ||
163
165
  !resolved.path.startsWith('.') ||
@@ -168,7 +170,9 @@ function resolveTypescriptPaths() {
168
170
  }
169
171
  let isDirectory = false;
170
172
  try {
171
- const stats = await fs.lstat(path.join(resolved.resolveDir, resolved.path));
173
+ const stats = await fs.lstat(
174
+ path.join(resolved.resolveDir, resolved.path),
175
+ );
172
176
  isDirectory = stats.isDirectory();
173
177
  } catch {
174
178
  // do nothing
@@ -199,18 +203,25 @@ export default async function ({
199
203
  const messages: string[] = [];
200
204
 
201
205
  assert.ok(
202
- (entryPoint === undefined && outFile === undefined) || (entryPoint !== undefined && outFile !== undefined),
206
+ (entryPoint === undefined && outFile === undefined) ||
207
+ (entryPoint !== undefined && outFile !== undefined),
203
208
  'entryPoint and outFile must both be provided',
204
209
  );
205
210
 
206
211
  const allSourceFiles = await getFiles(inDir);
207
212
  const productionSourceFiles =
208
- entryPoint === undefined ? allSourceFiles.filter((file) => file.endsWith('.ts')) : [path.join(inDir, entryPoint)];
213
+ entryPoint === undefined
214
+ ? allSourceFiles.filter((file) => file.endsWith('.ts'))
215
+ : [path.join(inDir, entryPoint)];
209
216
 
210
217
  /**
211
218
  * Emit declarations using TypeScript compiler if the type is 'types'. Otherwise, compile to ensure the build is good.
212
219
  */
213
- const compilerOptions = typescript.parseJsonConfigFileContent(tsConfigJson, typescript.sys, outDir).options;
220
+ const compilerOptions = typescript.parseJsonConfigFileContent(
221
+ tsConfigJson,
222
+ typescript.sys,
223
+ outDir,
224
+ ).options;
214
225
  const program = typescript.createProgram(productionSourceFiles, {
215
226
  ...compilerOptions,
216
227
  noEmit: type !== 'types',
@@ -229,11 +240,21 @@ export default async function ({
229
240
  for (const diagnostic of allDiagnostics) {
230
241
  if (diagnostic.file) {
231
242
  assert.ok(diagnostic.start !== undefined);
232
- const { line, character } = typescript.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start);
233
- const message = typescript.flattenDiagnosticMessageText(diagnostic.messageText, '\n');
234
- messages.push(`tsc: ${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`);
243
+ const { line, character } = typescript.getLineAndCharacterOfPosition(
244
+ diagnostic.file,
245
+ diagnostic.start,
246
+ );
247
+ const message = typescript.flattenDiagnosticMessageText(
248
+ diagnostic.messageText,
249
+ '\n',
250
+ );
251
+ messages.push(
252
+ `tsc: ${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`,
253
+ );
235
254
  } else {
236
- messages.push(`tsc: ${typescript.flattenDiagnosticMessageText(diagnostic.messageText, '\n')}`);
255
+ messages.push(
256
+ `tsc: ${typescript.flattenDiagnosticMessageText(diagnostic.messageText, '\n')}`,
257
+ );
237
258
  }
238
259
  }
239
260
 
@@ -289,13 +310,17 @@ export default async function ({
289
310
  plugins: [
290
311
  {
291
312
  name: 'exclude-source-maps',
292
- setup: excludeSourceMaps(/node_modules/u),
313
+ // Note: the /u flag cannot be used here because the underlying Go implementation does not support it
314
+ // eslint-disable-next-line require-unicode-regexp
315
+ setup: excludeSourceMaps(/node_modules/),
293
316
  },
294
317
  ],
295
318
  }),
296
319
  });
297
320
 
298
- messages.push(...buildResult.errors.map((error) => `esbuild error: ${error.text}`));
321
+ messages.push(
322
+ ...buildResult.errors.map((error) => `esbuild error: ${error.text}`),
323
+ );
299
324
  if (messages.length > 0) {
300
325
  throw new Error(`esbuild failed ${JSON.stringify(messages)}`);
301
326
  }