@praxisjs/vite-plugin 4.0.6 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/decorators.d.ts +15 -0
  3. package/dist/decorators.d.ts.map +1 -1
  4. package/dist/decorators.js +437 -16
  5. package/dist/decorators.js.map +1 -1
  6. package/dist/hmr.d.ts +5 -0
  7. package/dist/hmr.d.ts.map +1 -0
  8. package/dist/hmr.js +106 -0
  9. package/dist/hmr.js.map +1 -0
  10. package/dist/index.d.ts +16 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +11 -18
  13. package/dist/index.js.map +1 -1
  14. package/dist/keyed-lists.d.ts +27 -0
  15. package/dist/keyed-lists.d.ts.map +1 -0
  16. package/dist/keyed-lists.js +248 -0
  17. package/dist/keyed-lists.js.map +1 -0
  18. package/dist/mapped-output.d.ts +32 -0
  19. package/dist/mapped-output.d.ts.map +1 -0
  20. package/dist/mapped-output.js +107 -0
  21. package/dist/mapped-output.js.map +1 -0
  22. package/dist/templates.d.ts +51 -0
  23. package/dist/templates.d.ts.map +1 -0
  24. package/dist/templates.js +707 -0
  25. package/dist/templates.js.map +1 -0
  26. package/package.json +13 -5
  27. package/src/decorators.ts +456 -16
  28. package/src/hmr.ts +108 -0
  29. package/src/index.ts +22 -25
  30. package/src/keyed-lists.ts +282 -0
  31. package/src/mapped-output.ts +116 -0
  32. package/src/templates.ts +729 -0
  33. package/dist/__tests__/css-esbuild-error.test.d.ts +0 -2
  34. package/dist/__tests__/css-esbuild-error.test.d.ts.map +0 -1
  35. package/dist/__tests__/css-esbuild-error.test.js +0 -25
  36. package/dist/__tests__/css-esbuild-error.test.js.map +0 -1
  37. package/dist/__tests__/css-tsconfig-error.test.d.ts +0 -2
  38. package/dist/__tests__/css-tsconfig-error.test.d.ts.map +0 -1
  39. package/dist/__tests__/css-tsconfig-error.test.js +0 -39
  40. package/dist/__tests__/css-tsconfig-error.test.js.map +0 -1
  41. package/dist/__tests__/css-tsconfig-no-config.test.d.ts +0 -2
  42. package/dist/__tests__/css-tsconfig-no-config.test.d.ts.map +0 -1
  43. package/dist/__tests__/css-tsconfig-no-config.test.js +0 -38
  44. package/dist/__tests__/css-tsconfig-no-config.test.js.map +0 -1
  45. package/dist/__tests__/css.test.d.ts +0 -2
  46. package/dist/__tests__/css.test.d.ts.map +0 -1
  47. package/dist/__tests__/css.test.js +0 -288
  48. package/dist/__tests__/css.test.js.map +0 -1
  49. package/dist/__tests__/index.test.d.ts +0 -2
  50. package/dist/__tests__/index.test.d.ts.map +0 -1
  51. package/dist/__tests__/index.test.js +0 -301
  52. package/dist/__tests__/index.test.js.map +0 -1
  53. package/src/__tests__/css-esbuild-error.test.ts +0 -39
  54. package/src/__tests__/css-tsconfig-error.test.ts +0 -53
  55. package/src/__tests__/css-tsconfig-no-config.test.ts +0 -52
  56. package/src/__tests__/css.test.ts +0 -381
  57. package/src/__tests__/index.test.ts +0 -351
  58. package/tsconfig.json +0 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praxisjs/vite-plugin",
3
- "version": "4.0.6",
3
+ "version": "4.1.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -10,9 +10,16 @@
10
10
  "types": "./dist/index.d.ts"
11
11
  }
12
12
  },
13
+ "files": [
14
+ "dist",
15
+ "src",
16
+ "!dist/**/__tests__",
17
+ "!src/**/__tests__",
18
+ "CHANGELOG.md"
19
+ ],
13
20
  "peerDependencies": {
14
21
  "vite": ">=8.0.0",
15
- "@praxisjs/css": "0.3.4"
22
+ "@praxisjs/css": "0.3.5"
16
23
  },
17
24
  "dependencies": {
18
25
  "esbuild": "^0.28.1",
@@ -21,10 +28,11 @@
21
28
  "devDependencies": {
22
29
  "@types/node": "^25.9.1",
23
30
  "vite": "^8.1.4",
24
- "@praxisjs/css": "0.3.4"
31
+ "@praxisjs/css": "0.3.5"
25
32
  },
26
33
  "scripts": {
27
- "build": "tsc",
28
- "dev": "tsc --watch"
34
+ "build": "tsc -p tsconfig.build.json",
35
+ "dev": "tsc -p tsconfig.build.json --watch",
36
+ "typecheck": "tsc --noEmit"
29
37
  }
30
38
  }
