@checkdigit/typescript-config 5.1.1-PR.49-d349 → 5.1.1-PR.49-8f68
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/bin/builder.mjs +39 -9
- package/package.json +1 -1
package/bin/builder.mjs
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env node
|
2
2
|
// src/builder/index.mts
|
3
|
-
import { strict as
|
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";
|
@@ -71,7 +71,8 @@ async function builder_default({
|
|
71
71
|
outFile: outFile2,
|
72
72
|
external: external2 = [],
|
73
73
|
minify: minify2 = false,
|
74
|
-
sourceMap: sourceMap2
|
74
|
+
sourceMap: sourceMap2,
|
75
|
+
workingDirectory = process.cwd()
|
75
76
|
}) {
|
76
77
|
const messages = [];
|
77
78
|
assert.ok(
|
@@ -113,7 +114,10 @@ async function builder_default({
|
|
113
114
|
useUnknownInCatchVariables: true,
|
114
115
|
exactOptionalPropertyTypes: true
|
115
116
|
});
|
116
|
-
const
|
117
|
+
const declarationFiles = [];
|
118
|
+
const emitResult = program.emit(void 0, (fileName, data) => {
|
119
|
+
declarationFiles.push({ path: fileName, text: data });
|
120
|
+
});
|
117
121
|
const allDiagnostics = typescript.sortAndDeduplicateDiagnostics([
|
118
122
|
...typescript.getPreEmitDiagnostics(program),
|
119
123
|
...emitResult.diagnostics
|
@@ -133,13 +137,14 @@ async function builder_default({
|
|
133
137
|
}
|
134
138
|
if (type2 === "types") {
|
135
139
|
return {
|
136
|
-
outputFiles:
|
140
|
+
outputFiles: declarationFiles
|
137
141
|
};
|
138
142
|
}
|
139
143
|
const buildResult2 = await build({
|
140
144
|
entryPoints: productionSourceFiles,
|
141
145
|
bundle: true,
|
142
146
|
minify: minify2,
|
147
|
+
absWorkingDir: workingDirectory,
|
143
148
|
platform: "node",
|
144
149
|
format: type2 === "module" ? "esm" : "cjs",
|
145
150
|
treeShaking: type2 === "module",
|
@@ -182,8 +187,30 @@ async function builder_default({
|
|
182
187
|
}
|
183
188
|
|
184
189
|
// src/builder/analyze.mts
|
190
|
+
import { strict as assert2 } from "node:assert";
|
185
191
|
function analyze(metafile) {
|
186
|
-
|
192
|
+
const source = new Set(Object.keys(metafile.inputs).filter((key) => !key.startsWith("node_modules")));
|
193
|
+
const modules = new Set(Object.keys(metafile.inputs).filter((key) => key.startsWith("node_modules")));
|
194
|
+
const [output] = Object.entries(metafile.outputs);
|
195
|
+
assert2.ok(output !== void 0);
|
196
|
+
const [, bundle] = output;
|
197
|
+
const sourceBytes = Object.entries(bundle.inputs).reduce((bytes, [file, value]) => {
|
198
|
+
if (source.has(file)) {
|
199
|
+
return bytes + value.bytesInOutput;
|
200
|
+
}
|
201
|
+
return bytes;
|
202
|
+
}, 0);
|
203
|
+
const moduleBytes = Object.entries(bundle.inputs).reduce((bytes, [file, value]) => {
|
204
|
+
if (modules.has(file)) {
|
205
|
+
return bytes + value.bytesInOutput;
|
206
|
+
}
|
207
|
+
return bytes;
|
208
|
+
}, 0);
|
209
|
+
return {
|
210
|
+
sourceBytes,
|
211
|
+
moduleBytes,
|
212
|
+
totalBytes: bundle.bytes
|
213
|
+
};
|
187
214
|
}
|
188
215
|
|
189
216
|
// src/builder/index.mts
|
@@ -201,9 +228,9 @@ var {
|
|
201
228
|
sourceMap: { type: "boolean", short: "s", default: false }
|
202
229
|
}
|
203
230
|
});
|
204
|
-
|
205
|
-
|
206
|
-
|
231
|
+
assert3.ok(type === "module" || type === "commonjs" || type === "types", "type must be types, module or commonjs");
|
232
|
+
assert3.ok(inDir !== void 0, "inDir is required");
|
233
|
+
assert3.ok(outDir !== void 0, "outDir is required");
|
207
234
|
var buildResult = await builder_default({
|
208
235
|
type,
|
209
236
|
inDir: path2.join(process.cwd(), inDir),
|
@@ -221,6 +248,9 @@ await Promise.all(
|
|
221
248
|
})
|
222
249
|
);
|
223
250
|
if (buildResult.metafile !== void 0) {
|
224
|
-
analyze(buildResult.metafile);
|
251
|
+
const analysis = analyze(buildResult.metafile);
|
225
252
|
await fs2.writeFile(path2.join(outDir, "metafile.json"), JSON.stringify(buildResult.metafile, void 0, 2));
|
253
|
+
console.log(
|
254
|
+
`${outFile}: src ${analysis.sourceBytes}, node_modules ${analysis.moduleBytes}, total ${analysis.totalBytes}`
|
255
|
+
);
|
226
256
|
}
|
package/package.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"name":"@checkdigit/typescript-config","version":"5.1.1-PR.49-
|
1
|
+
{"name":"@checkdigit/typescript-config","version":"5.1.1-PR.49-8f68","description":"Check Digit standard Typescript configuration","prettier":"@checkdigit/prettier-config","engines":{"node":">=18"},"bin":{"builder":"./bin/builder.mjs"},"peerDependencies":{"@types/node":">=18","esbuild":"0.19.5","typescript":">=5.2.2 <5.3"},"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-esm":"rimraf build-esm && bin/builder.mjs --type=module --outDir=build-esm","build-esm-bundle":"rimraf build-esm-bundle && bin/builder.mjs --type=module --outDir=build-esm-bundle --entryPoint=test/index.test.ts --outFile=test/index.test.mjs","build-esm-bundle-minify":"rimraf build-esm-bundle-minify && bin/builder.mjs --type=module --minify --outDir=build-esm-bundle-minify --entryPoint=test/index.test.ts --outFile=test/index.test.mjs","build-esm-bundle-no-external":"rimraf build-esm-bundle-no-external && bin/builder.mjs --type=module --external=./node_modules/* --outDir=build-esm-bundle-no-external --entryPoint=test/index.test.ts --outFile=test/index.test.mjs --minify","test-jest-esm":"NODE_OPTIONS=\"--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-esm":"node --test build-esm/test/index.test.mjs","test-esm-bundle":"node --test build-esm-bundle/test/index.test.mjs","test-esm-bundle-minify":"node --test build-esm-bundle-minify/test/index.test.mjs","test-esm-bundle-no-external":"node --test build-esm-bundle-no-external/test/index.test.mjs","ci:test":"npm run test-jest-cjs && npm run test-jest-esm && npm run test-cjs && npm run test-cjs-bundle && npm run test-cjs-bundle-no-external && npm run test-esm && npm run test-esm-bundle && npm run test-esm-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-esm && npm run build-esm-bundle && npm run build-esm-bundle-minify && npm run build-esm-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":"^4.1.0","@types/debug":"^4.1.10","@types/jest":"^29.5.7","@types/uuid":"^9.0.6","@typescript-eslint/eslint-plugin":"^6.9.1","@typescript-eslint/parser":"^6.9.1","debug":"^4.3.4","eslint":"^8.52.0","eslint-config-prettier":"^9.0.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.1","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-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"]}
|