@praxisjs/vite-plugin 4.0.5 → 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.
- package/CHANGELOG.md +28 -0
- package/dist/decorators.d.ts +15 -0
- package/dist/decorators.d.ts.map +1 -1
- package/dist/decorators.js +437 -16
- package/dist/decorators.js.map +1 -1
- package/dist/hmr.d.ts +5 -0
- package/dist/hmr.d.ts.map +1 -0
- package/dist/hmr.js +106 -0
- package/dist/hmr.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -18
- package/dist/index.js.map +1 -1
- package/dist/keyed-lists.d.ts +27 -0
- package/dist/keyed-lists.d.ts.map +1 -0
- package/dist/keyed-lists.js +248 -0
- package/dist/keyed-lists.js.map +1 -0
- package/dist/mapped-output.d.ts +32 -0
- package/dist/mapped-output.d.ts.map +1 -0
- package/dist/mapped-output.js +107 -0
- package/dist/mapped-output.js.map +1 -0
- package/dist/templates.d.ts +51 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +707 -0
- package/dist/templates.js.map +1 -0
- package/package.json +13 -5
- package/src/decorators.ts +456 -16
- package/src/hmr.ts +108 -0
- package/src/index.ts +22 -25
- package/src/keyed-lists.ts +282 -0
- package/src/mapped-output.ts +116 -0
- package/src/templates.ts +729 -0
- package/dist/__tests__/css-esbuild-error.test.d.ts +0 -2
- package/dist/__tests__/css-esbuild-error.test.d.ts.map +0 -1
- package/dist/__tests__/css-esbuild-error.test.js +0 -25
- package/dist/__tests__/css-esbuild-error.test.js.map +0 -1
- package/dist/__tests__/css-tsconfig-error.test.d.ts +0 -2
- package/dist/__tests__/css-tsconfig-error.test.d.ts.map +0 -1
- package/dist/__tests__/css-tsconfig-error.test.js +0 -39
- package/dist/__tests__/css-tsconfig-error.test.js.map +0 -1
- package/dist/__tests__/css-tsconfig-no-config.test.d.ts +0 -2
- package/dist/__tests__/css-tsconfig-no-config.test.d.ts.map +0 -1
- package/dist/__tests__/css-tsconfig-no-config.test.js +0 -38
- package/dist/__tests__/css-tsconfig-no-config.test.js.map +0 -1
- package/dist/__tests__/css.test.d.ts +0 -2
- package/dist/__tests__/css.test.d.ts.map +0 -1
- package/dist/__tests__/css.test.js +0 -288
- package/dist/__tests__/css.test.js.map +0 -1
- package/dist/__tests__/index.test.d.ts +0 -2
- package/dist/__tests__/index.test.d.ts.map +0 -1
- package/dist/__tests__/index.test.js +0 -301
- package/dist/__tests__/index.test.js.map +0 -1
- package/src/__tests__/css-esbuild-error.test.ts +0 -39
- package/src/__tests__/css-tsconfig-error.test.ts +0 -53
- package/src/__tests__/css-tsconfig-no-config.test.ts +0 -52
- package/src/__tests__/css.test.ts +0 -381
- package/src/__tests__/index.test.ts +0 -351
- package/tsconfig.json +0 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# @praxisjs/vite-plugin
|
|
2
2
|
|
|
3
|
+
## 4.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 75115a9: Component hot module replacement. In the dev server, `@praxisjs/vite-plugin` registers each top-level class of the app's modules with `@praxisjs/runtime` (`_$hmrRegister`), and a module whose exports are all component classes accepts its own update: every mounted instance of an edited component renders again in place with the new class, without a page reload. Modules that export anything else keep Vite's default handling.
|
|
8
|
+
- 75115a9: Add keyed list reconciliation. `For` (keyed by `by`, or by item identity) and `Index` (by position) in `@praxisjs/runtime` render each key once, keep its row while the key stays, and create, move or remove only the rows that changed, with the minimum number of moves (LIS) and `moveBefore()` where available. They support fallbacks, Promise-based enter/leave transitions, hydration of prerendered rows, and isolate row render errors. `@praxisjs/jsx` types components that set `static __jsxRawProps = true` by their exact constructor props, so `For` infers its item type. `@praxisjs/vite-plugin` rewrites keyed `{() => list.map((item) => <Row key={…} />)}` children into `For` and warns about keyed `.map()` calls it cannot rewrite (`keyedLists` option).
|
|
9
|
+
- 75115a9: Rendering and reactivity performance overhaul. `@praxisjs/core` has a new push-pull reactive graph (linked dependencies reused across runs, version-checked computeds, glitch-free effects) and keeps component internals on the instance. `@praxisjs/decorators` shares one accessor pair per `@State`/`@Prop` field, creates `@Computed` lazily, and `@Component` no longer wraps the class. `@praxisjs/runtime` adds the compiled-template helpers, a shared event dispatcher, leaner scopes and reactive children, skipped no-op prop writes, cheaper component mounting and a detached fill for large `For` renders, and fixes a static `<select>` value being lost. `@praxisjs/vite-plugin` compiles JSX trees of host elements into templates cloned per render (`templates` option, on by default).
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 75115a9: Decorated fields are defined by their innermost decorator. With `@praxisjs/vite-plugin`, `@State()`, `@Prop()`, every built-in field decorator and `createFieldDecorator` bindings install their property directly with the field's initial value instead of replacing a plain value, which kept every instance in V8's slow dictionary mode. New `addClaimableInitializer(context, init)` export for field decorators written against the TC39 API.
|
|
14
|
+
- 75115a9: Edge-case fixes in the new fast paths. `@praxisjs/vite-plugin` keeps a claimed field's initializer in the field's own scope instead of moving it into the constructor, where a constructor parameter or local of the same name shadowed what it read (and `new.target` fields are claimed too). `selector()` from `@praxisjs/core` compares against the current source value when read outside an effect, also inside a batch or an event handler before its subscribers are notified. `@praxisjs/runtime` keeps updating a hydrated element through a reactive child that fills it alone, rebuilds compiled templates when `render()` runs with another global document (a new SSG window), and always writes `open`, `selectedIndex`, media and scroll props from reactive bindings so a re-run restores what the user changed. Compiled templates keep the leading whitespace of JSX text (`{v} / {m}` lost its first space) and keep tabs inside a line, as the JSX transform does. Methods of `@Bind`, `@Emit` and the other built-in method decorators can be spied on with `vi.spyOn(instance, name)` before their first read again. `@praxisjs/router`'s `Link` removes its `class` attribute when it stops being active instead of leaving `class=""`.
|
|
15
|
+
- 75115a9: Published packages no longer contain their tests: package builds compile `src` without `src/**/__tests__` (through a `tsconfig.build.json`), and each package's `files` leaves test sources and stale compiled tests out of the tarball. `pnpm typecheck` still type-checks the tests.
|
|
16
|
+
- 75115a9: Cheaper creation of rows and components. `@praxisjs/runtime` builds and clones compiled templates in the inert `<template>` document (live document for templates with custom elements) and no longer touches `document` at import time, binds template event props without a listener (one capture listener per event type on the document and on each render container attaches an element's own listener on first use, same dispatch semantics), runs reactive props and children through shared functions with per-binding records instead of closures, creates text natively without JS wrappers, forks a reactive child's scope only when a run asks for it, stops wrapping single-root components in comments, writes only-child text with `textContent` and inserts arrays without a fragment. Compiled event props bind through a per-module target (`_$event`/`_$onEvent`) and reactive `class` props through `_$className`, skipping the generic prop dispatch. `@praxisjs/core`'s `getComponentAnchor()` returns a `Node` (a single-root component is anchored on its root) and every `selector()` shares one bucket class, `createContextEffect()` runs an effect whose shared function reads its state from `this.ctx`; effects record their owner even when no reactive observer is installed (`getEffectOwner()` reads it from the node). `@praxisjs/vite-plugin` also compiles lone elements that have something static or a reactive child, emits the delegated event bindings, emits a template that is an arrow function's whole body or a `return` operand as plain statements, leaves no placeholder for a reactive only child, hoists one event target per event prop name and module, emits a dedicated binding for a reactive `class`/`className`, and no longer wraps a JSX tree used as an attribute value of a compiled element in braces. Both packages keep one inert instance of each hot internal class (graph nodes and links, selector buckets, scopes, list rows, reactive children) so their V8 hidden classes survive a full GC after a list is cleared, and every list row gets the same hidden class whatever it renders.
|
|
17
|
+
- 75115a9: Smaller production bundles. The framework and feature packages are marked `"sideEffects": false`, so bundlers leave out the modules an app does not use (`For`/`Index` and `selector()` were kept in every bundle by their shape keepers). `@praxisjs/core`'s graph gates its observer instrumentation on a boolean that minifiers fold away when no observer is ever installed. `@praxisjs/runtime` passes `Index`'s positional update to the list view, so `For`-only apps leave it out, and builds its event prop table from camel-case names. `@praxisjs/devtools` is built one file per module and its decorators check `process.env.NODE_ENV` inline, so `@Trace`/`@Debug` in production code no longer bundle the registry and the panel. `@praxisjs/vite-plugin` serves TypeScript's decorator helpers and the claimed fields' helper from one virtual module (`virtual:praxisjs/decorators`) instead of writing them into every decorated file, and replaces the identical copies `tsc` wrote into ES module libraries.
|
|
18
|
+
- 75115a9: Smaller startup: `render()` hydrates only after the new `enableHydration()` (called by `ssgPlugin()`), so apps that don't prerender leave the hydration code out. **Breaking:** an app that hydrates server-rendered HTML without `ssgPlugin()` must call `enableHydration()` before `render()`. Also, compiled templates whose tree the HTML parser reads back unchanged are emitted as markup and parsed once (`_$html`); decorated fields, methods and classes call shorter lowering helpers; the list view's internal members are `#private`.
|
|
19
|
+
- Updated dependencies [75115a9]
|
|
20
|
+
- Updated dependencies [75115a9]
|
|
21
|
+
- Updated dependencies [75115a9]
|
|
22
|
+
- Updated dependencies [75115a9]
|
|
23
|
+
- @praxisjs/css@0.3.5
|
|
24
|
+
|
|
25
|
+
## 4.0.6
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- @praxisjs/css@0.3.4
|
|
30
|
+
|
|
3
31
|
## 4.0.5
|
|
4
32
|
|
|
5
33
|
### Patch Changes
|
package/dist/decorators.d.ts
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
1
2
|
import type { Plugin } from "vite";
|
|
3
|
+
/** Rewrites claimable decorated fields of `output` (TypeScript's lowering); null when none. */
|
|
4
|
+
export declare function claimFields(output: string, fileName: string): string | null;
|
|
5
|
+
/** Lines the claimed-fields helper adds in front of the output, for the source map: it is one line. */
|
|
6
|
+
export declare const PX_FIELD_HELPER_LINES = 1;
|
|
7
|
+
/** The module the lowered files import their helpers from. */
|
|
8
|
+
export declare const HELPERS_ID = "virtual:praxisjs/decorators";
|
|
9
|
+
/** The source of the virtual module: every helper TypeScript's decorator lowering calls, and PraxisJS's own. */
|
|
10
|
+
export declare function helpersModule(): string;
|
|
11
|
+
/**
|
|
12
|
+
* Replaces the helper definitions of `code` that the virtual module has with one import of them,
|
|
13
|
+
* or returns null when there is none. Every line stays where it was, so a source map of `code`
|
|
14
|
+
* still fits the result.
|
|
15
|
+
*/
|
|
16
|
+
export declare function shareHelpers(code: string, fileName: string, kind?: ts.ScriptKind): string | null;
|
|
2
17
|
export declare function decoratorLoweringPlugin(): Plugin;
|
|
3
18
|
//# sourceMappingURL=decorators.d.ts.map
|
package/dist/decorators.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AA8HnC,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA0G3E;AAED,uGAAuG;AACvG,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAWvC,8DAA8D;AAC9D,eAAO,MAAM,UAAU,gCAAgC,CAAC;AA0MxD,gHAAgH;AAChH,wBAAgB,aAAa,IAAI,MAAM,CAGtC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,gBAAoB,GAAG,MAAM,GAAG,IAAI,CAyBpG;AAYD,wBAAgB,uBAAuB,IAAI,MAAM,CA8ChD"}
|
package/dist/decorators.js
CHANGED
|
@@ -40,6 +40,419 @@ function formatDiagnostics(diagnostics) {
|
|
|
40
40
|
getNewLine: () => "\n",
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
+
// ── Claimed fields ───────────────────────────────────────────────────────────
|
|
44
|
+
//
|
|
45
|
+
// TypeScript lowers a decorated field `x = v` to a class field `x = __runInitializers(this,
|
|
46
|
+
// _x_initializers, v)` and runs the field's extra initializers (where decorators install their
|
|
47
|
+
// accessors) at the very next step: as the prefix of the next field's initializer, or in the
|
|
48
|
+
// constructor right after the fields. Defining `x` as a data property and then replacing it with
|
|
49
|
+
// an accessor turns every instance into a slow dictionary-mode object in V8. So the field is
|
|
50
|
+
// removed and, at that next step, `__pxField` defines it: through the innermost decorator's
|
|
51
|
+
// `claim` (see CLAIM in @praxisjs/decorators), which installs its property directly, or as a data
|
|
52
|
+
// property when that decorator has none. It then runs the remaining extra initializers. The order
|
|
53
|
+
// of every step is unchanged.
|
|
54
|
+
//
|
|
55
|
+
// The initializer `v` stays where it was, as the body of a symbol-keyed method that the class's
|
|
56
|
+
// first static block takes off the prototype before anything else runs: it keeps the field's
|
|
57
|
+
// scope (a constructor's parameters and locals would shadow names it reads), `this`, `super` and
|
|
58
|
+
// `new.target`, and the output keeps its lines for the source map.
|
|
59
|
+
const PX_FIELD_HELPER = "const __pxClaim = Symbol.for(\"praxisjs.field.claim\"), __pxValue = Symbol(); " +
|
|
60
|
+
"function __pxTake(p, k) { const f = p[k]; delete p[k]; return f; } " +
|
|
61
|
+
"function __pxField(o, k, inits, extras) { " +
|
|
62
|
+
"let v = inits[__pxValue].call(o); " +
|
|
63
|
+
"for (let i = 0; i < inits.length; i++) v = inits[i].call(o, v); " +
|
|
64
|
+
"let i = 0; const claim = extras.length > 0 ? extras[0][__pxClaim] : undefined; " +
|
|
65
|
+
"if (claim !== undefined) { claim.call(o, v); i = 1; } " +
|
|
66
|
+
"else Object.defineProperty(o, k, { value: v, writable: true, enumerable: true, configurable: true }); " +
|
|
67
|
+
"for (; i < extras.length; i++) extras[i].call(o); }";
|
|
68
|
+
function isRunInitializers(node) {
|
|
69
|
+
return ts.isCallExpression(node) && ts.isIdentifier(node.expression) && node.expression.text === "__runInitializers"
|
|
70
|
+
&& node.arguments.length >= 2 && node.arguments[0].kind === ts.SyntaxKind.ThisKeyword && ts.isIdentifier(node.arguments[1]);
|
|
71
|
+
}
|
|
72
|
+
// `{ kind: "field", name: "x", static: false, private: false, ... }` → { initializers: { name, extras, block } }
|
|
73
|
+
function decoratedFields(cls) {
|
|
74
|
+
const fields = new Map();
|
|
75
|
+
const visit = (node, owner) => {
|
|
76
|
+
if (ts.isCallExpression(node) && ts.isIdentifier(node.expression) && node.expression.text === "__esDecorate" && node.arguments.length === 6) {
|
|
77
|
+
const [, , , ctx, inits, extras] = node.arguments;
|
|
78
|
+
if (ts.isObjectLiteralExpression(ctx) && ts.isIdentifier(inits) && ts.isIdentifier(extras)) {
|
|
79
|
+
const prop = (key) => ctx.properties.find((p) => ts.isPropertyAssignment(p) && ts.isIdentifier(p.name) && p.name.text === key)?.initializer;
|
|
80
|
+
const kind = prop("kind");
|
|
81
|
+
const name = prop("name");
|
|
82
|
+
if (kind !== undefined && ts.isStringLiteral(kind) && kind.text === "field" && name !== undefined && ts.isStringLiteral(name)
|
|
83
|
+
&& prop("static")?.kind === ts.SyntaxKind.FalseKeyword && prop("private")?.kind === ts.SyntaxKind.FalseKeyword) {
|
|
84
|
+
fields.set(inits.text, { name: name.text, extras: extras.text, block: owner });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
ts.forEachChild(node, (child) => { visit(child, owner); });
|
|
89
|
+
};
|
|
90
|
+
for (const member of cls.members)
|
|
91
|
+
if (ts.isClassStaticBlockDeclaration(member))
|
|
92
|
+
visit(member, member);
|
|
93
|
+
return fields;
|
|
94
|
+
}
|
|
95
|
+
const newlines = (code) => "\n".repeat(code.split("\n").length - 1);
|
|
96
|
+
/** Rewrites claimable decorated fields of `output` (TypeScript's lowering); null when none. */
|
|
97
|
+
export function claimFields(output, fileName) {
|
|
98
|
+
if (!output.includes("__esDecorate("))
|
|
99
|
+
return null;
|
|
100
|
+
// The output keeps JSX (`jsx: "preserve"`), which the JSX kind also parses in plain JS.
|
|
101
|
+
const source = ts.createSourceFile(fileName, output, ts.ScriptTarget.Latest, true, ts.ScriptKind.JSX);
|
|
102
|
+
const edits = [];
|
|
103
|
+
// Method keys only need to differ within a class: each one is gone from the prototype once
|
|
104
|
+
// the class is defined.
|
|
105
|
+
let keys = 0;
|
|
106
|
+
const text = (node) => output.slice(node.getStart(source), node.getEnd());
|
|
107
|
+
const visitClass = (cls) => {
|
|
108
|
+
const fields = decoratedFields(cls);
|
|
109
|
+
if (fields.size === 0)
|
|
110
|
+
return;
|
|
111
|
+
// extras variables of the removed fields
|
|
112
|
+
const removed = new Set();
|
|
113
|
+
let pending = [];
|
|
114
|
+
const takes = [];
|
|
115
|
+
// The code that runs the prefix `__runInitializers(this, extras)` of a member: the pending
|
|
116
|
+
// __pxField calls when `extras` belongs to a removed field, else the prefix after them.
|
|
117
|
+
const prefixCode = (call) => {
|
|
118
|
+
const extras = call.arguments[1].text;
|
|
119
|
+
const calls = pending;
|
|
120
|
+
pending = [];
|
|
121
|
+
return removed.has(extras) ? calls : [...calls, text(call)];
|
|
122
|
+
};
|
|
123
|
+
for (const member of cls.members) {
|
|
124
|
+
if (!ts.isPropertyDeclaration(member) || member.initializer === undefined)
|
|
125
|
+
continue;
|
|
126
|
+
if (member.modifiers?.some((m) => m.kind === ts.SyntaxKind.StaticKeyword))
|
|
127
|
+
continue;
|
|
128
|
+
// `(prefix, ...value)`, `prefix` alone (a field with no initializer, after a decorated one) or
|
|
129
|
+
// `value`. A comma list nests to the left, so its first item is the innermost left operand.
|
|
130
|
+
const whole = member.initializer;
|
|
131
|
+
const items = [];
|
|
132
|
+
const inner = ts.isParenthesizedExpression(whole) ? whole.expression : whole;
|
|
133
|
+
const flatten = (e) => {
|
|
134
|
+
if (ts.isBinaryExpression(e) && e.operatorToken.kind === ts.SyntaxKind.CommaToken) {
|
|
135
|
+
flatten(e.left);
|
|
136
|
+
items.push(e.right);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
items.push(e);
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
flatten(inner);
|
|
143
|
+
let prefix = null;
|
|
144
|
+
if (isRunInitializers(items[0]) && items[0].arguments.length === 2 && (items.length > 1 || inner === whole)) {
|
|
145
|
+
prefix = items[0];
|
|
146
|
+
items.shift();
|
|
147
|
+
}
|
|
148
|
+
const value = items.length === 1 ? items[0] : null;
|
|
149
|
+
// A computed key may carry the evaluation of decorators (TypeScript only puts them in keys
|
|
150
|
+
// that are not literals, and those fields have no literal name to claim them by).
|
|
151
|
+
const literalKey = !ts.isComputedPropertyName(member.name) || ts.isLiteralExpression(member.name.expression);
|
|
152
|
+
const info = literalKey && value !== null && isRunInitializers(value) && value.arguments.length === 3
|
|
153
|
+
? fields.get(value.arguments[1].text)
|
|
154
|
+
: undefined;
|
|
155
|
+
if (info !== undefined) {
|
|
156
|
+
const call = value;
|
|
157
|
+
const inits = call.arguments[1].text;
|
|
158
|
+
const initial = call.arguments[2];
|
|
159
|
+
const key = `__pxK${String(takes.length)}`;
|
|
160
|
+
pending = [...(prefix === null ? pending : prefixCode(prefix)), `__pxField(this, ${JSON.stringify(info.name)}, ${inits}, ${info.extras})`];
|
|
161
|
+
removed.add(info.extras);
|
|
162
|
+
takes.push(`${inits}[__pxValue] = __pxTake(this.prototype, ${key});`);
|
|
163
|
+
const head = output.slice(member.getStart(source), initial.getStart(source));
|
|
164
|
+
const tail = output.slice(initial.getEnd(), member.getEnd());
|
|
165
|
+
edits.push({ start: member.getStart(source), end: initial.getStart(source), text: `[${key}]() {${newlines(head)} return ` }, { start: initial.getEnd(), end: member.getEnd(), text: `;${newlines(tail)} }` });
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
// A removed field's call waits in `pending` until the prefix that runs its extras.
|
|
169
|
+
if (pending.length === 0)
|
|
170
|
+
continue;
|
|
171
|
+
if (prefix !== null) {
|
|
172
|
+
edits.push({ start: prefix.getStart(source), end: prefix.getEnd(), text: `(${prefixCode(prefix).join(", ")})` });
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
edits.push({ start: whole.getStart(source), end: whole.getStart(source), text: `(${pending.splice(0).join(", ")}, ` }, { start: whole.getEnd(), end: whole.getEnd(), text: ")" });
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (takes.length === 0)
|
|
179
|
+
return;
|
|
180
|
+
keys = Math.max(keys, takes.length);
|
|
181
|
+
const open = [...fields.values()][0].block.body.getStart(source) + 1;
|
|
182
|
+
edits.push({ start: open, end: open, text: ` ${takes.join(" ")}` });
|
|
183
|
+
if (pending.length === 0)
|
|
184
|
+
return;
|
|
185
|
+
// The last removed field's step is the constructor's `__runInitializers(this, extras);`.
|
|
186
|
+
const ctor = cls.members.find((m) => ts.isConstructorDeclaration(m));
|
|
187
|
+
const statement = ctor?.body?.statements.find((st) => ts.isExpressionStatement(st) && isRunInitializers(st.expression)
|
|
188
|
+
&& st.expression.arguments.length === 2 && removed.has(st.expression.arguments[1].text));
|
|
189
|
+
if (statement === undefined) {
|
|
190
|
+
throw new Error(`[praxisjs:decorators] ${fileName}: could not find where the fields of a class finish initializing`);
|
|
191
|
+
}
|
|
192
|
+
edits.push({ start: statement.getStart(source), end: statement.getEnd(), text: `${pending.join("; ")};` });
|
|
193
|
+
};
|
|
194
|
+
const visit = (node) => {
|
|
195
|
+
if (ts.isClassDeclaration(node) || ts.isClassExpression(node))
|
|
196
|
+
visitClass(node);
|
|
197
|
+
ts.forEachChild(node, visit);
|
|
198
|
+
};
|
|
199
|
+
visit(source);
|
|
200
|
+
if (edits.length === 0)
|
|
201
|
+
return null;
|
|
202
|
+
let result = output;
|
|
203
|
+
for (const edit of edits.sort((a, b) => b.start - a.start)) {
|
|
204
|
+
result = result.slice(0, edit.start) + edit.text + result.slice(edit.end);
|
|
205
|
+
}
|
|
206
|
+
const symbols = Array.from({ length: keys }, (_, i) => `__pxK${String(i)} = Symbol()`).join(", ");
|
|
207
|
+
return `${PX_FIELD_HELPER} const ${symbols};\n${result}`;
|
|
208
|
+
}
|
|
209
|
+
/** Lines the claimed-fields helper adds in front of the output, for the source map: it is one line. */
|
|
210
|
+
export const PX_FIELD_HELPER_LINES = 1;
|
|
211
|
+
// ── Shared helpers ───────────────────────────────────────────────────────────
|
|
212
|
+
//
|
|
213
|
+
// TypeScript writes the helpers its decorator lowering calls (`__esDecorate`, `__runInitializers`,
|
|
214
|
+
// ...) at the top of every file it lowers, and claimed fields add theirs: the same kilobyte again in
|
|
215
|
+
// every decorated module of an app, and in every decorated file of a library built with tsc. One
|
|
216
|
+
// copy of each is served from a virtual module instead, and a definition is replaced with an import
|
|
217
|
+
// of it only when it is exactly the one TypeScript writes (read from TypeScript itself, so a version
|
|
218
|
+
// that writes a helper differently keeps its own).
|
|
219
|
+
/** The module the lowered files import their helpers from. */
|
|
220
|
+
export const HELPERS_ID = "virtual:praxisjs/decorators";
|
|
221
|
+
const RESOLVED_HELPERS_ID = `\0${HELPERS_ID}`;
|
|
222
|
+
const PX_HELPER_NAMES = ["__pxField", "__pxTake", "__pxValue"];
|
|
223
|
+
// Every kind of decorated member, so the lowering of this module calls every helper there is.
|
|
224
|
+
const HELPERS_PROBE = `const d = () => undefined;
|
|
225
|
+
@d export class A {
|
|
226
|
+
@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) {}
|
|
227
|
+
@d #p = 1; @d accessor #q = 1; @d #m() {} @d get #g() { return 1; } @d set #g(v) {} @d static #s() {} @d [Symbol.iterator]() {}
|
|
228
|
+
}
|
|
229
|
+
export const B = @d class {};
|
|
230
|
+
export default @d class {}`;
|
|
231
|
+
function lowerDecorators(code, fileName) {
|
|
232
|
+
return ts.transpileModule(code, {
|
|
233
|
+
fileName,
|
|
234
|
+
reportDiagnostics: true,
|
|
235
|
+
compilerOptions: {
|
|
236
|
+
target: ts.ScriptTarget.ES2022,
|
|
237
|
+
module: ts.ModuleKind.ESNext,
|
|
238
|
+
useDefineForClassFields: true,
|
|
239
|
+
jsx: ts.JsxEmit.Preserve,
|
|
240
|
+
sourceMap: true,
|
|
241
|
+
},
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
// `var __x = (this && this.__x) || function (...) { ... };` at the top level.
|
|
245
|
+
function tsHelpers(code, source) {
|
|
246
|
+
const helpers = [];
|
|
247
|
+
for (const statement of source.statements) {
|
|
248
|
+
if (!ts.isVariableStatement(statement) || statement.declarationList.declarations.length !== 1)
|
|
249
|
+
continue;
|
|
250
|
+
const { name, initializer } = statement.declarationList.declarations[0];
|
|
251
|
+
if (!ts.isIdentifier(name) || initializer === undefined || !ts.isBinaryExpression(initializer))
|
|
252
|
+
continue;
|
|
253
|
+
if (initializer.operatorToken.kind !== ts.SyntaxKind.BarBarToken)
|
|
254
|
+
continue;
|
|
255
|
+
const { left, right } = initializer;
|
|
256
|
+
if (code.slice(left.getStart(source), left.getEnd()) !== `(this && this.${name.text})`)
|
|
257
|
+
continue;
|
|
258
|
+
helpers.push({ name: name.text, start: statement.getStart(source), end: statement.getEnd(), fn: code.slice(right.getStart(source), right.getEnd()) });
|
|
259
|
+
}
|
|
260
|
+
return helpers;
|
|
261
|
+
}
|
|
262
|
+
let knownHelpers = null;
|
|
263
|
+
function typescriptHelpers() {
|
|
264
|
+
if (knownHelpers === null) {
|
|
265
|
+
const output = lowerDecorators(HELPERS_PROBE, "/praxisjs-helpers.ts").outputText;
|
|
266
|
+
const source = ts.createSourceFile("/praxisjs-helpers.js", output, ts.ScriptTarget.Latest, true, ts.ScriptKind.JS);
|
|
267
|
+
knownHelpers = new Map(tsHelpers(output, source).map((helper) => [helper.name, helper.fn]));
|
|
268
|
+
}
|
|
269
|
+
return knownHelpers;
|
|
270
|
+
}
|
|
271
|
+
// ── Compact decoration calls ─────────────────────────────────────────────────
|
|
272
|
+
//
|
|
273
|
+
// Each `__esDecorate(...)` call TypeScript writes carries its whole context object literal, access
|
|
274
|
+
// functions included: about 200 bytes per decorated member once minified, and `__esDecorate` itself
|
|
275
|
+
// handles every kind of member. For the common members (public fields and methods with a literal
|
|
276
|
+
// name, and the class itself) the call becomes one of the helpers below, which build the very same
|
|
277
|
+
// context objects (same keys in the same order, same access functions, a fresh copy per decorator)
|
|
278
|
+
// and apply the results the way `__esDecorate` does for that kind. Any other call is left as it is.
|
|
279
|
+
const PX_DECORATE_HELPER = "function __pxAccept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; } " +
|
|
280
|
+
"function __pxAddInit(context, state, extras) { context.addInitializer = function (f) { " +
|
|
281
|
+
"if (state.done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); " +
|
|
282
|
+
"extras.push(__pxAccept(f || null)); }; return context; } " +
|
|
283
|
+
"function __pxDecorateField(decorators, name, isStatic, metadata, initializers, extras) { " +
|
|
284
|
+
"const state = { done: false }, has = (obj) => name in obj, get = (obj) => obj[name], set = (obj, value) => { obj[name] = value; }; " +
|
|
285
|
+
"for (let i = decorators.length - 1; i >= 0; i--) { " +
|
|
286
|
+
"const result = __pxAccept((0, decorators[i])(void 0, __pxAddInit({ kind: \"field\", name, static: isStatic, private: false, access: { has, get, set }, metadata }, state, extras))); " +
|
|
287
|
+
"if (result) initializers.unshift(result); } " +
|
|
288
|
+
"state.done = true; } " +
|
|
289
|
+
"function __pxDecorateMethod(ctor, decorators, name, isStatic, metadata, extras) { " +
|
|
290
|
+
"const state = { done: false }, has = (obj) => name in obj, get = (obj) => obj[name]; " +
|
|
291
|
+
"const target = isStatic ? ctor : ctor.prototype, descriptor = Object.getOwnPropertyDescriptor(target, name); " +
|
|
292
|
+
"for (let i = decorators.length - 1; i >= 0; i--) { " +
|
|
293
|
+
"const result = __pxAccept((0, decorators[i])(descriptor.value, __pxAddInit({ kind: \"method\", name, static: isStatic, private: false, access: { has, get }, metadata }, state, extras))); " +
|
|
294
|
+
"if (result) descriptor.value = result; } " +
|
|
295
|
+
"Object.defineProperty(target, name, descriptor); state.done = true; } " +
|
|
296
|
+
"function __pxDecorateClass(descriptor, decorators, metadata, extras) { " +
|
|
297
|
+
"const state = { done: false }, name = descriptor.value.name; " +
|
|
298
|
+
"for (let i = decorators.length - 1; i >= 0; i--) { " +
|
|
299
|
+
"const result = __pxAccept((0, decorators[i])(descriptor.value, __pxAddInit({ kind: \"class\", name, metadata }, state, extras))); " +
|
|
300
|
+
"if (result) descriptor.value = result; } " +
|
|
301
|
+
"state.done = true; } " +
|
|
302
|
+
"function __pxMeta(base) { return typeof Symbol === \"function\" && Symbol.metadata " +
|
|
303
|
+
"? Object.create(arguments.length === 0 ? null : base[Symbol.metadata] ?? null) : void 0; } " +
|
|
304
|
+
"function __pxSetMeta(target, metadata) { if (metadata) Object.defineProperty(target, Symbol.metadata, " +
|
|
305
|
+
"{ enumerable: true, configurable: true, writable: true, value: metadata }); }";
|
|
306
|
+
const PX_DECORATE_NAMES = ["__pxDecorateField", "__pxDecorateMethod", "__pxDecorateClass", "__pxMeta", "__pxSetMeta"];
|
|
307
|
+
const METADATA_INIT = /^typeof Symbol === "function" && Symbol\.metadata \? Object\.create\((?:([\w$]+)\[Symbol\.metadata\] \?\? null|null)\) : void 0$/;
|
|
308
|
+
const METADATA_SET = /^if \(([\w$]+)\) Object\.defineProperty\(([\w$]+), Symbol\.metadata, \{ enumerable: true, configurable: true, writable: true, value: \1 \}\);$/;
|
|
309
|
+
function accessCode(name, withSet) {
|
|
310
|
+
const member = /^[A-Za-z_$][\w$]*$/.test(name) ? `.${name}` : `[${JSON.stringify(name)}]`;
|
|
311
|
+
const set = withSet ? `, set: (obj, value) => { obj${member} = value; }` : "";
|
|
312
|
+
return `{ has: obj => ${JSON.stringify(name)} in obj, get: obj => obj${member}${set} }`;
|
|
313
|
+
}
|
|
314
|
+
// The context literal's properties, in order, when each is a plain `key: value`.
|
|
315
|
+
function contextProps(node) {
|
|
316
|
+
if (!ts.isObjectLiteralExpression(node))
|
|
317
|
+
return null;
|
|
318
|
+
const props = [];
|
|
319
|
+
for (const p of node.properties) {
|
|
320
|
+
if (!ts.isPropertyAssignment(p) || !ts.isIdentifier(p.name))
|
|
321
|
+
return null;
|
|
322
|
+
props.push([p.name.text, p.initializer]);
|
|
323
|
+
}
|
|
324
|
+
return props;
|
|
325
|
+
}
|
|
326
|
+
// The compact call for one `__esDecorate(ctor, descriptorIn, decorators, context, initializers, extras)`, or null.
|
|
327
|
+
function compactCall(call, text) {
|
|
328
|
+
const [ctor, descriptorIn, decorators, context, initializers, extras] = call.arguments;
|
|
329
|
+
const props = contextProps(context);
|
|
330
|
+
if (props === null || !ts.isIdentifier(decorators) || !ts.isIdentifier(extras))
|
|
331
|
+
return null;
|
|
332
|
+
const keys = props.map(([key]) => key).join();
|
|
333
|
+
const value = (key) => props.find(([k]) => k === key)[1];
|
|
334
|
+
const isNull = (node) => node.kind === ts.SyntaxKind.NullKeyword;
|
|
335
|
+
const metadata = keys.endsWith("metadata") ? value("metadata") : null;
|
|
336
|
+
if (metadata === null || !ts.isIdentifier(metadata))
|
|
337
|
+
return null;
|
|
338
|
+
const kind = value("kind");
|
|
339
|
+
if (!ts.isStringLiteral(kind))
|
|
340
|
+
return null;
|
|
341
|
+
if (kind.text === "class") {
|
|
342
|
+
const name = value("name");
|
|
343
|
+
if (keys !== "kind,name,metadata" || !isNull(ctor) || !isNull(initializers))
|
|
344
|
+
return null;
|
|
345
|
+
// `_classDescriptor = { value: _classThis }` with `name: _classThis.name`.
|
|
346
|
+
if (!ts.isBinaryExpression(descriptorIn) || descriptorIn.operatorToken.kind !== ts.SyntaxKind.EqualsToken)
|
|
347
|
+
return null;
|
|
348
|
+
const assigned = contextProps(descriptorIn.right);
|
|
349
|
+
if (assigned?.length !== 1 || assigned[0][0] !== "value" || !ts.isIdentifier(assigned[0][1]))
|
|
350
|
+
return null;
|
|
351
|
+
if (!ts.isPropertyAccessExpression(name) || name.name.text !== "name" || text(name.expression) !== text(assigned[0][1]))
|
|
352
|
+
return null;
|
|
353
|
+
return ["__pxDecorateClass", `__pxDecorateClass(${text(descriptorIn)}, ${decorators.text}, ${metadata.text}, ${extras.text})`];
|
|
354
|
+
}
|
|
355
|
+
if (keys !== "kind,name,static,private,access,metadata" || !isNull(descriptorIn))
|
|
356
|
+
return null;
|
|
357
|
+
const name = value("name");
|
|
358
|
+
const isStatic = value("static");
|
|
359
|
+
if (!ts.isStringLiteral(name) || value("private").kind !== ts.SyntaxKind.FalseKeyword)
|
|
360
|
+
return null;
|
|
361
|
+
if (isStatic.kind !== ts.SyntaxKind.TrueKeyword && isStatic.kind !== ts.SyntaxKind.FalseKeyword)
|
|
362
|
+
return null;
|
|
363
|
+
const literal = JSON.stringify(name.text);
|
|
364
|
+
if (text(name) !== literal)
|
|
365
|
+
return null;
|
|
366
|
+
if (kind.text === "field") {
|
|
367
|
+
if (!isNull(ctor) || !ts.isIdentifier(initializers) || text(value("access")) !== accessCode(name.text, true))
|
|
368
|
+
return null;
|
|
369
|
+
return ["__pxDecorateField", `__pxDecorateField(${decorators.text}, ${literal}, ${text(isStatic)}, ${metadata.text}, ${initializers.text}, ${extras.text})`];
|
|
370
|
+
}
|
|
371
|
+
if (kind.text === "method") {
|
|
372
|
+
if (ctor.kind !== ts.SyntaxKind.ThisKeyword || !isNull(initializers) || text(value("access")) !== accessCode(name.text, false))
|
|
373
|
+
return null;
|
|
374
|
+
return ["__pxDecorateMethod", `__pxDecorateMethod(this, ${decorators.text}, ${literal}, ${text(isStatic)}, ${metadata.text}, ${extras.text})`];
|
|
375
|
+
}
|
|
376
|
+
return null;
|
|
377
|
+
}
|
|
378
|
+
// Edits that turn the calls of `source` into compact ones, and the helpers they use.
|
|
379
|
+
function compactEdits(source, code) {
|
|
380
|
+
const edits = [];
|
|
381
|
+
const names = new Set();
|
|
382
|
+
const text = (node) => code.slice(node.getStart(source), node.getEnd());
|
|
383
|
+
const replace = (node, helper, replacement) => {
|
|
384
|
+
const start = node.getStart(source);
|
|
385
|
+
names.add(helper);
|
|
386
|
+
edits.push({ start, end: node.getEnd(), text: replacement + newlines(code.slice(start, node.getEnd())) });
|
|
387
|
+
};
|
|
388
|
+
const visit = (node) => {
|
|
389
|
+
if (ts.isCallExpression(node) && ts.isIdentifier(node.expression) && node.expression.text === "__esDecorate" && node.arguments.length === 6) {
|
|
390
|
+
const compact = compactCall(node, text);
|
|
391
|
+
if (compact !== null) {
|
|
392
|
+
replace(node, compact[0], compact[1]);
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
else if (ts.isConditionalExpression(node)) {
|
|
397
|
+
const match = METADATA_INIT.exec(text(node));
|
|
398
|
+
if (match !== null) {
|
|
399
|
+
// The base class group is absent from the match of a class with no `extends`.
|
|
400
|
+
const base = match[1];
|
|
401
|
+
replace(node, "__pxMeta", base === undefined ? "__pxMeta()" : `__pxMeta(${base})`);
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
else if (ts.isIfStatement(node)) {
|
|
406
|
+
const match = METADATA_SET.exec(text(node));
|
|
407
|
+
if (match !== null) {
|
|
408
|
+
replace(node, "__pxSetMeta", `__pxSetMeta(${match[2]}, ${match[1]});`);
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
ts.forEachChild(node, visit);
|
|
413
|
+
};
|
|
414
|
+
visit(source);
|
|
415
|
+
return { edits, names };
|
|
416
|
+
}
|
|
417
|
+
/** The source of the virtual module: every helper TypeScript's decorator lowering calls, and PraxisJS's own. */
|
|
418
|
+
export function helpersModule() {
|
|
419
|
+
const lines = [...typescriptHelpers()].map(([name, fn]) => `export var ${name} = ${fn};`);
|
|
420
|
+
return `${lines.join("\n")}\n${PX_FIELD_HELPER}\n${PX_DECORATE_HELPER}\nexport { ${[...PX_HELPER_NAMES, ...PX_DECORATE_NAMES].join(", ")} };\n`;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Replaces the helper definitions of `code` that the virtual module has with one import of them,
|
|
424
|
+
* or returns null when there is none. Every line stays where it was, so a source map of `code`
|
|
425
|
+
* still fits the result.
|
|
426
|
+
*/
|
|
427
|
+
export function shareHelpers(code, fileName, kind = ts.ScriptKind.JSX) {
|
|
428
|
+
const known = typescriptHelpers();
|
|
429
|
+
const names = [];
|
|
430
|
+
const edits = [];
|
|
431
|
+
if (code.startsWith(PX_FIELD_HELPER)) {
|
|
432
|
+
names.push(...PX_HELPER_NAMES);
|
|
433
|
+
edits.push({ start: 0, end: PX_FIELD_HELPER.length, text: "" });
|
|
434
|
+
}
|
|
435
|
+
const source = ts.createSourceFile(fileName, code, ts.ScriptTarget.Latest, true, kind);
|
|
436
|
+
for (const helper of tsHelpers(code, source)) {
|
|
437
|
+
if (known.get(helper.name) !== helper.fn)
|
|
438
|
+
continue;
|
|
439
|
+
names.push(helper.name);
|
|
440
|
+
edits.push({ start: helper.start, end: helper.end, text: newlines(code.slice(helper.start, helper.end)) });
|
|
441
|
+
}
|
|
442
|
+
if (names.length === 0)
|
|
443
|
+
return null;
|
|
444
|
+
// The compact calls stand in for `__esDecorate`, so only a module that imports it gets them.
|
|
445
|
+
if (names.includes("__esDecorate")) {
|
|
446
|
+
const compact = compactEdits(source, code);
|
|
447
|
+
edits.push(...compact.edits);
|
|
448
|
+
names.push(...compact.names);
|
|
449
|
+
}
|
|
450
|
+
edits[0].text = `import { ${names.join(", ")} } from "${HELPERS_ID}";${edits[0].text}`;
|
|
451
|
+
let result = code;
|
|
452
|
+
for (const edit of edits.sort((a, b) => b.start - a.start))
|
|
453
|
+
result = result.slice(0, edit.start) + edit.text + result.slice(edit.end);
|
|
454
|
+
return result;
|
|
455
|
+
}
|
|
43
456
|
// oxc doesn't lower TC39 (non-legacy) decorators yet — `@Decorator()`
|
|
44
457
|
// syntax passes through unchanged and no JS runtime executes it directly:
|
|
45
458
|
// https://github.com/oxc-project/oxc/issues/9170
|
|
@@ -61,30 +474,38 @@ export function decoratorLoweringPlugin() {
|
|
|
61
474
|
// below never even sees it, and the field silently ends up `undefined` at
|
|
62
475
|
// runtime with no build-time error.
|
|
63
476
|
enforce: "pre",
|
|
477
|
+
resolveId(id) {
|
|
478
|
+
return id === HELPERS_ID ? RESOLVED_HELPERS_ID : null;
|
|
479
|
+
},
|
|
480
|
+
load(id) {
|
|
481
|
+
return id === RESOLVED_HELPERS_ID ? helpersModule() : null;
|
|
482
|
+
},
|
|
64
483
|
transform(code, id) {
|
|
65
|
-
if (!JS_LIKE_FILE.test(id)
|
|
484
|
+
if (!JS_LIKE_FILE.test(id))
|
|
66
485
|
return null;
|
|
67
486
|
const fileName = cleanFileName(id);
|
|
68
|
-
if (!hasRealDecorator(code, fileName))
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
});
|
|
487
|
+
if (!code.includes("@") || !hasRealDecorator(code, fileName)) {
|
|
488
|
+
// A file of a library built with tsc may hold the same helpers. Only an ES module can take
|
|
489
|
+
// an import.
|
|
490
|
+
if (!code.includes("(this && this.__"))
|
|
491
|
+
return null;
|
|
492
|
+
const kind = scriptKindFor(fileName);
|
|
493
|
+
if (!ts.isExternalModule(ts.createSourceFile(fileName, code, ts.ScriptTarget.Latest, false, kind)))
|
|
494
|
+
return null;
|
|
495
|
+
const shared = shareHelpers(code, fileName, kind);
|
|
496
|
+
return shared === null ? null : { code: shared, map: null };
|
|
497
|
+
}
|
|
498
|
+
const { outputText, sourceMapText, diagnostics } = lowerDecorators(code, fileName);
|
|
81
499
|
const errors = diagnostics?.filter((d) => d.category === ts.DiagnosticCategory.Error) ?? [];
|
|
82
500
|
if (errors.length > 0) {
|
|
83
501
|
throw new Error(`[praxisjs:decorators] ${fileName}:\n${formatDiagnostics(errors)}`);
|
|
84
502
|
}
|
|
503
|
+
const claimed = claimFields(outputText, fileName);
|
|
504
|
+
const map = sourceMapText ? JSON.parse(sourceMapText) : null;
|
|
505
|
+
const output = claimed ?? outputText;
|
|
85
506
|
return {
|
|
86
|
-
code:
|
|
87
|
-
map:
|
|
507
|
+
code: shareHelpers(output, fileName) ?? output,
|
|
508
|
+
map: claimed === null || map === null ? map : { ...map, mappings: ";".repeat(PX_FIELD_HELPER_LINES) + map.mappings },
|
|
88
509
|
};
|
|
89
510
|
},
|
|
90
511
|
};
|
package/dist/decorators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
|
package/dist/hmr.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Plugin } from "vite";
|
|
2
|
+
/** Appends the hot replacement code to a module; null when it declares no top-level class. */
|
|
3
|
+
export declare function transformHmr(code: string, id: string): string | null;
|
|
4
|
+
export declare function hmrPlugin(): Plugin;
|
|
5
|
+
//# sourceMappingURL=hmr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmr.d.ts","sourceRoot":"","sources":["../src/hmr.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAsEnC,8FAA8F;AAC9F,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAcpE;AAED,wBAAgB,SAAS,IAAI,MAAM,CAkBlC"}
|