@vesk/compiler 0.1.1 → 0.1.14
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/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/server-jsgen.d.ts.map +1 -1
- package/dist/server-jsgen.js +3 -2
- package/dist/server-render.d.ts.map +1 -1
- package/dist/server-render.js +2 -0
- package/dist/ssr-store.d.ts +1 -1
- package/dist/ssr-store.d.ts.map +1 -1
- package/dist/ssr-store.js +3 -0
- package/dist/typecheck.d.ts +2 -0
- package/dist/typecheck.d.ts.map +1 -1
- package/dist/typecheck.js +388 -4
- package/dist/vsk-tsx.d.ts +62 -0
- package/dist/vsk-tsx.d.ts.map +1 -1
- package/dist/vsk-tsx.js +831 -359
- package/package.json +1 -1
- package/dist/package.json +0 -15
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { parse, createBaseParser } from '@vesk/compiler/src/parser';
|
|
|
2
2
|
export { VeskParserPlugin } from '@vesk/compiler/src/vesk-plugin';
|
|
3
3
|
export { generateIR } from '@vesk/compiler/src/ir-generator';
|
|
4
4
|
export { render } from '@vesk/compiler/src/server-codegen';
|
|
5
|
+
export { AMBIENT, RUNTIME_OVERRIDE } from '@vesk/compiler/src/typecheck';
|
|
5
6
|
export { compileClient, compile } from '@vesk/compiler/src/client-codegen';
|
|
6
7
|
export { IRRoot, ComponentIR, StaticNode, TextNode, DynamicBinding, OpaqueDynamicRegion, MapRegion, ComponentCall, Expression, } from '@vesk/compiler/src/ir';
|
|
7
8
|
export type { IRNode } from '@vesk/compiler/src/ir';
|
|
@@ -13,4 +14,6 @@ export type { VeskCors } from '@vesk/compiler/src/types';
|
|
|
13
14
|
export type { VeskRateLimit } from '@vesk/compiler/src/types';
|
|
14
15
|
export { defineConfig, validateConfig, preset, definePlugin } from '@vesk/compiler/src/config';
|
|
15
16
|
export { scanRoutes, scanComponents, collectSources, matchUrl } from '@vesk/compiler/src/router';
|
|
17
|
+
export { compileVskCodegen } from '@vesk/compiler/src/vsk-tsx';
|
|
18
|
+
export type { CodeInfo, CodeMapping, StyleRegion, VskCodegenError, VskCodegenOptions, VskCodegenResult, } from '@vesk/compiler/src/vsk-tsx';
|
|
16
19
|
//# 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,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EACL,MAAM,EACN,WAAW,EACX,UAAU,EACV,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,YAAY,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EACL,MAAM,EACN,WAAW,EACX,UAAU,EACV,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,YAAY,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,YAAY,EACV,QAAQ,EACR,WAAW,EACX,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,9 @@ export { parse, createBaseParser } from '@vesk/compiler/src/parser';
|
|
|
2
2
|
export { VeskParserPlugin } from '@vesk/compiler/src/vesk-plugin';
|
|
3
3
|
export { generateIR } from '@vesk/compiler/src/ir-generator';
|
|
4
4
|
export { render } from '@vesk/compiler/src/server-codegen';
|
|
5
|
+
export { AMBIENT, RUNTIME_OVERRIDE } from '@vesk/compiler/src/typecheck';
|
|
5
6
|
export { compileClient, compile } from '@vesk/compiler/src/client-codegen';
|
|
6
7
|
export { IRRoot, ComponentIR, StaticNode, TextNode, DynamicBinding, OpaqueDynamicRegion, MapRegion, ComponentCall, Expression, } from '@vesk/compiler/src/ir';
|
|
7
8
|
export { defineConfig, validateConfig, preset, definePlugin } from '@vesk/compiler/src/config';
|
|
8
9
|
export { scanRoutes, scanComponents, collectSources, matchUrl } from '@vesk/compiler/src/router';
|
|
10
|
+
export { compileVskCodegen } from '@vesk/compiler/src/vsk-tsx';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-jsgen.d.ts","sourceRoot":"","sources":["../src/server-jsgen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAOzE,OAAO,EAA4E,KAAK,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAU/I,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,GAAE,OAAe,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,MAAM,CA8CjJ;AA4SD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"server-jsgen.d.ts","sourceRoot":"","sources":["../src/server-jsgen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAOzE,OAAO,EAA4E,KAAK,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAU/I,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,GAAE,OAAe,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,MAAM,CA8CjJ;AA4SD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAmD1F;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAwBhG"}
|
package/dist/server-jsgen.js
CHANGED
|
@@ -383,8 +383,9 @@ export function generateFunctionBody(comp, importedNames) {
|
|
|
383
383
|
lines.push(`const __tk = globalThis.__vsk_ssr_token || '';`);
|
|
384
384
|
if (asyncMode) {
|
|
385
385
|
lines.push(`const __pk = __tk ? '__vsk_ssr_promises_' + __tk : '__vsk_ssr_promises';`);
|
|
386
|
+
lines.push(`let __out = [];`);
|
|
386
387
|
lines.push(`for (let __pass = 0; __pass < 3; __pass++) {`);
|
|
387
|
-
lines.push(`
|
|
388
|
+
lines.push(`__out = [];`);
|
|
388
389
|
lines.push(`const __start = (globalThis[__pk] || []).length;`);
|
|
389
390
|
}
|
|
390
391
|
else {
|
|
@@ -407,7 +408,7 @@ export function generateFunctionBody(comp, importedNames) {
|
|
|
407
408
|
lines.push(`globalThis[__pk] = __all.slice(0, __start);`);
|
|
408
409
|
lines.push(`await Promise.allSettled(__ps);`);
|
|
409
410
|
lines.push(`}`);
|
|
410
|
-
lines.push(`return '';`);
|
|
411
|
+
lines.push(`return __out.join('');`);
|
|
411
412
|
}
|
|
412
413
|
else {
|
|
413
414
|
lines.push(`return __out.join('');`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-render.d.ts","sourceRoot":"","sources":["../src/server-render.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAqB,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAcvJ,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAEhG;AA0BD,wBAAgB,MAAM,CACpB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACnC,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAa,EAC3C,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkC1B;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACnC,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAa,EAC3C,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiE9C;
|
|
1
|
+
{"version":3,"file":"server-render.d.ts","sourceRoot":"","sources":["../src/server-render.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAqB,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAcvJ,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAEhG;AA0BD,wBAAgB,MAAM,CACpB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACnC,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAa,EAC3C,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkC1B;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACnC,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAa,EAC3C,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiE9C;AAcD,wBAAsB,GAAG,CACvB,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAO,GAC9G,OAAO,CAAC,SAAS,CAAC,CA8DpB;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACpD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,CAAC,EAAE,kBAAkB,GAAG,IAAI,GACnC,MAAM,EAAE,CAuBV;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACnC,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAa,EAC3C,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAoEjB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACnC,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAa,EAC3C,OAAO,GAAE,eAAoB,GAC5B,cAAc,CAAC,MAAM,CAAC,CAkFxB"}
|
package/dist/server-render.js
CHANGED
|
@@ -148,6 +148,8 @@ function clearSsrCells(token) {
|
|
|
148
148
|
if (!token)
|
|
149
149
|
return;
|
|
150
150
|
delete globalThis[`__vsk_ssr_promises_${token}`];
|
|
151
|
+
delete globalThis[`__vsk_ssr_failures_${token}`];
|
|
152
|
+
delete globalThis.__vsk_ssr_token;
|
|
151
153
|
const cells = globalThis.__vsk_ssr_cells;
|
|
152
154
|
if (!cells || !(cells instanceof Map))
|
|
153
155
|
return;
|
package/dist/ssr-store.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { SsrDataSink } from '@vesk/runtime/src/resource';
|
|
2
2
|
export declare function withSsrStore<T>(fn: () => T): T;
|
|
3
3
|
export declare const ssrSink: SsrDataSink;
|
|
4
4
|
//# sourceMappingURL=ssr-store.d.ts.map
|
package/dist/ssr-store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssr-store.d.ts","sourceRoot":"","sources":["../src/ssr-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ssr-store.d.ts","sourceRoot":"","sources":["../src/ssr-store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAI9D,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAI9C;AAED,eAAO,MAAM,OAAO,EAAE,WAgBrB,CAAC"}
|
package/dist/ssr-store.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
// Import the type from its defining module (not the barrel): on a fresh
|
|
3
|
+
// checkout the compiler typechecks BEFORE @vesk/runtime's dist exists, and
|
|
4
|
+
// resolving types through the barrel then fails.
|
|
2
5
|
import { setSsrSink } from '@vesk/runtime/src/index-server';
|
|
3
6
|
const storage = new AsyncLocalStorage();
|
|
4
7
|
export function withSsrStore(fn) {
|
package/dist/typecheck.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export interface TypecheckError {
|
|
|
9
9
|
code: string;
|
|
10
10
|
message: string;
|
|
11
11
|
}
|
|
12
|
+
export declare const AMBIENT = "\ndeclare namespace JSX {\n type VeskEventHandler<E extends Event = Event> = (event: E) => void;\n interface VeskCommonAttributes {\n key?: string | number;\n class?: string;\n id?: string;\n style?: string;\n title?: string;\n hidden?: boolean | string;\n lang?: string;\n dir?: 'ltr' | 'rtl' | 'auto';\n tabIndex?: number;\n role?: string;\n }\n interface VeskEventAttributes {\n onClick?: VeskEventHandler<MouseEvent>;\n onDblClick?: VeskEventHandler<MouseEvent>;\n onMouseDown?: VeskEventHandler<MouseEvent>;\n onMouseUp?: VeskEventHandler<MouseEvent>;\n onMouseEnter?: VeskEventHandler<MouseEvent>;\n onMouseLeave?: VeskEventHandler<MouseEvent>;\n onMouseMove?: VeskEventHandler<MouseEvent>;\n onKeyDown?: VeskEventHandler<KeyboardEvent>;\n onKeyUp?: VeskEventHandler<KeyboardEvent>;\n onFocus?: VeskEventHandler<FocusEvent>;\n onBlur?: VeskEventHandler<FocusEvent>;\n onInput?: VeskEventHandler<InputEvent>;\n onChange?: VeskEventHandler<Event>;\n onSubmit?: VeskEventHandler<SubmitEvent>;\n onScroll?: VeskEventHandler<UIEvent>;\n onWheel?: VeskEventHandler<WheelEvent>;\n // Lowercase aliases \u2014 HTML attribute names are case-insensitive and real\n // code writes onclick=/oninput=. Keep in sync with the camelCase members.\n onclick?: VeskEventHandler<MouseEvent>;\n ondblclick?: VeskEventHandler<MouseEvent>;\n onmousedown?: VeskEventHandler<MouseEvent>;\n onmouseup?: VeskEventHandler<MouseEvent>;\n onmouseenter?: VeskEventHandler<MouseEvent>;\n onmouseleave?: VeskEventHandler<MouseEvent>;\n onmousemove?: VeskEventHandler<MouseEvent>;\n onkeydown?: VeskEventHandler<KeyboardEvent>;\n onkeyup?: VeskEventHandler<KeyboardEvent>;\n onfocus?: VeskEventHandler<FocusEvent>;\n onblur?: VeskEventHandler<FocusEvent>;\n oninput?: VeskEventHandler<InputEvent>;\n onchange?: VeskEventHandler<Event>;\n onsubmit?: VeskEventHandler<SubmitEvent>;\n }\n interface VeskGlobalAttributes extends VeskCommonAttributes, VeskEventAttributes {\n children?: unknown;\n }\n interface VeskAnchorAttributes extends VeskGlobalAttributes {\n href?: string;\n target?: string;\n rel?: string;\n download?: string | boolean;\n type?: string;\n hreflang?: string;\n }\n interface VeskMediaAttributes extends VeskGlobalAttributes {\n src?: string;\n width?: string | number;\n height?: string | number;\n }\n interface VeskInputAttributes extends VeskGlobalAttributes {\n type?: string;\n name?: string;\n value?: string | number | readonly string[];\n placeholder?: string;\n checked?: boolean | string;\n disabled?: boolean | string;\n readOnly?: boolean | string;\n required?: boolean | string;\n min?: string | number;\n max?: string | number;\n step?: string | number;\n pattern?: string;\n autoComplete?: string;\n autoFocus?: boolean | string;\n multiple?: boolean | string;\n accept?: string;\n size?: number;\n list?: string;\n }\n interface IntrinsicElements {\n html?: VeskGlobalAttributes & { manifest?: string };\n head?: VeskGlobalAttributes;\n body?: VeskGlobalAttributes;\n div?: VeskGlobalAttributes;\n span?: VeskGlobalAttributes;\n p?: VeskGlobalAttributes;\n h1?: VeskGlobalAttributes;\n h2?: VeskGlobalAttributes;\n h3?: VeskGlobalAttributes;\n h4?: VeskGlobalAttributes;\n h5?: VeskGlobalAttributes;\n h6?: VeskGlobalAttributes;\n a?: VeskAnchorAttributes;\n nav?: VeskGlobalAttributes;\n header?: VeskGlobalAttributes;\n footer?: VeskGlobalAttributes;\n main?: VeskGlobalAttributes;\n section?: VeskGlobalAttributes;\n article?: VeskGlobalAttributes;\n aside?: VeskGlobalAttributes;\n button?: VeskGlobalAttributes & {\n type?: 'button' | 'submit' | 'reset';\n disabled?: boolean | string;\n name?: string;\n value?: string | number;\n };\n form?: VeskGlobalAttributes & {\n action?: string;\n method?: 'get' | 'post';\n target?: string;\n encType?: string;\n noValidate?: boolean | string;\n name?: string;\n autoComplete?: string;\n };\n input?: VeskInputAttributes;\n textarea?: VeskGlobalAttributes & {\n rows?: number;\n cols?: number;\n placeholder?: string;\n value?: string | number;\n disabled?: boolean | string;\n readOnly?: boolean | string;\n required?: boolean | string;\n name?: string;\n };\n select?: VeskGlobalAttributes & {\n name?: string;\n value?: string | number | readonly string[];\n disabled?: boolean | string;\n required?: boolean | string;\n multiple?: boolean | string;\n size?: number;\n autoComplete?: string;\n };\n option?: VeskGlobalAttributes & {\n value?: string | number;\n selected?: boolean | string;\n disabled?: boolean | string;\n label?: string;\n };\n optgroup?: VeskGlobalAttributes & { label?: string; disabled?: boolean | string };\n label?: VeskGlobalAttributes & { htmlFor?: string };\n fieldset?: VeskGlobalAttributes & { disabled?: boolean | string; name?: string; form?: string };\n legend?: VeskGlobalAttributes;\n datalist?: VeskGlobalAttributes;\n img?: VeskGlobalAttributes & {\n src?: string;\n alt?: string;\n width?: string | number;\n height?: string | number;\n srcSet?: string;\n sizes?: string;\n loading?: 'eager' | 'lazy';\n decoding?: 'sync' | 'async' | 'auto';\n };\n picture?: VeskGlobalAttributes;\n source?: VeskGlobalAttributes & { src?: string; srcSet?: string; sizes?: string; media?: string; type?: string };\n video?: VeskMediaAttributes & {\n controls?: boolean | string;\n autoPlay?: boolean | string;\n loop?: boolean | string;\n muted?: boolean | string;\n preload?: 'none' | 'metadata' | 'auto' | '';\n poster?: string;\n playsInline?: boolean | string;\n };\n audio?: VeskGlobalAttributes & {\n src?: string;\n controls?: boolean | string;\n autoPlay?: boolean | string;\n loop?: boolean | string;\n muted?: boolean | string;\n preload?: 'none' | 'metadata' | 'auto' | '';\n };\n track?: VeskGlobalAttributes & {\n src?: string;\n kind?: string;\n srclang?: string;\n label?: string;\n default?: boolean | string;\n };\n canvas?: VeskGlobalAttributes & { width?: number; height?: number };\n iframe?: VeskGlobalAttributes & {\n src?: string;\n srcDoc?: string;\n width?: string | number;\n height?: string | number;\n allow?: string;\n loading?: 'eager' | 'lazy';\n sandbox?: string;\n allowFullScreen?: boolean | string;\n referrerPolicy?: string;\n };\n embed?: VeskGlobalAttributes & { src?: string; type?: string; width?: string | number; height?: string | number };\n object?: VeskGlobalAttributes & { data?: string; type?: string; name?: string; width?: string | number; height?: string | number };\n table?: VeskGlobalAttributes;\n caption?: VeskGlobalAttributes;\n thead?: VeskGlobalAttributes;\n tbody?: VeskGlobalAttributes;\n tfoot?: VeskGlobalAttributes;\n tr?: VeskGlobalAttributes;\n th?: VeskGlobalAttributes & { colSpan?: number; rowSpan?: number; scope?: string; headers?: string };\n td?: VeskGlobalAttributes & { colSpan?: number; rowSpan?: number; headers?: string };\n col?: VeskGlobalAttributes & { span?: number };\n colgroup?: VeskGlobalAttributes & { span?: number };\n ul?: VeskGlobalAttributes;\n ol?: VeskGlobalAttributes & { start?: number; reversed?: boolean | string; type?: string };\n li?: VeskGlobalAttributes & { value?: number };\n dl?: VeskGlobalAttributes;\n dt?: VeskGlobalAttributes;\n dd?: VeskGlobalAttributes;\n br?: VeskGlobalAttributes;\n hr?: VeskGlobalAttributes;\n pre?: VeskGlobalAttributes;\n code?: VeskGlobalAttributes;\n blockquote?: VeskGlobalAttributes & { cite?: string };\n q?: VeskGlobalAttributes & { cite?: string };\n strong?: VeskGlobalAttributes;\n em?: VeskGlobalAttributes;\n small?: VeskGlobalAttributes;\n s?: VeskGlobalAttributes;\n cite?: VeskGlobalAttributes;\n dfn?: VeskGlobalAttributes;\n abbr?: VeskGlobalAttributes & { title?: string };\n time?: VeskGlobalAttributes & { dateTime?: string };\n data?: VeskGlobalAttributes & { value?: string | number };\n mark?: VeskGlobalAttributes;\n del?: VeskGlobalAttributes & { cite?: string; dateTime?: string };\n ins?: VeskGlobalAttributes & { cite?: string; dateTime?: string };\n sub?: VeskGlobalAttributes;\n sup?: VeskGlobalAttributes;\n u?: VeskGlobalAttributes;\n kbd?: VeskGlobalAttributes;\n samp?: VeskGlobalAttributes;\n var?: VeskGlobalAttributes;\n figure?: VeskGlobalAttributes;\n figcaption?: VeskGlobalAttributes;\n details?: VeskGlobalAttributes & { open?: boolean | string };\n summary?: VeskGlobalAttributes;\n dialog?: VeskGlobalAttributes & { open?: boolean | string };\n menu?: VeskGlobalAttributes;\n address?: VeskGlobalAttributes;\n b?: VeskGlobalAttributes;\n i?: VeskGlobalAttributes;\n ruby?: VeskGlobalAttributes;\n rt?: VeskGlobalAttributes;\n rp?: VeskGlobalAttributes;\n bdi?: VeskGlobalAttributes;\n bdo?: VeskGlobalAttributes;\n wbr?: VeskGlobalAttributes;\n area?: VeskGlobalAttributes & {\n coords?: string;\n shape?: string;\n href?: string;\n target?: string;\n alt?: string;\n };\n map?: VeskGlobalAttributes & { name?: string };\n noscript?: VeskGlobalAttributes;\n template?: VeskGlobalAttributes;\n slot?: VeskGlobalAttributes & { name?: string };\n meta?: VeskGlobalAttributes & { name?: string; content?: string; charSet?: string; httpEquiv?: string };\n title?: VeskGlobalAttributes;\n base?: VeskGlobalAttributes & { href?: string; target?: string };\n link?: VeskGlobalAttributes & {\n rel?: string;\n href?: string;\n sizes?: string;\n media?: string;\n as?: string;\n crossOrigin?: string;\n integrity?: string;\n };\n style?: VeskGlobalAttributes & { media?: string };\n script?: VeskGlobalAttributes & {\n src?: string;\n async?: boolean | string;\n defer?: boolean | string;\n type?: string;\n crossOrigin?: string;\n integrity?: string;\n nonce?: string;\n noModule?: boolean | string;\n };\n svg?: VeskGlobalAttributes & {\n viewBox?: string;\n xmlns?: string;\n width?: string | number;\n height?: string | number;\n fill?: string;\n stroke?: string;\n strokeWidth?: string | number;\n };\n g?: VeskGlobalAttributes & { transform?: string; fill?: string; stroke?: string; strokeWidth?: string | number };\n path?: VeskGlobalAttributes & {\n d?: string;\n fill?: string;\n stroke?: string;\n strokeWidth?: string | number;\n fillRule?: string;\n clipRule?: string;\n };\n circle?: VeskGlobalAttributes & {\n cx?: string | number;\n cy?: string | number;\n r?: string | number;\n fill?: string;\n stroke?: string;\n strokeWidth?: string | number;\n };\n ellipse?: VeskGlobalAttributes & {\n cx?: string | number;\n cy?: string | number;\n rx?: string | number;\n ry?: string | number;\n fill?: string;\n };\n rect?: VeskGlobalAttributes & {\n x?: string | number;\n y?: string | number;\n width?: string | number;\n height?: string | number;\n rx?: string | number;\n ry?: string | number;\n fill?: string;\n };\n line?: VeskGlobalAttributes & {\n x1?: string | number;\n y1?: string | number;\n x2?: string | number;\n y2?: string | number;\n stroke?: string;\n strokeWidth?: string | number;\n };\n polyline?: VeskGlobalAttributes & { points?: string; fill?: string; stroke?: string };\n polygon?: VeskGlobalAttributes & { points?: string; fill?: string; stroke?: string };\n text?: VeskGlobalAttributes & { x?: string | number; y?: string | number; fill?: string; fontSize?: string | number };\n defs?: VeskGlobalAttributes;\n linearGradient?: VeskGlobalAttributes;\n radialGradient?: VeskGlobalAttributes;\n stop?: VeskGlobalAttributes & { offset?: string | number; stopColor?: string; stopOpacity?: string | number };\n\n // Unknown/custom tags stay permissive \u2014 components and web components\n // resolve through the index signature, known tags get the typed members.\n [elemName: string]: unknown;\n }\n}\ndeclare const Head: (props: { children?: unknown }) => unknown;\ndeclare class Cell<T> {\n get(): T;\n set(value: T): void;\n peek(): T;\n update(fn: (current: T) => T): boolean;\n unsubscribe(effect: unknown): void;\n}\ndeclare function track<T>(initialValue: T): Cell<T>;\ndeclare function derived<T>(fn: () => T): Cell<T>;\ndeclare function effect(fn: () => void): unknown;\ndeclare function untrack<T>(fn: () => T): T;\ndeclare function peek<T>(fn: () => T): T;\ndeclare function tick(): Promise<void>;\ndeclare function flushSync(fn: () => void): void;\ndeclare function on_destroy(fn: () => void): void;\ndeclare function createContext<T>(defaultValue?: T): { id: symbol; defaultValue: T | undefined };\n// useFetch returns a THENABLE resource, not the data itself. In async\n// components you must `await` it before reading/iterating the payload;\n// passing `into: <tracked cell>` writes the payload into the cell and makes\n// awaiting unnecessary (the return value can be ignored).\ninterface VeskResource<T> {\n loading: boolean;\n error: unknown;\n data: T | undefined;\n refresh(): void;\n abort(): void;\n then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null,\n onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | undefined | null,\n ): PromiseLike<TResult1 | TResult2>;\n}\ninterface VeskUseFetchOptions<T> {\n /** Cache/SSR key \u2014 defaults to the URL string. */\n key?: string;\n /** Target tracked cell (from track<T>()) \u2014 the payload is written into it, so awaiting is unnecessary. */\n into?: Cell<T>;\n staleTime?: number;\n keepPreviousData?: boolean;\n retry?: number;\n retryDelay?: number;\n timeout?: number;\n enabled?: boolean;\n dedupe?: boolean;\n method?: string;\n headers?: Record<string, string>;\n body?: unknown;\n credentials?: 'omit' | 'same-origin' | 'include';\n signal?: { readonly aborted: boolean };\n}\ndeclare function useFetch<T = unknown>(\n urlOrFn: string | (() => Promise<T>),\n options?: VeskUseFetchOptions<T>,\n): VeskResource<T>;\ndeclare function useRouter(): unknown;\ndeclare function useParams(): Record<string, string>;\ndeclare function usePathname(): string;\ndeclare function useSearchParams(): URLSearchParams;\ndeclare function useNavigate(): (to: string) => void;\ndeclare function defineAction(...args: unknown[]): unknown;\ndeclare const Form: (props: { [k: string]: unknown; children?: unknown }) => unknown;\ndeclare const Field: (props: { [k: string]: unknown; children?: unknown }) => unknown;\ndeclare function required(...args: unknown[]): unknown;\ndeclare function email(...args: unknown[]): unknown;\ndeclare function minLength(...args: unknown[]): unknown;\ndeclare function maxLength(...args: unknown[]): unknown;\ndeclare function pattern(...args: unknown[]): unknown;\ndeclare function custom(...args: unknown[]): unknown;\ndeclare const Link: (props: { [k: string]: unknown; children?: unknown }) => unknown;\ndeclare const NavLink: (props: { [k: string]: unknown; children?: unknown }) => unknown;\ndeclare const Outlet: (props: { [k: string]: unknown; children?: unknown }) => unknown;\ndeclare const Image: (props: { [k: string]: unknown; children?: unknown }) => unknown;\ndeclare const Portal: (props: { [k: string]: unknown; children?: unknown }) => unknown;\ndeclare const Experiment: (props: { [k: string]: unknown; children?: unknown }) => unknown;\ndeclare const JsonLd: (props: { [k: string]: unknown; children?: unknown }) => unknown;\ndeclare const ArticleSchema: (props: { [k: string]: unknown; children?: unknown }) => unknown;\ndeclare const ProductSchema: (props: { [k: string]: unknown; children?: unknown }) => unknown;\ndeclare const FAQPageSchema: (props: { [k: string]: unknown; children?: unknown }) => unknown;\ndeclare const BreadcrumbListSchema: (props: { [k: string]: unknown; children?: unknown }) => unknown;\ndeclare const OrganizationSchema: (props: { [k: string]: unknown; children?: unknown }) => unknown;\ndeclare const LocalBusinessSchema: (props: { [k: string]: unknown; children?: unknown }) => unknown;\ndeclare const VideoSchema: (props: { [k: string]: unknown; children?: unknown }) => unknown;\ndeclare function redirect(...args: unknown[]): unknown;\ndeclare function permanentRedirect(...args: unknown[]): unknown;\ndeclare function notFound(...args: unknown[]): never;\ndeclare class NotFoundError extends Error {}\ndeclare function createResource(...args: unknown[]): unknown;\ndeclare function getAction(...args: unknown[]): unknown;\ndeclare function validateActionInput(...args: unknown[]): unknown;\ndeclare function issuesToFieldMap(...args: unknown[]): unknown;\ndeclare function isFormAction(...args: unknown[]): unknown;\n";
|
|
13
|
+
export declare const RUNTIME_OVERRIDE = "\nimport '@vesk/runtime';\ndeclare module '@vesk/runtime' {\n export function track<T>(initialValue: T): Cell<T>;\n export function derived<T>(fn: () => T): Cell<T>;\n}\n";
|
|
12
14
|
export interface TypecheckResult {
|
|
13
15
|
errors: TypecheckError[];
|
|
14
16
|
warnings: TypecheckError[];
|
package/dist/typecheck.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typecheck.d.ts","sourceRoot":"","sources":["../src/typecheck.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"typecheck.d.ts","sourceRoot":"","sources":["../src/typecheck.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,eAAO,MAAM,OAAO,goiBA6bnB,CAAC;AAEF,eAAO,MAAM,gBAAgB,iLAM5B,CAAC;AAyLF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,eAAe,CA0FlG;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAItE;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,CAI1E"}
|
package/dist/typecheck.js
CHANGED
|
@@ -5,16 +5,364 @@ import { parse } from '@vesk/compiler/src/parser';
|
|
|
5
5
|
import { vskToTsx, generateVskDts } from '@vesk/compiler/src/vsk-tsx';
|
|
6
6
|
const SKIP_DIRS = new Set(['node_modules', '.vesk', '.git', 'dist', 'tarballs', '.next']);
|
|
7
7
|
const SKIP_FILES = new Set(['__vesk_ambient.d.ts', '__vesk_runtime_override.d.ts']);
|
|
8
|
-
const AMBIENT = `
|
|
8
|
+
export const AMBIENT = `
|
|
9
9
|
declare namespace JSX {
|
|
10
|
+
type VeskEventHandler<E extends Event = Event> = (event: E) => void;
|
|
11
|
+
interface VeskCommonAttributes {
|
|
12
|
+
key?: string | number;
|
|
13
|
+
class?: string;
|
|
14
|
+
id?: string;
|
|
15
|
+
style?: string;
|
|
16
|
+
title?: string;
|
|
17
|
+
hidden?: boolean | string;
|
|
18
|
+
lang?: string;
|
|
19
|
+
dir?: 'ltr' | 'rtl' | 'auto';
|
|
20
|
+
tabIndex?: number;
|
|
21
|
+
role?: string;
|
|
22
|
+
}
|
|
23
|
+
interface VeskEventAttributes {
|
|
24
|
+
onClick?: VeskEventHandler<MouseEvent>;
|
|
25
|
+
onDblClick?: VeskEventHandler<MouseEvent>;
|
|
26
|
+
onMouseDown?: VeskEventHandler<MouseEvent>;
|
|
27
|
+
onMouseUp?: VeskEventHandler<MouseEvent>;
|
|
28
|
+
onMouseEnter?: VeskEventHandler<MouseEvent>;
|
|
29
|
+
onMouseLeave?: VeskEventHandler<MouseEvent>;
|
|
30
|
+
onMouseMove?: VeskEventHandler<MouseEvent>;
|
|
31
|
+
onKeyDown?: VeskEventHandler<KeyboardEvent>;
|
|
32
|
+
onKeyUp?: VeskEventHandler<KeyboardEvent>;
|
|
33
|
+
onFocus?: VeskEventHandler<FocusEvent>;
|
|
34
|
+
onBlur?: VeskEventHandler<FocusEvent>;
|
|
35
|
+
onInput?: VeskEventHandler<InputEvent>;
|
|
36
|
+
onChange?: VeskEventHandler<Event>;
|
|
37
|
+
onSubmit?: VeskEventHandler<SubmitEvent>;
|
|
38
|
+
onScroll?: VeskEventHandler<UIEvent>;
|
|
39
|
+
onWheel?: VeskEventHandler<WheelEvent>;
|
|
40
|
+
// Lowercase aliases — HTML attribute names are case-insensitive and real
|
|
41
|
+
// code writes onclick=/oninput=. Keep in sync with the camelCase members.
|
|
42
|
+
onclick?: VeskEventHandler<MouseEvent>;
|
|
43
|
+
ondblclick?: VeskEventHandler<MouseEvent>;
|
|
44
|
+
onmousedown?: VeskEventHandler<MouseEvent>;
|
|
45
|
+
onmouseup?: VeskEventHandler<MouseEvent>;
|
|
46
|
+
onmouseenter?: VeskEventHandler<MouseEvent>;
|
|
47
|
+
onmouseleave?: VeskEventHandler<MouseEvent>;
|
|
48
|
+
onmousemove?: VeskEventHandler<MouseEvent>;
|
|
49
|
+
onkeydown?: VeskEventHandler<KeyboardEvent>;
|
|
50
|
+
onkeyup?: VeskEventHandler<KeyboardEvent>;
|
|
51
|
+
onfocus?: VeskEventHandler<FocusEvent>;
|
|
52
|
+
onblur?: VeskEventHandler<FocusEvent>;
|
|
53
|
+
oninput?: VeskEventHandler<InputEvent>;
|
|
54
|
+
onchange?: VeskEventHandler<Event>;
|
|
55
|
+
onsubmit?: VeskEventHandler<SubmitEvent>;
|
|
56
|
+
}
|
|
57
|
+
interface VeskGlobalAttributes extends VeskCommonAttributes, VeskEventAttributes {
|
|
58
|
+
children?: unknown;
|
|
59
|
+
}
|
|
60
|
+
interface VeskAnchorAttributes extends VeskGlobalAttributes {
|
|
61
|
+
href?: string;
|
|
62
|
+
target?: string;
|
|
63
|
+
rel?: string;
|
|
64
|
+
download?: string | boolean;
|
|
65
|
+
type?: string;
|
|
66
|
+
hreflang?: string;
|
|
67
|
+
}
|
|
68
|
+
interface VeskMediaAttributes extends VeskGlobalAttributes {
|
|
69
|
+
src?: string;
|
|
70
|
+
width?: string | number;
|
|
71
|
+
height?: string | number;
|
|
72
|
+
}
|
|
73
|
+
interface VeskInputAttributes extends VeskGlobalAttributes {
|
|
74
|
+
type?: string;
|
|
75
|
+
name?: string;
|
|
76
|
+
value?: string | number | readonly string[];
|
|
77
|
+
placeholder?: string;
|
|
78
|
+
checked?: boolean | string;
|
|
79
|
+
disabled?: boolean | string;
|
|
80
|
+
readOnly?: boolean | string;
|
|
81
|
+
required?: boolean | string;
|
|
82
|
+
min?: string | number;
|
|
83
|
+
max?: string | number;
|
|
84
|
+
step?: string | number;
|
|
85
|
+
pattern?: string;
|
|
86
|
+
autoComplete?: string;
|
|
87
|
+
autoFocus?: boolean | string;
|
|
88
|
+
multiple?: boolean | string;
|
|
89
|
+
accept?: string;
|
|
90
|
+
size?: number;
|
|
91
|
+
list?: string;
|
|
92
|
+
}
|
|
10
93
|
interface IntrinsicElements {
|
|
94
|
+
html?: VeskGlobalAttributes & { manifest?: string };
|
|
95
|
+
head?: VeskGlobalAttributes;
|
|
96
|
+
body?: VeskGlobalAttributes;
|
|
97
|
+
div?: VeskGlobalAttributes;
|
|
98
|
+
span?: VeskGlobalAttributes;
|
|
99
|
+
p?: VeskGlobalAttributes;
|
|
100
|
+
h1?: VeskGlobalAttributes;
|
|
101
|
+
h2?: VeskGlobalAttributes;
|
|
102
|
+
h3?: VeskGlobalAttributes;
|
|
103
|
+
h4?: VeskGlobalAttributes;
|
|
104
|
+
h5?: VeskGlobalAttributes;
|
|
105
|
+
h6?: VeskGlobalAttributes;
|
|
106
|
+
a?: VeskAnchorAttributes;
|
|
107
|
+
nav?: VeskGlobalAttributes;
|
|
108
|
+
header?: VeskGlobalAttributes;
|
|
109
|
+
footer?: VeskGlobalAttributes;
|
|
110
|
+
main?: VeskGlobalAttributes;
|
|
111
|
+
section?: VeskGlobalAttributes;
|
|
112
|
+
article?: VeskGlobalAttributes;
|
|
113
|
+
aside?: VeskGlobalAttributes;
|
|
114
|
+
button?: VeskGlobalAttributes & {
|
|
115
|
+
type?: 'button' | 'submit' | 'reset';
|
|
116
|
+
disabled?: boolean | string;
|
|
117
|
+
name?: string;
|
|
118
|
+
value?: string | number;
|
|
119
|
+
};
|
|
120
|
+
form?: VeskGlobalAttributes & {
|
|
121
|
+
action?: string;
|
|
122
|
+
method?: 'get' | 'post';
|
|
123
|
+
target?: string;
|
|
124
|
+
encType?: string;
|
|
125
|
+
noValidate?: boolean | string;
|
|
126
|
+
name?: string;
|
|
127
|
+
autoComplete?: string;
|
|
128
|
+
};
|
|
129
|
+
input?: VeskInputAttributes;
|
|
130
|
+
textarea?: VeskGlobalAttributes & {
|
|
131
|
+
rows?: number;
|
|
132
|
+
cols?: number;
|
|
133
|
+
placeholder?: string;
|
|
134
|
+
value?: string | number;
|
|
135
|
+
disabled?: boolean | string;
|
|
136
|
+
readOnly?: boolean | string;
|
|
137
|
+
required?: boolean | string;
|
|
138
|
+
name?: string;
|
|
139
|
+
};
|
|
140
|
+
select?: VeskGlobalAttributes & {
|
|
141
|
+
name?: string;
|
|
142
|
+
value?: string | number | readonly string[];
|
|
143
|
+
disabled?: boolean | string;
|
|
144
|
+
required?: boolean | string;
|
|
145
|
+
multiple?: boolean | string;
|
|
146
|
+
size?: number;
|
|
147
|
+
autoComplete?: string;
|
|
148
|
+
};
|
|
149
|
+
option?: VeskGlobalAttributes & {
|
|
150
|
+
value?: string | number;
|
|
151
|
+
selected?: boolean | string;
|
|
152
|
+
disabled?: boolean | string;
|
|
153
|
+
label?: string;
|
|
154
|
+
};
|
|
155
|
+
optgroup?: VeskGlobalAttributes & { label?: string; disabled?: boolean | string };
|
|
156
|
+
label?: VeskGlobalAttributes & { htmlFor?: string };
|
|
157
|
+
fieldset?: VeskGlobalAttributes & { disabled?: boolean | string; name?: string; form?: string };
|
|
158
|
+
legend?: VeskGlobalAttributes;
|
|
159
|
+
datalist?: VeskGlobalAttributes;
|
|
160
|
+
img?: VeskGlobalAttributes & {
|
|
161
|
+
src?: string;
|
|
162
|
+
alt?: string;
|
|
163
|
+
width?: string | number;
|
|
164
|
+
height?: string | number;
|
|
165
|
+
srcSet?: string;
|
|
166
|
+
sizes?: string;
|
|
167
|
+
loading?: 'eager' | 'lazy';
|
|
168
|
+
decoding?: 'sync' | 'async' | 'auto';
|
|
169
|
+
};
|
|
170
|
+
picture?: VeskGlobalAttributes;
|
|
171
|
+
source?: VeskGlobalAttributes & { src?: string; srcSet?: string; sizes?: string; media?: string; type?: string };
|
|
172
|
+
video?: VeskMediaAttributes & {
|
|
173
|
+
controls?: boolean | string;
|
|
174
|
+
autoPlay?: boolean | string;
|
|
175
|
+
loop?: boolean | string;
|
|
176
|
+
muted?: boolean | string;
|
|
177
|
+
preload?: 'none' | 'metadata' | 'auto' | '';
|
|
178
|
+
poster?: string;
|
|
179
|
+
playsInline?: boolean | string;
|
|
180
|
+
};
|
|
181
|
+
audio?: VeskGlobalAttributes & {
|
|
182
|
+
src?: string;
|
|
183
|
+
controls?: boolean | string;
|
|
184
|
+
autoPlay?: boolean | string;
|
|
185
|
+
loop?: boolean | string;
|
|
186
|
+
muted?: boolean | string;
|
|
187
|
+
preload?: 'none' | 'metadata' | 'auto' | '';
|
|
188
|
+
};
|
|
189
|
+
track?: VeskGlobalAttributes & {
|
|
190
|
+
src?: string;
|
|
191
|
+
kind?: string;
|
|
192
|
+
srclang?: string;
|
|
193
|
+
label?: string;
|
|
194
|
+
default?: boolean | string;
|
|
195
|
+
};
|
|
196
|
+
canvas?: VeskGlobalAttributes & { width?: number; height?: number };
|
|
197
|
+
iframe?: VeskGlobalAttributes & {
|
|
198
|
+
src?: string;
|
|
199
|
+
srcDoc?: string;
|
|
200
|
+
width?: string | number;
|
|
201
|
+
height?: string | number;
|
|
202
|
+
allow?: string;
|
|
203
|
+
loading?: 'eager' | 'lazy';
|
|
204
|
+
sandbox?: string;
|
|
205
|
+
allowFullScreen?: boolean | string;
|
|
206
|
+
referrerPolicy?: string;
|
|
207
|
+
};
|
|
208
|
+
embed?: VeskGlobalAttributes & { src?: string; type?: string; width?: string | number; height?: string | number };
|
|
209
|
+
object?: VeskGlobalAttributes & { data?: string; type?: string; name?: string; width?: string | number; height?: string | number };
|
|
210
|
+
table?: VeskGlobalAttributes;
|
|
211
|
+
caption?: VeskGlobalAttributes;
|
|
212
|
+
thead?: VeskGlobalAttributes;
|
|
213
|
+
tbody?: VeskGlobalAttributes;
|
|
214
|
+
tfoot?: VeskGlobalAttributes;
|
|
215
|
+
tr?: VeskGlobalAttributes;
|
|
216
|
+
th?: VeskGlobalAttributes & { colSpan?: number; rowSpan?: number; scope?: string; headers?: string };
|
|
217
|
+
td?: VeskGlobalAttributes & { colSpan?: number; rowSpan?: number; headers?: string };
|
|
218
|
+
col?: VeskGlobalAttributes & { span?: number };
|
|
219
|
+
colgroup?: VeskGlobalAttributes & { span?: number };
|
|
220
|
+
ul?: VeskGlobalAttributes;
|
|
221
|
+
ol?: VeskGlobalAttributes & { start?: number; reversed?: boolean | string; type?: string };
|
|
222
|
+
li?: VeskGlobalAttributes & { value?: number };
|
|
223
|
+
dl?: VeskGlobalAttributes;
|
|
224
|
+
dt?: VeskGlobalAttributes;
|
|
225
|
+
dd?: VeskGlobalAttributes;
|
|
226
|
+
br?: VeskGlobalAttributes;
|
|
227
|
+
hr?: VeskGlobalAttributes;
|
|
228
|
+
pre?: VeskGlobalAttributes;
|
|
229
|
+
code?: VeskGlobalAttributes;
|
|
230
|
+
blockquote?: VeskGlobalAttributes & { cite?: string };
|
|
231
|
+
q?: VeskGlobalAttributes & { cite?: string };
|
|
232
|
+
strong?: VeskGlobalAttributes;
|
|
233
|
+
em?: VeskGlobalAttributes;
|
|
234
|
+
small?: VeskGlobalAttributes;
|
|
235
|
+
s?: VeskGlobalAttributes;
|
|
236
|
+
cite?: VeskGlobalAttributes;
|
|
237
|
+
dfn?: VeskGlobalAttributes;
|
|
238
|
+
abbr?: VeskGlobalAttributes & { title?: string };
|
|
239
|
+
time?: VeskGlobalAttributes & { dateTime?: string };
|
|
240
|
+
data?: VeskGlobalAttributes & { value?: string | number };
|
|
241
|
+
mark?: VeskGlobalAttributes;
|
|
242
|
+
del?: VeskGlobalAttributes & { cite?: string; dateTime?: string };
|
|
243
|
+
ins?: VeskGlobalAttributes & { cite?: string; dateTime?: string };
|
|
244
|
+
sub?: VeskGlobalAttributes;
|
|
245
|
+
sup?: VeskGlobalAttributes;
|
|
246
|
+
u?: VeskGlobalAttributes;
|
|
247
|
+
kbd?: VeskGlobalAttributes;
|
|
248
|
+
samp?: VeskGlobalAttributes;
|
|
249
|
+
var?: VeskGlobalAttributes;
|
|
250
|
+
figure?: VeskGlobalAttributes;
|
|
251
|
+
figcaption?: VeskGlobalAttributes;
|
|
252
|
+
details?: VeskGlobalAttributes & { open?: boolean | string };
|
|
253
|
+
summary?: VeskGlobalAttributes;
|
|
254
|
+
dialog?: VeskGlobalAttributes & { open?: boolean | string };
|
|
255
|
+
menu?: VeskGlobalAttributes;
|
|
256
|
+
address?: VeskGlobalAttributes;
|
|
257
|
+
b?: VeskGlobalAttributes;
|
|
258
|
+
i?: VeskGlobalAttributes;
|
|
259
|
+
ruby?: VeskGlobalAttributes;
|
|
260
|
+
rt?: VeskGlobalAttributes;
|
|
261
|
+
rp?: VeskGlobalAttributes;
|
|
262
|
+
bdi?: VeskGlobalAttributes;
|
|
263
|
+
bdo?: VeskGlobalAttributes;
|
|
264
|
+
wbr?: VeskGlobalAttributes;
|
|
265
|
+
area?: VeskGlobalAttributes & {
|
|
266
|
+
coords?: string;
|
|
267
|
+
shape?: string;
|
|
268
|
+
href?: string;
|
|
269
|
+
target?: string;
|
|
270
|
+
alt?: string;
|
|
271
|
+
};
|
|
272
|
+
map?: VeskGlobalAttributes & { name?: string };
|
|
273
|
+
noscript?: VeskGlobalAttributes;
|
|
274
|
+
template?: VeskGlobalAttributes;
|
|
275
|
+
slot?: VeskGlobalAttributes & { name?: string };
|
|
276
|
+
meta?: VeskGlobalAttributes & { name?: string; content?: string; charSet?: string; httpEquiv?: string };
|
|
277
|
+
title?: VeskGlobalAttributes;
|
|
278
|
+
base?: VeskGlobalAttributes & { href?: string; target?: string };
|
|
279
|
+
link?: VeskGlobalAttributes & {
|
|
280
|
+
rel?: string;
|
|
281
|
+
href?: string;
|
|
282
|
+
sizes?: string;
|
|
283
|
+
media?: string;
|
|
284
|
+
as?: string;
|
|
285
|
+
crossOrigin?: string;
|
|
286
|
+
integrity?: string;
|
|
287
|
+
};
|
|
288
|
+
style?: VeskGlobalAttributes & { media?: string };
|
|
289
|
+
script?: VeskGlobalAttributes & {
|
|
290
|
+
src?: string;
|
|
291
|
+
async?: boolean | string;
|
|
292
|
+
defer?: boolean | string;
|
|
293
|
+
type?: string;
|
|
294
|
+
crossOrigin?: string;
|
|
295
|
+
integrity?: string;
|
|
296
|
+
nonce?: string;
|
|
297
|
+
noModule?: boolean | string;
|
|
298
|
+
};
|
|
299
|
+
svg?: VeskGlobalAttributes & {
|
|
300
|
+
viewBox?: string;
|
|
301
|
+
xmlns?: string;
|
|
302
|
+
width?: string | number;
|
|
303
|
+
height?: string | number;
|
|
304
|
+
fill?: string;
|
|
305
|
+
stroke?: string;
|
|
306
|
+
strokeWidth?: string | number;
|
|
307
|
+
};
|
|
308
|
+
g?: VeskGlobalAttributes & { transform?: string; fill?: string; stroke?: string; strokeWidth?: string | number };
|
|
309
|
+
path?: VeskGlobalAttributes & {
|
|
310
|
+
d?: string;
|
|
311
|
+
fill?: string;
|
|
312
|
+
stroke?: string;
|
|
313
|
+
strokeWidth?: string | number;
|
|
314
|
+
fillRule?: string;
|
|
315
|
+
clipRule?: string;
|
|
316
|
+
};
|
|
317
|
+
circle?: VeskGlobalAttributes & {
|
|
318
|
+
cx?: string | number;
|
|
319
|
+
cy?: string | number;
|
|
320
|
+
r?: string | number;
|
|
321
|
+
fill?: string;
|
|
322
|
+
stroke?: string;
|
|
323
|
+
strokeWidth?: string | number;
|
|
324
|
+
};
|
|
325
|
+
ellipse?: VeskGlobalAttributes & {
|
|
326
|
+
cx?: string | number;
|
|
327
|
+
cy?: string | number;
|
|
328
|
+
rx?: string | number;
|
|
329
|
+
ry?: string | number;
|
|
330
|
+
fill?: string;
|
|
331
|
+
};
|
|
332
|
+
rect?: VeskGlobalAttributes & {
|
|
333
|
+
x?: string | number;
|
|
334
|
+
y?: string | number;
|
|
335
|
+
width?: string | number;
|
|
336
|
+
height?: string | number;
|
|
337
|
+
rx?: string | number;
|
|
338
|
+
ry?: string | number;
|
|
339
|
+
fill?: string;
|
|
340
|
+
};
|
|
341
|
+
line?: VeskGlobalAttributes & {
|
|
342
|
+
x1?: string | number;
|
|
343
|
+
y1?: string | number;
|
|
344
|
+
x2?: string | number;
|
|
345
|
+
y2?: string | number;
|
|
346
|
+
stroke?: string;
|
|
347
|
+
strokeWidth?: string | number;
|
|
348
|
+
};
|
|
349
|
+
polyline?: VeskGlobalAttributes & { points?: string; fill?: string; stroke?: string };
|
|
350
|
+
polygon?: VeskGlobalAttributes & { points?: string; fill?: string; stroke?: string };
|
|
351
|
+
text?: VeskGlobalAttributes & { x?: string | number; y?: string | number; fill?: string; fontSize?: string | number };
|
|
352
|
+
defs?: VeskGlobalAttributes;
|
|
353
|
+
linearGradient?: VeskGlobalAttributes;
|
|
354
|
+
radialGradient?: VeskGlobalAttributes;
|
|
355
|
+
stop?: VeskGlobalAttributes & { offset?: string | number; stopColor?: string; stopOpacity?: string | number };
|
|
356
|
+
|
|
357
|
+
// Unknown/custom tags stay permissive — components and web components
|
|
358
|
+
// resolve through the index signature, known tags get the typed members.
|
|
11
359
|
[elemName: string]: unknown;
|
|
12
360
|
}
|
|
13
361
|
}
|
|
14
362
|
declare const Head: (props: { children?: unknown }) => unknown;
|
|
15
363
|
declare class Cell<T> {
|
|
16
364
|
get(): T;
|
|
17
|
-
set(value: T):
|
|
365
|
+
set(value: T): void;
|
|
18
366
|
peek(): T;
|
|
19
367
|
update(fn: (current: T) => T): boolean;
|
|
20
368
|
unsubscribe(effect: unknown): void;
|
|
@@ -28,7 +376,43 @@ declare function tick(): Promise<void>;
|
|
|
28
376
|
declare function flushSync(fn: () => void): void;
|
|
29
377
|
declare function on_destroy(fn: () => void): void;
|
|
30
378
|
declare function createContext<T>(defaultValue?: T): { id: symbol; defaultValue: T | undefined };
|
|
31
|
-
|
|
379
|
+
// useFetch returns a THENABLE resource, not the data itself. In async
|
|
380
|
+
// components you must \`await\` it before reading/iterating the payload;
|
|
381
|
+
// passing \`into: <tracked cell>\` writes the payload into the cell and makes
|
|
382
|
+
// awaiting unnecessary (the return value can be ignored).
|
|
383
|
+
interface VeskResource<T> {
|
|
384
|
+
loading: boolean;
|
|
385
|
+
error: unknown;
|
|
386
|
+
data: T | undefined;
|
|
387
|
+
refresh(): void;
|
|
388
|
+
abort(): void;
|
|
389
|
+
then<TResult1 = T, TResult2 = never>(
|
|
390
|
+
onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null,
|
|
391
|
+
onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | undefined | null,
|
|
392
|
+
): PromiseLike<TResult1 | TResult2>;
|
|
393
|
+
}
|
|
394
|
+
interface VeskUseFetchOptions<T> {
|
|
395
|
+
/** Cache/SSR key — defaults to the URL string. */
|
|
396
|
+
key?: string;
|
|
397
|
+
/** Target tracked cell (from track<T>()) — the payload is written into it, so awaiting is unnecessary. */
|
|
398
|
+
into?: Cell<T>;
|
|
399
|
+
staleTime?: number;
|
|
400
|
+
keepPreviousData?: boolean;
|
|
401
|
+
retry?: number;
|
|
402
|
+
retryDelay?: number;
|
|
403
|
+
timeout?: number;
|
|
404
|
+
enabled?: boolean;
|
|
405
|
+
dedupe?: boolean;
|
|
406
|
+
method?: string;
|
|
407
|
+
headers?: Record<string, string>;
|
|
408
|
+
body?: unknown;
|
|
409
|
+
credentials?: 'omit' | 'same-origin' | 'include';
|
|
410
|
+
signal?: { readonly aborted: boolean };
|
|
411
|
+
}
|
|
412
|
+
declare function useFetch<T = unknown>(
|
|
413
|
+
urlOrFn: string | (() => Promise<T>),
|
|
414
|
+
options?: VeskUseFetchOptions<T>,
|
|
415
|
+
): VeskResource<T>;
|
|
32
416
|
declare function useRouter(): unknown;
|
|
33
417
|
declare function useParams(): Record<string, string>;
|
|
34
418
|
declare function usePathname(): string;
|
|
@@ -67,7 +451,7 @@ declare function validateActionInput(...args: unknown[]): unknown;
|
|
|
67
451
|
declare function issuesToFieldMap(...args: unknown[]): unknown;
|
|
68
452
|
declare function isFormAction(...args: unknown[]): unknown;
|
|
69
453
|
`;
|
|
70
|
-
const RUNTIME_OVERRIDE = `
|
|
454
|
+
export const RUNTIME_OVERRIDE = `
|
|
71
455
|
import '@vesk/runtime';
|
|
72
456
|
declare module '@vesk/runtime' {
|
|
73
457
|
export function track<T>(initialValue: T): Cell<T>;
|
package/dist/vsk-tsx.d.ts
CHANGED
|
@@ -1,3 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Segment-based TSX codegen. `vskToTsx` remains the byte-identical string
|
|
3
|
+
* transform used by the typechecker; `compileVskCodegen` additionally
|
|
4
|
+
* records `CodeMapping`s (source offset -> generated offset) so the
|
|
5
|
+
* Volar-based LSP can map positions, hover, completions and diagnostics
|
|
6
|
+
* between the user's `.vsk` source and the virtual TSX file TS actually
|
|
7
|
+
* analyzes. Synthetic text (braces, semicolons, `.map` scaffolding) is
|
|
8
|
+
* emitted without a mapping; verbatim user text is mapped 1:1.
|
|
9
|
+
*/
|
|
10
|
+
export interface CodeInfo {
|
|
11
|
+
verification?: boolean;
|
|
12
|
+
completion?: boolean | {
|
|
13
|
+
isAdditional?: boolean;
|
|
14
|
+
};
|
|
15
|
+
semantic?: boolean | {
|
|
16
|
+
shouldHighlight?: boolean;
|
|
17
|
+
shouldRename?: boolean;
|
|
18
|
+
};
|
|
19
|
+
navigation?: boolean | {
|
|
20
|
+
shouldRename?: boolean;
|
|
21
|
+
resolveRenameNewName?: (newName: string) => string;
|
|
22
|
+
};
|
|
23
|
+
structure?: boolean;
|
|
24
|
+
format?: boolean;
|
|
25
|
+
customData?: Record<string, unknown>;
|
|
26
|
+
}
|
|
27
|
+
export interface CodeMapping {
|
|
28
|
+
sourceOffsets: number[];
|
|
29
|
+
generatedOffsets: number[];
|
|
30
|
+
lengths: number[];
|
|
31
|
+
generatedLengths?: number[];
|
|
32
|
+
data: CodeInfo;
|
|
33
|
+
}
|
|
34
|
+
export interface StyleRegion {
|
|
35
|
+
/** Source range of the whole `<style>` element. */
|
|
36
|
+
start: number;
|
|
37
|
+
end: number;
|
|
38
|
+
/** The CSS text between the opening and closing tags. */
|
|
39
|
+
content: string;
|
|
40
|
+
}
|
|
41
|
+
export interface VskCodegenError {
|
|
42
|
+
message: string;
|
|
43
|
+
start: number;
|
|
44
|
+
end: number;
|
|
45
|
+
}
|
|
46
|
+
export interface VskCodegenOptions {
|
|
47
|
+
/**
|
|
48
|
+
* When set, `&[count] = track(...)` declarations rewrite to
|
|
49
|
+
* `const __cell = track(...); let count = __cell.get(); let rawCell =
|
|
50
|
+
* __cell;` so TypeScript infers the cell's value type (hover shows
|
|
51
|
+
* `number`, not `any`). Only used by the LSP — `vskToTsx` keeps the
|
|
52
|
+
* plain `let count: any = ...` form.
|
|
53
|
+
*/
|
|
54
|
+
typedCells?: boolean;
|
|
55
|
+
}
|
|
56
|
+
export interface VskCodegenResult {
|
|
57
|
+
code: string;
|
|
58
|
+
mappings: CodeMapping[];
|
|
59
|
+
styleRegions: StyleRegion[];
|
|
60
|
+
errors: VskCodegenError[];
|
|
61
|
+
}
|
|
62
|
+
export declare function compileVskCodegen(source: string, opts?: VskCodegenOptions): VskCodegenResult;
|
|
1
63
|
export declare function vskToTsx(source: string): string;
|
|
2
64
|
export declare function generateVskDts(source: string): string;
|
|
3
65
|
//# sourceMappingURL=vsk-tsx.d.ts.map
|
package/dist/vsk-tsx.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vsk-tsx.d.ts","sourceRoot":"","sources":["../src/vsk-tsx.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vsk-tsx.d.ts","sourceRoot":"","sources":["../src/vsk-tsx.ts"],"names":[],"mappings":"AAiBA;;;;;;;;GAQG;AAEH,MAAM,WAAW,QAAQ;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,GAAG;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAClD,QAAQ,CAAC,EAAE,OAAO,GAAG;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3E,UAAU,CAAC,EAAE,OAAO,GAAG;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAA;KAAE,CAAC;IACtG,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AA09BD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,gBAAgB,CA0ChG;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE/C;AAWD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAmDrD"}
|