@checkdigit/typescript-config 11.0.0-PR.82-4adb → 11.0.0-PR.82-5210
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
CHANGED
|
@@ -49,7 +49,9 @@ function analyze(metafile) {
|
|
|
49
49
|
// src/compile.ts
|
|
50
50
|
import { strict as assert2 } from "node:assert";
|
|
51
51
|
import { promises as fs } from "node:fs";
|
|
52
|
+
import module from "node:module";
|
|
52
53
|
import path from "node:path";
|
|
54
|
+
import { fileURLToPath } from "node:url";
|
|
53
55
|
import typescript from "typescript";
|
|
54
56
|
import { build } from "esbuild";
|
|
55
57
|
|
|
@@ -58,6 +60,9 @@ var tsconfig_default = {
|
|
|
58
60
|
compilerOptions: {
|
|
59
61
|
target: "esnext",
|
|
60
62
|
moduleResolution: "bundler",
|
|
63
|
+
paths: {
|
|
64
|
+
"@js-temporal/polyfill": ["./src/types/js-temporal-polyfill.d.ts"]
|
|
65
|
+
},
|
|
61
66
|
sourceMap: true,
|
|
62
67
|
inlineSources: true,
|
|
63
68
|
declaration: true,
|
|
@@ -148,6 +153,38 @@ function resolveTypescriptPaths() {
|
|
|
148
153
|
});
|
|
149
154
|
};
|
|
150
155
|
}
|
|
156
|
+
function getTemporalPolyfillModulePath({
|
|
157
|
+
exports
|
|
158
|
+
}) {
|
|
159
|
+
return exports?.["."]?.find((entry) => entry.import?.default !== void 0)?.import?.default;
|
|
160
|
+
}
|
|
161
|
+
function resolveRuntimeTemporalPolyfill(external2) {
|
|
162
|
+
return (pluginBuild) => {
|
|
163
|
+
pluginBuild.onResolve(
|
|
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
|
+
{ filter: /^@js-temporal\/polyfill$/ },
|
|
167
|
+
async (resolved) => {
|
|
168
|
+
const packageJsonPath = module.findPackageJSON(
|
|
169
|
+
resolved.path,
|
|
170
|
+
resolved.resolveDir
|
|
171
|
+
);
|
|
172
|
+
assert2.ok(packageJsonPath !== void 0);
|
|
173
|
+
if (external2.includes("./node_modules/*")) {
|
|
174
|
+
return { path: resolved.path, external: true };
|
|
175
|
+
}
|
|
176
|
+
const packageJson = JSON.parse(
|
|
177
|
+
await fs.readFile(packageJsonPath, "utf8")
|
|
178
|
+
);
|
|
179
|
+
const modulePath = getTemporalPolyfillModulePath(packageJson);
|
|
180
|
+
assert2.ok(modulePath !== void 0);
|
|
181
|
+
return {
|
|
182
|
+
path: path.join(path.dirname(packageJsonPath), modulePath)
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
);
|
|
186
|
+
};
|
|
187
|
+
}
|
|
151
188
|
async function compile_default({
|
|
152
189
|
type: type2,
|
|
153
190
|
entryPoint: entryPoint2,
|
|
@@ -169,7 +206,8 @@ async function compile_default({
|
|
|
169
206
|
const compilerOptions = typescript.parseJsonConfigFileContent(
|
|
170
207
|
tsconfig_default,
|
|
171
208
|
typescript.sys,
|
|
172
|
-
|
|
209
|
+
// @checkdigit/typescript-config package root:
|
|
210
|
+
path.dirname(path.dirname(fileURLToPath(import.meta.url)))
|
|
173
211
|
).options;
|
|
174
212
|
const program = typescript.createProgram(productionSourceFiles, {
|
|
175
213
|
...compilerOptions,
|
|
@@ -246,6 +284,10 @@ async function compile_default({
|
|
|
246
284
|
legalComments: "none",
|
|
247
285
|
external: external2,
|
|
248
286
|
plugins: [
|
|
287
|
+
{
|
|
288
|
+
name: "resolve-runtime-temporal-polyfill",
|
|
289
|
+
setup: resolveRuntimeTemporalPolyfill(external2)
|
|
290
|
+
},
|
|
249
291
|
{
|
|
250
292
|
name: "exclude-source-maps",
|
|
251
293
|
// Note: the /u flag cannot be used here because the underlying Go implementation does not support it
|
package/dist-mjs/compile.mjs
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
// src/compile.ts
|
|
2
2
|
import { strict as assert } from "node:assert";
|
|
3
3
|
import { promises as fs } from "node:fs";
|
|
4
|
+
import module from "node:module";
|
|
4
5
|
import path from "node:path";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
5
7
|
import typescript from "typescript";
|
|
6
8
|
import { build } from "esbuild";
|
|
7
9
|
import tsConfigJson from "../tsconfig.json" with { type: "json" };
|
|
@@ -61,6 +63,38 @@ function resolveTypescriptPaths() {
|
|
|
61
63
|
});
|
|
62
64
|
};
|
|
63
65
|
}
|
|
66
|
+
function getTemporalPolyfillModulePath({
|
|
67
|
+
exports
|
|
68
|
+
}) {
|
|
69
|
+
return exports?.["."]?.find((entry) => entry.import?.default !== void 0)?.import?.default;
|
|
70
|
+
}
|
|
71
|
+
function resolveRuntimeTemporalPolyfill(external) {
|
|
72
|
+
return (pluginBuild) => {
|
|
73
|
+
pluginBuild.onResolve(
|
|
74
|
+
// Note: the /u flag cannot be used here because the underlying Go implementation does not support it
|
|
75
|
+
// eslint-disable-next-line require-unicode-regexp
|
|
76
|
+
{ filter: /^@js-temporal\/polyfill$/ },
|
|
77
|
+
async (resolved) => {
|
|
78
|
+
const packageJsonPath = module.findPackageJSON(
|
|
79
|
+
resolved.path,
|
|
80
|
+
resolved.resolveDir
|
|
81
|
+
);
|
|
82
|
+
assert.ok(packageJsonPath !== void 0);
|
|
83
|
+
if (external.includes("./node_modules/*")) {
|
|
84
|
+
return { path: resolved.path, external: true };
|
|
85
|
+
}
|
|
86
|
+
const packageJson = JSON.parse(
|
|
87
|
+
await fs.readFile(packageJsonPath, "utf8")
|
|
88
|
+
);
|
|
89
|
+
const modulePath = getTemporalPolyfillModulePath(packageJson);
|
|
90
|
+
assert.ok(modulePath !== void 0);
|
|
91
|
+
return {
|
|
92
|
+
path: path.join(path.dirname(packageJsonPath), modulePath)
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
};
|
|
97
|
+
}
|
|
64
98
|
async function compile_default({
|
|
65
99
|
type,
|
|
66
100
|
entryPoint,
|
|
@@ -82,7 +116,8 @@ async function compile_default({
|
|
|
82
116
|
const compilerOptions = typescript.parseJsonConfigFileContent(
|
|
83
117
|
tsConfigJson,
|
|
84
118
|
typescript.sys,
|
|
85
|
-
|
|
119
|
+
// @checkdigit/typescript-config package root:
|
|
120
|
+
path.dirname(path.dirname(fileURLToPath(import.meta.url)))
|
|
86
121
|
).options;
|
|
87
122
|
const program = typescript.createProgram(productionSourceFiles, {
|
|
88
123
|
...compilerOptions,
|
|
@@ -159,6 +194,10 @@ async function compile_default({
|
|
|
159
194
|
legalComments: "none",
|
|
160
195
|
external,
|
|
161
196
|
plugins: [
|
|
197
|
+
{
|
|
198
|
+
name: "resolve-runtime-temporal-polyfill",
|
|
199
|
+
setup: resolveRuntimeTemporalPolyfill(external)
|
|
200
|
+
},
|
|
162
201
|
{
|
|
163
202
|
name: "exclude-source-maps",
|
|
164
203
|
// Note: the /u flag cannot be used here because the underlying Go implementation does not support it
|
|
@@ -179,4 +218,4 @@ async function compile_default({
|
|
|
179
218
|
export {
|
|
180
219
|
compile_default as default
|
|
181
220
|
};
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFtdLAogICJtYXBwaW5ncyI6ICIiLAogICJuYW1lcyI6IFtdCn0K
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@checkdigit/typescript-config","version":"11.0.0-PR.82-
|
|
1
|
+
{"name":"@checkdigit/typescript-config","version":"11.0.0-PR.82-5210","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","tsc":"./node_modules/.bin/tscgo"},"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":"node -e \"require('node:fs').rmSync('dist-mjs', { recursive: true, force: true })\" && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","build:dist-types":"node -e \"require('node:fs').rmSync('dist-types', { recursive: true, force: true })\" && npx builder --type=types --outDir=dist-types","build:mjs":"node -e \"require('node:fs').rmSync('build-mjs', { recursive: true, force: true })\" && bin/builder.mjs --type=module --outDir=build-mjs","build:mjs-bundle":"node -e \"require('node:fs').rmSync('build-mjs-bundle', { recursive: true, force: true })\" && bin/builder.mjs --type=module --outDir=build-mjs-bundle --entryPoint=index.test.ts --outFile=index.test.mjs","build:mjs-bundle-minify":"node -e \"require('node:fs').rmSync('build-mjs-bundle-minify', { recursive: true, force: true })\" && bin/builder.mjs --type=module --minify --outDir=build-mjs-bundle-minify --entryPoint=index.test.ts --outFile=index.test.mjs","build:mjs-bundle-no-external":"node -e \"require('node:fs').rmSync('build-mjs-bundle-no-external', { recursive: true, force: true })\" && 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":"node -e \"require('node:fs').rmSync('build-types', { recursive: true, force: true })\" && bin/builder.mjs --type=types --outDir=build-types","ci:compile":"time tsgo && time tsc","ci:lint":"npm run lint","ci:style":"npm run prettier","ci:test":"npm run build && npm run test:node && npm run test:mjs && npm run test:mjs-bundle && npm run test:mjs-bundle-no-external","lint":"eslint . --max-warnings=0 --concurrency=auto --flag unstable_native_nodejs_ts_config","lint:fix":"eslint . --fix --concurrency=auto --flag unstable_native_nodejs_ts_config","prepare":"","prepublishOnly":"npm run build:builder && npm run build:dist-types && npm run build:dist-mjs","prettier":"prettier . --check","prettier:fix":"prettier . --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":"node --disable-warning ExperimentalWarning --experimental-strip-types --test-timeout 600000 --test \"src/**/*.spec.ts\""},"prettier":"@checkdigit/prettier-config","devDependencies":{"@checkdigit/prettier-config":"^8.1.0","@eslint/js":"^10.0.1","@eslint/json":"^2.0.1","@eslint/markdown":"^8.0.3","@js-temporal/polyfill":"^0.5.1","eslint":"^10.6.0","eslint-config-prettier":"^10.1.8","eslint-plugin-yml":"^3.5.0","typescript-eslint":"^8.62.1"},"peerDependencies":{"@swc-node/register":"1.11.1","@types/node":">=24","@typescript/native-preview":"7.0.0-dev.20260702.3","esbuild":"0.28.1","typescript":">=6.0.3 <7"},"engines":{"node":">=24.14.1 <25 || >=26"}}
|
package/src/compile.ts
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
import { strict as assert } from 'node:assert';
|
|
4
4
|
import { promises as fs } from 'node:fs';
|
|
5
|
+
import module from 'node:module';
|
|
5
6
|
import path from 'node:path';
|
|
7
|
+
import { fileURLToPath } from 'node:url';
|
|
6
8
|
|
|
7
9
|
import typescript from 'typescript';
|
|
8
10
|
import { build, type PluginBuild } from 'esbuild';
|
|
@@ -188,6 +190,57 @@ function resolveTypescriptPaths() {
|
|
|
188
190
|
};
|
|
189
191
|
}
|
|
190
192
|
|
|
193
|
+
/**
|
|
194
|
+
* The Temporal polyfill handling can be removed once Node 26 becomes minimum version
|
|
195
|
+
*/
|
|
196
|
+
interface TemporalPolyfillPackageJson {
|
|
197
|
+
exports?: {
|
|
198
|
+
'.'?: {
|
|
199
|
+
import?: {
|
|
200
|
+
default?: string;
|
|
201
|
+
};
|
|
202
|
+
}[];
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
function getTemporalPolyfillModulePath({
|
|
207
|
+
exports,
|
|
208
|
+
}: TemporalPolyfillPackageJson): string | undefined {
|
|
209
|
+
return exports?.['.']?.find((entry) => entry.import?.default !== undefined)
|
|
210
|
+
?.import?.default;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
function resolveRuntimeTemporalPolyfill(external: string[]) {
|
|
214
|
+
return (pluginBuild: PluginBuild) => {
|
|
215
|
+
pluginBuild.onResolve(
|
|
216
|
+
// Note: the /u flag cannot be used here because the underlying Go implementation does not support it
|
|
217
|
+
// eslint-disable-next-line require-unicode-regexp
|
|
218
|
+
{ filter: /^@js-temporal\/polyfill$/ },
|
|
219
|
+
async (resolved) => {
|
|
220
|
+
const packageJsonPath = module.findPackageJSON(
|
|
221
|
+
resolved.path,
|
|
222
|
+
resolved.resolveDir,
|
|
223
|
+
);
|
|
224
|
+
|
|
225
|
+
assert.ok(packageJsonPath !== undefined);
|
|
226
|
+
if (external.includes('./node_modules/*')) {
|
|
227
|
+
return { path: resolved.path, external: true };
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
const packageJson = JSON.parse(
|
|
231
|
+
await fs.readFile(packageJsonPath, 'utf8'),
|
|
232
|
+
) as TemporalPolyfillPackageJson;
|
|
233
|
+
const modulePath = getTemporalPolyfillModulePath(packageJson);
|
|
234
|
+
|
|
235
|
+
assert.ok(modulePath !== undefined);
|
|
236
|
+
return {
|
|
237
|
+
path: path.join(path.dirname(packageJsonPath), modulePath),
|
|
238
|
+
};
|
|
239
|
+
},
|
|
240
|
+
);
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
|
|
191
244
|
// eslint-disable-next-line max-lines-per-function
|
|
192
245
|
export default async function ({
|
|
193
246
|
type,
|
|
@@ -220,7 +273,8 @@ export default async function ({
|
|
|
220
273
|
const compilerOptions = typescript.parseJsonConfigFileContent(
|
|
221
274
|
tsConfigJson,
|
|
222
275
|
typescript.sys,
|
|
223
|
-
|
|
276
|
+
// @checkdigit/typescript-config package root:
|
|
277
|
+
path.dirname(path.dirname(fileURLToPath(import.meta.url))),
|
|
224
278
|
).options;
|
|
225
279
|
const program = typescript.createProgram(productionSourceFiles, {
|
|
226
280
|
...compilerOptions,
|
|
@@ -308,6 +362,10 @@ export default async function ({
|
|
|
308
362
|
legalComments: 'none',
|
|
309
363
|
external,
|
|
310
364
|
plugins: [
|
|
365
|
+
{
|
|
366
|
+
name: 'resolve-runtime-temporal-polyfill',
|
|
367
|
+
setup: resolveRuntimeTemporalPolyfill(external),
|
|
368
|
+
},
|
|
311
369
|
{
|
|
312
370
|
name: 'exclude-source-maps',
|
|
313
371
|
// Note: the /u flag cannot be used here because the underlying Go implementation does not support it
|