@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":"attributes.js","sourceRoot":"","sources":["../../../src/analysis/jsx/attributes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The JSX element itself: the native tag roster and the per-element document
|
|
3
|
+
* rules, the component element's props, and the `ref` a component exposes.
|
|
4
|
+
*
|
|
5
|
+
* D115 P4 R3b. `inferJsx` is the walk — it keeps the children loop, because the
|
|
6
|
+
* recursion into a nested element is what that loop is, and the attribute,
|
|
7
|
+
* key, and security rules it calls out to are the other files in this
|
|
8
|
+
* directory.
|
|
9
|
+
*/
|
|
10
|
+
import { type ValueType } from "@velarscript/compiler/extension";
|
|
11
|
+
import { type WebJsxAttribute as JSXAttribute, type WebJsxElementExpression as JSXElementExpression } from "../../ast.ts";
|
|
12
|
+
import { type WebComponentType } from "../../types.ts";
|
|
13
|
+
import { type JsxAnalysisHost } from "./host.ts";
|
|
14
|
+
export declare function inferJsx(host: JsxAnalysisHost, expression: JSXElementExpression): ValueType;
|
|
15
|
+
export declare function analyzeComponentElement(host: JsxAnalysisHost, expression: JSXElementExpression): void;
|
|
16
|
+
export declare function analyzeComponentRef(host: JsxAnalysisHost, expression: JSXElementExpression, attribute: JSXAttribute, component: WebComponentType): void;
|
|
17
|
+
//# sourceMappingURL=elements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../../../src/analysis/jsx/elements.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAA6F,KAAK,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5J,OAAO,EAAE,KAAK,eAAe,IAAI,YAAY,EAAE,KAAK,uBAAuB,IAAI,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAI1H,OAAO,EAA4F,KAAK,gBAAgB,EAAe,MAAM,gBAAgB,CAAC;AAM9J,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAIjD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,oBAAoB,GAAG,SAAS,CA+D3F;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAmFrG;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,eAAe,EACrB,UAAU,EAAE,oBAAoB,EAChC,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,gBAAgB,GAC1B,IAAI,CAsBN"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The JSX element itself: the native tag roster and the per-element document
|
|
3
|
+
* rules, the component element's props, and the `ref` a component exposes.
|
|
4
|
+
*
|
|
5
|
+
* D115 P4 R3b. `inferJsx` is the walk — it keeps the children loop, because the
|
|
6
|
+
* recursion into a nested element is what that loop is, and the attribute,
|
|
7
|
+
* key, and security rules it calls out to are the other files in this
|
|
8
|
+
* directory.
|
|
9
|
+
*/
|
|
10
|
+
import { boolType, describeType, isInvalidType, nonOptional, spanIdentity, stringType, unknownType } from "@velarscript/compiler/extension";
|
|
11
|
+
import {} from "../../ast.js";
|
|
12
|
+
import { isWebCustomElementName, WEB_NATIVE_ELEMENTS } from "../../elements.js";
|
|
13
|
+
import { JSX_SCALAR_TEXT_HINT } from "../../emitter.js";
|
|
14
|
+
import { nearestLookName } from "../../look.js";
|
|
15
|
+
import { isWebComponentConstructor, isWebComponentType, webComponentHandle, webComponentIntrinsic, webNodeType } from "../../types.js";
|
|
16
|
+
import { componentRefHandleRefusal } from "../component-guidance.js";
|
|
17
|
+
import { reportLookDirectiveOverlap } from "../look/entries.js";
|
|
18
|
+
import { containsPromise, hasAccessibleJsxContent, hasAccessibleSvgName } from "../routes.js";
|
|
19
|
+
import { diagnostic, removedJsxControlAttributes } from "../web-types.js";
|
|
20
|
+
import { analyzeInlineVisualAttribute, analyzeJsxLookAttribute, analyzeNativeJsxAttribute } from "./attributes.js";
|
|
21
|
+
import {} from "./host.js";
|
|
22
|
+
import { checkKeyedInterpolation } from "./keys.js";
|
|
23
|
+
import { reportIframeSrcdocSandbox } from "./security.js";
|
|
24
|
+
export function inferJsx(host, expression) {
|
|
25
|
+
host.jsxDepth += 1;
|
|
26
|
+
const attributes = new Map(expression.attributes.map((attribute) => [attribute.name, attribute]));
|
|
27
|
+
const component = /^[A-Z]/u.test(expression.tag);
|
|
28
|
+
if (expression.tag && !component && !WEB_NATIVE_ELEMENTS.has(expression.tag) && !isWebCustomElementName(expression.tag)) {
|
|
29
|
+
const nearest = nearestLookName(expression.tag, WEB_NATIVE_ELEMENTS);
|
|
30
|
+
host.diagnostics.push(diagnostic("VEL5061", nearest
|
|
31
|
+
? `Unknown native element '<${expression.tag}>'; did you mean '<${nearest}>'?`
|
|
32
|
+
: `Unknown native element '<${expression.tag}>'; use a standard HTML, SVG, or MathML element, or a lowercase hyphenated custom element such as '<user-card>'`, expression.tagSpan));
|
|
33
|
+
}
|
|
34
|
+
if (attributes.size !== expression.attributes.length)
|
|
35
|
+
host.diagnostics.push(diagnostic("VEL5014", `JSX element '${expression.tag}' has duplicate attributes`, expression.span));
|
|
36
|
+
reportLookDirectiveOverlap(host, expression);
|
|
37
|
+
for (const attribute of expression.attributes) {
|
|
38
|
+
if (removedJsxControlAttributes.has(attribute.name)) {
|
|
39
|
+
host.diagnostics.push(diagnostic("VEL5029", `JSX '${attribute.name}' was removed; branch with an ordinary expression such as {condition ? <A /> : <B />}`, attribute.span));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (expression.tag && !component) {
|
|
43
|
+
for (const attribute of expression.attributes)
|
|
44
|
+
if (!removedJsxControlAttributes.has(attribute.name))
|
|
45
|
+
analyzeNativeJsxAttribute(host, expression, attribute);
|
|
46
|
+
if (attributes.has("unsafe:html") && expression.children.length > 0)
|
|
47
|
+
host.diagnostics.push(diagnostic("VEL5015", "unsafe:html cannot be combined with JSX children", expression.span));
|
|
48
|
+
if (expression.tag === "img" && !attributes.has("alt"))
|
|
49
|
+
host.diagnostics.push(diagnostic("VEL5016", "An img element requires an alt attribute", expression.span));
|
|
50
|
+
if (expression.tag === "button" && !attributes.has("aria-label") && !attributes.has("aria-labelledby") && !hasAccessibleJsxContent(expression))
|
|
51
|
+
host.diagnostics.push(diagnostic("VEL5026", "A button requires text content, aria-label, or aria-labelledby", expression.span));
|
|
52
|
+
if (expression.tag === "svg" && !hasAccessibleSvgName(expression))
|
|
53
|
+
host.diagnostics.push(diagnostic("VEL5030", "An svg element requires a non-empty title, aria-label, aria-labelledby, or aria-hidden='true'", expression.span));
|
|
54
|
+
if (expression.tag === "a" && !attributes.has("href"))
|
|
55
|
+
host.diagnostics.push(diagnostic("VEL5027", "A native anchor requires href; use a button for actions", expression.span));
|
|
56
|
+
const target = attributes.get("target")?.value;
|
|
57
|
+
const relation = attributes.get("rel")?.value;
|
|
58
|
+
if (expression.tag === "a" && target === "_blank" && (typeof relation !== "string" || !relation.split(/\s+/u).includes("noopener"))) {
|
|
59
|
+
host.diagnostics.push(diagnostic("VEL5028", "An anchor with target='_blank' requires rel='noopener'", expression.span));
|
|
60
|
+
}
|
|
61
|
+
if (expression.tag === "iframe" && attributes.has("srcdoc"))
|
|
62
|
+
reportIframeSrcdocSandbox(host, expression, attributes);
|
|
63
|
+
}
|
|
64
|
+
if (component)
|
|
65
|
+
analyzeComponentElement(host, expression);
|
|
66
|
+
const key = expression.attributes.find((attribute) => attribute.name === "key");
|
|
67
|
+
if (key)
|
|
68
|
+
host.staticJsxKeys.push({ element: expression, attribute: key });
|
|
69
|
+
for (const child of expression.children) {
|
|
70
|
+
if (child.kind === "JSXExpressionChild") {
|
|
71
|
+
// The keyed recognizer is purely syntactic, so the honored roots of this
|
|
72
|
+
// interpolation are known before its expression is inferred; a nested
|
|
73
|
+
// element then knows whether its own key is honored (WEB-C1).
|
|
74
|
+
checkKeyedInterpolation(host, child.expression);
|
|
75
|
+
const childType = host.inferExpression(child.expression);
|
|
76
|
+
if (containsPromise(host.expandAliases(childType)))
|
|
77
|
+
host.diagnostics.push(diagnostic("VEL5031", "JSX cannot render a Promise; await it before rendering", child.expression.span));
|
|
78
|
+
else if (!isInvalidType(childType) && !(child.expression.kind === "ListExpression" && child.expression.elements.length === 0)
|
|
79
|
+
&& !host.isJsxRenderable(childType)) {
|
|
80
|
+
host.diagnostics.push(diagnostic("VEL5047", `JSX can render only text, finite numbers, bool, enums, WebNode values, and Lists of those values; received ${describeType(childType)}`, child.expression.span));
|
|
81
|
+
}
|
|
82
|
+
else if (host.isScalarTextType(childType)) {
|
|
83
|
+
// F1: the checked type is the only place this is knowable. A span
|
|
84
|
+
// already claimed by another extension hint keeps it — the fast path
|
|
85
|
+
// is an optimisation and yields, where a look's arithmetic lowering
|
|
86
|
+
// would not.
|
|
87
|
+
const identity = spanIdentity(child.expression.span);
|
|
88
|
+
if (!host.extensionCalls.has(identity))
|
|
89
|
+
host.extensionCalls.set(identity, JSX_SCALAR_TEXT_HINT);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else if (child.kind === "ExtensionExpression:web:jsx") {
|
|
93
|
+
inferJsx(host, child);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
host.jsxDepth -= 1;
|
|
97
|
+
return webNodeType;
|
|
98
|
+
}
|
|
99
|
+
export function analyzeComponentElement(host, expression) {
|
|
100
|
+
const component = host.inferExpression({ kind: "IdentifierExpression", name: expression.tag, span: expression.tagSpan });
|
|
101
|
+
if (!isWebComponentType(component)) {
|
|
102
|
+
host.diagnostics.push(diagnostic("VEL5011", `Unknown component '${expression.tag}'`, expression.span));
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const provided = new Set(expression.attributes.filter((attribute) => attribute.name !== "key" && attribute.name !== "ref" && !removedJsxControlAttributes.has(attribute.name)).map((attribute) => attribute.name));
|
|
106
|
+
const hasChildren = expression.children.some((child) => child.kind !== "JSXText" || child.value.trim().length > 0);
|
|
107
|
+
if (hasChildren && provided.has("children"))
|
|
108
|
+
host.diagnostics.push(diagnostic("VEL5014", `Component '${expression.tag}' receives children both as a prop and as JSX content`, expression.span));
|
|
109
|
+
// D31 item 26: the message used to state the deficiency and stop. `children`
|
|
110
|
+
// is an ordinary named prop, so the remedy is one declaration and the
|
|
111
|
+
// diagnostic is the only place the charter's reader meets its spelling.
|
|
112
|
+
else if (hasChildren && !component.properties.has("children"))
|
|
113
|
+
host.diagnostics.push(diagnostic("VEL5018", `Component '${expression.tag}' does not declare JSX children; declare a 'children: WebNode' prop to accept them`, expression.span));
|
|
114
|
+
else if (hasChildren) {
|
|
115
|
+
provided.add("children");
|
|
116
|
+
host.requireAssignable(webNodeType, component.properties.get("children"), expression.span);
|
|
117
|
+
}
|
|
118
|
+
for (const required of component.requiredProperties) {
|
|
119
|
+
if (provided.has(required))
|
|
120
|
+
continue;
|
|
121
|
+
// D31-26 promised that `children: WebNode?` is the omittable form; the
|
|
122
|
+
// implementation makes a prop omittable through its default value, so the
|
|
123
|
+
// diagnostic teaches the spelling that actually omits (WEB-N4).
|
|
124
|
+
const declared = component.properties.get(required);
|
|
125
|
+
const optionalDeclaration = declared !== undefined && host.expandAliases(declared).kind === "optional";
|
|
126
|
+
host.diagnostics.push(diagnostic("VEL5012", optionalDeclaration
|
|
127
|
+
? `Component '${expression.tag}' requires prop '${required}'; a prop becomes omittable through its default value — declare '${required}: ${describeType(declared)} = null' on the component`
|
|
128
|
+
: `Component '${expression.tag}' requires prop '${required}'`, expression.span));
|
|
129
|
+
}
|
|
130
|
+
for (const attribute of expression.attributes) {
|
|
131
|
+
if (removedJsxControlAttributes.has(attribute.name))
|
|
132
|
+
continue;
|
|
133
|
+
if (attribute.name === "key") {
|
|
134
|
+
const key = typeof attribute.value === "string" ? stringType : attribute.value ? host.inferExpression(attribute.value) : boolType;
|
|
135
|
+
if (!isInvalidType(key) && key.kind !== "string" && key.kind !== "number" && key.kind !== "enum" && key.kind !== "enumMember" && key.kind !== "any")
|
|
136
|
+
host.diagnostics.push(diagnostic("VEL5022", "A JSX key must be a string, string-backed enum, or number", attribute.span));
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
if (attribute.name === "ref") {
|
|
140
|
+
analyzeComponentRef(host, expression, attribute, component);
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const expected = component.properties.get(attribute.name);
|
|
144
|
+
if (attribute.name === "look") {
|
|
145
|
+
analyzeJsxLookAttribute(host, attribute);
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
if (attribute.name.startsWith("look:")) {
|
|
149
|
+
const actual = typeof attribute.value === "string" ? stringType : attribute.value ? host.inferExpression(attribute.value) : boolType;
|
|
150
|
+
analyzeInlineVisualAttribute(host, attribute, actual, "look");
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
if (attribute.name === "style") {
|
|
154
|
+
if (attribute.value && typeof attribute.value !== "string")
|
|
155
|
+
host.inferExpression(attribute.value);
|
|
156
|
+
host.diagnostics.push(diagnostic("VEL5041", "Raw JSX style is not supported; use style:property for a checked high-priority inline override, or prefer Look for ordinary visuals", attribute.span));
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
if (attribute.name.startsWith("style:")) {
|
|
160
|
+
const actual = typeof attribute.value === "string" ? stringType : attribute.value ? host.inferExpression(attribute.value) : boolType;
|
|
161
|
+
analyzeInlineVisualAttribute(host, attribute, actual, "style");
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
if (attribute.name === "class") {
|
|
165
|
+
const actual = typeof attribute.value === "string" ? stringType : attribute.value ? host.inferExpression(attribute.value) : boolType;
|
|
166
|
+
if (!host.isClassInput(actual))
|
|
167
|
+
host.diagnostics.push(diagnostic("VEL5040", `JSX class requires string, string?, or a list of strings; received ${describeType(actual)}`, attribute.span));
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
if (!expected) {
|
|
171
|
+
host.diagnostics.push(diagnostic("VEL5013", `Component '${expression.tag}' has no prop '${attribute.name}'`, attribute.span));
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
host.semanticJsxAttributeOwners.set(`${attribute.span.start}:${attribute.name}`, component);
|
|
175
|
+
// D51 rule 108: a JSX attribute is a typed position, exactly like an
|
|
176
|
+
// argument position, so the declared prop type is the literal's context.
|
|
177
|
+
// Without it `items={[]}` inferred List<unknown> and forced the author to
|
|
178
|
+
// annotate an empty list on a separate line.
|
|
179
|
+
const actual = typeof attribute.value === "string" ? stringType : attribute.value ? host.inferExpression(attribute.value, expected) : boolType;
|
|
180
|
+
if (isWebComponentConstructor(component) && webComponentIntrinsic(component) === "web.router" && attribute.name === "fallback" && actual.kind !== "null" && actual.kind !== "any") {
|
|
181
|
+
host.checkWebRouteComponent(actual, attribute.span, "A Router fallback");
|
|
182
|
+
}
|
|
183
|
+
if (isWebComponentConstructor(component) && webComponentIntrinsic(component) === "web.router" && attribute.name === "routes"
|
|
184
|
+
&& attribute.value !== null && typeof attribute.value !== "string") {
|
|
185
|
+
host.checkWebRouteRecords(attribute.value);
|
|
186
|
+
}
|
|
187
|
+
host.requireAssignable(actual, expected, attribute.span);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
export function analyzeComponentRef(host, expression, attribute, component) {
|
|
191
|
+
const value = attribute.value;
|
|
192
|
+
if (!value || typeof value === "string" || value.kind !== "IdentifierExpression"
|
|
193
|
+
|| !host.lookup(value.name)?.mutable || host.writableStateName(value.name)) {
|
|
194
|
+
host.diagnostics.push(diagnostic("VEL5057", "A component ref requires a mutable let binding", attribute.span));
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
const handle = webComponentHandle(component);
|
|
198
|
+
if (!handle) {
|
|
199
|
+
const stored = nonOptional(host.expandAliases(host.lookup(value.name)?.declaredType ?? unknownType));
|
|
200
|
+
host.diagnostics.push(diagnostic("VEL5057", componentRefHandleRefusal(expression.tag, component, stored), attribute.span));
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const bindingType = host.lookup(value.name).type;
|
|
204
|
+
if (bindingType.kind !== "any" && bindingType.kind !== "optional") {
|
|
205
|
+
host.diagnostics.push(diagnostic("VEL5057", `A component ref requires ${describeType(handle)}? so cleanup can restore null`, attribute.span));
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
const target = nonOptional(bindingType);
|
|
209
|
+
if (target.kind !== "any" && !host.isAssignableHere(handle, target)) {
|
|
210
|
+
host.diagnostics.push(diagnostic("VEL5057", `Component '${expression.tag}' exposes ${describeType(handle)}, but this ref stores ${describeType(target)}?`, attribute.span));
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=elements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elements.js","sourceRoot":"","sources":["../../../src/analysis/jsx/elements.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the JSX rules ask of the analyzer that hosts them: the JSX walk's own
|
|
3
|
+
* state, and the analyzer operations a JSX rule performs.
|
|
4
|
+
*
|
|
5
|
+
* D115 P4 R3b. It extends `LookAnalysisHost` because the visual attributes are
|
|
6
|
+
* Look values in a JSX position — `look:` and `style:` route to the Look entry
|
|
7
|
+
* walk and its number-without-unit rule, and `look=` collisions read the
|
|
8
|
+
* module's Look declarations — so one object serves both families and the JSX
|
|
9
|
+
* side is the wider face of it.
|
|
10
|
+
*/
|
|
11
|
+
import { type Span } from "@velarscript/compiler";
|
|
12
|
+
import { type Expression, type ValueType } from "@velarscript/compiler/extension";
|
|
13
|
+
import { type WebJsxAttribute as JSXAttribute, type WebJsxElementExpression as JSXElementExpression, type WebLookExpression } from "../../ast.ts";
|
|
14
|
+
import { type LookAnalysisHost } from "../look/host.ts";
|
|
15
|
+
export interface JsxAnalysisHost extends LookAnalysisHost {
|
|
16
|
+
/** How deep the walk stands inside JSX. `inferJsx` moves it; the ownership and reactivity rules read it. */
|
|
17
|
+
jsxDepth: number;
|
|
18
|
+
/** The elements whose `key` the keyed fast path will actually read. */
|
|
19
|
+
readonly honoredJsxKeys: Set<JSXElementExpression>;
|
|
20
|
+
/** D89 A4: the declaration spans of the lists a keyed position renders by identity. */
|
|
21
|
+
readonly keyedListSources: Set<string>;
|
|
22
|
+
/** The module's `look` declarations, which is what a side-by-side collision is judged against. Replaced per program. */
|
|
23
|
+
readonly lookDeclarations: ReadonlyMap<string, WebLookExpression | null>;
|
|
24
|
+
/** Elements already answered for an ineffective key, so the whole-program pass does not repeat one. */
|
|
25
|
+
readonly reportedJsxKeys: Set<JSXElementExpression>;
|
|
26
|
+
/** Every `key` written on a statically placed element, judged once the walk has ended. */
|
|
27
|
+
readonly staticJsxKeys: {
|
|
28
|
+
readonly element: JSXElementExpression;
|
|
29
|
+
readonly attribute: JSXAttribute;
|
|
30
|
+
}[];
|
|
31
|
+
/** The module's source, which is what a mechanical rewrite copies its replacement text out of. */
|
|
32
|
+
readonly webSourceText: string;
|
|
33
|
+
readonly enumValueBindings: Map<number, string>;
|
|
34
|
+
readonly extensionCalls: Map<string, string>;
|
|
35
|
+
readonly semanticJsxAttributeOwners: Map<string, ValueType>;
|
|
36
|
+
checkWebRouteComponent(type: ValueType, sourceSpan: Span, subject: string): void;
|
|
37
|
+
checkWebRouteRecords(expression: Expression): void;
|
|
38
|
+
fieldsOf(identity: string): ReadonlyMap<string, ValueType> | null;
|
|
39
|
+
inferredExpressionType(expression: Expression): ValueType;
|
|
40
|
+
/**
|
|
41
|
+
* Assignability judged against the analyzer as the type environment, which is
|
|
42
|
+
* the whole of what a component ref and an event parameter ask of it. Asking
|
|
43
|
+
* for the answer rather than for the environment keeps `TypeEnvironment` out
|
|
44
|
+
* of this face.
|
|
45
|
+
*/
|
|
46
|
+
isAssignableHere(actual: ValueType, expected: ValueType): boolean;
|
|
47
|
+
isClassInput(type: ValueType): boolean;
|
|
48
|
+
isJsxAttributeValue(type: ValueType): boolean;
|
|
49
|
+
isJsxRenderable(type: ValueType): boolean;
|
|
50
|
+
isLookInput(type: ValueType): boolean;
|
|
51
|
+
isOptionalString(type: ValueType): boolean;
|
|
52
|
+
isScalarTextType(type: ValueType): boolean;
|
|
53
|
+
lookup(name: string): {
|
|
54
|
+
readonly declaredType: ValueType;
|
|
55
|
+
readonly mutable: boolean;
|
|
56
|
+
readonly span: Span;
|
|
57
|
+
readonly type: ValueType;
|
|
58
|
+
} | null;
|
|
59
|
+
writableStateName(name: string): boolean;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../src/analysis/jsx/host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,KAAK,eAAe,IAAI,YAAY,EAAE,KAAK,uBAAuB,IAAI,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAClJ,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,4GAA4G;IAC5G,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACnD,uFAAuF;IACvF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,wHAAwH;IACxH,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACzE,uGAAuG;IACvG,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpD,0FAA0F;IAC1F,QAAQ,CAAC,aAAa,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAA;KAAE,EAAE,CAAC;IACvG,kGAAkG;IAClG,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,0BAA0B,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC5D,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACjF,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACnD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC;IAClE,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IAC1D;;;;;OAKG;IACH,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC;IAClE,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IACvC,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IAC9C,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IAC1C,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IACtC,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IAC3C,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IAC3C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5I,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1C"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the JSX rules ask of the analyzer that hosts them: the JSX walk's own
|
|
3
|
+
* state, and the analyzer operations a JSX rule performs.
|
|
4
|
+
*
|
|
5
|
+
* D115 P4 R3b. It extends `LookAnalysisHost` because the visual attributes are
|
|
6
|
+
* Look values in a JSX position — `look:` and `style:` route to the Look entry
|
|
7
|
+
* walk and its number-without-unit rule, and `look=` collisions read the
|
|
8
|
+
* module's Look declarations — so one object serves both families and the JSX
|
|
9
|
+
* side is the wider face of it.
|
|
10
|
+
*/
|
|
11
|
+
import {} from "@velarscript/compiler";
|
|
12
|
+
import {} from "@velarscript/compiler/extension";
|
|
13
|
+
import {} from "../../ast.js";
|
|
14
|
+
import {} from "../look/host.js";
|
|
15
|
+
//# sourceMappingURL=host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../../src/analysis/jsx/host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAa,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAmC,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAsH,MAAM,cAAc,CAAC;AAClJ,OAAO,EAAyB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WEB-C1 — JSX keys: which interpolations the keyed fast path actually reads,
|
|
3
|
+
* and the keys written where it will never look.
|
|
4
|
+
*
|
|
5
|
+
* D115 P4 R3b. The recognizer is purely syntactic and mirrors the emitter's
|
|
6
|
+
* (`dynamicChildLeaves`), so an interpolation's honored roots are known before
|
|
7
|
+
* its expression is inferred and a nested element knows whether its own key is
|
|
8
|
+
* honored.
|
|
9
|
+
*/
|
|
10
|
+
import { type Expression } from "@velarscript/compiler/extension";
|
|
11
|
+
import { type WebJsxElementExpression as JSXElementExpression } from "../../ast.ts";
|
|
12
|
+
import { type JsxAnalysisHost } from "./host.ts";
|
|
13
|
+
export declare function checkKeyedInterpolation(host: JsxAnalysisHost, expression: Expression): void;
|
|
14
|
+
export declare function reportIneffectiveJsxKeys(host: JsxAnalysisHost, value: unknown, honored: ReadonlySet<JSXElementExpression>): void;
|
|
15
|
+
//# sourceMappingURL=keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/analysis/jsx/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,KAAK,uBAAuB,IAAI,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGpF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAQjD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAc3F;AAMD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAqBhI"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WEB-C1 — JSX keys: which interpolations the keyed fast path actually reads,
|
|
3
|
+
* and the keys written where it will never look.
|
|
4
|
+
*
|
|
5
|
+
* D115 P4 R3b. The recognizer is purely syntactic and mirrors the emitter's
|
|
6
|
+
* (`dynamicChildLeaves`), so an interpolation's honored roots are known before
|
|
7
|
+
* its expression is inferred and a nested element knows whether its own key is
|
|
8
|
+
* honored.
|
|
9
|
+
*/
|
|
10
|
+
import { spanIdentity } from "@velarscript/compiler/extension";
|
|
11
|
+
import {} from "../../ast.js";
|
|
12
|
+
import { dynamicChildLeaves } from "../../emitter.js";
|
|
13
|
+
import { diagnostic } from "../web-types.js";
|
|
14
|
+
import {} from "./host.js";
|
|
15
|
+
// Mirrors the emitter's keyed-children recognizer (dynamicChildLeaves): a
|
|
16
|
+
// leaf shaped `source.map(item => <… key=… />)` — either the interpolation
|
|
17
|
+
// itself or a '?:' branch of it — compiles to the identity-preserving keyed
|
|
18
|
+
// path. A map leaf without a key must gain one (VEL5017), and a key that
|
|
19
|
+
// sits anywhere else in the interpolation would be silently ignored at
|
|
20
|
+
// runtime, so it is diagnosed instead of quietly rebuilding every child.
|
|
21
|
+
export function checkKeyedInterpolation(host, expression) {
|
|
22
|
+
const honoredKeyRoots = new Set();
|
|
23
|
+
for (const leaf of dynamicChildLeaves(expression)) {
|
|
24
|
+
if (!leaf.list)
|
|
25
|
+
continue;
|
|
26
|
+
if (leaf.list.key) {
|
|
27
|
+
honoredKeyRoots.add(leaf.list.arrow.body);
|
|
28
|
+
// D89 A4: the list this keyed position renders by identity. A rewrite
|
|
29
|
+
// of that same list is what changes every row's identity at once.
|
|
30
|
+
const source = leaf.list.source.kind === "IdentifierExpression" ? host.lookup(leaf.list.source.name) : null;
|
|
31
|
+
if (source)
|
|
32
|
+
host.keyedListSources.add(spanIdentity(source.span));
|
|
33
|
+
}
|
|
34
|
+
else
|
|
35
|
+
host.diagnostics.push(diagnostic("VEL5017", "A JSX list rendered with .map() requires a key on its root element", leaf.list.arrow.body.span));
|
|
36
|
+
}
|
|
37
|
+
for (const root of honoredKeyRoots)
|
|
38
|
+
host.honoredJsxKeys.add(root);
|
|
39
|
+
reportIneffectiveJsxKeys(host, expression, honoredKeyRoots);
|
|
40
|
+
}
|
|
41
|
+
// Walks one interpolation expression looking for `key` attributes that the
|
|
42
|
+
// keyed fast path will never read. The walk stops at every JSX element:
|
|
43
|
+
// an element's own children and attribute values are separate render sites
|
|
44
|
+
// that receive their own checks when analysis recurses into them.
|
|
45
|
+
export function reportIneffectiveJsxKeys(host, value, honored) {
|
|
46
|
+
if (!value || typeof value !== "object")
|
|
47
|
+
return;
|
|
48
|
+
const record = value;
|
|
49
|
+
if (record.kind === "ExtensionExpression:web:jsx") {
|
|
50
|
+
const element = record;
|
|
51
|
+
if (honored.has(element))
|
|
52
|
+
return;
|
|
53
|
+
const key = element.attributes.find((attribute) => attribute.name === "key");
|
|
54
|
+
if (key) {
|
|
55
|
+
host.reportedJsxKeys.add(element);
|
|
56
|
+
host.diagnostics.push(diagnostic("VEL5050", "This JSX key has no effect: keys reuse children by identity only when the interpolation is 'items.map(item => <Row key={item.id} />)' or a '?:' branch of one; every other shape rebuilds its children on change — restructure the interpolation into that shape or remove the key", key.span));
|
|
57
|
+
}
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
for (const child of Object.values(record)) {
|
|
61
|
+
if (Array.isArray(child))
|
|
62
|
+
child.forEach((item) => reportIneffectiveJsxKeys(host, item, honored));
|
|
63
|
+
else
|
|
64
|
+
reportIneffectiveJsxKeys(host, child, honored);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/analysis/jsx/keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two JSX attribute rules that are about the origin rather than the type:
|
|
3
|
+
* `srcdoc`, which builds a whole document inside this page's origin (WEB-S3),
|
|
4
|
+
* and the URL attributes whose written value can name a script scheme (WEB-S2).
|
|
5
|
+
*
|
|
6
|
+
* D115 P4 R3b. Both are asked of a written value only; a value that arrives at
|
|
7
|
+
* run time is the runtime attribute check's question, so nothing here reads an
|
|
8
|
+
* inferred type.
|
|
9
|
+
*/
|
|
10
|
+
import { type WebJsxAttribute as JSXAttribute, type WebJsxElementExpression as JSXElementExpression } from "../../ast.ts";
|
|
11
|
+
import { type JsxAnalysisHost } from "./host.ts";
|
|
12
|
+
/**
|
|
13
|
+
* WEB-S3: `srcdoc` builds a whole document out of a string, and that document
|
|
14
|
+
* inherits this page's origin — so it is a second raw-HTML boundary next to
|
|
15
|
+
* the one the charter names (`unsafe:html`), reachable with no marker at all.
|
|
16
|
+
* The marker this one gets is `sandbox`, because sandbox is what actually
|
|
17
|
+
* takes the origin away; requiring it makes the boundary visible where it is
|
|
18
|
+
* crossed. `allow-scripts allow-same-origin` together hands the origin back,
|
|
19
|
+
* so the pair is refused by name rather than accepted as a sandbox.
|
|
20
|
+
*/
|
|
21
|
+
export declare function reportIframeSrcdocSandbox(host: JsxAnalysisHost, expression: JSXElementExpression, attributes: ReadonlyMap<string, JSXAttribute>): void;
|
|
22
|
+
/**
|
|
23
|
+
* WEB-S2: the analyzer already refuses an anchor that opens a window without
|
|
24
|
+
* 'noopener', so a URL attribute whose value is a script scheme cannot be the
|
|
25
|
+
* one URL question it declines to ask. A written-down URL is answered here; a
|
|
26
|
+
* value that arrives at run time is answered by the runtime attribute check.
|
|
27
|
+
*/
|
|
28
|
+
export declare function reportUrlAttributeScheme(host: JsxAnalysisHost, attribute: JSXAttribute): void;
|
|
29
|
+
//# sourceMappingURL=security.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../../src/analysis/jsx/security.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,KAAK,eAAe,IAAI,YAAY,EAAE,KAAK,uBAAuB,IAAI,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAI1H,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,oBAAoB,EAAE,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAsBtJ;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,GAAG,IAAI,CAW7F"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two JSX attribute rules that are about the origin rather than the type:
|
|
3
|
+
* `srcdoc`, which builds a whole document inside this page's origin (WEB-S3),
|
|
4
|
+
* and the URL attributes whose written value can name a script scheme (WEB-S2).
|
|
5
|
+
*
|
|
6
|
+
* D115 P4 R3b. Both are asked of a written value only; a value that arrives at
|
|
7
|
+
* run time is the runtime attribute check's question, so nothing here reads an
|
|
8
|
+
* inferred type.
|
|
9
|
+
*/
|
|
10
|
+
import {} from "../../ast.js";
|
|
11
|
+
import { literalStringValues } from "../look-vocabulary-guidance.js";
|
|
12
|
+
import { urlSchemeRefusal, WEB_URL_ATTRIBUTES } from "../url-attributes.js";
|
|
13
|
+
import { diagnostic } from "../web-types.js";
|
|
14
|
+
import {} from "./host.js";
|
|
15
|
+
/**
|
|
16
|
+
* WEB-S3: `srcdoc` builds a whole document out of a string, and that document
|
|
17
|
+
* inherits this page's origin — so it is a second raw-HTML boundary next to
|
|
18
|
+
* the one the charter names (`unsafe:html`), reachable with no marker at all.
|
|
19
|
+
* The marker this one gets is `sandbox`, because sandbox is what actually
|
|
20
|
+
* takes the origin away; requiring it makes the boundary visible where it is
|
|
21
|
+
* crossed. `allow-scripts allow-same-origin` together hands the origin back,
|
|
22
|
+
* so the pair is refused by name rather than accepted as a sandbox.
|
|
23
|
+
*/
|
|
24
|
+
export function reportIframeSrcdocSandbox(host, expression, attributes) {
|
|
25
|
+
const sandbox = attributes.get("sandbox");
|
|
26
|
+
if (!sandbox) {
|
|
27
|
+
host.diagnostics.push(diagnostic("VEL5066", "An iframe with srcdoc builds a document from a string, and that document runs script in this page's origin; add a sandbox attribute such as sandbox=\"allow-forms\" — write sandbox=\"\" when the frame needs no capability at all", expression.span));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const tokens = typeof sandbox.value === "string" ? sandbox.value
|
|
31
|
+
: sandbox.value && sandbox.value.kind === "LiteralExpression" && typeof sandbox.value.value === "string" ? sandbox.value.value
|
|
32
|
+
: null;
|
|
33
|
+
if (tokens === null)
|
|
34
|
+
return;
|
|
35
|
+
const granted = new Set(tokens.split(/\s+/u).filter(Boolean));
|
|
36
|
+
if (granted.has("allow-scripts") && granted.has("allow-same-origin")) {
|
|
37
|
+
host.diagnostics.push(diagnostic("VEL5066", "sandbox='allow-scripts allow-same-origin' lets the framed document remove its own sandbox, so a srcdoc frame with both is not sandboxed at all; drop one of the two", sandbox.span));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* WEB-S2: the analyzer already refuses an anchor that opens a window without
|
|
42
|
+
* 'noopener', so a URL attribute whose value is a script scheme cannot be the
|
|
43
|
+
* one URL question it declines to ask. A written-down URL is answered here; a
|
|
44
|
+
* value that arrives at run time is answered by the runtime attribute check.
|
|
45
|
+
*/
|
|
46
|
+
export function reportUrlAttributeScheme(host, attribute) {
|
|
47
|
+
if (!WEB_URL_ATTRIBUTES.has(attribute.name))
|
|
48
|
+
return;
|
|
49
|
+
const value = attribute.value;
|
|
50
|
+
const written = typeof value === "string" ? [value] : value ? literalStringValues(value) : null;
|
|
51
|
+
if (written === null)
|
|
52
|
+
return;
|
|
53
|
+
for (const text of written) {
|
|
54
|
+
const refusal = urlSchemeRefusal(text);
|
|
55
|
+
if (!refusal)
|
|
56
|
+
continue;
|
|
57
|
+
host.diagnostics.push(diagnostic("VEL5067", `JSX '${attribute.name}' takes a URL, and ${refusal}`, attribute.span));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../../src/analysis/jsx/security.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAA8F,MAAM,cAAc,CAAC;AAC1H,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAwB,MAAM,WAAW,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAqB,EAAE,UAAgC,EAAE,UAA6C;IAC9I,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAC9B,SAAS,EACT,oOAAoO,EACpO,UAAU,CAAC,IAAI,CAChB,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK;QAC9D,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;YAC5H,CAAC,CAAC,IAAI,CAAC;IACX,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO;IAC5B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACrE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAC9B,SAAS,EACT,qKAAqK,EACrK,OAAO,CAAC,IAAI,CACb,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAqB,EAAE,SAAuB;IACrF,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO;IACpD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAC9B,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChG,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO;IAC7B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,SAAS,CAAC,IAAI,sBAAsB,OAAO,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACpH,OAAO;IACT,CAAC;AACH,CAAC"}
|