@velarscript/web 0.31.0 → 0.32.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/README.md +1 -1
- package/dist/analysis/calls/intrinsics/config.d.ts +10 -0
- package/dist/analysis/calls/intrinsics/config.d.ts.map +1 -0
- package/dist/analysis/calls/intrinsics/config.js +19 -0
- package/dist/analysis/calls/intrinsics/config.js.map +1 -0
- package/dist/analysis/calls/intrinsics/forms.d.ts +10 -0
- package/dist/analysis/calls/intrinsics/forms.d.ts.map +1 -0
- package/dist/analysis/calls/intrinsics/forms.js +38 -0
- package/dist/analysis/calls/intrinsics/forms.js.map +1 -0
- package/dist/analysis/calls/intrinsics/http.d.ts +10 -0
- package/dist/analysis/calls/intrinsics/http.d.ts.map +1 -0
- package/dist/analysis/calls/intrinsics/http.js +37 -0
- package/dist/analysis/calls/intrinsics/http.js.map +1 -0
- package/dist/analysis/calls/intrinsics/reactive.d.ts +10 -0
- package/dist/analysis/calls/intrinsics/reactive.d.ts.map +1 -0
- package/dist/analysis/calls/intrinsics/reactive.js +30 -0
- package/dist/analysis/calls/intrinsics/reactive.js.map +1 -0
- package/dist/analysis/calls/intrinsics/storage.d.ts +12 -0
- package/dist/analysis/calls/intrinsics/storage.d.ts.map +1 -0
- package/dist/analysis/calls/intrinsics/storage.js +86 -0
- package/dist/analysis/calls/intrinsics/storage.js.map +1 -0
- package/dist/analysis/calls/intrinsics/web.d.ts +10 -0
- package/dist/analysis/calls/intrinsics/web.d.ts.map +1 -0
- package/dist/analysis/calls/intrinsics/web.js +100 -0
- package/dist/analysis/calls/intrinsics/web.js.map +1 -0
- package/dist/analysis/calls/intrinsics.d.ts +13 -0
- package/dist/analysis/calls/intrinsics.d.ts.map +1 -0
- package/dist/analysis/calls/intrinsics.js +31 -0
- package/dist/analysis/calls/intrinsics.js.map +1 -0
- package/dist/analysis/components/contracts.d.ts +19 -0
- package/dist/analysis/components/contracts.d.ts.map +1 -0
- package/dist/analysis/components/contracts.js +83 -0
- package/dist/analysis/components/contracts.js.map +1 -0
- package/dist/analysis/components/declaration.d.ts +4 -0
- package/dist/analysis/components/declaration.d.ts.map +1 -0
- package/dist/analysis/components/declaration.js +163 -0
- package/dist/analysis/components/declaration.js.map +1 -0
- package/dist/analysis/components/host.d.ts +61 -0
- package/dist/analysis/components/host.d.ts.map +1 -0
- package/dist/analysis/components/host.js +22 -0
- package/dist/analysis/components/host.js.map +1 -0
- package/dist/analysis/components/lifecycle.d.ts +22 -0
- package/dist/analysis/components/lifecycle.d.ts.map +1 -0
- package/dist/analysis/components/lifecycle.js +33 -0
- package/dist/analysis/components/lifecycle.js.map +1 -0
- package/dist/analysis/components/ownership.d.ts +74 -0
- package/dist/analysis/components/ownership.d.ts.map +1 -0
- package/dist/analysis/components/ownership.js +106 -0
- package/dist/analysis/components/ownership.js.map +1 -0
- package/dist/analysis/declarations.d.ts +99 -0
- package/dist/analysis/declarations.d.ts.map +1 -0
- package/dist/analysis/declarations.js +176 -0
- package/dist/analysis/declarations.js.map +1 -0
- package/dist/analysis/inference.d.ts +67 -0
- package/dist/analysis/inference.d.ts.map +1 -0
- package/dist/analysis/inference.js +236 -0
- package/dist/analysis/inference.js.map +1 -0
- package/dist/analysis/jsx/attributes.d.ts +103 -0
- package/dist/analysis/jsx/attributes.d.ts.map +1 -0
- package/dist/analysis/jsx/attributes.js +601 -0
- package/dist/analysis/jsx/attributes.js.map +1 -0
- package/dist/analysis/jsx/elements.d.ts +17 -0
- package/dist/analysis/jsx/elements.d.ts.map +1 -0
- package/dist/analysis/jsx/elements.js +213 -0
- package/dist/analysis/jsx/elements.js.map +1 -0
- package/dist/analysis/jsx/host.d.ts +61 -0
- package/dist/analysis/jsx/host.d.ts.map +1 -0
- package/dist/analysis/jsx/host.js +15 -0
- package/dist/analysis/jsx/host.js.map +1 -0
- package/dist/analysis/jsx/keys.d.ts +15 -0
- package/dist/analysis/jsx/keys.d.ts.map +1 -0
- package/dist/analysis/jsx/keys.js +67 -0
- package/dist/analysis/jsx/keys.js.map +1 -0
- package/dist/analysis/jsx/security.d.ts +29 -0
- package/dist/analysis/jsx/security.d.ts.map +1 -0
- package/dist/analysis/jsx/security.js +61 -0
- package/dist/analysis/jsx/security.js.map +1 -0
- package/dist/analysis/jsx-detection.d.ts +49 -0
- package/dist/analysis/jsx-detection.d.ts.map +1 -0
- package/dist/analysis/jsx-detection.js +196 -0
- package/dist/analysis/jsx-detection.js.map +1 -0
- package/dist/analysis/keyed-rebuild.d.ts +148 -0
- package/dist/analysis/keyed-rebuild.d.ts.map +1 -0
- package/dist/analysis/keyed-rebuild.js +299 -0
- package/dist/analysis/keyed-rebuild.js.map +1 -0
- package/dist/analysis/keyframes-analysis.d.ts +6 -0
- package/dist/analysis/keyframes-analysis.d.ts.map +1 -0
- package/dist/analysis/keyframes-analysis.js +79 -0
- package/dist/analysis/keyframes-analysis.js.map +1 -0
- package/dist/analysis/look/builders.d.ts +29 -0
- package/dist/analysis/look/builders.d.ts.map +1 -0
- package/dist/analysis/look/builders.js +168 -0
- package/dist/analysis/look/builders.js.map +1 -0
- package/dist/analysis/look/conditions.d.ts +13 -0
- package/dist/analysis/look/conditions.d.ts.map +1 -0
- package/dist/analysis/look/conditions.js +84 -0
- package/dist/analysis/look/conditions.js.map +1 -0
- package/dist/analysis/look/edits.d.ts +25 -0
- package/dist/analysis/look/edits.d.ts.map +1 -0
- package/dist/analysis/look/edits.js +57 -0
- package/dist/analysis/look/edits.js.map +1 -0
- package/dist/analysis/look/entries.d.ts +56 -0
- package/dist/analysis/look/entries.d.ts.map +1 -0
- package/dist/analysis/look/entries.js +223 -0
- package/dist/analysis/look/entries.js.map +1 -0
- package/dist/analysis/look/host.d.ts +47 -0
- package/dist/analysis/look/host.d.ts.map +1 -0
- package/dist/analysis/look/host.js +16 -0
- package/dist/analysis/look/host.js.map +1 -0
- package/dist/analysis/look/tokens.d.ts +75 -0
- package/dist/analysis/look/tokens.d.ts.map +1 -0
- package/dist/analysis/look/tokens.js +151 -0
- package/dist/analysis/look/tokens.js.map +1 -0
- package/dist/analysis/look/values.d.ts +45 -0
- package/dist/analysis/look/values.d.ts.map +1 -0
- package/dist/analysis/look/values.js +148 -0
- package/dist/analysis/look/values.js.map +1 -0
- package/dist/analysis/look-conditions.d.ts +47 -0
- package/dist/analysis/look-conditions.d.ts.map +1 -0
- package/dist/analysis/look-conditions.js +157 -0
- package/dist/analysis/look-conditions.js.map +1 -0
- package/dist/analysis/look-sites.d.ts +54 -0
- package/dist/analysis/look-sites.d.ts.map +1 -0
- package/dist/analysis/look-sites.js +104 -0
- package/dist/analysis/look-sites.js.map +1 -0
- package/dist/analysis/look-vocabulary-guidance.d.ts +76 -0
- package/dist/analysis/look-vocabulary-guidance.d.ts.map +1 -0
- package/dist/analysis/look-vocabulary-guidance.js +338 -0
- package/dist/analysis/look-vocabulary-guidance.js.map +1 -0
- package/dist/analysis/media-conditions.d.ts +33 -0
- package/dist/analysis/media-conditions.d.ts.map +1 -0
- package/dist/analysis/media-conditions.js +92 -0
- package/dist/analysis/media-conditions.js.map +1 -0
- package/dist/analysis/program-passes.d.ts +106 -0
- package/dist/analysis/program-passes.d.ts.map +1 -0
- package/dist/analysis/program-passes.js +149 -0
- package/dist/analysis/program-passes.js.map +1 -0
- package/dist/analysis/reactivity/bindings.d.ts +37 -0
- package/dist/analysis/reactivity/bindings.d.ts.map +1 -0
- package/dist/analysis/reactivity/bindings.js +88 -0
- package/dist/analysis/reactivity/bindings.js.map +1 -0
- package/dist/analysis/reactivity/derived.d.ts +39 -0
- package/dist/analysis/reactivity/derived.d.ts.map +1 -0
- package/dist/analysis/reactivity/derived.js +80 -0
- package/dist/analysis/reactivity/derived.js.map +1 -0
- package/dist/analysis/reactivity/host.d.ts +38 -0
- package/dist/analysis/reactivity/host.d.ts.map +1 -0
- package/dist/analysis/reactivity/host.js +14 -0
- package/dist/analysis/reactivity/host.js.map +1 -0
- package/dist/analysis/reactivity/retired-accessors.d.ts +82 -0
- package/dist/analysis/reactivity/retired-accessors.d.ts.map +1 -0
- package/dist/analysis/reactivity/retired-accessors.js +118 -0
- package/dist/analysis/reactivity/retired-accessors.js.map +1 -0
- package/dist/analysis/renderable.d.ts +47 -0
- package/dist/analysis/renderable.d.ts.map +1 -0
- package/dist/analysis/renderable.js +105 -0
- package/dist/analysis/renderable.js.map +1 -0
- package/dist/analysis/routes.d.ts +64 -0
- package/dist/analysis/routes.d.ts.map +1 -0
- package/dist/analysis/routes.js +182 -0
- package/dist/analysis/routes.js.map +1 -0
- package/dist/analysis/url-attributes.d.ts +12 -0
- package/dist/analysis/url-attributes.d.ts.map +1 -0
- package/dist/analysis/url-attributes.js +48 -0
- package/dist/analysis/url-attributes.js.map +1 -0
- package/dist/analysis/watch-cycles.d.ts +102 -0
- package/dist/analysis/watch-cycles.d.ts.map +1 -1
- package/dist/analysis/watch-cycles.js +240 -1
- package/dist/analysis/watch-cycles.js.map +1 -1
- package/dist/analysis/watch-subject.d.ts +45 -0
- package/dist/analysis/watch-subject.d.ts.map +1 -0
- package/dist/analysis/watch-subject.js +272 -0
- package/dist/analysis/watch-subject.js.map +1 -0
- package/dist/analysis/web-types.d.ts +27 -0
- package/dist/analysis/web-types.d.ts.map +1 -0
- package/dist/analysis/web-types.js +170 -0
- package/dist/analysis/web-types.js.map +1 -0
- package/dist/analyzer.d.ts +18 -617
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +208 -4853
- package/dist/analyzer.js.map +1 -1
- package/dist/compiler.d.ts +20 -0
- package/dist/compiler.d.ts.map +1 -1
- package/dist/compiler.js +29 -864
- package/dist/compiler.js.map +1 -1
- package/dist/documentation.d.ts +28 -0
- package/dist/documentation.d.ts.map +1 -0
- package/dist/documentation.js +67 -0
- package/dist/documentation.js.map +1 -0
- package/dist/editor/completions.d.ts +12 -0
- package/dist/editor/completions.d.ts.map +1 -0
- package/dist/editor/completions.js +6 -0
- package/dist/editor/completions.js.map +1 -0
- package/dist/editor/jsx-completion.d.ts +12 -0
- package/dist/editor/jsx-completion.d.ts.map +1 -0
- package/dist/editor/jsx-completion.js +137 -0
- package/dist/editor/jsx-completion.js.map +1 -0
- package/dist/editor/look-completion.d.ts +29 -0
- package/dist/editor/look-completion.d.ts.map +1 -0
- package/dist/editor/look-completion.js +159 -0
- package/dist/editor/look-completion.js.map +1 -0
- package/dist/editor.d.ts.map +1 -1
- package/dist/editor.js +12 -288
- package/dist/editor.js.map +1 -1
- package/dist/emit/components.d.ts +33 -0
- package/dist/emit/components.d.ts.map +1 -0
- package/dist/emit/components.js +135 -0
- package/dist/emit/components.js.map +1 -0
- package/dist/emit/jsx.d.ts +57 -0
- package/dist/emit/jsx.d.ts.map +1 -0
- package/dist/emit/jsx.js +384 -0
- package/dist/emit/jsx.js.map +1 -0
- package/dist/emit/look-css.d.ts +44 -0
- package/dist/emit/look-css.d.ts.map +1 -0
- package/dist/emit/look-css.js +177 -0
- package/dist/emit/look-css.js.map +1 -0
- package/dist/emit/look.d.ts +39 -0
- package/dist/emit/look.d.ts.map +1 -0
- package/dist/emit/look.js +218 -0
- package/dist/emit/look.js.map +1 -0
- package/dist/emit/runtime-imports.d.ts +40 -0
- package/dist/emit/runtime-imports.d.ts.map +1 -0
- package/dist/emit/runtime-imports.js +184 -0
- package/dist/emit/runtime-imports.js.map +1 -0
- package/dist/emitter.d.ts +15 -68
- package/dist/emitter.d.ts.map +1 -1
- package/dist/emitter.js +79 -1008
- package/dist/emitter.js.map +1 -1
- package/dist/look/animation.d.ts +7 -0
- package/dist/look/animation.d.ts.map +1 -0
- package/dist/look/animation.js +13 -0
- package/dist/look/animation.js.map +1 -0
- package/dist/look/builders.d.ts +35 -0
- package/dist/look/builders.d.ts.map +1 -0
- package/dist/look/builders.js +74 -0
- package/dist/look/builders.js.map +1 -0
- package/dist/look/css-functions.d.ts +28 -0
- package/dist/look/css-functions.d.ts.map +1 -0
- package/dist/look/css-functions.js +54 -0
- package/dist/look/css-functions.js.map +1 -0
- package/dist/look/keyword-sets.d.ts +41 -0
- package/dist/look/keyword-sets.d.ts.map +1 -0
- package/dist/look/keyword-sets.js +117 -0
- package/dist/look/keyword-sets.js.map +1 -0
- package/dist/look/keywords.d.ts +55 -0
- package/dist/look/keywords.d.ts.map +1 -0
- package/dist/look/keywords.js +387 -0
- package/dist/look/keywords.js.map +1 -0
- package/dist/look/media.d.ts +19 -0
- package/dist/look/media.d.ts.map +1 -0
- package/dist/look/media.js +27 -0
- package/dist/look/media.js.map +1 -0
- package/dist/look/naming.d.ts +9 -0
- package/dist/look/naming.d.ts.map +1 -0
- package/dist/look/naming.js +45 -0
- package/dist/look/naming.js.map +1 -0
- package/dist/look/properties.d.ts +16 -0
- package/dist/look/properties.d.ts.map +1 -0
- package/dist/look/properties.js +52 -0
- package/dist/look/properties.js.map +1 -0
- package/dist/look/shorthands.d.ts +25 -0
- package/dist/look/shorthands.d.ts.map +1 -0
- package/dist/look/shorthands.js +130 -0
- package/dist/look/shorthands.js.map +1 -0
- package/dist/look/tokens.d.ts +38 -0
- package/dist/look/tokens.d.ts.map +1 -0
- package/dist/look/tokens.js +59 -0
- package/dist/look/tokens.js.map +1 -0
- package/dist/look/units.d.ts +24 -0
- package/dist/look/units.d.ts.map +1 -0
- package/dist/look/units.js +33 -0
- package/dist/look/units.js.map +1 -0
- package/dist/look.d.ts +32 -227
- package/dist/look.d.ts.map +1 -1
- package/dist/look.js +28 -933
- package/dist/look.js.map +1 -1
- package/dist/module-roster.d.ts +16 -0
- package/dist/module-roster.d.ts.map +1 -0
- package/dist/module-roster.js +28 -0
- package/dist/module-roster.js.map +1 -0
- package/dist/modules/app.d.ts +9 -0
- package/dist/modules/app.d.ts.map +1 -0
- package/dist/modules/app.js +20 -0
- package/dist/modules/app.js.map +1 -0
- package/dist/modules/browser-test.d.ts +9 -0
- package/dist/modules/browser-test.d.ts.map +1 -0
- package/dist/modules/browser-test.js +67 -0
- package/dist/modules/browser-test.js.map +1 -0
- package/dist/modules/browser.d.ts +10 -0
- package/dist/modules/browser.d.ts.map +1 -0
- package/dist/modules/browser.js +89 -0
- package/dist/modules/browser.js.map +1 -0
- package/dist/modules/config.d.ts +9 -0
- package/dist/modules/config.d.ts.map +1 -0
- package/dist/modules/config.js +14 -0
- package/dist/modules/config.js.map +1 -0
- package/dist/modules/files.d.ts +9 -0
- package/dist/modules/files.d.ts.map +1 -0
- package/dist/modules/files.js +16 -0
- package/dist/modules/files.js.map +1 -0
- package/dist/modules/forms.d.ts +9 -0
- package/dist/modules/forms.d.ts.map +1 -0
- package/dist/modules/forms.js +26 -0
- package/dist/modules/forms.js.map +1 -0
- package/dist/modules/http.d.ts +9 -0
- package/dist/modules/http.d.ts.map +1 -0
- package/dist/modules/http.js +127 -0
- package/dist/modules/http.js.map +1 -0
- package/dist/modules/look.d.ts +9 -0
- package/dist/modules/look.d.ts.map +1 -0
- package/dist/modules/look.js +58 -0
- package/dist/modules/look.js.map +1 -0
- package/dist/modules/realtime.d.ts +9 -0
- package/dist/modules/realtime.d.ts.map +1 -0
- package/dist/modules/realtime.js +163 -0
- package/dist/modules/realtime.js.map +1 -0
- package/dist/modules/storage.d.ts +9 -0
- package/dist/modules/storage.d.ts.map +1 -0
- package/dist/modules/storage.js +59 -0
- package/dist/modules/storage.js.map +1 -0
- package/dist/modules/types.d.ts +78 -0
- package/dist/modules/types.d.ts.map +1 -0
- package/dist/modules/types.js +154 -0
- package/dist/modules/types.js.map +1 -0
- package/dist/modules/web.d.ts +9 -0
- package/dist/modules/web.d.ts.map +1 -0
- package/dist/modules/web.js +63 -0
- package/dist/modules/web.js.map +1 -0
- package/dist/modules/websocket.d.ts +11 -0
- package/dist/modules/websocket.d.ts.map +1 -0
- package/dist/modules/websocket.js +75 -0
- package/dist/modules/websocket.js.map +1 -0
- package/dist/parser/expressions/jsx.d.ts +17 -0
- package/dist/parser/expressions/jsx.d.ts.map +1 -0
- package/dist/parser/expressions/jsx.js +43 -0
- package/dist/parser/expressions/jsx.js.map +1 -0
- package/dist/parser/expressions/keyframes.d.ts +15 -0
- package/dist/parser/expressions/keyframes.d.ts.map +1 -0
- package/dist/parser/expressions/keyframes.js +33 -0
- package/dist/parser/expressions/keyframes.js.map +1 -0
- package/dist/parser/expressions/look.d.ts +16 -0
- package/dist/parser/expressions/look.d.ts.map +1 -0
- package/dist/parser/expressions/look.js +37 -0
- package/dist/parser/expressions/look.js.map +1 -0
- package/dist/parser/expressions/visual-block.d.ts +17 -0
- package/dist/parser/expressions/visual-block.d.ts.map +1 -0
- package/dist/parser/expressions/visual-block.js +21 -0
- package/dist/parser/expressions/visual-block.js.map +1 -0
- package/dist/parser/keyframes-source.d.ts +24 -0
- package/dist/parser/keyframes-source.d.ts.map +1 -0
- package/dist/parser/keyframes-source.js +133 -0
- package/dist/parser/keyframes-source.js.map +1 -0
- package/dist/parser/look-source.d.ts +25 -0
- package/dist/parser/look-source.d.ts.map +1 -0
- package/dist/parser/look-source.js +189 -0
- package/dist/parser/look-source.js.map +1 -0
- package/dist/parser/spans.d.ts +24 -0
- package/dist/parser/spans.d.ts.map +1 -0
- package/dist/parser/spans.js +113 -0
- package/dist/parser/spans.js.map +1 -0
- package/dist/parser/statements/components.d.ts +37 -0
- package/dist/parser/statements/components.d.ts.map +1 -0
- package/dist/parser/statements/components.js +185 -0
- package/dist/parser/statements/components.js.map +1 -0
- package/dist/parser/statements/heads.d.ts +38 -0
- package/dist/parser/statements/heads.d.ts.map +1 -0
- package/dist/parser/statements/heads.js +55 -0
- package/dist/parser/statements/heads.js.map +1 -0
- package/dist/parser/statements/imports.d.ts +9 -0
- package/dist/parser/statements/imports.d.ts.map +1 -0
- package/dist/parser/statements/imports.js +31 -0
- package/dist/parser/statements/imports.js.map +1 -0
- package/dist/parser/statements/reactive.d.ts +31 -0
- package/dist/parser/statements/reactive.d.ts.map +1 -0
- package/dist/parser/statements/reactive.js +68 -0
- package/dist/parser/statements/reactive.js.map +1 -0
- package/dist/parser/statements/unsafe-css.d.ts +21 -0
- package/dist/parser/statements/unsafe-css.d.ts.map +1 -0
- package/dist/parser/statements/unsafe-css.js +42 -0
- package/dist/parser/statements/unsafe-css.js.map +1 -0
- package/dist/parser.d.ts +37 -50
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +98 -882
- package/dist/parser.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The type vocabulary every `velar/*` table in `modules/` is written in.
|
|
3
|
+
*
|
|
4
|
+
* D115 §三, the shape `packages/core/src/interfaces/` and `packages/node/src/modules/`
|
|
5
|
+
* already have: the primitive `ValueType` singletons, the constructors a Web
|
|
6
|
+
* export is built with, and the `ModuleInterface` constructor that fills in the
|
|
7
|
+
* fields a Web module never uses. What one surface alone owns lives in that
|
|
8
|
+
* surface's file.
|
|
9
|
+
*/
|
|
10
|
+
import {} from "@velarscript/compiler";
|
|
11
|
+
import { isWebJsx } from "../ast.js";
|
|
12
|
+
import { WEB_NATIVE_ELEMENTS } from "../elements.js";
|
|
13
|
+
import { LOOK_BUILDER_SIGNATURES } from "../look.js";
|
|
14
|
+
import { webNodeType } from "../types.js";
|
|
15
|
+
export const bytesType = { kind: "named", name: "Bytes", identity: "velar/binary#type:Bytes" };
|
|
16
|
+
export const nullType = { kind: "null" };
|
|
17
|
+
export const stringType = { kind: "string" };
|
|
18
|
+
export const numberType = { kind: "number" };
|
|
19
|
+
export const boolType = { kind: "bool" };
|
|
20
|
+
export const nodeType = webNodeType;
|
|
21
|
+
export const elementType = { kind: "named", name: "Element" };
|
|
22
|
+
export const inputElementType = { kind: "named", name: "InputElement" };
|
|
23
|
+
export const textAreaElementType = { kind: "named", name: "TextAreaElement" };
|
|
24
|
+
export const canvasElementType = { kind: "named", name: "CanvasElement" };
|
|
25
|
+
export const dialogElementType = { kind: "named", name: "DialogElement" };
|
|
26
|
+
export const blobType = { kind: "named", name: "Blob" };
|
|
27
|
+
export const lengthType = { kind: "named", name: "Length" };
|
|
28
|
+
export const percentageType = { kind: "named", name: "Percentage" };
|
|
29
|
+
export const lengthPercentageType = { kind: "named", name: "LengthPercentage" };
|
|
30
|
+
export const trackFractionType = { kind: "named", name: "TrackFraction" };
|
|
31
|
+
export const colorType = { kind: "named", name: "Color" };
|
|
32
|
+
export const colorInputType = colorType;
|
|
33
|
+
export const borderType = { kind: "named", name: "Border" };
|
|
34
|
+
export const shadowType = { kind: "named", name: "Shadow" };
|
|
35
|
+
export const filterType = { kind: "named", name: "Filter" };
|
|
36
|
+
export const imageType = { kind: "named", name: "Image" };
|
|
37
|
+
export const trackType = { kind: "named", name: "Track" };
|
|
38
|
+
export const trackListType = { kind: "named", name: "TrackList" };
|
|
39
|
+
/**
|
|
40
|
+
* Native JSX construction preserves the order and count of a collection
|
|
41
|
+
* projection. Attribute and child holes still have to pass Core's stability
|
|
42
|
+
* proof; event arrows are inert values here and run only after dispatch.
|
|
43
|
+
* Components, custom elements, refs, and bindings keep the explicit loop
|
|
44
|
+
* because their setup can execute user code or write through a binding.
|
|
45
|
+
*/
|
|
46
|
+
export function webCanonicalCollectionProjection(expression, pure) {
|
|
47
|
+
if (!isWebJsx(expression))
|
|
48
|
+
return undefined;
|
|
49
|
+
if (expression.tag !== "" && !WEB_NATIVE_ELEMENTS.has(expression.tag))
|
|
50
|
+
return false;
|
|
51
|
+
for (const attribute of expression.attributes) {
|
|
52
|
+
if (attribute.name === "ref" || attribute.name.startsWith("bind:"))
|
|
53
|
+
return false;
|
|
54
|
+
if (typeof attribute.value === "string" || attribute.value === null)
|
|
55
|
+
continue;
|
|
56
|
+
if (attribute.name.startsWith("on:") && attribute.value.kind === "ArrowFunctionExpression")
|
|
57
|
+
continue;
|
|
58
|
+
if (!pure(attribute.value))
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
for (const child of expression.children) {
|
|
62
|
+
if (child.kind === "JSXText")
|
|
63
|
+
continue;
|
|
64
|
+
if (child.kind === "ExtensionExpression:web:jsx") {
|
|
65
|
+
if (webCanonicalCollectionProjection(child, pure) !== true)
|
|
66
|
+
return false;
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (!pure(child.expression))
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
export const transitionType = { kind: "named", name: "Transition" };
|
|
75
|
+
export const keyframesType = { kind: "named", name: "Keyframes" };
|
|
76
|
+
export const animationType = { kind: "named", name: "Animation" };
|
|
77
|
+
export const durationType = { kind: "named", name: "Duration" };
|
|
78
|
+
export const angleType = { kind: "named", name: "Angle" };
|
|
79
|
+
export const spacingType = { kind: "named", name: "Spacing" };
|
|
80
|
+
export const mountTargetType = { kind: "union", members: [stringType, elementType] };
|
|
81
|
+
export const lookScalarType = { kind: "union", members: [numberType, stringType, lengthType, percentageType, lengthPercentageType] };
|
|
82
|
+
export const trackInputType = { kind: "union", members: [numberType, stringType, lengthType, percentageType, lengthPercentageType, trackFractionType, trackType, trackListType] };
|
|
83
|
+
export const repeatCountType = { kind: "union", members: [numberType, stringType] };
|
|
84
|
+
const lookBuilderResultTypes = {
|
|
85
|
+
animation: animationType,
|
|
86
|
+
border: borderType,
|
|
87
|
+
color: colorType,
|
|
88
|
+
filter: filterType,
|
|
89
|
+
image: imageType,
|
|
90
|
+
length: lengthType, "length-percentage": lengthPercentageType,
|
|
91
|
+
shadow: shadowType,
|
|
92
|
+
spacing: spacingType,
|
|
93
|
+
string: stringType,
|
|
94
|
+
track: trackType,
|
|
95
|
+
"track-list": trackListType,
|
|
96
|
+
transition: transitionType,
|
|
97
|
+
};
|
|
98
|
+
export function namedFunction(parameterNames, parameters, result, requiredParameters = parameters.length) {
|
|
99
|
+
return { kind: "function", parameterNames, parameters, requiredParameters, result };
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* A velar/look builder's published type, with its parameter names and required
|
|
103
|
+
* count read from LOOK_BUILDER_SIGNATURES rather than repeated here. The static
|
|
104
|
+
* keyframe lowering places named arguments from that same table, so the two
|
|
105
|
+
* cannot disagree about what `spread=0px` means.
|
|
106
|
+
*/
|
|
107
|
+
export function lookBuilder(name, parameters, rest) {
|
|
108
|
+
const signature = LOOK_BUILDER_SIGNATURES.get(name);
|
|
109
|
+
if (!signature)
|
|
110
|
+
throw new Error(`velar/look builder '${name}' has no declared signature`);
|
|
111
|
+
if (signature.parameters.length !== parameters.length) {
|
|
112
|
+
throw new Error(`velar/look builder '${name}' declares ${signature.parameters.length} parameters but types ${parameters.length}`);
|
|
113
|
+
}
|
|
114
|
+
if ((signature.rest ?? false) !== (rest !== undefined)) {
|
|
115
|
+
throw new Error(`velar/look builder '${name}' disagrees with its declared rest parameter`);
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
kind: "function",
|
|
119
|
+
parameterNames: signature.parameters,
|
|
120
|
+
parameters,
|
|
121
|
+
requiredParameters: signature.required,
|
|
122
|
+
...(rest ? { rest } : {}),
|
|
123
|
+
result: lookBuilderResultTypes[signature.result],
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
export const unknownType = { kind: "unknown" };
|
|
127
|
+
export function functionType(parameters, result, requiredParameters = parameters.length) {
|
|
128
|
+
return { kind: "function", parameters, requiredParameters, result };
|
|
129
|
+
}
|
|
130
|
+
export function namedIntrinsic(name, parameterNames, parameters, result, requiredParameters = parameters.length) {
|
|
131
|
+
return { kind: "intrinsic", name, parameterNames, parameters, requiredParameters, result };
|
|
132
|
+
}
|
|
133
|
+
export function promise(value) {
|
|
134
|
+
return { kind: "promise", value };
|
|
135
|
+
}
|
|
136
|
+
export function object(fields) {
|
|
137
|
+
return { kind: "object", fields: new Map(Object.entries(fields)) };
|
|
138
|
+
}
|
|
139
|
+
/** A structurally declared standard capability handle; see ValueType.capabilityHandle. */
|
|
140
|
+
export function capabilityHandle(fields) {
|
|
141
|
+
return { kind: "object", fields: new Map(Object.entries(fields)), capabilityHandle: true };
|
|
142
|
+
}
|
|
143
|
+
export const errorType = { kind: "class", name: "Error" };
|
|
144
|
+
export const cleanupType = namedFunction([], [], nullType);
|
|
145
|
+
export const arrayString = { kind: "list", element: stringType };
|
|
146
|
+
export const arrayNumber = { kind: "list", element: numberType };
|
|
147
|
+
export const mapString = (value) => ({ kind: "map", key: stringType, value });
|
|
148
|
+
export const webElementType = { kind: "union", members: [elementType, inputElementType, canvasElementType, dialogElementType] };
|
|
149
|
+
export const fileType = { kind: "named", name: "File" };
|
|
150
|
+
export const fileArrayType = { kind: "list", element: fileType };
|
|
151
|
+
export function moduleInterface(exports, classes = new Map(), namedTypes = new Map(), namedTypeIdentities = new Map(), enums = new Map(), namedTypeReadonlyFields = new Map(), genericTypes = new Map()) {
|
|
152
|
+
return { exports, mutableExports: new Set(), reactiveExports: new Map(), reExports: new Map(), namedTypes, namedTypeReadonlyFields, namedTypeIdentities, genericTypes, typeAliases: new Map(), enums, classes, tests: [], extensionExports: new Map(), extensionData: new Map() };
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/modules/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `velar/web` — routes, the route context, navigation, and the four components the router family publishes.
|
|
3
|
+
*
|
|
4
|
+
* D115 §三: one file per `velar/*` surface, holding that surface's `ValueType`
|
|
5
|
+
* tables and the `webModuleInterfaces` entry they build.
|
|
6
|
+
*/
|
|
7
|
+
import { type ModuleInterface } from "@velarscript/compiler";
|
|
8
|
+
export declare const velarWebModuleEntry: readonly [string, ModuleInterface];
|
|
9
|
+
//# sourceMappingURL=web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/modules/web.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAA0B,KAAK,eAAe,EAAkB,MAAM,uBAAuB,CAAC;AAkDrG,eAAO,MAAM,mBAAmB,EAAE,SAAS,CAAC,MAAM,EAAE,eAAe,CAqB/D,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `velar/web` — routes, the route context, navigation, and the four components the router family publishes.
|
|
3
|
+
*
|
|
4
|
+
* D115 §三: one file per `velar/*` surface, holding that surface's `ValueType`
|
|
5
|
+
* tables and the `webModuleInterfaces` entry they build.
|
|
6
|
+
*/
|
|
7
|
+
import { optionalOf as optional } from "@velarscript/compiler";
|
|
8
|
+
import { routeContextIdentity } from "../analyzer.js";
|
|
9
|
+
import { webComponentConstructor } from "../types.js";
|
|
10
|
+
import { boolType, functionType, mapString, moduleInterface, namedFunction, namedIntrinsic, nodeType, nullType, object, promise, stringType, unknownType, } from "./types.js";
|
|
11
|
+
/**
|
|
12
|
+
* D90 R17-a left exactly one `any` standing in this file, and this is it.
|
|
13
|
+
*
|
|
14
|
+
* `component` holds a component constructor, not a rendered node, so
|
|
15
|
+
* `webNodeType` is the wrong family — the two referees that check this slot
|
|
16
|
+
* (`checkRouteComponent` and `checkWebRouteComponent`) match it with
|
|
17
|
+
* `isWebComponentType`, and `isWebTypeAssignable` refuses a component against a
|
|
18
|
+
* node outright. `unknown`, the answer R17 gives every other boundary position
|
|
19
|
+
* here, is refused by the shape of assignability rather than by the ruling: a
|
|
20
|
+
* writable object field and a List element are both compared *invariantly*, and
|
|
21
|
+
* `unknown` is invariant with nothing, so `List<{path, component: Page}>` — the
|
|
22
|
+
* type a route list bound to a name actually has — would stop being assignable
|
|
23
|
+
* to the Router's `routes` prop. `any` is the only spelling that is invariant
|
|
24
|
+
* with every component type at once, and no published name means "some
|
|
25
|
+
* component"; R17-a declined to mint one. The slot is checked by its two
|
|
26
|
+
* referees, not by this declaration.
|
|
27
|
+
*/
|
|
28
|
+
const routeComponentType = { kind: "any" };
|
|
29
|
+
const routeType = object({
|
|
30
|
+
path: stringType,
|
|
31
|
+
component: routeComponentType,
|
|
32
|
+
});
|
|
33
|
+
const routeContextFields = new Map([
|
|
34
|
+
["path", stringType],
|
|
35
|
+
["params", mapString(stringType)],
|
|
36
|
+
["query", mapString(stringType)],
|
|
37
|
+
["hash", stringType],
|
|
38
|
+
]);
|
|
39
|
+
const routeContextType = { kind: "named", name: "RouteContext", identity: routeContextIdentity };
|
|
40
|
+
const navigationOptionsType = object({ replace: optional(boolType), scroll: optional(boolType) });
|
|
41
|
+
export const velarWebModuleEntry = ["velar/web", moduleInterface(new Map([
|
|
42
|
+
["RouteContext", { kind: "typeObject", name: "RouteContext" }],
|
|
43
|
+
["route", namedIntrinsic("web.route", ["path", "view"], [stringType, unknownType], routeType)],
|
|
44
|
+
["lazy", namedIntrinsic("web.lazy", ["loader", "exportName", "loading", "failed"], [functionType([], promise(unknownType)), stringType, unknownType, unknownType], unknownType, 2)],
|
|
45
|
+
["navigate", namedFunction(["to", "options"], [stringType, navigationOptionsType], nullType, 1)],
|
|
46
|
+
["redirect", namedFunction(["to"], [stringType], nullType)],
|
|
47
|
+
["back", namedFunction([], [], nullType)],
|
|
48
|
+
["forward", namedFunction([], [], nullType)],
|
|
49
|
+
["reload", namedFunction([], [], nullType)],
|
|
50
|
+
["currentRoute", namedFunction([], [], routeContextType)],
|
|
51
|
+
["announce", namedFunction(["message", "priority"], [stringType, stringType], nullType, 1)],
|
|
52
|
+
["domId", namedFunction(["prefix"], [stringType], stringType, 0)],
|
|
53
|
+
["Head", webComponentConstructor("Head", new Map([
|
|
54
|
+
["title", stringType], ["description", stringType], ["canonical", stringType], ["robots", stringType],
|
|
55
|
+
["image", stringType], ["themeColor", stringType], ["language", stringType],
|
|
56
|
+
]), new Set(["title"]), null)],
|
|
57
|
+
["Router", webComponentConstructor("Router", new Map([["routes", { kind: "list", element: routeType }], ["fallback", unknownType]]), new Set(["routes"]), null, "web.router")],
|
|
58
|
+
["Link", webComponentConstructor("Link", new Map([["to", stringType], ["replace", boolType], ["class", optional(stringType)], ["look", optional({ kind: "named", name: "Look" })], ["children", nodeType]]), new Set(["to"]), null)],
|
|
59
|
+
["NavLink", webComponentConstructor("NavLink", new Map([["to", stringType], ["exact", boolType], ["replace", boolType], ["class", optional(stringType)], ["look", optional({ kind: "named", name: "Look" })], ["children", nodeType]]), new Set(["to"]), null)],
|
|
60
|
+
]), new Map(), new Map([["RouteContext", routeContextFields]]), new Map([
|
|
61
|
+
["RouteContext", "@velarscript/web:velar/web#type:RouteContext"],
|
|
62
|
+
]))];
|
|
63
|
+
//# sourceMappingURL=web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/modules/web.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `velar/websocket` — the Web half of the socket surface: `connect` and nothing that listens.
|
|
3
|
+
*
|
|
4
|
+
* D115 §三: one file per `velar/*` surface, holding that surface's `ValueType`
|
|
5
|
+
* tables and the `webModuleInterfaces` entry they build.
|
|
6
|
+
*/
|
|
7
|
+
import { type ModuleInterface, type ValueType } from "@velarscript/compiler";
|
|
8
|
+
export declare const webSocketCloseType: ValueType;
|
|
9
|
+
export declare const webSocketMessageType: ValueType;
|
|
10
|
+
export declare const velarWebSocketModuleEntry: readonly [string, ModuleInterface];
|
|
11
|
+
//# sourceMappingURL=websocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/modules/websocket.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAA0C,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAMrH,eAAO,MAAM,kBAAkB,EAAE,SAAuF,CAAC;AACzH,eAAO,MAAM,oBAAoB,EAAE,SAA+D,CAAC;AAgDnG,eAAO,MAAM,yBAAyB,EAAE,SAAS,CAAC,MAAM,EAAE,eAAe,CAqBvE,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `velar/websocket` — the Web half of the socket surface: `connect` and nothing that listens.
|
|
3
|
+
*
|
|
4
|
+
* D115 §三: one file per `velar/*` surface, holding that surface's `ValueType`
|
|
5
|
+
* tables and the `webModuleInterfaces` entry they build.
|
|
6
|
+
*/
|
|
7
|
+
import { optionalOf as optional } from "@velarscript/compiler";
|
|
8
|
+
import { bytesType, durationType, moduleInterface, namedFunction, nullType, numberType, object, promise, stringType } from "./types.js";
|
|
9
|
+
const webSocketConnectionIdentity = "velar/websocket#type:WebSocketConnection";
|
|
10
|
+
const webSocketCloseIdentity = "velar/websocket#type:WebSocketClose";
|
|
11
|
+
const webSocketConnectionType = { kind: "named", name: "WebSocketConnection", identity: webSocketConnectionIdentity };
|
|
12
|
+
export const webSocketCloseType = { kind: "named", name: "WebSocketClose", identity: webSocketCloseIdentity };
|
|
13
|
+
export const webSocketMessageType = { kind: "union", members: [stringType, bytesType] };
|
|
14
|
+
const webSocketCloseFields = new Map([
|
|
15
|
+
["code", numberType],
|
|
16
|
+
["reason", stringType],
|
|
17
|
+
]);
|
|
18
|
+
const webSocketConnectionFields = new Map([
|
|
19
|
+
// D90 fr-4: one identity, one field roster. A Web connection is always an
|
|
20
|
+
// outbound `connect()` result, which was never upgraded from an Origin and
|
|
21
|
+
// therefore reads back null — the same value the Node runtime gives an
|
|
22
|
+
// outbound connection. Leaving the field off Web instead would make
|
|
23
|
+
// `velar/websocket#type:WebSocketConnection` mean two different things.
|
|
24
|
+
["origin", optional(stringType)],
|
|
25
|
+
["state", namedFunction([], [], stringType)],
|
|
26
|
+
["send", namedFunction(["message"], [webSocketMessageType], promise(nullType))],
|
|
27
|
+
["next", namedFunction([], [], promise(optional(webSocketMessageType)))],
|
|
28
|
+
["closeInfo", namedFunction([], [], promise(webSocketCloseType))],
|
|
29
|
+
["close", namedFunction(["code", "reason"], [numberType, stringType], promise(nullType), 0)],
|
|
30
|
+
]);
|
|
31
|
+
const webSocketConnectOptions = object({
|
|
32
|
+
timeout: optional(durationType),
|
|
33
|
+
maxMessageBytes: optional(numberType),
|
|
34
|
+
maxQueuedMessages: optional(numberType),
|
|
35
|
+
maxQueuedBytes: optional(numberType),
|
|
36
|
+
maxPendingSendBytes: optional(numberType),
|
|
37
|
+
});
|
|
38
|
+
const webSocketErrorIdentities = new Map([
|
|
39
|
+
["WebSocketBackpressureError", "velar/websocket#class:WebSocketBackpressureError"],
|
|
40
|
+
["WebSocketClosedError", "velar/websocket#class:WebSocketClosedError"],
|
|
41
|
+
["WebSocketProtocolError", "velar/websocket#class:WebSocketProtocolError"],
|
|
42
|
+
["WebSocketTimeoutError", "velar/websocket#class:WebSocketTimeoutError"],
|
|
43
|
+
]);
|
|
44
|
+
const webSocketErrorClass = (identity) => ({
|
|
45
|
+
identity,
|
|
46
|
+
parameters: [stringType],
|
|
47
|
+
parameterNames: ["message"],
|
|
48
|
+
requiredParameters: 0,
|
|
49
|
+
base: "Error",
|
|
50
|
+
abstract: false,
|
|
51
|
+
fields: new Map(),
|
|
52
|
+
getters: new Set(),
|
|
53
|
+
abstractGetters: new Set(),
|
|
54
|
+
methods: new Map(),
|
|
55
|
+
abstractMethods: new Set(),
|
|
56
|
+
staticFields: new Map(),
|
|
57
|
+
staticGetters: new Set(),
|
|
58
|
+
staticMethods: new Map(),
|
|
59
|
+
});
|
|
60
|
+
export const velarWebSocketModuleEntry = ["velar/websocket", moduleInterface(new Map([
|
|
61
|
+
["WebSocketConnection", { kind: "typeObject", name: "WebSocketConnection", value: webSocketConnectionType }],
|
|
62
|
+
["WebSocketClose", { kind: "typeObject", name: "WebSocketClose", value: webSocketCloseType }],
|
|
63
|
+
...[...webSocketErrorIdentities].map(([name, identity]) => [name, { kind: "classConstructor", name, identity }]),
|
|
64
|
+
["connect", namedFunction(["url", "options"], [stringType, webSocketConnectOptions], promise(webSocketConnectionType), 1)],
|
|
65
|
+
]), new Map([...webSocketErrorIdentities].map(([name, identity]) => [name, webSocketErrorClass(identity)])), new Map([
|
|
66
|
+
["WebSocketConnection", webSocketConnectionFields],
|
|
67
|
+
["WebSocketClose", webSocketCloseFields],
|
|
68
|
+
]), new Map([
|
|
69
|
+
["WebSocketConnection", webSocketConnectionIdentity],
|
|
70
|
+
["WebSocketClose", webSocketCloseIdentity],
|
|
71
|
+
]), new Map(), new Map([
|
|
72
|
+
["WebSocketConnection", new Set(webSocketConnectionFields.keys())],
|
|
73
|
+
["WebSocketClose", new Set(webSocketCloseFields.keys())],
|
|
74
|
+
]))];
|
|
75
|
+
//# sourceMappingURL=websocket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/modules/websocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The JSX token's structured payload becoming an expression, and the reading of
|
|
3
|
+
* each `{...}` interpolation inside it.
|
|
4
|
+
*
|
|
5
|
+
* The two habits JSX brings from elsewhere — a block comment written in an
|
|
6
|
+
* interpolation, and a `{for item in items:}` block — get one directed message
|
|
7
|
+
* each rather than an expression-parse cascade, and recover as an inert null so
|
|
8
|
+
* the rest of the module still analyzes.
|
|
9
|
+
*/
|
|
10
|
+
import type { Diagnostic } from "@velarscript/compiler";
|
|
11
|
+
import { type Expression, type Token } from "@velarscript/compiler/extension";
|
|
12
|
+
export interface JsxParserHost {
|
|
13
|
+
readonly diagnostics: Diagnostic[];
|
|
14
|
+
parseNestedExpression(fragment: string, offset: number, bracketFragment?: boolean, sourceOffsets?: readonly number[]): Expression;
|
|
15
|
+
}
|
|
16
|
+
export declare function parseJsxExpression(host: JsxParserHost, token: Token): Expression;
|
|
17
|
+
//# sourceMappingURL=jsx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsx.d.ts","sourceRoot":"","sources":["../../../src/parser/expressions/jsx.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAI9E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC;IACnC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAAC;CACnI;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU,CAQhF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import {} from "@velarscript/compiler/extension";
|
|
2
|
+
import { diagnostic, jsxExpression, recoveredDiagnostic, shiftJsxSyntax } from "../spans.js";
|
|
3
|
+
export function parseJsxExpression(host, token) {
|
|
4
|
+
const payload = token.payload;
|
|
5
|
+
if (!payload || payload.kind !== "WebJsxElementSyntax") {
|
|
6
|
+
host.diagnostics.push(diagnostic("VEL5001", "The Web JSX token is missing its structured syntax", token.span));
|
|
7
|
+
return { kind: "LiteralExpression", value: null, raw: "null", span: token.span };
|
|
8
|
+
}
|
|
9
|
+
const syntax = shiftJsxSyntax(payload, token.span.start - payload.span.start);
|
|
10
|
+
return jsxExpression(syntax, (source) => parseJsxEmbedded(host, source), (item) => host.diagnostics.push(item));
|
|
11
|
+
}
|
|
12
|
+
// A '{for item in items: ...}' block inside JSX gets targeted guidance to
|
|
13
|
+
// '.map(...)' instead of an expression-parse cascade; there is no magic JSX
|
|
14
|
+
// control flow. The child recovers as an inert null literal so the rest of the
|
|
15
|
+
// module still analyzes and reports its own guidance in the same compile.
|
|
16
|
+
function parseJsxEmbedded(host, source) {
|
|
17
|
+
// WEB-U13: '{/* ... */}' is the JSX comment habit. VelarScript has no block
|
|
18
|
+
// comment at all, so the interpolation gets one message naming '//' instead
|
|
19
|
+
// of two 'Expected an expression' failures.
|
|
20
|
+
if (/^\s*\/[*/]/u.test(source.source)) {
|
|
21
|
+
host.diagnostics.push(recoveredDiagnostic("VEL5002", "JSX has no comment form; write a '//' comment on its own line outside the markup", source.span));
|
|
22
|
+
return { kind: "LiteralExpression", value: null, raw: "null", span: source.span };
|
|
23
|
+
}
|
|
24
|
+
if (/^\s*for\b/u.test(source.source)) {
|
|
25
|
+
const detail = /^\s*for\s+([A-Za-z_][A-Za-z0-9_]*)\s+in\s+([^:{\n]+):/u.exec(source.source);
|
|
26
|
+
const binding = detail?.[1] ?? "item";
|
|
27
|
+
const iterable = detail?.[2]?.trim() || "items";
|
|
28
|
+
host.diagnostics.push({
|
|
29
|
+
code: "VEL5049",
|
|
30
|
+
message: `Use '{${iterable}.map((${binding}) => ...)}'; JSX has no 'for' blocks, so lists render with '.map(...)'`,
|
|
31
|
+
span: source.span,
|
|
32
|
+
recovered: true,
|
|
33
|
+
});
|
|
34
|
+
return { kind: "LiteralExpression", value: null, raw: "null", span: source.span };
|
|
35
|
+
}
|
|
36
|
+
// JSX interpolation braces are a bracket context: the expression inside
|
|
37
|
+
// '{...}' continues across physical lines exactly as inside parentheses.
|
|
38
|
+
const layoutAtStart = /^[ \t]*(?:rf|fr|f|r)?["'](?:\r\n|\r|\n)/u.test(source.source);
|
|
39
|
+
return layoutAtStart
|
|
40
|
+
? host.parseNestedExpression(source.openingIndent + source.source, source.span.start - source.openingIndent.length, true)
|
|
41
|
+
: host.parseNestedExpression(source.source, source.span.start, true);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=jsx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsx.js","sourceRoot":"","sources":["../../../src/parser/expressions/jsx.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `keyframes:` as a block-valued expression, read the same way a `look:` block
|
|
3
|
+
* is: the layout up front, then the block's own indented source.
|
|
4
|
+
*/
|
|
5
|
+
import type { Diagnostic } from "@velarscript/compiler";
|
|
6
|
+
import { type Expression, type Token, type TokenKind } from "@velarscript/compiler/extension";
|
|
7
|
+
import { type VisualBlockParserHost } from "./visual-block.ts";
|
|
8
|
+
export interface KeyframesExpressionParserHost extends VisualBlockParserHost {
|
|
9
|
+
readonly diagnostics: Diagnostic[];
|
|
10
|
+
parseNestedExpression(fragment: string, offset: number, bracketFragment?: boolean, sourceOffsets?: readonly number[]): Expression;
|
|
11
|
+
peekKind(distance: number): TokenKind;
|
|
12
|
+
skipMistypedDeclaration(): void;
|
|
13
|
+
}
|
|
14
|
+
export declare function parseKeyframesExpression(host: KeyframesExpressionParserHost, token: Token): Expression;
|
|
15
|
+
//# sourceMappingURL=keyframes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyframes.d.ts","sourceRoot":"","sources":["../../../src/parser/expressions/keyframes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAK9F,OAAO,EAAsB,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEnF,MAAM,WAAW,6BAA8B,SAAQ,qBAAqB;IAC1E,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC;IACnC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAAC;IAClI,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,uBAAuB,IAAI,IAAI,CAAC;CACjC;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU,CA6BtG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import {} from "@velarscript/compiler/extension";
|
|
2
|
+
import { WEB_KEYFRAMES_TOKEN } from "../../lexer.js";
|
|
3
|
+
import { visualBlockLayout } from "../../visual-blocks.js";
|
|
4
|
+
import { KeyframesSourceParser } from "../keyframes-source.js";
|
|
5
|
+
import { diagnostic, shiftKeyframesSyntax, span } from "../spans.js";
|
|
6
|
+
import { consumeVisualBlock } from "./visual-block.js";
|
|
7
|
+
export function parseKeyframesExpression(host, token) {
|
|
8
|
+
const layout = visualBlockLayout((distance) => host.peekKind(distance));
|
|
9
|
+
if (layout === "none") {
|
|
10
|
+
host.diagnostics.push(diagnostic("VEL5060", "A keyframes value is written as 'keyframes:' followed by indented 'from:', 'to:', or 'N%:' stops", token.span));
|
|
11
|
+
host.skipMistypedDeclaration();
|
|
12
|
+
return { kind: "LiteralExpression", value: null, raw: "null", span: token.span };
|
|
13
|
+
}
|
|
14
|
+
if (layout === "empty") {
|
|
15
|
+
host.diagnostics.push(diagnostic("VEL5060", "A keyframes block requires at least one indented stop", token.span));
|
|
16
|
+
host.advance();
|
|
17
|
+
return { kind: "LiteralExpression", value: null, raw: "null", span: token.span };
|
|
18
|
+
}
|
|
19
|
+
const block = consumeVisualBlock(host, layout, "Expected keyframe stops", "Expected the end of the keyframes block");
|
|
20
|
+
const payload = block.value === WEB_KEYFRAMES_TOKEN ? block.payload : undefined;
|
|
21
|
+
if (!payload || payload.kind !== "WebKeyframesBlockSyntax") {
|
|
22
|
+
host.diagnostics.push(diagnostic("VEL5060", "The keyframes block is missing its structured syntax", block.span));
|
|
23
|
+
}
|
|
24
|
+
const syntax = payload?.kind === "WebKeyframesBlockSyntax"
|
|
25
|
+
? shiftKeyframesSyntax(payload, block.span.start - payload.span.start)
|
|
26
|
+
: undefined;
|
|
27
|
+
const stops = new KeyframesSourceParser(syntax ?? { kind: "WebKeyframesBlockSyntax", lines: [], span: block.span }, (text, offset, openingIndent) => openingIndent
|
|
28
|
+
? host.parseNestedExpression(openingIndent + text, offset - openingIndent.length, true)
|
|
29
|
+
: host.parseNestedExpression(text, offset), (item) => host.diagnostics.push(item)).parse();
|
|
30
|
+
const expression = { kind: "ExtensionExpression:web:keyframes", stops, span: span(token.span.start, block.span.end) };
|
|
31
|
+
return expression;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=keyframes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyframes.js","sourceRoot":"","sources":["../../../src/parser/expressions/keyframes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `look:` as a block-valued expression: the whole shape is read up front, once,
|
|
3
|
+
* so an unfinished Look value says one thing rather than unravelling into six
|
|
4
|
+
* diagnostics as each expectation fails in turn (LOK-I3).
|
|
5
|
+
*/
|
|
6
|
+
import type { Diagnostic } from "@velarscript/compiler";
|
|
7
|
+
import { type Expression, type Token, type TokenKind } from "@velarscript/compiler/extension";
|
|
8
|
+
import { type VisualBlockParserHost } from "./visual-block.ts";
|
|
9
|
+
export interface LookExpressionParserHost extends VisualBlockParserHost {
|
|
10
|
+
readonly diagnostics: Diagnostic[];
|
|
11
|
+
parseNestedExpression(fragment: string, offset: number, bracketFragment?: boolean, sourceOffsets?: readonly number[]): Expression;
|
|
12
|
+
peekKind(distance: number): TokenKind;
|
|
13
|
+
skipMistypedDeclaration(): void;
|
|
14
|
+
}
|
|
15
|
+
export declare function parseLookExpression(host: LookExpressionParserHost, token: Token): Expression;
|
|
16
|
+
//# sourceMappingURL=look.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"look.d.ts","sourceRoot":"","sources":["../../../src/parser/expressions/look.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAK9F,OAAO,EAAsB,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEnF,MAAM,WAAW,wBAAyB,SAAQ,qBAAqB;IACrE,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC;IACnC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAAC;IAClI,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,uBAAuB,IAAI,IAAI,CAAC;CACjC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU,CAiC5F"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import {} from "@velarscript/compiler/extension";
|
|
2
|
+
import { WEB_LOOK_TOKEN } from "../../lexer.js";
|
|
3
|
+
import { visualBlockLayout } from "../../visual-blocks.js";
|
|
4
|
+
import { LookSourceParser } from "../look-source.js";
|
|
5
|
+
import { diagnostic, shiftLookSyntax, span } from "../spans.js";
|
|
6
|
+
import { consumeVisualBlock } from "./visual-block.js";
|
|
7
|
+
export function parseLookExpression(host, token) {
|
|
8
|
+
// LOK-I3: an unfinished Look value used to unravel into six diagnostics as each
|
|
9
|
+
// expectation failed in turn; the whole shape is read up front, once, instead.
|
|
10
|
+
const layout = visualBlockLayout((distance) => host.peekKind(distance));
|
|
11
|
+
if (layout === "none") {
|
|
12
|
+
host.diagnostics.push(diagnostic("VEL5038", "A Look value is written as 'look:' followed by an indented block of 'property = value' entries", token.span));
|
|
13
|
+
host.skipMistypedDeclaration();
|
|
14
|
+
return { kind: "LiteralExpression", value: null, raw: "null", span: token.span };
|
|
15
|
+
}
|
|
16
|
+
if (layout === "empty") {
|
|
17
|
+
// The colon stays unconsumed so the surrounding statement still ends at
|
|
18
|
+
// its own newline; only this one message describes the missing block.
|
|
19
|
+
host.diagnostics.push(diagnostic("VEL5038", "A Look block requires at least one indented 'property = value' entry", token.span));
|
|
20
|
+
host.advance();
|
|
21
|
+
return { kind: "LiteralExpression", value: null, raw: "null", span: token.span };
|
|
22
|
+
}
|
|
23
|
+
const block = consumeVisualBlock(host, layout, "Expected Look entries", "Expected the end of the Look block");
|
|
24
|
+
const payload = block.value === WEB_LOOK_TOKEN ? block.payload : undefined;
|
|
25
|
+
if (!payload || payload.kind !== "WebLookBlockSyntax") {
|
|
26
|
+
host.diagnostics.push(diagnostic("VEL5038", "The Look block is missing its structured syntax", block.span));
|
|
27
|
+
}
|
|
28
|
+
const syntax = payload?.kind === "WebLookBlockSyntax"
|
|
29
|
+
? shiftLookSyntax(payload, block.span.start - payload.span.start)
|
|
30
|
+
: undefined;
|
|
31
|
+
const entries = new LookSourceParser(syntax ?? { kind: "WebLookBlockSyntax", lines: [], span: block.span }, (text, offset, openingIndent) => openingIndent
|
|
32
|
+
? host.parseNestedExpression(openingIndent + text, offset - openingIndent.length, true)
|
|
33
|
+
: host.parseNestedExpression(text, offset), (item) => host.diagnostics.push(item)).parse();
|
|
34
|
+
const expression = { kind: "ExtensionExpression:web:look", entries, span: span(token.span.start, block.span.end) };
|
|
35
|
+
return expression;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=look.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"look.js","sourceRoot":"","sources":["../../../src/parser/expressions/look.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consuming the block a `look:` or `keyframes:` value is written in.
|
|
3
|
+
*
|
|
4
|
+
* Both expressions are read the same way — the ':' , the layout around the
|
|
5
|
+
* block, and the block token itself — so the consumption is a shared module
|
|
6
|
+
* rather than a copy in each of the two readers.
|
|
7
|
+
*/
|
|
8
|
+
import { type Token, type TokenKind } from "@velarscript/compiler/extension";
|
|
9
|
+
import type { VisualBlockLayout } from "../../visual-blocks.ts";
|
|
10
|
+
export interface VisualBlockParserHost {
|
|
11
|
+
advance(): Token;
|
|
12
|
+
consumeNewlines(): void;
|
|
13
|
+
expect(kind: TokenKind, message: string): Token;
|
|
14
|
+
}
|
|
15
|
+
/** Consumes the ':' , the layout around the block, and the block itself. */
|
|
16
|
+
export declare function consumeVisualBlock(host: VisualBlockParserHost, layout: Exclude<VisualBlockLayout, "empty" | "none">, entries: string, end: string): Token;
|
|
17
|
+
//# sourceMappingURL=visual-block.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visual-block.d.ts","sourceRoot":"","sources":["../../../src/parser/expressions/visual-block.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,WAAW,qBAAqB;IACpC,OAAO,IAAI,KAAK,CAAC;IACjB,eAAe,IAAI,IAAI,CAAC;IACxB,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;CACjD;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,qBAAqB,EAC3B,MAAM,EAAE,OAAO,CAAC,iBAAiB,EAAE,OAAO,GAAG,MAAM,CAAC,EACpD,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,GACV,KAAK,CASP"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consuming the block a `look:` or `keyframes:` value is written in.
|
|
3
|
+
*
|
|
4
|
+
* Both expressions are read the same way — the ':' , the layout around the
|
|
5
|
+
* block, and the block token itself — so the consumption is a shared module
|
|
6
|
+
* rather than a copy in each of the two readers.
|
|
7
|
+
*/
|
|
8
|
+
import {} from "@velarscript/compiler/extension";
|
|
9
|
+
/** Consumes the ':' , the layout around the block, and the block itself. */
|
|
10
|
+
export function consumeVisualBlock(host, layout, entries, end) {
|
|
11
|
+
host.advance();
|
|
12
|
+
if (layout === "bracketed")
|
|
13
|
+
return host.expect("extensionToken", entries);
|
|
14
|
+
host.consumeNewlines();
|
|
15
|
+
host.advance();
|
|
16
|
+
const block = host.expect("extensionToken", entries);
|
|
17
|
+
host.consumeNewlines();
|
|
18
|
+
host.expect("dedent", end);
|
|
19
|
+
return block;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=visual-block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visual-block.js","sourceRoot":"","sources":["../../../src/parser/expressions/visual-block.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAA8B,MAAM,iCAAiC,CAAC;AAS7E,4EAA4E;AAC5E,MAAM,UAAU,kBAAkB,CAChC,IAA2B,EAC3B,MAAoD,EACpD,OAAe,EACf,GAAW;IAEX,IAAI,CAAC,OAAO,EAAE,CAAC;IACf,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC1E,IAAI,CAAC,eAAe,EAAE,CAAC;IACvB,IAAI,CAAC,OAAO,EAAE,CAAC;IACf,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACrD,IAAI,CAAC,eAAe,EAAE,CAAC;IACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,KAAK,CAAC;AACf,CAAC"}
|