@ttsc/unplugin 0.28.5 → 0.29.0
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 +15 -11
- package/lib/api.js +10 -0
- package/lib/api.js.map +1 -1
- package/lib/api.mjs +3 -2
- package/lib/api.mjs.map +1 -1
- package/lib/bun-register.d.cts +10 -7
- package/lib/bun-register.d.mts +10 -7
- package/lib/bun-register.d.ts +10 -7
- package/lib/bun-register.js +90 -24
- package/lib/bun-register.js.map +1 -1
- package/lib/bun-register.mjs +90 -24
- package/lib/bun-register.mjs.map +1 -1
- package/lib/bun.d.cts +10 -8
- package/lib/bun.d.mts +10 -8
- package/lib/bun.d.ts +10 -8
- package/lib/bun.js +19 -17
- package/lib/bun.js.map +1 -1
- package/lib/bun.mjs +20 -18
- package/lib/bun.mjs.map +1 -1
- package/lib/core/index.d.cts +10 -8
- package/lib/core/index.d.mts +10 -8
- package/lib/core/index.d.ts +10 -8
- package/lib/core/index.js +88 -16
- package/lib/core/index.js.map +1 -1
- package/lib/core/index.mjs +81 -18
- package/lib/core/index.mjs.map +1 -1
- package/lib/core/projectDiscovery.d.cts +55 -0
- package/lib/core/projectDiscovery.d.mts +55 -0
- package/lib/core/projectDiscovery.d.ts +55 -0
- package/lib/core/projectDiscovery.js +187 -0
- package/lib/core/projectDiscovery.js.map +1 -0
- package/lib/core/projectDiscovery.mjs +182 -0
- package/lib/core/projectDiscovery.mjs.map +1 -0
- package/lib/core/sourceExtensions.d.cts +10 -0
- package/lib/core/sourceExtensions.d.mts +10 -0
- package/lib/core/sourceExtensions.d.ts +10 -0
- package/lib/core/sourceExtensions.js +38 -0
- package/lib/core/sourceExtensions.js.map +1 -0
- package/lib/core/sourceExtensions.mjs +32 -0
- package/lib/core/sourceExtensions.mjs.map +1 -0
- package/lib/core/transform.d.cts +96 -16
- package/lib/core/transform.d.mts +96 -16
- package/lib/core/transform.d.ts +96 -16
- package/lib/core/transform.js +1295 -309
- package/lib/core/transform.js.map +1 -1
- package/lib/core/transform.mjs +1290 -310
- package/lib/core/transform.mjs.map +1 -1
- package/lib/core/tsconfigPaths.d.cts +55 -3
- package/lib/core/tsconfigPaths.d.mts +55 -3
- package/lib/core/tsconfigPaths.d.ts +55 -3
- package/lib/core/tsconfigPaths.js +260 -46
- package/lib/core/tsconfigPaths.js.map +1 -1
- package/lib/core/tsconfigPaths.mjs +255 -47
- package/lib/core/tsconfigPaths.mjs.map +1 -1
- package/lib/core/viteServe.d.cts +18 -21
- package/lib/core/viteServe.d.mts +18 -21
- package/lib/core/viteServe.d.ts +18 -21
- package/lib/core/viteServe.js +88 -47
- package/lib/core/viteServe.js.map +1 -1
- package/lib/core/viteServe.mjs +89 -49
- package/lib/core/viteServe.mjs.map +1 -1
- package/lib/next.d.cts +7 -0
- package/lib/next.d.mts +7 -0
- package/lib/next.d.ts +7 -0
- package/lib/next.js +186 -54
- package/lib/next.js.map +1 -1
- package/lib/next.mjs +186 -55
- package/lib/next.mjs.map +1 -1
- package/lib/turbopack.d.cts +6 -4
- package/lib/turbopack.d.mts +6 -4
- package/lib/turbopack.d.ts +6 -4
- package/lib/turbopack.js +11 -10
- package/lib/turbopack.js.map +1 -1
- package/lib/turbopack.mjs +11 -10
- package/lib/turbopack.mjs.map +1 -1
- package/package.json +7 -4
- package/src/bun-register.ts +112 -25
- package/src/bun.ts +60 -50
- package/src/core/index.ts +114 -19
- package/src/core/projectDiscovery.ts +256 -0
- package/src/core/sourceExtensions.ts +47 -0
- package/src/core/transform.ts +1671 -361
- package/src/core/tsconfigPaths.ts +406 -46
- package/src/core/viteServe.ts +125 -74
- package/src/next.ts +230 -54
- package/src/turbopack.ts +11 -10
package/lib/next.js
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var fs = require('node:fs');
|
|
6
|
+
var path = require('node:path');
|
|
7
|
+
var node_url = require('node:url');
|
|
8
|
+
var sourceExtensions = require('./core/sourceExtensions.js');
|
|
5
9
|
var webpack = require('./webpack.js');
|
|
6
10
|
|
|
7
11
|
/** The standalone loader entry Turbopack accepts through `turbopack.rules`. */
|
|
@@ -9,11 +13,11 @@ const TURBOPACK_LOADER = "@ttsc/unplugin/turbopack";
|
|
|
9
13
|
/**
|
|
10
14
|
* The globs the loader is wired for.
|
|
11
15
|
*
|
|
12
|
-
* The same
|
|
13
|
-
* harmless, since `isTransformTarget` declines everything else that reaches
|
|
14
|
-
* loader, but it would also route files through a worker for nothing.
|
|
16
|
+
* The same exact set the manual wiring in the README uses. A wider glob would
|
|
17
|
+
* be harmless, since `isTransformTarget` declines everything else that reaches
|
|
18
|
+
* the loader, but it would also route files through a worker for nothing.
|
|
15
19
|
*/
|
|
16
|
-
const TURBOPACK_RULE_GLOBS =
|
|
20
|
+
const TURBOPACK_RULE_GLOBS = sourceExtensions.TYPESCRIPT_TURBOPACK_RULE_GLOBS;
|
|
17
21
|
/**
|
|
18
22
|
* Wrap a Next.js config object so that ttsc runs under whichever bundler
|
|
19
23
|
* Next.js uses.
|
|
@@ -102,35 +106,33 @@ function warnAboutSuppressedWebpackConfig(nextConfig) {
|
|
|
102
106
|
*/
|
|
103
107
|
function withTtscTurbopackRules(existing, options) {
|
|
104
108
|
const rules = { ...(existing?.rules ?? {}) };
|
|
109
|
+
// Package ownership is stable only for this configuration snapshot. A later
|
|
110
|
+
// call may observe an atomic install or a directory-link retarget at the same
|
|
111
|
+
// lexical loader path, so no verdict can escape this invocation.
|
|
112
|
+
const resolvedLoaderResults = new Map();
|
|
105
113
|
for (const glob of TURBOPACK_RULE_GLOBS) {
|
|
106
114
|
const rule = rules[glob];
|
|
107
|
-
|
|
108
|
-
if (loaders.some(referencesTtscLoader)) {
|
|
115
|
+
if (hasUnconditionalTtscLoader(rule, resolvedLoaderResults)) {
|
|
109
116
|
continue;
|
|
110
117
|
}
|
|
111
118
|
// The caller may have written the same file set under a different glob.
|
|
112
119
|
// Adding ours beside theirs makes every matching module run the loader
|
|
113
120
|
// twice, and the second pass receives the first pass's output, so the
|
|
114
121
|
// guard has to cover the spellings a caller plausibly uses rather than
|
|
115
|
-
// only the
|
|
116
|
-
if (coveredByAnotherRule(rules, glob)) {
|
|
122
|
+
// only the four this wrapper writes (samchon/ttsc#1314).
|
|
123
|
+
if (coveredByAnotherRule(rules, glob, resolvedLoaderResults)) {
|
|
117
124
|
continue;
|
|
118
125
|
}
|
|
119
126
|
const entry = { loader: TURBOPACK_LOADER, options: options ?? {} };
|
|
120
|
-
//
|
|
121
|
-
//
|
|
122
|
-
//
|
|
123
|
-
//
|
|
127
|
+
// Loader shorthand runs right to left, so ttsc is appended there to see
|
|
128
|
+
// the original source. Rule collections run matching items in order, so
|
|
129
|
+
// ttsc becomes an explicit first rule there for the same reason. That is
|
|
130
|
+
// the same position `enforce: "pre"` gives it on the webpack half.
|
|
124
131
|
//
|
|
125
132
|
// Measured rather than inferred from webpack's `loader-runner`: two
|
|
126
133
|
// loaders on one rule, each marking the source, came back marked in the
|
|
127
134
|
// order that only the last-runs-first chain produces (samchon/ttsc#1319).
|
|
128
|
-
rules[glob] =
|
|
129
|
-
rule === undefined || loaders.length === 0
|
|
130
|
-
? { loaders: [entry] }
|
|
131
|
-
: Array.isArray(rule)
|
|
132
|
-
? { loaders: [...loaders, entry] }
|
|
133
|
-
: { ...rule, loaders: [...loaders, entry] };
|
|
135
|
+
rules[glob] = addUnconditionalTtscLoader(rule, entry);
|
|
134
136
|
}
|
|
135
137
|
return { ...(existing ?? {}), rules };
|
|
136
138
|
}
|
|
@@ -147,13 +149,13 @@ function withTtscTurbopackRules(existing, options) {
|
|
|
147
149
|
* untransformed, which is samchon/ttsc#1310 again and the quieter of the two
|
|
148
150
|
* failures. {@link matchesExtension} owns the rule and names what it declines.
|
|
149
151
|
*/
|
|
150
|
-
function coveredByAnotherRule(rules, glob) {
|
|
152
|
+
function coveredByAnotherRule(rules, glob, resolvedLoaderResults) {
|
|
151
153
|
const extension = glob.slice(glob.lastIndexOf(".") + 1);
|
|
152
154
|
return Object.entries(rules).some(([candidate, rule]) => {
|
|
153
155
|
if (candidate === glob) {
|
|
154
156
|
return false;
|
|
155
157
|
}
|
|
156
|
-
if (!
|
|
158
|
+
if (!hasUnconditionalTtscLoader(rule, resolvedLoaderResults)) {
|
|
157
159
|
return false;
|
|
158
160
|
}
|
|
159
161
|
return matchesExtension(candidate, extension);
|
|
@@ -181,7 +183,7 @@ function coveredByAnotherRule(rules, glob) {
|
|
|
181
183
|
* spellings, and that document explains why it is a set rather than a rule.
|
|
182
184
|
*/
|
|
183
185
|
function matchesExtension(glob, extension) {
|
|
184
|
-
return PROJECT_WIDE_GLOBS.get(glob
|
|
186
|
+
return PROJECT_WIDE_GLOBS.get(glob)?.includes(extension) === true;
|
|
185
187
|
}
|
|
186
188
|
/**
|
|
187
189
|
* The exact glob spellings a real Turbopack build has shown to name every file
|
|
@@ -205,53 +207,183 @@ function matchesExtension(glob, extension) {
|
|
|
205
207
|
* if any — is a second registration rather than a module that no loader ever
|
|
206
208
|
* sees.
|
|
207
209
|
*
|
|
208
|
-
* `experimental/test-unplugin`
|
|
209
|
-
*
|
|
210
|
-
* `.tsx
|
|
211
|
-
*
|
|
212
|
-
*
|
|
213
|
-
* build proving it.
|
|
210
|
+
* `experimental/test-unplugin` reads this exported table from the installed
|
|
211
|
+
* package, drives every entry through one `next build --turbopack`, and asserts
|
|
212
|
+
* root, nested, and deep `.ts`, `.tsx`, `.mts`, and `.cts` sources match
|
|
213
|
+
* exactly the extension family recorded here. An entry therefore cannot be
|
|
214
|
+
* recognised without that same build measuring it.
|
|
214
215
|
*/
|
|
215
|
-
const
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
216
|
+
const TYPESCRIPT_EXTENSION_NAMES = sourceExtensions.TYPESCRIPT_TRANSFORM_EXTENSIONS.map((extension) => extension.slice(1));
|
|
217
|
+
const TYPESCRIPT_EXTENSION_GROUPS = extensionCombinations(TYPESCRIPT_EXTENSION_NAMES);
|
|
218
|
+
/**
|
|
219
|
+
* Measured project-wide Turbopack globs and the source extensions each covers.
|
|
220
|
+
*
|
|
221
|
+
* Exported so the packed-package E2E can measure the exact production allowlist
|
|
222
|
+
* instead of maintaining a second list that can drift from it.
|
|
223
|
+
*/
|
|
224
|
+
const TURBOPACK_PROJECT_WIDE_GLOB_COVERAGE = Object.freeze([
|
|
225
|
+
...TYPESCRIPT_EXTENSION_NAMES.flatMap((extension) => {
|
|
226
|
+
const extensions = Object.freeze([extension]);
|
|
227
|
+
return [
|
|
228
|
+
Object.freeze([`*.${extension}`, extensions]),
|
|
229
|
+
Object.freeze([`**/*.${extension}`, extensions]),
|
|
230
|
+
Object.freeze([`{**/,}*.${extension}`, extensions]),
|
|
231
|
+
];
|
|
232
|
+
}),
|
|
233
|
+
...TYPESCRIPT_EXTENSION_GROUPS.flatMap(projectWideBraceGlobEntries),
|
|
226
234
|
]);
|
|
235
|
+
const PROJECT_WIDE_GLOBS = new Map(TURBOPACK_PROJECT_WIDE_GLOB_COVERAGE);
|
|
236
|
+
/** Every source-extension subset of size two or more, in shared-table order. */
|
|
237
|
+
function extensionCombinations(extensions) {
|
|
238
|
+
const output = [];
|
|
239
|
+
const visit = (start, selected) => {
|
|
240
|
+
for (let index = start; index < extensions.length; index += 1) {
|
|
241
|
+
const next = [...selected, extensions[index]];
|
|
242
|
+
if (next.length >= 2)
|
|
243
|
+
output.push(Object.freeze(next));
|
|
244
|
+
visit(index + 1, next);
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
visit(0, []);
|
|
248
|
+
return output;
|
|
249
|
+
}
|
|
250
|
+
/** Measured project-wide brace spellings for one extension family. */
|
|
251
|
+
function projectWideBraceGlobEntries(extensions) {
|
|
252
|
+
const suffixes = extensions.join(",");
|
|
253
|
+
const alternatives = extensions
|
|
254
|
+
.map((extension) => `*.${extension}`)
|
|
255
|
+
.join(",");
|
|
256
|
+
return [
|
|
257
|
+
Object.freeze([`*.{${suffixes}}`, extensions]),
|
|
258
|
+
Object.freeze([`{${alternatives}}`, extensions]),
|
|
259
|
+
Object.freeze([`**/*.{${suffixes}}`, extensions]),
|
|
260
|
+
Object.freeze([`**/{${alternatives}}`, extensions]),
|
|
261
|
+
Object.freeze([`**/**/*.{${suffixes}}`, extensions]),
|
|
262
|
+
];
|
|
263
|
+
}
|
|
227
264
|
/**
|
|
228
|
-
*
|
|
265
|
+
* Add one unconditional loader without flattening Next's rule collection.
|
|
229
266
|
*
|
|
230
|
-
*
|
|
231
|
-
*
|
|
232
|
-
*
|
|
267
|
+
* An array is either loader shorthand or a collection whose entries may be
|
|
268
|
+
* complete conditional rule objects, so it must remain an array. A collection
|
|
269
|
+
* executes every matching rule in order; its unconditional ttsc rule therefore
|
|
270
|
+
* comes first so it sees the original source before any caller rule. A
|
|
271
|
+
* conditioned object becomes that same two-item collection because putting ttsc
|
|
272
|
+
* inside the condition would leave the rest of the glob uncovered. An
|
|
273
|
+
* unconditioned object can keep its own shape while gaining the loader,
|
|
274
|
+
* including when it had no loaders.
|
|
233
275
|
*/
|
|
234
|
-
function
|
|
276
|
+
function addUnconditionalTtscLoader(rule, entry) {
|
|
235
277
|
if (Array.isArray(rule)) {
|
|
236
|
-
return rule
|
|
278
|
+
return rule.every(isTurbopackLoaderItem)
|
|
279
|
+
? [...rule, entry]
|
|
280
|
+
: [{ loaders: [entry] }, ...rule];
|
|
237
281
|
}
|
|
238
282
|
if (typeof rule === "object" && rule !== null) {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
return loaders;
|
|
283
|
+
if (rule.condition !== undefined) {
|
|
284
|
+
return [{ loaders: [entry] }, rule];
|
|
242
285
|
}
|
|
286
|
+
return {
|
|
287
|
+
...rule,
|
|
288
|
+
loaders: [...selectTurbopackConfigLoaders(rule), entry],
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
return { loaders: [entry] };
|
|
292
|
+
}
|
|
293
|
+
/** Read the direct loader list from one Turbopack rule configuration item. */
|
|
294
|
+
function selectTurbopackConfigLoaders(rule) {
|
|
295
|
+
if (typeof rule !== "object" || rule === null || Array.isArray(rule)) {
|
|
296
|
+
return [];
|
|
297
|
+
}
|
|
298
|
+
const loaders = rule.loaders;
|
|
299
|
+
return Array.isArray(loaders) ? loaders : [];
|
|
300
|
+
}
|
|
301
|
+
/** Whether a rule collection provides this loader without a condition. */
|
|
302
|
+
function hasUnconditionalTtscLoader(rule, resolvedLoaderResults) {
|
|
303
|
+
if (Array.isArray(rule)) {
|
|
304
|
+
return rule.some((item) => {
|
|
305
|
+
if (isTurbopackLoaderItem(item)) {
|
|
306
|
+
return referencesTtscLoader(item, resolvedLoaderResults);
|
|
307
|
+
}
|
|
308
|
+
return (typeof item === "object" &&
|
|
309
|
+
item !== null &&
|
|
310
|
+
item.condition === undefined &&
|
|
311
|
+
selectTurbopackConfigLoaders(item).some((loader) => referencesTtscLoader(loader, resolvedLoaderResults)));
|
|
312
|
+
});
|
|
243
313
|
}
|
|
244
|
-
return
|
|
314
|
+
return (typeof rule === "object" &&
|
|
315
|
+
rule !== null &&
|
|
316
|
+
rule.condition === undefined &&
|
|
317
|
+
selectTurbopackConfigLoaders(rule).some((loader) => referencesTtscLoader(loader, resolvedLoaderResults)));
|
|
318
|
+
}
|
|
319
|
+
/** Whether one collection item is a direct Turbopack loader. */
|
|
320
|
+
function isTurbopackLoaderItem(item) {
|
|
321
|
+
return (typeof item === "string" ||
|
|
322
|
+
(typeof item === "object" &&
|
|
323
|
+
item !== null &&
|
|
324
|
+
typeof item.loader === "string"));
|
|
245
325
|
}
|
|
246
326
|
/** Whether one Turbopack loader entry is already this package's loader. */
|
|
247
|
-
function referencesTtscLoader(loader) {
|
|
248
|
-
|
|
249
|
-
|
|
327
|
+
function referencesTtscLoader(loader, resolvedLoaderResults) {
|
|
328
|
+
const identity = typeof loader === "string"
|
|
329
|
+
? loader
|
|
330
|
+
: typeof loader === "object" && loader !== null
|
|
331
|
+
? loader.loader
|
|
332
|
+
: undefined;
|
|
333
|
+
return (typeof identity === "string" &&
|
|
334
|
+
(identity === TURBOPACK_LOADER ||
|
|
335
|
+
isResolvedTtscLoader(identity, resolvedLoaderResults)));
|
|
336
|
+
}
|
|
337
|
+
/** Whether an absolute path is the Turbopack entry of an @ttsc/unplugin copy. */
|
|
338
|
+
function isResolvedTtscLoader(identity, resolvedLoaderResults) {
|
|
339
|
+
const cached = resolvedLoaderResults.get(identity);
|
|
340
|
+
if (cached !== undefined) {
|
|
341
|
+
return cached;
|
|
342
|
+
}
|
|
343
|
+
let file;
|
|
344
|
+
try {
|
|
345
|
+
file = /^file:/i.test(identity) ? node_url.fileURLToPath(identity) : identity;
|
|
346
|
+
}
|
|
347
|
+
catch {
|
|
348
|
+
resolvedLoaderResults.set(identity, false);
|
|
349
|
+
return false;
|
|
350
|
+
}
|
|
351
|
+
if (!path.isAbsolute(file)) {
|
|
352
|
+
resolvedLoaderResults.set(identity, false);
|
|
353
|
+
return false;
|
|
354
|
+
}
|
|
355
|
+
let resolvedFile;
|
|
356
|
+
try {
|
|
357
|
+
resolvedFile = fs.realpathSync.native(file);
|
|
358
|
+
if (!fs.statSync(resolvedFile).isFile()) {
|
|
359
|
+
resolvedLoaderResults.set(identity, false);
|
|
360
|
+
return false;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
catch {
|
|
364
|
+
resolvedLoaderResults.set(identity, false);
|
|
365
|
+
return false;
|
|
366
|
+
}
|
|
367
|
+
const packageRoot = path.dirname(path.dirname(resolvedFile));
|
|
368
|
+
const relative = path
|
|
369
|
+
.relative(packageRoot, resolvedFile)
|
|
370
|
+
.replaceAll(path.sep, "/");
|
|
371
|
+
if (relative !== "lib/turbopack.js" && relative !== "lib/turbopack.mjs") {
|
|
372
|
+
resolvedLoaderResults.set(identity, false);
|
|
373
|
+
return false;
|
|
374
|
+
}
|
|
375
|
+
let matches = false;
|
|
376
|
+
try {
|
|
377
|
+
const manifest = JSON.parse(fs.readFileSync(path.join(packageRoot, "package.json"), "utf8"));
|
|
378
|
+
matches = manifest.name === "@ttsc/unplugin";
|
|
379
|
+
}
|
|
380
|
+
catch {
|
|
381
|
+
// An unreadable or malformed owner cannot prove this package's identity.
|
|
250
382
|
}
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
loader.loader === TURBOPACK_LOADER);
|
|
383
|
+
resolvedLoaderResults.set(identity, matches);
|
|
384
|
+
return matches;
|
|
254
385
|
}
|
|
255
386
|
|
|
387
|
+
exports.TURBOPACK_PROJECT_WIDE_GLOB_COVERAGE = TURBOPACK_PROJECT_WIDE_GLOB_COVERAGE;
|
|
256
388
|
exports.default = next;
|
|
257
389
|
//# sourceMappingURL=next.js.map
|
package/lib/next.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next.js","sources":["../src/next.ts"],"sourcesContent":[null],"names":["webpack"],"mappings":"
|
|
1
|
+
{"version":3,"file":"next.js","sources":["../src/next.ts"],"sourcesContent":[null],"names":["TYPESCRIPT_TURBOPACK_RULE_GLOBS","webpack","TYPESCRIPT_TRANSFORM_EXTENSIONS","fileURLToPath"],"mappings":"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"}
|