@checkdigit/typescript-config 7.0.0-PR.54-a0b3 → 7.0.0-PR.54-665c

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/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License
2
2
 
3
- Copyright (c) 2021-2023 Check Digit, LLC
3
+ Copyright (c) 2021-2024 Check Digit, LLC
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![MIT License](https://img.shields.io/github/license/checkdigit/typescript-config)](https://github.com/checkdigit/typescript-config/blob/master/LICENSE.txt)
4
4
 
5
- Copyright (c) 2022-2024 [Check Digit, LLC](https://checkdigit.com)
5
+ Copyright (c) 20222024 [Check Digit, LLC](https://checkdigit.com)
6
6
 
7
7
  ### Introduction
8
8
 
@@ -12,23 +12,23 @@ This module contains the standard Check Digit Typescript configuration, along wi
12
12
 
13
13
  - currently requires Node 20.11 or above.
14
14
  - emits `esnext`, with the default libraries, to avoid down-leveling. It is intended that application spec tests pick
15
- up any issues with using newer features unavailable in a particular environment. Browsers and NodeJS are fast moving
15
+ up any issues with using newer features unavailable in a particular environment. Browsers and NodeJS are fast-moving
16
16
  targets, and can add language features at any time.
17
- - uses the `module` type of `commonjs`.
17
+ - uses the `module` type of `esnext`.
18
18
  - all compiler options set for maximum strictness.
19
19
 
20
20
  ### Builder
21
21
 
22
- `builder` is a command line tool that generates either CommonJS or ESM modules, from Typescript source. It is intended
23
- to be used when publishing a package to NPM, or to bundle a package for deployment. It uses `tsc` for generating
24
- types, and `esbuild` for generating code.
22
+ `builder` is a command line tool that generates either CommonJS or ESM modules, from the Typescript source.
23
+ It is intended to be used when publishing a package to NPM, or to bundle a package for deployment.
24
+ It uses `tsc` for generating types, and `esbuild` for generating code.
25
25
 
26
26
  **Note:** if building an ESM bundle, the `require` function will be defined as a global variable, to allow
27
27
  dynamic `require`s by CommonJS submodules. This is not a problem for NodeJS, but will cause issues in a browser environment.
28
28
 
29
29
  #### Options
30
30
 
31
- - `--type` the type of output to generate. Defaults to `module` (ESM). Valid values are `commonjs`, `module` or `types`.
31
+ - `--type` the type of output to generate. Defaults to `module` (ESM). Valid values are `module` or `types`.
32
32
  - `--entryPoint` the entry point for the bundle, relative to the inDir. if not provided, the files in the inDir will
33
33
  be processed as individual unbundled files.
34
34
  - `--inDir` the input source code directory.
@@ -42,12 +42,6 @@ dynamic `require`s by CommonJS submodules. This is not a problem for NodeJS, but
42
42
  #### Examples
43
43
 
44
44
  ```
45
- # build commonjs .cjs files from Typescript source
46
- npx builder --type=commonjs --outDir=build-cjs
47
-
48
- # build single-file commonjs .cjs bundle from Typescript source
49
- npx builder --type=commonjs --entryPoint=index.ts --outDir=build-cjs-bundle --outFile=index.cjs
50
-
51
45
  # build ESM .mjs files from Typescript source
52
46
  npx builder --type=module --outDir=build-esm
53
47
 
@@ -75,10 +69,10 @@ the new version of Typescript, and/or without emitting warnings during these tes
75
69
 
76
70
  Strict semver is a little complicated, as Typescript itself does not adhere to semver. So our "best effort" policy is:
77
71
 
78
- - Each update to the minimum Node target (e.g. Node 18 to Node 20), or a change to a major compiler output option
72
+ - Each update to the minimum Node target (e.g., Node 18 to Node 20), or a change to a major compiler output option
79
73
  (e.g. `module`, `target` or `moduleResolution`) will result in a new major version of this module.
80
- We coordinate this with whatever the latest LTS version of Node is currently supported by Amazon Lambda, Google Cloud Functions
81
- and Azure Functions.
74
+ We coordinate this with whatever the latest LTS version of Node is currently supported by Amazon Lambda,
75
+ Google Cloud Functions, and Azure Functions.
82
76
  - Each new "major" version of Typescript (e.g. `4.2.x` to `4.3.x`) will result in a new minor version of this module.
83
77
  - A new minor update of Typescript (e.g. `4.3.1` to `4.3.2`) _may_ result in a patch, in
84
78
  a situation where a specific need or issue requires setting a new minimum version of Typescript.
package/bin/builder.mjs CHANGED
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
- // src/builder/index.mts
2
+ // src/builder/index.ts
3
3
  import { strict as assert3 } from "node:assert";
4
4
  import { promises as fs2 } from "node:fs";
5
5
  import path2 from "node:path";
6
6
  import { parseArgs } from "node:util";
7
7
 
8
- // src/builder/builder.mts
8
+ // src/builder/builder.ts
9
9
  import { strict as assert } from "node:assert";
10
10
  import { promises as fs } from "node:fs";
11
11
  import path from "node:path";
@@ -30,7 +30,7 @@ async function getFiles(directory) {
30
30
  function excludeSourceMaps(filter) {
31
31
  return (pluginBuild) => {
32
32
  pluginBuild.onLoad({ filter }, async (args) => {
33
- if (args.path.endsWith(".js") || args.path.endsWith(".mjs") || args.path.endsWith(".cjs")) {
33
+ if (args.path.endsWith(".js") || args.path.endsWith(".mjs")) {
34
34
  return {
35
35
  contents: `${await fs.readFile(
36
36
  args.path,
@@ -44,8 +44,7 @@ function excludeSourceMaps(filter) {
44
44
  });
45
45
  };
46
46
  }
47
- function resolveTypescriptPaths(type2) {
48
- const extension = type2 === "module" ? "mjs" : "cjs";
47
+ function resolveTypescriptPaths() {
49
48
  return (pluginBuild) => {
50
49
  pluginBuild.onResolve({ filter: /.*/u }, async (resolved) => {
51
50
  if (resolved.kind === "entry-point" || !resolved.path.startsWith(".") || resolved.path.endsWith(".js") || resolved.path.endsWith(".json")) {
@@ -58,7 +57,7 @@ function resolveTypescriptPaths(type2) {
58
57
  } catch {
59
58
  }
60
59
  let newPath = resolved.path;
61
- newPath += isDirectory ? `/index.${extension}` : `.${extension}`;
60
+ newPath += isDirectory ? `/index.mjs` : `.mjs`;
62
61
  return { path: newPath, external: true };
63
62
  });
64
63
  };
@@ -145,7 +144,7 @@ async function builder_default({
145
144
  minify: minify2,
146
145
  absWorkingDir: workingDirectory,
147
146
  platform: "node",
148
- format: type2 === "module" ? "esm" : "cjs",
147
+ format: "esm",
149
148
  treeShaking: type2 === "module",
150
149
  write: false,
151
150
  metafile: outFile2 !== void 0,
@@ -157,11 +156,11 @@ async function builder_default({
157
156
  ...outFile2 === void 0 ? {
158
157
  // individual files
159
158
  outdir: outDir2,
160
- outExtension: { ".js": type2 === "module" ? ".mjs" : ".cjs" },
159
+ outExtension: { ".js": ".mjs" },
161
160
  plugins: [
162
161
  {
163
162
  name: "resolve-typescript-paths",
164
- setup: resolveTypescriptPaths(type2)
163
+ setup: resolveTypescriptPaths()
165
164
  }
166
165
  ]
167
166
  } : {
@@ -185,7 +184,7 @@ async function builder_default({
185
184
  return buildResult2;
186
185
  }
187
186
 
188
- // src/builder/analyze.mts
187
+ // src/builder/analyze.ts
189
188
  import { strict as assert2 } from "node:assert";
190
189
  function analyze(metafile) {
191
190
  const source = new Set(Object.keys(metafile.inputs).filter((key) => !key.startsWith("node_modules")));
@@ -212,7 +211,7 @@ function analyze(metafile) {
212
211
  };
213
212
  }
214
213
 
215
- // src/builder/index.mts
214
+ // src/builder/index.ts
216
215
  var {
217
216
  values: { type, inDir, outDir, entryPoint, outFile, external, minify, sourceMap }
218
217
  } = parseArgs({
@@ -227,7 +226,7 @@ var {
227
226
  sourceMap: { type: "boolean", short: "s", default: false }
228
227
  }
229
228
  });
230
- assert3.ok(type === "module" || type === "commonjs" || type === "types", "type must be types, module or commonjs");
229
+ assert3.ok(type === "module" || type === "types", "type must be types or module");
231
230
  assert3.ok(inDir !== void 0, "inDir is required");
232
231
  assert3.ok(outDir !== void 0, "outDir is required");
233
232
  var buildResult = await builder_default({
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@checkdigit/typescript-config","version":"7.0.0-PR.54-a0b3","description":"Check Digit standard Typescript configuration","prettier":"@checkdigit/prettier-config","engines":{"node":">=20.11"},"bin":{"builder":"./bin/builder.mjs"},"peerDependencies":{"@types/node":">=20.11","esbuild":"0.20.0","typescript":"5.4.0-beta"},"repository":{"type":"git","url":"git+https://github.com/checkdigit/typescript-config.git"},"author":"Check Digit, LLC","license":"MIT","bugs":{"url":"https://github.com/checkdigit/typescript-config/issues"},"homepage":"https://github.com/checkdigit/typescript-config#readme","scripts":{"prepublishOnly":"npm run build-builder","lint:fix":"eslint --ignore-path .gitignore . --fix","lint":"eslint --max-warnings 0 --ignore-path .gitignore .","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","build-builder":"esbuild src/builder/index.mts --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-types":"rimraf build-types && bin/builder.mjs --type=types --outDir=build-types","build-cjs":"rimraf build-cjs && bin/builder.mjs --type=commonjs --outDir=build-cjs","build-cjs-bundle":"rimraf build-cjs-bundle && bin/builder.mjs --type=commonjs --entryPoint=test/index.test.ts --outDir=build-cjs-bundle --outFile=test/index.test.cjs --sourceMap","build-cjs-bundle-minify":"rimraf build-cjs-bundle-minify && bin/builder.mjs --type=commonjs --entryPoint=test/index.test.ts --outDir=build-cjs-bundle-minify --outFile=test/index.test.cjs --minify --sourceMap","build-cjs-bundle-no-external":"rimraf build-cjs-bundle-no-external && bin/builder.mjs --type=commonjs --external=./node_modules/* --entryPoint=test/index.test.ts --outDir=build-cjs-bundle-no-external --outFile=test/index.test.cjs","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=test/index.test.ts --outFile=test/index.test.mjs","build-mjs-bundle-minify":"rimraf build-mjs-bundle-minify && bin/builder.mjs --type=module --minify --outDir=build-mjs-bundle-minify --entryPoint=test/index.test.ts --outFile=test/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=test/index.test.ts --outFile=test/index.test.mjs --minify","test-jest-mjs":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false src/*.mts src/*/*.mts src/*/*/*.mts","test-jest-cjs":"jest --coverage=false src/*.ts src/*/*.ts src/*/*/*.ts","test-cjs":"node --test build-cjs/test/index.test.cjs","test-cjs-bundle":"node --test build-cjs-bundle/test/index.test.cjs","test-cjs-bundle-minify":"node --test build-cjs-bundle-minify/test/index.test.cjs","test-cjs-bundle-no-external":"node --test build-cjs-bundle-no-external/test/index.test.cjs","test-mjs":"node --test build-mjs/test/index.test.mjs","test-mjs-bundle":"node --test build-mjs-bundle/test/index.test.mjs","test-mjs-bundle-minify":"node --test build-mjs-bundle-minify/test/index.test.mjs","test-mjs-bundle-no-external":"node --test build-mjs-bundle-no-external/test/index.test.mjs","ci:test":"npm run test-jest-cjs && npm run test-jest-mjs && npm run test-cjs && npm run test-cjs-bundle && npm run test-cjs-bundle-no-external && npm run test-mjs && npm run test-mjs-bundle && npm run test-mjs-bundle-no-external","ci:compile":"tsc --noEmit && npm run build-builder && npm run build-types && npm run build-cjs && npm run build-cjs-bundle && npm run build-cjs-bundle-minify && npm run build-cjs-bundle-no-external && npm run build-mjs && npm run build-mjs-bundle && npm run build-mjs-bundle-minify && npm run build-mjs-bundle-no-external","ci:lint":"npm run lint","ci:style":"npm run prettier"},"devDependencies":{"@apidevtools/json-schema-ref-parser":"^11.1.0","@checkdigit/prettier-config":"^5.2.0","@types/debug":"^4.1.12","@types/jest":"^29.5.11","@types/uuid":"^9.0.8","@typescript-eslint/eslint-plugin":"^6.20.0","@typescript-eslint/parser":"^6.20.0","debug":"^4.3.4","eslint":"^8.56.0","eslint-config-prettier":"^9.1.0","get-port":"^7.0.0","got":"^11.8.6","jest":"^29.7.0","node-fetch":"^3.3.2","rimraf":"^5.0.5","ts-jest":"^29.1.2","uuid":"^9.0.1"},"eslintConfig":{"parser":"@typescript-eslint/parser","plugins":["@typescript-eslint"],"parserOptions":{"project":"./tsconfig.json"},"extends":["eslint:all","plugin:@typescript-eslint/recommended","plugin:@typescript-eslint/recommended-requiring-type-checking","plugin:@typescript-eslint/strict","prettier"],"rules":{"@typescript-eslint/non-nullable-type-assertion-style":"error","capitalized-comments":"off","one-var":"off","sort-keys":"off","sort-imports":"off","max-lines":["error",{"max":500,"skipBlankLines":true,"skipComments":true}],"func-style":["error","declaration",{"allowArrowFunctions":true}],"no-magic-numbers":["error",{"ignore":[0,1,2]}],"no-undefined":"off","no-ternary":"off"},"overrides":[{"files":["*.spec.mts","*.test.mts","*.spec.ts","*.test.ts"],"rules":{"@typescript-eslint/non-nullable-type-assertion-style":"off","@typescript-eslint/ban-types":"off","@typescript-eslint/require-await":"off","@typescript-eslint/consistent-type-definitions":"off","@typescript-eslint/ban-ts-comment":"off","@typescript-eslint/no-unnecessary-condition":"off","@typescript-eslint/consistent-indexed-object-style":"off","@typescript-eslint/no-unused-vars":"off","@typescript-eslint/no-unsafe-member-access":"off","line-comment-position":"off","no-fallthrough":"off","no-inline-comments":"off","no-param-reassign":"off","id-length":"off","no-magic-numbers":"off","func-names":"off","no-duplicate-imports":"off","symbol-description":"off","no-invalid-this":"off","max-lines-per-function":"off","max-lines":"off","max-statements":"off","no-await-in-loop":"off"}}]},"jest":{"moduleFileExtensions":["js","mjs","cjs","ts","mts","json","node"],"extensionsToTreatAsEsm":[".mts"],"transform":{"^.+\\.mts$":["ts-jest",{"isolatedModules":true,"diagnostics":false,"useESM":true}],"^.+\\.ts$":["ts-jest",{"isolatedModules":true,"diagnostics":false,"useESM":false}]},"collectCoverageFrom":["<rootDir>/src/**"],"testMatch":["<rootDir>/src/**/*.spec.ts","<rootDir>/src/**/*.spec.mts"]},"files":["bin","tsconfig.json","SECURITY.md"],"overrides":{"typescript":"5.4.0-beta"}}
1
+ {"name":"@checkdigit/typescript-config","version":"7.0.0-PR.54-665c","description":"Check Digit standard Typescript configuration","prettier":"@checkdigit/prettier-config","engines":{"node":">=20.11"},"type":"module","bin":{"builder":"./bin/builder.mjs"},"peerDependencies":{"@types/node":">=20.11","esbuild":"0.20.0","typescript":"5.4.0-beta"},"repository":{"type":"git","url":"git+https://github.com/checkdigit/typescript-config.git"},"author":"Check Digit, LLC","license":"MIT","bugs":{"url":"https://github.com/checkdigit/typescript-config/issues"},"homepage":"https://github.com/checkdigit/typescript-config#readme","scripts":{"prepublishOnly":"npm run build-builder","lint:fix":"eslint --ignore-path .gitignore . --fix","lint":"eslint --max-warnings 0 --ignore-path .gitignore .","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","build-builder":"esbuild src/builder/index.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-types":"rimraf build-types && bin/builder.mjs --type=types --outDir=build-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=test/index.test.ts --outFile=test/index.test.mjs","build-mjs-bundle-minify":"rimraf build-mjs-bundle-minify && bin/builder.mjs --type=module --minify --outDir=build-mjs-bundle-minify --entryPoint=test/index.test.ts --outFile=test/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=test/index.test.ts --outFile=test/index.test.mjs --minify","test-jest-mjs":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false","test-mjs":"node --test build-mjs/test/index.test.mjs","test-mjs-bundle":"node --test build-mjs-bundle/test/index.test.mjs","test-mjs-bundle-minify":"node --test build-mjs-bundle-minify/test/index.test.mjs","test-mjs-bundle-no-external":"node --test build-mjs-bundle-no-external/test/index.test.mjs","ci:test":"npm run test-jest-mjs && npm run test-mjs && npm run test-mjs-bundle && npm run test-mjs-bundle-no-external","ci:compile":"tsc --noEmit && 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","ci:lint":"npm run lint","ci:style":"npm run prettier"},"devDependencies":{"@apidevtools/json-schema-ref-parser":"^11.1.0","@checkdigit/prettier-config":"^5.2.0","@types/debug":"^4.1.12","@types/jest":"^29.5.11","@types/uuid":"^9.0.8","@typescript-eslint/eslint-plugin":"^6.20.0","@typescript-eslint/parser":"^6.20.0","debug":"^4.3.4","eslint":"^8.56.0","eslint-config-prettier":"^9.1.0","jest":"^29.7.0","node-fetch":"^3.3.2","rimraf":"^5.0.5","ts-jest":"^29.1.2","uuid":"^9.0.1"},"eslintConfig":{"parser":"@typescript-eslint/parser","plugins":["@typescript-eslint"],"parserOptions":{"project":"./tsconfig.json"},"extends":["eslint:all","plugin:@typescript-eslint/recommended","plugin:@typescript-eslint/recommended-requiring-type-checking","plugin:@typescript-eslint/strict","prettier"],"rules":{"@typescript-eslint/non-nullable-type-assertion-style":"error","capitalized-comments":"off","one-var":"off","sort-keys":"off","sort-imports":"off","max-lines":["error",{"max":500,"skipBlankLines":true,"skipComments":true}],"func-style":["error","declaration",{"allowArrowFunctions":true}],"no-magic-numbers":["error",{"ignore":[0,1,2]}],"no-undefined":"off","no-ternary":"off"},"overrides":[{"files":["*.spec.ts","*.test.ts"],"rules":{"@typescript-eslint/non-nullable-type-assertion-style":"off","@typescript-eslint/ban-types":"off","@typescript-eslint/require-await":"off","@typescript-eslint/consistent-type-definitions":"off","@typescript-eslint/ban-ts-comment":"off","@typescript-eslint/no-unnecessary-condition":"off","@typescript-eslint/consistent-indexed-object-style":"off","@typescript-eslint/no-unused-vars":"off","@typescript-eslint/no-unsafe-member-access":"off","line-comment-position":"off","no-fallthrough":"off","no-inline-comments":"off","no-param-reassign":"off","id-length":"off","no-magic-numbers":"off","func-names":"off","no-duplicate-imports":"off","symbol-description":"off","no-invalid-this":"off","max-lines-per-function":"off","max-lines":"off","max-statements":"off","no-await-in-loop":"off"}}]},"jest":{"moduleFileExtensions":["js","mjs","cjs","ts","json","node"],"extensionsToTreatAsEsm":[".ts"],"transform":{"^.+\\.ts$":["ts-jest",{"isolatedModules":true,"diagnostics":false,"useESM":true}]},"collectCoverageFrom":["<rootDir>/src/**"],"testMatch":["<rootDir>/src/**/*.spec.ts"]},"files":["bin","tsconfig.json","SECURITY.md"],"overrides":{"typescript":"5.4.0-beta"}}