package/src/decorators.ts CHANGED
@@ -55,6 +55,439 @@ function formatDiagnostics(diagnostics: readonly ts.Diagnostic[]): string {
55
55
  });
56
56
  }
57
57
 
58
+ // ── Claimed fields ───────────────────────────────────────────────────────────
59
+ //
60
+ // TypeScript lowers a decorated field `x = v` to a class field `x = __runInitializers(this,
61
+ // _x_initializers, v)` and runs the field's extra initializers (where decorators install their
62
+ // accessors) at the very next step: as the prefix of the next field's initializer, or in the
63
+ // constructor right after the fields. Defining `x` as a data property and then replacing it with
64
+ // an accessor turns every instance into a slow dictionary-mode object in V8. So the field is
65
+ // removed and, at that next step, `__pxField` defines it: through the innermost decorator's
66
+ // `claim` (see CLAIM in @praxisjs/decorators), which installs its property directly, or as a data
67
+ // property when that decorator has none. It then runs the remaining extra initializers. The order
68
+ // of every step is unchanged.
69
+ //
70
+ // The initializer `v` stays where it was, as the body of a symbol-keyed method that the class's
71
+ // first static block takes off the prototype before anything else runs: it keeps the field's
72
+ // scope (a constructor's parameters and locals would shadow names it reads), `this`, `super` and
73
+ // `new.target`, and the output keeps its lines for the source map.
74
+
75
+ const PX_FIELD_HELPER =
76
+ "const __pxClaim = Symbol.for(\"praxisjs.field.claim\"), __pxValue = Symbol(); " +
77
+ "function __pxTake(p, k) { const f = p[k]; delete p[k]; return f; } " +
78
+ "function __pxField(o, k, inits, extras) { " +
79
+ "let v = inits[__pxValue].call(o); " +
80
+ "for (let i = 0; i < inits.length; i++) v = inits[i].call(o, v); " +
81
+ "let i = 0; const claim = extras.length > 0 ? extras[0][__pxClaim] : undefined; " +
82
+ "if (claim !== undefined) { claim.call(o, v); i = 1; } " +
83
+ "else Object.defineProperty(o, k, { value: v, writable: true, enumerable: true, configurable: true }); " +
84
+ "for (; i < extras.length; i++) extras[i].call(o); }";
85
+
86
+ interface FieldInfo {
87
+ name: string;
88
+ extras: string;
89
+ /** The static block that decorates the field. */
90
+ block: ts.ClassStaticBlockDeclaration;
91
+ }
92
+
93
+ function isRunInitializers(node: ts.Node): node is ts.CallExpression {
94
+ return ts.isCallExpression(node) && ts.isIdentifier(node.expression) && node.expression.text === "__runInitializers"
95
+ && node.arguments.length >= 2 && node.arguments[0].kind === ts.SyntaxKind.ThisKeyword && ts.isIdentifier(node.arguments[1]);
96
+ }
97
+
98
+ // `{ kind: "field", name: "x", static: false, private: false, ... }` → { initializers: { name, extras, block } }
99
+ function decoratedFields(cls: ts.ClassLikeDeclaration): Map<string, FieldInfo> {
100
+ const fields = new Map<string, FieldInfo>();
101
+ const visit = (node: ts.Node, owner: ts.ClassStaticBlockDeclaration): void => {
102
+ if (ts.isCallExpression(node) && ts.isIdentifier(node.expression) && node.expression.text === "__esDecorate" && node.arguments.length === 6) {
103
+ const [, , , ctx, inits, extras] = node.arguments;
104
+ if (ts.isObjectLiteralExpression(ctx) && ts.isIdentifier(inits) && ts.isIdentifier(extras)) {
105
+ const prop = (key: string) => ctx.properties.find((p): p is ts.PropertyAssignment =>
106
+ ts.isPropertyAssignment(p) && ts.isIdentifier(p.name) && p.name.text === key)?.initializer;
107
+ const kind = prop("kind");
108
+ const name = prop("name");
109
+ if (kind !== undefined && ts.isStringLiteral(kind) && kind.text === "field" && name !== undefined && ts.isStringLiteral(name)
110
+ && prop("static")?.kind === ts.SyntaxKind.FalseKeyword && prop("private")?.kind === ts.SyntaxKind.FalseKeyword) {
111
+ fields.set(inits.text, { name: name.text, extras: extras.text, block: owner });
112
+ }
113
+ }
114
+ }
115
+ ts.forEachChild(node, (child) => { visit(child, owner); });
116
+ };
117
+ for (const member of cls.members) if (ts.isClassStaticBlockDeclaration(member)) visit(member, member);
118
+ return fields;
119
+ }
120
+
121
+ interface Edit {
122
+ start: number;
123
+ end: number;
124
+ text: string;
125
+ }
126
+
127
+ const newlines = (code: string) => "\n".repeat(code.split("\n").length - 1);
128
+
129
+ /** Rewrites claimable decorated fields of `output` (TypeScript's lowering); null when none. */
130
+ export function claimFields(output: string, fileName: string): string | null {
131
+ if (!output.includes("__esDecorate(")) return null;
132
+ // The output keeps JSX (`jsx: "preserve"`), which the JSX kind also parses in plain JS.
133
+ const source = ts.createSourceFile(fileName, output, ts.ScriptTarget.Latest, true, ts.ScriptKind.JSX);
134
+ const edits: Edit[] = [];
135
+ // Method keys only need to differ within a class: each one is gone from the prototype once
136
+ // the class is defined.
137
+ let keys = 0;
138
+ const text = (node: ts.Node) => output.slice(node.getStart(source), node.getEnd());
139
+ const visitClass = (cls: ts.ClassLikeDeclaration): void => {
140
+ const fields = decoratedFields(cls);
141
+ if (fields.size === 0) return;
142
+ // extras variables of the removed fields
143
+ const removed = new Set<string>();
144
+ let pending: string[] = [];
145
+ const takes: string[] = [];
146
+ // The code that runs the prefix `__runInitializers(this, extras)` of a member: the pending
147
+ // __pxField calls when `extras` belongs to a removed field, else the prefix after them.
148
+ const prefixCode = (call: ts.CallExpression): string[] => {
149
+ const extras = (call.arguments[1] as ts.Identifier).text;
150
+ const calls = pending;
151
+ pending = [];
152
+ return removed.has(extras) ? calls : [...calls, text(call)];
153
+ };
154
+ for (const member of cls.members) {
155
+ if (!ts.isPropertyDeclaration(member) || member.initializer === undefined) continue;
156
+ if (member.modifiers?.some((m) => m.kind === ts.SyntaxKind.StaticKeyword)) continue;
157
+ // `(prefix, ...value)`, `prefix` alone (a field with no initializer, after a decorated one) or
158
+ // `value`. A comma list nests to the left, so its first item is the innermost left operand.
159
+ const whole = member.initializer;
160
+ const items: ts.Expression[] = [];
161
+ const inner = ts.isParenthesizedExpression(whole) ? whole.expression : whole;
162
+ const flatten = (e: ts.Expression): void => {
163
+ if (ts.isBinaryExpression(e) && e.operatorToken.kind === ts.SyntaxKind.CommaToken) {
164
+ flatten(e.left);
165
+ items.push(e.right);
166
+ } else {
167
+ items.push(e);
168
+ }
169
+ };
170
+ flatten(inner);
171
+ let prefix: ts.CallExpression | null = null;
172
+ if (isRunInitializers(items[0]) && items[0].arguments.length === 2 && (items.length > 1 || inner === whole)) {
173
+ prefix = items[0];
174
+ items.shift();
175
+ }
176
+ const value = items.length === 1 ? items[0] : null;
177
+ // A computed key may carry the evaluation of decorators (TypeScript only puts them in keys
178
+ // that are not literals, and those fields have no literal name to claim them by).
179
+ const literalKey = !ts.isComputedPropertyName(member.name) || ts.isLiteralExpression(member.name.expression);
180
+ const info = literalKey && value !== null && isRunInitializers(value) && value.arguments.length === 3
181
+ ? fields.get((value.arguments[1] as ts.Identifier).text)
182
+ : undefined;
183
+ if (info !== undefined) {
184
+ const call = value as ts.CallExpression;
185
+ const inits = (call.arguments[1] as ts.Identifier).text;
186
+ const initial = call.arguments[2];
187
+ const key = `__pxK${String(takes.length)}`;
188
+ pending = [...(prefix === null ? pending : prefixCode(prefix)), `__pxField(this, ${JSON.stringify(info.name)}, ${inits}, ${info.extras})`];
189
+ removed.add(info.extras);
190
+ takes.push(`${inits}[__pxValue] = __pxTake(this.prototype, ${key});`);
191
+ const head = output.slice(member.getStart(source), initial.getStart(source));
192
+ const tail = output.slice(initial.getEnd(), member.getEnd());
193
+ edits.push(
194
+ { start: member.getStart(source), end: initial.getStart(source), text: `[${key}]() {${newlines(head)} return ` },
195
+ { start: initial.getEnd(), end: member.getEnd(), text: `;${newlines(tail)} }` },
196
+ );
197
+ continue;
198
+ }
199
+ // A removed field's call waits in `pending` until the prefix that runs its extras.
200
+ if (pending.length === 0) continue;
201
+ if (prefix !== null) {
202
+ edits.push({ start: prefix.getStart(source), end: prefix.getEnd(), text: `(${prefixCode(prefix).join(", ")})` });
203
+ } else {
204
+ edits.push(
205
+ { start: whole.getStart(source), end: whole.getStart(source), text: `(${pending.splice(0).join(", ")}, ` },
206
+ { start: whole.getEnd(), end: whole.getEnd(), text: ")" },
207
+ );
208
+ }
209
+ }
210
+ if (takes.length === 0) return;
211
+ keys = Math.max(keys, takes.length);
212
+ const open = [...fields.values()][0].block.body.getStart(source) + 1;
213
+ edits.push({ start: open, end: open, text: ` ${takes.join(" ")}` });
214
+ if (pending.length === 0) return;
215
+ // The last removed field's step is the constructor's `__runInitializers(this, extras);`.
216
+ const ctor = cls.members.find((m): m is ts.ConstructorDeclaration => ts.isConstructorDeclaration(m));
217
+ const statement = ctor?.body?.statements.find((st) => ts.isExpressionStatement(st) && isRunInitializers(st.expression)
218
+ && st.expression.arguments.length === 2 && removed.has((st.expression.arguments[1] as ts.Identifier).text));
219
+ if (statement === undefined) {
220
+ throw new Error(`[praxisjs:decorators] ${fileName}: could not find where the fields of a class finish initializing`);
221
+ }
222
+ edits.push({ start: statement.getStart(source), end: statement.getEnd(), text: `${pending.join("; ")};` });
223
+ };
224
+ const visit = (node: ts.Node): void => {
225
+ if (ts.isClassDeclaration(node) || ts.isClassExpression(node)) visitClass(node);
226
+ ts.forEachChild(node, visit);
227
+ };
228
+ visit(source);
229
+ if (edits.length === 0) return null;
230
+ let result = output;
231
+ for (const edit of edits.sort((a, b) => b.start - a.start)) {
232
+ result = result.slice(0, edit.start) + edit.text + result.slice(edit.end);
233
+ }
234
+ const symbols = Array.from({ length: keys }, (_, i) => `__pxK${String(i)} = Symbol()`).join(", ");
235
+ return `${PX_FIELD_HELPER} const ${symbols};\n${result}`;
236
+ }
237
+
238
+ /** Lines the claimed-fields helper adds in front of the output, for the source map: it is one line. */
239
+ export const PX_FIELD_HELPER_LINES = 1;
240
+
241
+ // ── Shared helpers ───────────────────────────────────────────────────────────
242
+ //
243
+ // TypeScript writes the helpers its decorator lowering calls (`__esDecorate`, `__runInitializers`,
244
+ // ...) at the top of every file it lowers, and claimed fields add theirs: the same kilobyte again in
245
+ // every decorated module of an app, and in every decorated file of a library built with tsc. One
246
+ // copy of each is served from a virtual module instead, and a definition is replaced with an import
247
+ // of it only when it is exactly the one TypeScript writes (read from TypeScript itself, so a version
248
+ // that writes a helper differently keeps its own).
249
+
250
+ /** The module the lowered files import their helpers from. */
251
+ export const HELPERS_ID = "virtual:praxisjs/decorators";
252
+ const RESOLVED_HELPERS_ID = `\0${HELPERS_ID}`;
253
+
254
+ const PX_HELPER_NAMES = ["__pxField", "__pxTake", "__pxValue"];
255
+
256
+ // Every kind of decorated member, so the lowering of this module calls every helper there is.
257
+ const HELPERS_PROBE = `const d = () => undefined;
258
+ @d export class A {
259
+ @d static s = 1; @d f = 1; @d accessor a = 1; @d static accessor b = 1; @d m() {} @d get g() { return 1; } @d set g(v) {}
260
+ @d #p = 1; @d accessor #q = 1; @d #m() {} @d get #g() { return 1; } @d set #g(v) {} @d static #s() {} @d [Symbol.iterator]() {}
261
+ }
262
+ export const B = @d class {};
263
+ export default @d class {}`;
264
+
265
+ function lowerDecorators(code: string, fileName: string): ts.TranspileOutput {
266
+ return ts.transpileModule(code, {
267
+ fileName,
268
+ reportDiagnostics: true,
269
+ compilerOptions: {
270
+ target: ts.ScriptTarget.ES2022,
271
+ module: ts.ModuleKind.ESNext,
272
+ useDefineForClassFields: true,
273
+ jsx: ts.JsxEmit.Preserve,
274
+ sourceMap: true,
275
+ },
276
+ });
277
+ }
278
+
279
+ interface TsHelper {
280
+ name: string;
281
+ start: number;
282
+ end: number;
283
+ /** The function the helper is defined as. */
284
+ fn: string;
285
+ }
286
+
287
+ // `var __x = (this && this.__x) || function (...) { ... };` at the top level.
288
+ function tsHelpers(code: string, source: ts.SourceFile): TsHelper[] {
289
+ const helpers: TsHelper[] = [];
290
+ for (const statement of source.statements) {
291
+ if (!ts.isVariableStatement(statement) || statement.declarationList.declarations.length !== 1) continue;
292
+ const { name, initializer } = statement.declarationList.declarations[0];
293
+ if (!ts.isIdentifier(name) || initializer === undefined || !ts.isBinaryExpression(initializer)) continue;
294
+ if (initializer.operatorToken.kind !== ts.SyntaxKind.BarBarToken) continue;
295
+ const { left, right } = initializer;
296
+ if (code.slice(left.getStart(source), left.getEnd()) !== `(this && this.${name.text})`) continue;
297
+ helpers.push({ name: name.text, start: statement.getStart(source), end: statement.getEnd(), fn: code.slice(right.getStart(source), right.getEnd()) });
298
+ }
299
+ return helpers;
300
+ }
301
+
302
+ let knownHelpers: Map<string, string> | null = null;
303
+
304
+ function typescriptHelpers(): Map<string, string> {
305
+ if (knownHelpers === null) {
306
+ const output = lowerDecorators(HELPERS_PROBE, "/praxisjs-helpers.ts").outputText;
307
+ const source = ts.createSourceFile("/praxisjs-helpers.js", output, ts.ScriptTarget.Latest, true, ts.ScriptKind.JS);
308
+ knownHelpers = new Map(tsHelpers(output, source).map((helper) => [helper.name, helper.fn]));
309
+ }
310
+ return knownHelpers;
311
+ }
312
+
313
+ // ── Compact decoration calls ─────────────────────────────────────────────────
314
+ //
315
+ // Each `__esDecorate(...)` call TypeScript writes carries its whole context object literal, access
316
+ // functions included: about 200 bytes per decorated member once minified, and `__esDecorate` itself
317
+ // handles every kind of member. For the common members (public fields and methods with a literal
318
+ // name, and the class itself) the call becomes one of the helpers below, which build the very same
319
+ // context objects (same keys in the same order, same access functions, a fresh copy per decorator)
320
+ // and apply the results the way `__esDecorate` does for that kind. Any other call is left as it is.
321
+
322
+ const PX_DECORATE_HELPER =
323
+ "function __pxAccept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; } " +
324
+ "function __pxAddInit(context, state, extras) { context.addInitializer = function (f) { " +
325
+ "if (state.done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); " +
326
+ "extras.push(__pxAccept(f || null)); }; return context; } " +
327
+ "function __pxDecorateField(decorators, name, isStatic, metadata, initializers, extras) { " +
328
+ "const state = { done: false }, has = (obj) => name in obj, get = (obj) => obj[name], set = (obj, value) => { obj[name] = value; }; " +
329
+ "for (let i = decorators.length - 1; i >= 0; i--) { " +
330
+ "const result = __pxAccept((0, decorators[i])(void 0, __pxAddInit({ kind: \"field\", name, static: isStatic, private: false, access: { has, get, set }, metadata }, state, extras))); " +
331
+ "if (result) initializers.unshift(result); } " +
332
+ "state.done = true; } " +
333
+ "function __pxDecorateMethod(ctor, decorators, name, isStatic, metadata, extras) { " +
334
+ "const state = { done: false }, has = (obj) => name in obj, get = (obj) => obj[name]; " +
335
+ "const target = isStatic ? ctor : ctor.prototype, descriptor = Object.getOwnPropertyDescriptor(target, name); " +
336
+ "for (let i = decorators.length - 1; i >= 0; i--) { " +
337
+ "const result = __pxAccept((0, decorators[i])(descriptor.value, __pxAddInit({ kind: \"method\", name, static: isStatic, private: false, access: { has, get }, metadata }, state, extras))); " +
338
+ "if (result) descriptor.value = result; } " +
339
+ "Object.defineProperty(target, name, descriptor); state.done = true; } " +
340
+ "function __pxDecorateClass(descriptor, decorators, metadata, extras) { " +
341
+ "const state = { done: false }, name = descriptor.value.name; " +
342
+ "for (let i = decorators.length - 1; i >= 0; i--) { " +
343
+ "const result = __pxAccept((0, decorators[i])(descriptor.value, __pxAddInit({ kind: \"class\", name, metadata }, state, extras))); " +
344
+ "if (result) descriptor.value = result; } " +
345
+ "state.done = true; } " +
346
+ "function __pxMeta(base) { return typeof Symbol === \"function\" && Symbol.metadata " +
347
+ "? Object.create(arguments.length === 0 ? null : base[Symbol.metadata] ?? null) : void 0; } " +
348
+ "function __pxSetMeta(target, metadata) { if (metadata) Object.defineProperty(target, Symbol.metadata, " +
349
+ "{ enumerable: true, configurable: true, writable: true, value: metadata }); }";
350
+
351
+ const PX_DECORATE_NAMES = ["__pxDecorateField", "__pxDecorateMethod", "__pxDecorateClass", "__pxMeta", "__pxSetMeta"];
352
+
353
+ const METADATA_INIT = /^typeof Symbol === "function" && Symbol\.metadata \? Object\.create\((?:([\w$]+)\[Symbol\.metadata\] \?\? null|null)\) : void 0$/;
354
+ const METADATA_SET = /^if \(([\w$]+)\) Object\.defineProperty\(([\w$]+), Symbol\.metadata, \{ enumerable: true, configurable: true, writable: true, value: \1 \}\);$/;
355
+
356
+ function accessCode(name: string, withSet: boolean): string {
357
+ const member = /^[A-Za-z_$][\w$]*$/.test(name) ? `.${name}` : `[${JSON.stringify(name)}]`;
358
+ const set = withSet ? `, set: (obj, value) => { obj${member} = value; }` : "";
359
+ return `{ has: obj => ${JSON.stringify(name)} in obj, get: obj => obj${member}${set} }`;
360
+ }
361
+
362
+ // The context literal's properties, in order, when each is a plain `key: value`.
363
+ function contextProps(node: ts.Expression): Array<[string, ts.Expression]> | null {
364
+ if (!ts.isObjectLiteralExpression(node)) return null;
365
+ const props: Array<[string, ts.Expression]> = [];
366
+ for (const p of node.properties) {
367
+ if (!ts.isPropertyAssignment(p) || !ts.isIdentifier(p.name)) return null;
368
+ props.push([p.name.text, p.initializer]);
369
+ }
370
+ return props;
371
+ }
372
+
373
+ // The compact call for one `__esDecorate(ctor, descriptorIn, decorators, context, initializers, extras)`, or null.
374
+ function compactCall(call: ts.CallExpression, text: (node: ts.Node) => string): [helper: string, code: string] | null {
375
+ const [ctor, descriptorIn, decorators, context, initializers, extras] = call.arguments;
376
+ const props = contextProps(context);
377
+ if (props === null || !ts.isIdentifier(decorators) || !ts.isIdentifier(extras)) return null;
378
+ const keys = props.map(([key]) => key).join();
379
+ const value = (key: string) => (props.find(([k]) => k === key) as [string, ts.Expression])[1];
380
+ const isNull = (node: ts.Node) => node.kind === ts.SyntaxKind.NullKeyword;
381
+ const metadata = keys.endsWith("metadata") ? value("metadata") : null;
382
+ if (metadata === null || !ts.isIdentifier(metadata)) return null;
383
+ const kind = value("kind");
384
+ if (!ts.isStringLiteral(kind)) return null;
385
+
386
+ if (kind.text === "class") {
387
+ const name = value("name");
388
+ if (keys !== "kind,name,metadata" || !isNull(ctor) || !isNull(initializers)) return null;
389
+ // `_classDescriptor = { value: _classThis }` with `name: _classThis.name`.
390
+ if (!ts.isBinaryExpression(descriptorIn) || descriptorIn.operatorToken.kind !== ts.SyntaxKind.EqualsToken) return null;
391
+ const assigned = contextProps(descriptorIn.right);
392
+ if (assigned?.length !== 1 || assigned[0][0] !== "value" || !ts.isIdentifier(assigned[0][1])) return null;
393
+ if (!ts.isPropertyAccessExpression(name) || name.name.text !== "name" || text(name.expression) !== text(assigned[0][1])) return null;
394
+ return ["__pxDecorateClass", `__pxDecorateClass(${text(descriptorIn)}, ${decorators.text}, ${metadata.text}, ${extras.text})`];
395
+ }
396
+
397
+ if (keys !== "kind,name,static,private,access,metadata" || !isNull(descriptorIn)) return null;
398
+ const name = value("name");
399
+ const isStatic = value("static");
400
+ if (!ts.isStringLiteral(name) || value("private").kind !== ts.SyntaxKind.FalseKeyword) return null;
401
+ if (isStatic.kind !== ts.SyntaxKind.TrueKeyword && isStatic.kind !== ts.SyntaxKind.FalseKeyword) return null;
402
+ const literal = JSON.stringify(name.text);
403
+ if (text(name) !== literal) return null;
404
+ if (kind.text === "field") {
405
+ if (!isNull(ctor) || !ts.isIdentifier(initializers) || text(value("access")) !== accessCode(name.text, true)) return null;
406
+ return ["__pxDecorateField", `__pxDecorateField(${decorators.text}, ${literal}, ${text(isStatic)}, ${metadata.text}, ${initializers.text}, ${extras.text})`];
407
+ }
408
+ if (kind.text === "method") {
409
+ if (ctor.kind !== ts.SyntaxKind.ThisKeyword || !isNull(initializers) || text(value("access")) !== accessCode(name.text, false)) return null;
410
+ return ["__pxDecorateMethod", `__pxDecorateMethod(this, ${decorators.text}, ${literal}, ${text(isStatic)}, ${metadata.text}, ${extras.text})`];
411
+ }
412
+ return null;
413
+ }
414
+
415
+ // Edits that turn the calls of `source` into compact ones, and the helpers they use.
416
+ function compactEdits(source: ts.SourceFile, code: string): { edits: Edit[]; names: Set<string> } {
417
+ const edits: Edit[] = [];
418
+ const names = new Set<string>();
419
+ const text = (node: ts.Node) => code.slice(node.getStart(source), node.getEnd());
420
+ const replace = (node: ts.Node, helper: string, replacement: string): void => {
421
+ const start = node.getStart(source);
422
+ names.add(helper);
423
+ edits.push({ start, end: node.getEnd(), text: replacement + newlines(code.slice(start, node.getEnd())) });
424
+ };
425
+ const visit = (node: ts.Node): void => {
426
+ if (ts.isCallExpression(node) && ts.isIdentifier(node.expression) && node.expression.text === "__esDecorate" && node.arguments.length === 6) {
427
+ const compact = compactCall(node, text);
428
+ if (compact !== null) {
429
+ replace(node, compact[0], compact[1]);
430
+ return;
431
+ }
432
+ } else if (ts.isConditionalExpression(node)) {
433
+ const match = METADATA_INIT.exec(text(node));
434
+ if (match !== null) {
435
+ // The base class group is absent from the match of a class with no `extends`.
436
+ const base = match[1] as string | undefined;
437
+ replace(node, "__pxMeta", base === undefined ? "__pxMeta()" : `__pxMeta(${base})`);
438
+ return;
439
+ }
440
+ } else if (ts.isIfStatement(node)) {
441
+ const match = METADATA_SET.exec(text(node));
442
+ if (match !== null) {
443
+ replace(node, "__pxSetMeta", `__pxSetMeta(${match[2]}, ${match[1]});`);
444
+ return;
445
+ }
446
+ }
447
+ ts.forEachChild(node, visit);
448
+ };
449
+ visit(source);
450
+ return { edits, names };
451
+ }
452
+
453
+ /** The source of the virtual module: every helper TypeScript's decorator lowering calls, and PraxisJS's own. */
454
+ export function helpersModule(): string {
455
+ const lines = [...typescriptHelpers()].map(([name, fn]) => `export var ${name} = ${fn};`);
456
+ return `${lines.join("\n")}\n${PX_FIELD_HELPER}\n${PX_DECORATE_HELPER}\nexport { ${[...PX_HELPER_NAMES, ...PX_DECORATE_NAMES].join(", ")} };\n`;
457
+ }
458
+
459
+ /**
460
+ * Replaces the helper definitions of `code` that the virtual module has with one import of them,
461
+ * or returns null when there is none. Every line stays where it was, so a source map of `code`
462
+ * still fits the result.
463
+ */
464
+ export function shareHelpers(code: string, fileName: string, kind = ts.ScriptKind.JSX): string | null {
465
+ const known = typescriptHelpers();
466
+ const names: string[] = [];
467
+ const edits: Edit[] = [];
468
+ if (code.startsWith(PX_FIELD_HELPER)) {
469
+ names.push(...PX_HELPER_NAMES);
470
+ edits.push({ start: 0, end: PX_FIELD_HELPER.length, text: "" });
471
+ }
472
+ const source = ts.createSourceFile(fileName, code, ts.ScriptTarget.Latest, true, kind);
473
+ for (const helper of tsHelpers(code, source)) {
474
+ if (known.get(helper.name) !== helper.fn) continue;
475
+ names.push(helper.name);
476
+ edits.push({ start: helper.start, end: helper.end, text: newlines(code.slice(helper.start, helper.end)) });
477
+ }
478
+ if (names.length === 0) return null;
479
+ // The compact calls stand in for `__esDecorate`, so only a module that imports it gets them.
480
+ if (names.includes("__esDecorate")) {
481
+ const compact = compactEdits(source, code);
482
+ edits.push(...compact.edits);
483
+ names.push(...compact.names);
484
+ }
485
+ edits[0].text = `import { ${names.join(", ")} } from "${HELPERS_ID}";${edits[0].text}`;
486
+ let result = code;
487
+ for (const edit of edits.sort((a, b) => b.start - a.start)) result = result.slice(0, edit.start) + edit.text + result.slice(edit.end);
488
+ return result;
489
+ }
490
+
58
491
  // oxc doesn't lower TC39 (non-legacy) decorators yet — `@Decorator()`
