@jk2908/cxx 0.2.6 → 0.3.1

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 CHANGED
@@ -92,7 +92,23 @@ const nextConfig = {}
92
92
  export default withCxx(nextConfig, { typeSuffix: 'Classes' })
93
93
  ```
94
94
 
95
- Use the Next integration when you want `cxx` transforms and generated class-key types inside a Next app.
95
+ Use the Next integration when you want `cxx` transforms and generated class-key types inside a Next app.
96
+
97
+ ## Watch options
98
+
99
+ `watch.root` sets the tree used for type-regeneration watching. It defaults to the Vite root, and to the Turbopack root in Next (falling back to `process.cwd()`).
100
+
101
+ `watch.ignore` adds extra globs on top of the built-in ignores (`node_modules`, `.next`, `.cxx`, `.git`). In Vite the globs are added to `server.watch.ignored`.
102
+
103
+ ```ts
104
+ export default withCxx(nextConfig, {
105
+ typeSuffix: 'Classes',
106
+ watch: {
107
+ root: '../../',
108
+ ignore: ['**/*.stories.tsx'],
109
+ },
110
+ })
111
+ ```
96
112
 
97
113
  See [CHANGELOG.md](./CHANGELOG.md) for release notes.
98
114
 
@@ -102,4 +118,4 @@ The [`vscode-cxx`](https://github.com/jk2908/cxx/tree/main/packages/vscode-cxx)
102
118
 
103
119
  ## License
104
120
 
105
- MIT
121
+ MIT
package/dist/build.d.ts CHANGED
@@ -1,31 +1,40 @@
1
+ import { type SourceMap } from 'magic-string';
1
2
  import type { BuildContext, PluginConfig, Tags } from './types.js';
2
3
  /**
3
4
  * Returns whether the error was caused by a missing file or directory.
4
5
  */
5
6
  export declare function isENOENT(err: unknown): boolean;
6
7
  /**
7
- * Write a file only if the content has changed since the last build.
8
+ * Write a file only if the content actually differs from what is already on disk.
8
9
  */
9
10
  export declare function maybeWrite(filePath: string, content: string): Promise<boolean>;
10
11
  export declare class DuplicateTagError extends Error {
11
12
  name: string;
12
13
  constructor(tag: string);
13
14
  }
15
+ export declare class InvalidTagError extends Error {
16
+ name: string;
17
+ constructor(tag: string);
18
+ }
14
19
  /**
15
20
  * Transform `cxx` templates in one source file and collect any exported tag types.
16
21
  */
17
22
  export declare function collect(source: string, id: string, config: PluginConfig): {
18
23
  source: string;
24
+ config: string;
19
25
  template: string;
20
26
  tags: Tags;
21
- } | {
22
- template: string;
23
- tags: Tags;
27
+ map: SourceMap | null;
24
28
  };
25
29
  /**
26
30
  * Write the generated declaration file for the current set of collected tags.
27
31
  */
28
32
  export declare function writeTypes(tags: Tags): Promise<void>;
33
+ /**
34
+ * Next-specific write path. Turbopack spreads loaders across worker processes, so each worker
35
+ * persists its own per-file partial and rebuilds the shared declaration file from all of them.
36
+ */
37
+ export declare function writeTypesForFile(filePath: string, tags: Tags): Promise<void>;
29
38
  /**
30
39
  * Render collected tags as a module augmentation for the package entrypoint.
31
40
  */
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAiBlE;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,WAEpC;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,oBAyBjE;AAeD,qBAAa,iBAAkB,SAAQ,KAAK;IAC3C,IAAI,SAAsB;gBAEd,GAAG,EAAE,MAAM;CAGvB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;YArE5B,MAAM;cAAY,MAAM;UAAQ,IAAI;;;;EA4H/E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,IAAI,iBA2B1C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,UAepC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,YAAY,CAAC,yBAWjE"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAKA,OAAoB,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAA;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAiClE;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,WAEpC;AA+BD;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,oBAoBjE;AAiBD,qBAAa,iBAAkB,SAAQ,KAAK;IAC3C,IAAI,SAAsB;gBAEd,GAAG,EAAE,MAAM;CAGvB;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACzC,IAAI,SAAoB;gBAEZ,GAAG,EAAE,MAAM;CAMvB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;YArH/D,MAAM;YACN,MAAM;cACJ,MAAM;UACV,IAAI;SACL,SAAS,GAAG,IAAI;EAmMrB;AAoCD;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,iBAEpC;AAuDD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,iBAiB7D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,UAcpC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,YAAY,CAAC,yBAWjE"}
package/dist/build.js CHANGED
@@ -1,8 +1,12 @@
1
+ import { createRequire } from "node:module";
2
+ var __require = /* @__PURE__ */ createRequire(import.meta.url);
3
+
1
4
  // src/build.ts
2
5
  import { createHash } from "node:crypto";
3
6
  import fs from "node:fs/promises";
4
7
  import path from "node:path";
5
8
  import { transform } from "lightningcss";
9
+ import MagicString from "magic-string";
6
10
 
7
11
  // src/config.ts
8
12
  var NAME = "cxx";
@@ -52,31 +56,73 @@ function capitalise(str) {
52
56
  function pascalise(str) {
53
57
  return str.split(/[ _-]+/).map(capitalise).join("");
54
58
  }
55
- function debounce(fn, wait) {
56
- let timeoutId = null;
57
- return (...args) => {
58
- if (timeoutId) {
59
- clearTimeout(timeoutId);
59
+ function createBatcher(wait, flush) {
60
+ const pending = new Map;
61
+ let timer = null;
62
+ let running = false;
63
+ async function drain() {
64
+ if (running)
65
+ return;
66
+ running = true;
67
+ try {
68
+ while (pending.size > 0) {
69
+ const batch = new Map(pending);
70
+ pending.clear();
71
+ await flush(batch);
72
+ }
73
+ } finally {
74
+ running = false;
60
75
  }
61
- timeoutId = setTimeout(() => {
62
- fn.apply(null, args);
76
+ }
77
+ function schedule() {
78
+ if (timer)
79
+ clearTimeout(timer);
80
+ timer = setTimeout(() => {
81
+ timer = null;
82
+ drain();
63
83
  }, wait);
84
+ }
85
+ return {
86
+ add(key, value) {
87
+ pending.set(key, value);
88
+ schedule();
89
+ },
90
+ flush() {
91
+ if (timer) {
92
+ clearTimeout(timer);
93
+ timer = null;
94
+ }
95
+ return drain();
96
+ }
64
97
  };
65
98
  }
66
99
 
67
100
  // src/build.ts
101
+ var decoder = new TextDecoder;
68
102
  var collectCache = new LruCache;
69
103
  var fileCache = new LruCache;
104
+ var writeChain = Promise.resolve();
70
105
  function isENOENT(err) {
71
106
  return err instanceof Error && "code" in err && err.code === "ENOENT";
72
107
  }
108
+ async function writeFileAtomic(filePath, content) {
109
+ const tmp = `${filePath}.${process.pid}.${Math.random().toString(36).slice(2)}.tmp`;
110
+ await fs.writeFile(tmp, content);
111
+ await fs.rename(tmp, filePath);
112
+ }
113
+ function enqueueWrite(task) {
114
+ const run = writeChain.then(task, task);
115
+ writeChain = run.then(() => {
116
+ return;
117
+ }, () => {
118
+ return;
119
+ });
120
+ return run;
121
+ }
73
122
  async function maybeWrite(filePath, content) {
74
123
  const cached = fileCache.get(filePath);
75
- if (cached !== content) {
76
- await fs.writeFile(filePath, content);
77
- fileCache.set(filePath, content);
78
- return true;
79
- }
124
+ if (cached === content)
125
+ return false;
80
126
  try {
81
127
  if (await fs.readFile(filePath, "utf-8") === content) {
82
128
  fileCache.set(filePath, content);
@@ -86,11 +132,12 @@ async function maybeWrite(filePath, content) {
86
132
  if (!isENOENT(err))
87
133
  throw err;
88
134
  }
89
- await fs.writeFile(filePath, content);
135
+ await writeFileAtomic(filePath, content);
90
136
  fileCache.set(filePath, content);
91
137
  return true;
92
138
  }
93
- var regex = /(?:const|var|let)\s*\[(\w+|)\s*,?\s*(\w+|)\s*,?\s*(\w+|)\s*\]\s*=\s*cxx(?:\s*`([\s\S]*?)`|\s*\.\s*tag(?:\s*<[^>]+>)?\s*\(\s*(['"])(.*?)\5\s*\)\s*`([\s\S]*?)`)/gm;
139
+ 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;
140
+ var IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
94
141
  function hashCss(code) {
95
142
  return `cxx-${createHash("sha256").update(code).digest("base64url").slice(0, 12)}`;
96
143
  }
@@ -101,12 +148,26 @@ class DuplicateTagError extends Error {
101
148
  super(`Tag ${tag} has already been seen. Tags must be unique across your application`);
102
149
  }
103
150
  }
151
+
152
+ class InvalidTagError extends Error {
153
+ name = "InvalidTagError";
154
+ constructor(tag) {
155
+ super(`Tag "${tag}" does not map to a valid TypeScript identifier. ` + `Use letters, numbers, spaces, "_" or "-"`);
156
+ }
157
+ }
104
158
  function collect(source, id, config) {
105
- const tags = new Map;
159
+ const configKey = JSON.stringify(config);
106
160
  const cached = collectCache.get(id);
107
- if (cached?.source === source)
161
+ if (cached?.source === source && cached.config === configKey)
108
162
  return cached;
109
- const template = source.replace(regex, (_match, varOne, varTwo, varThree, plainCss, _quote, tag, taggedCss) => {
163
+ const tags = new Map;
164
+ const magic = new MagicString(source);
165
+ let matched = false;
166
+ regex.lastIndex = 0;
167
+ let match;
168
+ while (match = regex.exec(source)) {
169
+ matched = true;
170
+ const [, exp, varOne, varTwo, varThree, plainCss, , tag, taggedCss] = match;
110
171
  const css = plainCss ?? taggedCss;
111
172
  const { code, exports = {} } = transform({
112
173
  minify: true,
@@ -119,49 +180,112 @@ function collect(source, id, config) {
119
180
  if (tag) {
120
181
  const suffix = typeof config.typeSuffix === "string" ? config.typeSuffix : config.typeSuffix === false ? "" : "Classes";
121
182
  const tagWithSuffix = pascalise(`${tag}${suffix}`);
183
+ if (!IDENTIFIER.test(tagWithSuffix))
184
+ throw new InvalidTagError(tag);
122
185
  if (tags.has(tagWithSuffix))
123
186
  throw new DuplicateTagError(tagWithSuffix);
124
187
  tags.set(tagWithSuffix, Object.keys(styles));
125
188
  }
126
- return [
127
- varOne && `const ${varOne} = \`${code}\``,
128
- varTwo && `const ${varTwo} = ${JSON.stringify(styles)}`,
129
- varThree && `const ${varThree} = \`${href}\``
130
- ].filter(Boolean).join(`
189
+ const statements = [];
190
+ if (varOne) {
191
+ statements.push(`${exp}const ${varOne} = ${JSON.stringify(decoder.decode(code))}`);
192
+ }
193
+ if (varTwo) {
194
+ statements.push(`${exp}const ${varTwo} = ${JSON.stringify(styles)}`);
195
+ }
196
+ if (varThree) {
197
+ statements.push(`${exp}const ${varThree} = ${JSON.stringify(href)}`);
198
+ }
199
+ magic.overwrite(match.index, match.index + match[0].length, statements.join(`
200
+ `));
201
+ }
202
+ const template = magic.toString();
203
+ const map = matched ? magic.generateMap({ source: id, includeContent: true, hires: true }) : null;
204
+ const result = { source, config: configKey, template, tags, map };
205
+ collectCache.set(id, result);
206
+ return result;
207
+ }
208
+ function renderTypes(tags) {
209
+ return [
210
+ AUTOGEN_MSG,
211
+ "",
212
+ `import '${PKG_NAME}'`,
213
+ "",
214
+ `declare module '${PKG_NAME}' {`,
215
+ tagsToType(tags),
216
+ "}",
217
+ ""
218
+ ].join(`
131
219
  `);
132
- });
133
- collectCache.set(id, { source, template, tags });
134
- return {
135
- template,
136
- tags
137
- };
138
220
  }
139
- async function writeTypes(tags) {
221
+ async function writeRenderedTypes(tags) {
140
222
  const filePath = path.join(GENERATED_DIR, "index.d.ts");
141
223
  if (!tags.size) {
142
- try {
143
- await fs.rm(filePath, { force: true });
144
- fileCache.delete(filePath);
145
- } catch (err) {
146
- if (!isENOENT(err))
147
- throw err;
148
- }
224
+ await fs.rm(filePath, { force: true });
225
+ fileCache.delete(filePath);
149
226
  return;
150
227
  }
151
228
  await fs.mkdir(GENERATED_DIR, { recursive: true });
152
- await maybeWrite(filePath, `${AUTOGEN_MSG}
153
-
154
- import '${PKG_NAME}'
155
-
156
- declare module '${PKG_NAME}' {
157
- ${tagsToType(tags)}
158
- }
159
- `);
229
+ await maybeWrite(filePath, renderTypes(tags));
230
+ }
231
+ function writeTypes(tags) {
232
+ return enqueueWrite(() => writeRenderedTypes(tags));
233
+ }
234
+ var PARTIAL_DIR = path.join(GENERATED_DIR, "tags");
235
+ function partialPath(filePath) {
236
+ return path.join(PARTIAL_DIR, `${createHash("sha1").update(filePath).digest("hex")}.json`);
237
+ }
238
+ async function readPartials() {
239
+ let entries;
240
+ try {
241
+ entries = await fs.readdir(PARTIAL_DIR);
242
+ } catch (err) {
243
+ if (isENOENT(err))
244
+ return new Map;
245
+ throw err;
246
+ }
247
+ const tags = new Map;
248
+ for (const entry of entries) {
249
+ if (!entry.endsWith(".json"))
250
+ continue;
251
+ const partial = path.join(PARTIAL_DIR, entry);
252
+ let parsed;
253
+ try {
254
+ parsed = JSON.parse(await fs.readFile(partial, "utf-8"));
255
+ } catch {
256
+ continue;
257
+ }
258
+ try {
259
+ await fs.access(parsed.file);
260
+ } catch {
261
+ await fs.rm(partial, { force: true });
262
+ continue;
263
+ }
264
+ for (const [name, classes] of Object.entries(parsed.tags)) {
265
+ if (tags.has(name))
266
+ throw new DuplicateTagError(name);
267
+ tags.set(name, classes);
268
+ }
269
+ }
270
+ return tags;
271
+ }
272
+ function writeTypesForFile(filePath, tags) {
273
+ return enqueueWrite(async () => {
274
+ await fs.mkdir(PARTIAL_DIR, { recursive: true });
275
+ const partial = partialPath(filePath);
276
+ if (!tags.size) {
277
+ await fs.rm(partial, { force: true });
278
+ } else {
279
+ await writeFileAtomic(partial, JSON.stringify({ file: filePath, tags: Object.fromEntries(tags) }));
280
+ }
281
+ await writeRenderedTypes(await readPartials());
282
+ });
160
283
  }
161
284
  function tagsToType(tags) {
162
- return [...tags].map(([tag, classes]) => `
163
- export type ${tag} = ${classes.length > 0 ? classes.toSorted((a, b) => a.length - b.length).map((c) => `'${c}'`).join(" | ") : "never"}
164
- `).join(`
285
+ return [...tags].map(([tag, classes]) => {
286
+ const union = classes.length > 0 ? classes.toSorted((a, b) => a.length - b.length).map((c) => `'${c}'`).join(" | ") : "never";
287
+ return ` export type ${tag} = ${union}`;
288
+ }).join(`
165
289
  `);
166
290
  }
167
291
  function flattenTags(tagsByFile) {
@@ -176,13 +300,15 @@ function flattenTags(tagsByFile) {
176
300
  return tags;
177
301
  }
178
302
  export {
179
- writeTypes,
180
- tagsToType,
181
- maybeWrite,
182
- isENOENT,
183
- flattenTags,
303
+ DuplicateTagError,
304
+ InvalidTagError,
184
305
  collect,
185
- DuplicateTagError
306
+ flattenTags,
307
+ isENOENT,
308
+ maybeWrite,
309
+ tagsToType,
310
+ writeTypes,
311
+ writeTypesForFile
186
312
  };
187
313
 
188
- //# debugId=ADE632508CD5BB0264756E2164756E21
314
+ //# debugId=9492B787092F945A64756E2164756E21
package/dist/build.js.map CHANGED
@@ -2,12 +2,12 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/build.ts", "../src/config.ts", "../src/lru.ts", "../src/utils.ts"],
4
4
  "sourcesContent": [
5
- "import { createHash } from 'node:crypto'\nimport fs from 'node:fs/promises'\nimport path from 'node:path'\n\nimport { transform } from 'lightningcss'\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/**\n * LRU cache of `collect` results by file id and last seen source so watcher and transform can\n * reuse the same parsed template/tags.\n */\nconst collectCache = new LruCache<{ source: string; template: string; tags: Tags }>()\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 * 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 only if the content has changed since the last build.\n */\nexport async function maybeWrite(filePath: string, content: string) {\n\tconst cached = fileCache.get(filePath)\n\n\tif (cached !== content) {\n\t\t// cache says content changed, write without reading\n\t\tawait fs.writeFile(filePath, content)\n\t\tfileCache.set(filePath, content)\n\n\t\treturn true\n\t}\n\n\t// cache miss or cache hit with same content — verify on disk\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 fs.writeFile(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-3 assigned variable names, 4 plain css body, 5 quote\n// kind, 6 tag name, 7 tagged css body\nconst regex =\n\t/(?:const|var|let)\\s*\\[(\\w+|)\\s*,?\\s*(\\w+|)\\s*,?\\s*(\\w+|)\\s*\\]\\s*=\\s*cxx(?:\\s*`([\\s\\S]*?)`|\\s*\\.\\s*tag(?:\\s*<[^>]+>)?\\s*\\(\\s*(['\"])(.*?)\\5\\s*\\)\\s*`([\\s\\S]*?)`)/gm\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\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 tags: Tags = new Map()\n\n\tconst cached = collectCache.get(id)\n\tif (cached?.source === source) return cached\n\n\tconst template = source.replace(\n\t\tregex,\n\t\t(_match, varOne, varTwo, varThree, plainCss, _quote, tag, taggedCss) => {\n\t\t\tconst css = plainCss ?? taggedCss\n\n\t\t\tconst { code, exports = {} } = transform({\n\t\t\t\tminify: true,\n\t\t\t\tcssModules: true,\n\t\t\t\tfilename: id,\n\t\t\t\tcode: new TextEncoder().encode(css),\n\t\t\t})\n\n\t\t\tconst href = hashCss(code)\n\t\t\tconst styles = Object.fromEntries(\n\t\t\t\tObject.entries(exports).map(([k, v]) => [k, v.name]),\n\t\t\t)\n\n\t\t\tif (tag) {\n\t\t\t\tconst suffix =\n\t\t\t\t\ttypeof config.typeSuffix === 'string'\n\t\t\t\t\t\t? config.typeSuffix\n\t\t\t\t\t\t: config.typeSuffix === false\n\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t: 'Classes'\n\t\t\t\tconst tagWithSuffix = pascalise(`${tag}${suffix}`)\n\n\t\t\t\tif (tags.has(tagWithSuffix)) throw new DuplicateTagError(tagWithSuffix)\n\n\t\t\t\t// side effect but neccessary\n\t\t\t\ttags.set(tagWithSuffix, Object.keys(styles))\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\tvarOne && `const ${varOne} = \\`${code}\\``,\n\t\t\t\tvarTwo && `const ${varTwo} = ${JSON.stringify(styles)}`,\n\t\t\t\tvarThree && `const ${varThree} = \\`${href}\\``,\n\t\t\t]\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.join('\\n')\n\t\t},\n\t)\n\n\t// cache\n\tcollectCache.set(id, { source, template, tags })\n\n\treturn {\n\t\ttemplate,\n\t\ttags,\n\t}\n}\n\n/**\n * Write the generated declaration file for the current set of collected tags.\n */\nexport async function writeTypes(tags: Tags) {\n\tconst filePath = path.join(GENERATED_DIR, 'index.d.ts')\n\n\tif (!tags.size) {\n\t\ttry {\n\t\t\tawait fs.rm(filePath, { force: true })\n\t\t\tfileCache.delete(filePath)\n\t\t} catch (err) {\n\t\t\tif (!isENOENT(err)) throw err\n\t\t}\n\n\t\treturn\n\t}\n\n\tawait fs.mkdir(GENERATED_DIR, { recursive: true })\n\n\tawait maybeWrite(\n\t\tfilePath,\n\t\t`${AUTOGEN_MSG}\n\n\t\t\timport '${PKG_NAME}'\n\n\t\t\tdeclare module '${PKG_NAME}' {\n\t\t\t\t${tagsToType(tags)}\n\t\t\t}\n\t\t`,\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(\n\t\t\t([tag, classes]) => `\n\t\texport type ${tag} = ${\n\t\t\tclasses.length > 0\n\t\t\t\t? classes\n\t\t\t\t\t\t.toSorted((a, b) => a.length - b.length)\n\t\t\t\t\t\t.map(c => `'${c}'`)\n\t\t\t\t\t\t.join(' | ')\n\t\t\t\t: 'never'\n\t\t}\n\t`,\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
+ "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",
6
6
  "export const NAME = 'cxx'\nexport const PKG_NAME = `@jk2908/${NAME}`\nexport const GENERATED_DIR = `.${NAME}`\nexport const AUTOGEN_MSG = `// auto-generated by ${NAME}`\n",
7
7
  "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",
8
- "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\nexport function debounce<T extends unknown[]>(fn: (...args: T) => void, wait: number) {\n\tlet timeoutId: ReturnType<typeof setTimeout> | null = null\n\n\treturn (...args: T) => {\n\t\tif (timeoutId) {\n\t\t\tclearTimeout(timeoutId)\n\t\t}\n\n\t\ttimeoutId = setTimeout(() => {\n\t\t\tfn.apply(null, args)\n\t\t}, wait)\n\t}\n}\n"
8
+ "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\nexport type Batcher<K, V> = {\n\t/**\n\t * Queue a value for a key. Queueing the same key again replaces the previous value.\n\t */\n\tadd: (key: K, value: V) => void\n\t/**\n\t * Run any waiting work now and resolve once it has finished.\n\t */\n\tflush: () => Promise<void>\n}\n\n/**\n * Group bursts of work and run them together. Every key queued within `wait` is\n * included once, and a key queued while a batch is running is handled in the next\n * batch instead of replacing the one in progress.\n */\nexport function createBatcher<K, V>(\n\twait: number,\n\tflush: (batch: Map<K, V>) => void | Promise<void>,\n): Batcher<K, V> {\n\t// work waiting to run, keyed so each key is only queued once\n\tconst pending = new Map<K, V>()\n\t// waits for a burst of changes to settle before running\n\tlet timer: ReturnType<typeof setTimeout> | null = null\n\t// true while a batch is running, so we never start a second one\n\tlet running = false\n\n\tasync function drain() {\n\t\t// a run is already going, so let it pick up the new work\n\t\tif (running) return\n\t\trunning = true\n\n\t\ttry {\n\t\t\t// keep looping while there is work, including work added during a flush\n\t\t\twhile (pending.size > 0) {\n\t\t\t\t// snapshot the queued work\n\t\t\t\tconst batch = new Map(pending)\n\t\t\t\t// empty the queue right away, so anything added during flush waits for the next loop\n\t\t\t\tpending.clear()\n\n\t\t\t\tawait flush(batch)\n\t\t\t}\n\t\t} finally {\n\t\t\t// always allow the next run, even if flush threw\n\t\t\trunning = false\n\t\t}\n\t}\n\n\tfunction schedule() {\n\t\t// cancel the previous wait, so the timer restarts from now\n\t\tif (timer) clearTimeout(timer)\n\n\t\t// run once the calls stop coming for `wait` ms\n\t\ttimer = setTimeout(() => {\n\t\t\t// the timer has fired, so drop the stale handle\n\t\t\ttimer = null\n\t\t\t// start the run without waiting for it (this is a timer callback)\n\t\t\tvoid drain()\n\t\t}, wait)\n\t}\n\n\treturn {\n\t\tadd(key, value) {\n\t\t\t// the newest value for this key wins\n\t\t\tpending.set(key, value)\n\t\t\tschedule()\n\t\t},\n\t\tflush() {\n\t\t\t// run now instead of waiting out the timer\n\t\t\tif (timer) {\n\t\t\t\tclearTimeout(timer)\n\t\t\t\ttimer = null\n\t\t\t}\n\n\t\t\treturn drain()\n\t\t},\n\t}\n}\n"
9
9
  ],
10
- "mappings": "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",
11
- "debugId": "ADE632508CD5BB0264756E2164756E21",
10
+ "mappings": "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",
11
+ "debugId": "9492B787092F945A64756E2164756E21",
12
12
  "names": []
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAU,MAAM,YAAY,CAAA;AAE7C,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAElD;;GAEG;AACH,eAAO,MAAM,GAAG,EAAE,GAQhB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAU,MAAM,YAAY,CAAA;AAE7C,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAmBlD;;GAEG;AACH,eAAO,MAAM,GAAG,EAAE,GAQjB,CAAA"}
package/dist/index.js CHANGED
@@ -1,13 +1,15 @@
1
+ import { createRequire } from "node:module";
2
+ var __require = /* @__PURE__ */ createRequire(import.meta.url);
3
+
1
4
  // src/index.ts
2
- var cxx = Object.assign((_) => ["", {}, ""], {
3
- tag: (_) => (_strings) => [
4
- "",
5
- {},
6
- ""
7
- ]
5
+ function untransformed() {
6
+ throw new Error("cxx template was not transformed. Make sure the cxx Vite plugin or Next integration is configured and applies to this file.");
7
+ }
8
+ var cxx = Object.assign((_) => untransformed(), {
9
+ tag: (_) => (_strings) => untransformed()
8
10
  });
9
11
  export {
10
12
  cxx
11
13
  };
12
14
 
13
- //# debugId=40D13C798825EC8F64756E2164756E21
15
+ //# debugId=3CD7511904F6E92464756E2164756E21
package/dist/index.js.map CHANGED
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
4
  "sourcesContent": [
5
- "import type { Cxx, Result } from './types.js'\n\nexport type { Cxx, Result, Tag } from './types.js'\n\n/**\n * Build-time template tag placeholder used by the transform to emit CSS, classes and href values.\n */\nexport const cxx: Cxx = Object.assign((_: TemplateStringsArray): Result => ['', {}, ''], {\n\ttag:\n\t\t<ClassName extends string = string>(_: string) =>\n\t\t(_strings: TemplateStringsArray): Result<ClassName> => [\n\t\t\t'',\n\t\t\t{} as Readonly<Record<ClassName, string>>,\n\t\t\t'',\n\t\t],\n})\n"
5
+ "import type { Cxx, Result } from './types.js'\n\nexport type { Cxx, Result, Tag } from './types.js'\n\n/**\n * Hit when a `cxx` template reaches runtime, which means the build transform did\n * not run. Throws so the problem is obvious instead of rendering empty styles.\n *\n * @example\n * ```ts\n * // no cxx plugin configured\n * const [css, styles, href] = cxx`.a { color: red; }`\n * // Error: cxx template was not transformed ...\n * ```\n */\nfunction untransformed(): never {\n\tthrow new Error(\n\t\t'cxx template was not transformed. Make sure the cxx Vite plugin or Next integration is configured and applies to this file.',\n\t)\n}\n\n/**\n * Build-time template tag placeholder used by the transform to emit CSS, classes and href values.\n */\nexport const cxx: Cxx = Object.assign(\n\t(_: TemplateStringsArray): Result => untransformed(),\n\t{\n\t\ttag:\n\t\t\t<ClassName extends string = string>(_: string) =>\n\t\t\t(_strings: TemplateStringsArray): Result<ClassName> =>\n\t\t\t\tuntransformed(),\n\t},\n)\n"
6
6
  ],
7
- "mappings": ";AAOO,IAAM,MAAW,OAAO,OAAO,CAAC,MAAoC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG;AAAA,EACxF,KACC,CAAoC,MACpC,CAAC,aAAsD;AAAA,IACtD;AAAA,IACA,CAAC;AAAA,IACD;AAAA,EACD;AACF,CAAC;",
8
- "debugId": "40D13C798825EC8F64756E2164756E21",
7
+ "mappings": ";;;;AAeA,SAAS,aAAa,GAAU;AAAA,EAC/B,MAAM,IAAI,MACT,6HACD;AAAA;AAMM,IAAM,MAAW,OAAO,OAC9B,CAAC,MAAoC,cAAc,GACnD;AAAA,EACC,KACC,CAAoC,MACpC,CAAC,aACA,cAAc;AACjB,CACD;",
8
+ "debugId": "3CD7511904F6E92464756E2164756E21",
9
9
  "names": []
10
10
  }
package/dist/logger.d.ts CHANGED
@@ -13,8 +13,6 @@ export declare class Logger {
13
13
  #private;
14
14
  name?: string | undefined;
15
15
  constructor(level?: LogLevel, name?: string | undefined);
16
- static set defaultLevel(level: LogLevel);
17
- static get defaultLevel(): LogLevel;
18
16
  /**
19
17
  * Convert a value to an Error instance.
20
18
  */
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,MAAM;;;;;;CAMF,CAAA;AAEV,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,MAAM,CAAA;AAe1C;;GAEG;AACH,qBAAa,MAAM;;IAOV,IAAI,CAAC,EAAE,MAAM;gBADpB,KAAK,CAAC,EAAE,QAAQ,EACT,IAAI,CAAC,EAAE,MAAM,YAAA;IAKrB,MAAM,KAAK,YAAY,CAAC,KAAK,EAAE,QAAQ,EAEtC;IAED,MAAM,KAAK,YAAY,IAJQ,QAAQ,CAMtC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO;IAI3B;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO;IAoBzB,IAAI,KAAK,CAAC,KAAK,EAAE,QAAQ,EAExB;IAED,IAAI,KAAK,IAJQ,QAAQ,CAMxB;IAED;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;IA6BnD;;OAEG;IACH,KAAK,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE;IAI3B;;OAEG;IACH,IAAI,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE;IAI1B;;OAEG;IACH,IAAI,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE;IAI1B;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;IAItC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAGtC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,MAAM;;;;;;CAMF,CAAA;AAEV,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,MAAM,CAAA;AAiB1C;;GAEG;AACH,qBAAa,MAAM;;IAKV,IAAI,CAAC,EAAE,MAAM;gBADpB,KAAK,CAAC,EAAE,QAAQ,EACT,IAAI,CAAC,EAAE,MAAM,YAAA;IAKrB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO;IAI3B;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO;IAoBzB,IAAI,KAAK,CAAC,KAAK,EAAE,QAAQ,EAExB;IAED,IAAI,KAAK,IAJQ,QAAQ,CAMxB;IAED;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;IA6BnD;;OAEG;IACH,KAAK,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE;IAI3B;;OAEG;IACH,IAAI,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE;IAI1B;;OAEG;IACH,IAAI,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE;IAI1B;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;IAItC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAGtC"}