@jk2908/cxx 0.3.1 → 0.3.4
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 +0 -3
- package/dist/build.d.ts +19 -11
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +204 -82
- package/dist/build.js.map +6 -5
- package/dist/logger.d.ts +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/next/cxx-loader.cjs +109 -58
- package/dist/next/cxx-loader.cjs.map +7 -7
- package/dist/next/index.d.ts +5 -3
- package/dist/next/index.d.ts.map +1 -1
- package/dist/next/index.js +219 -107
- package/dist/next/index.js.map +7 -6
- package/dist/types.d.ts +1 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +0 -16
- package/dist/utils.d.ts.map +1 -1
- package/dist/vite/index.d.ts +1 -7
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +240 -247
- package/dist/vite/index.js.map +7 -7
- package/package.json +6 -6
- package/src/build.ts +202 -73
- package/src/logger.ts +2 -7
- package/src/next/cxx-loader.js +8 -1
- package/src/next/index.ts +25 -27
- package/src/types.ts +1 -7
- package/src/utils.ts +0 -79
- package/src/vite/index.ts +60 -100
package/dist/next/cxx-loader.cjs
CHANGED
|
@@ -81,10 +81,9 @@ var defaultLevel = process.env["NODE_ENV"] === "production" ? "error" : "info";
|
|
|
81
81
|
|
|
82
82
|
class Logger {
|
|
83
83
|
name;
|
|
84
|
-
#level;
|
|
85
|
-
constructor(
|
|
84
|
+
#level = defaultLevel;
|
|
85
|
+
constructor(name) {
|
|
86
86
|
this.name = name;
|
|
87
|
-
this.#level = level ?? defaultLevel;
|
|
88
87
|
}
|
|
89
88
|
static toError(err) {
|
|
90
89
|
return err instanceof Error ? err : new Error(String(err), { cause: err });
|
|
@@ -151,7 +150,6 @@ ${Logger.print(entry.error)}` : "";
|
|
|
151
150
|
}
|
|
152
151
|
|
|
153
152
|
// src/next/index.ts
|
|
154
|
-
var import_promises2 = __toESM(require("node:fs/promises"));
|
|
155
153
|
var import_node_path2 = __toESM(require("node:path"));
|
|
156
154
|
var import_node_url = require("node:url");
|
|
157
155
|
|
|
@@ -212,9 +210,10 @@ function pascalise(str) {
|
|
|
212
210
|
}
|
|
213
211
|
|
|
214
212
|
// src/build.ts
|
|
213
|
+
var logger = new Logger(NAME);
|
|
215
214
|
var decoder = new TextDecoder;
|
|
215
|
+
var encoder = new TextEncoder;
|
|
216
216
|
var collectCache = new LruCache;
|
|
217
|
-
var fileCache = new LruCache;
|
|
218
217
|
var writeChain = Promise.resolve();
|
|
219
218
|
function isENOENT(err) {
|
|
220
219
|
return err instanceof Error && "code" in err && err.code === "ENOENT";
|
|
@@ -222,7 +221,12 @@ function isENOENT(err) {
|
|
|
222
221
|
async function writeFileAtomic(filePath, content) {
|
|
223
222
|
const tmp = `${filePath}.${process.pid}.${Math.random().toString(36).slice(2)}.tmp`;
|
|
224
223
|
await import_promises.default.writeFile(tmp, content);
|
|
225
|
-
|
|
224
|
+
try {
|
|
225
|
+
await import_promises.default.rename(tmp, filePath);
|
|
226
|
+
} catch (err) {
|
|
227
|
+
await import_promises.default.rm(tmp, { force: true });
|
|
228
|
+
throw err;
|
|
229
|
+
}
|
|
226
230
|
}
|
|
227
231
|
function enqueueWrite(task) {
|
|
228
232
|
const run = writeChain.then(task, task);
|
|
@@ -234,20 +238,14 @@ function enqueueWrite(task) {
|
|
|
234
238
|
return run;
|
|
235
239
|
}
|
|
236
240
|
async function maybeWrite(filePath, content) {
|
|
237
|
-
const cached = fileCache.get(filePath);
|
|
238
|
-
if (cached === content)
|
|
239
|
-
return false;
|
|
240
241
|
try {
|
|
241
|
-
if (await import_promises.default.readFile(filePath, "utf-8") === content)
|
|
242
|
-
fileCache.set(filePath, content);
|
|
242
|
+
if (await import_promises.default.readFile(filePath, "utf-8") === content)
|
|
243
243
|
return false;
|
|
244
|
-
}
|
|
245
244
|
} catch (err) {
|
|
246
245
|
if (!isENOENT(err))
|
|
247
246
|
throw err;
|
|
248
247
|
}
|
|
249
248
|
await writeFileAtomic(filePath, content);
|
|
250
|
-
fileCache.set(filePath, content);
|
|
251
249
|
return true;
|
|
252
250
|
}
|
|
253
251
|
var regex = /((?:export\s+)?)(?:const|var|let)\s*\[(\w*)\s*,?\s*(\w*)\s*,?\s*(\w*)\s*\]\s*=\s*cxx(?:\s*`([\s\S]*?)`|\s*\.\s*tag(?:\s*<[^>]+>)?\s*\(\s*(['"])(.*?)\6\s*\)\s*`([\s\S]*?)`)/gm;
|
|
@@ -283,14 +281,23 @@ function collect(source, id, config) {
|
|
|
283
281
|
matched = true;
|
|
284
282
|
const [, exp, varOne, varTwo, varThree, plainCss, , tag, taggedCss] = match;
|
|
285
283
|
const css = plainCss ?? taggedCss;
|
|
286
|
-
const
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
284
|
+
const matchIndex = match.index;
|
|
285
|
+
const { code, exports: classExports = {} } = (() => {
|
|
286
|
+
try {
|
|
287
|
+
return import_lightningcss.transform({
|
|
288
|
+
minify: true,
|
|
289
|
+
cssModules: true,
|
|
290
|
+
filename: id,
|
|
291
|
+
code: encoder.encode(css)
|
|
292
|
+
});
|
|
293
|
+
} catch (err) {
|
|
294
|
+
const line = source.slice(0, matchIndex).split(`
|
|
295
|
+
`).length;
|
|
296
|
+
throw new Error(`Failed to compile cxx CSS at ${id}:${line}`, { cause: err });
|
|
297
|
+
}
|
|
298
|
+
})();
|
|
292
299
|
const href = hashCss(code);
|
|
293
|
-
const styles = Object.fromEntries(Object.entries(
|
|
300
|
+
const styles = Object.fromEntries(Object.entries(classExports).map(([k, v]) => [k, v.name]));
|
|
294
301
|
if (tag) {
|
|
295
302
|
const suffix = typeof config.typeSuffix === "string" ? config.typeSuffix : config.typeSuffix === false ? "" : "Classes";
|
|
296
303
|
const tagWithSuffix = pascalise(`${tag}${suffix}`);
|
|
@@ -310,7 +317,7 @@ function collect(source, id, config) {
|
|
|
310
317
|
if (varThree) {
|
|
311
318
|
statements.push(`${exp}const ${varThree} = ${JSON.stringify(href)}`);
|
|
312
319
|
}
|
|
313
|
-
magic.overwrite(
|
|
320
|
+
magic.overwrite(matchIndex, matchIndex + match[0].length, statements.join(`
|
|
314
321
|
`));
|
|
315
322
|
}
|
|
316
323
|
const template = magic.toString();
|
|
@@ -336,13 +343,14 @@ async function writeRenderedTypes(tags) {
|
|
|
336
343
|
const filePath = import_node_path.default.join(GENERATED_DIR, "index.d.ts");
|
|
337
344
|
if (!tags.size) {
|
|
338
345
|
await import_promises.default.rm(filePath, { force: true });
|
|
339
|
-
fileCache.delete(filePath);
|
|
340
346
|
return;
|
|
341
347
|
}
|
|
342
348
|
await import_promises.default.mkdir(GENERATED_DIR, { recursive: true });
|
|
343
349
|
await maybeWrite(filePath, renderTypes(tags));
|
|
344
350
|
}
|
|
345
351
|
var PARTIAL_DIR = import_node_path.default.join(GENERATED_DIR, "tags");
|
|
352
|
+
var REBUILD_WAIT = 100;
|
|
353
|
+
var rebuildTimer = null;
|
|
346
354
|
function partialPath(filePath) {
|
|
347
355
|
return import_node_path.default.join(PARTIAL_DIR, `${import_node_crypto.createHash("sha1").update(filePath).digest("hex")}.json`);
|
|
348
356
|
}
|
|
@@ -352,10 +360,12 @@ async function readPartials() {
|
|
|
352
360
|
entries = await import_promises.default.readdir(PARTIAL_DIR);
|
|
353
361
|
} catch (err) {
|
|
354
362
|
if (isENOENT(err))
|
|
355
|
-
return new Map;
|
|
363
|
+
return { tags: new Map, duplicates: [] };
|
|
356
364
|
throw err;
|
|
357
365
|
}
|
|
358
366
|
const tags = new Map;
|
|
367
|
+
const fileByTag = new Map;
|
|
368
|
+
const duplicates = [];
|
|
359
369
|
for (const entry of entries) {
|
|
360
370
|
if (!entry.endsWith(".json"))
|
|
361
371
|
continue;
|
|
@@ -366,19 +376,28 @@ async function readPartials() {
|
|
|
366
376
|
} catch {
|
|
367
377
|
continue;
|
|
368
378
|
}
|
|
379
|
+
let source;
|
|
369
380
|
try {
|
|
370
|
-
await import_promises.default.
|
|
381
|
+
source = await import_promises.default.readFile(parsed.file, "utf-8");
|
|
371
382
|
} catch {
|
|
372
383
|
await import_promises.default.rm(partial, { force: true });
|
|
373
384
|
continue;
|
|
374
385
|
}
|
|
386
|
+
if (!source.includes("cxx")) {
|
|
387
|
+
await import_promises.default.rm(partial, { force: true });
|
|
388
|
+
continue;
|
|
389
|
+
}
|
|
375
390
|
for (const [name, classes] of Object.entries(parsed.tags)) {
|
|
376
|
-
|
|
377
|
-
|
|
391
|
+
const existing = fileByTag.get(name);
|
|
392
|
+
if (existing) {
|
|
393
|
+
duplicates.push({ tag: name, files: [existing, parsed.file] });
|
|
394
|
+
continue;
|
|
395
|
+
}
|
|
396
|
+
fileByTag.set(name, parsed.file);
|
|
378
397
|
tags.set(name, classes);
|
|
379
398
|
}
|
|
380
399
|
}
|
|
381
|
-
return tags;
|
|
400
|
+
return { tags, duplicates };
|
|
382
401
|
}
|
|
383
402
|
function writeTypesForFile(filePath, tags) {
|
|
384
403
|
return enqueueWrite(async () => {
|
|
@@ -389,11 +408,50 @@ function writeTypesForFile(filePath, tags) {
|
|
|
389
408
|
} else {
|
|
390
409
|
await writeFileAtomic(partial, JSON.stringify({ file: filePath, tags: Object.fromEntries(tags) }));
|
|
391
410
|
}
|
|
392
|
-
|
|
411
|
+
}).then(() => scheduleRebuild()).catch((err) => {
|
|
412
|
+
logger.error(`failed to write types for ${filePath}`, err);
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
function scheduleRebuild() {
|
|
416
|
+
if (rebuildTimer)
|
|
417
|
+
clearTimeout(rebuildTimer);
|
|
418
|
+
rebuildTimer = setTimeout(() => {
|
|
419
|
+
rebuildTimer = null;
|
|
420
|
+
flushTypes().catch((err) => {
|
|
421
|
+
logger.error("failed to generate types", err);
|
|
422
|
+
});
|
|
423
|
+
}, REBUILD_WAIT);
|
|
424
|
+
}
|
|
425
|
+
function flushTypes() {
|
|
426
|
+
if (rebuildTimer) {
|
|
427
|
+
clearTimeout(rebuildTimer);
|
|
428
|
+
rebuildTimer = null;
|
|
429
|
+
}
|
|
430
|
+
return enqueueWrite(async () => {
|
|
431
|
+
const { tags, duplicates } = await readPartials();
|
|
432
|
+
await writeRenderedTypes(tags);
|
|
433
|
+
for (const duplicate of duplicates) {
|
|
434
|
+
logger.error(`Tag "${duplicate.tag}" is defined in multiple files: ${duplicate.files.join(", ")}`);
|
|
435
|
+
}
|
|
393
436
|
});
|
|
394
437
|
}
|
|
438
|
+
var SOURCE_EXTENSIONS = new Set([".js", ".jsx", ".ts", ".tsx"]);
|
|
439
|
+
var SKIP_DIRS = new Set(["node_modules", "dist", "build", "coverage", "out"]);
|
|
440
|
+
async function refreshFile(file, config) {
|
|
441
|
+
let source;
|
|
442
|
+
try {
|
|
443
|
+
source = await import_promises.default.readFile(file, "utf-8");
|
|
444
|
+
} catch (err) {
|
|
445
|
+
if (!isENOENT(err))
|
|
446
|
+
throw err;
|
|
447
|
+
await writeTypesForFile(file, new Map);
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
450
|
+
const tags = source.includes("cxx") ? collect(source, file, config).tags : new Map;
|
|
451
|
+
await writeTypesForFile(file, tags);
|
|
452
|
+
}
|
|
395
453
|
function tagsToType(tags) {
|
|
396
|
-
return [...tags].map(([tag, classes]) => {
|
|
454
|
+
return [...tags].toSorted(([a], [b]) => a < b ? -1 : a > b ? 1 : 0).map(([tag, classes]) => {
|
|
397
455
|
const union = classes.length > 0 ? classes.toSorted((a, b) => a.length - b.length).map((c) => `'${c}'`).join(" | ") : "never";
|
|
398
456
|
return ` export type ${tag} = ${union}`;
|
|
399
457
|
}).join(`
|
|
@@ -401,6 +459,7 @@ function tagsToType(tags) {
|
|
|
401
459
|
}
|
|
402
460
|
|
|
403
461
|
// src/next/index.ts
|
|
462
|
+
var typeLogger = new Logger("cxx");
|
|
404
463
|
var nextDir = import_node_path2.default.dirname(import_node_url.fileURLToPath("file:///Users/jeromekenway/Documents/dev.nosync/me/repo/cxx/packages/cxx/src/next/index.ts"));
|
|
405
464
|
var loader = import_node_path2.default.join(nextDir, "cxx-loader.cjs");
|
|
406
465
|
var watchedFiles = new Map;
|
|
@@ -418,32 +477,19 @@ async function onEvent(event, filePath) {
|
|
|
418
477
|
const watched = watchedFiles.get(filePath);
|
|
419
478
|
if (!watched)
|
|
420
479
|
return;
|
|
421
|
-
const { pluginConfig, logger } = watched;
|
|
480
|
+
const { pluginConfig, logger: logger2 } = watched;
|
|
422
481
|
if (event === "delete") {
|
|
423
482
|
await writeTypesForFile(filePath, new Map);
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
}
|
|
427
|
-
let source;
|
|
428
|
-
try {
|
|
429
|
-
source = await import_promises2.default.readFile(filePath, "utf-8");
|
|
430
|
-
} catch (err) {
|
|
431
|
-
if (!isENOENT(err))
|
|
432
|
-
throw err;
|
|
433
|
-
await writeTypesForFile(filePath, new Map);
|
|
434
|
-
logger.info(`updated types from ${filePath}`);
|
|
435
|
-
return;
|
|
483
|
+
} else {
|
|
484
|
+
await refreshFile(filePath, pluginConfig);
|
|
436
485
|
}
|
|
437
|
-
|
|
438
|
-
await writeTypesForFile(filePath, tags);
|
|
439
|
-
logger.info(`updated types from ${filePath}`);
|
|
486
|
+
logger2.info(`updated types from ${filePath}`);
|
|
440
487
|
}
|
|
441
|
-
function ensureWatcher(pluginConfig,
|
|
442
|
-
watcherLogger =
|
|
488
|
+
function ensureWatcher(pluginConfig, logger2) {
|
|
489
|
+
watcherLogger = logger2;
|
|
443
490
|
if (subscriptionPromise)
|
|
444
491
|
return;
|
|
445
492
|
const root = pluginConfig.watch?.root ?? process.cwd();
|
|
446
|
-
const ignore = [...DEFAULT_IGNORE, ...pluginConfig.watch?.ignore ?? []];
|
|
447
493
|
subscriptionPromise = (async () => {
|
|
448
494
|
const { subscribe } = await import("@parcel/watcher");
|
|
449
495
|
subscription = await subscribe(root, (watchErr, events) => {
|
|
@@ -459,7 +505,7 @@ function ensureWatcher(pluginConfig, logger) {
|
|
|
459
505
|
watcherLogger?.error(`failed to update types from ${filePath}`, err);
|
|
460
506
|
});
|
|
461
507
|
}
|
|
462
|
-
}, { ignore });
|
|
508
|
+
}, { ignore: DEFAULT_IGNORE });
|
|
463
509
|
registerCleanup();
|
|
464
510
|
})().catch((err) => {
|
|
465
511
|
watcherLogger?.error("failed to start cxx watcher", err);
|
|
@@ -488,26 +534,31 @@ function registerCleanup() {
|
|
|
488
534
|
process.once("SIGINT", () => void shutdown("SIGINT"));
|
|
489
535
|
process.once("SIGTERM", () => void shutdown("SIGTERM"));
|
|
490
536
|
}
|
|
491
|
-
function processFile(source, filePath, pluginConfig,
|
|
537
|
+
function processFile(source, filePath, pluginConfig, logger2) {
|
|
492
538
|
const resolvedFilePath = import_node_path2.default.resolve(filePath);
|
|
539
|
+
if (!source.includes("cxx") || /[\\/]node_modules[\\/]/.test(resolvedFilePath)) {
|
|
540
|
+
return { template: source, tags: new Map, map: null };
|
|
541
|
+
}
|
|
493
542
|
if (process.env["NODE_ENV"] !== "production") {
|
|
494
|
-
watchedFiles.set(resolvedFilePath, { pluginConfig, logger });
|
|
495
|
-
ensureWatcher(pluginConfig,
|
|
543
|
+
watchedFiles.set(resolvedFilePath, { pluginConfig, logger: logger2 });
|
|
544
|
+
ensureWatcher(pluginConfig, logger2);
|
|
496
545
|
}
|
|
497
546
|
const result = collect(source, resolvedFilePath, pluginConfig);
|
|
498
|
-
writeTypesForFile(resolvedFilePath, result.tags)
|
|
499
|
-
logger.error(`failed to write types for ${resolvedFilePath}`, err);
|
|
500
|
-
});
|
|
547
|
+
writeTypesForFile(resolvedFilePath, result.tags);
|
|
501
548
|
return result;
|
|
502
549
|
}
|
|
503
550
|
|
|
504
551
|
// src/next/cxx-loader.js
|
|
505
552
|
var loader2 = function(source) {
|
|
506
553
|
const { pluginConfig } = this.getOptions();
|
|
507
|
-
const
|
|
508
|
-
const { template } = processFile(source, this.resourcePath, pluginConfig,
|
|
554
|
+
const logger2 = new Logger;
|
|
555
|
+
const { template, map } = processFile(source, this.resourcePath, pluginConfig, logger2);
|
|
556
|
+
if (map && typeof this.callback === "function") {
|
|
557
|
+
this.callback(null, template, map);
|
|
558
|
+
return;
|
|
559
|
+
}
|
|
509
560
|
return template;
|
|
510
561
|
};
|
|
511
562
|
var cxx_loader_default = loader2;
|
|
512
563
|
|
|
513
|
-
//# debugId=
|
|
564
|
+
//# debugId=61C93031E060481B64756E2164756E21
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/logger.ts", "../../src/next/index.ts", "../../src/build.ts", "../../src/config.ts", "../../src/lru.ts", "../../src/utils.ts", "../../src/next/cxx-loader.js"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"const LEVELS = {\n\tdebug: 0,\n\tinfo: 1,\n\twarn: 2,\n\terror: 3,\n\tfatal: 4,\n} as const\n\nexport type LogLevel = keyof typeof LEVELS\n\nconst defaultLevel: LogLevel = process.env['NODE_ENV'] === 'production' ? 'error' : 'info'\n\ntype LogEntry = {\n\tts: number\n\tlevel: LogLevel\n\tmessage: string\n\terror?:\n\t\t| Error\n\t\t| {\n\t\t\t\tmessage: string\n\t\t\t\tstack?: string\n\t\t\t\tcause?: unknown\n\t\t }\n}\n\n/**\n * Log messages with different severity levels.\n */\nexport class Logger {\n\t#level: LogLevel\n\n\tconstructor(
|
|
6
|
-
"import type { AsyncSubscription, Event } from '@parcel/watcher'\nimport type { NextConfig } from 'next'\n\nimport
|
|
7
|
-
"import { createHash } from 'node:crypto'\nimport fs from 'node:fs/promises'\nimport path from 'node:path'\n\nimport { transform } from 'lightningcss'\nimport MagicString, { type SourceMap } from 'magic-string'\n\nimport type { BuildContext, PluginConfig, Tags } from './types.js'\nimport { AUTOGEN_MSG, GENERATED_DIR, PKG_NAME } from './config.js'\nimport { LruCache } from './lru.js'\nimport { pascalise } from './utils.js'\n\n// decode bytes to a string, then stringify into a safe literal. `${bytes}` only\n// works by accident for Buffer; a plain Uint8Array stringifies as `97,123,125`\nconst decoder = new TextDecoder()\n\n/**\n * LRU cache of `collect` results by file id + last seen source + config so watcher and transform\n * can reuse the same parsed template/tags.\n */\nconst collectCache = new LruCache<{\n\tsource: string\n\tconfig: string\n\ttemplate: string\n\ttags: Tags\n\tmap: SourceMap | null\n}>()\n\n/**\n * LRU cache for file content. Stores the last written content per file path so `maybeWrite`\n * can skip disk i/o when nothing has changed.\n */\nconst fileCache = new LruCache<string>()\n\n/**\n * Serialises type file writes inside a single process so overlapping `writeTypes` calls can't\n * interleave or land out of order.\n */\nlet writeChain: Promise<void> = Promise.resolve()\n\n/**\n * Returns whether the error was caused by a missing file or directory.\n */\nexport function isENOENT(err: unknown) {\n\treturn err instanceof Error && 'code' in err && err.code === 'ENOENT'\n}\n\n/**\n * Write a file by first writing to a unique temporary file and then renaming it into place, so\n * concurrent writers (e.g. Turbopack loader workers) never observe a partial file.\n */\nasync function writeFileAtomic(filePath: string, content: string) {\n\tconst tmp = `${filePath}.${process.pid}.${Math.random().toString(36).slice(2)}.tmp`\n\n\tawait fs.writeFile(tmp, content)\n\tawait fs.rename(tmp, filePath)\n}\n\n/**\n * Run a write task after all previously queued writes have settled. A rejection doesn't break the\n * chain for later tasks.\n */\nfunction enqueueWrite<T>(task: () => Promise<T>) {\n\t// wait for the previous write to finish, then run this one, even if the previous one failed\n\tconst run = writeChain.then(task, task)\n\n\t// move the queue on to this write, but turn either outcome into success so it never rejects\n\twriteChain = run.then(\n\t\t() => undefined,\n\t\t() => undefined,\n\t)\n\n\t// return the real promise, so the caller still sees this write's value or error\n\treturn run\n}\n\n/**\n * Write a file only if the content actually differs from what is already on disk.\n */\nexport async function maybeWrite(filePath: string, content: string) {\n\tconst cached = fileCache.get(filePath)\n\t// fast path: already wrote this exact content in this process\n\tif (cached === content) return false\n\n\t// verify against disk on a cold start (or when the cache is stale) so we\n\t// don't needlessly bump the mtime and invalidate downstream watchers\n\ttry {\n\t\tif ((await fs.readFile(filePath, 'utf-8')) === content) {\n\t\t\tfileCache.set(filePath, content)\n\t\t\treturn false\n\t\t}\n\t} catch (err) {\n\t\tif (!isENOENT(err)) throw err\n\t}\n\n\tawait writeFileAtomic(filePath, content)\n\tfileCache.set(filePath, content)\n\n\treturn true\n}\n\n// matches `[css, classes, href] = cxx\\`...\\`` and `cxx.tag<T>('name')\\`...\\``\n// capture groups: 1 optional `export `, 2-4 assigned variable names, 5 plain\n// css body, 6 quote kind, 7 tag name, 8 tagged css body\nconst regex =\n\t/((?:export\\s+)?)(?:const|var|let)\\s*\\[(\\w*)\\s*,?\\s*(\\w*)\\s*,?\\s*(\\w*)\\s*\\]\\s*=\\s*cxx(?:\\s*`([\\s\\S]*?)`|\\s*\\.\\s*tag(?:\\s*<[^>]+>)?\\s*\\(\\s*(['\"])(.*?)\\6\\s*\\)\\s*`([\\s\\S]*?)`)/gm\n\nconst IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/\n\n/**\n * Hash transformed CSS into a stable href for style deduplication.\n */\nfunction hashCss(code: Uint8Array) {\n\treturn `cxx-${createHash('sha256').update(code).digest('base64url').slice(0, 12)}`\n}\n\nexport class DuplicateTagError extends Error {\n\tname = 'DuplicateTagError'\n\n\tconstructor(tag: string) {\n\t\tsuper(`Tag ${tag} has already been seen. Tags must be unique across your application`)\n\t}\n}\n\nexport class InvalidTagError extends Error {\n\tname = 'InvalidTagError'\n\n\tconstructor(tag: string) {\n\t\tsuper(\n\t\t\t`Tag \"${tag}\" does not map to a valid TypeScript identifier. ` +\n\t\t\t\t`Use letters, numbers, spaces, \"_\" or \"-\"`,\n\t\t)\n\t}\n}\n\n/**\n * Transform `cxx` templates in one source file and collect any exported tag types.\n */\nexport function collect(source: string, id: string, config: PluginConfig) {\n\tconst configKey = JSON.stringify(config)\n\n\t// reuse the last result when the source and config are unchanged\n\tconst cached = collectCache.get(id)\n\tif (cached?.source === source && cached.config === configKey) return cached\n\n\tconst tags: Tags = new Map()\n\tconst magic = new MagicString(source)\n\tlet matched = false\n\n\t// the regex is global, so reset its cursor before scanning\n\tregex.lastIndex = 0\n\n\tlet match: RegExpExecArray | null\n\n\t// walk every cxx template and replace it in place\n\twhile ((match = regex.exec(source))) {\n\t\tmatched = true\n\n\t\t// capture groups: export, three bindings, plain css, (quote), tag, tagged css\n\t\tconst [, exp, varOne, varTwo, varThree, plainCss, , tag, taggedCss] = match\n\t\tconst css = plainCss ?? taggedCss\n\n\t\t// compile the CSS to minified CSS Modules\n\t\tconst { code, exports = {} } = transform({\n\t\t\tminify: true,\n\t\t\tcssModules: true,\n\t\t\tfilename: id,\n\t\t\tcode: new TextEncoder().encode(css),\n\t\t})\n\n\t\tconst href = hashCss(code)\n\t\t// map each class name to its generated (scoped) name\n\t\tconst styles = Object.fromEntries(\n\t\t\tObject.entries(exports).map(([k, v]) => [k, v.name]),\n\t\t)\n\n\t\tif (tag) {\n\t\t\tconst suffix =\n\t\t\t\ttypeof config.typeSuffix === 'string'\n\t\t\t\t\t? config.typeSuffix\n\t\t\t\t\t: config.typeSuffix === false\n\t\t\t\t\t\t? ''\n\t\t\t\t\t\t: 'Classes'\n\t\t\tconst tagWithSuffix = pascalise(`${tag}${suffix}`)\n\n\t\t\tif (!IDENTIFIER.test(tagWithSuffix)) throw new InvalidTagError(tag)\n\t\t\tif (tags.has(tagWithSuffix)) throw new DuplicateTagError(tagWithSuffix)\n\n\t\t\t// side effect but necessary\n\t\t\ttags.set(tagWithSuffix, Object.keys(styles))\n\t\t}\n\n\t\tconst statements: string[] = []\n\n\t\tif (varOne) {\n\t\t\tstatements.push(`${exp}const ${varOne} = ${JSON.stringify(decoder.decode(code))}`)\n\t\t}\n\n\t\tif (varTwo) {\n\t\t\tstatements.push(`${exp}const ${varTwo} = ${JSON.stringify(styles)}`)\n\t\t}\n\n\t\tif (varThree) {\n\t\t\tstatements.push(`${exp}const ${varThree} = ${JSON.stringify(href)}`)\n\t\t}\n\n\t\t// swap the template for the generated declarations, keeping the export keyword\n\t\tmagic.overwrite(match.index, match.index + match[0].length, statements.join('\\n'))\n\t}\n\n\tconst template = magic.toString()\n\t// only build a map when something was actually rewritten\n\tconst map = matched\n\t\t? magic.generateMap({ source: id, includeContent: true, hires: true })\n\t\t: null\n\tconst result = { source, config: configKey, template, tags, map }\n\n\tcollectCache.set(id, result)\n\n\treturn result\n}\n\n/**\n * Render the generated declaration file contents for a set of collected tags.\n */\nfunction renderTypes(tags: Tags) {\n\treturn [\n\t\tAUTOGEN_MSG,\n\t\t'',\n\t\t`import '${PKG_NAME}'`,\n\t\t'',\n\t\t`declare module '${PKG_NAME}' {`,\n\t\ttagsToType(tags),\n\t\t'}',\n\t\t'',\n\t].join('\\n')\n}\n\n/**\n * Write (or remove) the generated `index.d.ts` for a full tag surface.\n */\nasync function writeRenderedTypes(tags: Tags) {\n\tconst filePath = path.join(GENERATED_DIR, 'index.d.ts')\n\n\tif (!tags.size) {\n\t\t// `force` makes this a no-op when the file is already absent\n\t\tawait fs.rm(filePath, { force: true })\n\t\tfileCache.delete(filePath)\n\n\t\treturn\n\t}\n\n\tawait fs.mkdir(GENERATED_DIR, { recursive: true })\n\tawait maybeWrite(filePath, renderTypes(tags))\n}\n\n/**\n * Write the generated declaration file for the current set of collected tags.\n */\nexport function writeTypes(tags: Tags) {\n\treturn enqueueWrite(() => writeRenderedTypes(tags))\n}\n\nconst PARTIAL_DIR = path.join(GENERATED_DIR, 'tags')\n\nfunction partialPath(filePath: string) {\n\treturn path.join(\n\t\tPARTIAL_DIR,\n\t\t`${createHash('sha1').update(filePath).digest('hex')}.json`,\n\t)\n}\n\n/**\n * Read every per-file partial written by the Next loader workers and merge them into one tag map.\n * Partials whose source file no longer exists are pruned so deleted files drop out of the types.\n */\nasync function readPartials() {\n\tlet entries: string[]\n\n\ttry {\n\t\tentries = await fs.readdir(PARTIAL_DIR)\n\t} catch (err) {\n\t\tif (isENOENT(err)) return new Map()\n\t\tthrow err\n\t}\n\n\tconst tags: Tags = new Map()\n\n\tfor (const entry of entries) {\n\t\tif (!entry.endsWith('.json')) continue\n\n\t\tconst partial = path.join(PARTIAL_DIR, entry)\n\t\tlet parsed: { file: string; tags: Record<string, string[]> }\n\n\t\ttry {\n\t\t\tparsed = JSON.parse(await fs.readFile(partial, 'utf-8'))\n\t\t} catch {\n\t\t\tcontinue\n\t\t}\n\n\t\ttry {\n\t\t\tawait fs.access(parsed.file)\n\t\t} catch {\n\t\t\tawait fs.rm(partial, { force: true })\n\t\t\tcontinue\n\t\t}\n\n\t\tfor (const [name, classes] of Object.entries(parsed.tags)) {\n\t\t\tif (tags.has(name)) throw new DuplicateTagError(name)\n\t\t\ttags.set(name, classes)\n\t\t}\n\t}\n\n\treturn tags\n}\n\n/**\n * Next-specific write path. Turbopack spreads loaders across worker processes, so each worker\n * persists its own per-file partial and rebuilds the shared declaration file from all of them.\n */\nexport function writeTypesForFile(filePath: string, tags: Tags) {\n\treturn enqueueWrite(async () => {\n\t\tawait fs.mkdir(PARTIAL_DIR, { recursive: true })\n\n\t\tconst partial = partialPath(filePath)\n\n\t\tif (!tags.size) {\n\t\t\tawait fs.rm(partial, { force: true })\n\t\t} else {\n\t\t\tawait writeFileAtomic(\n\t\t\t\tpartial,\n\t\t\t\tJSON.stringify({ file: filePath, tags: Object.fromEntries(tags) }),\n\t\t\t)\n\t\t}\n\n\t\tawait writeRenderedTypes(await readPartials())\n\t})\n}\n\n/**\n * Render collected tags as a module augmentation for the package entrypoint.\n */\nexport function tagsToType(tags: Tags) {\n\treturn [...tags]\n\t\t.map(([tag, classes]) => {\n\t\t\tconst union =\n\t\t\t\tclasses.length > 0\n\t\t\t\t\t? classes\n\t\t\t\t\t\t\t.toSorted((a, b) => a.length - b.length)\n\t\t\t\t\t\t\t.map(c => `'${c}'`)\n\t\t\t\t\t\t\t.join(' | ')\n\t\t\t\t\t: 'never'\n\n\t\t\treturn `\\texport type ${tag} = ${union}`\n\t\t})\n\t\t.join('\\n')\n}\n\n/**\n * Merge per-file tag maps into one application-wide tag map.\n */\nexport function flattenTags(tagsByFile: BuildContext['tagsByFile']) {\n\tconst tags = new Map<string, string[]>()\n\n\tfor (const fileTags of tagsByFile.values()) {\n\t\tfor (const [name, classes] of fileTags) {\n\t\t\tif (tags.has(name)) throw new DuplicateTagError(name)\n\t\t\ttags.set(name, classes)\n\t\t}\n\t}\n\n\treturn tags\n}\n",
|
|
5
|
+
"const LEVELS = {\n\tdebug: 0,\n\tinfo: 1,\n\twarn: 2,\n\terror: 3,\n\tfatal: 4,\n} as const\n\nexport type LogLevel = keyof typeof LEVELS\n\nconst defaultLevel: LogLevel = process.env['NODE_ENV'] === 'production' ? 'error' : 'info'\n\ntype LogEntry = {\n\tts: number\n\tlevel: LogLevel\n\tmessage: string\n\terror?:\n\t\t| Error\n\t\t| {\n\t\t\t\tmessage: string\n\t\t\t\tstack?: string\n\t\t\t\tcause?: unknown\n\t\t }\n}\n\n/**\n * Log messages with different severity levels.\n */\nexport class Logger {\n\t#level: LogLevel = defaultLevel\n\n\tconstructor(public name?: string) {}\n\n\t/**\n\t * Convert a value to an Error instance.\n\t */\n\tstatic toError(err: unknown) {\n\t\treturn err instanceof Error ? err : new Error(String(err), { cause: err })\n\t}\n\n\t/**\n\t * Stringify the error for logging.\n\t */\n\tstatic print(err: unknown) {\n\t\tif (err instanceof Error) {\n\t\t\treturn err.message + (err.stack ? `\\n${err.stack}` : '')\n\t\t}\n\n\t\t// for plain objects, attempt to stringify with indentation\n\t\t// for readability\n\t\tif (typeof err === 'object' && err !== null) {\n\t\t\ttry {\n\t\t\t\treturn JSON.stringify(err, null, 2)\n\t\t\t} catch {\n\t\t\t\t// if stringify fails (e.g. circular reference), fall back\n\t\t\t\t// to basic string conversion\n\t\t\t\treturn String(err)\n\t\t\t}\n\t\t}\n\n\t\treturn String(err)\n\t}\n\n\tset level(level: LogLevel) {\n\t\tthis.#level = level\n\t}\n\n\tget level() {\n\t\treturn this.#level\n\t}\n\n\t/**\n\t * Log a message with a specific level.\n\t */\n\tlog(level: LogLevel, message: string, error?: Error) {\n\t\tif (LEVELS[level] < LEVELS[this.level]) return\n\n\t\tconst entry: LogEntry = {\n\t\t\tts: Date.now(),\n\t\t\tlevel,\n\t\t\tmessage,\n\t\t}\n\n\t\tif (level === 'error' || level === 'fatal') {\n\t\t\tentry.error = error ? Logger.toError(error) : new Error(message)\n\t\t}\n\n\t\tconst line = `${this.name ? `[${this.name}]` : ''} [${entry.ts}] [${level.toUpperCase()}] ${message}`\n\t\tconst extra = entry.error ? `\\n${Logger.print(entry.error)}` : ''\n\n\t\tif (level === 'warn') {\n\t\t\tconsole.warn(line, extra)\n\t\t\treturn\n\t\t}\n\n\t\tif (level === 'error' || level === 'fatal') {\n\t\t\tconsole.error(line, extra)\n\t\t\treturn\n\t\t}\n\n\t\tconsole.log(line, extra)\n\t}\n\n\t/**\n\t * Log a debug message.\n\t */\n\tdebug(...messages: string[]) {\n\t\tthis.log('debug', messages.join(' '))\n\t}\n\n\t/**\n\t * Log an info message.\n\t */\n\tinfo(...messages: string[]) {\n\t\tthis.log('info', messages.join(' '))\n\t}\n\n\t/**\n\t * Log a warning message.\n\t */\n\twarn(...messages: string[]) {\n\t\tthis.log('warn', messages.join(' '))\n\t}\n\n\t/**\n\t * Log an error message.\n\t */\n\terror(message: string, error?: unknown) {\n\t\tthis.log('error', message, error === undefined ? undefined : Logger.toError(error))\n\t}\n\n\t/**\n\t * Log a fatal error message.\n\t */\n\tfatal(message: string, error?: unknown) {\n\t\tthis.log('fatal', message, error === undefined ? undefined : Logger.toError(error))\n\t}\n}\n",
|
|
6
|
+
"import type { AsyncSubscription, Event } from '@parcel/watcher'\nimport type { NextConfig } from 'next'\n\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nimport type { PluginConfig } from '../types.js'\nimport { collect, refreshFile, seedTypes, writeTypesForFile } from '../build.js'\nimport { GENERATED_DIR } from '../config.js'\nimport { Logger } from '../logger.js'\n\nconst typeLogger = new Logger('cxx')\n\nconst nextDir = path.dirname(fileURLToPath(import.meta.url))\nconst loader = path.join(nextDir, 'cxx-loader.cjs')\n\n// keep the exact file inputs and their config so a single recursive watcher can filter events\nconst watchedFiles = new Map<string, { pluginConfig: PluginConfig; logger: Logger }>()\n\nlet subscription: AsyncSubscription | null = null\nlet subscriptionPromise: Promise<void> | null = null\nlet cleanupRegistered = false\nlet watcherLogger: Logger | null = null\n\n// a single recursive watch avoids overlapping per-directory watchers; ignore the parts of the\n// tree that never contain source we transform\nconst DEFAULT_IGNORE = [\n\t'**/node_modules/**',\n\t'**/.next/**',\n\t`**/${GENERATED_DIR}/**`,\n\t'**/.git/**',\n]\n\nasync function onEvent(event: Event['type'], filePath: string) {\n\tconst watched = watchedFiles.get(filePath)\n\tif (!watched) return\n\n\tconst { pluginConfig, logger } = watched\n\n\tif (event === 'delete') {\n\t\tawait writeTypesForFile(filePath, new Map())\n\t} else {\n\t\tawait refreshFile(filePath, pluginConfig)\n\t}\n\n\tlogger.info(`updated types from ${filePath}`)\n}\n\n/**\n * Start the watcher lazily, on the first file we actually process, so merely importing this module\n * has no side effects.\n */\nfunction ensureWatcher(pluginConfig: PluginConfig, logger: Logger) {\n\twatcherLogger = logger\n\n\tif (subscriptionPromise) return\n\n\tconst root = pluginConfig.watch?.root ?? process.cwd()\n\n\tsubscriptionPromise = (async () => {\n\t\t// lazily imported so the native module is only loaded when watching is needed\n\t\tconst { subscribe } = await import('@parcel/watcher')\n\n\t\tsubscription = await subscribe(\n\t\t\troot,\n\t\t\t(watchErr, events) => {\n\t\t\t\tif (watchErr) {\n\t\t\t\t\twatcherLogger?.error(`failed to watch ${root}`, watchErr)\n\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tfor (const event of events) {\n\t\t\t\t\tconst filePath = path.resolve(event.path)\n\t\t\t\t\tif (!watchedFiles.has(filePath)) continue\n\n\t\t\t\t\tvoid onEvent(event.type, filePath).catch(err => {\n\t\t\t\t\t\twatcherLogger?.error(`failed to update types from ${filePath}`, err)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ ignore: DEFAULT_IGNORE },\n\t\t)\n\n\t\tregisterCleanup()\n\t})().catch(err => {\n\t\twatcherLogger?.error('failed to start cxx watcher', err)\n\t\tsubscriptionPromise = null\n\t})\n}\n\n/**\n * Close all active Parcel subscriptions.\n */\nasync function cleanup() {\n\tconst active = subscription\n\n\tsubscription = null\n\tsubscriptionPromise = null\n\twatchedFiles.clear()\n\n\tif (active) await active.unsubscribe()\n}\n\n/**\n * Restore the host process's default signal behaviour instead of forcing an exit from a library.\n */\nasync function shutdown(signal: NodeJS.Signals) {\n\ttry {\n\t\tawait cleanup()\n\t} finally {\n\t\t// our `once` handlers have already been removed, so re-raising lets Node terminate as usual\n\t\tprocess.kill(process.pid, signal)\n\t}\n}\n\nfunction registerCleanup() {\n\tif (cleanupRegistered) return\n\n\tcleanupRegistered = true\n\tprocess.once('SIGINT', () => void shutdown('SIGINT'))\n\tprocess.once('SIGTERM', () => void shutdown('SIGTERM'))\n}\n\n/**\n * Transform one module and, in development, register it with the shared watcher state.\n */\nexport function processFile(\n\tsource: string,\n\tfilePath: string,\n\tpluginConfig: PluginConfig,\n\tlogger: Logger,\n) {\n\tconst resolvedFilePath = path.resolve(filePath)\n\n\t// skip files that cannot contain a template, including node_modules\n\tif (!source.includes('cxx') || /[\\\\/]node_modules[\\\\/]/.test(resolvedFilePath)) {\n\t\treturn { template: source, tags: new Map(), map: null }\n\t}\n\n\tif (process.env['NODE_ENV'] !== 'production') {\n\t\twatchedFiles.set(resolvedFilePath, { pluginConfig, logger })\n\t\tensureWatcher(pluginConfig, logger)\n\t}\n\n\tconst result = collect(source, resolvedFilePath, pluginConfig)\n\n\tvoid writeTypesForFile(resolvedFilePath, result.tags)\n\n\treturn result\n}\n\nconst TURBOPACK_GLOB = '*.{tsx,jsx,ts,js}'\n\nexport function withCxx(nextConfig: NextConfig = {}, pluginConfig: PluginConfig = {}) {\n\tconst watchRoot =\n\t\tpluginConfig.watch?.root ?? nextConfig.turbopack?.root ?? process.cwd()\n\n\t// Seed on dev startup only, matching Vite. A production build is covered by the loader, and\n\t// `next start` must not scan or write at runtime.\n\tif (process.env['NODE_ENV'] !== 'production') {\n\t\t// the app directory, not the whole Turbopack root, so sibling apps in a monorepo do not\n\t\t// leak into this app's types\n\t\tconst seedRoot = pluginConfig.watch?.root ?? process.cwd()\n\n\t\tvoid seedTypes(seedRoot, pluginConfig).catch(err =>\n\t\t\ttypeLogger.error('failed to seed cxx types', err),\n\t\t)\n\t}\n\n\tconst loaderItem = {\n\t\tloader,\n\t\toptions: {\n\t\t\tpluginConfig: {\n\t\t\t\t...pluginConfig,\n\t\t\t\twatch: { ...pluginConfig.watch, root: watchRoot },\n\t\t\t},\n\t\t},\n\t}\n\n\tconst currentRule = nextConfig.turbopack?.rules?.[TURBOPACK_GLOB]\n\tconst userWebpack = nextConfig.webpack\n\n\treturn {\n\t\t...nextConfig,\n\t\tturbopack: {\n\t\t\t...nextConfig.turbopack,\n\t\t\trules: {\n\t\t\t\t...nextConfig.turbopack?.rules,\n\t\t\t\t[TURBOPACK_GLOB]: Array.isArray(currentRule)\n\t\t\t\t\t? [...currentRule, loaderItem]\n\t\t\t\t\t: currentRule\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t...currentRule,\n\t\t\t\t\t\t\t\tloaders: [...(currentRule.loaders ?? []), loaderItem],\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: { loaders: [loaderItem] },\n\t\t\t},\n\t\t},\n\t\t// webpack builds (Next without `--turbopack`) would otherwise silently skip the transform\n\t\twebpack(config: unknown, context: unknown) {\n\t\t\tconst next = (\n\t\t\t\tuserWebpack ? userWebpack(config as never, context as never) : config\n\t\t\t) as {\n\t\t\t\tmodule?: { rules?: unknown[] }\n\t\t\t}\n\n\t\t\tnext.module ??= {}\n\t\t\tnext.module.rules ??= []\n\t\t\tnext.module.rules.push({\n\t\t\t\ttest: /\\.[jt]sx?$/,\n\t\t\t\texclude: /node_modules/,\n\t\t\t\tenforce: 'pre',\n\t\t\t\tuse: [loaderItem],\n\t\t\t})\n\n\t\t\treturn next\n\t\t},\n\t}\n}\n",
|
|
7
|
+
"import type { Dirent } from 'node:fs'\n\nimport { createHash } from 'node:crypto'\nimport fs from 'node:fs/promises'\nimport path from 'node:path'\n\nimport { transform } from 'lightningcss'\nimport MagicString, { type SourceMap } from 'magic-string'\n\nimport type { PluginConfig, Tags } from './types.js'\nimport { AUTOGEN_MSG, GENERATED_DIR, NAME, PKG_NAME } from './config.js'\nimport { Logger } from './logger.js'\nimport { LruCache } from './lru.js'\nimport { pascalise } from './utils.js'\n\nconst logger = new Logger(NAME)\n\nconst decoder = new TextDecoder()\nconst encoder = new TextEncoder()\n\n/**\n * LRU cache of `collect` results by file id + last seen source + config so watcher and transform\n * can reuse the same parsed template/tags.\n */\nconst collectCache = new LruCache<{\n\tsource: string\n\tconfig: string\n\ttemplate: string\n\ttags: Tags\n\tmap: SourceMap | null\n}>()\n\n/**\n * Serialises type file writes inside a single process so overlapping writes can't interleave or\n * land out of order.\n */\nlet writeChain: Promise<void> = Promise.resolve()\n\n/**\n * Returns whether the error was caused by a missing file or directory.\n */\nexport function isENOENT(err: unknown) {\n\treturn err instanceof Error && 'code' in err && err.code === 'ENOENT'\n}\n\n/**\n * Write a file by writing to a unique temporary file and renaming it into place, so concurrent\n * writers never observe a partial file. The temp file is cleaned up if the rename fails.\n */\nasync function writeFileAtomic(filePath: string, content: string) {\n\tconst tmp = `${filePath}.${process.pid}.${Math.random().toString(36).slice(2)}.tmp`\n\n\tawait fs.writeFile(tmp, content)\n\n\ttry {\n\t\tawait fs.rename(tmp, filePath)\n\t} catch (err) {\n\t\tawait fs.rm(tmp, { force: true })\n\t\tthrow err\n\t}\n}\n\n/**\n * Run a write task after all previously queued writes have settled. A rejection doesn't break the\n * chain for later tasks.\n */\nfunction enqueueWrite<T>(task: () => Promise<T>) {\n\t// wait for the previous write to finish, then run this one, even if the previous one failed\n\tconst run = writeChain.then(task, task)\n\n\t// move the queue on to this write, but turn either outcome into success so it never rejects\n\twriteChain = run.then(\n\t\t() => undefined,\n\t\t() => undefined,\n\t)\n\n\t// return the real promise, so the caller still sees this write's value or error\n\treturn run\n}\n\n/**\n * Write a file only if the content differs from what is already on disk, so watchers are not woken\n * by a needless mtime change.\n */\nexport async function maybeWrite(filePath: string, content: string) {\n\ttry {\n\t\tif ((await fs.readFile(filePath, 'utf-8')) === content) return false\n\t} catch (err) {\n\t\tif (!isENOENT(err)) throw err\n\t}\n\n\tawait writeFileAtomic(filePath, content)\n\n\treturn true\n}\n\n// matches `[css, classes, href] = cxx\\`...\\`` and `cxx.tag<T>('name')\\`...\\``\n// capture groups: 1 optional `export `, 2-4 assigned variable names, 5 plain\n// css body, 6 quote kind, 7 tag name, 8 tagged css body\nconst regex =\n\t/((?:export\\s+)?)(?:const|var|let)\\s*\\[(\\w*)\\s*,?\\s*(\\w*)\\s*,?\\s*(\\w*)\\s*\\]\\s*=\\s*cxx(?:\\s*`([\\s\\S]*?)`|\\s*\\.\\s*tag(?:\\s*<[^>]+>)?\\s*\\(\\s*(['\"])(.*?)\\6\\s*\\)\\s*`([\\s\\S]*?)`)/gm\n\nconst IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/\n\n/**\n * Hash transformed CSS into a stable href for style deduplication.\n */\nfunction hashCss(code: Uint8Array) {\n\treturn `cxx-${createHash('sha256').update(code).digest('base64url').slice(0, 12)}`\n}\n\nexport class DuplicateTagError extends Error {\n\tname = 'DuplicateTagError'\n\n\tconstructor(tag: string) {\n\t\tsuper(`Tag ${tag} has already been seen. Tags must be unique across your application`)\n\t}\n}\n\nexport class InvalidTagError extends Error {\n\tname = 'InvalidTagError'\n\n\tconstructor(tag: string) {\n\t\tsuper(\n\t\t\t`Tag \"${tag}\" does not map to a valid TypeScript identifier. ` +\n\t\t\t\t`Use letters, numbers, spaces, \"_\" or \"-\"`,\n\t\t)\n\t}\n}\n\n/**\n * Transform `cxx` templates in one source file and collect any exported tag types.\n */\nexport function collect(source: string, id: string, config: PluginConfig) {\n\tconst configKey = JSON.stringify(config)\n\n\t// reuse the last result when the source and config are unchanged\n\tconst cached = collectCache.get(id)\n\tif (cached?.source === source && cached.config === configKey) return cached\n\n\tconst tags: Tags = new Map()\n\tconst magic = new MagicString(source)\n\n\tlet matched = false\n\n\t// the regex is global, so reset its cursor before scanning\n\tregex.lastIndex = 0\n\n\tlet match: RegExpExecArray | null\n\n\t// walk every cxx template and replace it in place\n\twhile ((match = regex.exec(source))) {\n\t\tmatched = true\n\n\t\t// capture groups: export, three bindings, plain css, (quote), tag, tagged css\n\t\tconst [, exp, varOne, varTwo, varThree, plainCss, , tag, taggedCss] = match\n\t\tconst css = plainCss ?? taggedCss\n\t\tconst matchIndex = match.index\n\n\t\t// compile the CSS to minified CSS Modules, reporting the source line on failure\n\t\tconst { code, exports: classExports = {} } = (() => {\n\t\t\ttry {\n\t\t\t\treturn transform({\n\t\t\t\t\tminify: true,\n\t\t\t\t\tcssModules: true,\n\t\t\t\t\tfilename: id,\n\t\t\t\t\tcode: encoder.encode(css),\n\t\t\t\t})\n\t\t\t} catch (err) {\n\t\t\t\tconst line = source.slice(0, matchIndex).split('\\n').length\n\t\t\t\tthrow new Error(`Failed to compile cxx CSS at ${id}:${line}`, { cause: err })\n\t\t\t}\n\t\t})()\n\n\t\tconst href = hashCss(code)\n\t\t// map each class name to its generated (scoped) name\n\t\tconst styles = Object.fromEntries(\n\t\t\tObject.entries(classExports).map(([k, v]) => [k, v.name]),\n\t\t)\n\n\t\tif (tag) {\n\t\t\tconst suffix =\n\t\t\t\ttypeof config.typeSuffix === 'string'\n\t\t\t\t\t? config.typeSuffix\n\t\t\t\t\t: config.typeSuffix === false\n\t\t\t\t\t\t? ''\n\t\t\t\t\t\t: 'Classes'\n\t\t\tconst tagWithSuffix = pascalise(`${tag}${suffix}`)\n\n\t\t\tif (!IDENTIFIER.test(tagWithSuffix)) throw new InvalidTagError(tag)\n\t\t\tif (tags.has(tagWithSuffix)) throw new DuplicateTagError(tagWithSuffix)\n\n\t\t\t// side effect but necessary\n\t\t\ttags.set(tagWithSuffix, Object.keys(styles))\n\t\t}\n\n\t\tconst statements: string[] = []\n\n\t\tif (varOne) {\n\t\t\tstatements.push(`${exp}const ${varOne} = ${JSON.stringify(decoder.decode(code))}`)\n\t\t}\n\n\t\tif (varTwo) {\n\t\t\tstatements.push(`${exp}const ${varTwo} = ${JSON.stringify(styles)}`)\n\t\t}\n\n\t\tif (varThree) {\n\t\t\tstatements.push(`${exp}const ${varThree} = ${JSON.stringify(href)}`)\n\t\t}\n\n\t\t// swap the template for the generated declarations, keeping the export keyword\n\t\tmagic.overwrite(matchIndex, matchIndex + match[0].length, statements.join('\\n'))\n\t}\n\n\tconst template = magic.toString()\n\t// only build a map when something was actually rewritten\n\tconst map = matched\n\t\t? magic.generateMap({ source: id, includeContent: true, hires: true })\n\t\t: null\n\tconst result = { source, config: configKey, template, tags, map }\n\n\tcollectCache.set(id, result)\n\n\treturn result\n}\n\n/**\n * Render the generated declaration file contents for a set of collected tags.\n */\nfunction renderTypes(tags: Tags) {\n\treturn [\n\t\tAUTOGEN_MSG,\n\t\t'',\n\t\t`import '${PKG_NAME}'`,\n\t\t'',\n\t\t`declare module '${PKG_NAME}' {`,\n\t\ttagsToType(tags),\n\t\t'}',\n\t\t'',\n\t].join('\\n')\n}\n\n/**\n * Write (or remove) the generated `index.d.ts` for a full tag surface.\n */\nasync function writeRenderedTypes(tags: Tags) {\n\tconst filePath = path.join(GENERATED_DIR, 'index.d.ts')\n\n\tif (!tags.size) {\n\t\tawait fs.rm(filePath, { force: true })\n\t\treturn\n\t}\n\n\tawait fs.mkdir(GENERATED_DIR, { recursive: true })\n\tawait maybeWrite(filePath, renderTypes(tags))\n}\n\nconst PARTIAL_DIR = path.join(GENERATED_DIR, 'tags')\n\n// wait this long after the last file before rebuilding, so a burst of files\n// only re-reads the partials once\nconst REBUILD_WAIT = 100\n\nlet rebuildTimer: ReturnType<typeof setTimeout> | null = null\n\n/**\n * Map a source file to its partial file, named by a hash of the absolute path so each file has\n * exactly one partial.\n */\nfunction partialPath(filePath: string) {\n\treturn path.join(\n\t\tPARTIAL_DIR,\n\t\t`${createHash('sha1').update(filePath).digest('hex')}.json`,\n\t)\n}\n\ntype DuplicateTag = {\n\ttag: string\n\tfiles: string[]\n}\n\n/**\n * Read every per-file partial and merge them into one tag map. Partials whose source file no\n * longer exists are pruned, and duplicate tag names are reported with the files that define them.\n */\nasync function readPartials(): Promise<{ tags: Tags; duplicates: DuplicateTag[] }> {\n\tlet entries: string[]\n\n\ttry {\n\t\tentries = await fs.readdir(PARTIAL_DIR)\n\t} catch (err) {\n\t\tif (isENOENT(err)) return { tags: new Map(), duplicates: [] }\n\t\tthrow err\n\t}\n\n\tconst tags: Tags = new Map()\n\tconst fileByTag = new Map<string, string>()\n\tconst duplicates: DuplicateTag[] = []\n\n\tfor (const entry of entries) {\n\t\tif (!entry.endsWith('.json')) continue\n\n\t\tconst partial = path.join(PARTIAL_DIR, entry)\n\t\tlet parsed: { file: string; tags: Record<string, string[]> }\n\n\t\ttry {\n\t\t\tparsed = JSON.parse(await fs.readFile(partial, 'utf-8'))\n\t\t} catch {\n\t\t\tcontinue\n\t\t}\n\n\t\tlet source: string\n\n\t\ttry {\n\t\t\tsource = await fs.readFile(parsed.file, 'utf-8')\n\t\t} catch {\n\t\t\tawait fs.rm(partial, { force: true })\n\t\t\tcontinue\n\t\t}\n\n\t\t// drop partials for files that no longer use cxx, so their tags do not linger\n\t\tif (!source.includes('cxx')) {\n\t\t\tawait fs.rm(partial, { force: true })\n\t\t\tcontinue\n\t\t}\n\n\t\tfor (const [name, classes] of Object.entries(parsed.tags)) {\n\t\t\tconst existing = fileByTag.get(name)\n\n\t\t\tif (existing) {\n\t\t\t\tduplicates.push({ tag: name, files: [existing, parsed.file] })\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tfileByTag.set(name, parsed.file)\n\t\t\ttags.set(name, classes)\n\t\t}\n\t}\n\n\treturn { tags, duplicates }\n}\n\n/**\n * Persist one file's tags to its own partial, then rebuild the shared types soon. Rebuilding is\n * debounced and serialised, so a large build does not re-read every partial per file.\n */\nexport function writeTypesForFile(filePath: string, tags: Tags) {\n\treturn enqueueWrite(async () => {\n\t\tawait fs.mkdir(PARTIAL_DIR, { recursive: true })\n\n\t\tconst partial = partialPath(filePath)\n\n\t\tif (!tags.size) {\n\t\t\tawait fs.rm(partial, { force: true })\n\t\t} else {\n\t\t\tawait writeFileAtomic(\n\t\t\t\tpartial,\n\t\t\t\tJSON.stringify({ file: filePath, tags: Object.fromEntries(tags) }),\n\t\t\t)\n\t\t}\n\t})\n\t\t.then(() => scheduleRebuild())\n\t\t.catch(err => {\n\t\t\tlogger.error(`failed to write types for ${filePath}`, err)\n\t\t})\n}\n\n/**\n * Queue a rebuild of `index.d.ts` after a short delay, so a burst of writes only rebuilds once.\n */\nfunction scheduleRebuild() {\n\tif (rebuildTimer) clearTimeout(rebuildTimer)\n\n\trebuildTimer = setTimeout(() => {\n\t\trebuildTimer = null\n\t\tflushTypes().catch(err => {\n\t\t\tlogger.error('failed to generate types', err)\n\t\t})\n\t}, REBUILD_WAIT)\n}\n\n/**\n * Rebuild `index.d.ts` from every partial.\n */\nexport function flushTypes() {\n\tif (rebuildTimer) {\n\t\tclearTimeout(rebuildTimer)\n\t\trebuildTimer = null\n\t}\n\n\treturn enqueueWrite(async () => {\n\t\tconst { tags, duplicates } = await readPartials()\n\t\tawait writeRenderedTypes(tags)\n\n\t\tfor (const duplicate of duplicates) {\n\t\t\tlogger.error(\n\t\t\t\t`Tag \"${duplicate.tag}\" is defined in multiple files: ${duplicate.files.join(', ')}`,\n\t\t\t)\n\t\t}\n\t})\n}\n\nexport const SOURCE_EXTENSIONS = new Set(['.js', '.jsx', '.ts', '.tsx'])\n\n// directories that never contain source we transform\nconst SKIP_DIRS = new Set(['node_modules', 'dist', 'build', 'coverage', 'out'])\n\n/**\n * Run `fn` for every item, with at most `concurrency` calls in flight.\n */\nasync function runWithConcurrency<T>(\n\titems: T[],\n\tconcurrency: number,\n\tfn: (item: T) => Promise<void>,\n) {\n\tlet cursor = 0\n\n\tconst workers = Array.from(\n\t\t{ length: Math.min(concurrency, items.length) },\n\t\tasync () => {\n\t\t\twhile (cursor < items.length) {\n\t\t\t\tconst index = cursor++\n\t\t\t\tawait fn(items[index])\n\t\t\t}\n\t\t},\n\t)\n\n\tawait Promise.all(workers)\n}\n\n/**\n * Read one file, collect its tags, and persist them. A file with no `cxx` usage has its partial\n * removed, so stale tags drop out.\n */\nexport async function refreshFile(file: string, config: PluginConfig) {\n\tlet source: string\n\n\ttry {\n\t\tsource = await fs.readFile(file, 'utf-8')\n\t} catch (err) {\n\t\tif (!isENOENT(err)) throw err\n\t\tawait writeTypesForFile(file, new Map())\n\t\treturn\n\t}\n\n\tconst tags = source.includes('cxx') ? collect(source, file, config).tags : new Map()\n\tawait writeTypesForFile(file, tags)\n}\n\n/**\n * Walk every source file under `root` and seed the type surface, so a fresh checkout (and a build\n * with no edits) has types without waiting for a transform.\n */\nexport async function seedTypes(root: string, config: PluginConfig) {\n\tasync function scan(dir: string) {\n\t\tlet entries: Dirent[]\n\n\t\ttry {\n\t\t\tentries = await fs.readdir(dir, { withFileTypes: true })\n\t\t} catch {\n\t\t\treturn\n\t\t}\n\n\t\tawait runWithConcurrency(entries, 8, async entry => {\n\t\t\tif (entry.name.startsWith('.') || SKIP_DIRS.has(entry.name)) return\n\n\t\t\tconst full = path.join(dir, entry.name)\n\n\t\t\tif (entry.isDirectory()) {\n\t\t\t\tawait scan(full)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (!SOURCE_EXTENSIONS.has(path.extname(entry.name))) return\n\n\t\t\tawait refreshFile(full, config)\n\t\t})\n\t}\n\n\tawait scan(root)\n\tawait flushTypes()\n}\n\n/**\n * Render collected tags as a module augmentation for the package entrypoint.\n */\nexport function tagsToType(tags: Tags) {\n\treturn [...tags]\n\t\t.toSorted(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))\n\t\t.map(([tag, classes]) => {\n\t\t\tconst union =\n\t\t\t\tclasses.length > 0\n\t\t\t\t\t? classes\n\t\t\t\t\t\t\t.toSorted((a, b) => a.length - b.length)\n\t\t\t\t\t\t\t.map(c => `'${c}'`)\n\t\t\t\t\t\t\t.join(' | ')\n\t\t\t\t\t: 'never'\n\n\t\t\treturn `\\texport type ${tag} = ${union}`\n\t\t})\n\t\t.join('\\n')\n}\n",
|
|
8
8
|
"export const NAME = 'cxx'\nexport const PKG_NAME = `@jk2908/${NAME}`\nexport const GENERATED_DIR = `.${NAME}`\nexport const AUTOGEN_MSG = `// auto-generated by ${NAME}`\n",
|
|
9
9
|
"export const CACHE_MAX_SIZE = 100\n\nexport class LruCache<T> {\n\t#cache: Map<string, T> = new Map()\n\t#maxSize: number\n\n\tconstructor(maxSize = CACHE_MAX_SIZE) {\n\t\tthis.#maxSize = maxSize\n\t}\n\n\tget size() {\n\t\treturn this.#cache.size\n\t}\n\n\t/**\n\t * Retrieve a cached value and promote it to most-recently-used so it won't\n\t * be evicted while still actively referenced.\n\t */\n\tget(key: string) {\n\t\tconst cached = this.#cache.get(key)\n\t\tif (this.#cache.has(key)) this.set(key, cached as T)\n\n\t\treturn cached\n\t}\n\n\t/**\n\t * Promote an existing cache entry to most-recently-used by deleting and\n\t * re-inserting it, which moves it to the end of the Map's iteration\n\t * order. If the cache is at capacity, evict the least recently used\n\t * entry (front) before inserting.\n\t */\n\tset(key: string, value: T) {\n\t\t// drop any existing entry\n\t\tthis.#cache.delete(key)\n\n\t\tif (this.#cache.size >= this.#maxSize) {\n\t\t\tconst lru = this.#cache.keys().next().value\n\t\t\tif (lru !== undefined) this.#cache.delete(lru)\n\t\t}\n\n\t\tthis.#cache.set(key, value)\n\t}\n\n\tdelete(key: string) {\n\t\treturn this.#cache.delete(key)\n\t}\n\n\tclear() {\n\t\treturn this.#cache.clear()\n\t}\n}\n",
|
|
10
|
-
"export function capitalise(str: string) {\n\treturn str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function pascalise(str: string) {\n\treturn str\n\t\t.split(/[ _-]+/)\n\t\t.map(capitalise)\n\t\t.join('')\n}\n
|
|
11
|
-
"import { Logger } from '../logger.js'\nimport { processFile } from './index.js'\n\nconst loader = function (source) {\n\tconst { pluginConfig } = this.getOptions()\n\tconst logger = new Logger()\n\n\tconst { template } = processFile(source, this.resourcePath, pluginConfig, logger)\n\n\treturn template\n}\n\nexport default loader\n"
|
|
10
|
+
"export function capitalise(str: string) {\n\treturn str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function pascalise(str: string) {\n\treturn str\n\t\t.split(/[ _-]+/)\n\t\t.map(capitalise)\n\t\t.join('')\n}\n",
|
|
11
|
+
"import { Logger } from '../logger.js'\nimport { processFile } from './index.js'\n\nconst loader = function (source) {\n\tconst { pluginConfig } = this.getOptions()\n\tconst logger = new Logger()\n\n\tconst { template, map } = processFile(source, this.resourcePath, pluginConfig, logger)\n\n\t// hand the transform's source map back to webpack/turbopack when they support it\n\tif (map && typeof this.callback === 'function') {\n\t\tthis.callback(null, template, map)\n\n\t\treturn\n\t}\n\n\treturn template\n}\n\nexport default loader\n"
|
|
12
12
|
],
|
|
13
|
-
"mappings": "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",
|
|
14
|
-
"debugId": "
|
|
13
|
+
"mappings": "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",
|
|
14
|
+
"debugId": "61C93031E060481B64756E2164756E21",
|
|
15
15
|
"names": []
|
|
16
16
|
}
|
package/dist/next/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { NextConfig } from 'next';
|
|
2
|
-
import type { Logger } from '../logger.js';
|
|
3
2
|
import type { PluginConfig } from '../types.js';
|
|
3
|
+
import { Logger } from '../logger.js';
|
|
4
4
|
/**
|
|
5
5
|
* Transform one module and, in development, register it with the shared watcher state.
|
|
6
6
|
*/
|
|
@@ -10,6 +10,10 @@ export declare function processFile(source: string, filePath: string, pluginConf
|
|
|
10
10
|
template: string;
|
|
11
11
|
tags: import("../types.js").Tags;
|
|
12
12
|
map: import("magic-string").SourceMap | null;
|
|
13
|
+
} | {
|
|
14
|
+
template: string;
|
|
15
|
+
tags: Map<any, any>;
|
|
16
|
+
map: null;
|
|
13
17
|
};
|
|
14
18
|
export declare function withCxx(nextConfig?: NextConfig, pluginConfig?: PluginConfig): {
|
|
15
19
|
turbopack: {
|
|
@@ -20,7 +24,6 @@ export declare function withCxx(nextConfig?: NextConfig, pluginConfig?: PluginCo
|
|
|
20
24
|
pluginConfig: {
|
|
21
25
|
watch: {
|
|
22
26
|
root: string;
|
|
23
|
-
ignore?: string[];
|
|
24
27
|
};
|
|
25
28
|
typeSuffix?: string | false;
|
|
26
29
|
};
|
|
@@ -32,7 +35,6 @@ export declare function withCxx(nextConfig?: NextConfig, pluginConfig?: PluginCo
|
|
|
32
35
|
pluginConfig: {
|
|
33
36
|
watch: {
|
|
34
37
|
root: string;
|
|
35
|
-
ignore?: string[];
|
|
36
38
|
};
|
|
37
39
|
typeSuffix?: string | false;
|
|
38
40
|
};
|
package/dist/next/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/next/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/next/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAKtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAmHrC;;GAEG;AACH,wBAAgB,WAAW,CAC1B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM;;;;;;;;;;EAmBd;AAID,wBAAgB,OAAO,CAAC,UAAU,GAAE,UAAe,EAAE,YAAY,GAAE,YAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkEo6D,CAAC;uBAAsC,CAAC;;;;oBApB9gE,OAAO,WAAW,OAAO;iBAI9B;YAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;SAAE;;;;;;;;;;;;;;;mBAgBkl5C,CAAC;kBAA+B,CAAC;gBAA6B,CAAC;;mBAAuD,CAAC;kBAA+B,CAAC;gBAA6B,CAAC;;;;;;;;;;;;eAA8lF,CAAC;cAAwB,CAAC;cAAwB,CAAC;;;;;;;;;;;;;gBAAkxE,CAAC;;;sBAAie,CAAC;yBAA4H,CAAC;;;;;;sBAAuyB,CAAC;;;;;;;;;iBAA4+C,CAAC;;;;;6BAA+sB,CAAC;sBAAoC,CAAC;;aAAoC,CAAC;;6BAA0D,CAAC;oBAA8B,CAAC;0BAAkE,CAAC;;qBAA2C,CAAC;mBAAiC,CAAC;;wBAA+C,CAAC;eAAmD,CAAC;iBAA4C,CAAC;2BAAyC,CAAC;;cAA6L,CAAC;oBAAyP,CAAC;iCAA8S,CAAC;;;;;;;;;;;;yBAAm0D,CAAC;6BAAwC,CAAC;;;;;;;;iBAAgxD,CAAC;sBAAgC,CAAC;kBAA4B,CAAC;;;;;;;;;;;;;sBAA+vE,CAAC;;;EADn64D"}
|