@velarscript/web 0.31.0 → 0.33.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 +16 -0
- package/dist/analysis/calls/intrinsics/storage.d.ts.map +1 -0
- package/dist/analysis/calls/intrinsics/storage.js +91 -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 +75 -0
- package/dist/analysis/inference.d.ts.map +1 -0
- package/dist/analysis/inference.js +257 -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 +174 -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 +36 -0
- package/dist/analysis/look/edits.d.ts.map +1 -0
- package/dist/analysis/look/edits.js +80 -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 +156 -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 +62 -0
- package/dist/analysis/look-sites.d.ts.map +1 -0
- package/dist/analysis/look-sites.js +121 -0
- package/dist/analysis/look-sites.js.map +1 -0
- package/dist/analysis/look-values.d.ts +19 -0
- package/dist/analysis/look-values.d.ts.map +1 -1
- package/dist/analysis/look-values.js +38 -0
- package/dist/analysis/look-values.js.map +1 -1
- 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 +211 -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 +31 -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 +188 -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/dist/runtime-sources.generated.d.ts +1 -1
- package/dist/runtime-sources.generated.d.ts.map +1 -1
- package/dist/runtime-sources.generated.js +4 -4
- package/dist/runtime-sources.generated.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ownership.js","sourceRoot":"","sources":["../../../src/analysis/components/ownership.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAkB,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACvI,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAA8B,MAAM,WAAW,CAAC;AAIvD;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAA2B;IACjE,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC;WAC/G,IAAI,CAAC,wBAAwB,EAAE,EAAE,CAAC;QACrC,OAAO,wKAAwK,CAAC;IAClL,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,6BAA6B,CAAC,IAA2B,EAAE,SAA8B;IACvG,uEAAuE;IACvE,yEAAyE;IACzE,yEAAyE;IACzE,+BAA+B;IAC/B,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC;QAAE,OAAO;IACxC,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU;QACxC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9D,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,aAAa;QAAE,OAAO;IAC3B,KAAK,MAAM,OAAO,IAAI,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,SAAS;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAC9B,SAAS,EACT,IAAI,SAAS,CAAC,IAAI,iDAAiD,OAAO,CAAC,GAAG,iOAAiO,OAAO,CAAC,GAAG,qHAAqH,OAAO,CAAC,GAAG,yEAAyE,EACngB,OAAO,CAAC,IAAI,CACb,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,6BAA6B,CAAC,IAA2B,EAAE,SAA8B;IACvG,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU;QACxC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9D,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,aAAa;QAAE,OAAO;IAC3B,MAAM,WAAW,GAAG,wBAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,CAAC,WAAW;QAAE,OAAO;IACzB,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAC9B,SAAS,EACT,IAAI,SAAS,CAAC,IAAI,cAAc,WAAW,CAAC,KAAK,uTAAuT,SAAS,wBAAwB,SAAS,0EAA0E,EAC5d,WAAW,CAAC,IAAI,CACjB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a Web declaration means and what analyzing one does: the types a
|
|
3
|
+
* `component` and an `action` publish, the four reactive declarations
|
|
4
|
+
* (`state`, `computed`, `resource`, `action`), the module-level `import css
|
|
5
|
+
* unsafe`, the scope prescan's answer, and the demotion an imported derived
|
|
6
|
+
* name receives.
|
|
7
|
+
*
|
|
8
|
+
* D115 P4 R3c. Every one of these is reached from the analyzer's statement
|
|
9
|
+
* seams, which stay on the root as the dispatch over statement kinds; the arms
|
|
10
|
+
* themselves live here. `analyzeComponent` calls the same four declaration
|
|
11
|
+
* analyzers from a component body, which is why they are a module both the root
|
|
12
|
+
* and `components/` can call and why the import runs one way only:
|
|
13
|
+
* `components/` reads this module, and this module never reads `components/`.
|
|
14
|
+
*/
|
|
15
|
+
import { type Diagnostic, type Span } from "@velarscript/compiler";
|
|
16
|
+
import { type Expression, type Statement, type TypeReference, type ValueType } from "@velarscript/compiler/extension";
|
|
17
|
+
import { type WebActionDeclaration as ActionDeclaration, type WebComponentDeclaration as ComponentDeclaration, type WebComputedDeclaration as ComputedDeclaration, type WebResourceDeclaration as ResourceDeclaration, type WebStateDeclaration as StateDeclaration, type WebUnsafeCssDeclaration as UnsafeCssDeclaration } from "../ast.ts";
|
|
18
|
+
import { type KeyedRebuildHost } from "./keyed-rebuild.ts";
|
|
19
|
+
/**
|
|
20
|
+
* What the declaration analyzers ask of the analyzer that hosts them: the four
|
|
21
|
+
* span tables a declaration records itself in, the module's unsafe-CSS and
|
|
22
|
+
* resource inputs, and the base-analyzer operations declaring a name performs.
|
|
23
|
+
*
|
|
24
|
+
* It extends `KeyedRebuildHost` because a `computed` declaration is one of the
|
|
25
|
+
* two places a keyed-list rebuild is recorded, so analyzing a declaration
|
|
26
|
+
* really does need everything that advisory needs.
|
|
27
|
+
*/
|
|
28
|
+
export interface DeclarationAnalysisHost extends KeyedRebuildHost {
|
|
29
|
+
/** D71 rule 182: the declaration spans of every `computed` binding in scope. */
|
|
30
|
+
readonly computedBindingSpans: Set<string>;
|
|
31
|
+
/** Local names bound to an imported `export computed`, from the Web interface. */
|
|
32
|
+
readonly importedComputedNames: ReadonlySet<string>;
|
|
33
|
+
/** The resolved spans of those imports, so a local shadow of the name is not one. */
|
|
34
|
+
readonly importedComputedSpans: Set<string>;
|
|
35
|
+
/** The project resources this compile read, which is where an external unsafe stylesheet's text comes from. */
|
|
36
|
+
readonly resources: ReadonlyMap<string, string>;
|
|
37
|
+
/** D114 W: the declaration spans of every `resource` in scope. */
|
|
38
|
+
readonly resourceBindingSpans: Set<string>;
|
|
39
|
+
/** Each external stylesheet already given an order position, which is how a second import of one is recognised. */
|
|
40
|
+
readonly unsafeCssImports: Set<string>;
|
|
41
|
+
/** How many synchronous reactive bodies enclose the expression being inferred; a `computed` initializer is one. */
|
|
42
|
+
synchronousReactiveDepth: number;
|
|
43
|
+
readonly diagnostics: Diagnostic[];
|
|
44
|
+
analyzeFunctionDeclaration(statement: ActionDeclaration, className: null, method: boolean, declareSelf: boolean, forceAsynchronous: boolean, declarationKind: string): void;
|
|
45
|
+
declareBinding(name: string, mutable: boolean, type: ValueType, declarationSpan: Span): void;
|
|
46
|
+
inferExpression(expression: Expression, contextualType?: ValueType): ValueType;
|
|
47
|
+
inferredFunctionResult(statement: ActionDeclaration): ValueType;
|
|
48
|
+
isTopLevelScope(): boolean;
|
|
49
|
+
markDeclaredBindingReactive(name: string, kind: "state" | "prop"): void;
|
|
50
|
+
requireAssignable(actual: ValueType, expected: ValueType, valueSpan: Span): void;
|
|
51
|
+
requireSettledCollectionElement(initializer: Expression, declared: ValueType, annotated: boolean): void;
|
|
52
|
+
resolveAnnotation(reference: TypeReference | null): ValueType;
|
|
53
|
+
resolveValidatedAnnotation(reference: TypeReference | null): ValueType;
|
|
54
|
+
resolvedAsyncResult(type: ValueType): ValueType;
|
|
55
|
+
validateTypeReference(reference: TypeReference): boolean;
|
|
56
|
+
}
|
|
57
|
+
export declare function componentType(host: DeclarationAnalysisHost, statement: ComponentDeclaration): ValueType;
|
|
58
|
+
/**
|
|
59
|
+
* A `state` declaration, at module scope and in a component body alike: the two
|
|
60
|
+
* arms are the same eight lines, so they are written once here.
|
|
61
|
+
*/
|
|
62
|
+
export declare function analyzeStateDeclaration(host: DeclarationAnalysisHost, statement: StateDeclaration): void;
|
|
63
|
+
/**
|
|
64
|
+
* D71 rule 182: a derived value is reactive and read-only, which is exactly
|
|
65
|
+
* the reactive identity a component prop already carries — a bare read lowers
|
|
66
|
+
* through `.get()`, and nothing may write it. Registering that identity
|
|
67
|
+
* rather than `state` is what keeps `bind={doubled}` and every other writable
|
|
68
|
+
* position refusing a derived name for free.
|
|
69
|
+
*/
|
|
70
|
+
export declare function analyzeComputedDeclaration(host: DeclarationAnalysisHost, statement: ComputedDeclaration): void;
|
|
71
|
+
export declare function analyzeResourceDeclaration(host: DeclarationAnalysisHost, statement: ResourceDeclaration): void;
|
|
72
|
+
export declare function actionType(host: DeclarationAnalysisHost, statement: ActionDeclaration): ValueType;
|
|
73
|
+
export declare function analyzeActionDeclaration(host: DeclarationAnalysisHost, statement: ActionDeclaration): void;
|
|
74
|
+
/**
|
|
75
|
+
* LOK-D2 / D53: unsafe CSS is a module-level ordering declaration, whether its
|
|
76
|
+
* source is an external resource or an inline raw block. Nested inside a
|
|
77
|
+
* component or a function it used to pass every check, build, and then appear
|
|
78
|
+
* in no output at all.
|
|
79
|
+
*/
|
|
80
|
+
export declare function analyzeUnsafeCssDeclaration(host: DeclarationAnalysisHost, statement: UnsafeCssDeclaration): void;
|
|
81
|
+
/** The three Web declarations a scope prescan has to see, so a later shadow of one is recognised. */
|
|
82
|
+
export declare function webScopeDeclaration(statement: Statement): {
|
|
83
|
+
readonly name: string;
|
|
84
|
+
readonly span: Span;
|
|
85
|
+
} | null;
|
|
86
|
+
/**
|
|
87
|
+
* D71 rule 184: a cross-module `computed` travels through `reactiveExports`
|
|
88
|
+
* so its bare read lowers through `.get()` like an exported `state` — but it
|
|
89
|
+
* is not writable, and the imported binding must not inherit the writable
|
|
90
|
+
* identity that carries `bind={...}` and `event => name = ...`. The Web
|
|
91
|
+
* extension publishes which exported names are derived, so the import is
|
|
92
|
+
* demoted to the read-only reactive identity here.
|
|
93
|
+
*
|
|
94
|
+
* `markCore` is the base analyzer's own registration, which only the class can
|
|
95
|
+
* reach: this rule decides which identity the name receives and then hands the
|
|
96
|
+
* decision back.
|
|
97
|
+
*/
|
|
98
|
+
export declare function markWebBindingReactive(host: DeclarationAnalysisHost, name: string, kind: "state" | "prop", markCore: (name: string, kind: "state" | "prop") => void): void;
|
|
99
|
+
//# sourceMappingURL=declarations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declarations.d.ts","sourceRoot":"","sources":["../../src/analysis/declarations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a Web declaration means and what analyzing one does: the types a
|
|
3
|
+
* `component` and an `action` publish, the four reactive declarations
|
|
4
|
+
* (`state`, `computed`, `resource`, `action`), the module-level `import css
|
|
5
|
+
* unsafe`, the scope prescan's answer, and the demotion an imported derived
|
|
6
|
+
* name receives.
|
|
7
|
+
*
|
|
8
|
+
* D115 P4 R3c. Every one of these is reached from the analyzer's statement
|
|
9
|
+
* seams, which stay on the root as the dispatch over statement kinds; the arms
|
|
10
|
+
* themselves live here. `analyzeComponent` calls the same four declaration
|
|
11
|
+
* analyzers from a component body, which is why they are a module both the root
|
|
12
|
+
* and `components/` can call and why the import runs one way only:
|
|
13
|
+
* `components/` reads this module, and this module never reads `components/`.
|
|
14
|
+
*/
|
|
15
|
+
import {} from "@velarscript/compiler";
|
|
16
|
+
import { anyType, boolType, describeType, isInvalidType, nullType, optionalOf, spanIdentity, stringType, unknownType, } from "@velarscript/compiler/extension";
|
|
17
|
+
import { isWebStatement, } from "../ast.js";
|
|
18
|
+
import { webComponentConstructor } from "../types.js";
|
|
19
|
+
import { recordDerivedKeyedListRebuild } from "./keyed-rebuild.js";
|
|
20
|
+
import { containsCssImport, firstRelativeCssAssetAddress } from "./look-sites.js";
|
|
21
|
+
import { diagnostic } from "./web-types.js";
|
|
22
|
+
export function componentType(host, statement) {
|
|
23
|
+
const props = new Map(statement.parameters.map((parameter) => [parameter.name, host.resolveValidatedAnnotation(parameter.type)]));
|
|
24
|
+
if (!props.has("class"))
|
|
25
|
+
props.set("class", optionalOf(stringType));
|
|
26
|
+
if (!props.has("look"))
|
|
27
|
+
props.set("look", optionalOf({ kind: "named", name: "Look" }));
|
|
28
|
+
return webComponentConstructor(statement.name, props, new Set(statement.parameters.filter((parameter) => !parameter.defaultValue).map((parameter) => parameter.name)), statement.handleType ? host.resolveValidatedAnnotation(statement.handleType) : null);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A `state` declaration, at module scope and in a component body alike: the two
|
|
32
|
+
* arms are the same eight lines, so they are written once here.
|
|
33
|
+
*/
|
|
34
|
+
export function analyzeStateDeclaration(host, statement) {
|
|
35
|
+
const annotationValid = statement.type ? host.validateTypeReference(statement.type) : true;
|
|
36
|
+
const annotationContext = statement.type ? host.resolveValidatedAnnotation(statement.type) : null;
|
|
37
|
+
const actual = host.inferExpression(statement.initializer, annotationContext ?? unknownType);
|
|
38
|
+
const declared = annotationContext ?? actual;
|
|
39
|
+
if (annotationValid)
|
|
40
|
+
host.requireAssignable(actual, declared, statement.initializer.span);
|
|
41
|
+
host.requireSettledCollectionElement(statement.initializer, declared, annotationContext !== null);
|
|
42
|
+
host.declareBinding(statement.name, true, declared, statement.span);
|
|
43
|
+
host.markDeclaredBindingReactive(statement.name, "state");
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* D71 rule 182: a derived value is reactive and read-only, which is exactly
|
|
47
|
+
* the reactive identity a component prop already carries — a bare read lowers
|
|
48
|
+
* through `.get()`, and nothing may write it. Registering that identity
|
|
49
|
+
* rather than `state` is what keeps `bind={doubled}` and every other writable
|
|
50
|
+
* position refusing a derived name for free.
|
|
51
|
+
*/
|
|
52
|
+
export function analyzeComputedDeclaration(host, statement) {
|
|
53
|
+
const annotationValid = statement.type ? host.validateTypeReference(statement.type) : true;
|
|
54
|
+
const annotationContext = statement.type ? host.resolveValidatedAnnotation(statement.type) : null;
|
|
55
|
+
// The initializer re-runs on every dependency change, so it is a deferred
|
|
56
|
+
// read for the module-initialization-cycle classification, exactly like a
|
|
57
|
+
// watch subject.
|
|
58
|
+
host.synchronousReactiveDepth += 1;
|
|
59
|
+
const actual = host.inferExpression(statement.initializer, annotationContext ?? unknownType);
|
|
60
|
+
host.synchronousReactiveDepth -= 1;
|
|
61
|
+
const declared = annotationContext ?? actual;
|
|
62
|
+
if (annotationValid)
|
|
63
|
+
host.requireAssignable(actual, declared, statement.initializer.span);
|
|
64
|
+
host.declareBinding(statement.name, false, declared, statement.span);
|
|
65
|
+
host.markDeclaredBindingReactive(statement.name, "prop");
|
|
66
|
+
host.computedBindingSpans.add(spanIdentity(statement.span));
|
|
67
|
+
recordDerivedKeyedListRebuild(host, statement);
|
|
68
|
+
}
|
|
69
|
+
export function analyzeResourceDeclaration(host, statement) {
|
|
70
|
+
const annotated = statement.type ? host.resolveAnnotation(statement.type) : null;
|
|
71
|
+
const annotationValid = statement.type ? host.validateTypeReference(statement.type) : true;
|
|
72
|
+
const annotationContext = statement.type ? host.resolveValidatedAnnotation(statement.type) : null;
|
|
73
|
+
const expected = annotationContext ? { kind: "promise", value: annotationContext } : unknownType;
|
|
74
|
+
const actual = host.inferExpression(statement.initializer, expected);
|
|
75
|
+
let value = annotationContext ?? unknownType;
|
|
76
|
+
if (actual.kind === "promise") {
|
|
77
|
+
if (annotated && annotationValid)
|
|
78
|
+
host.requireAssignable(actual.value, annotated, statement.initializer.span);
|
|
79
|
+
else if (!statement.type)
|
|
80
|
+
value = actual.value;
|
|
81
|
+
}
|
|
82
|
+
else if (actual.kind === "any") {
|
|
83
|
+
value = annotationContext ?? anyType;
|
|
84
|
+
}
|
|
85
|
+
else if (!isInvalidType(actual)) {
|
|
86
|
+
host.diagnostics.push(diagnostic("VEL4016", `A resource initializer must return Promise<T>, received ${describeType(actual)}`, statement.initializer.span));
|
|
87
|
+
}
|
|
88
|
+
const fields = new Map([
|
|
89
|
+
["value", value.kind === "null" ? nullType : optionalOf(value)],
|
|
90
|
+
["loading", boolType],
|
|
91
|
+
["ready", boolType],
|
|
92
|
+
["error", optionalOf({ kind: "class", name: "Error" })],
|
|
93
|
+
["reload", { kind: "function", parameters: [], requiredParameters: 0, result: { kind: "promise", value: nullType } }],
|
|
94
|
+
]);
|
|
95
|
+
host.declareBinding(statement.name, false, { kind: "object", fields }, statement.span);
|
|
96
|
+
host.resourceBindingSpans.add(spanIdentity(statement.span));
|
|
97
|
+
}
|
|
98
|
+
export function actionType(host, statement) {
|
|
99
|
+
const declaredResult = host.resolvedAsyncResult(host.inferredFunctionResult(statement));
|
|
100
|
+
const rest = statement.parameters.find((parameter) => parameter.rest);
|
|
101
|
+
return {
|
|
102
|
+
kind: "action",
|
|
103
|
+
parameters: statement.parameters.filter((parameter) => !parameter.rest).map((parameter) => host.resolveValidatedAnnotation(parameter.type)),
|
|
104
|
+
parameterNames: statement.parameters.filter((parameter) => !parameter.rest).map((parameter) => parameter.name),
|
|
105
|
+
requiredParameters: statement.parameters.filter((parameter) => !parameter.rest && !parameter.defaultValue).length,
|
|
106
|
+
...(rest ? { rest: host.resolveValidatedAnnotation(rest.type) } : {}),
|
|
107
|
+
result: { kind: "promise", value: declaredResult },
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export function analyzeActionDeclaration(host, statement) {
|
|
111
|
+
host.declareBinding(statement.name, false, actionType(host, statement), statement.span);
|
|
112
|
+
host.analyzeFunctionDeclaration(statement, null, true, false, true, "Action");
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* LOK-D2 / D53: unsafe CSS is a module-level ordering declaration, whether its
|
|
116
|
+
* source is an external resource or an inline raw block. Nested inside a
|
|
117
|
+
* component or a function it used to pass every check, build, and then appear
|
|
118
|
+
* in no output at all.
|
|
119
|
+
*/
|
|
120
|
+
export function analyzeUnsafeCssDeclaration(host, statement) {
|
|
121
|
+
if (!host.isTopLevelScope()) {
|
|
122
|
+
host.diagnostics.push(diagnostic("VEL5037", "Unsafe CSS is module-level; move the declaration to the top of the module so its order against Look stays visible", statement.span));
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
if (statement.source.kind === "external" && host.unsafeCssImports.has(statement.source.path)) {
|
|
126
|
+
host.diagnostics.push(diagnostic("VEL5037", `Unsafe CSS '${statement.source.path}' is imported more than once; each stylesheet must have one explicit order position`, statement.span));
|
|
127
|
+
}
|
|
128
|
+
if (statement.source.kind === "external")
|
|
129
|
+
host.unsafeCssImports.add(statement.source.path);
|
|
130
|
+
const source = statement.source.kind === "inline" ? statement.source.css : host.resources.get(statement.source.path);
|
|
131
|
+
const subject = statement.source.kind === "inline" ? "Inline unsafe CSS" : `Unsafe CSS '${statement.source.path}'`;
|
|
132
|
+
if (source && containsCssImport(source)) {
|
|
133
|
+
host.diagnostics.push(diagnostic("VEL5037", `${subject} contains @import; declare every stylesheet with 'import css unsafe' so project order remains visible`, statement.source.span));
|
|
134
|
+
}
|
|
135
|
+
if (source) {
|
|
136
|
+
const relativeAddress = firstRelativeCssAssetAddress(source);
|
|
137
|
+
if (relativeAddress)
|
|
138
|
+
host.diagnostics.push(diagnostic("VEL5037", `${subject} uses relative asset address ${relativeAddress.syntax}(${JSON.stringify(relativeAddress.value)}); use a project-public /path, data URL, fragment, or absolute URL so extracted asset ownership stays explicit`, statement.source.span));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/** The three Web declarations a scope prescan has to see, so a later shadow of one is recognised. */
|
|
142
|
+
export function webScopeDeclaration(statement) {
|
|
143
|
+
if (!isWebStatement(statement))
|
|
144
|
+
return null;
|
|
145
|
+
return statement.kind === "ExtensionStatement:web:state" || statement.kind === "ExtensionStatement:web:computed"
|
|
146
|
+
|| statement.kind === "ExtensionStatement:web:resource"
|
|
147
|
+
? { name: statement.name, span: statement.span }
|
|
148
|
+
: null;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* D71 rule 184: a cross-module `computed` travels through `reactiveExports`
|
|
152
|
+
* so its bare read lowers through `.get()` like an exported `state` — but it
|
|
153
|
+
* is not writable, and the imported binding must not inherit the writable
|
|
154
|
+
* identity that carries `bind={...}` and `event => name = ...`. The Web
|
|
155
|
+
* extension publishes which exported names are derived, so the import is
|
|
156
|
+
* demoted to the read-only reactive identity here.
|
|
157
|
+
*
|
|
158
|
+
* `markCore` is the base analyzer's own registration, which only the class can
|
|
159
|
+
* reach: this rule decides which identity the name receives and then hands the
|
|
160
|
+
* decision back.
|
|
161
|
+
*/
|
|
162
|
+
export function markWebBindingReactive(host, name, kind, markCore) {
|
|
163
|
+
// Only the import itself is demoted. A local `state` of the same name in a
|
|
164
|
+
// component or a block is a shadow that really is writable, and demoting it
|
|
165
|
+
// would compile its assignment as a plain store into the handle.
|
|
166
|
+
const imported = kind === "state" && host.isTopLevelScope() && host.importedComputedNames.has(name);
|
|
167
|
+
markCore(name, imported ? "prop" : kind);
|
|
168
|
+
if (!imported)
|
|
169
|
+
return;
|
|
170
|
+
const binding = host.lookup(name);
|
|
171
|
+
if (!binding)
|
|
172
|
+
return;
|
|
173
|
+
host.computedBindingSpans.add(spanIdentity(binding.span));
|
|
174
|
+
host.importedComputedSpans.add(spanIdentity(binding.span));
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=declarations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declarations.js","sourceRoot":"","sources":["../../src/analysis/declarations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the Web extension adds to expression inference, either side of the core
|
|
3
|
+
* walk: the shapes it refuses before the core sees them, the answers it has
|
|
4
|
+
* already computed and hands back instead of walking again, the Look length a
|
|
5
|
+
* builder call folds to, and the two reports a call earns once its type is
|
|
6
|
+
* known. The extension's own call and type-syntax rules — a component element
|
|
7
|
+
* called like a function, and `Component<Props, Handle>` — are here too.
|
|
8
|
+
*
|
|
9
|
+
* D115 P4 R3c. The dispatch itself stays on the analyzer: `inferExpression` and
|
|
10
|
+
* `inferExtensionExpression` are seams the core owns, and what they hand to the
|
|
11
|
+
* JSX, keyframes and Look walks is the one thing that is genuinely a dispatch.
|
|
12
|
+
* Everything on either side of it is a rule, and rules live here.
|
|
13
|
+
*/
|
|
14
|
+
import { type Span } from "@velarscript/compiler";
|
|
15
|
+
import { type Expression, type ExtensionValueType, type TypeReference, type TypeSyntax, type ValueType } from "@velarscript/compiler/extension";
|
|
16
|
+
import { type LookAnalysisHost } from "./look/host.ts";
|
|
17
|
+
import { type ReactiveNamesHost } from "./reactivity/host.ts";
|
|
18
|
+
import { type RetiredAccessorHost } from "./reactivity/retired-accessors.ts";
|
|
19
|
+
/** The state the inference rules own: the probe cache, and the two module inputs a call is proved against. */
|
|
20
|
+
export interface ExpressionInferenceHost {
|
|
21
|
+
constantValue(expression: Expression): string | number | boolean | null | undefined;
|
|
22
|
+
importedMemberOf(name: string): {
|
|
23
|
+
readonly source: string;
|
|
24
|
+
readonly imported: string | null;
|
|
25
|
+
} | null;
|
|
26
|
+
resolvedCallArgument(expression: Extract<Expression, {
|
|
27
|
+
kind: "CallExpression";
|
|
28
|
+
}>, index: number): Expression | null;
|
|
29
|
+
/** The Look-arithmetic hints this walk records for the emitter, keyed by expression span. */
|
|
30
|
+
readonly extensionCalls: Map<string, string>;
|
|
31
|
+
/**
|
|
32
|
+
* Operands probed for Look arithmetic. The core analyzer re-requests one
|
|
33
|
+
* immediately after the probe declines, so the answer is parked here and
|
|
34
|
+
* consumed once — that is what keeps operand analysis single-run and operand
|
|
35
|
+
* diagnostics unrepeated.
|
|
36
|
+
*/
|
|
37
|
+
readonly probedOperandTypes: Map<string, ValueType>;
|
|
38
|
+
/** The names this module declares as public configuration, from the program's own reading. Replaced per program. */
|
|
39
|
+
readonly publicConfigNames: ReadonlySet<string>;
|
|
40
|
+
/** D114 0.29.0 LC-D1: the manifest's `web.publicConfig`, or null when this compile read no project manifest. */
|
|
41
|
+
readonly webPublicConfig: Readonly<Record<string, unknown>> | null;
|
|
42
|
+
/** The module's source, which is what a component-call refusal quotes the arguments out of. */
|
|
43
|
+
readonly webSourceText: string;
|
|
44
|
+
fieldsOf(identity: string): ReadonlyMap<string, ValueType> | null;
|
|
45
|
+
typeError(message: string, errorSpan: Span): void;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The one face the inference rules read. It is an intersection because the
|
|
49
|
+
* rules on either side of the core walk really do reach three other groups: a
|
|
50
|
+
* call is checked as a Look builder call, a zero-argument call of a derived
|
|
51
|
+
* name is refused, and an identifier read is recorded for the D71 migration.
|
|
52
|
+
*/
|
|
53
|
+
export type InferenceHost = ExpressionInferenceHost & LookAnalysisHost & ReactiveNamesHost & RetiredAccessorHost;
|
|
54
|
+
/**
|
|
55
|
+
* The Web shapes refused before the core analyzer sees the expression, in the
|
|
56
|
+
* order they are asked. `undefined` means nothing here claimed the expression
|
|
57
|
+
* and the extension dispatch continues.
|
|
58
|
+
*/
|
|
59
|
+
export declare function webExpressionShapeRefusals(host: InferenceHost, expression: Expression): ValueType | undefined;
|
|
60
|
+
/** The two Web expressions that are a value rather than a walk: a misplaced Look hook, and a unit literal. */
|
|
61
|
+
export declare function webExtensionValueType(host: InferenceHost, expression: Expression): ValueType | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* The answers the Web extension already holds for this expression, given back
|
|
64
|
+
* instead of walking it a second time. Null means the core walk should run.
|
|
65
|
+
*/
|
|
66
|
+
export declare function answeredBeforeInference(host: InferenceHost, expression: Expression): ValueType | null;
|
|
67
|
+
/** The compile-time Look length a builder call folds to, or null when the call is not one. */
|
|
68
|
+
export declare function foldedWebLength(host: InferenceHost, expression: Expression): ValueType | null;
|
|
69
|
+
/** Infers one builder slot and parks the answer in the probe cache, so the call's own analysis reads it back. */
|
|
70
|
+
export declare function probedSlotType(host: InferenceHost, argument: Expression): ValueType;
|
|
71
|
+
/** The two reports a call earns once the core walk has answered its type. */
|
|
72
|
+
export declare function reportInferredWebCall(host: InferenceHost, expression: Expression, result: ValueType): void;
|
|
73
|
+
export declare function inferWebExtensionCall(host: InferenceHost, callee: ExtensionValueType, arguments_: readonly Expression[], argumentNames: readonly (string | null)[] | undefined, callSpan: Span): ValueType | undefined;
|
|
74
|
+
export declare function validateWebExtensionTypeSyntax(host: InferenceHost, syntax: TypeSyntax, validate: (syntax: TypeSyntax) => boolean, resolve: (reference: TypeReference) => ValueType): boolean | undefined;
|
|
75
|
+
//# sourceMappingURL=inference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inference.d.ts","sourceRoot":"","sources":["../../src/analysis/inference.ts"],"names":[],"mappings":"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"}
|