@liteforge/runtime 0.1.0 → 0.1.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/dist/app.d.ts.map +1 -1
- package/dist/app.js +31 -0
- package/dist/app.js.map +1 -1
- package/dist/hmr.d.ts +68 -0
- package/dist/hmr.d.ts.map +1 -0
- package/dist/hmr.js +100 -0
- package/dist/hmr.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EAIZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EAIZ,MAAM,YAAY,CAAC;AAqBpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAuRvE"}
|
package/dist/app.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { initAppContext, clearContext, use } from './context.js';
|
|
8
8
|
import { isComponentFactory } from './component.js';
|
|
9
|
+
import { getHMRHandler } from './hmr.js';
|
|
9
10
|
// ============================================================================
|
|
10
11
|
// createApp Implementation
|
|
11
12
|
// ============================================================================
|
|
@@ -188,6 +189,36 @@ export async function createApp(config) {
|
|
|
188
189
|
console.log('='.repeat(50));
|
|
189
190
|
}
|
|
190
191
|
// ========================================
|
|
192
|
+
// 8b. HMR support
|
|
193
|
+
// ========================================
|
|
194
|
+
const hmrHandler = getHMRHandler();
|
|
195
|
+
if (hmrHandler) {
|
|
196
|
+
// Set up full app re-render for HMR fallback
|
|
197
|
+
hmrHandler.fullRerender = () => {
|
|
198
|
+
console.log('[LiteForge HMR] Full app re-render');
|
|
199
|
+
// Unmount current root
|
|
200
|
+
if (rootInstance) {
|
|
201
|
+
rootInstance.unmount();
|
|
202
|
+
rootInstance = null;
|
|
203
|
+
}
|
|
204
|
+
if (rootNode && rootNode.parentNode) {
|
|
205
|
+
rootNode.parentNode.removeChild(rootNode);
|
|
206
|
+
rootNode = null;
|
|
207
|
+
}
|
|
208
|
+
// Re-mount root component
|
|
209
|
+
if (targetElement) {
|
|
210
|
+
if (isComponentFactory(config.root)) {
|
|
211
|
+
rootInstance = config.root({});
|
|
212
|
+
rootInstance.mount(targetElement);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
rootNode = config.root();
|
|
216
|
+
targetElement.appendChild(rootNode);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
// ========================================
|
|
191
222
|
// 9. onReady callback
|
|
192
223
|
// ========================================
|
|
193
224
|
if (config.onReady) {
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/hmr.d.ts
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LiteForge HMR Runtime Support
|
|
3
|
+
*
|
|
4
|
+
* Provides Hot Module Replacement support for LiteForge components.
|
|
5
|
+
* This module sets up the global __LITEFORGE_HMR__ handler that the
|
|
6
|
+
* vite-plugin's injected code communicates with.
|
|
7
|
+
*
|
|
8
|
+
* Strategy:
|
|
9
|
+
* - Track mounted component instances by module ID
|
|
10
|
+
* - When a module updates, re-render affected components
|
|
11
|
+
* - Signals and stores survive because they're in separate modules
|
|
12
|
+
*/
|
|
13
|
+
declare global {
|
|
14
|
+
interface ImportMeta {
|
|
15
|
+
env?: {
|
|
16
|
+
DEV?: boolean;
|
|
17
|
+
PROD?: boolean;
|
|
18
|
+
MODE?: string;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export interface HMRInstance {
|
|
23
|
+
/** The module ID this instance came from */
|
|
24
|
+
__hmrId: string;
|
|
25
|
+
/** The root DOM element */
|
|
26
|
+
__el: Node;
|
|
27
|
+
/** Current props */
|
|
28
|
+
__props: Record<string, unknown>;
|
|
29
|
+
/** Setup result (signals, etc.) */
|
|
30
|
+
__setup: Record<string, unknown>;
|
|
31
|
+
/** Loaded data */
|
|
32
|
+
__data: Record<string, unknown>;
|
|
33
|
+
/** The render function */
|
|
34
|
+
__renderFn: (args: {
|
|
35
|
+
props: Record<string, unknown>;
|
|
36
|
+
setup: Record<string, unknown>;
|
|
37
|
+
data: Record<string, unknown>;
|
|
38
|
+
}) => Node;
|
|
39
|
+
/** Update handler */
|
|
40
|
+
__hmrUpdate: (newModule: Record<string, unknown>) => void;
|
|
41
|
+
}
|
|
42
|
+
export interface HMRHandler {
|
|
43
|
+
/** Map of module URL → mounted instances */
|
|
44
|
+
registry: Map<string, Set<HMRInstance>>;
|
|
45
|
+
/** Register a component instance */
|
|
46
|
+
register: (moduleUrl: string, instance: HMRInstance) => void;
|
|
47
|
+
/** Unregister a component instance */
|
|
48
|
+
unregister: (moduleUrl: string, instance: HMRInstance) => void;
|
|
49
|
+
/** Handle a module update */
|
|
50
|
+
update: (moduleUrl: string, newModule: Record<string, unknown> | null) => void;
|
|
51
|
+
/** Full app re-render function (set by createApp) */
|
|
52
|
+
fullRerender: (() => void) | null;
|
|
53
|
+
}
|
|
54
|
+
declare global {
|
|
55
|
+
interface Window {
|
|
56
|
+
__LITEFORGE_HMR__?: HMRHandler;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Initialize the HMR handler.
|
|
61
|
+
* Called automatically when this module loads in development.
|
|
62
|
+
*/
|
|
63
|
+
export declare function initHMR(): HMRHandler;
|
|
64
|
+
/**
|
|
65
|
+
* Get the HMR handler (creates if needed)
|
|
66
|
+
*/
|
|
67
|
+
export declare function getHMRHandler(): HMRHandler | null;
|
|
68
|
+
//# sourceMappingURL=hmr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmr.d.ts","sourceRoot":"","sources":["../src/hmr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,UAAU;QAClB,GAAG,CAAC,EAAE;YACJ,GAAG,CAAC,EAAE,OAAO,CAAC;YACd,IAAI,CAAC,EAAE,OAAO,CAAC;YACf,IAAI,CAAC,EAAE,MAAM,CAAC;SACf,CAAC;KACH;CACF;AAMD,MAAM,WAAW,WAAW;IAC1B,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,0BAA0B;IAC1B,UAAU,EAAE,CAAC,IAAI,EAAE;QACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/B,KAAK,IAAI,CAAC;IACX,qBAAqB;IACrB,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC3D;AAED,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IACxC,oCAAoC;IACpC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7D,sCAAsC;IACtC,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;IAC/D,6BAA6B;IAC7B,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/E,qDAAqD;IACrD,YAAY,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;CACnC;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,iBAAiB,CAAC,EAAE,UAAU,CAAC;KAChC;CACF;AAED;;;GAGG;AACH,wBAAgB,OAAO,IAAI,UAAU,CAiFpC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,GAAG,IAAI,CAGjD"}
|
package/dist/hmr.js
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LiteForge HMR Runtime Support
|
|
3
|
+
*
|
|
4
|
+
* Provides Hot Module Replacement support for LiteForge components.
|
|
5
|
+
* This module sets up the global __LITEFORGE_HMR__ handler that the
|
|
6
|
+
* vite-plugin's injected code communicates with.
|
|
7
|
+
*
|
|
8
|
+
* Strategy:
|
|
9
|
+
* - Track mounted component instances by module ID
|
|
10
|
+
* - When a module updates, re-render affected components
|
|
11
|
+
* - Signals and stores survive because they're in separate modules
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Initialize the HMR handler.
|
|
15
|
+
* Called automatically when this module loads in development.
|
|
16
|
+
*/
|
|
17
|
+
export function initHMR() {
|
|
18
|
+
if (typeof window === 'undefined') {
|
|
19
|
+
// SSR environment - return dummy handler
|
|
20
|
+
return {
|
|
21
|
+
registry: new Map(),
|
|
22
|
+
register: () => { },
|
|
23
|
+
unregister: () => { },
|
|
24
|
+
update: () => { },
|
|
25
|
+
fullRerender: null,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
// Return existing handler if already initialized
|
|
29
|
+
if (window.__LITEFORGE_HMR__) {
|
|
30
|
+
return window.__LITEFORGE_HMR__;
|
|
31
|
+
}
|
|
32
|
+
const handler = {
|
|
33
|
+
registry: new Map(),
|
|
34
|
+
register(moduleUrl, instance) {
|
|
35
|
+
if (!this.registry.has(moduleUrl)) {
|
|
36
|
+
this.registry.set(moduleUrl, new Set());
|
|
37
|
+
}
|
|
38
|
+
this.registry.get(moduleUrl).add(instance);
|
|
39
|
+
if (import.meta.env?.DEV) {
|
|
40
|
+
console.log('[LiteForge HMR] Registered instance for:', moduleUrl);
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
unregister(moduleUrl, instance) {
|
|
44
|
+
const instances = this.registry.get(moduleUrl);
|
|
45
|
+
if (instances) {
|
|
46
|
+
instances.delete(instance);
|
|
47
|
+
if (instances.size === 0) {
|
|
48
|
+
this.registry.delete(moduleUrl);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
update(moduleUrl, newModule) {
|
|
53
|
+
console.log('[LiteForge HMR] Module updated:', moduleUrl);
|
|
54
|
+
if (!newModule) {
|
|
55
|
+
console.warn('[LiteForge HMR] No new module received, triggering full reload');
|
|
56
|
+
window.location.reload();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const instances = this.registry.get(moduleUrl);
|
|
60
|
+
if (instances && instances.size > 0) {
|
|
61
|
+
console.log('[LiteForge HMR] Updating', instances.size, 'instance(s)');
|
|
62
|
+
for (const instance of instances) {
|
|
63
|
+
try {
|
|
64
|
+
instance.__hmrUpdate(newModule);
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
console.error('[LiteForge HMR] Error updating instance:', err);
|
|
68
|
+
// Fall back to full reload on error
|
|
69
|
+
window.location.reload();
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// No tracked instances for this module
|
|
76
|
+
// Level 1 HMR: just reload the page
|
|
77
|
+
// Component-level HMR (Level 2) would need instance registration
|
|
78
|
+
console.log('[LiteForge HMR] No instances registered, triggering page reload');
|
|
79
|
+
window.location.reload();
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
fullRerender: null,
|
|
83
|
+
};
|
|
84
|
+
window.__LITEFORGE_HMR__ = handler;
|
|
85
|
+
console.log('[LiteForge HMR] Handler initialized');
|
|
86
|
+
return handler;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get the HMR handler (creates if needed)
|
|
90
|
+
*/
|
|
91
|
+
export function getHMRHandler() {
|
|
92
|
+
if (typeof window === 'undefined')
|
|
93
|
+
return null;
|
|
94
|
+
return window.__LITEFORGE_HMR__ ?? initHMR();
|
|
95
|
+
}
|
|
96
|
+
// Auto-initialize in development
|
|
97
|
+
if (typeof window !== 'undefined' && import.meta.env?.DEV) {
|
|
98
|
+
initHMR();
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=hmr.js.map
|
package/dist/hmr.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmr.js","sourceRoot":"","sources":["../src/hmr.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,4 +12,6 @@ export { Show, For, Switch, Match, Dynamic } from './control-flow.js';
|
|
|
12
12
|
export type { ShowConfig, ForConfig, SwitchConfig, MatchConfig, MatchCase as MatchCaseInternal, DynamicConfig } from './control-flow.js';
|
|
13
13
|
export { h, Fragment } from './h.js';
|
|
14
14
|
export { _template, _insert, _setProp, _addEventListener } from './template.js';
|
|
15
|
+
export { initHMR, getHMRHandler } from './hmr.js';
|
|
16
|
+
export type { HMRInstance, HMRHandler } from './hmr.js';
|
|
15
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EAEV,QAAQ,EACR,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EAEjB,KAAK,EACL,aAAa,EACb,UAAU,EAEV,SAAS,EACT,QAAQ,EACR,eAAe,EACf,SAAS,EACT,aAAa,EACb,WAAW,EACX,aAAa,EAEb,SAAS,EACT,WAAW,EACX,MAAM,EACN,QAAQ,EACR,UAAU,EAEV,KAAK,EACL,SAAS,EACT,QAAQ,EACR,WAAW,EACX,SAAS,EACT,UAAU,EACV,YAAY,EAEZ,KAAK,EACL,iBAAiB,EACjB,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,EACd,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGrE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACtE,YAAY,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,SAAS,IAAI,iBAAiB,EAC9B,aAAa,EACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGrC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EAEV,QAAQ,EACR,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EAEjB,KAAK,EACL,aAAa,EACb,UAAU,EAEV,SAAS,EACT,QAAQ,EACR,eAAe,EACf,SAAS,EACT,aAAa,EACb,WAAW,EACX,aAAa,EAEb,SAAS,EACT,WAAW,EACX,MAAM,EACN,QAAQ,EACR,UAAU,EAEV,KAAK,EACL,SAAS,EACT,QAAQ,EACR,WAAW,EACX,SAAS,EACT,UAAU,EACV,YAAY,EAEZ,KAAK,EACL,iBAAiB,EACjB,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,EACd,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGrE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACtE,YAAY,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,SAAS,IAAI,iBAAiB,EAC9B,aAAa,EACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGrC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGhF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -17,4 +17,6 @@ export { Show, For, Switch, Match, Dynamic } from './control-flow.js';
|
|
|
17
17
|
export { h, Fragment } from './h.js';
|
|
18
18
|
// Template runtime for compile-time optimizations
|
|
19
19
|
export { _template, _insert, _setProp, _addEventListener } from './template.js';
|
|
20
|
+
// HMR support (auto-initializes in development)
|
|
21
|
+
export { initHMR, getHMRHandler } from './hmr.js';
|
|
20
22
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4CH,UAAU;AACV,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,2BAA2B;AAC3B,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,EACd,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAErE,MAAM;AACN,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,eAAe;AACf,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAUtE,oCAAoC;AACpC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAErC,kDAAkD;AAClD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4CH,UAAU;AACV,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,2BAA2B;AAC3B,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,EACd,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAErE,MAAM;AACN,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,eAAe;AACf,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAUtE,oCAAoC;AACpC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAErC,kDAAkD;AAClD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEhF,gDAAgD;AAChD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
|
package/package.json
CHANGED