59
492
  // syntax passes through unchanged and no JS runtime executes it directly:
60
493
  // https://github.com/oxc-project/oxc/issues/9170
@@ -76,31 +509,38 @@ export function decoratorLoweringPlugin(): Plugin {
76
509
  // below never even sees it, and the field silently ends up `undefined` at
77
510
  // runtime with no build-time error.
78
511
  enforce: "pre",
512
+ resolveId(id) {
513
+ return id === HELPERS_ID ? RESOLVED_HELPERS_ID : null;
514
+ },
515
+ load(id) {
516
+ return id === RESOLVED_HELPERS_ID ? helpersModule() : null;
517
+ },
79
518
  transform(code, id) {
80
- if (!JS_LIKE_FILE.test(id) || !code.includes("@")) return null;
519
+ if (!JS_LIKE_FILE.test(id)) return null;
81
520
  const fileName = cleanFileName(id);
82
- if (!hasRealDecorator(code, fileName)) return null;
83
-
84
- const { outputText, sourceMapText, diagnostics } = ts.transpileModule(code, {
85
- fileName,
86
- reportDiagnostics: true,
87
- compilerOptions: {
88
- target: ts.ScriptTarget.ES2022,
89
- module: ts.ModuleKind.ESNext,
90
- useDefineForClassFields: true,
91
- jsx: ts.JsxEmit.Preserve,
92
- sourceMap: true,
93
- },
94
- });
521
+ if (!code.includes("@") || !hasRealDecorator(code, fileName)) {
522
+ // A file of a library built with tsc may hold the same helpers. Only an ES module can take
523
+ // an import.
524
+ if (!code.includes("(this && this.__")) return null;
525
+ const kind = scriptKindFor(fileName);
526
+ if (!ts.isExternalModule(ts.createSourceFile(fileName, code, ts.ScriptTarget.Latest, false, kind))) return null;
527
+ const shared = shareHelpers(code, fileName, kind);
528
+ return shared === null ? null : { code: shared, map: null };
529
+ }
530
+
531
+ const { outputText, sourceMapText, diagnostics } = lowerDecorators(code, fileName);
95
532
 
96
533
  const errors = diagnostics?.filter((d) => d.category === ts.DiagnosticCategory.Error) ?? [];
97
534
  if (errors.length > 0) {
98
535
  throw new Error(`[praxisjs:decorators] ${fileName}:\n${formatDiagnostics(errors)}`);
99
536
  }
100
537
 
538
+ const claimed = claimFields(outputText, fileName);
539
+ const map = sourceMapText ? (JSON.parse(sourceMapText) as RawSourceMap) : null;
540
+ const output = claimed ?? outputText;
101
541
  return {
102
- code: outputText,
103
- map: sourceMapText ? (JSON.parse(sourceMapText) as RawSourceMap) : null,
542
+ code: shareHelpers(output, fileName) ?? output,
543
+ map: claimed === null || map === null ? map : { ...map, mappings: ";".repeat(PX_FIELD_HELPER_LINES) + map.mappings },
104
544
  };
105
545
  },
106
546
  };