{"owner":"starfederation","repo":"datastar","hasSkills":true,"totalSkillsCount":11,"totalTokensCount":45843,"categories":["anthropic-skill","plugin-manifest"],"hasMcp":false,"mcpConfig":null,"found":["tools/intellij-plugin/schema.json","tools/vscode-extension/src/data-attributes.json","tools/vscode-extension/package.json","tools/intellij-plugin/src/main/resources/datastar-attributes.web-types.json","tools/intellij-plugin/LICENSE.md","tools/vscode-extension/src/datastar.injection.tmLanguage.json","tools/vscode-extension/README.md","tools/vscode-extension/package-lock.json","tools/intellij-plugin/CHANGELOG.md","tools/intellij-plugin/README.md","tools/vscode-extension/LICENSE.md"],"skills":{"tools/intellij-plugin/schema.json":"{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"title\": \"JSON schema for Web-Types\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"$schema\": {\n      \"type\": \"string\"\n    },\n    \"framework\": {\n      \"description\": \"Framework, for which the components are provided by the library. If the library is not enabled in a particular context, all symbols from this file will not be available as well. If you want symbols to be always available do not specify framework.\",\n      \"type\": \"string\"\n    },\n    \"required-context\": {\n      \"description\": \"Since 2024.2. Specify contexts, which are required to enable contributions from this file.\",\n      \"$ref\": \"#/definitions/required-context\"\n    },\n    \"context\": {\n      \"description\": \"Deprecated since 2024.2 because of ambiguous meaning - use \\\"required-context\\\" instead.\",\n      \"deprecationMessage\": \"Use \\\"required-context\\\" instead.\",\n      \"$ref\": \"#/definitions/required-context\"\n    },\n    \"name\": {\n      \"description\": \"Name of the library.\",\n      \"type\": \"string\"\n    },\n    \"version\": {\n      \"description\": \"Version of the library, for which Web-Types are provided.\",\n      \"type\": \"string\"\n    },\n    \"js-types-syntax\": {\n      \"$ref\": \"#/definitions/js-types-syntax\"\n    },\n    \"description-markup\": {\n      \"$ref\": \"#/definitions/description-markup\"\n    },\n    \"framework-config\": {\n      \"$ref\": \"#/definitions/framework-config\"\n    },\n    \"contexts-config\": {\n      \"$ref\": \"#/definitions/contexts-config\"\n    },\n    \"default-icon\": {\n      \"$ref\": \"#/definitions/icon\"\n    },\n    \"contributions\": {\n      \"description\": \"Symbol can be contributed to one of the 3 namespaces - HTML, CSS and JS. Within a particular namespace there can be different kinds of symbols. In each of the namespaces, there are several predefined kinds, which integrate directly with IDE, but providers are free to define their own.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"html\": {\n          \"$ref\": \"#/definitions/html\"\n        },\n        \"css\": {\n          \"$ref\": \"#/definitions/css\"\n        },\n        \"js\": {\n          \"$ref\": \"#/definitions/js-global\"\n        }\n      },\n      \"additionalProperties\": false\n    }\n  },\n  \"required\": [\n    \"name\",\n    \"version\"\n  ],\n  \"additionalProperties\": false,\n  \"definitions\": {\n    \"js-types-syntax\": {\n      \"description\": \"Language in which JavaScript objects types are specified.\",\n      \"type\": \"string\",\n      \"enum\": [\n        \"typescript\"\n      ]\n    },\n    \"description-markup\": {\n      \"description\": \"Markup language in which descriptions are formatted.\",\n      \"type\": \"string\",\n      \"default\": \"none\",\n      \"enum\": [\n        \"html\",\n        \"markdown\",\n        \"none\"\n      ]\n    },\n    \"required-context\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"kind\": {\n              \"type\": \"string\"\n            },\n            \"name\": {\n              \"type\": \"string\"\n            }\n          },\n          \"required\": [\n            \"kind\",\n            \"name\"\n          ],\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"anyOf\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/definitions/required-context\"\n              }\n            }\n          },\n          \"required\": [\n            \"anyOf\"\n          ],\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"allOf\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/definitions/required-context\"\n              }\n            }\n          },\n          \"required\": [\n            \"allOf\"\n          ],\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"not\": {\n              \"$ref\": \"#/definitions/required-context\"\n            }\n          },\n          \"required\": [\n            \"not\"\n          ],\n          \"additionalProperties\": false\n        }\n      ]\n    },\n    \"framework-config\": {\n      \"description\": \"Provide configuration for the specified web framework. This is an advanced feature, which is used to provide support for templating frameworks like Angular, Vue, Svelte, etc.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"enable-when\": {\n          \"$ref\": \"#/definitions/enablement-rules\"\n        },\n        \"disable-when\": {\n          \"$ref\": \"#/definitions/disablement-rules\"\n        },\n        \"canonical-names\": {\n          \"description\": \"In many frameworks symbols can have multiple versions of a name. Specify canonical name conversion rule for names of particular symbol kinds against which comparisons will be made. Format of the 'canonical-names' property names is '{namespace}/{symbol kind}'. By default symbol names in HTML namespace are converted to lower-case, and in CSS and JS namespaces are left as-is. In case of name patterns, rules are applied to each part of the pattern separately, so even if the symbol with pattern is in HTML namespace, references to JS events will be case-sensitive.\",\n          \"$ref\": \"#/definitions/name-conversion-rules-single\"\n        },\n        \"match-names\": {\n          \"description\": \"Provide an array of name conversions, in which particular symbol kinds should be matched against canonical names of symbols. By default symbol names are converted using canonical-names rule.\",\n          \"$ref\": \"#/definitions/name-conversion-rules-multiple\"\n        },\n        \"name-variants\": {\n          \"description\": \"Provide an array of name conversions, in which particular symbol kinds should be proposed in auto completion. Format of the 'name-variants' property names is '{namespace}/{symbol kind}'. All symbol kinds are by default provided as-is.\",\n          \"$ref\": \"#/definitions/name-conversion-rules-multiple\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"contexts-config\": {\n      \"description\": \"Provide configuration for Web Types contexts. This allows to contribute additional Web Types for example if a particular library is present in the project.\",\n      \"type\": \"object\",\n      \"additionalProperties\": {\n        \"$ref\": \"#/definitions/context-kind-config\"\n      }\n    },\n    \"context-kind-config\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"kind\": {\n          \"description\": \"Context kind. Only a single context of the particular kind will be enabled. An example of context kind is framework, which has dedicated support in Web Types.\",\n          \"deprecationMessage\": \"As of 2024.2 this is deprecated way of defining context. The outer context should be the context kind with a nested context name.\",\n          \"type\": \"string\"\n        },\n        \"enable-when\": {\n          \"deprecationMessage\": \"As of 2024.2 this is deprecated way of defining context. The outer context should be the context kind with a nested context name.\",\n          \"$ref\": \"#/definitions/enablement-rules\"\n        },\n        \"disable-when\": {\n          \"deprecationMessage\": \"As of 2024.2 this is deprecated way of defining context. The outer context should be the context kind with a nested context name.\",\n          \"$ref\": \"#/definitions/disablement-rules\"\n        }\n      },\n      \"additionalProperties\": {\n        \"$ref\": \"#/definitions/context-config\"\n      }\n    },\n    \"context-config\": {\n      \"description\": \"Since 2024.2. Provide rules for setting a particular name for particular context kind. This allows to contribute additional Web Types for example if a particular library is present in the project.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"enable-when\": {\n          \"$ref\": \"#/definitions/enablement-rules\"\n        },\n        \"disable-when\": {\n          \"$ref\": \"#/definitions/disablement-rules\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"enablement-rules\": {\n      \"description\": \"Specify rules for enabling web framework support. Only one framework can be enabled in a particular file. If you need your contributions to be enabled in all files, regardless of the context, do not specify the framework.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"node-packages\": {\n          \"description\": \"Node.js package names, which enable framework support within the folder containing the package.json.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"ruby-gems\": {\n          \"description\": \"Since 2024.2. Ruby gem names, which enable framework support within the particular Ruby module.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"file-extensions\": {\n          \"description\": \"Extensions of files, which should have the framework support enabled. Use this to support custom file extensions like '.vue' or '.svelte'. Never specify generic extensions like '.html', '.js' or '.ts'. If you need your contributions to be present in every file don't specify the framework at all\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"file-name-patterns\": {\n          \"description\": \"RegExp patterns to match file names, which should have the framework support enabled. Use carefully as broken pattern may even freeze IDE.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/pattern\"\n          }\n        },\n        \"ide-libraries\": {\n          \"description\": \"Global JavaScript libraries names enabled within the IDE, which enable framework support in the whole project\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"project-tool-executables\": {\n          \"description\": \"List of tool executables (without extension), which presence should be checked in the project. In case of Node projects, such tools will be searched in node_modules/.bin/\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"additionalProperties\": {\n        \"$ref\": \"#/definitions/custom-enablement-rules\"\n      }\n    },\n    \"custom-enablement-rules\": {\n      \"description\": \"Since 2024.2. Custom package manager dependencies, which would enable context according to the rules of custom provider.\",\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"disablement-rules\": {\n      \"description\": \"Specify rules for disabling web framework support. These rules take precedence over enable-when rules. They allow to turn off framework support in case of some conflicts between frameworks priority.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"file-extensions\": {\n          \"description\": \"Extensions of files, which should have the framework support disabled\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"file-name-patterns\": {\n          \"description\": \"RegExp patterns to match file names, which should have the framework support disabled\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/pattern\"\n          }\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"name-conversion-rules-single\": {\n      \"type\": \"object\",\n      \"patternProperties\": {\n        \"^/[^/\\\\n\\\\r]+/[^/\\\\n\\\\r]+$\": {\n          \"$ref\": \"#/definitions/name-converter\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"name-conversion-rules-multiple\": {\n      \"type\": \"object\",\n      \"patternProperties\": {\n        \"^/[^/\\\\n\\\\r]+/[^/\\\\n\\\\r]+$\": {\n          \"$ref\": \"#/definitions/name-converters\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"name-converters\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"$ref\": \"#/definitions/name-converter\"\n      }\n    },\n    \"name-converter\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"as-is\",\n        \"PascalCase\",\n        \"camelCase\",\n        \"lowercase\",\n        \"UPPERCASE\",\n        \"kebab-case\",\n        \"snake_case\"\n      ]\n    },\n    \"icon\": {\n      \"description\": \"Relative path to the icon representing the symbol or actual SVG of the icon.\",\n      \"type\": \"string\"\n    },\n    \"base-contribution\": {\n      \"type\": \"object\",\n      \"description\": \"The base for any contributions.\",\n      \"javaAbstract\": true,\n      \"javaInterfaces\": [\n        \"GenericContributionsHost\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"$ref\": \"#/definitions/name\"\n        },\n        \"description\": {\n          \"$ref\": \"#/definitions/description\"\n        },\n        \"description-sections\": {\n          \"$ref\": \"#/definitions/description-sections\"\n        },\n        \"required-context\": {\n          \"description\": \"Since 2024.2. Specify contexts, which are required to enable this contribution.\",\n          \"$ref\": \"#/definitions/required-context\"\n        },\n        \"doc-url\": {\n          \"$ref\": \"#/definitions/doc-url\"\n        },\n        \"icon\": {\n          \"$ref\": \"#/definitions/icon\"\n        },\n        \"source\": {\n          \"$ref\": \"#/definitions/source\"\n        },\n        \"since\": {\n          \"$ref\": \"#/definitions/since\"\n        },\n        \"deprecated\": {\n          \"$ref\": \"#/definitions/deprecated\"\n        },\n        \"deprecated-since\": {\n          \"$ref\": \"#/definitions/deprecated-since\"\n        },\n        \"obsolete\": {\n          \"$ref\": \"#/definitions/obsolete\"\n        },\n        \"obsolete-since\": {\n          \"$ref\": \"#/definitions/obsolete-since\"\n        },\n        \"experimental\": {\n          \"$ref\": \"#/definitions/experimental\"\n        },\n        \"priority\": {\n          \"$ref\": \"#/definitions/priority\"\n        },\n        \"proximity\": {\n          \"$ref\": \"#/definitions/proximity\"\n        },\n        \"virtual\": {\n          \"$ref\": \"#/definitions/virtual\"\n        },\n        \"abstract\": {\n          \"$ref\": \"#/definitions/abstract\"\n        },\n        \"extension\": {\n          \"$ref\": \"#/definitions/extension\"\n        },\n        \"extends\": {\n          \"$ref\": \"#/definitions/extends\"\n        },\n        \"pattern\": {\n          \"$ref\": \"#/definitions/name-pattern-root\"\n        },\n        \"html\": {\n          \"$ref\": \"#/definitions/html\"\n        },\n        \"css\": {\n          \"$ref\": \"#/definitions/css\"\n        },\n        \"js\": {\n          \"$ref\": \"#/definitions/js\"\n        },\n        \"exclusive-contributions\": {\n          \"$ref\": \"#/definitions/exclusive-contributions\"\n        }\n      }\n    },\n    \"typed-contribution\": {\n      \"type\": \"object\",\n      \"description\": \"The base for any contribution, which can possibly have a JS type.\",\n      \"javaAbstract\": true,\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        }\n      ],\n      \"properties\": {\n        \"type\": {\n          \"$ref\": \"#/definitions/type-list\"\n        }\n      }\n    },\n    \"generic-contribution\": {\n      \"type\": \"object\",\n      \"description\": \"A generic contribution. All contributions are of this type, except for HTML attributes and elements, as well as predefined CSS contribution kinds.\",\n      \"javaAbstract\": true,\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/typed-contribution\"\n        }\n      ],\n      \"properties\": {\n        \"default\": {\n          \"$ref\": \"#/definitions/default\"\n        },\n        \"required\": {\n          \"$ref\": \"#/definitions/required\"\n        },\n        \"attribute-value\": {\n          \"$ref\": \"#/definitions/html-attribute-value\"\n        }\n      }\n    },\n    \"type-list\": {\n      \"description\": \"Specify type according to selected language for type syntax. The type can be specified by a string expression, an object with list of imports and an expression, or an array of possible types.\",\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/type\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/type\"\n          }\n        }\n      ]\n    },\n    \"type\": {\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/type-reference\"\n        },\n        {\n          \"type\": \"string\"\n        }\n      ]\n    },\n    \"type-reference\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"module\": {\n          \"description\": \"Name of module, which exports the type. May be omitted, in which case it's assumed to be the name of the library.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name of the symbol to import\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"additionalProperties\": false\n    },\n    \"html-value-type\": {\n      \"oneOf\": [\n        {\n          \"type\": \"string\",\n          \"description\": \"Provide one of special attribute value types:  \\\"enum\\\", \\\"symbol\\\", \\\"of-match\\\", or a simple JavaScript type according to the specified type format.\"\n        },\n        {\n          \"$ref\": \"#/definitions/type-reference\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/type\"\n          }\n        }\n      ]\n    },\n    \"source\": {\n      \"description\": \"Allows to specify the source of the entity. For Vue.js component this may be for instance a class.\",\n      \"type\": \"object\",\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"file\": {\n              \"description\": \"Path to the file, relative to the web-types JSON.\",\n              \"type\": \"string\"\n            },\n            \"offset\": {\n              \"description\": \"Offset in the file under which the source symbol, like class name, is located.\",\n              \"type\": \"integer\"\n            }\n          },\n          \"required\": [\n            \"file\",\n            \"offset\"\n          ],\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"module\": {\n              \"description\": \"Name of module, which exports the symbol. May be omitted, in which case it's assumed to be the name of the library.\",\n              \"type\": \"string\"\n            },\n            \"symbol\": {\n              \"description\": \"Name of the exported symbol.\",\n              \"type\": \"string\"\n            }\n          },\n          \"required\": [\n            \"symbol\"\n          ],\n          \"additionalProperties\": false\n        }\n      ]\n    },\n    \"name\": {\n      \"type\": \"string\"\n    },\n    \"description\": {\n      \"description\": \"Short description to be rendered in documentation popup. It will be rendered according to description-markup setting.\",\n      \"type\": \"string\"\n    },\n    \"description-sections\": {\n      \"description\": \"Custom sections to be shown below description in the documentation popup.\",\n      \"type\": \"object\",\n      \"additionalProperties\": {\n        \"type\": \"string\"\n      }\n    },\n    \"doc-url\": {\n      \"description\": \"Link to online documentation.\",\n      \"type\": \"string\"\n    },\n    \"virtual\": {\n      \"description\": \"Mark contribution as virtual. Virtual contributions can be filtered out if needed in references. A virtual contribution meaning may differ by framework or kind contexts, but usually means something synthetic or something, which gets erased in the runtime by the framework. E.g. Vue or Angular attribute bindings are virtual. \",\n      \"type\": \"boolean\"\n    },\n    \"abstract\": {\n      \"description\": \"Mark contribution as abstract. Such contributions serve only as super contributions for other contributions.\",\n      \"type\": \"boolean\"\n    },\n    \"extension\": {\n      \"description\": \"Mark contribution as an extension. Such contributions do not define a new contribution on their own, but can provide additional properties or contributions to existing contributions.\",\n      \"type\": \"boolean\"\n    },\n    \"priority\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"lowest\",\n        \"low\",\n        \"normal\",\n        \"high\",\n        \"highest\"\n      ]\n    },\n    \"proximity\": {\n      \"type\": \"integer\"\n    },\n    \"name-pattern-root\": {\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/name-pattern\"\n        },\n        {\n          \"type\": \"string\"\n        }\n      ]\n    },\n    \"exclusive-contributions\": {\n      \"description\": \"Specify list of contribution kinds qualified with a namespace, for which during reference resolution this will be the final contribution host. E.g. if a special HTML element does not accept standard attributes, add:\\n\\\"exclusive-contributions\\\": [\\\"/html/attributes\\\"].\",\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\",\n        \"pattern\": \"/[^/\\\\n\\\\r]+/[^/\\\\n\\\\r]+\"\n      }\n    },\n    \"name-pattern\": {\n      \"type\": \"object\",\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"required\": {\n              \"$ref\": \"#/definitions/required\"\n            },\n            \"unique\": {\n              \"type\": \"boolean\"\n            },\n            \"repeat\": {\n              \"type\": \"boolean\"\n            },\n            \"template\": {\n              \"$ref\": \"#/definitions/name-pattern-template\"\n            },\n            \"or\": {\n              \"$ref\": \"#/definitions/name-pattern-template\"\n            },\n            \"delegate\": {\n              \"$ref\": \"#/definitions/reference\"\n            },\n            \"deprecated\": {\n              \"$ref\": \"#/definitions/deprecated\"\n            },\n            \"priority\": {\n              \"$ref\": \"#/definitions/priority\"\n            },\n            \"proximity\": {\n              \"$ref\": \"#/definitions/proximity\"\n            },\n            \"items\": {\n              \"$ref\": \"#/definitions/list-reference\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"regex\": {\n              \"type\": \"string\"\n            },\n            \"case-sensitive\": {\n              \"type\": \"boolean\",\n              \"default\": true\n            }\n          },\n          \"required\": [\n            \"regex\"\n          ],\n          \"additionalProperties\": false\n        }\n      ]\n    },\n    \"name-pattern-template\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"items\": {\n        \"oneOf\": [\n          {\n            \"type\": \"string\"\n          },\n          {\n            \"$ref\": \"#/definitions/name-pattern-template\"\n          },\n          {\n            \"$ref\": \"#/definitions/name-pattern\"\n          }\n        ]\n      }\n    },\n    \"list-reference\": {\n      \"description\": \"A reference to an element in Web-Types model.\",\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/reference\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/reference\"\n          }\n        }\n      ]\n    },\n    \"reference\": {\n      \"description\": \"A reference to an element in Web-Types model.\",\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/reference-with-props\"\n        },\n        {\n          \"type\": \"string\"\n        }\n      ]\n    },\n    \"reference-with-props\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"includeVirtual\": {\n          \"type\": \"boolean\",\n          \"default\": true\n        },\n        \"includeAbstract\": {\n          \"type\": \"boolean\"\n        },\n        \"filter\": {\n          \"type\": \"string\"\n        },\n        \"name-conversion\": {\n          \"description\": \"Override global name conversion rules for matching symbols under the path.\",\n          \"$ref\": \"#/definitions/reference-name-conversion\"\n        }\n      },\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"reference-name-conversion\": {\n      \"description\": \"Override global name conversion rules for matching symbols under the path.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"canonical-names\": {\n          \"description\": \"Override global canonical name conversion rule against which comparisons are made for the referenced symbols. When only rule name is specified, it applies to the symbols of the same kind as the last segment of the referenced path. Otherwise format of the property names is '{namespace}/{symbol kind}'. Supported by JetBrains IDEs since 2022.1.\",\n          \"oneOf\": [\n            {\n              \"$ref\": \"#/definitions/name-converter\"\n            },\n            {\n              \"$ref\": \"#/definitions/name-conversion-rules-single\"\n            }\n          ]\n        },\n        \"match-names\": {\n          \"description\": \"Override global rules, by which referenced symbols should be matched against their canonical names. When only rule names are specified, they applies to the symbols of the same kind as the last segment of the referenced path. Otherwise format of the property names is '{namespace}/{symbol kind}'. Supported by JetBrains IDEs since 2022.1.\",\n          \"oneOf\": [\n            {\n              \"$ref\": \"#/definitions/name-converters\"\n            },\n            {\n              \"$ref\": \"#/definitions/name-conversion-rules-multiple\"\n            }\n          ]\n        },\n        \"name-variants\": {\n          \"description\": \"Override global rules, by which referenced symbol names should be proposed in auto completion. When only rule names are specified, they applies to the symbols of the same kind as the last segment of the referenced path. Otherwise format of the property names is '{namespace}/{symbol kind}'. Supported by JetBrains IDEs since 2022.1.\",\n          \"oneOf\": [\n            {\n              \"$ref\": \"#/definitions/name-converters\"\n            },\n            {\n              \"$ref\": \"#/definitions/name-conversion-rules-multiple\"\n            }\n          ]\n        }\n      }\n    },\n    \"extends\": {\n      \"$ref\": \"#/definitions/reference\"\n    },\n    \"default\": {\n      \"type\": \"string\"\n    },\n    \"required\": {\n      \"type\": \"boolean\"\n    },\n    \"since\": {\n      \"description\": \"Version since this symbol is available.\",\n      \"type\": \"string\"\n    },\n    \"deprecated\": {\n      \"description\": \"Specifies whether the symbol is deprecated. Deprecated symbol usage is discouraged, but still supported. Value can be a boolean or a string message with explanation and migration information.\",\n      \"type\": [\n        \"boolean\",\n        \"string\"\n      ],\n      \"default\": false\n    },\n    \"deprecated-since\": {\n      \"description\": \"Version in which this symbol was first deprecated.\",\n      \"type\": \"string\"\n    },\n    \"obsolete\": {\n      \"description\": \"Specifies whether the symbol is obsolete. Obsolete symbols are no longer supported. Value can be a boolean or a string message with explanation and migration information.\",\n      \"type\": [\n        \"boolean\",\n        \"string\"\n      ],\n      \"default\": false\n    },\n    \"obsolete-since\": {\n      \"description\": \"Version in which this symbol was first made obsolete.\",\n      \"type\": \"string\"\n    },\n    \"experimental\": {\n      \"description\": \"Specifies whether the symbol is experimental. Value can be a boolean or a string message with explanation. Experimental symbols should be used with caution as the API might change.\",\n      \"type\": [\n        \"boolean\",\n        \"string\"\n      ],\n      \"default\": false\n    },\n    \"pattern\": {\n      \"description\": \"A RegEx pattern to match whole content. Syntax should work with at least ECMA, Java and Python implementations.\",\n      \"oneOf\": [\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"regex\": {\n              \"type\": \"string\"\n            },\n            \"case-sensitive\": {\n              \"type\": \"boolean\",\n              \"default\": true\n            }\n          }\n        }\n      ]\n    },\n    \"html-contributions-host\": {\n      \"type\": \"object\",\n      \"javaInterfaces\": [\n        \"GenericContributionsHost\"\n      ],\n      \"javaInterface\": true,\n      \"properties\": {\n        \"elements\": {\n          \"description\": \"HTML elements.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/html-element\"\n          }\n        },\n        \"attributes\": {\n          \"description\": \"HTML attributes.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/html-attribute\"\n          }\n        },\n        \"events\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-html-contribution\"\n          },\n          \"description\": \"DOM events are deprecated in HTML namespace. Contribute events to JS namespace: /js/events\",\n          \"deprecationMessage\": \"Contribute events to JS namespace: /js/events\"\n        }\n      },\n      \"patternProperties\": {\n        \"^(?!pattern$).*$\": {\n          \"$ref\": \"#/definitions/generic-html-contributions\"\n        }\n      }\n    },\n    \"generic-html-contributions\": {\n      \"javaLenientDeserialize\": true,\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-html-contribution-or-property\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-html-contribution-or-property\"\n          }\n        }\n      ]\n    },\n    \"generic-html-contribution-or-property\": {\n      \"javaInterfaces\": [\n        \"GenericContributionOrProperty\"\n      ],\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-html-contribution\"\n        },\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"number\"\n        },\n        {\n          \"type\": \"boolean\"\n        }\n      ]\n    },\n    \"generic-html-contribution\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/html-contributions-host\"\n        }\n      ]\n    },\n    \"html\": {\n      \"type\": \"object\",\n      \"description\": \"Contains contributions to HTML namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are 2 predefined kinds, which integrate directly with IDE - HTML elements and HTML attributes. There are also 2 deprecated kinds: tags (which is equivalent to 'elements') and 'events' (which was moved to JS namespace)\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/html-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"types-syntax\": {\n          \"$ref\": \"#/definitions/deprecated-types-syntax\"\n        },\n        \"description-markup\": {\n          \"$ref\": \"#/definitions/deprecated-description-markup\"\n        },\n        \"tags\": {\n          \"type\": \"array\",\n          \"description\": \"Deprecated, use `elements` property.\",\n          \"deprecationMessage\": \"Use `elements` property.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/html-element\"\n          }\n        }\n      }\n    },\n    \"html-element\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/html-contributions-host\"\n        }\n      ]\n    },\n    \"html-attribute\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/html-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"value\": {\n          \"$ref\": \"#/definitions/html-attribute-value\"\n        },\n        \"default\": {\n          \"type\": \"string\"\n        },\n        \"required\": {\n          \"$ref\": \"#/definitions/required\"\n        },\n        \"vue-argument\": {\n          \"$ref\": \"#/definitions/deprecated-html-attribute-vue-argument\"\n        },\n        \"vue-modifiers\": {\n          \"description\": \"Deprecated vue-specific property - contribute Vue directives to /contributions/html/vue-directives\",\n          \"deprecationMessage\": \"Contribute Vue directives to /contributions/html/vue-directives\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/deprecated-html-attribute-vue-modifier\"\n          }\n        }\n      }\n    },\n    \"html-attribute-value\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"kind\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"no-value\",\n            \"plain\",\n            \"expression\"\n          ]\n        },\n        \"type\": {\n          \"$ref\": \"#/definitions/html-value-type\"\n        },\n        \"required\": {\n          \"type\": \"boolean\"\n        },\n        \"default\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"css-contributions-host\": {\n      \"type\": \"object\",\n      \"javaInterfaces\": [\n        \"GenericContributionsHost\"\n      ],\n      \"javaInterface\": true,\n      \"properties\": {\n        \"properties\": {\n          \"type\": \"array\",\n          \"description\": \"CSS properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-property\"\n          }\n        },\n        \"pseudo-elements\": {\n          \"description\": \"CSS pseudo-elements\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-pseudo-element\"\n          }\n        },\n        \"pseudo-classes\": {\n          \"description\": \"CSS pseudo-classes\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-pseudo-class\"\n          }\n        },\n        \"functions\": {\n          \"description\": \"CSS functions\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-generic-item\"\n          }\n        },\n        \"classes\": {\n          \"description\": \"CSS classes\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-generic-item\"\n          }\n        },\n        \"parts\": {\n          \"description\": \"CSS parts\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-generic-item\"\n          }\n        }\n      },\n      \"patternProperties\": {\n        \"^(?!pattern$).*$\": {\n          \"$ref\": \"#/definitions/generic-css-contributions\"\n        }\n      }\n    },\n    \"generic-css-contributions\": {\n      \"javaLenientDeserialize\": true,\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-css-contribution-or-property\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-css-contribution-or-property\"\n          }\n        }\n      ]\n    },\n    \"generic-css-contribution-or-property\": {\n      \"javaInterfaces\": [\n        \"GenericContributionOrProperty\"\n      ],\n      \"oneOf\": [\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"number\"\n        },\n        {\n          \"type\": \"boolean\"\n        },\n        {\n          \"$ref\": \"#/definitions/generic-css-contribution\"\n        }\n      ]\n    },\n    \"generic-css-contribution\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ]\n    },\n    \"css\": {\n      \"type\": \"object\",\n      \"description\": \"Contains contributions to CSS namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are predefined kinds, which integrate directly with IDE - properties, classes, functions, pseudo-elements, pseudo-classes and parts.\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ]\n    },\n    \"css-property\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"values\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        }\n      }\n    },\n    \"css-generic-item\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ]\n    },\n    \"css-pseudo-element\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"arguments\": {\n          \"type\": \"boolean\",\n          \"description\": \"Specify whether the pseudo-element requires arguments.\"\n        }\n      }\n    },\n    \"css-pseudo-class\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"arguments\": {\n          \"type\": \"boolean\",\n          \"description\": \"Specify whether the pseudo-class requires arguments.\"\n        }\n      }\n    },\n    \"js-contributions-host\": {\n      \"type\": \"object\",\n      \"javaInterfaces\": [\n        \"GenericContributionsHost\"\n      ],\n      \"javaInterface\": true,\n      \"properties\": {\n        \"events\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-js-contribution\"\n          },\n          \"description\": \"DOM events\"\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/js-property\"\n          },\n          \"description\": \"JavaScript properties of an object, HTML tag, framework component, etc.\"\n        },\n        \"symbols\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/js-symbol\"\n          },\n          \"description\": \"Symbols available for JavaScript resolve. TypeScript resolve is not supported.\"\n        }\n      },\n      \"patternProperties\": {\n        \"^(?!pattern$).*$\": {\n          \"$ref\": \"#/definitions/generic-js-contributions\"\n        }\n      }\n    },\n    \"generic-js-contributions\": {\n      \"javaLenientDeserialize\": true,\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-js-contribution-or-property\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-js-contribution-or-property\"\n          }\n        }\n      ]\n    },\n    \"generic-js-contribution-or-property\": {\n      \"javaInterfaces\": [\n        \"GenericContributionOrProperty\"\n      ],\n      \"oneOf\": [\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"number\"\n        },\n        {\n          \"type\": \"boolean\"\n        },\n        {\n          \"$ref\": \"#/definitions/generic-js-contribution\"\n        }\n      ]\n    },\n    \"generic-js-contribution\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/js-contributions-host\"\n        }\n      ]\n    },\n    \"js-global\": {\n      \"type\": \"object\",\n      \"description\": \"Contains contributions to JS namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are 2 predefined kinds, which integrate directly with IDE - properties and events, but only events can be contributed globally.\",\n      \"properties\": {\n        \"events\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-js-contribution\"\n          },\n          \"description\": \"DOM events\"\n        },\n        \"symbols\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/js-symbol\"\n          },\n          \"description\": \"Globally available symbols for JavaScript resolve. TypeScript resolve is not supported. Please note that these symbols will override any normally available global JavaScript symbols.\"\n        }\n      },\n      \"patternProperties\": {\n        \"^(?!pattern$).*$\": {\n          \"$ref\": \"#/definitions/generic-js-contributions\"\n        }\n      }\n    },\n    \"js\": {\n      \"type\": \"object\",\n      \"description\": \"Contains contributions to JS namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are 2 predefined kinds, which integrate directly with IDE - properties and events.\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/js-contributions-host\"\n        }\n      ]\n    },\n    \"js-property\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/js-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"read-only\": {\n          \"description\": \"Specifies whether the property is read only.\",\n          \"type\": \"boolean\"\n        }\n      }\n    },\n    \"js-symbol\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/typed-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/js-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"description\": \"Kind of the symbol. Default is variable.\",\n          \"type\": \"string\",\n          \"enum\": [\n            \"Variable\",\n            \"Function\",\n            \"Namespace\",\n            \"Class\",\n            \"Interface\",\n            \"Enum\",\n            \"Alias\",\n            \"Module\"\n          ]\n        }\n      }\n    },\n    \"deprecated-types-syntax\": {\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/js-types-syntax\"\n        }\n      ],\n      \"description\": \"Deprecated, use top-level js-types-syntax property.\",\n      \"deprecationMessage\": \"Use top-level js-types-syntax property.\"\n    },\n    \"deprecated-description-markup\": {\n      \"description\": \"Deprecated, use top-level property.\",\n      \"deprecationMessage\": \"Use top-level property.\",\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/description-markup\"\n        }\n      ]\n    },\n    \"deprecated-html-attribute-vue-argument\": {\n      \"type\": \"object\",\n      \"description\": \"Deprecated vue-specific property - contribute Vue directives to /contributions/html/vue-directives\",\n      \"deprecationMessage\": \"Contribute Vue directives to /contributions/html/vue-directives\",\n      \"properties\": {\n        \"pattern\": {\n          \"$ref\": \"#/definitions/name-pattern-root\"\n        },\n        \"description\": {\n          \"$ref\": \"#/definitions/description\"\n        },\n        \"doc-url\": {\n          \"$ref\": \"#/definitions/doc-url\"\n        },\n        \"required\": {\n          \"description\": \"Whether directive requires an argument\",\n          \"type\": \"boolean\",\n          \"default\": false\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"deprecated-html-attribute-vue-modifier\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"name\": {\n          \"$ref\": \"#/definitions/name\"\n        },\n        \"pattern\": {\n          \"$ref\": \"#/definitions/name-pattern-root\"\n        },\n        \"description\": {\n          \"$ref\": \"#/definitions/description\"\n        },\n        \"doc-url\": {\n          \"$ref\": \"#/definitions/doc-url\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"additionalProperties\": false\n    }\n  }\n}","tools/vscode-extension/src/data-attributes.json":"{\n  \"data-attr\": {\n    \"prefix\": \"data-attr\",\n    \"body\": \"data-attr=\\\"{${1:attributeName}: ${2:expression}}\\\"\",\n    \"description\": \"Sets one or more attribute values using a set of key-value pairs that map to the attribute name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-attributes\"\n      }\n    ]\n  },\n  \"data-attr:*\": {\n    \"prefix\": \"data-attr:*\",\n    \"body\": \"data-attr:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Sets an element’s attribute value based on an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-attributes\"\n      }\n    ]\n  },\n  \"data-bind\": {\n    \"prefix\": \"data-bind\",\n    \"body\": \"data-bind=\\\"${1:signalName}\\\"\",\n    \"description\": \"Creates a new signal and enables two-way binding between it and the element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-bind\"\n      }\n    ]\n  },\n  \"data-bind:*\": {\n    \"prefix\": \"data-bind:*\",\n    \"body\": \"data-bind:${1:name}\",\n    \"description\": \"Creates a new signal and enables two-way binding between it and the element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-bind\"\n      }\n    ]\n  },\n  \"data-class\": {\n    \"prefix\": \"data-class\",\n    \"body\": \"data-class=\\\"{${1:className}: ${2:expression}}\\\"\",\n    \"description\": \"Adds or removes one or more classes from an element using a set of key-value pairs that map to the class name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-class\"\n      }\n    ]\n  },\n  \"data-class:*\": {\n    \"prefix\": \"data-class:*\",\n    \"body\": \"data-class:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Adds or removes a class from an element based on an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-class\"\n      }\n    ]\n  },\n  \"data-computed\": {\n    \"prefix\": \"data-computed\",\n    \"body\": \"data-computed=\\\"{${1:signalName}: ${2:expression}}\\\"\",\n    \"description\": \"Creates one or more signals that are computed based on a set of key-value pairs that map to the signal name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-computed\"\n      }\n    ]\n  },\n  \"data-computed:*\": {\n    \"prefix\": \"data-computed:*\",\n    \"body\": \"data-computed:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Creates a signal that is computed based on an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-computed\"\n      }\n    ]\n  },\n  \"data-custom-validity\": {\n    \"prefix\": \"data-custom-validity\",\n    \"body\": \"data-custom-validity=\\\"${1:expression}\\\"\",\n    \"description\": \"Adds custom validity to an element using an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-custom-validity\"\n      }\n    ]\n  },\n  \"data-effect\": {\n    \"prefix\": \"data-effect\",\n    \"body\": \"data-effect=\\\"${1:expression}\\\"\",\n    \"description\": \"Executes an expression on page load and whenever any signals in the expression change.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-effect\"\n      }\n    ]\n  },\n  \"data-ignore\": {\n    \"prefix\": \"data-ignore\",\n    \"body\": \"data-ignore\",\n    \"description\": \"Ignores an element and its descendants from being processed.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-ignore\"\n      }\n    ]\n  },\n  \"data-ignore-morph\": {\n    \"prefix\": \"data-ignore-morph\",\n    \"body\": \"data-ignore-morph\",\n    \"description\": \"Ignores an element when patching an element using the `morph` mode.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-ignore-morph\"\n      }\n    ]\n  },\n  \"data-indicator\": {\n    \"prefix\": \"data-indicator\",\n    \"body\": \"data-indicator=\\\"${1:signalName}\\\"\",\n    \"description\": \"Creates a signal to track in-flight backend requests.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-indicator\"\n      }\n    ]\n  },\n  \"data-indicator:*\": {\n    \"prefix\": \"data-indicator:*\",\n    \"body\": \"data-indicator:${1:name}\",\n    \"description\": \"Creates a signal to track in-flight backend requests.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-indicator\"\n      }\n    ]\n  },\n  \"data-init\": {\n    \"prefix\": \"data-init\",\n    \"body\": \"data-init=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever the attribute is initialised.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-init\"\n      }\n    ]\n  },\n  \"data-json-signals\": {\n    \"prefix\": \"data-json-signals\",\n    \"body\": \"data-json-signals=\\\"${1:expression}\\\"\",\n    \"description\": \"Sets the text content of an element to a reactive JSON stringified version of signals.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-json-signals\"\n      }\n    ]\n  },\n  \"data-on\": {\n    \"prefix\": \"data-on:*\",\n    \"body\": \"data-on:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Runs an expression whenever an event is triggered on an element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on\"\n      }\n    ]\n  },\n  \"data-on:click\": {\n    \"prefix\": \"data-on:click\",\n    \"body\": \"data-on:click=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever the element is clicked.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on\"\n      }\n    ]\n  },\n  \"data-on:keydown\": {\n    \"prefix\": \"data-on:keydown\",\n    \"body\": \"data-on:keydown=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever a key is pressed.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on\"\n      }\n    ]\n  },\n  \"data-on-intersect\": {\n    \"prefix\": \"data-on-intersect\",\n    \"body\": \"data-on-intersect=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression on intersection with the viewport.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-intersect\"\n      }\n    ]\n  },\n  \"data-on-interval\": {\n    \"prefix\": \"data-on-interval\",\n    \"body\": \"data-on-interval=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression at a regular interval.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-interval\"\n      }\n    ]\n  },\n  \"data-on-raf\": {\n    \"prefix\": \"data-on-raf\",\n    \"body\": \"data-on-raf=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression on every `requestAnimationFrame` event.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-raf\"\n      }\n    ]\n  },\n  \"data-on-resize\": {\n    \"prefix\": \"data-on-resize\",\n    \"body\": \"data-on-resize=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever an element’s dimensions change.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-resize\"\n      }\n    ]\n  },\n  \"data-on-signal-patch\": {\n    \"prefix\": \"data-on-signal-patch\",\n    \"body\": \"data-on-signal-patch=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever one or more signals are patched.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-signal-patch\"\n      }\n    ]\n  },\n  \"data-on-signal-patch-filter\": {\n    \"prefix\": \"data-on-signal-patch-filter\",\n    \"body\": \"data-on-signal-patch-filter=\\\"${1:expression}\\\"\",\n    \"description\": \"Filters which signals to watch when using the `data-on-signal-patch` attribute.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-signal-change\"\n      }\n    ]\n  },\n  \"data-persist\": {\n    \"prefix\": \"data-persist\",\n    \"body\": \"data-persist=\\\"\\\"\",\n    \"description\": \"Persists signals in local storage.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-persist\"\n      }\n    ]\n  },\n  \"data-persist:*\": {\n    \"prefix\": \"data-persist:*\",\n    \"body\": \"data-persist:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Persists signals in local storage with a custom key.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-persist\"\n      }\n    ]\n  },\n  \"data-preserve-attr\": {\n    \"prefix\": \"data-preserve-attr\",\n    \"body\": \"data-preserve-attr=\\\"\\\"\",\n    \"description\": \"Preserves the value of an attribute when patching elements using the `morph` mode.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-preserve-attr\"\n      }\n    ]\n  },\n  \"data-query-string\": {\n    \"prefix\": \"data-query-string\",\n    \"body\": \"data-query-string=\\\"\\\"\",\n    \"description\": \"Syncs query string params to signal values on page load, and syncs signal values to query string params on change.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-query-string\"\n      }\n    ]\n  },\n  \"data-ref\": {\n    \"prefix\": \"data-ref\",\n    \"body\": \"data-ref=\\\"${1:signalName}\\\"\",\n    \"description\": \"Creates a signal whose value references an element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-ref\"\n      }\n    ]\n  },\n  \"data-ref:*\": {\n    \"prefix\": \"data-ref:*\",\n    \"body\": \"data-ref:${1:name}\",\n    \"description\": \"Creates a signal whose value references an element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-ref\"\n      }\n    ]\n  },\n  \"data-replace-url\": {\n    \"prefix\": \"data-replace-url\",\n    \"body\": \"data-replace-url=\\\"${1:expression}\\\"\",\n    \"description\": \"Replaces the URL in the browser with an evaluated expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-replace-url\"\n      }\n    ]\n  },\n  \"data-scroll-into-view\": {\n    \"prefix\": \"data-scroll-into-view\",\n    \"body\": \"data-scroll-into-view\",\n    \"description\": \"Scrolls the element into view.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-scroll-into-view\"\n      }\n    ]\n  },\n  \"data-show\": {\n    \"prefix\": \"data-show\",\n    \"body\": \"data-show=\\\"${1:expression}\\\"\",\n    \"description\": \"Shows or hides an element based on whether an expression evaluates to `true` or `false`.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-show\"\n      }\n    ]\n  },\n  \"data-signals\": {\n    \"prefix\": \"data-signals\",\n    \"body\": \"data-signals=\\\"{${1:signalName}: ${2:expression}}\\\"\",\n    \"description\": \"Merges one or more signals into the existing signals using a set of key-value pairs that map to the signal name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-signals\"\n      }\n    ]\n  },\n  \"data-signals:*\": {\n    \"prefix\": \"data-signals:*\",\n    \"body\": \"data-signals:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Merges a signal into the existing signals.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-signals\"\n      }\n    ]\n  },\n  \"data-style\": {\n    \"prefix\": \"data-style\",\n    \"body\": \"data-style=\\\"{${1:styleName}: ${2:expression}}\\\"\",\n    \"description\": \"Adds or removes one or more inline CSS styles from an element using a set of key-value pairs that map to the style name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-style\"\n      }\n    ]\n  },\n  \"data-style:*\": {\n    \"prefix\": \"data-style:*\",\n    \"body\": \"data-style:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Adds or removes an inline CSS style from an element based on an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-style\"\n      }\n    ]\n  },\n  \"data-text\": {\n    \"prefix\": \"data-text\",\n    \"body\": \"data-text=\\\"${1:expression}\\\"\",\n    \"description\": \"Sets the text content of an element to the evaluated expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-text\"\n      }\n    ]\n  },\n  \"data-view-transition\": {\n    \"prefix\": \"data-view-transition\",\n    \"body\": \"data-view-transition=\\\"${1:expression}\\\"\",\n    \"description\": \"Sets the value of `view-transition-name` for use with the View Transition API.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-view-transition\"\n      }\n    ]\n  }\n}","tools/vscode-extension/package.json":"{\n  \"name\": \"datastar-vscode\",\n  \"version\": \"1.3.0\",\n  \"displayName\": \"Datastar\",\n  \"description\": \"Adds autocomplete and syntax highlighting for Datastar to Visual Studio Code.\",\n  \"author\": \"Ben Croker\",\n  \"publisher\": \"starfederation\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/starfederation/datastar\",\n  \"icon\": \"src/icon.png\",\n  \"galleryBanner\": {\n    \"color\": \"#bee3f8\",\n    \"theme\": \"light\"\n  },\n  \"engines\": {\n    \"vscode\": \"^1.63.0\"\n  },\n  \"categories\": [\n    \"Snippets\",\n    \"Other\"\n  ],\n  \"activationEvents\": [\n    \"onStartupFinished\"\n  ],\n  \"main\": \"src/extension.js\",\n  \"contributes\": {\n    \"grammars\": [\n      {\n        \"scopeName\": \"datastar.injection\",\n        \"path\": \"./src/datastar.injection.tmLanguage.json\",\n        \"injectTo\": [\n          \"text.html.basic\",\n          \"text.html.derivative\",\n          \"text.html.php\",\n          \"text.html.twig\",\n          \"text.html.php.blade\",\n          \"text.html.edge\",\n          \"text.html.nunjucks\",\n          \"text.html.njk\",\n          \"source.templ\",\n          \"source.astro\",\n          \"source.gohtml\",\n          \"text.html.vue\",\n          \"source.vue\",\n          \"source.svelte\",\n          \"text.html.svelte\",\n          \"text.html.handlebars\",\n          \"source.mustache\",\n          \"source.liquid\",\n          \"text.html.erb\",\n          \"text.html.ejs\",\n          \"text.pug\",\n          \"text.aspnetcorerazor\",\n          \"text.html.django\",\n          \"text.html.jinja\",\n          \"text.html.jsp\"\n        ]\n      }\n    ],\n    \"configuration\": {\n      \"title\": \"Datastar\",\n      \"properties\": {\n        \"datastar.customAttributes\": {\n          \"type\": \"array\",\n          \"default\": [],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Custom Datastar plugin names (without 'data-' prefix). Example: ['my-plugin', 'custom-action']\"\n        },\n        \"datastar.enabledLanguages\": {\n          \"type\": \"array\",\n          \"default\": [\n            \"html\",\n            \"php\",\n            \"twig\",\n            \"edge\",\n            \"nunjucks\",\n            \"templ\",\n            \"astro\",\n            \"vue\",\n            \"svelte\",\n            \"handlebars\",\n            \"mustache\",\n            \"liquid\",\n            \"erb\",\n            \"ejs\",\n            \"pug\",\n            \"razor\",\n            \"blade\",\n            \"django-html\",\n            \"jinja\",\n            \"gohtml\",\n            \"jsp\",\n            \"aspnetcorerazor\"\n          ],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Languages and file extensions where Datastar snippets should be available. Supports both VS Code language IDs (e.g., 'html', 'php') and file extensions (e.g., '.twig', '.templ', '.custom').\",\n          \"markdownDescription\": \"Languages and file extensions where Datastar snippets should be available. Supports both VS Code language IDs and file extensions.\\n\\n**Default supported languages/extensions:**\\n- `html` - HTML files\\n- `php` - PHP files\\n- `twig` - Twig templates (Craft CMS, Symfony)\\n- `blade` - Laravel Blade templates\\n- `vue` - Vue single file components\\n- `svelte` - Svelte files\\n- `astro` - Astro files\\n- `templ` - Go Templ files\\n- `erb` - Ruby ERB templates\\n- `ejs` - EJS templates\\n- `handlebars` - Handlebars templates\\n- `jinja` - Jinja templates (Python/Django)\\n- `gohtml` - Go HTML templates\\n\\n**Add custom file extensions:**\\n- `.edge` - Edge templates\\n- `.njk` - Nunjucks templates\\n- `.liquid` - Liquid templates\\n- `.pug` - Pug templates\\n- `.hbs` - Handlebars files\\n- `.mustache` - Mustache templates\\n- `.custom` - Any custom extension\\n\\n**Example:**\\n```json\\n[\\n  \\\"html\\\",\\n  \\\"php\\\",\\n  \\\"twig\\\",\\n  \\\".edge\\\",\\n  \\\".njk\\\",\\n  \\\".custom\\\"\\n]\\n```\"\n        }\n      }\n    },\n    \"snippets\": [\n      {\n        \"language\": \"html\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"php\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"twig\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"edge\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"nunjucks\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"templ\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"astro\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"vue\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"svelte\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"handlebars\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"mustache\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"liquid\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"erb\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"ejs\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"pug\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"razor\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"blade\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"django-html\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"jinja\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"gohtml\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"jsp\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"aspnetcorerazor\",\n        \"path\": \"./src/data-attributes.json\"\n      }\n    ]\n  },\n  \"devDependencies\": {\n    \"@vscode/vsce\": \"^3.7.1\"\n  },\n  \"scripts\": {\n    \"build\": \"npm exec vsce package\",\n    \"publish\": \"npm exec vsce publish $npm_package_version && npx ovsx publish datastar-vscode-$npm_package_version.vsix\"\n  }\n}\n","tools/intellij-plugin/src/main/resources/datastar-attributes.web-types.json":"{\n  \"$schema\": \"../../../../schema.json\",\n  \"name\": \"Datastar\",\n  \"version\": \"1.0.0\",\n  \"js-types-syntax\": \"typescript\",\n  \"description-markup\": \"markdown\",\n  \"default-icon\": \"icon.png\",\n  \"contributions\": {\n    \"js\": {\n      \"datastar-bind-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        }\n      ],\n      \"datastar-class-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the class\"\n        }\n      ],\n      \"datastar-computed-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        }\n      ],\n      \"datastar-ignore-modifiers\": [\n        {\n          \"name\": \"self\",\n          \"description\": \"Only ignore the element itself, not its descendants\"\n        }\n      ],\n      \"datastar-indicator-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        }\n      ],\n      \"datastar-init-modifiers\": [\n        {\n          \"name\": \"delay\",\n          \"description\": \"Delay the event listener\"\n        },\n        {\n          \"name\": \"delay.1s\",\n          \"description\": \"Delay for 1 second\"\n        },\n        {\n          \"name\": \"viewtransition\",\n          \"description\": \"Wraps the expression in `document.startViewTransition()`\"\n        }\n      ],\n      \"datastar-json-signals-modifiers\": [\n        {\n          \"name\": \"terse\",\n          \"description\": \"Outputs a more compact JSON format\"\n        }\n      ],\n      \"datastar-on-modifiers\": [\n        {\n          \"name\": \"capture\",\n          \"description\": \"Use a capture event listener\"\n        },\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the event name\"\n        },\n        {\n          \"name\": \"debounce\",\n          \"description\": \"Debounce the event listener\"\n        },\n        {\n          \"name\": \"debounce.500ms\",\n          \"description\": \"Debounce for 1000 milliseconds\"\n        },\n        {\n          \"name\": \"debounce.1s\",\n          \"description\": \"Debounce for 1 second\"\n        },\n        {\n          \"name\": \"debounce.leading\",\n          \"description\": \"Debounce with leading edge\"\n        },\n        {\n          \"name\": \"debounce.notrailing\",\n          \"description\": \"Debounce without trailing edge\"\n        },\n        {\n          \"name\": \"once\",\n          \"description\": \"Only trigger the event listener once\"\n        },\n        {\n          \"name\": \"outside\",\n          \"description\": \"Triggers when the event is outside the element\"\n        },\n        {\n          \"name\": \"passive\",\n          \"description\": \"Do not call `preventDefault` on the event listener\"\n        },\n        {\n          \"name\": \"throttle\",\n          \"description\": \"Throttle the event listener\"\n        },\n        {\n          \"name\": \"throttle.500ms\",\n          \"description\": \"Throttle for 500 milliseconds\"\n        },\n        {\n          \"name\": \"throttle.1s\",\n          \"description\": \"Throttle for 1 second\"\n        },\n        {\n          \"name\": \"throttle.noleading\",\n          \"description\": \"Throttle without leading edge\"\n        },\n        {\n          \"name\": \"throttle.trailing\",\n          \"description\": \"Throttle without trailing edge\"\n        },\n        {\n          \"name\": \"viewtransition\",\n          \"description\": \"Wraps the expression in `document.startViewTransition()` when the View Transition API is available\"\n        },\n        {\n          \"name\": \"window\",\n          \"description\": \"Attaches the event listener to the `window` element\"\n        }\n      ],\n      \"datastar-on-intersect-modifiers\": [\n        {\n          \"name\": \"full\",\n          \"description\": \"Trigger when the full element is visible\"\n        },\n        {\n          \"name\": \"half\",\n          \"description\": \"Trigger when half of the element is visible\"\n        },\n        {\n          \"name\": \"once\",\n          \"description\": \"Only trigger the event once\"\n        },\n        {\n          \"name\": \"viewtransition\",\n          \"description\": \"Wraps the expression in `document.startViewTransition()`\"\n        }\n      ],\n      \"datastar-on-interval-modifiers\": [\n        {\n          \"name\": \"duration\",\n          \"description\": \"The interval duration\"\n        },\n        {\n          \"name\": \"duration.500ms\",\n          \"description\": \"Set an interval duration of 500 milliseconds\"\n        },\n        {\n          \"name\": \"viewtransition\",\n          \"description\": \"Wraps the expression in `document.startViewTransition()`\"\n        }\n      ],\n      \"datastar-on-timing-modifiers\": [\n        {\n          \"name\": \"debounce\",\n          \"description\": \"Debounce the event listener\"\n        },\n        {\n          \"name\": \"debounce.500ms\",\n          \"description\": \"Debounce for 1000 milliseconds\"\n        },\n        {\n          \"name\": \"debounce.1s\",\n          \"description\": \"Debounce for 1 second\"\n        },\n        {\n          \"name\": \"debounce.leading\",\n          \"description\": \"Debounce with leading edge\"\n        },\n        {\n          \"name\": \"debounce.notrailing\",\n          \"description\": \"Debounce without trailing edge\"\n        },\n        {\n          \"name\": \"throttle\",\n          \"description\": \"Throttle the event listener\"\n        },\n        {\n          \"name\": \"throttle.500ms\",\n          \"description\": \"Throttle for 500 milliseconds\"\n        },\n        {\n          \"name\": \"throttle.1s\",\n          \"description\": \"Throttle for 1 second\"\n        },\n        {\n          \"name\": \"throttle.noleading\",\n          \"description\": \"Throttle without leading edge\"\n        },\n        {\n          \"name\": \"throttle.trailing\",\n          \"description\": \"Throttle without trailing edge\"\n        }\n      ],\n      \"datastar-persist-modifiers\": [\n        {\n          \"name\": \"session\",\n          \"description\": \"Persists signals values in Session Storage\"\n        }\n      ],\n      \"datastar-query-string-modifiers\": [\n        {\n          \"name\": \"filter\",\n          \"description\": \"Filters out empty values\"\n        },\n        {\n          \"name\": \"history\",\n          \"description\": \"Enables history support\"\n        }\n      ],\n      \"datastar-ref-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        }\n      ],\n      \"datastar-scroll-into-view-modifiers\": [\n        {\n          \"name\": \"auto\",\n          \"description\": \"Scrolling is determined by the computed scroll-behavior CSS property\"\n        },\n        {\n          \"name\": \"instant\",\n          \"description\": \"Scrolling should be instant\"\n        },\n        {\n          \"name\": \"focus\",\n          \"description\": \"Focus the element after scrolling\"\n        },\n        {\n          \"name\": \"hcenter\",\n          \"description\": \"Scroll to the horizontal center of the element\"\n        },\n        {\n          \"name\": \"hend\",\n          \"description\": \"Scroll to the right of the element\"\n        },\n        {\n          \"name\": \"hnearest\",\n          \"description\": \"Scroll to the nearest horizontal edge of the element\"\n        },\n        {\n          \"name\": \"hstart\",\n          \"description\": \"Scroll to the left of the element\"\n        },\n        {\n          \"name\": \"smooth\",\n          \"description\": \"Scrolling should be animate smoothly\"\n        },\n        {\n          \"name\": \"vstart\",\n          \"description\": \"Scroll to the top of the element\"\n        },\n        {\n          \"name\": \"vcenter\",\n          \"description\": \"Scroll to the vertical center of the element\"\n        },\n        {\n          \"name\": \"vend\",\n          \"description\": \"Scroll to the bottom of the element\"\n        },\n        {\n          \"name\": \"vnearest\",\n          \"description\": \"Scroll to the nearest vertical edge of the element\"\n        }\n      ],\n      \"datastar-signals-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        },\n        {\n          \"name\": \"ifmissing\",\n          \"description\": \"Only set the signals if the key does not exist. This is useful for setting defaults without overwriting existing values\"\n        }\n      ]\n    },\n    \"html\": {\n      \"attributes\": [\n        {\n          \"name\": \"data-attr:*\",\n          \"virtual\": true,\n          \"description\": \"Sets an element’s attribute value based on an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-attr\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"items\": [\n                  {\n                    \"path\": \"/html/attributes\",\n                    \"includeVirtual\": false\n                  }\n                ],\n                \"template\": [\n                  \"data-attr:\",\n                  \"$...\",\n                  \"#item:event name\"\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-attr\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-bind:*\",\n          \"virtual\": true,\n          \"description\": \"Creates a new signal and enables two-way binding between it and the element.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-bind\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-bind:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-bind-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\",\n                \"required\": false\n              },\n              {\n                \"template\": [\n                  \"data-bind\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-class:*\",\n          \"virtual\": true,\n          \"description\": \"Adds or removes classes from an element based on an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-class\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-class:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-class-modifiers\",\n                    \"template\": [\n                      \"data-class:\",\n                      \"$...\",\n                      \"#item:event name\"\n                    ],\n                    \"priority\": \"normal\"\n                  }\n                ]\n              },\n              {\n                \"template\": [\n                  \"data-class\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-computed:*\",\n          \"virtual\": true,\n          \"description\": \"Creates a signal that is computed based on an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-computed\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-computed:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-computed-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-computed\",\n                  {\n                    \"items\": \"/js/datastar-computed-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-custom-validity\",\n          \"virtual\": true,\n          \"description\": \"Adds custom validity to an element using an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-custom-validity\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-custom-validity\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-effect\",\n          \"virtual\": true,\n          \"description\": \"Executes an expression on page load and whenever any signals in the expression change.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-effect\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-effect\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-ignore\",\n          \"virtual\": true,\n          \"description\": \"Ignores an element and its descendants from being processed.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-ignore\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-ignore\",\n              {\n                \"items\": \"/js/datastar-ignore-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-ignore-morph\",\n          \"virtual\": true,\n          \"description\": \"Ignores an element when patching an element using the `morph` mode.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-ignore-morph\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-ignore-morph\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-indicator:*\",\n          \"virtual\": true,\n          \"description\": \"Creates a signal to track in-flight backend requests.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-indicator\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-indicator:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-indicator-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-indicator\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-init\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression whenever the element is initialised.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-init\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-init\",\n              {\n                \"items\": \"/js/datastar-init-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-json-signals\",\n          \"virtual\": true,\n          \"description\": \"Sets the text content of an element to a reactive JSON stringified version of signals.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-json-signals\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-json-signals\",\n              {\n                \"items\": \"/js/datastar-json-signals-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on:*\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression whenever an event is triggered on an element.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"items\": \"/js/events\",\n                \"template\": [\n                  \"data-on:\",\n                  \"$...\",\n                  \"#item:event name\",\n                  {\n                    \"items\": \"/js/datastar-on-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-on-intersect\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression on intersection with the viewport.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-intersect\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-intersect\",\n              {\n                \"items\": \"/js/datastar-on-intersect-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-interval\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression at a regular interval.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-interval\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-interval\",\n              {\n                \"items\": \"/js/datastar-on-interval-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-raf\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression on every `requestAnimationFrame` event.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-raf\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-raf\",\n              {\n                \"items\": \"/js/datastar-on-timing-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-resize\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression whenever an element’s dimensions change.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-resize\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-resize\",\n              {\n                \"items\": \"/js/datastar-on-timing-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-signal-patch\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression whenever one or more signals are patched.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-signal-patch\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-signal-patch\",\n              {\n                \"items\": \"/js/datastar-on-timing-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-signal-patch-filter\",\n          \"virtual\": true,\n          \"description\": \"Filters which signals to watch when using the `data-on-signal-patch` attribute.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-signal-patch-filter\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-signal-patch-filter\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-persist:*\",\n          \"virtual\": true,\n          \"description\": \"Persists all signals in local storage.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-persist\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-persist:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-persist\",\n                  {\n                    \"items\": \"/js/datastar-persist-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-preserve-attr\",\n          \"virtual\": true,\n          \"description\": \"Preserves the value of an attribute when patching elements using the `morph` mode.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-preserve-attr\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-preserve-attr\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-query-string\",\n          \"virtual\": true,\n          \"description\": \"Syncs query string params to signal values on page load, and syncs signal values to query string params on change.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-query-string\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-query-string\",\n              {\n                \"items\": \"/js/datastar-query-string-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-ref:*\",\n          \"virtual\": true,\n          \"description\": \"Creates a signal whose value references an element.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-ref\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-ref:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-ref-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-ref\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-replace-url\",\n          \"virtual\": true,\n          \"description\": \"Replaces the URL in the browser with an evaluated expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-replace-url\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-replace-url\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-scroll-into-view\",\n          \"virtual\": true,\n          \"description\": \"Scrolls the element into view.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-scroll-into-view\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-scroll-into-view\",\n              {\n                \"items\": \"/js/datastar-scroll-into-view-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-show\",\n          \"virtual\": true,\n          \"description\": \"Shows or hides an element based on whether an expression evaluates to `true` or `false`.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-show\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"boolean\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-show\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-signals:*\",\n          \"virtual\": true,\n          \"description\": \"Merges a signal into the existing signals.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-signals\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-signals:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-signals-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-signals\",\n                  {\n                    \"items\": \"/js/datastar-signals-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-style:*\",\n          \"virtual\": true,\n          \"description\": \"Adds or removes inline CSS styles from an element based on an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-style\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-style:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-style\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-text\",\n          \"virtual\": true,\n          \"description\": \"Sets the text content of an element to the evaluated expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-text\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-text\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-view-transition\",\n          \"virtual\": true,\n          \"description\": \"Sets the value of `view-transition-name` for use with the View Transition API.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-view-transition\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-view-transition\"\n            ],\n            \"priority\": \"normal\"\n          }\n        }\n      ]\n    }\n  }\n}","tools/intellij-plugin/LICENSE.md":"The MIT License (MIT)\n\nCopyright (c) nystudio107\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","tools/vscode-extension/src/datastar.injection.tmLanguage.json":"{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"scopeName\": \"datastar.injection\",\n  \"injectionSelector\": \"L:text.html, L:meta.tag -string -comment -expression.html-template -meta.function.echo.blade\",\n  \"patterns\": [\n    {\n      \"include\": \"#datastar-attribute\"\n    }\n  ],\n  \"repository\": {\n    \"datastar-attribute\": {\n      \"comment\": \"Match Datastar attributes: data-[plugin]:[key]:[nested-key]__[modifier(s)]\",\n      \"begin\": \"\\\\b(data-)(attr|bind|class|computed|effect|ignore|ignore-morph|indicator|init|json-signals|on|on-intersect|on-interval|on-signal-patch|on-signal-patch-filter|preserve-attr|ref|show|signals|style|text|animate|custom-validity|on-raf|on-resize|persist|query-string|replace-url|rocket|scroll-into-view|view-transition|my-foo)(?=__|:|[\\\\s>=])\",\n      \"end\": \"(?<=[\\\"'])|(?=[\\\\s>])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.datastar.prefix\"\n        },\n        \"2\": {\n          \"name\": \"support.function.datastar.plugin\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"comment\": \"Match plugin-like keys: :data-[plugin]\",\n          \"match\": \"(:)(data-(?:attr|bind|class|computed|effect|ignore|ignore-morph|indicator|init|json-signals|on|on-intersect|on-interval|on-signal-patch|on-signal-patch-filter|preserve-attr|ref|show|signals|style|text|animate|custom-validity|on-raf|on-resize|persist|query-string|replace-url|rocket|scroll-into-view|view-transition|my-foo))(?=__|:|[\\\\s>=])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key.datastar\"\n            },\n            \"2\": {\n              \"name\": \"support.function.datastar.plugin\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Match regular keys: :key\",\n          \"match\": \"(:)([a-z][a-z0-9-]*)(?=__|:|[\\\\s>=])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key.datastar\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.datastar.key\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Match modifiers with arguments: __modifier.arg\",\n          \"match\": \"(__)([a-z][a-z0-9-]*)(\\\\.)([a-z0-9]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.modifier.datastar\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.datastar\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.modifier-arg.datastar\"\n            },\n            \"4\": {\n              \"name\": \"constant.numeric.modifier-arg.datastar\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Match modifiers without arguments: __modifier\",\n          \"match\": \"(__)([a-z][a-z0-9-]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.modifier.datastar\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.datastar\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Match attribute value with expressions\",\n          \"begin\": \"(=)([\\\"'])\",\n          \"end\": \"\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key-value.html\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#datastar-expressions\"\n            }\n          ]\n        }\n      ]\n    },\n    \"datastar-expressions\": {\n      \"patterns\": [\n        {\n          \"include\": \"#signal-reference\"\n        },\n        {\n          \"include\": \"#action-call\"\n        },\n        {\n          \"include\": \"#method-call\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#javascript-syntax\"\n        }\n      ]\n    },\n    \"signal-reference\": {\n      \"match\": \"(\\\\$\\\\$?[a-zA-Z_][a-zA-Z0-9_]*)((\\\\?)?\\\\.[a-zA-Z_][a-zA-Z0-9_]*(?!\\\\())*(\\\\[[^\\\\]]+\\\\])?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.datastar.signal\"\n        }\n      }\n    },\n    \"action-call\": {\n      \"begin\": \"(@[a-z]+)(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.datastar.action\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.arguments.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    },\n    \"method-call\": {\n      \"begin\": \"(\\\\.)([a-zA-Z_][a-zA-Z0-9_]*)(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.datastar\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.datastar\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.arguments.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"begin\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.datastar\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.arguments.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    },\n    \"javascript-syntax\": {\n      \"patterns\": [\n        {\n          \"include\": \"#arrow-function\"\n        },\n        {\n          \"include\": \"#object-literal\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#spread-operator\"\n        },\n        {\n          \"include\": \"#js-strings\"\n        },\n        {\n          \"include\": \"#js-numbers\"\n        },\n        {\n          \"include\": \"#js-keywords\"\n        },\n        {\n          \"include\": \"#js-operators\"\n        }\n      ]\n    },\n    \"js-strings\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.double.datastar\",\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.escape.datastar\",\n              \"match\": \"\\\\\\\\.\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.single.datastar\",\n          \"begin\": \"'\",\n          \"end\": \"'\",\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.escape.datastar\",\n              \"match\": \"\\\\\\\\.\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.template.datastar\",\n          \"begin\": \"`\",\n          \"end\": \"`\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.template.expression.datastar\",\n              \"begin\": \"\\\\$\\\\{\",\n              \"end\": \"\\\\}\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.template-expression.begin.datastar\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.template-expression.end.datastar\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#datastar-expressions\"\n                }\n              ]\n            },\n            {\n              \"name\": \"constant.character.escape.datastar\",\n              \"match\": \"\\\\\\\\.\"\n            }\n          ]\n        }\n      ]\n    },\n    \"js-numbers\": {\n      \"match\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\\\\b\",\n      \"name\": \"constant.numeric.datastar\"\n    },\n    \"js-keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(const|let|var|async|await|function|return|throw|new|if|else|for|while|do|switch|case|break|continue|try|catch|finally)\\\\b\",\n          \"name\": \"keyword.control.datastar\"\n        },\n        {\n          \"match\": \"\\\\b(true|false|null|undefined)\\\\b\",\n          \"name\": \"constant.language.datastar\"\n        },\n        {\n          \"match\": \"\\\\b(this|event|el|Promise|Error|Array|Object|String|Number|Boolean|Date|Math|console)\\\\b\",\n          \"name\": \"support.class.datastar\"\n        }\n      ]\n    },\n    \"js-operators\": {\n      \"match\": \"(\\\\+\\\\+|--|\\\\+=|-=|\\\\*=|/=|%=|\\\\+|-|\\\\*|/|%|===|!==|==|!=|>=|<=|>|<|&&|\\\\|\\\\||\\\\?\\\\?|!|=|\\\\?|:)\",\n      \"name\": \"keyword.operator.datastar\"\n    },\n    \"spread-operator\": {\n      \"match\": \"\\\\.\\\\.\\\\.\",\n      \"name\": \"keyword.operator.spread.datastar\"\n    },\n    \"arrow-function\": {\n      \"match\": \"(\\\\([^)]*\\\\)|[a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(=>)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.function.datastar\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.function.arrow.datastar\"\n        }\n      }\n    },\n    \"object-literal\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.object.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.object.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.property.datastar\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.key-value.datastar\"\n            }\n          }\n        },\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    },\n    \"array-literal\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    }\n  }\n}","tools/vscode-extension/README.md":"# Datastar Extension for Visual Studio Code\n\nAdds autocomplete and syntax highlighting for [Datastar](https://data-star.dev/) to Visual Studio Code.\n\n![VSCode extension](https://data-star.dev/static/images/vscode-extension-120.png)\n\n## Configuration\n\nBy default, Datastar snippets work in HTML and most common template languages. You can customize which languages and file extensions have Datastar support by configuring the `datastar.enabledLanguages` setting.\n\n**To configure:**\n1. Open VS Code Settings (Cmd/Ctrl + ,)\n2. Search for \"datastar enabled languages\"\n3. Add language IDs (e.g., `html`, `php`, `twig`) or file extensions (e.g., `.edge`, `.njk`, `.custom`)\n\n**Example:**\n```json\n{\n  \"datastar.enabledLanguages\": [\n    \"html\",\n    \"php\",\n    \"twig\",\n    \".edge\",\n    \".custom\"\n  ]\n}\n```\n\n### Custom Attributes\n\nYou can add syntax highlighting support for custom Datastar plugins using the `datastar.customAttributes` setting.\n\n**To configure:**\n1. Open VS Code Settings (Cmd/Ctrl + ,)\n2. Search for \"datastar custom attributes\"\n3. Add your custom plugin names (without the `data-` prefix)\n\n**Example:**\n```json\n{\n  \"datastar.customAttributes\": [\n    \"my-plugin\"\n  ]\n}\n```\n\nAfter adding custom attributes, reload VS Code to apply the changes.\n\n## License\n\nThis plugin is licensed for free under the MIT License.\n\n## Requirements\n\nThis plugin requires Visual Studio Code version 1.63.0 or later.\n\n## Installation\n\nInstall the extension from the Visual Studio Code Marketplace or from the extensions panel by searching for “Datastar”.\n","tools/vscode-extension/package-lock.json":"{\n  \"name\": \"datastar-vscode\",\n  \"version\": \"1.2.1\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"datastar-vscode\",\n      \"version\": \"1.2.1\",\n      \"license\": \"MIT\",\n      \"devDependencies\": {\n        \"@vscode/vsce\": \"^3.7.1\"\n      },\n      \"engines\": {\n        \"vscode\": \"^1.63.0\"\n      }\n    },\n    \"node_modules/@azu/format-text\": {\n      \"version\": \"1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz\",\n      \"integrity\": \"sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==\",\n      \"dev\": true,\n      \"license\": \"BSD-3-Clause\"\n    },\n    \"node_modules/@azu/style-format\": {\n      \"version\": \"1.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.1.tgz\",\n      \"integrity\": \"sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==\",\n      \"dev\": true,\n      \"license\": \"WTFPL\",\n      \"dependencies\": {\n        \"@azu/format-text\": \"^1.0.1\"\n      }\n    },\n    \"node_modules/@azure/abort-controller\": {\n      \"version\": \"2.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz\",\n      \"integrity\": \"sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=18.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-auth\": {\n      \"version\": \"1.10.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz\",\n      \"integrity\": \"sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.1.2\",\n        \"@azure/core-util\": \"^1.13.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-client\": {\n      \"version\": \"1.10.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.1.tgz\",\n      \"integrity\": \"sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.1.2\",\n        \"@azure/core-auth\": \"^1.10.0\",\n        \"@azure/core-rest-pipeline\": \"^1.22.0\",\n        \"@azure/core-tracing\": \"^1.3.0\",\n        \"@azure/core-util\": \"^1.13.0\",\n        \"@azure/logger\": \"^1.3.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-rest-pipeline\": {\n      \"version\": \"1.22.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.1.tgz\",\n      \"integrity\": \"sha512-UVZlVLfLyz6g3Hy7GNDpooMQonUygH7ghdiSASOOHy97fKj/mPLqgDX7aidOijn+sCMU+WU8NjlPlNTgnvbcGA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.1.2\",\n        \"@azure/core-auth\": \"^1.10.0\",\n        \"@azure/core-tracing\": \"^1.3.0\",\n        \"@azure/core-util\": \"^1.13.0\",\n        \"@azure/logger\": \"^1.3.0\",\n        \"@typespec/ts-http-runtime\": \"^0.3.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-tracing\": {\n      \"version\": \"1.3.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz\",\n      \"integrity\": \"sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-util\": {\n      \"version\": \"1.13.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz\",\n      \"integrity\": \"sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.1.2\",\n        \"@typespec/ts-http-runtime\": \"^0.3.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/identity\": {\n      \"version\": \"4.12.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/identity/-/identity-4.12.0.tgz\",\n      \"integrity\": \"sha512-6vuh2R3Cte6SD6azNalLCjIDoryGdcvDVEV7IDRPtm5lHX5ffkDlIalaoOp5YJU08e4ipjJENel20kSMDLAcug==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.0.0\",\n        \"@azure/core-auth\": \"^1.9.0\",\n        \"@azure/core-client\": \"^1.9.2\",\n        \"@azure/core-rest-pipeline\": \"^1.17.0\",\n        \"@azure/core-tracing\": \"^1.0.0\",\n        \"@azure/core-util\": \"^1.11.0\",\n        \"@azure/logger\": \"^1.0.0\",\n        \"@azure/msal-browser\": \"^4.2.0\",\n        \"@azure/msal-node\": \"^3.5.0\",\n        \"open\": \"^10.1.0\",\n        \"tslib\": \"^2.2.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/logger\": {\n      \"version\": \"1.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz\",\n      \"integrity\": \"sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@typespec/ts-http-runtime\": \"^0.3.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/msal-browser\": {\n      \"version\": \"4.24.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.24.0.tgz\",\n      \"integrity\": \"sha512-BNoiUEx4olj16U9ZiquvIhG1dZBnwWSzSXiSclq/9qiFQXYeLOKqEaEv98+xLXJ3oLw9APwHTR1eY2Qk0v6XBQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/msal-common\": \"15.13.0\"\n      },\n      \"engines\": {\n        \"node\": \">=0.8.0\"\n      }\n    },\n    \"node_modules/@azure/msal-common\": {\n      \"version\": \"15.13.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.13.0.tgz\",\n      \"integrity\": \"sha512-8oF6nj02qX7eE/6+wFT5NluXRHc05AgdCC3fJnkjiJooq8u7BcLmxaYYSwc2AfEkWRMRi6Eyvvbeqk4U4412Ag==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=0.8.0\"\n      }\n    },\n    \"node_modules/@azure/msal-node\": {\n      \"version\": \"3.8.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.0.tgz\",\n      \"integrity\": \"sha512-23BXm82Mp5XnRhrcd4mrHa0xuUNRp96ivu3nRatrfdAqjoeWAGyD0eEAafxAOHAEWWmdlyFK4ELFcdziXyw2sA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/msal-common\": \"15.13.0\",\n        \"jsonwebtoken\": \"^9.0.0\",\n        \"uuid\": \"^8.3.0\"\n      },\n      \"engines\": {\n        \"node\": \">=16\"\n      }\n    },\n    \"node_modules/@babel/code-frame\": {\n      \"version\": \"7.27.1\",\n      \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n      \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@babel/helper-validator-identifier\": \"^7.27.1\",\n        \"js-tokens\": \"^4.0.0\",\n        \"picocolors\": \"^1.1.1\"\n      },\n      \"engines\": {\n        \"node\": \">=6.9.0\"\n      }\n    },\n    \"node_modules/@babel/helper-validator-identifier\": {\n      \"version\": \"7.28.5\",\n      \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz\",\n      \"integrity\": \"sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=6.9.0\"\n      }\n    },\n    \"node_modules/@isaacs/balanced-match\": {\n      \"version\": \"4.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz\",\n      \"integrity\": \"sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \"20 || >=22\"\n      }\n    },\n    \"node_modules/@isaacs/brace-expansion\": {\n      \"version\": \"5.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz\",\n      \"integrity\": \"sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@isaacs/balanced-match\": \"^4.0.1\"\n      },\n      \"engines\": {\n        \"node\": \"20 || >=22\"\n      }\n    },\n    \"node_modules/@isaacs/cliui\": {\n      \"version\": \"8.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz\",\n      \"integrity\": \"sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==\",\n      \"dev\": true,\n      \"license\": \"ISC\",\n      \"dependencies\": {\n        \"string-width\": \"^5.1.2\",\n        \"string-width-cjs\": \"npm:string-width@^4.2.0\",\n        \"strip-ansi\": \"^7.0.1\",\n        \"strip-ansi-cjs\": \"npm:strip-ansi@^6.0.1\",\n        \"wrap-ansi\": \"^8.1.0\",\n        \"wrap-ansi-cjs\": \"npm:wrap-ansi@^7.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=12\"\n      }\n    },\n    \"node_modules/@isaacs/cliui/node_modules/emoji-regex\": {\n      \"version\": \"9.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz\",\n      \"integrity\": \"sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@isaacs/cliui/node_modules/string-width\": {\n      \"version\": \"5.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz\",\n      \"integrity\": \"sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"eastasianwidth\": \"^0.2.0\",\n        \"emoji-regex\": \"^9.2.2\",\n        \"strip-ansi\": \"^7.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=12\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/@nodelib/fs.scandir\": {\n      \"version\": \"2.1.5\",\n      \"resolved\": \"https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz\",\n      \"integrity\": \"sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@nodelib/fs.stat\": \"2.0.5\",\n        \"run-parallel\": \"^1.1.9\"\n      },\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/@nodelib/fs.stat\": {\n      \"version\": \"2.0.5\",\n      \"resolved\": \"https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz\",\n      \"integrity\": \"sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/@nodelib/fs.walk\": {\n      \"version\": \"1.2.8\",\n      \"resolved\": \"https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz\",\n      \"integrity\": \"sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@nodelib/fs.scandir\": \"2.1.5\",\n        \"fastq\": \"^1.6.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/@secretlint/config-creator\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-10.2.2.tgz\",\n      \"integrity\": \"sha512-BynOBe7Hn3LJjb3CqCHZjeNB09s/vgf0baBaHVw67w7gHF0d25c3ZsZ5+vv8TgwSchRdUCRrbbcq5i2B1fJ2QQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/types\": \"^10.2.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/config-loader\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-10.2.2.tgz\",\n      \"integrity\": \"sha512-ndjjQNgLg4DIcMJp4iaRD6xb9ijWQZVbd9694Ol2IszBIbGPPkwZHzJYKICbTBmh6AH/pLr0CiCaWdGJU7RbpQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/profiler\": \"^10.2.2\",\n        \"@secretlint/resolver\": \"^10.2.2\",\n        \"@secretlint/types\": \"^10.2.2\",\n        \"ajv\": \"^8.17.1\",\n        \"debug\": \"^4.4.1\",\n        \"rc-config-loader\": \"^4.1.3\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/core\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/core/-/core-10.2.2.tgz\",\n      \"integrity\": \"sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/profiler\": \"^10.2.2\",\n        \"@secretlint/types\": \"^10.2.2\",\n        \"debug\": \"^4.4.1\",\n        \"structured-source\": \"^4.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/formatter\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/formatter/-/formatter-10.2.2.tgz\",\n      \"integrity\": \"sha512-10f/eKV+8YdGKNQmoDUD1QnYL7TzhI2kzyx95vsJKbEa8akzLAR5ZrWIZ3LbcMmBLzxlSQMMccRmi05yDQ5YDA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/resolver\": \"^10.2.2\",\n        \"@secretlint/types\": \"^10.2.2\",\n        \"@textlint/linter-formatter\": \"^15.2.0\",\n        \"@textlint/module-interop\": \"^15.2.0\",\n        \"@textlint/types\": \"^15.2.0\",\n        \"chalk\": \"^5.4.1\",\n        \"debug\": \"^4.4.1\",\n        \"pluralize\": \"^8.0.0\",\n        \"strip-ansi\": \"^7.1.0\",\n        \"table\": \"^6.9.0\",\n        \"terminal-link\": \"^4.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/formatter/node_modules/chalk\": {\n      \"version\": \"5.6.2\",\n      \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz\",\n      \"integrity\": \"sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \"^12.17.0 || ^14.13 || >=16.0.0\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n      }\n    },\n    \"node_modules/@secretlint/node\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/node/-/node-10.2.2.tgz\",\n      \"integrity\": \"sha512-eZGJQgcg/3WRBwX1bRnss7RmHHK/YlP/l7zOQsrjexYt6l+JJa5YhUmHbuGXS94yW0++3YkEJp0kQGYhiw1DMQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/config-loader\": \"^10.2.2\",\n        \"@secretlint/core\": \"^10.2.2\",\n        \"@secretlint/formatter\": \"^10.2.2\",\n        \"@secretlint/profiler\": \"^10.2.2\",\n        \"@secretlint/source-creator\": \"^10.2.2\",\n        \"@secretlint/types\": \"^10.2.2\",\n        \"debug\": \"^4.4.1\",\n        \"p-map\": \"^7.0.3\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/profiler\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/profiler/-/profiler-10.2.2.tgz\",\n      \"integrity\": \"sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@secretlint/resolver\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/resolver/-/resolver-10.2.2.tgz\",\n      \"integrity\": \"sha512-3md0cp12e+Ae5V+crPQYGd6aaO7ahw95s28OlULGyclyyUtf861UoRGS2prnUrKh7MZb23kdDOyGCYb9br5e4w==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@secretlint/secretlint-formatter-sarif\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-10.2.2.tgz\",\n      \"integrity\": \"sha512-ojiF9TGRKJJw308DnYBucHxkpNovDNu1XvPh7IfUp0A12gzTtxuWDqdpuVezL7/IP8Ua7mp5/VkDMN9OLp1doQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"node-sarif-builder\": \"^3.2.0\"\n      }\n    },\n    \"node_modules/@secretlint/secretlint-rule-no-dotenv\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-10.2.2.tgz\",\n      \"integrity\": \"sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/types\": \"^10.2.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/secretlint-rule-preset-recommend\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-10.2.2.tgz\",\n      \"integrity\": \"sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/source-creator\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-10.2.2.tgz\",\n      \"integrity\": \"sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/types\": \"^10.2.2\",\n        \"istextorbinary\": \"^9.5.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/types\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/types/-/types-10.2.2.tgz\",\n      \"integrity\": \"sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@sindresorhus/merge-streams\": {\n      \"version\": \"2.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz\",\n      \"integrity\": \"sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/@textlint/ast-node-types\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.5.0.tgz\",\n      \"integrity\": \"sha512-K0LEuuTo4rza8yDrlYkRdXLao8Iz/QBMsQdIxRrOOrLYb4HAtZaypZ78c+J6rDA1UlGxadZVLmkkiv4KV5fMKQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@textlint/linter-formatter\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.5.0.tgz\",\n      \"integrity\": \"sha512-DPTm2+VXKID41qKQWagg/4JynM6hEEpvbq0PlGsEoC4Xm7IqXIxFym3mSf5+ued0cuiIV1hR9kgXjqGdP035tw==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azu/format-text\": \"^1.0.2\",\n        \"@azu/style-format\": \"^1.0.1\",\n        \"@textlint/module-interop\": \"15.5.0\",\n        \"@textlint/resolver\": \"15.5.0\",\n        \"@textlint/types\": \"15.5.0\",\n        \"chalk\": \"^4.1.2\",\n        \"debug\": \"^4.4.3\",\n        \"js-yaml\": \"^4.1.1\",\n        \"lodash\": \"^4.17.21\",\n        \"pluralize\": \"^2.0.0\",\n        \"string-width\": \"^4.2.3\",\n        \"strip-ansi\": \"^6.0.1\",\n        \"table\": \"^6.9.0\",\n        \"text-table\": \"^0.2.0\"\n      }\n    },\n    \"node_modules/@textlint/linter-formatter/node_modules/ansi-regex\": {\n      \"version\": \"5.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n      \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/@textlint/linter-formatter/node_modules/pluralize\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz\",\n      \"integrity\": \"sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@textlint/linter-formatter/node_modules/strip-ansi\": {\n      \"version\": \"6.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n      \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ansi-regex\": \"^5.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/@textlint/module-interop\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.5.0.tgz\",\n      \"integrity\": \"sha512-rqfouEhBEgZlR9umswWXXRBcmmSM28Trpr9b0duzgehKYVc7wSQCuQMagr6YBJa2NRMfRNinupusbJXMg0ij2A==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@textlint/resolver\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/resolver/-/resolver-15.5.0.tgz\",\n      \"integrity\": \"sha512-kK5nFbg5N3kVoZExQI/dnYjCInmTltvXDnuCRrBxHI01i6kO/o8R7Lc2aFkAZ6/NUZuRPalkyDdwZJke4/R2wg==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@textlint/types\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/types/-/types-15.5.0.tgz\",\n      \"integrity\": \"sha512-EjAPbuA+3NyQ9WyFP7iUlddi35F3mGrf4tb4cZM0nWywbtEJ3+XAYqL+5RsF0qFeSguxGir09NdZOWrG9wVOUQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@textlint/ast-node-types\": \"15.5.0\"\n      }\n    },\n    \"node_modules/@types/normalize-package-data\": {\n      \"version\": \"2.4.4\",\n      \"resolved\": \"https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz\",\n      \"integrity\": \"sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@types/sarif\": {\n      \"version\": \"2.1.7\",\n      \"resolved\": \"https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz\",\n      \"integrity\": \"sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@typespec/ts-http-runtime\": {\n      \"version\": \"0.3.1\",\n      \"resolved\": \"https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.1.tgz\",\n      \"integrity\": \"sha512-SnbaqayTVFEA6/tYumdF0UmybY0KHyKwGPBXnyckFlrrKdhWFrL3a2HIPXHjht5ZOElKGcXfD2D63P36btb+ww==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"http-proxy-agent\": \"^7.0.0\",\n        \"https-proxy-agent\": \"^7.0.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@vscode/vsce\": {\n      \"version\": \"3.7.1\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce/-/vsce-3.7.1.tgz\",\n      \"integrity\": \"sha512-OTm2XdMt2YkpSn2Nx7z2EJtSuhRHsTPYsSK59hr3v8jRArK+2UEoju4Jumn1CmpgoBLGI6ReHLJ/czYltNUW3g==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/identity\": \"^4.1.0\",\n        \"@secretlint/node\": \"^10.1.2\",\n        \"@secretlint/secretlint-formatter-sarif\": \"^10.1.2\",\n        \"@secretlint/secretlint-rule-no-dotenv\": \"^10.1.2\",\n        \"@secretlint/secretlint-rule-preset-recommend\": \"^10.1.2\",\n        \"@vscode/vsce-sign\": \"^2.0.0\",\n        \"azure-devops-node-api\": \"^12.5.0\",\n        \"chalk\": \"^4.1.2\",\n        \"cheerio\": \"^1.0.0-rc.9\",\n        \"cockatiel\": \"^3.1.2\",\n        \"commander\": \"^12.1.0\",\n        \"form-data\": \"^4.0.0\",\n        \"glob\": \"^11.0.0\",\n        \"hosted-git-info\": \"^4.0.2\",\n        \"jsonc-parser\": \"^3.2.0\",\n        \"leven\": \"^3.1.0\",\n        \"markdown-it\": \"^14.1.0\",\n        \"mime\": \"^1.3.4\",\n        \"minimatch\": \"^3.0.3\",\n        \"parse-semver\": \"^1.1.1\",\n        \"read\": \"^1.0.7\",\n        \"secretlint\": \"^10.1.2\",\n        \"semver\": \"^7.5.2\",\n        \"tmp\": \"^0.2.3\",\n        \"typed-rest-client\": \"^1.8.4\",\n        \"url-join\": \"^4.0.1\",\n        \"xml2js\": \"^0.5.0\",\n        \"yauzl\": \"^2.3.1\",\n        \"yazl\": \"^2.2.2\"\n      },\n      \"bin\": {\n        \"vsce\": \"vsce\"\n      },\n      \"engines\": {\n        \"node\": \">= 20\"\n      },\n      \"optionalDependencies\": {\n        \"keytar\": \"^7.7.0\"\n      }\n    },\n    \"node_modules/@vscode/vsce-sign\": {\n      \"version\": \"2.0.8\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.8.tgz\",\n      \"integrity\": \"sha512-H7p8E11cZMj6mt8xIi3QXZ7dSU/2MH3Y7c+5JfUhHAV4xfaPNc8ozwLVK282c6ah596KoIJIdPUlNHV7Qs/5JA==\",\n      \"dev\": true,\n      \"hasInstallScript\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optionalDependencies\": {\n        \"@vscode/vsce-sign-alpine-arm64\": \"2.0.6\",\n        \"@vscode/vsce-sign-alpine-x64\": \"2.0.6\",\n        \"@vscode/vsce-sign-darwin-arm64\": \"2.0.2\",\n        \"@vscode/vsce-sign-darwin-x64\": \"2.0.2\",\n        \"@vscode/vsce-sign-linux-arm\": \"2.0.6\",\n        \"@vscode/vsce-sign-linux-arm64\": \"2.0.6\",\n        \"@vscode/vsce-sign-linux-x64\": \"2.0.6\",\n        \"@vscode/vsce-sign-win32-arm64\": \"2.0.6\",\n        \"@vscode/vsce-sign-win32-x64\": \"2.0.6\"\n      }\n    },\n    \"node_modules/@vscode/vsce-sign-alpine-arm64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz\",\n      \"integrity\": \"sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"alpine\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-alpine-x64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz\",\n      \"integrity\": \"sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"alpine\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-darwin-arm64\": {\n      \"version\": \"2.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.2.tgz\",\n      \"integrity\": \"sha512-rz8F4pMcxPj8fjKAJIfkUT8ycG9CjIp888VY/6pq6cuI2qEzQ0+b5p3xb74CJnBbSC0p2eRVoe+WgNCAxCLtzQ==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"darwin\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-darwin-x64\": {\n      \"version\": \"2.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz\",\n      \"integrity\": \"sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"darwin\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-linux-arm\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz\",\n      \"integrity\": \"sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==\",\n      \"cpu\": [\n        \"arm\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-linux-arm64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz\",\n      \"integrity\": \"sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-linux-x64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz\",\n      \"integrity\": \"sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-win32-arm64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz\",\n      \"integrity\": \"sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"win32\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-win32-x64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz\",\n      \"integrity\": \"sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"win32\"\n      ]\n    },\n    \"node_modules/agent-base\": {\n      \"version\": \"7.1.4\",\n      \"resolved\": \"https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz\",\n      \"integrity\": \"sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 14\"\n      }\n    },\n    \"node_modules/ajv\": {\n      \"version\": \"8.17.1\",\n      \"resolved\": \"https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz\",\n      \"integrity\": \"sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"fast-deep-equal\": \"^3.1.3\",\n        \"fast-uri\": \"^3.0.1\",\n        \"json-schema-traverse\": \"^1.0.0\",\n        \"require-from-string\": \"^2.0.2\"\n      },\n      \"funding\": {\n        \"type\": \"github\",\n        \"url\": \"https://github.com/sponsors/epoberezkin\"\n      }\n    },\n    \"node_modules/ansi-escapes\": {\n      \"version\": \"7.2.0\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz\",\n      \"integrity\": \"sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"environment\": \"^1.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/ansi-regex\": {\n      \"version\": \"6.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz\",\n      \"integrity\": \"sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=12\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/ansi-regex?sponsor=1\"\n      }\n    },\n    \"node_modules/ansi-styles\": {\n      \"version\": \"4.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n      \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"color-convert\": \"^2.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=8\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n      }\n    },\n    \"node_modules/argparse\": {\n      \"version\": \"2.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz\",\n      \"integrity\": \"sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==\",\n      \"dev\": true,\n      \"license\": \"Python-2.0\"\n    },\n    \"node_modules/astral-regex\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz\",\n      \"integrity\": \"sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/asynckit\": {\n      \"version\": \"0.4.0\",\n      \"resolved\": \"https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz\",\n      \"integrity\": \"sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/azure-devops-node-api\": {\n      \"version\": \"12.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz\",\n      \"integrity\": \"sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"tunnel\": \"0.0.6\",\n        \"typed-rest-client\": \"^1.8.4\"\n      }\n    },\n    \"node_modules/balanced-match\": {\n      \"version\": \"1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz\",\n      \"integrity\": \"sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/base64-js\": {\n      \"version\": \"1.5.1\",\n      \"resolved\": \"https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz\",\n      \"integrity\": \"sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==\",\n      \"dev\": true,\n      \"funding\": [\n        {\n          \"type\": \"github\",\n          \"url\": \"https://github.com/sponsors/feross\"\n        },\n        {\n          \"type\": \"patreon\",\n          \"url\": \"https://www.patreon.com/feross\"\n        },\n        {\n          \"type\": \"consulting\",\n          \"url\": \"https://feross.org/support\"\n        }\n      ],\n      \"license\": \"MIT\",\n      \"optional\": true\n    },\n    \"node_modules/binaryextensions\": {\n      \"version\": \"6.11.0\",\n      \"resolved\": \"https://registry.npmjs.org/binaryextensions/-/binaryextensions-6.11.0.tgz\",\n      \"integrity\": \"sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==\",\n      \"dev\": true,\n      \"license\": \"Artistic-2.0\",\n      \"dependencies\": {\n        \"editions\": \"^6.21.0\"\n      },\n      \"engines\": {\n        \"node\": \">=4\"\n      },\n      \"funding\": {\n        \"url\": \"https://bevry.me/fund\"\n      }\n    },\n    \"node_modules/bl\": {\n      \"version\": \"4.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/bl/-/bl-4.1.0.tgz\",\n      \"integrity\": \"sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"dependencies\": {\n        \"buffer\": \"^5.5.0\",\n        \"inherits\": \"^2.0.4\",\n        \"readable-stream\": \"^3.4.0\"\n      }\n    },\n    \"node_modules/boolbase\": {\n      \"version\": \"1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz\",\n      \"integrity\": \"sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==\",\n      \"dev\": true,\n      \"license\": \"ISC\"\n    },\n    \"node_modules/boundary\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz\",\n      \"integrity\": \"sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==\",\n      \"dev\": true,\n      \"license\": \"BSD-2-Clause\"\n    },\n    \"node_modules/brace-expansion\": {\n      \"version\": \"1.1.12\",\n      \"resolved\": \"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz\",\n      \"integrity\": \"sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"balanced-match\": \"^1.0.0\",\n        \"concat-map\": \"0.0.1\"\n      }\n    },\n    \"node_modules/braces\": {\n      \"version\": \"3.0.3\",\n      \"resolved\": \"https://registry.npmjs.org/braces/-/braces-3.0.3.tgz\",\n      \"integrity\": \"sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"fill-range\": \"^7.1.1\"\n      },\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/buffer\": {\n      \"version\": \"5.7.1\",\n      \"resolved\": \"https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz\",\n      \"integrity\": \"sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==\",\n      \"dev\": true,\n      \"funding\": [\n        {\n          \"type\": \"github\",\n          \"url\": \"https://github.com/sponsors/feross\"\n        },\n        {\n          \"type\": \"patreon\",\n          \"url\": \"https://www.patreon.com/feross\"\n        },\n        {\n          \"type\": \"consulting\",\n          \"url\": \"https://feross.org/support\"\n        }\n      ],\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"dependencies\": {\n        \"base64-js\": \"^1.3.1\",\n        \"ieee754\": \"^1.1.13\"\n      }\n    },\n    \"node_modules/buffer-crc32\": {\n      \"version\": \"0.2.13\",\n      \"resolved\": \"https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz\",\n      \"integrity\": \"sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \"*\"\n      }\n    },\n    \"node_modules/buffer-equal-constant-time\": {\n      \"version\": \"1.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz\",\n      \"integrity\": \"sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==\",\n      \"dev\": true,\n      \"license\": \"BSD-3-Clause\"\n    },\n    \"node_modules/bundle-name\": {\n      \"version\": \"4.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz\",\n      \"integrity\": \"sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"run-applescript\": \"^7.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/call-bind-apply-helpers\": {\n      \"version\": \"1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz\",\n      \"integrity\": \"sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"es-errors\": \"^1.3.0\",\n        \"function-bind\": \"^1.1.2\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/call-bound\": {\n      \"version\": \"1.0.4\",\n      \"resolved\": \"https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz\",\n      \"integrity\": \"sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"call-bind-apply-helpers\": \"^1.0.2\",\n        \"get-intrinsic\": \"^1.3.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/ljharb\"\n      }\n    },\n    \"node_modules/chalk\": {\n      \"version\": \"4.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n      \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ansi-styles\": \"^4.1.0\",\n        \"supports-color\": \"^7.1.0\"\n      },\n      \"engines\": {\n        \"node\": \">=10\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n      }\n    },\n    \"node_modules/cheerio\": {\n      \"version\": \"1.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz\",\n      \"integrity\": \"sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"cheerio-select\": \"^2.1.0\",\n        \"dom-serializer\": \"^2.0.0\",\n        \"domhandler\": \"^5.0.3\",\n        \"domutils\": \"^3.2.2\",\n        \"encoding-sniffer\": \"^0.2.1\",\n        \"htmlparser2\": \"^10.0.0\",\n        \"parse5\": \"^7.3.0\",\n        \"parse5-htmlparser2-tree-adapter\": \"^7.1.0\",\n        \"parse5-parser-stream\": \"^7.1.2\",\n        \"undici\": \"^7.12.0\",\n        \"whatwg-mimetype\": \"^4.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.18.1\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/cheeriojs/cheerio?sponsor=1\"\n      }\n    },\n    \"node_modules/cheerio-select\": {\n      \"version\": \"2.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz\",\n      \"integrity\": \"sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==\",\n      \"dev\": true,\n      \"license\": \"BSD-2-Clause\",\n      \"dependencies\": {\n        \"boolbase\": \"^1.0.0\",\n        \"css-select\": \"^5.1.0\",\n        \"css-what\": \"^6.1.0\",\n        \"domelementtype\": \"^2.3.0\",\n        \"domhandler\": \"^5.0.3\",\n        \"domutils\": \"^3.0.1\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/fb55\"\n      }\n    },\n    \"node_modules/chownr\": {\n      \"version\": \"1.1.4\",\n      \"resolved\": \"https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz\",\n      \"integrity\": \"sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==\",\n      \"dev\": true,\n      \"license\": \"ISC\",\n      \"optional\": true\n    },\n    \"node_modules/cockatiel\": {\n      \"version\": \"3.2.1\",\n      \"resolved\": \"https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz\",\n      \"integrity\": \"sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=16\"\n      }\n    },\n    \"node_modules/color-convert\": {\n      \"version\": \"2.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n      \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"color-name\": \"~1.1.4\"\n      },\n      \"engines\": {\n        \"node\": \">=7.0.0\"\n      }\n    },\n    \"node_modules/color-name\": {\n      \"version\": \"1.1.4\",\n      \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n      \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/combined-stream\": {\n      \"version\": \"1.0.8\",\n      \"resolved\": \"https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz\",\n      \"integrity\": \"sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"delayed-stream\": \"~1.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.8\"\n      }\n    },\n    \"node_modules/commander\": {\n      \"version\": \"12.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/commander/-/commander-12.1.0.tgz\",\n      \"integrity\": \"sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/concat-map\": {\n      \"version\": \"0.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz\",\n      \"integrity\": \"sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/cross-spawn\": {\n      \"version\": \"7.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz\",\n      \"integrity\": \"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"path-key\": \"^3.1.0\",\n        \"shebang-command\": \"^2.0.0\",\n        \"which\": \"^2.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/css-select\": {\n      \"version\": \"5.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz\",\n      \"integrity\": \"sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==\",\n      \"dev\": true,\n      \"license\": \"BSD-2-Clause\",\n      \"dependencies\": {\n        \"boolbase\": \"^1.0.0\",\n        \"css-what\": \"^6.1.0\",\n        \"domhandler\": \"^5.0.2\",\n        \"domutils\": \"^3.0.1\",\n        \"nth-check\": \"^2.0.1\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/fb55\"\n      }\n    },\n    \"node_modules/css-what\": {\n      \"version\": \"6.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz\",\n      \"integrity\": \"sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==\",\n      \"dev\": true,\n      \"license\": \"BSD-2-Clause\",\n      \"engines\": {\n        \"node\": \">= 6\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/fb55\"\n      }\n    },\n    \"node_modules/debug\": {\n      \"version\": \"4.4.3\",\n      \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n      \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ms\": \"^2.1.3\"\n      },\n      \"engines\": {\n        \"node\": \">=6.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"supports-color\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/decompress-response\": {\n      \"version\": \"6.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz\",\n      \"integrity\": \"sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"dependencies\": {\n        \"mimic-response\": \"^3.1.0\"\n      },\n      \"engines\": {\n        \"node\": \">=10\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/deep-extend\": {\n      \"version\": \"0.6.0\",\n      \"resolved\": \"https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz\",\n      \"integrity\": \"sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"engines\": {\n        \"node\": \">=4.0.0\"\n      }\n    },\n    \"node_modules/default-browser\": {\n      \"version\": \"5.2.1\",\n      \"resolved\": \"https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz\",\n      \"integrity\": \"sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"bundle-name\": \"^4.1.0\",\n        \"default-browser-id\": \"^5.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/default-browser-id\": {\n      \"version\": \"5.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz\",\n      \"integrity\": \"sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/define-lazy-prop\": {\n      \"version\": \"3.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz\",\n      \"integrity\": \"sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=12\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/delayed-stream\": {\n      \"version\": \"1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz\",\n      \"integrity\": \"sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=0.4.0\"\n      }\n    },\n    \"node_modules/detect-libc\": {\n      \"version\": \"2.1.1\",\n      \"resolved\": ","tools/intellij-plugin/CHANGELOG.md":"# Datastar Support JetBrains Plugin Changelog\n\n## [Unreleased]\n\n## [1.2.3] - 2025-11-08\n\n- Made it so that the `data-bind` attribute appears on all elements, rather than only a few select ones (`input`, `select`, etc.).\n\n## [1.2.2] - 2025-10-22\n\n- Fixed icon.\n\n## [1.2.1] - 2025-10-22\n\n- Fixed icon.\n\n## [1.2.0] - 2025-10-22\n\n- Added support for using object syntax with `data-computed`.\n- Added the `self` modifier to `data-ignore`.\n- Changed the attribute key delimiter from `-` to `:`.\n- Renamed `data-on-load` to `data-init`.\n\n## [1.1.1] - 2025-08-23\n\n- Added the `data-style` attribute.\n- Added the ability to use a key with the `data-persist` attribute.\n- Added the `filter` modifier to the `data-query-string` attribute.\n- Removed the `trusted` modifier.\n\n## [1.1.0] - 2025-07-16\n\n### Added\n\n- Added the `data-effect` attribute.\n- Added the `data-ignore` attribute.\n- Added the `data-ignore-morph` attribute.\n- Added the `data-json-signals` attribute.\n- Added the `data-on-resize` attribute.\n- Added the `data-on-signal-patch` attribute.\n- Added the `data-on-signal-patch-filter` attribute.\n- Added the `data-preserve-attr` attribute.\n- Added the `data-query-string` attribute.\n- Added the `trusted` modifier.\n\n## [1.0.2] - 2025.02.11\n\n### Added\n\n- Added the `case` modifier to `data-on-*`.\n- Added the `viewtransition` modifier to `data-on-*`.\n\n## [1.0.1] - 2025.02.01\n\n### Added\n\n- Added the `data-on-interval` attribute.\n- Added the `delay` modifier to `data-on-*`.\n- Added the `duration` modifier to `data-on-*`.\n\n## [1.0.0] - 2025.01.04\n\n### Added\n\n- Added the `data-custom-validity` attribute.\n- Added the `data-star-ignore` attribute.\n- Added the `outside` modifier to `data-on-*`.\n\n### Changed\n\n- Replaced the `data-attributes` attribute with `data-attr`.\n\n## [0.21.0] - 2024.12.10\n\n### Added\n\n- Initial public release\n\n[Unreleased]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.2.3...HEAD\n[1.2.3]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.2.2...v1.2.3\n[1.2.2]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.2.1...v1.2.2\n[1.2.1]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.2.0...v1.2.1\n[1.2.0]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.1.1...v1.2.0\n[1.1.1]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.1.0...v1.1.1\n[1.1.0]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.0.2...v1.1.0\n[1.0.2]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.0.1...v1.0.2\n[1.0.1]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.0.0...v1.0.1\n[1.0.0]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v0.21.0...v1.0.0\n[0.21.0]: https://github.com/starfederation/datastar/tools/intellij-plugin/commits/v0.21.0\n","tools/intellij-plugin/README.md":"# Datastar Support JetBrains Plugin\n\n[![Version](https://img.shields.io/jetbrains/plugin/v/26072.svg)](https://plugins.jetbrains.com/plugin/26072)\n[![Downloads](https://img.shields.io/jetbrains/plugin/d/26072.svg)](https://plugins.jetbrains.com/plugin/26072)\n\n<!-- Plugin description -->\nThis plugin offers IntelliJ IDE support for the [Datastar](https://data-star.dev/) framework.\n\nIt offers autocomplete for all of the Datastar custom `data-*` attributes, with additional autocomplete of DOM\nattributes and events.\n\nYou can show the documentation alongside the autocomplete suggestions via the File &rarr; Settings &rarr; Editor &rarr;\nGeneral &rarr;\nCode Completion: **Show the documentation popup in .... ms checkbox**\n<!-- Plugin description end -->\n\n![Screenshot](./resources/img/datastar-intellij-plugin.png)\n\n## Installation\n\n- Using the IDE built-in plugin system:\n\n  <kbd>Settings/Preferences</kbd> > <kbd>Plugins</kbd> > <kbd>Marketplace</kbd> > <kbd>Search for \"\n  datastar-jetbrains-plugin\"</kbd> >\n  <kbd>Install</kbd>\n\n- Using JetBrains Marketplace:\n\n  Go to [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/26072) and install it by clicking\n  the <kbd>Install to ...</kbd> button in case your IDE is running.\n\n  You can also download the [latest release](https://plugins.jetbrains.com/plugin/26072/versions) from\n  JetBrains Marketplace and install it manually using\n  <kbd>Settings/Preferences</kbd> > <kbd>Plugins</kbd> > <kbd>⚙️</kbd> > <kbd>Install plugin from disk...</kbd>\n\n- Manually:\n\n  Download the [latest release](https://github.com/starfederation/datastar-jetbrains-plugin/releases/latest) and install it\n  manually using\n  <kbd>Settings/Preferences</kbd> > <kbd>Plugins</kbd> > <kbd>⚙️</kbd> > <kbd>Install plugin from disk...</kbd>\n\n## Errata\n\n- The Datastar support plugin does have inline documentation and links to the official documentation, but due an\n  [issue with the `web-types`](https://github.com/JetBrains/web-types/issues/85) implementation, it does not appear on\n  hover currently.\n- Autocomplete of Datastar actions in attribute values is not implemented yet\n- CI build & release workflows are not implemented yet\n\nBrought to you by [nystudio107](https://nystudio107.com/)\n\n---\nPlugin based on the [IntelliJ Platform Plugin Template][template].\n\n[template]: https://github.com/JetBrains/intellij-platform-plugin-template\n\n[docs:plugin-description]: https://plugins.jetbrains.com/docs/intellij/plugin-user-experience.html#plugin-description-and-presentation\n","tools/vscode-extension/LICENSE.md":"Copyright © Ben Croker\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},"files":{"tools/intellij-plugin/schema.json":"{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"title\": \"JSON schema for Web-Types\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"$schema\": {\n      \"type\": \"string\"\n    },\n    \"framework\": {\n      \"description\": \"Framework, for which the components are provided by the library. If the library is not enabled in a particular context, all symbols from this file will not be available as well. If you want symbols to be always available do not specify framework.\",\n      \"type\": \"string\"\n    },\n    \"required-context\": {\n      \"description\": \"Since 2024.2. Specify contexts, which are required to enable contributions from this file.\",\n      \"$ref\": \"#/definitions/required-context\"\n    },\n    \"context\": {\n      \"description\": \"Deprecated since 2024.2 because of ambiguous meaning - use \\\"required-context\\\" instead.\",\n      \"deprecationMessage\": \"Use \\\"required-context\\\" instead.\",\n      \"$ref\": \"#/definitions/required-context\"\n    },\n    \"name\": {\n      \"description\": \"Name of the library.\",\n      \"type\": \"string\"\n    },\n    \"version\": {\n      \"description\": \"Version of the library, for which Web-Types are provided.\",\n      \"type\": \"string\"\n    },\n    \"js-types-syntax\": {\n      \"$ref\": \"#/definitions/js-types-syntax\"\n    },\n    \"description-markup\": {\n      \"$ref\": \"#/definitions/description-markup\"\n    },\n    \"framework-config\": {\n      \"$ref\": \"#/definitions/framework-config\"\n    },\n    \"contexts-config\": {\n      \"$ref\": \"#/definitions/contexts-config\"\n    },\n    \"default-icon\": {\n      \"$ref\": \"#/definitions/icon\"\n    },\n    \"contributions\": {\n      \"description\": \"Symbol can be contributed to one of the 3 namespaces - HTML, CSS and JS. Within a particular namespace there can be different kinds of symbols. In each of the namespaces, there are several predefined kinds, which integrate directly with IDE, but providers are free to define their own.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"html\": {\n          \"$ref\": \"#/definitions/html\"\n        },\n        \"css\": {\n          \"$ref\": \"#/definitions/css\"\n        },\n        \"js\": {\n          \"$ref\": \"#/definitions/js-global\"\n        }\n      },\n      \"additionalProperties\": false\n    }\n  },\n  \"required\": [\n    \"name\",\n    \"version\"\n  ],\n  \"additionalProperties\": false,\n  \"definitions\": {\n    \"js-types-syntax\": {\n      \"description\": \"Language in which JavaScript objects types are specified.\",\n      \"type\": \"string\",\n      \"enum\": [\n        \"typescript\"\n      ]\n    },\n    \"description-markup\": {\n      \"description\": \"Markup language in which descriptions are formatted.\",\n      \"type\": \"string\",\n      \"default\": \"none\",\n      \"enum\": [\n        \"html\",\n        \"markdown\",\n        \"none\"\n      ]\n    },\n    \"required-context\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"kind\": {\n              \"type\": \"string\"\n            },\n            \"name\": {\n              \"type\": \"string\"\n            }\n          },\n          \"required\": [\n            \"kind\",\n            \"name\"\n          ],\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"anyOf\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/definitions/required-context\"\n              }\n            }\n          },\n          \"required\": [\n            \"anyOf\"\n          ],\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"allOf\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/definitions/required-context\"\n              }\n            }\n          },\n          \"required\": [\n            \"allOf\"\n          ],\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"not\": {\n              \"$ref\": \"#/definitions/required-context\"\n            }\n          },\n          \"required\": [\n            \"not\"\n          ],\n          \"additionalProperties\": false\n        }\n      ]\n    },\n    \"framework-config\": {\n      \"description\": \"Provide configuration for the specified web framework. This is an advanced feature, which is used to provide support for templating frameworks like Angular, Vue, Svelte, etc.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"enable-when\": {\n          \"$ref\": \"#/definitions/enablement-rules\"\n        },\n        \"disable-when\": {\n          \"$ref\": \"#/definitions/disablement-rules\"\n        },\n        \"canonical-names\": {\n          \"description\": \"In many frameworks symbols can have multiple versions of a name. Specify canonical name conversion rule for names of particular symbol kinds against which comparisons will be made. Format of the 'canonical-names' property names is '{namespace}/{symbol kind}'. By default symbol names in HTML namespace are converted to lower-case, and in CSS and JS namespaces are left as-is. In case of name patterns, rules are applied to each part of the pattern separately, so even if the symbol with pattern is in HTML namespace, references to JS events will be case-sensitive.\",\n          \"$ref\": \"#/definitions/name-conversion-rules-single\"\n        },\n        \"match-names\": {\n          \"description\": \"Provide an array of name conversions, in which particular symbol kinds should be matched against canonical names of symbols. By default symbol names are converted using canonical-names rule.\",\n          \"$ref\": \"#/definitions/name-conversion-rules-multiple\"\n        },\n        \"name-variants\": {\n          \"description\": \"Provide an array of name conversions, in which particular symbol kinds should be proposed in auto completion. Format of the 'name-variants' property names is '{namespace}/{symbol kind}'. All symbol kinds are by default provided as-is.\",\n          \"$ref\": \"#/definitions/name-conversion-rules-multiple\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"contexts-config\": {\n      \"description\": \"Provide configuration for Web Types contexts. This allows to contribute additional Web Types for example if a particular library is present in the project.\",\n      \"type\": \"object\",\n      \"additionalProperties\": {\n        \"$ref\": \"#/definitions/context-kind-config\"\n      }\n    },\n    \"context-kind-config\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"kind\": {\n          \"description\": \"Context kind. Only a single context of the particular kind will be enabled. An example of context kind is framework, which has dedicated support in Web Types.\",\n          \"deprecationMessage\": \"As of 2024.2 this is deprecated way of defining context. The outer context should be the context kind with a nested context name.\",\n          \"type\": \"string\"\n        },\n        \"enable-when\": {\n          \"deprecationMessage\": \"As of 2024.2 this is deprecated way of defining context. The outer context should be the context kind with a nested context name.\",\n          \"$ref\": \"#/definitions/enablement-rules\"\n        },\n        \"disable-when\": {\n          \"deprecationMessage\": \"As of 2024.2 this is deprecated way of defining context. The outer context should be the context kind with a nested context name.\",\n          \"$ref\": \"#/definitions/disablement-rules\"\n        }\n      },\n      \"additionalProperties\": {\n        \"$ref\": \"#/definitions/context-config\"\n      }\n    },\n    \"context-config\": {\n      \"description\": \"Since 2024.2. Provide rules for setting a particular name for particular context kind. This allows to contribute additional Web Types for example if a particular library is present in the project.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"enable-when\": {\n          \"$ref\": \"#/definitions/enablement-rules\"\n        },\n        \"disable-when\": {\n          \"$ref\": \"#/definitions/disablement-rules\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"enablement-rules\": {\n      \"description\": \"Specify rules for enabling web framework support. Only one framework can be enabled in a particular file. If you need your contributions to be enabled in all files, regardless of the context, do not specify the framework.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"node-packages\": {\n          \"description\": \"Node.js package names, which enable framework support within the folder containing the package.json.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"ruby-gems\": {\n          \"description\": \"Since 2024.2. Ruby gem names, which enable framework support within the particular Ruby module.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"file-extensions\": {\n          \"description\": \"Extensions of files, which should have the framework support enabled. Use this to support custom file extensions like '.vue' or '.svelte'. Never specify generic extensions like '.html', '.js' or '.ts'. If you need your contributions to be present in every file don't specify the framework at all\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"file-name-patterns\": {\n          \"description\": \"RegExp patterns to match file names, which should have the framework support enabled. Use carefully as broken pattern may even freeze IDE.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/pattern\"\n          }\n        },\n        \"ide-libraries\": {\n          \"description\": \"Global JavaScript libraries names enabled within the IDE, which enable framework support in the whole project\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"project-tool-executables\": {\n          \"description\": \"List of tool executables (without extension), which presence should be checked in the project. In case of Node projects, such tools will be searched in node_modules/.bin/\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"additionalProperties\": {\n        \"$ref\": \"#/definitions/custom-enablement-rules\"\n      }\n    },\n    \"custom-enablement-rules\": {\n      \"description\": \"Since 2024.2. Custom package manager dependencies, which would enable context according to the rules of custom provider.\",\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"disablement-rules\": {\n      \"description\": \"Specify rules for disabling web framework support. These rules take precedence over enable-when rules. They allow to turn off framework support in case of some conflicts between frameworks priority.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"file-extensions\": {\n          \"description\": \"Extensions of files, which should have the framework support disabled\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"file-name-patterns\": {\n          \"description\": \"RegExp patterns to match file names, which should have the framework support disabled\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/pattern\"\n          }\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"name-conversion-rules-single\": {\n      \"type\": \"object\",\n      \"patternProperties\": {\n        \"^/[^/\\\\n\\\\r]+/[^/\\\\n\\\\r]+$\": {\n          \"$ref\": \"#/definitions/name-converter\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"name-conversion-rules-multiple\": {\n      \"type\": \"object\",\n      \"patternProperties\": {\n        \"^/[^/\\\\n\\\\r]+/[^/\\\\n\\\\r]+$\": {\n          \"$ref\": \"#/definitions/name-converters\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"name-converters\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"$ref\": \"#/definitions/name-converter\"\n      }\n    },\n    \"name-converter\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"as-is\",\n        \"PascalCase\",\n        \"camelCase\",\n        \"lowercase\",\n        \"UPPERCASE\",\n        \"kebab-case\",\n        \"snake_case\"\n      ]\n    },\n    \"icon\": {\n      \"description\": \"Relative path to the icon representing the symbol or actual SVG of the icon.\",\n      \"type\": \"string\"\n    },\n    \"base-contribution\": {\n      \"type\": \"object\",\n      \"description\": \"The base for any contributions.\",\n      \"javaAbstract\": true,\n      \"javaInterfaces\": [\n        \"GenericContributionsHost\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"$ref\": \"#/definitions/name\"\n        },\n        \"description\": {\n          \"$ref\": \"#/definitions/description\"\n        },\n        \"description-sections\": {\n          \"$ref\": \"#/definitions/description-sections\"\n        },\n        \"required-context\": {\n          \"description\": \"Since 2024.2. Specify contexts, which are required to enable this contribution.\",\n          \"$ref\": \"#/definitions/required-context\"\n        },\n        \"doc-url\": {\n          \"$ref\": \"#/definitions/doc-url\"\n        },\n        \"icon\": {\n          \"$ref\": \"#/definitions/icon\"\n        },\n        \"source\": {\n          \"$ref\": \"#/definitions/source\"\n        },\n        \"since\": {\n          \"$ref\": \"#/definitions/since\"\n        },\n        \"deprecated\": {\n          \"$ref\": \"#/definitions/deprecated\"\n        },\n        \"deprecated-since\": {\n          \"$ref\": \"#/definitions/deprecated-since\"\n        },\n        \"obsolete\": {\n          \"$ref\": \"#/definitions/obsolete\"\n        },\n        \"obsolete-since\": {\n          \"$ref\": \"#/definitions/obsolete-since\"\n        },\n        \"experimental\": {\n          \"$ref\": \"#/definitions/experimental\"\n        },\n        \"priority\": {\n          \"$ref\": \"#/definitions/priority\"\n        },\n        \"proximity\": {\n          \"$ref\": \"#/definitions/proximity\"\n        },\n        \"virtual\": {\n          \"$ref\": \"#/definitions/virtual\"\n        },\n        \"abstract\": {\n          \"$ref\": \"#/definitions/abstract\"\n        },\n        \"extension\": {\n          \"$ref\": \"#/definitions/extension\"\n        },\n        \"extends\": {\n          \"$ref\": \"#/definitions/extends\"\n        },\n        \"pattern\": {\n          \"$ref\": \"#/definitions/name-pattern-root\"\n        },\n        \"html\": {\n          \"$ref\": \"#/definitions/html\"\n        },\n        \"css\": {\n          \"$ref\": \"#/definitions/css\"\n        },\n        \"js\": {\n          \"$ref\": \"#/definitions/js\"\n        },\n        \"exclusive-contributions\": {\n          \"$ref\": \"#/definitions/exclusive-contributions\"\n        }\n      }\n    },\n    \"typed-contribution\": {\n      \"type\": \"object\",\n      \"description\": \"The base for any contribution, which can possibly have a JS type.\",\n      \"javaAbstract\": true,\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        }\n      ],\n      \"properties\": {\n        \"type\": {\n          \"$ref\": \"#/definitions/type-list\"\n        }\n      }\n    },\n    \"generic-contribution\": {\n      \"type\": \"object\",\n      \"description\": \"A generic contribution. All contributions are of this type, except for HTML attributes and elements, as well as predefined CSS contribution kinds.\",\n      \"javaAbstract\": true,\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/typed-contribution\"\n        }\n      ],\n      \"properties\": {\n        \"default\": {\n          \"$ref\": \"#/definitions/default\"\n        },\n        \"required\": {\n          \"$ref\": \"#/definitions/required\"\n        },\n        \"attribute-value\": {\n          \"$ref\": \"#/definitions/html-attribute-value\"\n        }\n      }\n    },\n    \"type-list\": {\n      \"description\": \"Specify type according to selected language for type syntax. The type can be specified by a string expression, an object with list of imports and an expression, or an array of possible types.\",\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/type\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/type\"\n          }\n        }\n      ]\n    },\n    \"type\": {\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/type-reference\"\n        },\n        {\n          \"type\": \"string\"\n        }\n      ]\n    },\n    \"type-reference\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"module\": {\n          \"description\": \"Name of module, which exports the type. May be omitted, in which case it's assumed to be the name of the library.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name of the symbol to import\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"additionalProperties\": false\n    },\n    \"html-value-type\": {\n      \"oneOf\": [\n        {\n          \"type\": \"string\",\n          \"description\": \"Provide one of special attribute value types:  \\\"enum\\\", \\\"symbol\\\", \\\"of-match\\\", or a simple JavaScript type according to the specified type format.\"\n        },\n        {\n          \"$ref\": \"#/definitions/type-reference\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/type\"\n          }\n        }\n      ]\n    },\n    \"source\": {\n      \"description\": \"Allows to specify the source of the entity. For Vue.js component this may be for instance a class.\",\n      \"type\": \"object\",\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"file\": {\n              \"description\": \"Path to the file, relative to the web-types JSON.\",\n              \"type\": \"string\"\n            },\n            \"offset\": {\n              \"description\": \"Offset in the file under which the source symbol, like class name, is located.\",\n              \"type\": \"integer\"\n            }\n          },\n          \"required\": [\n            \"file\",\n            \"offset\"\n          ],\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"module\": {\n              \"description\": \"Name of module, which exports the symbol. May be omitted, in which case it's assumed to be the name of the library.\",\n              \"type\": \"string\"\n            },\n            \"symbol\": {\n              \"description\": \"Name of the exported symbol.\",\n              \"type\": \"string\"\n            }\n          },\n          \"required\": [\n            \"symbol\"\n          ],\n          \"additionalProperties\": false\n        }\n      ]\n    },\n    \"name\": {\n      \"type\": \"string\"\n    },\n    \"description\": {\n      \"description\": \"Short description to be rendered in documentation popup. It will be rendered according to description-markup setting.\",\n      \"type\": \"string\"\n    },\n    \"description-sections\": {\n      \"description\": \"Custom sections to be shown below description in the documentation popup.\",\n      \"type\": \"object\",\n      \"additionalProperties\": {\n        \"type\": \"string\"\n      }\n    },\n    \"doc-url\": {\n      \"description\": \"Link to online documentation.\",\n      \"type\": \"string\"\n    },\n    \"virtual\": {\n      \"description\": \"Mark contribution as virtual. Virtual contributions can be filtered out if needed in references. A virtual contribution meaning may differ by framework or kind contexts, but usually means something synthetic or something, which gets erased in the runtime by the framework. E.g. Vue or Angular attribute bindings are virtual. \",\n      \"type\": \"boolean\"\n    },\n    \"abstract\": {\n      \"description\": \"Mark contribution as abstract. Such contributions serve only as super contributions for other contributions.\",\n      \"type\": \"boolean\"\n    },\n    \"extension\": {\n      \"description\": \"Mark contribution as an extension. Such contributions do not define a new contribution on their own, but can provide additional properties or contributions to existing contributions.\",\n      \"type\": \"boolean\"\n    },\n    \"priority\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"lowest\",\n        \"low\",\n        \"normal\",\n        \"high\",\n        \"highest\"\n      ]\n    },\n    \"proximity\": {\n      \"type\": \"integer\"\n    },\n    \"name-pattern-root\": {\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/name-pattern\"\n        },\n        {\n          \"type\": \"string\"\n        }\n      ]\n    },\n    \"exclusive-contributions\": {\n      \"description\": \"Specify list of contribution kinds qualified with a namespace, for which during reference resolution this will be the final contribution host. E.g. if a special HTML element does not accept standard attributes, add:\\n\\\"exclusive-contributions\\\": [\\\"/html/attributes\\\"].\",\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\",\n        \"pattern\": \"/[^/\\\\n\\\\r]+/[^/\\\\n\\\\r]+\"\n      }\n    },\n    \"name-pattern\": {\n      \"type\": \"object\",\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"required\": {\n              \"$ref\": \"#/definitions/required\"\n            },\n            \"unique\": {\n              \"type\": \"boolean\"\n            },\n            \"repeat\": {\n              \"type\": \"boolean\"\n            },\n            \"template\": {\n              \"$ref\": \"#/definitions/name-pattern-template\"\n            },\n            \"or\": {\n              \"$ref\": \"#/definitions/name-pattern-template\"\n            },\n            \"delegate\": {\n              \"$ref\": \"#/definitions/reference\"\n            },\n            \"deprecated\": {\n              \"$ref\": \"#/definitions/deprecated\"\n            },\n            \"priority\": {\n              \"$ref\": \"#/definitions/priority\"\n            },\n            \"proximity\": {\n              \"$ref\": \"#/definitions/proximity\"\n            },\n            \"items\": {\n              \"$ref\": \"#/definitions/list-reference\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"regex\": {\n              \"type\": \"string\"\n            },\n            \"case-sensitive\": {\n              \"type\": \"boolean\",\n              \"default\": true\n            }\n          },\n          \"required\": [\n            \"regex\"\n          ],\n          \"additionalProperties\": false\n        }\n      ]\n    },\n    \"name-pattern-template\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"items\": {\n        \"oneOf\": [\n          {\n            \"type\": \"string\"\n          },\n          {\n            \"$ref\": \"#/definitions/name-pattern-template\"\n          },\n          {\n            \"$ref\": \"#/definitions/name-pattern\"\n          }\n        ]\n      }\n    },\n    \"list-reference\": {\n      \"description\": \"A reference to an element in Web-Types model.\",\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/reference\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/reference\"\n          }\n        }\n      ]\n    },\n    \"reference\": {\n      \"description\": \"A reference to an element in Web-Types model.\",\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/reference-with-props\"\n        },\n        {\n          \"type\": \"string\"\n        }\n      ]\n    },\n    \"reference-with-props\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"includeVirtual\": {\n          \"type\": \"boolean\",\n          \"default\": true\n        },\n        \"includeAbstract\": {\n          \"type\": \"boolean\"\n        },\n        \"filter\": {\n          \"type\": \"string\"\n        },\n        \"name-conversion\": {\n          \"description\": \"Override global name conversion rules for matching symbols under the path.\",\n          \"$ref\": \"#/definitions/reference-name-conversion\"\n        }\n      },\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"reference-name-conversion\": {\n      \"description\": \"Override global name conversion rules for matching symbols under the path.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"canonical-names\": {\n          \"description\": \"Override global canonical name conversion rule against which comparisons are made for the referenced symbols. When only rule name is specified, it applies to the symbols of the same kind as the last segment of the referenced path. Otherwise format of the property names is '{namespace}/{symbol kind}'. Supported by JetBrains IDEs since 2022.1.\",\n          \"oneOf\": [\n            {\n              \"$ref\": \"#/definitions/name-converter\"\n            },\n            {\n              \"$ref\": \"#/definitions/name-conversion-rules-single\"\n            }\n          ]\n        },\n        \"match-names\": {\n          \"description\": \"Override global rules, by which referenced symbols should be matched against their canonical names. When only rule names are specified, they applies to the symbols of the same kind as the last segment of the referenced path. Otherwise format of the property names is '{namespace}/{symbol kind}'. Supported by JetBrains IDEs since 2022.1.\",\n          \"oneOf\": [\n            {\n              \"$ref\": \"#/definitions/name-converters\"\n            },\n            {\n              \"$ref\": \"#/definitions/name-conversion-rules-multiple\"\n            }\n          ]\n        },\n        \"name-variants\": {\n          \"description\": \"Override global rules, by which referenced symbol names should be proposed in auto completion. When only rule names are specified, they applies to the symbols of the same kind as the last segment of the referenced path. Otherwise format of the property names is '{namespace}/{symbol kind}'. Supported by JetBrains IDEs since 2022.1.\",\n          \"oneOf\": [\n            {\n              \"$ref\": \"#/definitions/name-converters\"\n            },\n            {\n              \"$ref\": \"#/definitions/name-conversion-rules-multiple\"\n            }\n          ]\n        }\n      }\n    },\n    \"extends\": {\n      \"$ref\": \"#/definitions/reference\"\n    },\n    \"default\": {\n      \"type\": \"string\"\n    },\n    \"required\": {\n      \"type\": \"boolean\"\n    },\n    \"since\": {\n      \"description\": \"Version since this symbol is available.\",\n      \"type\": \"string\"\n    },\n    \"deprecated\": {\n      \"description\": \"Specifies whether the symbol is deprecated. Deprecated symbol usage is discouraged, but still supported. Value can be a boolean or a string message with explanation and migration information.\",\n      \"type\": [\n        \"boolean\",\n        \"string\"\n      ],\n      \"default\": false\n    },\n    \"deprecated-since\": {\n      \"description\": \"Version in which this symbol was first deprecated.\",\n      \"type\": \"string\"\n    },\n    \"obsolete\": {\n      \"description\": \"Specifies whether the symbol is obsolete. Obsolete symbols are no longer supported. Value can be a boolean or a string message with explanation and migration information.\",\n      \"type\": [\n        \"boolean\",\n        \"string\"\n      ],\n      \"default\": false\n    },\n    \"obsolete-since\": {\n      \"description\": \"Version in which this symbol was first made obsolete.\",\n      \"type\": \"string\"\n    },\n    \"experimental\": {\n      \"description\": \"Specifies whether the symbol is experimental. Value can be a boolean or a string message with explanation. Experimental symbols should be used with caution as the API might change.\",\n      \"type\": [\n        \"boolean\",\n        \"string\"\n      ],\n      \"default\": false\n    },\n    \"pattern\": {\n      \"description\": \"A RegEx pattern to match whole content. Syntax should work with at least ECMA, Java and Python implementations.\",\n      \"oneOf\": [\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"regex\": {\n              \"type\": \"string\"\n            },\n            \"case-sensitive\": {\n              \"type\": \"boolean\",\n              \"default\": true\n            }\n          }\n        }\n      ]\n    },\n    \"html-contributions-host\": {\n      \"type\": \"object\",\n      \"javaInterfaces\": [\n        \"GenericContributionsHost\"\n      ],\n      \"javaInterface\": true,\n      \"properties\": {\n        \"elements\": {\n          \"description\": \"HTML elements.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/html-element\"\n          }\n        },\n        \"attributes\": {\n          \"description\": \"HTML attributes.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/html-attribute\"\n          }\n        },\n        \"events\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-html-contribution\"\n          },\n          \"description\": \"DOM events are deprecated in HTML namespace. Contribute events to JS namespace: /js/events\",\n          \"deprecationMessage\": \"Contribute events to JS namespace: /js/events\"\n        }\n      },\n      \"patternProperties\": {\n        \"^(?!pattern$).*$\": {\n          \"$ref\": \"#/definitions/generic-html-contributions\"\n        }\n      }\n    },\n    \"generic-html-contributions\": {\n      \"javaLenientDeserialize\": true,\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-html-contribution-or-property\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-html-contribution-or-property\"\n          }\n        }\n      ]\n    },\n    \"generic-html-contribution-or-property\": {\n      \"javaInterfaces\": [\n        \"GenericContributionOrProperty\"\n      ],\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-html-contribution\"\n        },\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"number\"\n        },\n        {\n          \"type\": \"boolean\"\n        }\n      ]\n    },\n    \"generic-html-contribution\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/html-contributions-host\"\n        }\n      ]\n    },\n    \"html\": {\n      \"type\": \"object\",\n      \"description\": \"Contains contributions to HTML namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are 2 predefined kinds, which integrate directly with IDE - HTML elements and HTML attributes. There are also 2 deprecated kinds: tags (which is equivalent to 'elements') and 'events' (which was moved to JS namespace)\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/html-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"types-syntax\": {\n          \"$ref\": \"#/definitions/deprecated-types-syntax\"\n        },\n        \"description-markup\": {\n          \"$ref\": \"#/definitions/deprecated-description-markup\"\n        },\n        \"tags\": {\n          \"type\": \"array\",\n          \"description\": \"Deprecated, use `elements` property.\",\n          \"deprecationMessage\": \"Use `elements` property.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/html-element\"\n          }\n        }\n      }\n    },\n    \"html-element\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/html-contributions-host\"\n        }\n      ]\n    },\n    \"html-attribute\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/html-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"value\": {\n          \"$ref\": \"#/definitions/html-attribute-value\"\n        },\n        \"default\": {\n          \"type\": \"string\"\n        },\n        \"required\": {\n          \"$ref\": \"#/definitions/required\"\n        },\n        \"vue-argument\": {\n          \"$ref\": \"#/definitions/deprecated-html-attribute-vue-argument\"\n        },\n        \"vue-modifiers\": {\n          \"description\": \"Deprecated vue-specific property - contribute Vue directives to /contributions/html/vue-directives\",\n          \"deprecationMessage\": \"Contribute Vue directives to /contributions/html/vue-directives\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/deprecated-html-attribute-vue-modifier\"\n          }\n        }\n      }\n    },\n    \"html-attribute-value\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"kind\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"no-value\",\n            \"plain\",\n            \"expression\"\n          ]\n        },\n        \"type\": {\n          \"$ref\": \"#/definitions/html-value-type\"\n        },\n        \"required\": {\n          \"type\": \"boolean\"\n        },\n        \"default\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"css-contributions-host\": {\n      \"type\": \"object\",\n      \"javaInterfaces\": [\n        \"GenericContributionsHost\"\n      ],\n      \"javaInterface\": true,\n      \"properties\": {\n        \"properties\": {\n          \"type\": \"array\",\n          \"description\": \"CSS properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-property\"\n          }\n        },\n        \"pseudo-elements\": {\n          \"description\": \"CSS pseudo-elements\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-pseudo-element\"\n          }\n        },\n        \"pseudo-classes\": {\n          \"description\": \"CSS pseudo-classes\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-pseudo-class\"\n          }\n        },\n        \"functions\": {\n          \"description\": \"CSS functions\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-generic-item\"\n          }\n        },\n        \"classes\": {\n          \"description\": \"CSS classes\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-generic-item\"\n          }\n        },\n        \"parts\": {\n          \"description\": \"CSS parts\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-generic-item\"\n          }\n        }\n      },\n      \"patternProperties\": {\n        \"^(?!pattern$).*$\": {\n          \"$ref\": \"#/definitions/generic-css-contributions\"\n        }\n      }\n    },\n    \"generic-css-contributions\": {\n      \"javaLenientDeserialize\": true,\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-css-contribution-or-property\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-css-contribution-or-property\"\n          }\n        }\n      ]\n    },\n    \"generic-css-contribution-or-property\": {\n      \"javaInterfaces\": [\n        \"GenericContributionOrProperty\"\n      ],\n      \"oneOf\": [\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"number\"\n        },\n        {\n          \"type\": \"boolean\"\n        },\n        {\n          \"$ref\": \"#/definitions/generic-css-contribution\"\n        }\n      ]\n    },\n    \"generic-css-contribution\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ]\n    },\n    \"css\": {\n      \"type\": \"object\",\n      \"description\": \"Contains contributions to CSS namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are predefined kinds, which integrate directly with IDE - properties, classes, functions, pseudo-elements, pseudo-classes and parts.\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ]\n    },\n    \"css-property\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"values\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        }\n      }\n    },\n    \"css-generic-item\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ]\n    },\n    \"css-pseudo-element\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"arguments\": {\n          \"type\": \"boolean\",\n          \"description\": \"Specify whether the pseudo-element requires arguments.\"\n        }\n      }\n    },\n    \"css-pseudo-class\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"arguments\": {\n          \"type\": \"boolean\",\n          \"description\": \"Specify whether the pseudo-class requires arguments.\"\n        }\n      }\n    },\n    \"js-contributions-host\": {\n      \"type\": \"object\",\n      \"javaInterfaces\": [\n        \"GenericContributionsHost\"\n      ],\n      \"javaInterface\": true,\n      \"properties\": {\n        \"events\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-js-contribution\"\n          },\n          \"description\": \"DOM events\"\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/js-property\"\n          },\n          \"description\": \"JavaScript properties of an object, HTML tag, framework component, etc.\"\n        },\n        \"symbols\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/js-symbol\"\n          },\n          \"description\": \"Symbols available for JavaScript resolve. TypeScript resolve is not supported.\"\n        }\n      },\n      \"patternProperties\": {\n        \"^(?!pattern$).*$\": {\n          \"$ref\": \"#/definitions/generic-js-contributions\"\n        }\n      }\n    },\n    \"generic-js-contributions\": {\n      \"javaLenientDeserialize\": true,\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-js-contribution-or-property\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-js-contribution-or-property\"\n          }\n        }\n      ]\n    },\n    \"generic-js-contribution-or-property\": {\n      \"javaInterfaces\": [\n        \"GenericContributionOrProperty\"\n      ],\n      \"oneOf\": [\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"number\"\n        },\n        {\n          \"type\": \"boolean\"\n        },\n        {\n          \"$ref\": \"#/definitions/generic-js-contribution\"\n        }\n      ]\n    },\n    \"generic-js-contribution\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/js-contributions-host\"\n        }\n      ]\n    },\n    \"js-global\": {\n      \"type\": \"object\",\n      \"description\": \"Contains contributions to JS namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are 2 predefined kinds, which integrate directly with IDE - properties and events, but only events can be contributed globally.\",\n      \"properties\": {\n        \"events\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-js-contribution\"\n          },\n          \"description\": \"DOM events\"\n        },\n        \"symbols\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/js-symbol\"\n          },\n          \"description\": \"Globally available symbols for JavaScript resolve. TypeScript resolve is not supported. Please note that these symbols will override any normally available global JavaScript symbols.\"\n        }\n      },\n      \"patternProperties\": {\n        \"^(?!pattern$).*$\": {\n          \"$ref\": \"#/definitions/generic-js-contributions\"\n        }\n      }\n    },\n    \"js\": {\n      \"type\": \"object\",\n      \"description\": \"Contains contributions to JS namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are 2 predefined kinds, which integrate directly with IDE - properties and events.\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/js-contributions-host\"\n        }\n      ]\n    },\n    \"js-property\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/js-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"read-only\": {\n          \"description\": \"Specifies whether the property is read only.\",\n          \"type\": \"boolean\"\n        }\n      }\n    },\n    \"js-symbol\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/typed-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/js-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"description\": \"Kind of the symbol. Default is variable.\",\n          \"type\": \"string\",\n          \"enum\": [\n            \"Variable\",\n            \"Function\",\n            \"Namespace\",\n            \"Class\",\n            \"Interface\",\n            \"Enum\",\n            \"Alias\",\n            \"Module\"\n          ]\n        }\n      }\n    },\n    \"deprecated-types-syntax\": {\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/js-types-syntax\"\n        }\n      ],\n      \"description\": \"Deprecated, use top-level js-types-syntax property.\",\n      \"deprecationMessage\": \"Use top-level js-types-syntax property.\"\n    },\n    \"deprecated-description-markup\": {\n      \"description\": \"Deprecated, use top-level property.\",\n      \"deprecationMessage\": \"Use top-level property.\",\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/description-markup\"\n        }\n      ]\n    },\n    \"deprecated-html-attribute-vue-argument\": {\n      \"type\": \"object\",\n      \"description\": \"Deprecated vue-specific property - contribute Vue directives to /contributions/html/vue-directives\",\n      \"deprecationMessage\": \"Contribute Vue directives to /contributions/html/vue-directives\",\n      \"properties\": {\n        \"pattern\": {\n          \"$ref\": \"#/definitions/name-pattern-root\"\n        },\n        \"description\": {\n          \"$ref\": \"#/definitions/description\"\n        },\n        \"doc-url\": {\n          \"$ref\": \"#/definitions/doc-url\"\n        },\n        \"required\": {\n          \"description\": \"Whether directive requires an argument\",\n          \"type\": \"boolean\",\n          \"default\": false\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"deprecated-html-attribute-vue-modifier\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"name\": {\n          \"$ref\": \"#/definitions/name\"\n        },\n        \"pattern\": {\n          \"$ref\": \"#/definitions/name-pattern-root\"\n        },\n        \"description\": {\n          \"$ref\": \"#/definitions/description\"\n        },\n        \"doc-url\": {\n          \"$ref\": \"#/definitions/doc-url\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"additionalProperties\": false\n    }\n  }\n}","tools/vscode-extension/src/data-attributes.json":"{\n  \"data-attr\": {\n    \"prefix\": \"data-attr\",\n    \"body\": \"data-attr=\\\"{${1:attributeName}: ${2:expression}}\\\"\",\n    \"description\": \"Sets one or more attribute values using a set of key-value pairs that map to the attribute name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-attributes\"\n      }\n    ]\n  },\n  \"data-attr:*\": {\n    \"prefix\": \"data-attr:*\",\n    \"body\": \"data-attr:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Sets an element’s attribute value based on an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-attributes\"\n      }\n    ]\n  },\n  \"data-bind\": {\n    \"prefix\": \"data-bind\",\n    \"body\": \"data-bind=\\\"${1:signalName}\\\"\",\n    \"description\": \"Creates a new signal and enables two-way binding between it and the element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-bind\"\n      }\n    ]\n  },\n  \"data-bind:*\": {\n    \"prefix\": \"data-bind:*\",\n    \"body\": \"data-bind:${1:name}\",\n    \"description\": \"Creates a new signal and enables two-way binding between it and the element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-bind\"\n      }\n    ]\n  },\n  \"data-class\": {\n    \"prefix\": \"data-class\",\n    \"body\": \"data-class=\\\"{${1:className}: ${2:expression}}\\\"\",\n    \"description\": \"Adds or removes one or more classes from an element using a set of key-value pairs that map to the class name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-class\"\n      }\n    ]\n  },\n  \"data-class:*\": {\n    \"prefix\": \"data-class:*\",\n    \"body\": \"data-class:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Adds or removes a class from an element based on an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-class\"\n      }\n    ]\n  },\n  \"data-computed\": {\n    \"prefix\": \"data-computed\",\n    \"body\": \"data-computed=\\\"{${1:signalName}: ${2:expression}}\\\"\",\n    \"description\": \"Creates one or more signals that are computed based on a set of key-value pairs that map to the signal name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-computed\"\n      }\n    ]\n  },\n  \"data-computed:*\": {\n    \"prefix\": \"data-computed:*\",\n    \"body\": \"data-computed:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Creates a signal that is computed based on an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-computed\"\n      }\n    ]\n  },\n  \"data-custom-validity\": {\n    \"prefix\": \"data-custom-validity\",\n    \"body\": \"data-custom-validity=\\\"${1:expression}\\\"\",\n    \"description\": \"Adds custom validity to an element using an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-custom-validity\"\n      }\n    ]\n  },\n  \"data-effect\": {\n    \"prefix\": \"data-effect\",\n    \"body\": \"data-effect=\\\"${1:expression}\\\"\",\n    \"description\": \"Executes an expression on page load and whenever any signals in the expression change.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-effect\"\n      }\n    ]\n  },\n  \"data-ignore\": {\n    \"prefix\": \"data-ignore\",\n    \"body\": \"data-ignore\",\n    \"description\": \"Ignores an element and its descendants from being processed.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-ignore\"\n      }\n    ]\n  },\n  \"data-ignore-morph\": {\n    \"prefix\": \"data-ignore-morph\",\n    \"body\": \"data-ignore-morph\",\n    \"description\": \"Ignores an element when patching an element using the `morph` mode.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-ignore-morph\"\n      }\n    ]\n  },\n  \"data-indicator\": {\n    \"prefix\": \"data-indicator\",\n    \"body\": \"data-indicator=\\\"${1:signalName}\\\"\",\n    \"description\": \"Creates a signal to track in-flight backend requests.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-indicator\"\n      }\n    ]\n  },\n  \"data-indicator:*\": {\n    \"prefix\": \"data-indicator:*\",\n    \"body\": \"data-indicator:${1:name}\",\n    \"description\": \"Creates a signal to track in-flight backend requests.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-indicator\"\n      }\n    ]\n  },\n  \"data-init\": {\n    \"prefix\": \"data-init\",\n    \"body\": \"data-init=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever the attribute is initialised.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-init\"\n      }\n    ]\n  },\n  \"data-json-signals\": {\n    \"prefix\": \"data-json-signals\",\n    \"body\": \"data-json-signals=\\\"${1:expression}\\\"\",\n    \"description\": \"Sets the text content of an element to a reactive JSON stringified version of signals.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-json-signals\"\n      }\n    ]\n  },\n  \"data-on\": {\n    \"prefix\": \"data-on:*\",\n    \"body\": \"data-on:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Runs an expression whenever an event is triggered on an element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on\"\n      }\n    ]\n  },\n  \"data-on:click\": {\n    \"prefix\": \"data-on:click\",\n    \"body\": \"data-on:click=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever the element is clicked.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on\"\n      }\n    ]\n  },\n  \"data-on:keydown\": {\n    \"prefix\": \"data-on:keydown\",\n    \"body\": \"data-on:keydown=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever a key is pressed.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on\"\n      }\n    ]\n  },\n  \"data-on-intersect\": {\n    \"prefix\": \"data-on-intersect\",\n    \"body\": \"data-on-intersect=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression on intersection with the viewport.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-intersect\"\n      }\n    ]\n  },\n  \"data-on-interval\": {\n    \"prefix\": \"data-on-interval\",\n    \"body\": \"data-on-interval=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression at a regular interval.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-interval\"\n      }\n    ]\n  },\n  \"data-on-raf\": {\n    \"prefix\": \"data-on-raf\",\n    \"body\": \"data-on-raf=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression on every `requestAnimationFrame` event.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-raf\"\n      }\n    ]\n  },\n  \"data-on-resize\": {\n    \"prefix\": \"data-on-resize\",\n    \"body\": \"data-on-resize=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever an element’s dimensions change.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-resize\"\n      }\n    ]\n  },\n  \"data-on-signal-patch\": {\n    \"prefix\": \"data-on-signal-patch\",\n    \"body\": \"data-on-signal-patch=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever one or more signals are patched.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-signal-patch\"\n      }\n    ]\n  },\n  \"data-on-signal-patch-filter\": {\n    \"prefix\": \"data-on-signal-patch-filter\",\n    \"body\": \"data-on-signal-patch-filter=\\\"${1:expression}\\\"\",\n    \"description\": \"Filters which signals to watch when using the `data-on-signal-patch` attribute.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-signal-change\"\n      }\n    ]\n  },\n  \"data-persist\": {\n    \"prefix\": \"data-persist\",\n    \"body\": \"data-persist=\\\"\\\"\",\n    \"description\": \"Persists signals in local storage.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-persist\"\n      }\n    ]\n  },\n  \"data-persist:*\": {\n    \"prefix\": \"data-persist:*\",\n    \"body\": \"data-persist:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Persists signals in local storage with a custom key.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-persist\"\n      }\n    ]\n  },\n  \"data-preserve-attr\": {\n    \"prefix\": \"data-preserve-attr\",\n    \"body\": \"data-preserve-attr=\\\"\\\"\",\n    \"description\": \"Preserves the value of an attribute when patching elements using the `morph` mode.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-preserve-attr\"\n      }\n    ]\n  },\n  \"data-query-string\": {\n    \"prefix\": \"data-query-string\",\n    \"body\": \"data-query-string=\\\"\\\"\",\n    \"description\": \"Syncs query string params to signal values on page load, and syncs signal values to query string params on change.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-query-string\"\n      }\n    ]\n  },\n  \"data-ref\": {\n    \"prefix\": \"data-ref\",\n    \"body\": \"data-ref=\\\"${1:signalName}\\\"\",\n    \"description\": \"Creates a signal whose value references an element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-ref\"\n      }\n    ]\n  },\n  \"data-ref:*\": {\n    \"prefix\": \"data-ref:*\",\n    \"body\": \"data-ref:${1:name}\",\n    \"description\": \"Creates a signal whose value references an element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-ref\"\n      }\n    ]\n  },\n  \"data-replace-url\": {\n    \"prefix\": \"data-replace-url\",\n    \"body\": \"data-replace-url=\\\"${1:expression}\\\"\",\n    \"description\": \"Replaces the URL in the browser with an evaluated expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-replace-url\"\n      }\n    ]\n  },\n  \"data-scroll-into-view\": {\n    \"prefix\": \"data-scroll-into-view\",\n    \"body\": \"data-scroll-into-view\",\n    \"description\": \"Scrolls the element into view.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-scroll-into-view\"\n      }\n    ]\n  },\n  \"data-show\": {\n    \"prefix\": \"data-show\",\n    \"body\": \"data-show=\\\"${1:expression}\\\"\",\n    \"description\": \"Shows or hides an element based on whether an expression evaluates to `true` or `false`.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-show\"\n      }\n    ]\n  },\n  \"data-signals\": {\n    \"prefix\": \"data-signals\",\n    \"body\": \"data-signals=\\\"{${1:signalName}: ${2:expression}}\\\"\",\n    \"description\": \"Merges one or more signals into the existing signals using a set of key-value pairs that map to the signal name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-signals\"\n      }\n    ]\n  },\n  \"data-signals:*\": {\n    \"prefix\": \"data-signals:*\",\n    \"body\": \"data-signals:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Merges a signal into the existing signals.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-signals\"\n      }\n    ]\n  },\n  \"data-style\": {\n    \"prefix\": \"data-style\",\n    \"body\": \"data-style=\\\"{${1:styleName}: ${2:expression}}\\\"\",\n    \"description\": \"Adds or removes one or more inline CSS styles from an element using a set of key-value pairs that map to the style name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-style\"\n      }\n    ]\n  },\n  \"data-style:*\": {\n    \"prefix\": \"data-style:*\",\n    \"body\": \"data-style:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Adds or removes an inline CSS style from an element based on an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-style\"\n      }\n    ]\n  },\n  \"data-text\": {\n    \"prefix\": \"data-text\",\n    \"body\": \"data-text=\\\"${1:expression}\\\"\",\n    \"description\": \"Sets the text content of an element to the evaluated expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-text\"\n      }\n    ]\n  },\n  \"data-view-transition\": {\n    \"prefix\": \"data-view-transition\",\n    \"body\": \"data-view-transition=\\\"${1:expression}\\\"\",\n    \"description\": \"Sets the value of `view-transition-name` for use with the View Transition API.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-view-transition\"\n      }\n    ]\n  }\n}","tools/vscode-extension/package.json":"{\n  \"name\": \"datastar-vscode\",\n  \"version\": \"1.3.0\",\n  \"displayName\": \"Datastar\",\n  \"description\": \"Adds autocomplete and syntax highlighting for Datastar to Visual Studio Code.\",\n  \"author\": \"Ben Croker\",\n  \"publisher\": \"starfederation\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/starfederation/datastar\",\n  \"icon\": \"src/icon.png\",\n  \"galleryBanner\": {\n    \"color\": \"#bee3f8\",\n    \"theme\": \"light\"\n  },\n  \"engines\": {\n    \"vscode\": \"^1.63.0\"\n  },\n  \"categories\": [\n    \"Snippets\",\n    \"Other\"\n  ],\n  \"activationEvents\": [\n    \"onStartupFinished\"\n  ],\n  \"main\": \"src/extension.js\",\n  \"contributes\": {\n    \"grammars\": [\n      {\n        \"scopeName\": \"datastar.injection\",\n        \"path\": \"./src/datastar.injection.tmLanguage.json\",\n        \"injectTo\": [\n          \"text.html.basic\",\n          \"text.html.derivative\",\n          \"text.html.php\",\n          \"text.html.twig\",\n          \"text.html.php.blade\",\n          \"text.html.edge\",\n          \"text.html.nunjucks\",\n          \"text.html.njk\",\n          \"source.templ\",\n          \"source.astro\",\n          \"source.gohtml\",\n          \"text.html.vue\",\n          \"source.vue\",\n          \"source.svelte\",\n          \"text.html.svelte\",\n          \"text.html.handlebars\",\n          \"source.mustache\",\n          \"source.liquid\",\n          \"text.html.erb\",\n          \"text.html.ejs\",\n          \"text.pug\",\n          \"text.aspnetcorerazor\",\n          \"text.html.django\",\n          \"text.html.jinja\",\n          \"text.html.jsp\"\n        ]\n      }\n    ],\n    \"configuration\": {\n      \"title\": \"Datastar\",\n      \"properties\": {\n        \"datastar.customAttributes\": {\n          \"type\": \"array\",\n          \"default\": [],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Custom Datastar plugin names (without 'data-' prefix). Example: ['my-plugin', 'custom-action']\"\n        },\n        \"datastar.enabledLanguages\": {\n          \"type\": \"array\",\n          \"default\": [\n            \"html\",\n            \"php\",\n            \"twig\",\n            \"edge\",\n            \"nunjucks\",\n            \"templ\",\n            \"astro\",\n            \"vue\",\n            \"svelte\",\n            \"handlebars\",\n            \"mustache\",\n            \"liquid\",\n            \"erb\",\n            \"ejs\",\n            \"pug\",\n            \"razor\",\n            \"blade\",\n            \"django-html\",\n            \"jinja\",\n            \"gohtml\",\n            \"jsp\",\n            \"aspnetcorerazor\"\n          ],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Languages and file extensions where Datastar snippets should be available. Supports both VS Code language IDs (e.g., 'html', 'php') and file extensions (e.g., '.twig', '.templ', '.custom').\",\n          \"markdownDescription\": \"Languages and file extensions where Datastar snippets should be available. Supports both VS Code language IDs and file extensions.\\n\\n**Default supported languages/extensions:**\\n- `html` - HTML files\\n- `php` - PHP files\\n- `twig` - Twig templates (Craft CMS, Symfony)\\n- `blade` - Laravel Blade templates\\n- `vue` - Vue single file components\\n- `svelte` - Svelte files\\n- `astro` - Astro files\\n- `templ` - Go Templ files\\n- `erb` - Ruby ERB templates\\n- `ejs` - EJS templates\\n- `handlebars` - Handlebars templates\\n- `jinja` - Jinja templates (Python/Django)\\n- `gohtml` - Go HTML templates\\n\\n**Add custom file extensions:**\\n- `.edge` - Edge templates\\n- `.njk` - Nunjucks templates\\n- `.liquid` - Liquid templates\\n- `.pug` - Pug templates\\n- `.hbs` - Handlebars files\\n- `.mustache` - Mustache templates\\n- `.custom` - Any custom extension\\n\\n**Example:**\\n```json\\n[\\n  \\\"html\\\",\\n  \\\"php\\\",\\n  \\\"twig\\\",\\n  \\\".edge\\\",\\n  \\\".njk\\\",\\n  \\\".custom\\\"\\n]\\n```\"\n        }\n      }\n    },\n    \"snippets\": [\n      {\n        \"language\": \"html\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"php\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"twig\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"edge\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"nunjucks\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"templ\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"astro\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"vue\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"svelte\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"handlebars\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"mustache\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"liquid\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"erb\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"ejs\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"pug\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"razor\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"blade\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"django-html\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"jinja\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"gohtml\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"jsp\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"aspnetcorerazor\",\n        \"path\": \"./src/data-attributes.json\"\n      }\n    ]\n  },\n  \"devDependencies\": {\n    \"@vscode/vsce\": \"^3.7.1\"\n  },\n  \"scripts\": {\n    \"build\": \"npm exec vsce package\",\n    \"publish\": \"npm exec vsce publish $npm_package_version && npx ovsx publish datastar-vscode-$npm_package_version.vsix\"\n  }\n}\n","tools/intellij-plugin/src/main/resources/datastar-attributes.web-types.json":"{\n  \"$schema\": \"../../../../schema.json\",\n  \"name\": \"Datastar\",\n  \"version\": \"1.0.0\",\n  \"js-types-syntax\": \"typescript\",\n  \"description-markup\": \"markdown\",\n  \"default-icon\": \"icon.png\",\n  \"contributions\": {\n    \"js\": {\n      \"datastar-bind-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        }\n      ],\n      \"datastar-class-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the class\"\n        }\n      ],\n      \"datastar-computed-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        }\n      ],\n      \"datastar-ignore-modifiers\": [\n        {\n          \"name\": \"self\",\n          \"description\": \"Only ignore the element itself, not its descendants\"\n        }\n      ],\n      \"datastar-indicator-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        }\n      ],\n      \"datastar-init-modifiers\": [\n        {\n          \"name\": \"delay\",\n          \"description\": \"Delay the event listener\"\n        },\n        {\n          \"name\": \"delay.1s\",\n          \"description\": \"Delay for 1 second\"\n        },\n        {\n          \"name\": \"viewtransition\",\n          \"description\": \"Wraps the expression in `document.startViewTransition()`\"\n        }\n      ],\n      \"datastar-json-signals-modifiers\": [\n        {\n          \"name\": \"terse\",\n          \"description\": \"Outputs a more compact JSON format\"\n        }\n      ],\n      \"datastar-on-modifiers\": [\n        {\n          \"name\": \"capture\",\n          \"description\": \"Use a capture event listener\"\n        },\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the event name\"\n        },\n        {\n          \"name\": \"debounce\",\n          \"description\": \"Debounce the event listener\"\n        },\n        {\n          \"name\": \"debounce.500ms\",\n          \"description\": \"Debounce for 1000 milliseconds\"\n        },\n        {\n          \"name\": \"debounce.1s\",\n          \"description\": \"Debounce for 1 second\"\n        },\n        {\n          \"name\": \"debounce.leading\",\n          \"description\": \"Debounce with leading edge\"\n        },\n        {\n          \"name\": \"debounce.notrailing\",\n          \"description\": \"Debounce without trailing edge\"\n        },\n        {\n          \"name\": \"once\",\n          \"description\": \"Only trigger the event listener once\"\n        },\n        {\n          \"name\": \"outside\",\n          \"description\": \"Triggers when the event is outside the element\"\n        },\n        {\n          \"name\": \"passive\",\n          \"description\": \"Do not call `preventDefault` on the event listener\"\n        },\n        {\n          \"name\": \"throttle\",\n          \"description\": \"Throttle the event listener\"\n        },\n        {\n          \"name\": \"throttle.500ms\",\n          \"description\": \"Throttle for 500 milliseconds\"\n        },\n        {\n          \"name\": \"throttle.1s\",\n          \"description\": \"Throttle for 1 second\"\n        },\n        {\n          \"name\": \"throttle.noleading\",\n          \"description\": \"Throttle without leading edge\"\n        },\n        {\n          \"name\": \"throttle.trailing\",\n          \"description\": \"Throttle without trailing edge\"\n        },\n        {\n          \"name\": \"viewtransition\",\n          \"description\": \"Wraps the expression in `document.startViewTransition()` when the View Transition API is available\"\n        },\n        {\n          \"name\": \"window\",\n          \"description\": \"Attaches the event listener to the `window` element\"\n        }\n      ],\n      \"datastar-on-intersect-modifiers\": [\n        {\n          \"name\": \"full\",\n          \"description\": \"Trigger when the full element is visible\"\n        },\n        {\n          \"name\": \"half\",\n          \"description\": \"Trigger when half of the element is visible\"\n        },\n        {\n          \"name\": \"once\",\n          \"description\": \"Only trigger the event once\"\n        },\n        {\n          \"name\": \"viewtransition\",\n          \"description\": \"Wraps the expression in `document.startViewTransition()`\"\n        }\n      ],\n      \"datastar-on-interval-modifiers\": [\n        {\n          \"name\": \"duration\",\n          \"description\": \"The interval duration\"\n        },\n        {\n          \"name\": \"duration.500ms\",\n          \"description\": \"Set an interval duration of 500 milliseconds\"\n        },\n        {\n          \"name\": \"viewtransition\",\n          \"description\": \"Wraps the expression in `document.startViewTransition()`\"\n        }\n      ],\n      \"datastar-on-timing-modifiers\": [\n        {\n          \"name\": \"debounce\",\n          \"description\": \"Debounce the event listener\"\n        },\n        {\n          \"name\": \"debounce.500ms\",\n          \"description\": \"Debounce for 1000 milliseconds\"\n        },\n        {\n          \"name\": \"debounce.1s\",\n          \"description\": \"Debounce for 1 second\"\n        },\n        {\n          \"name\": \"debounce.leading\",\n          \"description\": \"Debounce with leading edge\"\n        },\n        {\n          \"name\": \"debounce.notrailing\",\n          \"description\": \"Debounce without trailing edge\"\n        },\n        {\n          \"name\": \"throttle\",\n          \"description\": \"Throttle the event listener\"\n        },\n        {\n          \"name\": \"throttle.500ms\",\n          \"description\": \"Throttle for 500 milliseconds\"\n        },\n        {\n          \"name\": \"throttle.1s\",\n          \"description\": \"Throttle for 1 second\"\n        },\n        {\n          \"name\": \"throttle.noleading\",\n          \"description\": \"Throttle without leading edge\"\n        },\n        {\n          \"name\": \"throttle.trailing\",\n          \"description\": \"Throttle without trailing edge\"\n        }\n      ],\n      \"datastar-persist-modifiers\": [\n        {\n          \"name\": \"session\",\n          \"description\": \"Persists signals values in Session Storage\"\n        }\n      ],\n      \"datastar-query-string-modifiers\": [\n        {\n          \"name\": \"filter\",\n          \"description\": \"Filters out empty values\"\n        },\n        {\n          \"name\": \"history\",\n          \"description\": \"Enables history support\"\n        }\n      ],\n      \"datastar-ref-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        }\n      ],\n      \"datastar-scroll-into-view-modifiers\": [\n        {\n          \"name\": \"auto\",\n          \"description\": \"Scrolling is determined by the computed scroll-behavior CSS property\"\n        },\n        {\n          \"name\": \"instant\",\n          \"description\": \"Scrolling should be instant\"\n        },\n        {\n          \"name\": \"focus\",\n          \"description\": \"Focus the element after scrolling\"\n        },\n        {\n          \"name\": \"hcenter\",\n          \"description\": \"Scroll to the horizontal center of the element\"\n        },\n        {\n          \"name\": \"hend\",\n          \"description\": \"Scroll to the right of the element\"\n        },\n        {\n          \"name\": \"hnearest\",\n          \"description\": \"Scroll to the nearest horizontal edge of the element\"\n        },\n        {\n          \"name\": \"hstart\",\n          \"description\": \"Scroll to the left of the element\"\n        },\n        {\n          \"name\": \"smooth\",\n          \"description\": \"Scrolling should be animate smoothly\"\n        },\n        {\n          \"name\": \"vstart\",\n          \"description\": \"Scroll to the top of the element\"\n        },\n        {\n          \"name\": \"vcenter\",\n          \"description\": \"Scroll to the vertical center of the element\"\n        },\n        {\n          \"name\": \"vend\",\n          \"description\": \"Scroll to the bottom of the element\"\n        },\n        {\n          \"name\": \"vnearest\",\n          \"description\": \"Scroll to the nearest vertical edge of the element\"\n        }\n      ],\n      \"datastar-signals-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        },\n        {\n          \"name\": \"ifmissing\",\n          \"description\": \"Only set the signals if the key does not exist. This is useful for setting defaults without overwriting existing values\"\n        }\n      ]\n    },\n    \"html\": {\n      \"attributes\": [\n        {\n          \"name\": \"data-attr:*\",\n          \"virtual\": true,\n          \"description\": \"Sets an element’s attribute value based on an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-attr\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"items\": [\n                  {\n                    \"path\": \"/html/attributes\",\n                    \"includeVirtual\": false\n                  }\n                ],\n                \"template\": [\n                  \"data-attr:\",\n                  \"$...\",\n                  \"#item:event name\"\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-attr\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-bind:*\",\n          \"virtual\": true,\n          \"description\": \"Creates a new signal and enables two-way binding between it and the element.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-bind\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-bind:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-bind-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\",\n                \"required\": false\n              },\n              {\n                \"template\": [\n                  \"data-bind\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-class:*\",\n          \"virtual\": true,\n          \"description\": \"Adds or removes classes from an element based on an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-class\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-class:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-class-modifiers\",\n                    \"template\": [\n                      \"data-class:\",\n                      \"$...\",\n                      \"#item:event name\"\n                    ],\n                    \"priority\": \"normal\"\n                  }\n                ]\n              },\n              {\n                \"template\": [\n                  \"data-class\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-computed:*\",\n          \"virtual\": true,\n          \"description\": \"Creates a signal that is computed based on an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-computed\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-computed:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-computed-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-computed\",\n                  {\n                    \"items\": \"/js/datastar-computed-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-custom-validity\",\n          \"virtual\": true,\n          \"description\": \"Adds custom validity to an element using an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-custom-validity\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-custom-validity\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-effect\",\n          \"virtual\": true,\n          \"description\": \"Executes an expression on page load and whenever any signals in the expression change.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-effect\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-effect\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-ignore\",\n          \"virtual\": true,\n          \"description\": \"Ignores an element and its descendants from being processed.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-ignore\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-ignore\",\n              {\n                \"items\": \"/js/datastar-ignore-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-ignore-morph\",\n          \"virtual\": true,\n          \"description\": \"Ignores an element when patching an element using the `morph` mode.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-ignore-morph\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-ignore-morph\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-indicator:*\",\n          \"virtual\": true,\n          \"description\": \"Creates a signal to track in-flight backend requests.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-indicator\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-indicator:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-indicator-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-indicator\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-init\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression whenever the element is initialised.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-init\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-init\",\n              {\n                \"items\": \"/js/datastar-init-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-json-signals\",\n          \"virtual\": true,\n          \"description\": \"Sets the text content of an element to a reactive JSON stringified version of signals.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-json-signals\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-json-signals\",\n              {\n                \"items\": \"/js/datastar-json-signals-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on:*\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression whenever an event is triggered on an element.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"items\": \"/js/events\",\n                \"template\": [\n                  \"data-on:\",\n                  \"$...\",\n                  \"#item:event name\",\n                  {\n                    \"items\": \"/js/datastar-on-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-on-intersect\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression on intersection with the viewport.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-intersect\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-intersect\",\n              {\n                \"items\": \"/js/datastar-on-intersect-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-interval\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression at a regular interval.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-interval\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-interval\",\n              {\n                \"items\": \"/js/datastar-on-interval-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-raf\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression on every `requestAnimationFrame` event.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-raf\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-raf\",\n              {\n                \"items\": \"/js/datastar-on-timing-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-resize\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression whenever an element’s dimensions change.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-resize\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-resize\",\n              {\n                \"items\": \"/js/datastar-on-timing-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-signal-patch\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression whenever one or more signals are patched.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-signal-patch\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-signal-patch\",\n              {\n                \"items\": \"/js/datastar-on-timing-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-signal-patch-filter\",\n          \"virtual\": true,\n          \"description\": \"Filters which signals to watch when using the `data-on-signal-patch` attribute.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-signal-patch-filter\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-signal-patch-filter\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-persist:*\",\n          \"virtual\": true,\n          \"description\": \"Persists all signals in local storage.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-persist\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-persist:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-persist\",\n                  {\n                    \"items\": \"/js/datastar-persist-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-preserve-attr\",\n          \"virtual\": true,\n          \"description\": \"Preserves the value of an attribute when patching elements using the `morph` mode.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-preserve-attr\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-preserve-attr\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-query-string\",\n          \"virtual\": true,\n          \"description\": \"Syncs query string params to signal values on page load, and syncs signal values to query string params on change.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-query-string\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-query-string\",\n              {\n                \"items\": \"/js/datastar-query-string-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-ref:*\",\n          \"virtual\": true,\n          \"description\": \"Creates a signal whose value references an element.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-ref\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-ref:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-ref-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-ref\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-replace-url\",\n          \"virtual\": true,\n          \"description\": \"Replaces the URL in the browser with an evaluated expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-replace-url\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-replace-url\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-scroll-into-view\",\n          \"virtual\": true,\n          \"description\": \"Scrolls the element into view.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-scroll-into-view\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-scroll-into-view\",\n              {\n                \"items\": \"/js/datastar-scroll-into-view-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-show\",\n          \"virtual\": true,\n          \"description\": \"Shows or hides an element based on whether an expression evaluates to `true` or `false`.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-show\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"boolean\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-show\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-signals:*\",\n          \"virtual\": true,\n          \"description\": \"Merges a signal into the existing signals.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-signals\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-signals:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-signals-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-signals\",\n                  {\n                    \"items\": \"/js/datastar-signals-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-style:*\",\n          \"virtual\": true,\n          \"description\": \"Adds or removes inline CSS styles from an element based on an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-style\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-style:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-style\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-text\",\n          \"virtual\": true,\n          \"description\": \"Sets the text content of an element to the evaluated expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-text\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-text\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-view-transition\",\n          \"virtual\": true,\n          \"description\": \"Sets the value of `view-transition-name` for use with the View Transition API.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-view-transition\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-view-transition\"\n            ],\n            \"priority\": \"normal\"\n          }\n        }\n      ]\n    }\n  }\n}","tools/intellij-plugin/LICENSE.md":"The MIT License (MIT)\n\nCopyright (c) nystudio107\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","tools/vscode-extension/src/datastar.injection.tmLanguage.json":"{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"scopeName\": \"datastar.injection\",\n  \"injectionSelector\": \"L:text.html, L:meta.tag -string -comment -expression.html-template -meta.function.echo.blade\",\n  \"patterns\": [\n    {\n      \"include\": \"#datastar-attribute\"\n    }\n  ],\n  \"repository\": {\n    \"datastar-attribute\": {\n      \"comment\": \"Match Datastar attributes: data-[plugin]:[key]:[nested-key]__[modifier(s)]\",\n      \"begin\": \"\\\\b(data-)(attr|bind|class|computed|effect|ignore|ignore-morph|indicator|init|json-signals|on|on-intersect|on-interval|on-signal-patch|on-signal-patch-filter|preserve-attr|ref|show|signals|style|text|animate|custom-validity|on-raf|on-resize|persist|query-string|replace-url|rocket|scroll-into-view|view-transition|my-foo)(?=__|:|[\\\\s>=])\",\n      \"end\": \"(?<=[\\\"'])|(?=[\\\\s>])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.datastar.prefix\"\n        },\n        \"2\": {\n          \"name\": \"support.function.datastar.plugin\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"comment\": \"Match plugin-like keys: :data-[plugin]\",\n          \"match\": \"(:)(data-(?:attr|bind|class|computed|effect|ignore|ignore-morph|indicator|init|json-signals|on|on-intersect|on-interval|on-signal-patch|on-signal-patch-filter|preserve-attr|ref|show|signals|style|text|animate|custom-validity|on-raf|on-resize|persist|query-string|replace-url|rocket|scroll-into-view|view-transition|my-foo))(?=__|:|[\\\\s>=])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key.datastar\"\n            },\n            \"2\": {\n              \"name\": \"support.function.datastar.plugin\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Match regular keys: :key\",\n          \"match\": \"(:)([a-z][a-z0-9-]*)(?=__|:|[\\\\s>=])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key.datastar\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.datastar.key\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Match modifiers with arguments: __modifier.arg\",\n          \"match\": \"(__)([a-z][a-z0-9-]*)(\\\\.)([a-z0-9]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.modifier.datastar\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.datastar\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.modifier-arg.datastar\"\n            },\n            \"4\": {\n              \"name\": \"constant.numeric.modifier-arg.datastar\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Match modifiers without arguments: __modifier\",\n          \"match\": \"(__)([a-z][a-z0-9-]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.modifier.datastar\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.datastar\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Match attribute value with expressions\",\n          \"begin\": \"(=)([\\\"'])\",\n          \"end\": \"\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key-value.html\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#datastar-expressions\"\n            }\n          ]\n        }\n      ]\n    },\n    \"datastar-expressions\": {\n      \"patterns\": [\n        {\n          \"include\": \"#signal-reference\"\n        },\n        {\n          \"include\": \"#action-call\"\n        },\n        {\n          \"include\": \"#method-call\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#javascript-syntax\"\n        }\n      ]\n    },\n    \"signal-reference\": {\n      \"match\": \"(\\\\$\\\\$?[a-zA-Z_][a-zA-Z0-9_]*)((\\\\?)?\\\\.[a-zA-Z_][a-zA-Z0-9_]*(?!\\\\())*(\\\\[[^\\\\]]+\\\\])?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.datastar.signal\"\n        }\n      }\n    },\n    \"action-call\": {\n      \"begin\": \"(@[a-z]+)(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.datastar.action\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.arguments.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    },\n    \"method-call\": {\n      \"begin\": \"(\\\\.)([a-zA-Z_][a-zA-Z0-9_]*)(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.datastar\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.datastar\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.arguments.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"begin\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.datastar\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.arguments.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    },\n    \"javascript-syntax\": {\n      \"patterns\": [\n        {\n          \"include\": \"#arrow-function\"\n        },\n        {\n          \"include\": \"#object-literal\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#spread-operator\"\n        },\n        {\n          \"include\": \"#js-strings\"\n        },\n        {\n          \"include\": \"#js-numbers\"\n        },\n        {\n          \"include\": \"#js-keywords\"\n        },\n        {\n          \"include\": \"#js-operators\"\n        }\n      ]\n    },\n    \"js-strings\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.double.datastar\",\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.escape.datastar\",\n              \"match\": \"\\\\\\\\.\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.single.datastar\",\n          \"begin\": \"'\",\n          \"end\": \"'\",\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.escape.datastar\",\n              \"match\": \"\\\\\\\\.\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.template.datastar\",\n          \"begin\": \"`\",\n          \"end\": \"`\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.template.expression.datastar\",\n              \"begin\": \"\\\\$\\\\{\",\n              \"end\": \"\\\\}\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.template-expression.begin.datastar\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.template-expression.end.datastar\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#datastar-expressions\"\n                }\n              ]\n            },\n            {\n              \"name\": \"constant.character.escape.datastar\",\n              \"match\": \"\\\\\\\\.\"\n            }\n          ]\n        }\n      ]\n    },\n    \"js-numbers\": {\n      \"match\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\\\\b\",\n      \"name\": \"constant.numeric.datastar\"\n    },\n    \"js-keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(const|let|var|async|await|function|return|throw|new|if|else|for|while|do|switch|case|break|continue|try|catch|finally)\\\\b\",\n          \"name\": \"keyword.control.datastar\"\n        },\n        {\n          \"match\": \"\\\\b(true|false|null|undefined)\\\\b\",\n          \"name\": \"constant.language.datastar\"\n        },\n        {\n          \"match\": \"\\\\b(this|event|el|Promise|Error|Array|Object|String|Number|Boolean|Date|Math|console)\\\\b\",\n          \"name\": \"support.class.datastar\"\n        }\n      ]\n    },\n    \"js-operators\": {\n      \"match\": \"(\\\\+\\\\+|--|\\\\+=|-=|\\\\*=|/=|%=|\\\\+|-|\\\\*|/|%|===|!==|==|!=|>=|<=|>|<|&&|\\\\|\\\\||\\\\?\\\\?|!|=|\\\\?|:)\",\n      \"name\": \"keyword.operator.datastar\"\n    },\n    \"spread-operator\": {\n      \"match\": \"\\\\.\\\\.\\\\.\",\n      \"name\": \"keyword.operator.spread.datastar\"\n    },\n    \"arrow-function\": {\n      \"match\": \"(\\\\([^)]*\\\\)|[a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(=>)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.function.datastar\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.function.arrow.datastar\"\n        }\n      }\n    },\n    \"object-literal\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.object.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.object.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.property.datastar\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.key-value.datastar\"\n            }\n          }\n        },\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    },\n    \"array-literal\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    }\n  }\n}","tools/vscode-extension/README.md":"# Datastar Extension for Visual Studio Code\n\nAdds autocomplete and syntax highlighting for [Datastar](https://data-star.dev/) to Visual Studio Code.\n\n![VSCode extension](https://data-star.dev/static/images/vscode-extension-120.png)\n\n## Configuration\n\nBy default, Datastar snippets work in HTML and most common template languages. You can customize which languages and file extensions have Datastar support by configuring the `datastar.enabledLanguages` setting.\n\n**To configure:**\n1. Open VS Code Settings (Cmd/Ctrl + ,)\n2. Search for \"datastar enabled languages\"\n3. Add language IDs (e.g., `html`, `php`, `twig`) or file extensions (e.g., `.edge`, `.njk`, `.custom`)\n\n**Example:**\n```json\n{\n  \"datastar.enabledLanguages\": [\n    \"html\",\n    \"php\",\n    \"twig\",\n    \".edge\",\n    \".custom\"\n  ]\n}\n```\n\n### Custom Attributes\n\nYou can add syntax highlighting support for custom Datastar plugins using the `datastar.customAttributes` setting.\n\n**To configure:**\n1. Open VS Code Settings (Cmd/Ctrl + ,)\n2. Search for \"datastar custom attributes\"\n3. Add your custom plugin names (without the `data-` prefix)\n\n**Example:**\n```json\n{\n  \"datastar.customAttributes\": [\n    \"my-plugin\"\n  ]\n}\n```\n\nAfter adding custom attributes, reload VS Code to apply the changes.\n\n## License\n\nThis plugin is licensed for free under the MIT License.\n\n## Requirements\n\nThis plugin requires Visual Studio Code version 1.63.0 or later.\n\n## Installation\n\nInstall the extension from the Visual Studio Code Marketplace or from the extensions panel by searching for “Datastar”.\n","tools/vscode-extension/package-lock.json":"{\n  \"name\": \"datastar-vscode\",\n  \"version\": \"1.2.1\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"datastar-vscode\",\n      \"version\": \"1.2.1\",\n      \"license\": \"MIT\",\n      \"devDependencies\": {\n        \"@vscode/vsce\": \"^3.7.1\"\n      },\n      \"engines\": {\n        \"vscode\": \"^1.63.0\"\n      }\n    },\n    \"node_modules/@azu/format-text\": {\n      \"version\": \"1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz\",\n      \"integrity\": \"sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==\",\n      \"dev\": true,\n      \"license\": \"BSD-3-Clause\"\n    },\n    \"node_modules/@azu/style-format\": {\n      \"version\": \"1.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.1.tgz\",\n      \"integrity\": \"sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==\",\n      \"dev\": true,\n      \"license\": \"WTFPL\",\n      \"dependencies\": {\n        \"@azu/format-text\": \"^1.0.1\"\n      }\n    },\n    \"node_modules/@azure/abort-controller\": {\n      \"version\": \"2.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz\",\n      \"integrity\": \"sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=18.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-auth\": {\n      \"version\": \"1.10.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz\",\n      \"integrity\": \"sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.1.2\",\n        \"@azure/core-util\": \"^1.13.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-client\": {\n      \"version\": \"1.10.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.1.tgz\",\n      \"integrity\": \"sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.1.2\",\n        \"@azure/core-auth\": \"^1.10.0\",\n        \"@azure/core-rest-pipeline\": \"^1.22.0\",\n        \"@azure/core-tracing\": \"^1.3.0\",\n        \"@azure/core-util\": \"^1.13.0\",\n        \"@azure/logger\": \"^1.3.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-rest-pipeline\": {\n      \"version\": \"1.22.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.1.tgz\",\n      \"integrity\": \"sha512-UVZlVLfLyz6g3Hy7GNDpooMQonUygH7ghdiSASOOHy97fKj/mPLqgDX7aidOijn+sCMU+WU8NjlPlNTgnvbcGA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.1.2\",\n        \"@azure/core-auth\": \"^1.10.0\",\n        \"@azure/core-tracing\": \"^1.3.0\",\n        \"@azure/core-util\": \"^1.13.0\",\n        \"@azure/logger\": \"^1.3.0\",\n        \"@typespec/ts-http-runtime\": \"^0.3.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-tracing\": {\n      \"version\": \"1.3.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz\",\n      \"integrity\": \"sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-util\": {\n      \"version\": \"1.13.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz\",\n      \"integrity\": \"sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.1.2\",\n        \"@typespec/ts-http-runtime\": \"^0.3.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/identity\": {\n      \"version\": \"4.12.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/identity/-/identity-4.12.0.tgz\",\n      \"integrity\": \"sha512-6vuh2R3Cte6SD6azNalLCjIDoryGdcvDVEV7IDRPtm5lHX5ffkDlIalaoOp5YJU08e4ipjJENel20kSMDLAcug==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.0.0\",\n        \"@azure/core-auth\": \"^1.9.0\",\n        \"@azure/core-client\": \"^1.9.2\",\n        \"@azure/core-rest-pipeline\": \"^1.17.0\",\n        \"@azure/core-tracing\": \"^1.0.0\",\n        \"@azure/core-util\": \"^1.11.0\",\n        \"@azure/logger\": \"^1.0.0\",\n        \"@azure/msal-browser\": \"^4.2.0\",\n        \"@azure/msal-node\": \"^3.5.0\",\n        \"open\": \"^10.1.0\",\n        \"tslib\": \"^2.2.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/logger\": {\n      \"version\": \"1.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz\",\n      \"integrity\": \"sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@typespec/ts-http-runtime\": \"^0.3.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/msal-browser\": {\n      \"version\": \"4.24.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.24.0.tgz\",\n      \"integrity\": \"sha512-BNoiUEx4olj16U9ZiquvIhG1dZBnwWSzSXiSclq/9qiFQXYeLOKqEaEv98+xLXJ3oLw9APwHTR1eY2Qk0v6XBQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/msal-common\": \"15.13.0\"\n      },\n      \"engines\": {\n        \"node\": \">=0.8.0\"\n      }\n    },\n    \"node_modules/@azure/msal-common\": {\n      \"version\": \"15.13.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.13.0.tgz\",\n      \"integrity\": \"sha512-8oF6nj02qX7eE/6+wFT5NluXRHc05AgdCC3fJnkjiJooq8u7BcLmxaYYSwc2AfEkWRMRi6Eyvvbeqk4U4412Ag==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=0.8.0\"\n      }\n    },\n    \"node_modules/@azure/msal-node\": {\n      \"version\": \"3.8.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.0.tgz\",\n      \"integrity\": \"sha512-23BXm82Mp5XnRhrcd4mrHa0xuUNRp96ivu3nRatrfdAqjoeWAGyD0eEAafxAOHAEWWmdlyFK4ELFcdziXyw2sA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/msal-common\": \"15.13.0\",\n        \"jsonwebtoken\": \"^9.0.0\",\n        \"uuid\": \"^8.3.0\"\n      },\n      \"engines\": {\n        \"node\": \">=16\"\n      }\n    },\n    \"node_modules/@babel/code-frame\": {\n      \"version\": \"7.27.1\",\n      \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n      \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@babel/helper-validator-identifier\": \"^7.27.1\",\n        \"js-tokens\": \"^4.0.0\",\n        \"picocolors\": \"^1.1.1\"\n      },\n      \"engines\": {\n        \"node\": \">=6.9.0\"\n      }\n    },\n    \"node_modules/@babel/helper-validator-identifier\": {\n      \"version\": \"7.28.5\",\n      \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz\",\n      \"integrity\": \"sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=6.9.0\"\n      }\n    },\n    \"node_modules/@isaacs/balanced-match\": {\n      \"version\": \"4.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz\",\n      \"integrity\": \"sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \"20 || >=22\"\n      }\n    },\n    \"node_modules/@isaacs/brace-expansion\": {\n      \"version\": \"5.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz\",\n      \"integrity\": \"sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@isaacs/balanced-match\": \"^4.0.1\"\n      },\n      \"engines\": {\n        \"node\": \"20 || >=22\"\n      }\n    },\n    \"node_modules/@isaacs/cliui\": {\n      \"version\": \"8.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz\",\n      \"integrity\": \"sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==\",\n      \"dev\": true,\n      \"license\": \"ISC\",\n      \"dependencies\": {\n        \"string-width\": \"^5.1.2\",\n        \"string-width-cjs\": \"npm:string-width@^4.2.0\",\n        \"strip-ansi\": \"^7.0.1\",\n        \"strip-ansi-cjs\": \"npm:strip-ansi@^6.0.1\",\n        \"wrap-ansi\": \"^8.1.0\",\n        \"wrap-ansi-cjs\": \"npm:wrap-ansi@^7.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=12\"\n      }\n    },\n    \"node_modules/@isaacs/cliui/node_modules/emoji-regex\": {\n      \"version\": \"9.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz\",\n      \"integrity\": \"sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@isaacs/cliui/node_modules/string-width\": {\n      \"version\": \"5.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz\",\n      \"integrity\": \"sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"eastasianwidth\": \"^0.2.0\",\n        \"emoji-regex\": \"^9.2.2\",\n        \"strip-ansi\": \"^7.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=12\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/@nodelib/fs.scandir\": {\n      \"version\": \"2.1.5\",\n      \"resolved\": \"https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz\",\n      \"integrity\": \"sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@nodelib/fs.stat\": \"2.0.5\",\n        \"run-parallel\": \"^1.1.9\"\n      },\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/@nodelib/fs.stat\": {\n      \"version\": \"2.0.5\",\n      \"resolved\": \"https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz\",\n      \"integrity\": \"sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/@nodelib/fs.walk\": {\n      \"version\": \"1.2.8\",\n      \"resolved\": \"https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz\",\n      \"integrity\": \"sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@nodelib/fs.scandir\": \"2.1.5\",\n        \"fastq\": \"^1.6.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/@secretlint/config-creator\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-10.2.2.tgz\",\n      \"integrity\": \"sha512-BynOBe7Hn3LJjb3CqCHZjeNB09s/vgf0baBaHVw67w7gHF0d25c3ZsZ5+vv8TgwSchRdUCRrbbcq5i2B1fJ2QQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/types\": \"^10.2.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/config-loader\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-10.2.2.tgz\",\n      \"integrity\": \"sha512-ndjjQNgLg4DIcMJp4iaRD6xb9ijWQZVbd9694Ol2IszBIbGPPkwZHzJYKICbTBmh6AH/pLr0CiCaWdGJU7RbpQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/profiler\": \"^10.2.2\",\n        \"@secretlint/resolver\": \"^10.2.2\",\n        \"@secretlint/types\": \"^10.2.2\",\n        \"ajv\": \"^8.17.1\",\n        \"debug\": \"^4.4.1\",\n        \"rc-config-loader\": \"^4.1.3\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/core\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/core/-/core-10.2.2.tgz\",\n      \"integrity\": \"sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/profiler\": \"^10.2.2\",\n        \"@secretlint/types\": \"^10.2.2\",\n        \"debug\": \"^4.4.1\",\n        \"structured-source\": \"^4.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/formatter\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/formatter/-/formatter-10.2.2.tgz\",\n      \"integrity\": \"sha512-10f/eKV+8YdGKNQmoDUD1QnYL7TzhI2kzyx95vsJKbEa8akzLAR5ZrWIZ3LbcMmBLzxlSQMMccRmi05yDQ5YDA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/resolver\": \"^10.2.2\",\n        \"@secretlint/types\": \"^10.2.2\",\n        \"@textlint/linter-formatter\": \"^15.2.0\",\n        \"@textlint/module-interop\": \"^15.2.0\",\n        \"@textlint/types\": \"^15.2.0\",\n        \"chalk\": \"^5.4.1\",\n        \"debug\": \"^4.4.1\",\n        \"pluralize\": \"^8.0.0\",\n        \"strip-ansi\": \"^7.1.0\",\n        \"table\": \"^6.9.0\",\n        \"terminal-link\": \"^4.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/formatter/node_modules/chalk\": {\n      \"version\": \"5.6.2\",\n      \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz\",\n      \"integrity\": \"sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \"^12.17.0 || ^14.13 || >=16.0.0\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n      }\n    },\n    \"node_modules/@secretlint/node\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/node/-/node-10.2.2.tgz\",\n      \"integrity\": \"sha512-eZGJQgcg/3WRBwX1bRnss7RmHHK/YlP/l7zOQsrjexYt6l+JJa5YhUmHbuGXS94yW0++3YkEJp0kQGYhiw1DMQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/config-loader\": \"^10.2.2\",\n        \"@secretlint/core\": \"^10.2.2\",\n        \"@secretlint/formatter\": \"^10.2.2\",\n        \"@secretlint/profiler\": \"^10.2.2\",\n        \"@secretlint/source-creator\": \"^10.2.2\",\n        \"@secretlint/types\": \"^10.2.2\",\n        \"debug\": \"^4.4.1\",\n        \"p-map\": \"^7.0.3\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/profiler\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/profiler/-/profiler-10.2.2.tgz\",\n      \"integrity\": \"sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@secretlint/resolver\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/resolver/-/resolver-10.2.2.tgz\",\n      \"integrity\": \"sha512-3md0cp12e+Ae5V+crPQYGd6aaO7ahw95s28OlULGyclyyUtf861UoRGS2prnUrKh7MZb23kdDOyGCYb9br5e4w==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@secretlint/secretlint-formatter-sarif\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-10.2.2.tgz\",\n      \"integrity\": \"sha512-ojiF9TGRKJJw308DnYBucHxkpNovDNu1XvPh7IfUp0A12gzTtxuWDqdpuVezL7/IP8Ua7mp5/VkDMN9OLp1doQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"node-sarif-builder\": \"^3.2.0\"\n      }\n    },\n    \"node_modules/@secretlint/secretlint-rule-no-dotenv\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-10.2.2.tgz\",\n      \"integrity\": \"sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/types\": \"^10.2.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/secretlint-rule-preset-recommend\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-10.2.2.tgz\",\n      \"integrity\": \"sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/source-creator\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-10.2.2.tgz\",\n      \"integrity\": \"sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/types\": \"^10.2.2\",\n        \"istextorbinary\": \"^9.5.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/types\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/types/-/types-10.2.2.tgz\",\n      \"integrity\": \"sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@sindresorhus/merge-streams\": {\n      \"version\": \"2.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz\",\n      \"integrity\": \"sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/@textlint/ast-node-types\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.5.0.tgz\",\n      \"integrity\": \"sha512-K0LEuuTo4rza8yDrlYkRdXLao8Iz/QBMsQdIxRrOOrLYb4HAtZaypZ78c+J6rDA1UlGxadZVLmkkiv4KV5fMKQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@textlint/linter-formatter\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.5.0.tgz\",\n      \"integrity\": \"sha512-DPTm2+VXKID41qKQWagg/4JynM6hEEpvbq0PlGsEoC4Xm7IqXIxFym3mSf5+ued0cuiIV1hR9kgXjqGdP035tw==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azu/format-text\": \"^1.0.2\",\n        \"@azu/style-format\": \"^1.0.1\",\n        \"@textlint/module-interop\": \"15.5.0\",\n        \"@textlint/resolver\": \"15.5.0\",\n        \"@textlint/types\": \"15.5.0\",\n        \"chalk\": \"^4.1.2\",\n        \"debug\": \"^4.4.3\",\n        \"js-yaml\": \"^4.1.1\",\n        \"lodash\": \"^4.17.21\",\n        \"pluralize\": \"^2.0.0\",\n        \"string-width\": \"^4.2.3\",\n        \"strip-ansi\": \"^6.0.1\",\n        \"table\": \"^6.9.0\",\n        \"text-table\": \"^0.2.0\"\n      }\n    },\n    \"node_modules/@textlint/linter-formatter/node_modules/ansi-regex\": {\n      \"version\": \"5.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n      \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/@textlint/linter-formatter/node_modules/pluralize\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz\",\n      \"integrity\": \"sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@textlint/linter-formatter/node_modules/strip-ansi\": {\n      \"version\": \"6.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n      \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ansi-regex\": \"^5.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/@textlint/module-interop\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.5.0.tgz\",\n      \"integrity\": \"sha512-rqfouEhBEgZlR9umswWXXRBcmmSM28Trpr9b0duzgehKYVc7wSQCuQMagr6YBJa2NRMfRNinupusbJXMg0ij2A==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@textlint/resolver\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/resolver/-/resolver-15.5.0.tgz\",\n      \"integrity\": \"sha512-kK5nFbg5N3kVoZExQI/dnYjCInmTltvXDnuCRrBxHI01i6kO/o8R7Lc2aFkAZ6/NUZuRPalkyDdwZJke4/R2wg==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@textlint/types\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/types/-/types-15.5.0.tgz\",\n      \"integrity\": \"sha512-EjAPbuA+3NyQ9WyFP7iUlddi35F3mGrf4tb4cZM0nWywbtEJ3+XAYqL+5RsF0qFeSguxGir09NdZOWrG9wVOUQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@textlint/ast-node-types\": \"15.5.0\"\n      }\n    },\n    \"node_modules/@types/normalize-package-data\": {\n      \"version\": \"2.4.4\",\n      \"resolved\": \"https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz\",\n      \"integrity\": \"sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@types/sarif\": {\n      \"version\": \"2.1.7\",\n      \"resolved\": \"https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz\",\n      \"integrity\": \"sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@typespec/ts-http-runtime\": {\n      \"version\": \"0.3.1\",\n      \"resolved\": \"https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.1.tgz\",\n      \"integrity\": \"sha512-SnbaqayTVFEA6/tYumdF0UmybY0KHyKwGPBXnyckFlrrKdhWFrL3a2HIPXHjht5ZOElKGcXfD2D63P36btb+ww==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"http-proxy-agent\": \"^7.0.0\",\n        \"https-proxy-agent\": \"^7.0.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@vscode/vsce\": {\n      \"version\": \"3.7.1\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce/-/vsce-3.7.1.tgz\",\n      \"integrity\": \"sha512-OTm2XdMt2YkpSn2Nx7z2EJtSuhRHsTPYsSK59hr3v8jRArK+2UEoju4Jumn1CmpgoBLGI6ReHLJ/czYltNUW3g==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/identity\": \"^4.1.0\",\n        \"@secretlint/node\": \"^10.1.2\",\n        \"@secretlint/secretlint-formatter-sarif\": \"^10.1.2\",\n        \"@secretlint/secretlint-rule-no-dotenv\": \"^10.1.2\",\n        \"@secretlint/secretlint-rule-preset-recommend\": \"^10.1.2\",\n        \"@vscode/vsce-sign\": \"^2.0.0\",\n        \"azure-devops-node-api\": \"^12.5.0\",\n        \"chalk\": \"^4.1.2\",\n        \"cheerio\": \"^1.0.0-rc.9\",\n        \"cockatiel\": \"^3.1.2\",\n        \"commander\": \"^12.1.0\",\n        \"form-data\": \"^4.0.0\",\n        \"glob\": \"^11.0.0\",\n        \"hosted-git-info\": \"^4.0.2\",\n        \"jsonc-parser\": \"^3.2.0\",\n        \"leven\": \"^3.1.0\",\n        \"markdown-it\": \"^14.1.0\",\n        \"mime\": \"^1.3.4\",\n        \"minimatch\": \"^3.0.3\",\n        \"parse-semver\": \"^1.1.1\",\n        \"read\": \"^1.0.7\",\n        \"secretlint\": \"^10.1.2\",\n        \"semver\": \"^7.5.2\",\n        \"tmp\": \"^0.2.3\",\n        \"typed-rest-client\": \"^1.8.4\",\n        \"url-join\": \"^4.0.1\",\n        \"xml2js\": \"^0.5.0\",\n        \"yauzl\": \"^2.3.1\",\n        \"yazl\": \"^2.2.2\"\n      },\n      \"bin\": {\n        \"vsce\": \"vsce\"\n      },\n      \"engines\": {\n        \"node\": \">= 20\"\n      },\n      \"optionalDependencies\": {\n        \"keytar\": \"^7.7.0\"\n      }\n    },\n    \"node_modules/@vscode/vsce-sign\": {\n      \"version\": \"2.0.8\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.8.tgz\",\n      \"integrity\": \"sha512-H7p8E11cZMj6mt8xIi3QXZ7dSU/2MH3Y7c+5JfUhHAV4xfaPNc8ozwLVK282c6ah596KoIJIdPUlNHV7Qs/5JA==\",\n      \"dev\": true,\n      \"hasInstallScript\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optionalDependencies\": {\n        \"@vscode/vsce-sign-alpine-arm64\": \"2.0.6\",\n        \"@vscode/vsce-sign-alpine-x64\": \"2.0.6\",\n        \"@vscode/vsce-sign-darwin-arm64\": \"2.0.2\",\n        \"@vscode/vsce-sign-darwin-x64\": \"2.0.2\",\n        \"@vscode/vsce-sign-linux-arm\": \"2.0.6\",\n        \"@vscode/vsce-sign-linux-arm64\": \"2.0.6\",\n        \"@vscode/vsce-sign-linux-x64\": \"2.0.6\",\n        \"@vscode/vsce-sign-win32-arm64\": \"2.0.6\",\n        \"@vscode/vsce-sign-win32-x64\": \"2.0.6\"\n      }\n    },\n    \"node_modules/@vscode/vsce-sign-alpine-arm64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz\",\n      \"integrity\": \"sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"alpine\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-alpine-x64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz\",\n      \"integrity\": \"sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"alpine\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-darwin-arm64\": {\n      \"version\": \"2.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.2.tgz\",\n      \"integrity\": \"sha512-rz8F4pMcxPj8fjKAJIfkUT8ycG9CjIp888VY/6pq6cuI2qEzQ0+b5p3xb74CJnBbSC0p2eRVoe+WgNCAxCLtzQ==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"darwin\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-darwin-x64\": {\n      \"version\": \"2.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz\",\n      \"integrity\": \"sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"darwin\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-linux-arm\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz\",\n      \"integrity\": \"sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==\",\n      \"cpu\": [\n        \"arm\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-linux-arm64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz\",\n      \"integrity\": \"sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-linux-x64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz\",\n      \"integrity\": \"sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-win32-arm64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz\",\n      \"integrity\": \"sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"win32\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-win32-x64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz\",\n      \"integrity\": \"sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"win32\"\n      ]\n    },\n    \"node_modules/agent-base\": {\n      \"version\": \"7.1.4\",\n      \"resolved\": \"https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz\",\n      \"integrity\": \"sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 14\"\n      }\n    },\n    \"node_modules/ajv\": {\n      \"version\": \"8.17.1\",\n      \"resolved\": \"https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz\",\n      \"integrity\": \"sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"fast-deep-equal\": \"^3.1.3\",\n        \"fast-uri\": \"^3.0.1\",\n        \"json-schema-traverse\": \"^1.0.0\",\n        \"require-from-string\": \"^2.0.2\"\n      },\n      \"funding\": {\n        \"type\": \"github\",\n        \"url\": \"https://github.com/sponsors/epoberezkin\"\n      }\n    },\n    \"node_modules/ansi-escapes\": {\n      \"version\": \"7.2.0\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz\",\n      \"integrity\": \"sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"environment\": \"^1.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/ansi-regex\": {\n      \"version\": \"6.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz\",\n      \"integrity\": \"sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=12\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/ansi-regex?sponsor=1\"\n      }\n    },\n    \"node_modules/ansi-styles\": {\n      \"version\": \"4.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n      \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"color-convert\": \"^2.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=8\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n      }\n    },\n    \"node_modules/argparse\": {\n      \"version\": \"2.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz\",\n      \"integrity\": \"sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==\",\n      \"dev\": true,\n      \"license\": \"Python-2.0\"\n    },\n    \"node_modules/astral-regex\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz\",\n      \"integrity\": \"sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/asynckit\": {\n      \"version\": \"0.4.0\",\n      \"resolved\": \"https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz\",\n      \"integrity\": \"sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/azure-devops-node-api\": {\n      \"version\": \"12.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz\",\n      \"integrity\": \"sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"tunnel\": \"0.0.6\",\n        \"typed-rest-client\": \"^1.8.4\"\n      }\n    },\n    \"node_modules/balanced-match\": {\n      \"version\": \"1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz\",\n      \"integrity\": \"sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/base64-js\": {\n      \"version\": \"1.5.1\",\n      \"resolved\": \"https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz\",\n      \"integrity\": \"sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==\",\n      \"dev\": true,\n      \"funding\": [\n        {\n          \"type\": \"github\",\n          \"url\": \"https://github.com/sponsors/feross\"\n        },\n        {\n          \"type\": \"patreon\",\n          \"url\": \"https://www.patreon.com/feross\"\n        },\n        {\n          \"type\": \"consulting\",\n          \"url\": \"https://feross.org/support\"\n        }\n      ],\n      \"license\": \"MIT\",\n      \"optional\": true\n    },\n    \"node_modules/binaryextensions\": {\n      \"version\": \"6.11.0\",\n      \"resolved\": \"https://registry.npmjs.org/binaryextensions/-/binaryextensions-6.11.0.tgz\",\n      \"integrity\": \"sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==\",\n      \"dev\": true,\n      \"license\": \"Artistic-2.0\",\n      \"dependencies\": {\n        \"editions\": \"^6.21.0\"\n      },\n      \"engines\": {\n        \"node\": \">=4\"\n      },\n      \"funding\": {\n        \"url\": \"https://bevry.me/fund\"\n      }\n    },\n    \"node_modules/bl\": {\n      \"version\": \"4.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/bl/-/bl-4.1.0.tgz\",\n      \"integrity\": \"sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"dependencies\": {\n        \"buffer\": \"^5.5.0\",\n        \"inherits\": \"^2.0.4\",\n        \"readable-stream\": \"^3.4.0\"\n      }\n    },\n    \"node_modules/boolbase\": {\n      \"version\": \"1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz\",\n      \"integrity\": \"sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==\",\n      \"dev\": true,\n      \"license\": \"ISC\"\n    },\n    \"node_modules/boundary\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz\",\n      \"integrity\": \"sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==\",\n      \"dev\": true,\n      \"license\": \"BSD-2-Clause\"\n    },\n    \"node_modules/brace-expansion\": {\n      \"version\": \"1.1.12\",\n      \"resolved\": \"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz\",\n      \"integrity\": \"sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"balanced-match\": \"^1.0.0\",\n        \"concat-map\": \"0.0.1\"\n      }\n    },\n    \"node_modules/braces\": {\n      \"version\": \"3.0.3\",\n      \"resolved\": \"https://registry.npmjs.org/braces/-/braces-3.0.3.tgz\",\n      \"integrity\": \"sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"fill-range\": \"^7.1.1\"\n      },\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/buffer\": {\n      \"version\": \"5.7.1\",\n      \"resolved\": \"https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz\",\n      \"integrity\": \"sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==\",\n      \"dev\": true,\n      \"funding\": [\n        {\n          \"type\": \"github\",\n          \"url\": \"https://github.com/sponsors/feross\"\n        },\n        {\n          \"type\": \"patreon\",\n          \"url\": \"https://www.patreon.com/feross\"\n        },\n        {\n          \"type\": \"consulting\",\n          \"url\": \"https://feross.org/support\"\n        }\n      ],\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"dependencies\": {\n        \"base64-js\": \"^1.3.1\",\n        \"ieee754\": \"^1.1.13\"\n      }\n    },\n    \"node_modules/buffer-crc32\": {\n      \"version\": \"0.2.13\",\n      \"resolved\": \"https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz\",\n      \"integrity\": \"sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \"*\"\n      }\n    },\n    \"node_modules/buffer-equal-constant-time\": {\n      \"version\": \"1.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz\",\n      \"integrity\": \"sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==\",\n      \"dev\": true,\n      \"license\": \"BSD-3-Clause\"\n    },\n    \"node_modules/bundle-name\": {\n      \"version\": \"4.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz\",\n      \"integrity\": \"sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"run-applescript\": \"^7.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/call-bind-apply-helpers\": {\n      \"version\": \"1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz\",\n      \"integrity\": \"sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"es-errors\": \"^1.3.0\",\n        \"function-bind\": \"^1.1.2\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/call-bound\": {\n      \"version\": \"1.0.4\",\n      \"resolved\": \"https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz\",\n      \"integrity\": \"sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"call-bind-apply-helpers\": \"^1.0.2\",\n        \"get-intrinsic\": \"^1.3.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/ljharb\"\n      }\n    },\n    \"node_modules/chalk\": {\n      \"version\": \"4.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n      \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ansi-styles\": \"^4.1.0\",\n        \"supports-color\": \"^7.1.0\"\n      },\n      \"engines\": {\n        \"node\": \">=10\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n      }\n    },\n    \"node_modules/cheerio\": {\n      \"version\": \"1.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz\",\n      \"integrity\": \"sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"cheerio-select\": \"^2.1.0\",\n        \"dom-serializer\": \"^2.0.0\",\n        \"domhandler\": \"^5.0.3\",\n        \"domutils\": \"^3.2.2\",\n        \"encoding-sniffer\": \"^0.2.1\",\n        \"htmlparser2\": \"^10.0.0\",\n        \"parse5\": \"^7.3.0\",\n        \"parse5-htmlparser2-tree-adapter\": \"^7.1.0\",\n        \"parse5-parser-stream\": \"^7.1.2\",\n        \"undici\": \"^7.12.0\",\n        \"whatwg-mimetype\": \"^4.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.18.1\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/cheeriojs/cheerio?sponsor=1\"\n      }\n    },\n    \"node_modules/cheerio-select\": {\n      \"version\": \"2.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz\",\n      \"integrity\": \"sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==\",\n      \"dev\": true,\n      \"license\": \"BSD-2-Clause\",\n      \"dependencies\": {\n        \"boolbase\": \"^1.0.0\",\n        \"css-select\": \"^5.1.0\",\n        \"css-what\": \"^6.1.0\",\n        \"domelementtype\": \"^2.3.0\",\n        \"domhandler\": \"^5.0.3\",\n        \"domutils\": \"^3.0.1\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/fb55\"\n      }\n    },\n    \"node_modules/chownr\": {\n      \"version\": \"1.1.4\",\n      \"resolved\": \"https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz\",\n      \"integrity\": \"sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==\",\n      \"dev\": true,\n      \"license\": \"ISC\",\n      \"optional\": true\n    },\n    \"node_modules/cockatiel\": {\n      \"version\": \"3.2.1\",\n      \"resolved\": \"https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz\",\n      \"integrity\": \"sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=16\"\n      }\n    },\n    \"node_modules/color-convert\": {\n      \"version\": \"2.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n      \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"color-name\": \"~1.1.4\"\n      },\n      \"engines\": {\n        \"node\": \">=7.0.0\"\n      }\n    },\n    \"node_modules/color-name\": {\n      \"version\": \"1.1.4\",\n      \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n      \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/combined-stream\": {\n      \"version\": \"1.0.8\",\n      \"resolved\": \"https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz\",\n      \"integrity\": \"sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"delayed-stream\": \"~1.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.8\"\n      }\n    },\n    \"node_modules/commander\": {\n      \"version\": \"12.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/commander/-/commander-12.1.0.tgz\",\n      \"integrity\": \"sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/concat-map\": {\n      \"version\": \"0.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz\",\n      \"integrity\": \"sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/cross-spawn\": {\n      \"version\": \"7.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz\",\n      \"integrity\": \"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"path-key\": \"^3.1.0\",\n        \"shebang-command\": \"^2.0.0\",\n        \"which\": \"^2.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/css-select\": {\n      \"version\": \"5.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz\",\n      \"integrity\": \"sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==\",\n      \"dev\": true,\n      \"license\": \"BSD-2-Clause\",\n      \"dependencies\": {\n        \"boolbase\": \"^1.0.0\",\n        \"css-what\": \"^6.1.0\",\n        \"domhandler\": \"^5.0.2\",\n        \"domutils\": \"^3.0.1\",\n        \"nth-check\": \"^2.0.1\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/fb55\"\n      }\n    },\n    \"node_modules/css-what\": {\n      \"version\": \"6.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz\",\n      \"integrity\": \"sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==\",\n      \"dev\": true,\n      \"license\": \"BSD-2-Clause\",\n      \"engines\": {\n        \"node\": \">= 6\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/fb55\"\n      }\n    },\n    \"node_modules/debug\": {\n      \"version\": \"4.4.3\",\n      \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n      \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ms\": \"^2.1.3\"\n      },\n      \"engines\": {\n        \"node\": \">=6.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"supports-color\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/decompress-response\": {\n      \"version\": \"6.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz\",\n      \"integrity\": \"sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"dependencies\": {\n        \"mimic-response\": \"^3.1.0\"\n      },\n      \"engines\": {\n        \"node\": \">=10\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/deep-extend\": {\n      \"version\": \"0.6.0\",\n      \"resolved\": \"https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz\",\n      \"integrity\": \"sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"engines\": {\n        \"node\": \">=4.0.0\"\n      }\n    },\n    \"node_modules/default-browser\": {\n      \"version\": \"5.2.1\",\n      \"resolved\": \"https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz\",\n      \"integrity\": \"sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"bundle-name\": \"^4.1.0\",\n        \"default-browser-id\": \"^5.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/default-browser-id\": {\n      \"version\": \"5.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz\",\n      \"integrity\": \"sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/define-lazy-prop\": {\n      \"version\": \"3.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz\",\n      \"integrity\": \"sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=12\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/delayed-stream\": {\n      \"version\": \"1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz\",\n      \"integrity\": \"sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=0.4.0\"\n      }\n    },\n    \"node_modules/detect-libc\": {\n      \"version\": \"2.1.1\",\n      \"resolved\": ","tools/intellij-plugin/CHANGELOG.md":"# Datastar Support JetBrains Plugin Changelog\n\n## [Unreleased]\n\n## [1.2.3] - 2025-11-08\n\n- Made it so that the `data-bind` attribute appears on all elements, rather than only a few select ones (`input`, `select`, etc.).\n\n## [1.2.2] - 2025-10-22\n\n- Fixed icon.\n\n## [1.2.1] - 2025-10-22\n\n- Fixed icon.\n\n## [1.2.0] - 2025-10-22\n\n- Added support for using object syntax with `data-computed`.\n- Added the `self` modifier to `data-ignore`.\n- Changed the attribute key delimiter from `-` to `:`.\n- Renamed `data-on-load` to `data-init`.\n\n## [1.1.1] - 2025-08-23\n\n- Added the `data-style` attribute.\n- Added the ability to use a key with the `data-persist` attribute.\n- Added the `filter` modifier to the `data-query-string` attribute.\n- Removed the `trusted` modifier.\n\n## [1.1.0] - 2025-07-16\n\n### Added\n\n- Added the `data-effect` attribute.\n- Added the `data-ignore` attribute.\n- Added the `data-ignore-morph` attribute.\n- Added the `data-json-signals` attribute.\n- Added the `data-on-resize` attribute.\n- Added the `data-on-signal-patch` attribute.\n- Added the `data-on-signal-patch-filter` attribute.\n- Added the `data-preserve-attr` attribute.\n- Added the `data-query-string` attribute.\n- Added the `trusted` modifier.\n\n## [1.0.2] - 2025.02.11\n\n### Added\n\n- Added the `case` modifier to `data-on-*`.\n- Added the `viewtransition` modifier to `data-on-*`.\n\n## [1.0.1] - 2025.02.01\n\n### Added\n\n- Added the `data-on-interval` attribute.\n- Added the `delay` modifier to `data-on-*`.\n- Added the `duration` modifier to `data-on-*`.\n\n## [1.0.0] - 2025.01.04\n\n### Added\n\n- Added the `data-custom-validity` attribute.\n- Added the `data-star-ignore` attribute.\n- Added the `outside` modifier to `data-on-*`.\n\n### Changed\n\n- Replaced the `data-attributes` attribute with `data-attr`.\n\n## [0.21.0] - 2024.12.10\n\n### Added\n\n- Initial public release\n\n[Unreleased]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.2.3...HEAD\n[1.2.3]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.2.2...v1.2.3\n[1.2.2]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.2.1...v1.2.2\n[1.2.1]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.2.0...v1.2.1\n[1.2.0]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.1.1...v1.2.0\n[1.1.1]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.1.0...v1.1.1\n[1.1.0]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.0.2...v1.1.0\n[1.0.2]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.0.1...v1.0.2\n[1.0.1]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.0.0...v1.0.1\n[1.0.0]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v0.21.0...v1.0.0\n[0.21.0]: https://github.com/starfederation/datastar/tools/intellij-plugin/commits/v0.21.0\n","tools/intellij-plugin/README.md":"# Datastar Support JetBrains Plugin\n\n[![Version](https://img.shields.io/jetbrains/plugin/v/26072.svg)](https://plugins.jetbrains.com/plugin/26072)\n[![Downloads](https://img.shields.io/jetbrains/plugin/d/26072.svg)](https://plugins.jetbrains.com/plugin/26072)\n\n<!-- Plugin description -->\nThis plugin offers IntelliJ IDE support for the [Datastar](https://data-star.dev/) framework.\n\nIt offers autocomplete for all of the Datastar custom `data-*` attributes, with additional autocomplete of DOM\nattributes and events.\n\nYou can show the documentation alongside the autocomplete suggestions via the File &rarr; Settings &rarr; Editor &rarr;\nGeneral &rarr;\nCode Completion: **Show the documentation popup in .... ms checkbox**\n<!-- Plugin description end -->\n\n![Screenshot](./resources/img/datastar-intellij-plugin.png)\n\n## Installation\n\n- Using the IDE built-in plugin system:\n\n  <kbd>Settings/Preferences</kbd> > <kbd>Plugins</kbd> > <kbd>Marketplace</kbd> > <kbd>Search for \"\n  datastar-jetbrains-plugin\"</kbd> >\n  <kbd>Install</kbd>\n\n- Using JetBrains Marketplace:\n\n  Go to [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/26072) and install it by clicking\n  the <kbd>Install to ...</kbd> button in case your IDE is running.\n\n  You can also download the [latest release](https://plugins.jetbrains.com/plugin/26072/versions) from\n  JetBrains Marketplace and install it manually using\n  <kbd>Settings/Preferences</kbd> > <kbd>Plugins</kbd> > <kbd>⚙️</kbd> > <kbd>Install plugin from disk...</kbd>\n\n- Manually:\n\n  Download the [latest release](https://github.com/starfederation/datastar-jetbrains-plugin/releases/latest) and install it\n  manually using\n  <kbd>Settings/Preferences</kbd> > <kbd>Plugins</kbd> > <kbd>⚙️</kbd> > <kbd>Install plugin from disk...</kbd>\n\n## Errata\n\n- The Datastar support plugin does have inline documentation and links to the official documentation, but due an\n  [issue with the `web-types`](https://github.com/JetBrains/web-types/issues/85) implementation, it does not appear on\n  hover currently.\n- Autocomplete of Datastar actions in attribute values is not implemented yet\n- CI build & release workflows are not implemented yet\n\nBrought to you by [nystudio107](https://nystudio107.com/)\n\n---\nPlugin based on the [IntelliJ Platform Plugin Template][template].\n\n[template]: https://github.com/JetBrains/intellij-platform-plugin-template\n\n[docs:plugin-description]: https://plugins.jetbrains.com/docs/intellij/plugin-user-experience.html#plugin-description-and-presentation\n","tools/vscode-extension/LICENSE.md":"Copyright © Ben Croker\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},"items":[{"name":"CHANGELOG.md","path":"tools/intellij-plugin/CHANGELOG.md","rawUrl":"https://raw.githubusercontent.com/starfederation/datastar/HEAD/tools/intellij-plugin/CHANGELOG.md","title":"Intellij-plugin Skill","category":"anthropic-skill","format":"markdown","content":"# Datastar Support JetBrains Plugin Changelog\n\n## [Unreleased]\n\n## [1.2.3] - 2025-11-08\n\n- Made it so that the `data-bind` attribute appears on all elements, rather than only a few select ones (`input`, `select`, etc.).\n\n## [1.2.2] - 2025-10-22\n\n- Fixed icon.\n\n## [1.2.1] - 2025-10-22\n\n- Fixed icon.\n\n## [1.2.0] - 2025-10-22\n\n- Added support for using object syntax with `data-computed`.\n- Added the `self` modifier to `data-ignore`.\n- Changed the attribute key delimiter from `-` to `:`.\n- Renamed `data-on-load` to `data-init`.\n\n## [1.1.1] - 2025-08-23\n\n- Added the `data-style` attribute.\n- Added the ability to use a key with the `data-persist` attribute.\n- Added the `filter` modifier to the `data-query-string` attribute.\n- Removed the `trusted` modifier.\n\n## [1.1.0] - 2025-07-16\n\n### Added\n\n- Added the `data-effect` attribute.\n- Added the `data-ignore` attribute.\n- Added the `data-ignore-morph` attribute.\n- Added the `data-json-signals` attribute.\n- Added the `data-on-resize` attribute.\n- Added the `data-on-signal-patch` attribute.\n- Added the `data-on-signal-patch-filter` attribute.\n- Added the `data-preserve-attr` attribute.\n- Added the `data-query-string` attribute.\n- Added the `trusted` modifier.\n\n## [1.0.2] - 2025.02.11\n\n### Added\n\n- Added the `case` modifier to `data-on-*`.\n- Added the `viewtransition` modifier to `data-on-*`.\n\n## [1.0.1] - 2025.02.01\n\n### Added\n\n- Added the `data-on-interval` attribute.\n- Added the `delay` modifier to `data-on-*`.\n- Added the `duration` modifier to `data-on-*`.\n\n## [1.0.0] - 2025.01.04\n\n### Added\n\n- Added the `data-custom-validity` attribute.\n- Added the `data-star-ignore` attribute.\n- Added the `outside` modifier to `data-on-*`.\n\n### Changed\n\n- Replaced the `data-attributes` attribute with `data-attr`.\n\n## [0.21.0] - 2024.12.10\n\n### Added\n\n- Initial public release\n\n[Unreleased]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.2.3...HEAD\n[1.2.3]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.2.2...v1.2.3\n[1.2.2]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.2.1...v1.2.2\n[1.2.1]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.2.0...v1.2.1\n[1.2.0]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.1.1...v1.2.0\n[1.1.1]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.1.0...v1.1.1\n[1.1.0]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.0.2...v1.1.0\n[1.0.2]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.0.1...v1.0.2\n[1.0.1]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.0.0...v1.0.1\n[1.0.0]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v0.21.0...v1.0.0\n[0.21.0]: https://github.com/starfederation/datastar/tools/intellij-plugin/commits/v0.21.0\n","isInternal":false,"tokens":951,"sizeBytes":2910},{"name":"LICENSE.md","path":"tools/intellij-plugin/LICENSE.md","rawUrl":"https://raw.githubusercontent.com/starfederation/datastar/HEAD/tools/intellij-plugin/LICENSE.md","title":"Intellij-plugin Skill","category":"anthropic-skill","format":"markdown","content":"The MIT License (MIT)\n\nCopyright (c) nystudio107\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","isInternal":false,"tokens":207,"sizeBytes":1073},{"name":"schema.json","path":"tools/intellij-plugin/schema.json","rawUrl":"https://raw.githubusercontent.com/starfederation/datastar/HEAD/tools/intellij-plugin/schema.json","title":"Intellij-plugin Skill","category":"anthropic-skill","format":"json","content":"{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"title\": \"JSON schema for Web-Types\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"$schema\": {\n      \"type\": \"string\"\n    },\n    \"framework\": {\n      \"description\": \"Framework, for which the components are provided by the library. If the library is not enabled in a particular context, all symbols from this file will not be available as well. If you want symbols to be always available do not specify framework.\",\n      \"type\": \"string\"\n    },\n    \"required-context\": {\n      \"description\": \"Since 2024.2. Specify contexts, which are required to enable contributions from this file.\",\n      \"$ref\": \"#/definitions/required-context\"\n    },\n    \"context\": {\n      \"description\": \"Deprecated since 2024.2 because of ambiguous meaning - use \\\"required-context\\\" instead.\",\n      \"deprecationMessage\": \"Use \\\"required-context\\\" instead.\",\n      \"$ref\": \"#/definitions/required-context\"\n    },\n    \"name\": {\n      \"description\": \"Name of the library.\",\n      \"type\": \"string\"\n    },\n    \"version\": {\n      \"description\": \"Version of the library, for which Web-Types are provided.\",\n      \"type\": \"string\"\n    },\n    \"js-types-syntax\": {\n      \"$ref\": \"#/definitions/js-types-syntax\"\n    },\n    \"description-markup\": {\n      \"$ref\": \"#/definitions/description-markup\"\n    },\n    \"framework-config\": {\n      \"$ref\": \"#/definitions/framework-config\"\n    },\n    \"contexts-config\": {\n      \"$ref\": \"#/definitions/contexts-config\"\n    },\n    \"default-icon\": {\n      \"$ref\": \"#/definitions/icon\"\n    },\n    \"contributions\": {\n      \"description\": \"Symbol can be contributed to one of the 3 namespaces - HTML, CSS and JS. Within a particular namespace there can be different kinds of symbols. In each of the namespaces, there are several predefined kinds, which integrate directly with IDE, but providers are free to define their own.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"html\": {\n          \"$ref\": \"#/definitions/html\"\n        },\n        \"css\": {\n          \"$ref\": \"#/definitions/css\"\n        },\n        \"js\": {\n          \"$ref\": \"#/definitions/js-global\"\n        }\n      },\n      \"additionalProperties\": false\n    }\n  },\n  \"required\": [\n    \"name\",\n    \"version\"\n  ],\n  \"additionalProperties\": false,\n  \"definitions\": {\n    \"js-types-syntax\": {\n      \"description\": \"Language in which JavaScript objects types are specified.\",\n      \"type\": \"string\",\n      \"enum\": [\n        \"typescript\"\n      ]\n    },\n    \"description-markup\": {\n      \"description\": \"Markup language in which descriptions are formatted.\",\n      \"type\": \"string\",\n      \"default\": \"none\",\n      \"enum\": [\n        \"html\",\n        \"markdown\",\n        \"none\"\n      ]\n    },\n    \"required-context\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"kind\": {\n              \"type\": \"string\"\n            },\n            \"name\": {\n              \"type\": \"string\"\n            }\n          },\n          \"required\": [\n            \"kind\",\n            \"name\"\n          ],\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"anyOf\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/definitions/required-context\"\n              }\n            }\n          },\n          \"required\": [\n            \"anyOf\"\n          ],\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"allOf\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/definitions/required-context\"\n              }\n            }\n          },\n          \"required\": [\n            \"allOf\"\n          ],\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"not\": {\n              \"$ref\": \"#/definitions/required-context\"\n            }\n          },\n          \"required\": [\n            \"not\"\n          ],\n          \"additionalProperties\": false\n        }\n      ]\n    },\n    \"framework-config\": {\n      \"description\": \"Provide configuration for the specified web framework. This is an advanced feature, which is used to provide support for templating frameworks like Angular, Vue, Svelte, etc.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"enable-when\": {\n          \"$ref\": \"#/definitions/enablement-rules\"\n        },\n        \"disable-when\": {\n          \"$ref\": \"#/definitions/disablement-rules\"\n        },\n        \"canonical-names\": {\n          \"description\": \"In many frameworks symbols can have multiple versions of a name. Specify canonical name conversion rule for names of particular symbol kinds against which comparisons will be made. Format of the 'canonical-names' property names is '{namespace}/{symbol kind}'. By default symbol names in HTML namespace are converted to lower-case, and in CSS and JS namespaces are left as-is. In case of name patterns, rules are applied to each part of the pattern separately, so even if the symbol with pattern is in HTML namespace, references to JS events will be case-sensitive.\",\n          \"$ref\": \"#/definitions/name-conversion-rules-single\"\n        },\n        \"match-names\": {\n          \"description\": \"Provide an array of name conversions, in which particular symbol kinds should be matched against canonical names of symbols. By default symbol names are converted using canonical-names rule.\",\n          \"$ref\": \"#/definitions/name-conversion-rules-multiple\"\n        },\n        \"name-variants\": {\n          \"description\": \"Provide an array of name conversions, in which particular symbol kinds should be proposed in auto completion. Format of the 'name-variants' property names is '{namespace}/{symbol kind}'. All symbol kinds are by default provided as-is.\",\n          \"$ref\": \"#/definitions/name-conversion-rules-multiple\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"contexts-config\": {\n      \"description\": \"Provide configuration for Web Types contexts. This allows to contribute additional Web Types for example if a particular library is present in the project.\",\n      \"type\": \"object\",\n      \"additionalProperties\": {\n        \"$ref\": \"#/definitions/context-kind-config\"\n      }\n    },\n    \"context-kind-config\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"kind\": {\n          \"description\": \"Context kind. Only a single context of the particular kind will be enabled. An example of context kind is framework, which has dedicated support in Web Types.\",\n          \"deprecationMessage\": \"As of 2024.2 this is deprecated way of defining context. The outer context should be the context kind with a nested context name.\",\n          \"type\": \"string\"\n        },\n        \"enable-when\": {\n          \"deprecationMessage\": \"As of 2024.2 this is deprecated way of defining context. The outer context should be the context kind with a nested context name.\",\n          \"$ref\": \"#/definitions/enablement-rules\"\n        },\n        \"disable-when\": {\n          \"deprecationMessage\": \"As of 2024.2 this is deprecated way of defining context. The outer context should be the context kind with a nested context name.\",\n          \"$ref\": \"#/definitions/disablement-rules\"\n        }\n      },\n      \"additionalProperties\": {\n        \"$ref\": \"#/definitions/context-config\"\n      }\n    },\n    \"context-config\": {\n      \"description\": \"Since 2024.2. Provide rules for setting a particular name for particular context kind. This allows to contribute additional Web Types for example if a particular library is present in the project.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"enable-when\": {\n          \"$ref\": \"#/definitions/enablement-rules\"\n        },\n        \"disable-when\": {\n          \"$ref\": \"#/definitions/disablement-rules\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"enablement-rules\": {\n      \"description\": \"Specify rules for enabling web framework support. Only one framework can be enabled in a particular file. If you need your contributions to be enabled in all files, regardless of the context, do not specify the framework.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"node-packages\": {\n          \"description\": \"Node.js package names, which enable framework support within the folder containing the package.json.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"ruby-gems\": {\n          \"description\": \"Since 2024.2. Ruby gem names, which enable framework support within the particular Ruby module.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"file-extensions\": {\n          \"description\": \"Extensions of files, which should have the framework support enabled. Use this to support custom file extensions like '.vue' or '.svelte'. Never specify generic extensions like '.html', '.js' or '.ts'. If you need your contributions to be present in every file don't specify the framework at all\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"file-name-patterns\": {\n          \"description\": \"RegExp patterns to match file names, which should have the framework support enabled. Use carefully as broken pattern may even freeze IDE.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/pattern\"\n          }\n        },\n        \"ide-libraries\": {\n          \"description\": \"Global JavaScript libraries names enabled within the IDE, which enable framework support in the whole project\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"project-tool-executables\": {\n          \"description\": \"List of tool executables (without extension), which presence should be checked in the project. In case of Node projects, such tools will be searched in node_modules/.bin/\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"additionalProperties\": {\n        \"$ref\": \"#/definitions/custom-enablement-rules\"\n      }\n    },\n    \"custom-enablement-rules\": {\n      \"description\": \"Since 2024.2. Custom package manager dependencies, which would enable context according to the rules of custom provider.\",\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"disablement-rules\": {\n      \"description\": \"Specify rules for disabling web framework support. These rules take precedence over enable-when rules. They allow to turn off framework support in case of some conflicts between frameworks priority.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"file-extensions\": {\n          \"description\": \"Extensions of files, which should have the framework support disabled\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"file-name-patterns\": {\n          \"description\": \"RegExp patterns to match file names, which should have the framework support disabled\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/pattern\"\n          }\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"name-conversion-rules-single\": {\n      \"type\": \"object\",\n      \"patternProperties\": {\n        \"^/[^/\\\\n\\\\r]+/[^/\\\\n\\\\r]+$\": {\n          \"$ref\": \"#/definitions/name-converter\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"name-conversion-rules-multiple\": {\n      \"type\": \"object\",\n      \"patternProperties\": {\n        \"^/[^/\\\\n\\\\r]+/[^/\\\\n\\\\r]+$\": {\n          \"$ref\": \"#/definitions/name-converters\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"name-converters\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"$ref\": \"#/definitions/name-converter\"\n      }\n    },\n    \"name-converter\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"as-is\",\n        \"PascalCase\",\n        \"camelCase\",\n        \"lowercase\",\n        \"UPPERCASE\",\n        \"kebab-case\",\n        \"snake_case\"\n      ]\n    },\n    \"icon\": {\n      \"description\": \"Relative path to the icon representing the symbol or actual SVG of the icon.\",\n      \"type\": \"string\"\n    },\n    \"base-contribution\": {\n      \"type\": \"object\",\n      \"description\": \"The base for any contributions.\",\n      \"javaAbstract\": true,\n      \"javaInterfaces\": [\n        \"GenericContributionsHost\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"$ref\": \"#/definitions/name\"\n        },\n        \"description\": {\n          \"$ref\": \"#/definitions/description\"\n        },\n        \"description-sections\": {\n          \"$ref\": \"#/definitions/description-sections\"\n        },\n        \"required-context\": {\n          \"description\": \"Since 2024.2. Specify contexts, which are required to enable this contribution.\",\n          \"$ref\": \"#/definitions/required-context\"\n        },\n        \"doc-url\": {\n          \"$ref\": \"#/definitions/doc-url\"\n        },\n        \"icon\": {\n          \"$ref\": \"#/definitions/icon\"\n        },\n        \"source\": {\n          \"$ref\": \"#/definitions/source\"\n        },\n        \"since\": {\n          \"$ref\": \"#/definitions/since\"\n        },\n        \"deprecated\": {\n          \"$ref\": \"#/definitions/deprecated\"\n        },\n        \"deprecated-since\": {\n          \"$ref\": \"#/definitions/deprecated-since\"\n        },\n        \"obsolete\": {\n          \"$ref\": \"#/definitions/obsolete\"\n        },\n        \"obsolete-since\": {\n          \"$ref\": \"#/definitions/obsolete-since\"\n        },\n        \"experimental\": {\n          \"$ref\": \"#/definitions/experimental\"\n        },\n        \"priority\": {\n          \"$ref\": \"#/definitions/priority\"\n        },\n        \"proximity\": {\n          \"$ref\": \"#/definitions/proximity\"\n        },\n        \"virtual\": {\n          \"$ref\": \"#/definitions/virtual\"\n        },\n        \"abstract\": {\n          \"$ref\": \"#/definitions/abstract\"\n        },\n        \"extension\": {\n          \"$ref\": \"#/definitions/extension\"\n        },\n        \"extends\": {\n          \"$ref\": \"#/definitions/extends\"\n        },\n        \"pattern\": {\n          \"$ref\": \"#/definitions/name-pattern-root\"\n        },\n        \"html\": {\n          \"$ref\": \"#/definitions/html\"\n        },\n        \"css\": {\n          \"$ref\": \"#/definitions/css\"\n        },\n        \"js\": {\n          \"$ref\": \"#/definitions/js\"\n        },\n        \"exclusive-contributions\": {\n          \"$ref\": \"#/definitions/exclusive-contributions\"\n        }\n      }\n    },\n    \"typed-contribution\": {\n      \"type\": \"object\",\n      \"description\": \"The base for any contribution, which can possibly have a JS type.\",\n      \"javaAbstract\": true,\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        }\n      ],\n      \"properties\": {\n        \"type\": {\n          \"$ref\": \"#/definitions/type-list\"\n        }\n      }\n    },\n    \"generic-contribution\": {\n      \"type\": \"object\",\n      \"description\": \"A generic contribution. All contributions are of this type, except for HTML attributes and elements, as well as predefined CSS contribution kinds.\",\n      \"javaAbstract\": true,\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/typed-contribution\"\n        }\n      ],\n      \"properties\": {\n        \"default\": {\n          \"$ref\": \"#/definitions/default\"\n        },\n        \"required\": {\n          \"$ref\": \"#/definitions/required\"\n        },\n        \"attribute-value\": {\n          \"$ref\": \"#/definitions/html-attribute-value\"\n        }\n      }\n    },\n    \"type-list\": {\n      \"description\": \"Specify type according to selected language for type syntax. The type can be specified by a string expression, an object with list of imports and an expression, or an array of possible types.\",\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/type\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/type\"\n          }\n        }\n      ]\n    },\n    \"type\": {\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/type-reference\"\n        },\n        {\n          \"type\": \"string\"\n        }\n      ]\n    },\n    \"type-reference\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"module\": {\n          \"description\": \"Name of module, which exports the type. May be omitted, in which case it's assumed to be the name of the library.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name of the symbol to import\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"additionalProperties\": false\n    },\n    \"html-value-type\": {\n      \"oneOf\": [\n        {\n          \"type\": \"string\",\n          \"description\": \"Provide one of special attribute value types:  \\\"enum\\\", \\\"symbol\\\", \\\"of-match\\\", or a simple JavaScript type according to the specified type format.\"\n        },\n        {\n          \"$ref\": \"#/definitions/type-reference\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/type\"\n          }\n        }\n      ]\n    },\n    \"source\": {\n      \"description\": \"Allows to specify the source of the entity. For Vue.js component this may be for instance a class.\",\n      \"type\": \"object\",\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"file\": {\n              \"description\": \"Path to the file, relative to the web-types JSON.\",\n              \"type\": \"string\"\n            },\n            \"offset\": {\n              \"description\": \"Offset in the file under which the source symbol, like class name, is located.\",\n              \"type\": \"integer\"\n            }\n          },\n          \"required\": [\n            \"file\",\n            \"offset\"\n          ],\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"module\": {\n              \"description\": \"Name of module, which exports the symbol. May be omitted, in which case it's assumed to be the name of the library.\",\n              \"type\": \"string\"\n            },\n            \"symbol\": {\n              \"description\": \"Name of the exported symbol.\",\n              \"type\": \"string\"\n            }\n          },\n          \"required\": [\n            \"symbol\"\n          ],\n          \"additionalProperties\": false\n        }\n      ]\n    },\n    \"name\": {\n      \"type\": \"string\"\n    },\n    \"description\": {\n      \"description\": \"Short description to be rendered in documentation popup. It will be rendered according to description-markup setting.\",\n      \"type\": \"string\"\n    },\n    \"description-sections\": {\n      \"description\": \"Custom sections to be shown below description in the documentation popup.\",\n      \"type\": \"object\",\n      \"additionalProperties\": {\n        \"type\": \"string\"\n      }\n    },\n    \"doc-url\": {\n      \"description\": \"Link to online documentation.\",\n      \"type\": \"string\"\n    },\n    \"virtual\": {\n      \"description\": \"Mark contribution as virtual. Virtual contributions can be filtered out if needed in references. A virtual contribution meaning may differ by framework or kind contexts, but usually means something synthetic or something, which gets erased in the runtime by the framework. E.g. Vue or Angular attribute bindings are virtual. \",\n      \"type\": \"boolean\"\n    },\n    \"abstract\": {\n      \"description\": \"Mark contribution as abstract. Such contributions serve only as super contributions for other contributions.\",\n      \"type\": \"boolean\"\n    },\n    \"extension\": {\n      \"description\": \"Mark contribution as an extension. Such contributions do not define a new contribution on their own, but can provide additional properties or contributions to existing contributions.\",\n      \"type\": \"boolean\"\n    },\n    \"priority\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"lowest\",\n        \"low\",\n        \"normal\",\n        \"high\",\n        \"highest\"\n      ]\n    },\n    \"proximity\": {\n      \"type\": \"integer\"\n    },\n    \"name-pattern-root\": {\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/name-pattern\"\n        },\n        {\n          \"type\": \"string\"\n        }\n      ]\n    },\n    \"exclusive-contributions\": {\n      \"description\": \"Specify list of contribution kinds qualified with a namespace, for which during reference resolution this will be the final contribution host. E.g. if a special HTML element does not accept standard attributes, add:\\n\\\"exclusive-contributions\\\": [\\\"/html/attributes\\\"].\",\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\",\n        \"pattern\": \"/[^/\\\\n\\\\r]+/[^/\\\\n\\\\r]+\"\n      }\n    },\n    \"name-pattern\": {\n      \"type\": \"object\",\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"required\": {\n              \"$ref\": \"#/definitions/required\"\n            },\n            \"unique\": {\n              \"type\": \"boolean\"\n            },\n            \"repeat\": {\n              \"type\": \"boolean\"\n            },\n            \"template\": {\n              \"$ref\": \"#/definitions/name-pattern-template\"\n            },\n            \"or\": {\n              \"$ref\": \"#/definitions/name-pattern-template\"\n            },\n            \"delegate\": {\n              \"$ref\": \"#/definitions/reference\"\n            },\n            \"deprecated\": {\n              \"$ref\": \"#/definitions/deprecated\"\n            },\n            \"priority\": {\n              \"$ref\": \"#/definitions/priority\"\n            },\n            \"proximity\": {\n              \"$ref\": \"#/definitions/proximity\"\n            },\n            \"items\": {\n              \"$ref\": \"#/definitions/list-reference\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"regex\": {\n              \"type\": \"string\"\n            },\n            \"case-sensitive\": {\n              \"type\": \"boolean\",\n              \"default\": true\n            }\n          },\n          \"required\": [\n            \"regex\"\n          ],\n          \"additionalProperties\": false\n        }\n      ]\n    },\n    \"name-pattern-template\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"items\": {\n        \"oneOf\": [\n          {\n            \"type\": \"string\"\n          },\n          {\n            \"$ref\": \"#/definitions/name-pattern-template\"\n          },\n          {\n            \"$ref\": \"#/definitions/name-pattern\"\n          }\n        ]\n      }\n    },\n    \"list-reference\": {\n      \"description\": \"A reference to an element in Web-Types model.\",\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/reference\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/reference\"\n          }\n        }\n      ]\n    },\n    \"reference\": {\n      \"description\": \"A reference to an element in Web-Types model.\",\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/reference-with-props\"\n        },\n        {\n          \"type\": \"string\"\n        }\n      ]\n    },\n    \"reference-with-props\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"includeVirtual\": {\n          \"type\": \"boolean\",\n          \"default\": true\n        },\n        \"includeAbstract\": {\n          \"type\": \"boolean\"\n        },\n        \"filter\": {\n          \"type\": \"string\"\n        },\n        \"name-conversion\": {\n          \"description\": \"Override global name conversion rules for matching symbols under the path.\",\n          \"$ref\": \"#/definitions/reference-name-conversion\"\n        }\n      },\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"reference-name-conversion\": {\n      \"description\": \"Override global name conversion rules for matching symbols under the path.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"canonical-names\": {\n          \"description\": \"Override global canonical name conversion rule against which comparisons are made for the referenced symbols. When only rule name is specified, it applies to the symbols of the same kind as the last segment of the referenced path. Otherwise format of the property names is '{namespace}/{symbol kind}'. Supported by JetBrains IDEs since 2022.1.\",\n          \"oneOf\": [\n            {\n              \"$ref\": \"#/definitions/name-converter\"\n            },\n            {\n              \"$ref\": \"#/definitions/name-conversion-rules-single\"\n            }\n          ]\n        },\n        \"match-names\": {\n          \"description\": \"Override global rules, by which referenced symbols should be matched against their canonical names. When only rule names are specified, they applies to the symbols of the same kind as the last segment of the referenced path. Otherwise format of the property names is '{namespace}/{symbol kind}'. Supported by JetBrains IDEs since 2022.1.\",\n          \"oneOf\": [\n            {\n              \"$ref\": \"#/definitions/name-converters\"\n            },\n            {\n              \"$ref\": \"#/definitions/name-conversion-rules-multiple\"\n            }\n          ]\n        },\n        \"name-variants\": {\n          \"description\": \"Override global rules, by which referenced symbol names should be proposed in auto completion. When only rule names are specified, they applies to the symbols of the same kind as the last segment of the referenced path. Otherwise format of the property names is '{namespace}/{symbol kind}'. Supported by JetBrains IDEs since 2022.1.\",\n          \"oneOf\": [\n            {\n              \"$ref\": \"#/definitions/name-converters\"\n            },\n            {\n              \"$ref\": \"#/definitions/name-conversion-rules-multiple\"\n            }\n          ]\n        }\n      }\n    },\n    \"extends\": {\n      \"$ref\": \"#/definitions/reference\"\n    },\n    \"default\": {\n      \"type\": \"string\"\n    },\n    \"required\": {\n      \"type\": \"boolean\"\n    },\n    \"since\": {\n      \"description\": \"Version since this symbol is available.\",\n      \"type\": \"string\"\n    },\n    \"deprecated\": {\n      \"description\": \"Specifies whether the symbol is deprecated. Deprecated symbol usage is discouraged, but still supported. Value can be a boolean or a string message with explanation and migration information.\",\n      \"type\": [\n        \"boolean\",\n        \"string\"\n      ],\n      \"default\": false\n    },\n    \"deprecated-since\": {\n      \"description\": \"Version in which this symbol was first deprecated.\",\n      \"type\": \"string\"\n    },\n    \"obsolete\": {\n      \"description\": \"Specifies whether the symbol is obsolete. Obsolete symbols are no longer supported. Value can be a boolean or a string message with explanation and migration information.\",\n      \"type\": [\n        \"boolean\",\n        \"string\"\n      ],\n      \"default\": false\n    },\n    \"obsolete-since\": {\n      \"description\": \"Version in which this symbol was first made obsolete.\",\n      \"type\": \"string\"\n    },\n    \"experimental\": {\n      \"description\": \"Specifies whether the symbol is experimental. Value can be a boolean or a string message with explanation. Experimental symbols should be used with caution as the API might change.\",\n      \"type\": [\n        \"boolean\",\n        \"string\"\n      ],\n      \"default\": false\n    },\n    \"pattern\": {\n      \"description\": \"A RegEx pattern to match whole content. Syntax should work with at least ECMA, Java and Python implementations.\",\n      \"oneOf\": [\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"regex\": {\n              \"type\": \"string\"\n            },\n            \"case-sensitive\": {\n              \"type\": \"boolean\",\n              \"default\": true\n            }\n          }\n        }\n      ]\n    },\n    \"html-contributions-host\": {\n      \"type\": \"object\",\n      \"javaInterfaces\": [\n        \"GenericContributionsHost\"\n      ],\n      \"javaInterface\": true,\n      \"properties\": {\n        \"elements\": {\n          \"description\": \"HTML elements.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/html-element\"\n          }\n        },\n        \"attributes\": {\n          \"description\": \"HTML attributes.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/html-attribute\"\n          }\n        },\n        \"events\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-html-contribution\"\n          },\n          \"description\": \"DOM events are deprecated in HTML namespace. Contribute events to JS namespace: /js/events\",\n          \"deprecationMessage\": \"Contribute events to JS namespace: /js/events\"\n        }\n      },\n      \"patternProperties\": {\n        \"^(?!pattern$).*$\": {\n          \"$ref\": \"#/definitions/generic-html-contributions\"\n        }\n      }\n    },\n    \"generic-html-contributions\": {\n      \"javaLenientDeserialize\": true,\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-html-contribution-or-property\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-html-contribution-or-property\"\n          }\n        }\n      ]\n    },\n    \"generic-html-contribution-or-property\": {\n      \"javaInterfaces\": [\n        \"GenericContributionOrProperty\"\n      ],\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-html-contribution\"\n        },\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"number\"\n        },\n        {\n          \"type\": \"boolean\"\n        }\n      ]\n    },\n    \"generic-html-contribution\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/html-contributions-host\"\n        }\n      ]\n    },\n    \"html\": {\n      \"type\": \"object\",\n      \"description\": \"Contains contributions to HTML namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are 2 predefined kinds, which integrate directly with IDE - HTML elements and HTML attributes. There are also 2 deprecated kinds: tags (which is equivalent to 'elements') and 'events' (which was moved to JS namespace)\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/html-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"types-syntax\": {\n          \"$ref\": \"#/definitions/deprecated-types-syntax\"\n        },\n        \"description-markup\": {\n          \"$ref\": \"#/definitions/deprecated-description-markup\"\n        },\n        \"tags\": {\n          \"type\": \"array\",\n          \"description\": \"Deprecated, use `elements` property.\",\n          \"deprecationMessage\": \"Use `elements` property.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/html-element\"\n          }\n        }\n      }\n    },\n    \"html-element\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/html-contributions-host\"\n        }\n      ]\n    },\n    \"html-attribute\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/html-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"value\": {\n          \"$ref\": \"#/definitions/html-attribute-value\"\n        },\n        \"default\": {\n          \"type\": \"string\"\n        },\n        \"required\": {\n          \"$ref\": \"#/definitions/required\"\n        },\n        \"vue-argument\": {\n          \"$ref\": \"#/definitions/deprecated-html-attribute-vue-argument\"\n        },\n        \"vue-modifiers\": {\n          \"description\": \"Deprecated vue-specific property - contribute Vue directives to /contributions/html/vue-directives\",\n          \"deprecationMessage\": \"Contribute Vue directives to /contributions/html/vue-directives\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/deprecated-html-attribute-vue-modifier\"\n          }\n        }\n      }\n    },\n    \"html-attribute-value\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"kind\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"no-value\",\n            \"plain\",\n            \"expression\"\n          ]\n        },\n        \"type\": {\n          \"$ref\": \"#/definitions/html-value-type\"\n        },\n        \"required\": {\n          \"type\": \"boolean\"\n        },\n        \"default\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"css-contributions-host\": {\n      \"type\": \"object\",\n      \"javaInterfaces\": [\n        \"GenericContributionsHost\"\n      ],\n      \"javaInterface\": true,\n      \"properties\": {\n        \"properties\": {\n          \"type\": \"array\",\n          \"description\": \"CSS properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-property\"\n          }\n        },\n        \"pseudo-elements\": {\n          \"description\": \"CSS pseudo-elements\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-pseudo-element\"\n          }\n        },\n        \"pseudo-classes\": {\n          \"description\": \"CSS pseudo-classes\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-pseudo-class\"\n          }\n        },\n        \"functions\": {\n          \"description\": \"CSS functions\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-generic-item\"\n          }\n        },\n        \"classes\": {\n          \"description\": \"CSS classes\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-generic-item\"\n          }\n        },\n        \"parts\": {\n          \"description\": \"CSS parts\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-generic-item\"\n          }\n        }\n      },\n      \"patternProperties\": {\n        \"^(?!pattern$).*$\": {\n          \"$ref\": \"#/definitions/generic-css-contributions\"\n        }\n      }\n    },\n    \"generic-css-contributions\": {\n      \"javaLenientDeserialize\": true,\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-css-contribution-or-property\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-css-contribution-or-property\"\n          }\n        }\n      ]\n    },\n    \"generic-css-contribution-or-property\": {\n      \"javaInterfaces\": [\n        \"GenericContributionOrProperty\"\n      ],\n      \"oneOf\": [\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"number\"\n        },\n        {\n          \"type\": \"boolean\"\n        },\n        {\n          \"$ref\": \"#/definitions/generic-css-contribution\"\n        }\n      ]\n    },\n    \"generic-css-contribution\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ]\n    },\n    \"css\": {\n      \"type\": \"object\",\n      \"description\": \"Contains contributions to CSS namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are predefined kinds, which integrate directly with IDE - properties, classes, functions, pseudo-elements, pseudo-classes and parts.\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ]\n    },\n    \"css-property\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"values\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        }\n      }\n    },\n    \"css-generic-item\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ]\n    },\n    \"css-pseudo-element\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"arguments\": {\n          \"type\": \"boolean\",\n          \"description\": \"Specify whether the pseudo-element requires arguments.\"\n        }\n      }\n    },\n    \"css-pseudo-class\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"arguments\": {\n          \"type\": \"boolean\",\n          \"description\": \"Specify whether the pseudo-class requires arguments.\"\n        }\n      }\n    },\n    \"js-contributions-host\": {\n      \"type\": \"object\",\n      \"javaInterfaces\": [\n        \"GenericContributionsHost\"\n      ],\n      \"javaInterface\": true,\n      \"properties\": {\n        \"events\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-js-contribution\"\n          },\n          \"description\": \"DOM events\"\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/js-property\"\n          },\n          \"description\": \"JavaScript properties of an object, HTML tag, framework component, etc.\"\n        },\n        \"symbols\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/js-symbol\"\n          },\n          \"description\": \"Symbols available for JavaScript resolve. TypeScript resolve is not supported.\"\n        }\n      },\n      \"patternProperties\": {\n        \"^(?!pattern$).*$\": {\n          \"$ref\": \"#/definitions/generic-js-contributions\"\n        }\n      }\n    },\n    \"generic-js-contributions\": {\n      \"javaLenientDeserialize\": true,\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-js-contribution-or-property\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-js-contribution-or-property\"\n          }\n        }\n      ]\n    },\n    \"generic-js-contribution-or-property\": {\n      \"javaInterfaces\": [\n        \"GenericContributionOrProperty\"\n      ],\n      \"oneOf\": [\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"number\"\n        },\n        {\n          \"type\": \"boolean\"\n        },\n        {\n          \"$ref\": \"#/definitions/generic-js-contribution\"\n        }\n      ]\n    },\n    \"generic-js-contribution\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/js-contributions-host\"\n        }\n      ]\n    },\n    \"js-global\": {\n      \"type\": \"object\",\n      \"description\": \"Contains contributions to JS namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are 2 predefined kinds, which integrate directly with IDE - properties and events, but only events can be contributed globally.\",\n      \"properties\": {\n        \"events\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-js-contribution\"\n          },\n          \"description\": \"DOM events\"\n        },\n        \"symbols\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/js-symbol\"\n          },\n          \"description\": \"Globally available symbols for JavaScript resolve. TypeScript resolve is not supported. Please note that these symbols will override any normally available global JavaScript symbols.\"\n        }\n      },\n      \"patternProperties\": {\n        \"^(?!pattern$).*$\": {\n          \"$ref\": \"#/definitions/generic-js-contributions\"\n        }\n      }\n    },\n    \"js\": {\n      \"type\": \"object\",\n      \"description\": \"Contains contributions to JS namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are 2 predefined kinds, which integrate directly with IDE - properties and events.\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/js-contributions-host\"\n        }\n      ]\n    },\n    \"js-property\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/js-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"read-only\": {\n          \"description\": \"Specifies whether the property is read only.\",\n          \"type\": \"boolean\"\n        }\n      }\n    },\n    \"js-symbol\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/typed-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/js-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"description\": \"Kind of the symbol. Default is variable.\",\n          \"type\": \"string\",\n          \"enum\": [\n            \"Variable\",\n            \"Function\",\n            \"Namespace\",\n            \"Class\",\n            \"Interface\",\n            \"Enum\",\n            \"Alias\",\n            \"Module\"\n          ]\n        }\n      }\n    },\n    \"deprecated-types-syntax\": {\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/js-types-syntax\"\n        }\n      ],\n      \"description\": \"Deprecated, use top-level js-types-syntax property.\",\n      \"deprecationMessage\": \"Use top-level js-types-syntax property.\"\n    },\n    \"deprecated-description-markup\": {\n      \"description\": \"Deprecated, use top-level property.\",\n      \"deprecationMessage\": \"Use top-level property.\",\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/description-markup\"\n        }\n      ]\n    },\n    \"deprecated-html-attribute-vue-argument\": {\n      \"type\": \"object\",\n      \"description\": \"Deprecated vue-specific property - contribute Vue directives to /contributions/html/vue-directives\",\n      \"deprecationMessage\": \"Contribute Vue directives to /contributions/html/vue-directives\",\n      \"properties\": {\n        \"pattern\": {\n          \"$ref\": \"#/definitions/name-pattern-root\"\n        },\n        \"description\": {\n          \"$ref\": \"#/definitions/description\"\n        },\n        \"doc-url\": {\n          \"$ref\": \"#/definitions/doc-url\"\n        },\n        \"required\": {\n          \"description\": \"Whether directive requires an argument\",\n          \"type\": \"boolean\",\n          \"default\": false\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"deprecated-html-attribute-vue-modifier\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"name\": {\n          \"$ref\": \"#/definitions/name\"\n        },\n        \"pattern\": {\n          \"$ref\": \"#/definitions/name-pattern-root\"\n        },\n        \"description\": {\n          \"$ref\": \"#/definitions/description\"\n        },\n        \"doc-url\": {\n          \"$ref\": \"#/definitions/doc-url\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"additionalProperties\": false\n    }\n  }\n}","frontmatter":{"$schema":"http://json-schema.org/draft-04/schema#","title":"JSON schema for Web-Types","type":"object","properties":{"$schema":{"type":"string"},"framework":{"description":"Framework, for which the components are provided by the library. If the library is not enabled in a particular context, all symbols from this file will not be available as well. If you want symbols to be always available do not specify framework.","type":"string"},"required-context":{"description":"Since 2024.2. Specify contexts, which are required to enable contributions from this file.","$ref":"#/definitions/required-context"},"context":{"description":"Deprecated since 2024.2 because of ambiguous meaning - use \"required-context\" instead.","deprecationMessage":"Use \"required-context\" instead.","$ref":"#/definitions/required-context"},"name":{"description":"Name of the library.","type":"string"},"version":{"description":"Version of the library, for which Web-Types are provided.","type":"string"},"js-types-syntax":{"$ref":"#/definitions/js-types-syntax"},"description-markup":{"$ref":"#/definitions/description-markup"},"framework-config":{"$ref":"#/definitions/framework-config"},"contexts-config":{"$ref":"#/definitions/contexts-config"},"default-icon":{"$ref":"#/definitions/icon"},"contributions":{"description":"Symbol can be contributed to one of the 3 namespaces - HTML, CSS and JS. Within a particular namespace there can be different kinds of symbols. In each of the namespaces, there are several predefined kinds, which integrate directly with IDE, but providers are free to define their own.","type":"object","properties":{"html":{"$ref":"#/definitions/html"},"css":{"$ref":"#/definitions/css"},"js":{"$ref":"#/definitions/js-global"}},"additionalProperties":false}},"required":["name","version"],"additionalProperties":false,"definitions":{"js-types-syntax":{"description":"Language in which JavaScript objects types are specified.","type":"string","enum":["typescript"]},"description-markup":{"description":"Markup language in which descriptions are formatted.","type":"string","default":"none","enum":["html","markdown","none"]},"required-context":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string"},"name":{"type":"string"}},"required":["kind","name"],"additionalProperties":false},{"type":"object","properties":{"anyOf":{"type":"array","items":{"$ref":"#/definitions/required-context"}}},"required":["anyOf"],"additionalProperties":false},{"type":"object","properties":{"allOf":{"type":"array","items":{"$ref":"#/definitions/required-context"}}},"required":["allOf"],"additionalProperties":false},{"type":"object","properties":{"not":{"$ref":"#/definitions/required-context"}},"required":["not"],"additionalProperties":false}]},"framework-config":{"description":"Provide configuration for the specified web framework. This is an advanced feature, which is used to provide support for templating frameworks like Angular, Vue, Svelte, etc.","type":"object","properties":{"enable-when":{"$ref":"#/definitions/enablement-rules"},"disable-when":{"$ref":"#/definitions/disablement-rules"},"canonical-names":{"description":"In many frameworks symbols can have multiple versions of a name. Specify canonical name conversion rule for names of particular symbol kinds against which comparisons will be made. Format of the 'canonical-names' property names is '{namespace}/{symbol kind}'. By default symbol names in HTML namespace are converted to lower-case, and in CSS and JS namespaces are left as-is. In case of name patterns, rules are applied to each part of the pattern separately, so even if the symbol with pattern is in HTML namespace, references to JS events will be case-sensitive.","$ref":"#/definitions/name-conversion-rules-single"},"match-names":{"description":"Provide an array of name conversions, in which particular symbol kinds should be matched against canonical names of symbols. By default symbol names are converted using canonical-names rule.","$ref":"#/definitions/name-conversion-rules-multiple"},"name-variants":{"description":"Provide an array of name conversions, in which particular symbol kinds should be proposed in auto completion. Format of the 'name-variants' property names is '{namespace}/{symbol kind}'. All symbol kinds are by default provided as-is.","$ref":"#/definitions/name-conversion-rules-multiple"}},"additionalProperties":false},"contexts-config":{"description":"Provide configuration for Web Types contexts. This allows to contribute additional Web Types for example if a particular library is present in the project.","type":"object","additionalProperties":{"$ref":"#/definitions/context-kind-config"}},"context-kind-config":{"type":"object","properties":{"kind":{"description":"Context kind. Only a single context of the particular kind will be enabled. An example of context kind is framework, which has dedicated support in Web Types.","deprecationMessage":"As of 2024.2 this is deprecated way of defining context. The outer context should be the context kind with a nested context name.","type":"string"},"enable-when":{"deprecationMessage":"As of 2024.2 this is deprecated way of defining context. The outer context should be the context kind with a nested context name.","$ref":"#/definitions/enablement-rules"},"disable-when":{"deprecationMessage":"As of 2024.2 this is deprecated way of defining context. The outer context should be the context kind with a nested context name.","$ref":"#/definitions/disablement-rules"}},"additionalProperties":{"$ref":"#/definitions/context-config"}},"context-config":{"description":"Since 2024.2. Provide rules for setting a particular name for particular context kind. This allows to contribute additional Web Types for example if a particular library is present in the project.","type":"object","properties":{"enable-when":{"$ref":"#/definitions/enablement-rules"},"disable-when":{"$ref":"#/definitions/disablement-rules"}},"additionalProperties":false},"enablement-rules":{"description":"Specify rules for enabling web framework support. Only one framework can be enabled in a particular file. If you need your contributions to be enabled in all files, regardless of the context, do not specify the framework.","type":"object","properties":{"node-packages":{"description":"Node.js package names, which enable framework support within the folder containing the package.json.","type":"array","items":{"type":"string"}},"ruby-gems":{"description":"Since 2024.2. Ruby gem names, which enable framework support within the particular Ruby module.","type":"array","items":{"type":"string"}},"file-extensions":{"description":"Extensions of files, which should have the framework support enabled. Use this to support custom file extensions like '.vue' or '.svelte'. Never specify generic extensions like '.html', '.js' or '.ts'. If you need your contributions to be present in every file don't specify the framework at all","type":"array","items":{"type":"string"}},"file-name-patterns":{"description":"RegExp patterns to match file names, which should have the framework support enabled. Use carefully as broken pattern may even freeze IDE.","type":"array","items":{"$ref":"#/definitions/pattern"}},"ide-libraries":{"description":"Global JavaScript libraries names enabled within the IDE, which enable framework support in the whole project","type":"array","items":{"type":"string"}},"project-tool-executables":{"description":"List of tool executables (without extension), which presence should be checked in the project. In case of Node projects, such tools will be searched in node_modules/.bin/","type":"array","items":{"type":"string"}}},"additionalProperties":{"$ref":"#/definitions/custom-enablement-rules"}},"custom-enablement-rules":{"description":"Since 2024.2. Custom package manager dependencies, which would enable context according to the rules of custom provider.","type":"array","items":{"type":"string"}},"disablement-rules":{"description":"Specify rules for disabling web framework support. These rules take precedence over enable-when rules. They allow to turn off framework support in case of some conflicts between frameworks priority.","type":"object","properties":{"file-extensions":{"description":"Extensions of files, which should have the framework support disabled","type":"array","items":{"type":"string"}},"file-name-patterns":{"description":"RegExp patterns to match file names, which should have the framework support disabled","type":"array","items":{"$ref":"#/definitions/pattern"}}},"additionalProperties":false},"name-conversion-rules-single":{"type":"object","patternProperties":{"^/[^/\\n\\r]+/[^/\\n\\r]+$":{"$ref":"#/definitions/name-converter"}},"additionalProperties":false},"name-conversion-rules-multiple":{"type":"object","patternProperties":{"^/[^/\\n\\r]+/[^/\\n\\r]+$":{"$ref":"#/definitions/name-converters"}},"additionalProperties":false},"name-converters":{"type":"array","items":{"$ref":"#/definitions/name-converter"}},"name-converter":{"type":"string","enum":["as-is","PascalCase","camelCase","lowercase","UPPERCASE","kebab-case","snake_case"]},"icon":{"description":"Relative path to the icon representing the symbol or actual SVG of the icon.","type":"string"},"base-contribution":{"type":"object","description":"The base for any contributions.","javaAbstract":true,"javaInterfaces":["GenericContributionsHost"],"properties":{"name":{"$ref":"#/definitions/name"},"description":{"$ref":"#/definitions/description"},"description-sections":{"$ref":"#/definitions/description-sections"},"required-context":{"description":"Since 2024.2. Specify contexts, which are required to enable this contribution.","$ref":"#/definitions/required-context"},"doc-url":{"$ref":"#/definitions/doc-url"},"icon":{"$ref":"#/definitions/icon"},"source":{"$ref":"#/definitions/source"},"since":{"$ref":"#/definitions/since"},"deprecated":{"$ref":"#/definitions/deprecated"},"deprecated-since":{"$ref":"#/definitions/deprecated-since"},"obsolete":{"$ref":"#/definitions/obsolete"},"obsolete-since":{"$ref":"#/definitions/obsolete-since"},"experimental":{"$ref":"#/definitions/experimental"},"priority":{"$ref":"#/definitions/priority"},"proximity":{"$ref":"#/definitions/proximity"},"virtual":{"$ref":"#/definitions/virtual"},"abstract":{"$ref":"#/definitions/abstract"},"extension":{"$ref":"#/definitions/extension"},"extends":{"$ref":"#/definitions/extends"},"pattern":{"$ref":"#/definitions/name-pattern-root"},"html":{"$ref":"#/definitions/html"},"css":{"$ref":"#/definitions/css"},"js":{"$ref":"#/definitions/js"},"exclusive-contributions":{"$ref":"#/definitions/exclusive-contributions"}}},"typed-contribution":{"type":"object","description":"The base for any contribution, which can possibly have a JS type.","javaAbstract":true,"allOf":[{"$ref":"#/definitions/base-contribution"}],"properties":{"type":{"$ref":"#/definitions/type-list"}}},"generic-contribution":{"type":"object","description":"A generic contribution. All contributions are of this type, except for HTML attributes and elements, as well as predefined CSS contribution kinds.","javaAbstract":true,"allOf":[{"$ref":"#/definitions/typed-contribution"}],"properties":{"default":{"$ref":"#/definitions/default"},"required":{"$ref":"#/definitions/required"},"attribute-value":{"$ref":"#/definitions/html-attribute-value"}}},"type-list":{"description":"Specify type according to selected language for type syntax. The type can be specified by a string expression, an object with list of imports and an expression, or an array of possible types.","oneOf":[{"$ref":"#/definitions/type"},{"type":"array","items":{"$ref":"#/definitions/type"}}]},"type":{"oneOf":[{"$ref":"#/definitions/type-reference"},{"type":"string"}]},"type-reference":{"type":"object","properties":{"module":{"description":"Name of module, which exports the type. May be omitted, in which case it's assumed to be the name of the library.","type":"string"},"name":{"description":"Name of the symbol to import","type":"string"}},"required":["name"],"additionalProperties":false},"html-value-type":{"oneOf":[{"type":"string","description":"Provide one of special attribute value types:  \"enum\", \"symbol\", \"of-match\", or a simple JavaScript type according to the specified type format."},{"$ref":"#/definitions/type-reference"},{"type":"array","items":{"$ref":"#/definitions/type"}}]},"source":{"description":"Allows to specify the source of the entity. For Vue.js component this may be for instance a class.","type":"object","oneOf":[{"type":"object","properties":{"file":{"description":"Path to the file, relative to the web-types JSON.","type":"string"},"offset":{"description":"Offset in the file under which the source symbol, like class name, is located.","type":"integer"}},"required":["file","offset"],"additionalProperties":false},{"type":"object","properties":{"module":{"description":"Name of module, which exports the symbol. May be omitted, in which case it's assumed to be the name of the library.","type":"string"},"symbol":{"description":"Name of the exported symbol.","type":"string"}},"required":["symbol"],"additionalProperties":false}]},"name":{"type":"string"},"description":{"description":"Short description to be rendered in documentation popup. It will be rendered according to description-markup setting.","type":"string"},"description-sections":{"description":"Custom sections to be shown below description in the documentation popup.","type":"object","additionalProperties":{"type":"string"}},"doc-url":{"description":"Link to online documentation.","type":"string"},"virtual":{"description":"Mark contribution as virtual. Virtual contributions can be filtered out if needed in references. A virtual contribution meaning may differ by framework or kind contexts, but usually means something synthetic or something, which gets erased in the runtime by the framework. E.g. Vue or Angular attribute bindings are virtual. ","type":"boolean"},"abstract":{"description":"Mark contribution as abstract. Such contributions serve only as super contributions for other contributions.","type":"boolean"},"extension":{"description":"Mark contribution as an extension. Such contributions do not define a new contribution on their own, but can provide additional properties or contributions to existing contributions.","type":"boolean"},"priority":{"type":"string","enum":["lowest","low","normal","high","highest"]},"proximity":{"type":"integer"},"name-pattern-root":{"oneOf":[{"$ref":"#/definitions/name-pattern"},{"type":"string"}]},"exclusive-contributions":{"description":"Specify list of contribution kinds qualified with a namespace, for which during reference resolution this will be the final contribution host. E.g. if a special HTML element does not accept standard attributes, add:\n\"exclusive-contributions\": [\"/html/attributes\"].","type":"array","items":{"type":"string","pattern":"/[^/\\n\\r]+/[^/\\n\\r]+"}},"name-pattern":{"type":"object","oneOf":[{"type":"object","properties":{"required":{"$ref":"#/definitions/required"},"unique":{"type":"boolean"},"repeat":{"type":"boolean"},"template":{"$ref":"#/definitions/name-pattern-template"},"or":{"$ref":"#/definitions/name-pattern-template"},"delegate":{"$ref":"#/definitions/reference"},"deprecated":{"$ref":"#/definitions/deprecated"},"priority":{"$ref":"#/definitions/priority"},"proximity":{"$ref":"#/definitions/proximity"},"items":{"$ref":"#/definitions/list-reference"}},"additionalProperties":false},{"type":"object","properties":{"regex":{"type":"string"},"case-sensitive":{"type":"boolean","default":true}},"required":["regex"],"additionalProperties":false}]},"name-pattern-template":{"type":"array","minItems":1,"items":{"oneOf":[{"type":"string"},{"$ref":"#/definitions/name-pattern-template"},{"$ref":"#/definitions/name-pattern"}]}},"list-reference":{"description":"A reference to an element in Web-Types model.","oneOf":[{"$ref":"#/definitions/reference"},{"type":"array","items":{"$ref":"#/definitions/reference"}}]},"reference":{"description":"A reference to an element in Web-Types model.","oneOf":[{"$ref":"#/definitions/reference-with-props"},{"type":"string"}]},"reference-with-props":{"type":"object","properties":{"path":{"type":"string"},"includeVirtual":{"type":"boolean","default":true},"includeAbstract":{"type":"boolean"},"filter":{"type":"string"},"name-conversion":{"description":"Override global name conversion rules for matching symbols under the path.","$ref":"#/definitions/reference-name-conversion"}},"required":["path"]},"reference-name-conversion":{"description":"Override global name conversion rules for matching symbols under the path.","type":"object","properties":{"canonical-names":{"description":"Override global canonical name conversion rule against which comparisons are made for the referenced symbols. When only rule name is specified, it applies to the symbols of the same kind as the last segment of the referenced path. Otherwise format of the property names is '{namespace}/{symbol kind}'. Supported by JetBrains IDEs since 2022.1.","oneOf":[{"$ref":"#/definitions/name-converter"},{"$ref":"#/definitions/name-conversion-rules-single"}]},"match-names":{"description":"Override global rules, by which referenced symbols should be matched against their canonical names. When only rule names are specified, they applies to the symbols of the same kind as the last segment of the referenced path. Otherwise format of the property names is '{namespace}/{symbol kind}'. Supported by JetBrains IDEs since 2022.1.","oneOf":[{"$ref":"#/definitions/name-converters"},{"$ref":"#/definitions/name-conversion-rules-multiple"}]},"name-variants":{"description":"Override global rules, by which referenced symbol names should be proposed in auto completion. When only rule names are specified, they applies to the symbols of the same kind as the last segment of the referenced path. Otherwise format of the property names is '{namespace}/{symbol kind}'. Supported by JetBrains IDEs since 2022.1.","oneOf":[{"$ref":"#/definitions/name-converters"},{"$ref":"#/definitions/name-conversion-rules-multiple"}]}}},"extends":{"$ref":"#/definitions/reference"},"default":{"type":"string"},"required":{"type":"boolean"},"since":{"description":"Version since this symbol is available.","type":"string"},"deprecated":{"description":"Specifies whether the symbol is deprecated. Deprecated symbol usage is discouraged, but still supported. Value can be a boolean or a string message with explanation and migration information.","type":["boolean","string"],"default":false},"deprecated-since":{"description":"Version in which this symbol was first deprecated.","type":"string"},"obsolete":{"description":"Specifies whether the symbol is obsolete. Obsolete symbols are no longer supported. Value can be a boolean or a string message with explanation and migration information.","type":["boolean","string"],"default":false},"obsolete-since":{"description":"Version in which this symbol was first made obsolete.","type":"string"},"experimental":{"description":"Specifies whether the symbol is experimental. Value can be a boolean or a string message with explanation. Experimental symbols should be used with caution as the API might change.","type":["boolean","string"],"default":false},"pattern":{"description":"A RegEx pattern to match whole content. Syntax should work with at least ECMA, Java and Python implementations.","oneOf":[{"type":"string"},{"type":"object","properties":{"regex":{"type":"string"},"case-sensitive":{"type":"boolean","default":true}}}]},"html-contributions-host":{"type":"object","javaInterfaces":["GenericContributionsHost"],"javaInterface":true,"properties":{"elements":{"description":"HTML elements.","type":"array","items":{"$ref":"#/definitions/html-element"}},"attributes":{"description":"HTML attributes.","type":"array","items":{"$ref":"#/definitions/html-attribute"}},"events":{"type":"array","items":{"$ref":"#/definitions/generic-html-contribution"},"description":"DOM events are deprecated in HTML namespace. Contribute events to JS namespace: /js/events","deprecationMessage":"Contribute events to JS namespace: /js/events"}},"patternProperties":{"^(?!pattern$).*$":{"$ref":"#/definitions/generic-html-contributions"}}},"generic-html-contributions":{"javaLenientDeserialize":true,"oneOf":[{"$ref":"#/definitions/generic-html-contribution-or-property"},{"type":"array","items":{"$ref":"#/definitions/generic-html-contribution-or-property"}}]},"generic-html-contribution-or-property":{"javaInterfaces":["GenericContributionOrProperty"],"oneOf":[{"$ref":"#/definitions/generic-html-contribution"},{"type":"string"},{"type":"number"},{"type":"boolean"}]},"generic-html-contribution":{"type":"object","allOf":[{"$ref":"#/definitions/generic-contribution"},{"$ref":"#/definitions/html-contributions-host"}]},"html":{"type":"object","description":"Contains contributions to HTML namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are 2 predefined kinds, which integrate directly with IDE - HTML elements and HTML attributes. There are also 2 deprecated kinds: tags (which is equivalent to 'elements') and 'events' (which was moved to JS namespace)","allOf":[{"$ref":"#/definitions/html-contributions-host"}],"properties":{"types-syntax":{"$ref":"#/definitions/deprecated-types-syntax"},"description-markup":{"$ref":"#/definitions/deprecated-description-markup"},"tags":{"type":"array","description":"Deprecated, use `elements` property.","deprecationMessage":"Use `elements` property.","items":{"$ref":"#/definitions/html-element"}}}},"html-element":{"type":"object","allOf":[{"$ref":"#/definitions/base-contribution"},{"$ref":"#/definitions/html-contributions-host"}]},"html-attribute":{"type":"object","allOf":[{"$ref":"#/definitions/base-contribution"},{"$ref":"#/definitions/html-contributions-host"}],"properties":{"value":{"$ref":"#/definitions/html-attribute-value"},"default":{"type":"string"},"required":{"$ref":"#/definitions/required"},"vue-argument":{"$ref":"#/definitions/deprecated-html-attribute-vue-argument"},"vue-modifiers":{"description":"Deprecated vue-specific property - contribute Vue directives to /contributions/html/vue-directives","deprecationMessage":"Contribute Vue directives to /contributions/html/vue-directives","type":"array","items":{"$ref":"#/definitions/deprecated-html-attribute-vue-modifier"}}}},"html-attribute-value":{"type":"object","properties":{"kind":{"type":"string","enum":["no-value","plain","expression"]},"type":{"$ref":"#/definitions/html-value-type"},"required":{"type":"boolean"},"default":{"type":"string"}},"additionalProperties":false},"css-contributions-host":{"type":"object","javaInterfaces":["GenericContributionsHost"],"javaInterface":true,"properties":{"properties":{"type":"array","description":"CSS properties","items":{"$ref":"#/definitions/css-property"}},"pseudo-elements":{"description":"CSS pseudo-elements","type":"array","items":{"$ref":"#/definitions/css-pseudo-element"}},"pseudo-classes":{"description":"CSS pseudo-classes","type":"array","items":{"$ref":"#/definitions/css-pseudo-class"}},"functions":{"description":"CSS functions","type":"array","items":{"$ref":"#/definitions/css-generic-item"}},"classes":{"description":"CSS classes","type":"array","items":{"$ref":"#/definitions/css-generic-item"}},"parts":{"description":"CSS parts","type":"array","items":{"$ref":"#/definitions/css-generic-item"}}},"patternProperties":{"^(?!pattern$).*$":{"$ref":"#/definitions/generic-css-contributions"}}},"generic-css-contributions":{"javaLenientDeserialize":true,"oneOf":[{"$ref":"#/definitions/generic-css-contribution-or-property"},{"type":"array","items":{"$ref":"#/definitions/generic-css-contribution-or-property"}}]},"generic-css-contribution-or-property":{"javaInterfaces":["GenericContributionOrProperty"],"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"$ref":"#/definitions/generic-css-contribution"}]},"generic-css-contribution":{"type":"object","allOf":[{"$ref":"#/definitions/generic-contribution"},{"$ref":"#/definitions/css-contributions-host"}]},"css":{"type":"object","description":"Contains contributions to CSS namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are predefined kinds, which integrate directly with IDE - properties, classes, functions, pseudo-elements, pseudo-classes and parts.","allOf":[{"$ref":"#/definitions/css-contributions-host"}]},"css-property":{"type":"object","allOf":[{"$ref":"#/definitions/base-contribution"},{"$ref":"#/definitions/css-contributions-host"}],"properties":{"values":{"type":"array","items":{"type":"string"}}}},"css-generic-item":{"type":"object","allOf":[{"$ref":"#/definitions/base-contribution"},{"$ref":"#/definitions/css-contributions-host"}]},"css-pseudo-element":{"type":"object","allOf":[{"$ref":"#/definitions/base-contribution"},{"$ref":"#/definitions/css-contributions-host"}],"properties":{"arguments":{"type":"boolean","description":"Specify whether the pseudo-element requires arguments."}}},"css-pseudo-class":{"type":"object","allOf":[{"$ref":"#/definitions/base-contribution"},{"$ref":"#/definitions/css-contributions-host"}],"properties":{"arguments":{"type":"boolean","description":"Specify whether the pseudo-class requires arguments."}}},"js-contributions-host":{"type":"object","javaInterfaces":["GenericContributionsHost"],"javaInterface":true,"properties":{"events":{"type":"array","items":{"$ref":"#/definitions/generic-js-contribution"},"description":"DOM events"},"properties":{"type":"array","items":{"$ref":"#/definitions/js-property"},"description":"JavaScript properties of an object, HTML tag, framework component, etc."},"symbols":{"type":"array","items":{"$ref":"#/definitions/js-symbol"},"description":"Symbols available for JavaScript resolve. TypeScript resolve is not supported."}},"patternProperties":{"^(?!pattern$).*$":{"$ref":"#/definitions/generic-js-contributions"}}},"generic-js-contributions":{"javaLenientDeserialize":true,"oneOf":[{"$ref":"#/definitions/generic-js-contribution-or-property"},{"type":"array","items":{"$ref":"#/definitions/generic-js-contribution-or-property"}}]},"generic-js-contribution-or-property":{"javaInterfaces":["GenericContributionOrProperty"],"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"$ref":"#/definitions/generic-js-contribution"}]},"generic-js-contribution":{"type":"object","allOf":[{"$ref":"#/definitions/generic-contribution"},{"$ref":"#/definitions/js-contributions-host"}]},"js-global":{"type":"object","description":"Contains contributions to JS namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are 2 predefined kinds, which integrate directly with IDE - properties and events, but only events can be contributed globally.","properties":{"events":{"type":"array","items":{"$ref":"#/definitions/generic-js-contribution"},"description":"DOM events"},"symbols":{"type":"array","items":{"$ref":"#/definitions/js-symbol"},"description":"Globally available symbols for JavaScript resolve. TypeScript resolve is not supported. Please note that these symbols will override any normally available global JavaScript symbols."}},"patternProperties":{"^(?!pattern$).*$":{"$ref":"#/definitions/generic-js-contributions"}}},"js":{"type":"object","description":"Contains contributions to JS namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are 2 predefined kinds, which integrate directly with IDE - properties and events.","allOf":[{"$ref":"#/definitions/js-contributions-host"}]},"js-property":{"type":"object","allOf":[{"$ref":"#/definitions/generic-contribution"},{"$ref":"#/definitions/js-contributions-host"}],"properties":{"read-only":{"description":"Specifies whether the property is read only.","type":"boolean"}}},"js-symbol":{"type":"object","allOf":[{"$ref":"#/definitions/typed-contribution"},{"$ref":"#/definitions/js-contributions-host"}],"properties":{"kind":{"description":"Kind of the symbol. Default is variable.","type":"string","enum":["Variable","Function","Namespace","Class","Interface","Enum","Alias","Module"]}}},"deprecated-types-syntax":{"oneOf":[{"$ref":"#/definitions/js-types-syntax"}],"description":"Deprecated, use top-level js-types-syntax property.","deprecationMessage":"Use top-level js-types-syntax property."},"deprecated-description-markup":{"description":"Deprecated, use top-level property.","deprecationMessage":"Use top-level property.","oneOf":[{"$ref":"#/definitions/description-markup"}]},"deprecated-html-attribute-vue-argument":{"type":"object","description":"Deprecated vue-specific property - contribute Vue directives to /contributions/html/vue-directives","deprecationMessage":"Contribute Vue directives to /contributions/html/vue-directives","properties":{"pattern":{"$ref":"#/definitions/name-pattern-root"},"description":{"$ref":"#/definitions/description"},"doc-url":{"$ref":"#/definitions/doc-url"},"required":{"description":"Whether directive requires an argument","type":"boolean","default":false}},"additionalProperties":false},"deprecated-html-attribute-vue-modifier":{"type":"object","properties":{"name":{"$ref":"#/definitions/name"},"pattern":{"$ref":"#/definitions/name-pattern-root"},"description":{"$ref":"#/definitions/description"},"doc-url":{"$ref":"#/definitions/doc-url"}},"required":["name"],"additionalProperties":false}}},"isInternal":false,"tokens":9401,"sizeBytes":42922},{"name":"datastar-attributes.web-types.json","path":"tools/intellij-plugin/src/main/resources/datastar-attributes.web-types.json","rawUrl":"https://raw.githubusercontent.com/starfederation/datastar/HEAD/tools/intellij-plugin/src/main/resources/datastar-attributes.web-types.json","title":"Datastar","category":"anthropic-skill","format":"json","content":"{\n  \"$schema\": \"../../../../schema.json\",\n  \"name\": \"Datastar\",\n  \"version\": \"1.0.0\",\n  \"js-types-syntax\": \"typescript\",\n  \"description-markup\": \"markdown\",\n  \"default-icon\": \"icon.png\",\n  \"contributions\": {\n    \"js\": {\n      \"datastar-bind-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        }\n      ],\n      \"datastar-class-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the class\"\n        }\n      ],\n      \"datastar-computed-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        }\n      ],\n      \"datastar-ignore-modifiers\": [\n        {\n          \"name\": \"self\",\n          \"description\": \"Only ignore the element itself, not its descendants\"\n        }\n      ],\n      \"datastar-indicator-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        }\n      ],\n      \"datastar-init-modifiers\": [\n        {\n          \"name\": \"delay\",\n          \"description\": \"Delay the event listener\"\n        },\n        {\n          \"name\": \"delay.1s\",\n          \"description\": \"Delay for 1 second\"\n        },\n        {\n          \"name\": \"viewtransition\",\n          \"description\": \"Wraps the expression in `document.startViewTransition()`\"\n        }\n      ],\n      \"datastar-json-signals-modifiers\": [\n        {\n          \"name\": \"terse\",\n          \"description\": \"Outputs a more compact JSON format\"\n        }\n      ],\n      \"datastar-on-modifiers\": [\n        {\n          \"name\": \"capture\",\n          \"description\": \"Use a capture event listener\"\n        },\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the event name\"\n        },\n        {\n          \"name\": \"debounce\",\n          \"description\": \"Debounce the event listener\"\n        },\n        {\n          \"name\": \"debounce.500ms\",\n          \"description\": \"Debounce for 1000 milliseconds\"\n        },\n        {\n          \"name\": \"debounce.1s\",\n          \"description\": \"Debounce for 1 second\"\n        },\n        {\n          \"name\": \"debounce.leading\",\n          \"description\": \"Debounce with leading edge\"\n        },\n        {\n          \"name\": \"debounce.notrailing\",\n          \"description\": \"Debounce without trailing edge\"\n        },\n        {\n          \"name\": \"once\",\n          \"description\": \"Only trigger the event listener once\"\n        },\n        {\n          \"name\": \"outside\",\n          \"description\": \"Triggers when the event is outside the element\"\n        },\n        {\n          \"name\": \"passive\",\n          \"description\": \"Do not call `preventDefault` on the event listener\"\n        },\n        {\n          \"name\": \"throttle\",\n          \"description\": \"Throttle the event listener\"\n        },\n        {\n          \"name\": \"throttle.500ms\",\n          \"description\": \"Throttle for 500 milliseconds\"\n        },\n        {\n          \"name\": \"throttle.1s\",\n          \"description\": \"Throttle for 1 second\"\n        },\n        {\n          \"name\": \"throttle.noleading\",\n          \"description\": \"Throttle without leading edge\"\n        },\n        {\n          \"name\": \"throttle.trailing\",\n          \"description\": \"Throttle without trailing edge\"\n        },\n        {\n          \"name\": \"viewtransition\",\n          \"description\": \"Wraps the expression in `document.startViewTransition()` when the View Transition API is available\"\n        },\n        {\n          \"name\": \"window\",\n          \"description\": \"Attaches the event listener to the `window` element\"\n        }\n      ],\n      \"datastar-on-intersect-modifiers\": [\n        {\n          \"name\": \"full\",\n          \"description\": \"Trigger when the full element is visible\"\n        },\n        {\n          \"name\": \"half\",\n          \"description\": \"Trigger when half of the element is visible\"\n        },\n        {\n          \"name\": \"once\",\n          \"description\": \"Only trigger the event once\"\n        },\n        {\n          \"name\": \"viewtransition\",\n          \"description\": \"Wraps the expression in `document.startViewTransition()`\"\n        }\n      ],\n      \"datastar-on-interval-modifiers\": [\n        {\n          \"name\": \"duration\",\n          \"description\": \"The interval duration\"\n        },\n        {\n          \"name\": \"duration.500ms\",\n          \"description\": \"Set an interval duration of 500 milliseconds\"\n        },\n        {\n          \"name\": \"viewtransition\",\n          \"description\": \"Wraps the expression in `document.startViewTransition()`\"\n        }\n      ],\n      \"datastar-on-timing-modifiers\": [\n        {\n          \"name\": \"debounce\",\n          \"description\": \"Debounce the event listener\"\n        },\n        {\n          \"name\": \"debounce.500ms\",\n          \"description\": \"Debounce for 1000 milliseconds\"\n        },\n        {\n          \"name\": \"debounce.1s\",\n          \"description\": \"Debounce for 1 second\"\n        },\n        {\n          \"name\": \"debounce.leading\",\n          \"description\": \"Debounce with leading edge\"\n        },\n        {\n          \"name\": \"debounce.notrailing\",\n          \"description\": \"Debounce without trailing edge\"\n        },\n        {\n          \"name\": \"throttle\",\n          \"description\": \"Throttle the event listener\"\n        },\n        {\n          \"name\": \"throttle.500ms\",\n          \"description\": \"Throttle for 500 milliseconds\"\n        },\n        {\n          \"name\": \"throttle.1s\",\n          \"description\": \"Throttle for 1 second\"\n        },\n        {\n          \"name\": \"throttle.noleading\",\n          \"description\": \"Throttle without leading edge\"\n        },\n        {\n          \"name\": \"throttle.trailing\",\n          \"description\": \"Throttle without trailing edge\"\n        }\n      ],\n      \"datastar-persist-modifiers\": [\n        {\n          \"name\": \"session\",\n          \"description\": \"Persists signals values in Session Storage\"\n        }\n      ],\n      \"datastar-query-string-modifiers\": [\n        {\n          \"name\": \"filter\",\n          \"description\": \"Filters out empty values\"\n        },\n        {\n          \"name\": \"history\",\n          \"description\": \"Enables history support\"\n        }\n      ],\n      \"datastar-ref-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        }\n      ],\n      \"datastar-scroll-into-view-modifiers\": [\n        {\n          \"name\": \"auto\",\n          \"description\": \"Scrolling is determined by the computed scroll-behavior CSS property\"\n        },\n        {\n          \"name\": \"instant\",\n          \"description\": \"Scrolling should be instant\"\n        },\n        {\n          \"name\": \"focus\",\n          \"description\": \"Focus the element after scrolling\"\n        },\n        {\n          \"name\": \"hcenter\",\n          \"description\": \"Scroll to the horizontal center of the element\"\n        },\n        {\n          \"name\": \"hend\",\n          \"description\": \"Scroll to the right of the element\"\n        },\n        {\n          \"name\": \"hnearest\",\n          \"description\": \"Scroll to the nearest horizontal edge of the element\"\n        },\n        {\n          \"name\": \"hstart\",\n          \"description\": \"Scroll to the left of the element\"\n        },\n        {\n          \"name\": \"smooth\",\n          \"description\": \"Scrolling should be animate smoothly\"\n        },\n        {\n          \"name\": \"vstart\",\n          \"description\": \"Scroll to the top of the element\"\n        },\n        {\n          \"name\": \"vcenter\",\n          \"description\": \"Scroll to the vertical center of the element\"\n        },\n        {\n          \"name\": \"vend\",\n          \"description\": \"Scroll to the bottom of the element\"\n        },\n        {\n          \"name\": \"vnearest\",\n          \"description\": \"Scroll to the nearest vertical edge of the element\"\n        }\n      ],\n      \"datastar-signals-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        },\n        {\n          \"name\": \"ifmissing\",\n          \"description\": \"Only set the signals if the key does not exist. This is useful for setting defaults without overwriting existing values\"\n        }\n      ]\n    },\n    \"html\": {\n      \"attributes\": [\n        {\n          \"name\": \"data-attr:*\",\n          \"virtual\": true,\n          \"description\": \"Sets an element’s attribute value based on an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-attr\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"items\": [\n                  {\n                    \"path\": \"/html/attributes\",\n                    \"includeVirtual\": false\n                  }\n                ],\n                \"template\": [\n                  \"data-attr:\",\n                  \"$...\",\n                  \"#item:event name\"\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-attr\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-bind:*\",\n          \"virtual\": true,\n          \"description\": \"Creates a new signal and enables two-way binding between it and the element.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-bind\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-bind:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-bind-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\",\n                \"required\": false\n              },\n              {\n                \"template\": [\n                  \"data-bind\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-class:*\",\n          \"virtual\": true,\n          \"description\": \"Adds or removes classes from an element based on an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-class\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-class:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-class-modifiers\",\n                    \"template\": [\n                      \"data-class:\",\n                      \"$...\",\n                      \"#item:event name\"\n                    ],\n                    \"priority\": \"normal\"\n                  }\n                ]\n              },\n              {\n                \"template\": [\n                  \"data-class\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-computed:*\",\n          \"virtual\": true,\n          \"description\": \"Creates a signal that is computed based on an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-computed\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-computed:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-computed-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-computed\",\n                  {\n                    \"items\": \"/js/datastar-computed-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-custom-validity\",\n          \"virtual\": true,\n          \"description\": \"Adds custom validity to an element using an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-custom-validity\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-custom-validity\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-effect\",\n          \"virtual\": true,\n          \"description\": \"Executes an expression on page load and whenever any signals in the expression change.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-effect\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-effect\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-ignore\",\n          \"virtual\": true,\n          \"description\": \"Ignores an element and its descendants from being processed.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-ignore\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-ignore\",\n              {\n                \"items\": \"/js/datastar-ignore-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-ignore-morph\",\n          \"virtual\": true,\n          \"description\": \"Ignores an element when patching an element using the `morph` mode.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-ignore-morph\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-ignore-morph\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-indicator:*\",\n          \"virtual\": true,\n          \"description\": \"Creates a signal to track in-flight backend requests.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-indicator\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-indicator:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-indicator-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-indicator\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-init\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression whenever the element is initialised.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-init\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-init\",\n              {\n                \"items\": \"/js/datastar-init-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-json-signals\",\n          \"virtual\": true,\n          \"description\": \"Sets the text content of an element to a reactive JSON stringified version of signals.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-json-signals\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-json-signals\",\n              {\n                \"items\": \"/js/datastar-json-signals-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on:*\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression whenever an event is triggered on an element.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"items\": \"/js/events\",\n                \"template\": [\n                  \"data-on:\",\n                  \"$...\",\n                  \"#item:event name\",\n                  {\n                    \"items\": \"/js/datastar-on-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-on-intersect\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression on intersection with the viewport.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-intersect\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-intersect\",\n              {\n                \"items\": \"/js/datastar-on-intersect-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-interval\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression at a regular interval.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-interval\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-interval\",\n              {\n                \"items\": \"/js/datastar-on-interval-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-raf\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression on every `requestAnimationFrame` event.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-raf\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-raf\",\n              {\n                \"items\": \"/js/datastar-on-timing-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-resize\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression whenever an element’s dimensions change.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-resize\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-resize\",\n              {\n                \"items\": \"/js/datastar-on-timing-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-signal-patch\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression whenever one or more signals are patched.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-signal-patch\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-signal-patch\",\n              {\n                \"items\": \"/js/datastar-on-timing-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-signal-patch-filter\",\n          \"virtual\": true,\n          \"description\": \"Filters which signals to watch when using the `data-on-signal-patch` attribute.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-signal-patch-filter\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-signal-patch-filter\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-persist:*\",\n          \"virtual\": true,\n          \"description\": \"Persists all signals in local storage.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-persist\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-persist:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-persist\",\n                  {\n                    \"items\": \"/js/datastar-persist-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-preserve-attr\",\n          \"virtual\": true,\n          \"description\": \"Preserves the value of an attribute when patching elements using the `morph` mode.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-preserve-attr\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-preserve-attr\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-query-string\",\n          \"virtual\": true,\n          \"description\": \"Syncs query string params to signal values on page load, and syncs signal values to query string params on change.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-query-string\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-query-string\",\n              {\n                \"items\": \"/js/datastar-query-string-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-ref:*\",\n          \"virtual\": true,\n          \"description\": \"Creates a signal whose value references an element.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-ref\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-ref:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-ref-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-ref\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-replace-url\",\n          \"virtual\": true,\n          \"description\": \"Replaces the URL in the browser with an evaluated expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-replace-url\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-replace-url\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-scroll-into-view\",\n          \"virtual\": true,\n          \"description\": \"Scrolls the element into view.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-scroll-into-view\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-scroll-into-view\",\n              {\n                \"items\": \"/js/datastar-scroll-into-view-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-show\",\n          \"virtual\": true,\n          \"description\": \"Shows or hides an element based on whether an expression evaluates to `true` or `false`.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-show\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"boolean\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-show\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-signals:*\",\n          \"virtual\": true,\n          \"description\": \"Merges a signal into the existing signals.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-signals\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-signals:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-signals-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-signals\",\n                  {\n                    \"items\": \"/js/datastar-signals-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-style:*\",\n          \"virtual\": true,\n          \"description\": \"Adds or removes inline CSS styles from an element based on an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-style\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-style:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-style\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-text\",\n          \"virtual\": true,\n          \"description\": \"Sets the text content of an element to the evaluated expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-text\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-text\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-view-transition\",\n          \"virtual\": true,\n          \"description\": \"Sets the value of `view-transition-name` for use with the View Transition API.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-view-transition\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-view-transition\"\n            ],\n            \"priority\": \"normal\"\n          }\n        }\n      ]\n    }\n  }\n}","frontmatter":{"$schema":"../../../../schema.json","name":"Datastar","version":"1.0.0","js-types-syntax":"typescript","description-markup":"markdown","default-icon":"icon.png","contributions":{"js":{"datastar-bind-modifiers":[{"name":"case","description":"Modify the casing of the signal name"}],"datastar-class-modifiers":[{"name":"case","description":"Modify the casing of the class"}],"datastar-computed-modifiers":[{"name":"case","description":"Modify the casing of the signal name"}],"datastar-ignore-modifiers":[{"name":"self","description":"Only ignore the element itself, not its descendants"}],"datastar-indicator-modifiers":[{"name":"case","description":"Modify the casing of the signal name"}],"datastar-init-modifiers":[{"name":"delay","description":"Delay the event listener"},{"name":"delay.1s","description":"Delay for 1 second"},{"name":"viewtransition","description":"Wraps the expression in `document.startViewTransition()`"}],"datastar-json-signals-modifiers":[{"name":"terse","description":"Outputs a more compact JSON format"}],"datastar-on-modifiers":[{"name":"capture","description":"Use a capture event listener"},{"name":"case","description":"Modify the casing of the event name"},{"name":"debounce","description":"Debounce the event listener"},{"name":"debounce.500ms","description":"Debounce for 1000 milliseconds"},{"name":"debounce.1s","description":"Debounce for 1 second"},{"name":"debounce.leading","description":"Debounce with leading edge"},{"name":"debounce.notrailing","description":"Debounce without trailing edge"},{"name":"once","description":"Only trigger the event listener once"},{"name":"outside","description":"Triggers when the event is outside the element"},{"name":"passive","description":"Do not call `preventDefault` on the event listener"},{"name":"throttle","description":"Throttle the event listener"},{"name":"throttle.500ms","description":"Throttle for 500 milliseconds"},{"name":"throttle.1s","description":"Throttle for 1 second"},{"name":"throttle.noleading","description":"Throttle without leading edge"},{"name":"throttle.trailing","description":"Throttle without trailing edge"},{"name":"viewtransition","description":"Wraps the expression in `document.startViewTransition()` when the View Transition API is available"},{"name":"window","description":"Attaches the event listener to the `window` element"}],"datastar-on-intersect-modifiers":[{"name":"full","description":"Trigger when the full element is visible"},{"name":"half","description":"Trigger when half of the element is visible"},{"name":"once","description":"Only trigger the event once"},{"name":"viewtransition","description":"Wraps the expression in `document.startViewTransition()`"}],"datastar-on-interval-modifiers":[{"name":"duration","description":"The interval duration"},{"name":"duration.500ms","description":"Set an interval duration of 500 milliseconds"},{"name":"viewtransition","description":"Wraps the expression in `document.startViewTransition()`"}],"datastar-on-timing-modifiers":[{"name":"debounce","description":"Debounce the event listener"},{"name":"debounce.500ms","description":"Debounce for 1000 milliseconds"},{"name":"debounce.1s","description":"Debounce for 1 second"},{"name":"debounce.leading","description":"Debounce with leading edge"},{"name":"debounce.notrailing","description":"Debounce without trailing edge"},{"name":"throttle","description":"Throttle the event listener"},{"name":"throttle.500ms","description":"Throttle for 500 milliseconds"},{"name":"throttle.1s","description":"Throttle for 1 second"},{"name":"throttle.noleading","description":"Throttle without leading edge"},{"name":"throttle.trailing","description":"Throttle without trailing edge"}],"datastar-persist-modifiers":[{"name":"session","description":"Persists signals values in Session Storage"}],"datastar-query-string-modifiers":[{"name":"filter","description":"Filters out empty values"},{"name":"history","description":"Enables history support"}],"datastar-ref-modifiers":[{"name":"case","description":"Modify the casing of the signal name"}],"datastar-scroll-into-view-modifiers":[{"name":"auto","description":"Scrolling is determined by the computed scroll-behavior CSS property"},{"name":"instant","description":"Scrolling should be instant"},{"name":"focus","description":"Focus the element after scrolling"},{"name":"hcenter","description":"Scroll to the horizontal center of the element"},{"name":"hend","description":"Scroll to the right of the element"},{"name":"hnearest","description":"Scroll to the nearest horizontal edge of the element"},{"name":"hstart","description":"Scroll to the left of the element"},{"name":"smooth","description":"Scrolling should be animate smoothly"},{"name":"vstart","description":"Scroll to the top of the element"},{"name":"vcenter","description":"Scroll to the vertical center of the element"},{"name":"vend","description":"Scroll to the bottom of the element"},{"name":"vnearest","description":"Scroll to the nearest vertical edge of the element"}],"datastar-signals-modifiers":[{"name":"case","description":"Modify the casing of the signal name"},{"name":"ifmissing","description":"Only set the signals if the key does not exist. This is useful for setting defaults without overwriting existing values"}]},"html":{"attributes":[{"name":"data-attr:*","virtual":true,"description":"Sets an element’s attribute value based on an expression.","doc-url":"https://data-star.dev/reference/attributes#data-attr","value":{"kind":"expression","type":["string","object"],"required":true},"pattern":{"or":[{"items":[{"path":"/html/attributes","includeVirtual":false}],"template":["data-attr:","$...","#item:event name"],"priority":"normal"},{"template":["data-attr"],"priority":"normal"}]}},{"name":"data-bind:*","virtual":true,"description":"Creates a new signal and enables two-way binding between it and the element.","doc-url":"https://data-star.dev/reference/attributes#data-bind","value":{"kind":"expression","type":"string","required":true},"pattern":{"or":[{"template":["data-bind:",{"regex":"[-a-z0-9]+"},{"items":"/js/datastar-bind-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal","required":false},{"template":["data-bind"],"priority":"normal"}]}},{"name":"data-class:*","virtual":true,"description":"Adds or removes classes from an element based on an expression.","doc-url":"https://data-star.dev/reference/attributes#data-class","value":{"kind":"expression","type":["string","object"],"required":true},"pattern":{"or":[{"template":["data-class:",{"regex":"[-a-z0-9]+"},{"items":"/js/datastar-class-modifiers","template":["data-class:","$...","#item:event name"],"priority":"normal"}]},{"template":["data-class"],"priority":"normal"}]}},{"name":"data-computed:*","virtual":true,"description":"Creates a signal that is computed based on an expression.","doc-url":"https://data-star.dev/reference/attributes#data-computed","value":{"kind":"expression","type":["string","object"],"required":true},"pattern":{"or":[{"template":["data-computed:",{"regex":"[-a-z0-9]+"},{"items":"/js/datastar-computed-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"},{"template":["data-computed",{"items":"/js/datastar-computed-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"}]}},{"name":"data-custom-validity","virtual":true,"description":"Adds custom validity to an element using an expression.","doc-url":"https://data-star.dev/reference/attributes#data-custom-validity","value":{"kind":"expression","type":"string","required":true},"pattern":{"template":["data-custom-validity"],"priority":"normal"}},{"name":"data-effect","virtual":true,"description":"Executes an expression on page load and whenever any signals in the expression change.","doc-url":"https://data-star.dev/reference/attributes#data-effect","value":{"kind":"expression","type":"string","required":true},"pattern":{"template":["data-effect"],"priority":"normal"}},{"name":"data-ignore","virtual":true,"description":"Ignores an element and its descendants from being processed.","doc-url":"https://data-star.dev/reference/attributes#data-ignore","value":{"kind":"expression","type":"string","required":false},"pattern":{"template":["data-ignore",{"items":"/js/datastar-ignore-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"}},{"name":"data-ignore-morph","virtual":true,"description":"Ignores an element when patching an element using the `morph` mode.","doc-url":"https://data-star.dev/reference/attributes#data-ignore-morph","value":{"kind":"expression","type":"string","required":false},"pattern":{"template":["data-ignore-morph"],"priority":"normal"}},{"name":"data-indicator:*","virtual":true,"description":"Creates a signal to track in-flight backend requests.","doc-url":"https://data-star.dev/reference/attributes#data-indicator","value":{"kind":"expression","type":"string","required":true},"pattern":{"or":[{"template":["data-indicator:",{"regex":"[-a-z0-9]+"},{"items":"/js/datastar-indicator-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"},{"template":["data-indicator"],"priority":"normal"}]}},{"name":"data-init","virtual":true,"description":"Runs an expression whenever the element is initialised.","doc-url":"https://data-star.dev/reference/attributes#data-init","value":{"kind":"expression","type":"string","required":true},"pattern":{"template":["data-init",{"items":"/js/datastar-init-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"}},{"name":"data-json-signals","virtual":true,"description":"Sets the text content of an element to a reactive JSON stringified version of signals.","doc-url":"https://data-star.dev/reference/attributes#data-json-signals","value":{"kind":"expression","type":"string","required":false},"pattern":{"template":["data-json-signals",{"items":"/js/datastar-json-signals-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"}},{"name":"data-on:*","virtual":true,"description":"Runs an expression whenever an event is triggered on an element.","doc-url":"https://data-star.dev/reference/attributes#data-on","value":{"kind":"expression","type":"string","required":true},"pattern":{"or":[{"items":"/js/events","template":["data-on:","$...","#item:event name",{"items":"/js/datastar-on-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"}]}},{"name":"data-on-intersect","virtual":true,"description":"Runs an expression on intersection with the viewport.","doc-url":"https://data-star.dev/reference/attributes#data-on-intersect","value":{"kind":"expression","type":"string","required":true},"pattern":{"template":["data-on-intersect",{"items":"/js/datastar-on-intersect-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"}},{"name":"data-on-interval","virtual":true,"description":"Runs an expression at a regular interval.","doc-url":"https://data-star.dev/reference/attributes#data-on-interval","value":{"kind":"expression","type":"string","required":true},"pattern":{"template":["data-on-interval",{"items":"/js/datastar-on-interval-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"}},{"name":"data-on-raf","virtual":true,"description":"Runs an expression on every `requestAnimationFrame` event.","doc-url":"https://data-star.dev/reference/attributes#data-on-raf","value":{"kind":"expression","type":"string","required":true},"pattern":{"template":["data-on-raf",{"items":"/js/datastar-on-timing-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"}},{"name":"data-on-resize","virtual":true,"description":"Runs an expression whenever an element’s dimensions change.","doc-url":"https://data-star.dev/reference/attributes#data-on-resize","value":{"kind":"expression","type":"string","required":true},"pattern":{"template":["data-on-resize",{"items":"/js/datastar-on-timing-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"}},{"name":"data-on-signal-patch","virtual":true,"description":"Runs an expression whenever one or more signals are patched.","doc-url":"https://data-star.dev/reference/attributes#data-on-signal-patch","value":{"kind":"expression","type":"string","required":true},"pattern":{"template":["data-on-signal-patch",{"items":"/js/datastar-on-timing-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"}},{"name":"data-on-signal-patch-filter","virtual":true,"description":"Filters which signals to watch when using the `data-on-signal-patch` attribute.","doc-url":"https://data-star.dev/reference/attributes#data-on-signal-patch-filter","value":{"kind":"expression","type":"string","required":true},"pattern":{"template":["data-on-signal-patch-filter"],"priority":"normal"}},{"name":"data-persist:*","virtual":true,"description":"Persists all signals in local storage.","doc-url":"https://data-star.dev/reference/attributes#data-persist","value":{"kind":"expression","type":"string","required":false},"pattern":{"or":[{"template":["data-persist:",{"regex":"[-a-z0-9]+"}],"priority":"normal"},{"template":["data-persist",{"items":"/js/datastar-persist-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"}]}},{"name":"data-preserve-attr","virtual":true,"description":"Preserves the value of an attribute when patching elements using the `morph` mode.","doc-url":"https://data-star.dev/reference/attributes#data-preserve-attr","value":{"kind":"expression","type":"string","required":true},"pattern":{"template":["data-preserve-attr"],"priority":"normal"}},{"name":"data-query-string","virtual":true,"description":"Syncs query string params to signal values on page load, and syncs signal values to query string params on change.","doc-url":"https://data-star.dev/reference/attributes#data-query-string","value":{"kind":"expression","type":"string","required":false},"pattern":{"template":["data-query-string",{"items":"/js/datastar-query-string-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"}},{"name":"data-ref:*","virtual":true,"description":"Creates a signal whose value references an element.","doc-url":"https://data-star.dev/reference/attributes#data-ref","value":{"kind":"expression","type":"string","required":true},"pattern":{"or":[{"template":["data-ref:",{"regex":"[-a-z0-9]+"},{"items":"/js/datastar-ref-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"},{"template":["data-ref"],"priority":"normal"}]}},{"name":"data-replace-url","virtual":true,"description":"Replaces the URL in the browser with an evaluated expression.","doc-url":"https://data-star.dev/reference/attributes#data-replace-url","value":{"kind":"expression","type":"string","required":true},"pattern":{"template":["data-replace-url"],"priority":"normal"}},{"name":"data-scroll-into-view","virtual":true,"description":"Scrolls the element into view.","doc-url":"https://data-star.dev/reference/attributes#data-scroll-into-view","value":{"kind":"expression","type":"string","required":false},"pattern":{"template":["data-scroll-into-view",{"items":"/js/datastar-scroll-into-view-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"}},{"name":"data-show","virtual":true,"description":"Shows or hides an element based on whether an expression evaluates to `true` or `false`.","doc-url":"https://data-star.dev/reference/attributes#data-show","value":{"kind":"expression","type":"boolean","required":true},"pattern":{"template":["data-show"],"priority":"normal"}},{"name":"data-signals:*","virtual":true,"description":"Merges a signal into the existing signals.","doc-url":"https://data-star.dev/reference/attributes#data-signals","value":{"kind":"expression","type":["string","object"],"required":true},"pattern":{"or":[{"template":["data-signals:",{"regex":"[-a-z0-9]+"},{"items":"/js/datastar-signals-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"},{"template":["data-signals",{"items":"/js/datastar-signals-modifiers","template":["__","$...","#item:modifier"],"required":false,"repeat":true}],"priority":"normal"}]}},{"name":"data-style:*","virtual":true,"description":"Adds or removes inline CSS styles from an element based on an expression.","doc-url":"https://data-star.dev/reference/attributes#data-style","value":{"kind":"expression","type":["string","object"],"required":true},"pattern":{"or":[{"template":["data-style:",{"regex":"[-a-z0-9]+"}],"priority":"normal"},{"template":["data-style"],"priority":"normal"}]}},{"name":"data-text","virtual":true,"description":"Sets the text content of an element to the evaluated expression.","doc-url":"https://data-star.dev/reference/attributes#data-text","value":{"kind":"expression","type":"string","required":true},"pattern":{"template":["data-text"],"priority":"normal"}},{"name":"data-view-transition","virtual":true,"description":"Sets the value of `view-transition-name` for use with the View Transition API.","doc-url":"https://data-star.dev/reference/attributes#data-view-transition","value":{"kind":"expression","type":"string","required":true},"pattern":{"template":["data-view-transition"],"priority":"normal"}}]}}},"isInternal":false,"tokens":6560,"sizeBytes":33142},{"name":"LICENSE.md","path":"tools/vscode-extension/LICENSE.md","rawUrl":"https://raw.githubusercontent.com/starfederation/datastar/HEAD/tools/vscode-extension/LICENSE.md","title":"Vscode-extension Skill","category":"anthropic-skill","format":"markdown","content":"Copyright © Ben Croker\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","isInternal":false,"tokens":198,"sizeBytes":1048},{"name":"package-lock.json","path":"tools/vscode-extension/package-lock.json","rawUrl":"https://raw.githubusercontent.com/starfederation/datastar/HEAD/tools/vscode-extension/package-lock.json","title":"Vscode-extension Skill","category":"anthropic-skill","format":"json","content":"{\n  \"name\": \"datastar-vscode\",\n  \"version\": \"1.2.1\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"datastar-vscode\",\n      \"version\": \"1.2.1\",\n      \"license\": \"MIT\",\n      \"devDependencies\": {\n        \"@vscode/vsce\": \"^3.7.1\"\n      },\n      \"engines\": {\n        \"vscode\": \"^1.63.0\"\n      }\n    },\n    \"node_modules/@azu/format-text\": {\n      \"version\": \"1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz\",\n      \"integrity\": \"sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==\",\n      \"dev\": true,\n      \"license\": \"BSD-3-Clause\"\n    },\n    \"node_modules/@azu/style-format\": {\n      \"version\": \"1.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.1.tgz\",\n      \"integrity\": \"sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==\",\n      \"dev\": true,\n      \"license\": \"WTFPL\",\n      \"dependencies\": {\n        \"@azu/format-text\": \"^1.0.1\"\n      }\n    },\n    \"node_modules/@azure/abort-controller\": {\n      \"version\": \"2.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz\",\n      \"integrity\": \"sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=18.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-auth\": {\n      \"version\": \"1.10.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz\",\n      \"integrity\": \"sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.1.2\",\n        \"@azure/core-util\": \"^1.13.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-client\": {\n      \"version\": \"1.10.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.1.tgz\",\n      \"integrity\": \"sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.1.2\",\n        \"@azure/core-auth\": \"^1.10.0\",\n        \"@azure/core-rest-pipeline\": \"^1.22.0\",\n        \"@azure/core-tracing\": \"^1.3.0\",\n        \"@azure/core-util\": \"^1.13.0\",\n        \"@azure/logger\": \"^1.3.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-rest-pipeline\": {\n      \"version\": \"1.22.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.1.tgz\",\n      \"integrity\": \"sha512-UVZlVLfLyz6g3Hy7GNDpooMQonUygH7ghdiSASOOHy97fKj/mPLqgDX7aidOijn+sCMU+WU8NjlPlNTgnvbcGA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.1.2\",\n        \"@azure/core-auth\": \"^1.10.0\",\n        \"@azure/core-tracing\": \"^1.3.0\",\n        \"@azure/core-util\": \"^1.13.0\",\n        \"@azure/logger\": \"^1.3.0\",\n        \"@typespec/ts-http-runtime\": \"^0.3.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-tracing\": {\n      \"version\": \"1.3.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz\",\n      \"integrity\": \"sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-util\": {\n      \"version\": \"1.13.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz\",\n      \"integrity\": \"sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.1.2\",\n        \"@typespec/ts-http-runtime\": \"^0.3.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/identity\": {\n      \"version\": \"4.12.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/identity/-/identity-4.12.0.tgz\",\n      \"integrity\": \"sha512-6vuh2R3Cte6SD6azNalLCjIDoryGdcvDVEV7IDRPtm5lHX5ffkDlIalaoOp5YJU08e4ipjJENel20kSMDLAcug==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.0.0\",\n        \"@azure/core-auth\": \"^1.9.0\",\n        \"@azure/core-client\": \"^1.9.2\",\n        \"@azure/core-rest-pipeline\": \"^1.17.0\",\n        \"@azure/core-tracing\": \"^1.0.0\",\n        \"@azure/core-util\": \"^1.11.0\",\n        \"@azure/logger\": \"^1.0.0\",\n        \"@azure/msal-browser\": \"^4.2.0\",\n        \"@azure/msal-node\": \"^3.5.0\",\n        \"open\": \"^10.1.0\",\n        \"tslib\": \"^2.2.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/logger\": {\n      \"version\": \"1.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz\",\n      \"integrity\": \"sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@typespec/ts-http-runtime\": \"^0.3.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/msal-browser\": {\n      \"version\": \"4.24.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.24.0.tgz\",\n      \"integrity\": \"sha512-BNoiUEx4olj16U9ZiquvIhG1dZBnwWSzSXiSclq/9qiFQXYeLOKqEaEv98+xLXJ3oLw9APwHTR1eY2Qk0v6XBQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/msal-common\": \"15.13.0\"\n      },\n      \"engines\": {\n        \"node\": \">=0.8.0\"\n      }\n    },\n    \"node_modules/@azure/msal-common\": {\n      \"version\": \"15.13.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.13.0.tgz\",\n      \"integrity\": \"sha512-8oF6nj02qX7eE/6+wFT5NluXRHc05AgdCC3fJnkjiJooq8u7BcLmxaYYSwc2AfEkWRMRi6Eyvvbeqk4U4412Ag==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=0.8.0\"\n      }\n    },\n    \"node_modules/@azure/msal-node\": {\n      \"version\": \"3.8.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.0.tgz\",\n      \"integrity\": \"sha512-23BXm82Mp5XnRhrcd4mrHa0xuUNRp96ivu3nRatrfdAqjoeWAGyD0eEAafxAOHAEWWmdlyFK4ELFcdziXyw2sA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/msal-common\": \"15.13.0\",\n        \"jsonwebtoken\": \"^9.0.0\",\n        \"uuid\": \"^8.3.0\"\n      },\n      \"engines\": {\n        \"node\": \">=16\"\n      }\n    },\n    \"node_modules/@babel/code-frame\": {\n      \"version\": \"7.27.1\",\n      \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n      \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@babel/helper-validator-identifier\": \"^7.27.1\",\n        \"js-tokens\": \"^4.0.0\",\n        \"picocolors\": \"^1.1.1\"\n      },\n      \"engines\": {\n        \"node\": \">=6.9.0\"\n      }\n    },\n    \"node_modules/@babel/helper-validator-identifier\": {\n      \"version\": \"7.28.5\",\n      \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz\",\n      \"integrity\": \"sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=6.9.0\"\n      }\n    },\n    \"node_modules/@isaacs/balanced-match\": {\n      \"version\": \"4.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz\",\n      \"integrity\": \"sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \"20 || >=22\"\n      }\n    },\n    \"node_modules/@isaacs/brace-expansion\": {\n      \"version\": \"5.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz\",\n      \"integrity\": \"sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@isaacs/balanced-match\": \"^4.0.1\"\n      },\n      \"engines\": {\n        \"node\": \"20 || >=22\"\n      }\n    },\n    \"node_modules/@isaacs/cliui\": {\n      \"version\": \"8.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz\",\n      \"integrity\": \"sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==\",\n      \"dev\": true,\n      \"license\": \"ISC\",\n      \"dependencies\": {\n        \"string-width\": \"^5.1.2\",\n        \"string-width-cjs\": \"npm:string-width@^4.2.0\",\n        \"strip-ansi\": \"^7.0.1\",\n        \"strip-ansi-cjs\": \"npm:strip-ansi@^6.0.1\",\n        \"wrap-ansi\": \"^8.1.0\",\n        \"wrap-ansi-cjs\": \"npm:wrap-ansi@^7.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=12\"\n      }\n    },\n    \"node_modules/@isaacs/cliui/node_modules/emoji-regex\": {\n      \"version\": \"9.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz\",\n      \"integrity\": \"sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@isaacs/cliui/node_modules/string-width\": {\n      \"version\": \"5.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz\",\n      \"integrity\": \"sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"eastasianwidth\": \"^0.2.0\",\n        \"emoji-regex\": \"^9.2.2\",\n        \"strip-ansi\": \"^7.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=12\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/@nodelib/fs.scandir\": {\n      \"version\": \"2.1.5\",\n      \"resolved\": \"https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz\",\n      \"integrity\": \"sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@nodelib/fs.stat\": \"2.0.5\",\n        \"run-parallel\": \"^1.1.9\"\n      },\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/@nodelib/fs.stat\": {\n      \"version\": \"2.0.5\",\n      \"resolved\": \"https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz\",\n      \"integrity\": \"sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/@nodelib/fs.walk\": {\n      \"version\": \"1.2.8\",\n      \"resolved\": \"https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz\",\n      \"integrity\": \"sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@nodelib/fs.scandir\": \"2.1.5\",\n        \"fastq\": \"^1.6.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/@secretlint/config-creator\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-10.2.2.tgz\",\n      \"integrity\": \"sha512-BynOBe7Hn3LJjb3CqCHZjeNB09s/vgf0baBaHVw67w7gHF0d25c3ZsZ5+vv8TgwSchRdUCRrbbcq5i2B1fJ2QQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/types\": \"^10.2.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/config-loader\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-10.2.2.tgz\",\n      \"integrity\": \"sha512-ndjjQNgLg4DIcMJp4iaRD6xb9ijWQZVbd9694Ol2IszBIbGPPkwZHzJYKICbTBmh6AH/pLr0CiCaWdGJU7RbpQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/profiler\": \"^10.2.2\",\n        \"@secretlint/resolver\": \"^10.2.2\",\n        \"@secretlint/types\": \"^10.2.2\",\n        \"ajv\": \"^8.17.1\",\n        \"debug\": \"^4.4.1\",\n        \"rc-config-loader\": \"^4.1.3\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/core\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/core/-/core-10.2.2.tgz\",\n      \"integrity\": \"sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/profiler\": \"^10.2.2\",\n        \"@secretlint/types\": \"^10.2.2\",\n        \"debug\": \"^4.4.1\",\n        \"structured-source\": \"^4.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/formatter\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/formatter/-/formatter-10.2.2.tgz\",\n      \"integrity\": \"sha512-10f/eKV+8YdGKNQmoDUD1QnYL7TzhI2kzyx95vsJKbEa8akzLAR5ZrWIZ3LbcMmBLzxlSQMMccRmi05yDQ5YDA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/resolver\": \"^10.2.2\",\n        \"@secretlint/types\": \"^10.2.2\",\n        \"@textlint/linter-formatter\": \"^15.2.0\",\n        \"@textlint/module-interop\": \"^15.2.0\",\n        \"@textlint/types\": \"^15.2.0\",\n        \"chalk\": \"^5.4.1\",\n        \"debug\": \"^4.4.1\",\n        \"pluralize\": \"^8.0.0\",\n        \"strip-ansi\": \"^7.1.0\",\n        \"table\": \"^6.9.0\",\n        \"terminal-link\": \"^4.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/formatter/node_modules/chalk\": {\n      \"version\": \"5.6.2\",\n      \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz\",\n      \"integrity\": \"sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \"^12.17.0 || ^14.13 || >=16.0.0\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n      }\n    },\n    \"node_modules/@secretlint/node\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/node/-/node-10.2.2.tgz\",\n      \"integrity\": \"sha512-eZGJQgcg/3WRBwX1bRnss7RmHHK/YlP/l7zOQsrjexYt6l+JJa5YhUmHbuGXS94yW0++3YkEJp0kQGYhiw1DMQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/config-loader\": \"^10.2.2\",\n        \"@secretlint/core\": \"^10.2.2\",\n        \"@secretlint/formatter\": \"^10.2.2\",\n        \"@secretlint/profiler\": \"^10.2.2\",\n        \"@secretlint/source-creator\": \"^10.2.2\",\n        \"@secretlint/types\": \"^10.2.2\",\n        \"debug\": \"^4.4.1\",\n        \"p-map\": \"^7.0.3\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/profiler\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/profiler/-/profiler-10.2.2.tgz\",\n      \"integrity\": \"sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@secretlint/resolver\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/resolver/-/resolver-10.2.2.tgz\",\n      \"integrity\": \"sha512-3md0cp12e+Ae5V+crPQYGd6aaO7ahw95s28OlULGyclyyUtf861UoRGS2prnUrKh7MZb23kdDOyGCYb9br5e4w==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@secretlint/secretlint-formatter-sarif\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-10.2.2.tgz\",\n      \"integrity\": \"sha512-ojiF9TGRKJJw308DnYBucHxkpNovDNu1XvPh7IfUp0A12gzTtxuWDqdpuVezL7/IP8Ua7mp5/VkDMN9OLp1doQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"node-sarif-builder\": \"^3.2.0\"\n      }\n    },\n    \"node_modules/@secretlint/secretlint-rule-no-dotenv\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-10.2.2.tgz\",\n      \"integrity\": \"sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/types\": \"^10.2.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/secretlint-rule-preset-recommend\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-10.2.2.tgz\",\n      \"integrity\": \"sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/source-creator\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-10.2.2.tgz\",\n      \"integrity\": \"sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/types\": \"^10.2.2\",\n        \"istextorbinary\": \"^9.5.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/types\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/types/-/types-10.2.2.tgz\",\n      \"integrity\": \"sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@sindresorhus/merge-streams\": {\n      \"version\": \"2.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz\",\n      \"integrity\": \"sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/@textlint/ast-node-types\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.5.0.tgz\",\n      \"integrity\": \"sha512-K0LEuuTo4rza8yDrlYkRdXLao8Iz/QBMsQdIxRrOOrLYb4HAtZaypZ78c+J6rDA1UlGxadZVLmkkiv4KV5fMKQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@textlint/linter-formatter\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.5.0.tgz\",\n      \"integrity\": \"sha512-DPTm2+VXKID41qKQWagg/4JynM6hEEpvbq0PlGsEoC4Xm7IqXIxFym3mSf5+ued0cuiIV1hR9kgXjqGdP035tw==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azu/format-text\": \"^1.0.2\",\n        \"@azu/style-format\": \"^1.0.1\",\n        \"@textlint/module-interop\": \"15.5.0\",\n        \"@textlint/resolver\": \"15.5.0\",\n        \"@textlint/types\": \"15.5.0\",\n        \"chalk\": \"^4.1.2\",\n        \"debug\": \"^4.4.3\",\n        \"js-yaml\": \"^4.1.1\",\n        \"lodash\": \"^4.17.21\",\n        \"pluralize\": \"^2.0.0\",\n        \"string-width\": \"^4.2.3\",\n        \"strip-ansi\": \"^6.0.1\",\n        \"table\": \"^6.9.0\",\n        \"text-table\": \"^0.2.0\"\n      }\n    },\n    \"node_modules/@textlint/linter-formatter/node_modules/ansi-regex\": {\n      \"version\": \"5.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n      \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/@textlint/linter-formatter/node_modules/pluralize\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz\",\n      \"integrity\": \"sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@textlint/linter-formatter/node_modules/strip-ansi\": {\n      \"version\": \"6.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n      \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ansi-regex\": \"^5.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/@textlint/module-interop\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.5.0.tgz\",\n      \"integrity\": \"sha512-rqfouEhBEgZlR9umswWXXRBcmmSM28Trpr9b0duzgehKYVc7wSQCuQMagr6YBJa2NRMfRNinupusbJXMg0ij2A==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@textlint/resolver\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/resolver/-/resolver-15.5.0.tgz\",\n      \"integrity\": \"sha512-kK5nFbg5N3kVoZExQI/dnYjCInmTltvXDnuCRrBxHI01i6kO/o8R7Lc2aFkAZ6/NUZuRPalkyDdwZJke4/R2wg==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@textlint/types\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/types/-/types-15.5.0.tgz\",\n      \"integrity\": \"sha512-EjAPbuA+3NyQ9WyFP7iUlddi35F3mGrf4tb4cZM0nWywbtEJ3+XAYqL+5RsF0qFeSguxGir09NdZOWrG9wVOUQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@textlint/ast-node-types\": \"15.5.0\"\n      }\n    },\n    \"node_modules/@types/normalize-package-data\": {\n      \"version\": \"2.4.4\",\n      \"resolved\": \"https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz\",\n      \"integrity\": \"sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@types/sarif\": {\n      \"version\": \"2.1.7\",\n      \"resolved\": \"https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz\",\n      \"integrity\": \"sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@typespec/ts-http-runtime\": {\n      \"version\": \"0.3.1\",\n      \"resolved\": \"https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.1.tgz\",\n      \"integrity\": \"sha512-SnbaqayTVFEA6/tYumdF0UmybY0KHyKwGPBXnyckFlrrKdhWFrL3a2HIPXHjht5ZOElKGcXfD2D63P36btb+ww==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"http-proxy-agent\": \"^7.0.0\",\n        \"https-proxy-agent\": \"^7.0.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@vscode/vsce\": {\n      \"version\": \"3.7.1\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce/-/vsce-3.7.1.tgz\",\n      \"integrity\": \"sha512-OTm2XdMt2YkpSn2Nx7z2EJtSuhRHsTPYsSK59hr3v8jRArK+2UEoju4Jumn1CmpgoBLGI6ReHLJ/czYltNUW3g==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/identity\": \"^4.1.0\",\n        \"@secretlint/node\": \"^10.1.2\",\n        \"@secretlint/secretlint-formatter-sarif\": \"^10.1.2\",\n        \"@secretlint/secretlint-rule-no-dotenv\": \"^10.1.2\",\n        \"@secretlint/secretlint-rule-preset-recommend\": \"^10.1.2\",\n        \"@vscode/vsce-sign\": \"^2.0.0\",\n        \"azure-devops-node-api\": \"^12.5.0\",\n        \"chalk\": \"^4.1.2\",\n        \"cheerio\": \"^1.0.0-rc.9\",\n        \"cockatiel\": \"^3.1.2\",\n        \"commander\": \"^12.1.0\",\n        \"form-data\": \"^4.0.0\",\n        \"glob\": \"^11.0.0\",\n        \"hosted-git-info\": \"^4.0.2\",\n        \"jsonc-parser\": \"^3.2.0\",\n        \"leven\": \"^3.1.0\",\n        \"markdown-it\": \"^14.1.0\",\n        \"mime\": \"^1.3.4\",\n        \"minimatch\": \"^3.0.3\",\n        \"parse-semver\": \"^1.1.1\",\n        \"read\": \"^1.0.7\",\n        \"secretlint\": \"^10.1.2\",\n        \"semver\": \"^7.5.2\",\n        \"tmp\": \"^0.2.3\",\n        \"typed-rest-client\": \"^1.8.4\",\n        \"url-join\": \"^4.0.1\",\n        \"xml2js\": \"^0.5.0\",\n        \"yauzl\": \"^2.3.1\",\n        \"yazl\": \"^2.2.2\"\n      },\n      \"bin\": {\n        \"vsce\": \"vsce\"\n      },\n      \"engines\": {\n        \"node\": \">= 20\"\n      },\n      \"optionalDependencies\": {\n        \"keytar\": \"^7.7.0\"\n      }\n    },\n    \"node_modules/@vscode/vsce-sign\": {\n      \"version\": \"2.0.8\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.8.tgz\",\n      \"integrity\": \"sha512-H7p8E11cZMj6mt8xIi3QXZ7dSU/2MH3Y7c+5JfUhHAV4xfaPNc8ozwLVK282c6ah596KoIJIdPUlNHV7Qs/5JA==\",\n      \"dev\": true,\n      \"hasInstallScript\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optionalDependencies\": {\n        \"@vscode/vsce-sign-alpine-arm64\": \"2.0.6\",\n        \"@vscode/vsce-sign-alpine-x64\": \"2.0.6\",\n        \"@vscode/vsce-sign-darwin-arm64\": \"2.0.2\",\n        \"@vscode/vsce-sign-darwin-x64\": \"2.0.2\",\n        \"@vscode/vsce-sign-linux-arm\": \"2.0.6\",\n        \"@vscode/vsce-sign-linux-arm64\": \"2.0.6\",\n        \"@vscode/vsce-sign-linux-x64\": \"2.0.6\",\n        \"@vscode/vsce-sign-win32-arm64\": \"2.0.6\",\n        \"@vscode/vsce-sign-win32-x64\": \"2.0.6\"\n      }\n    },\n    \"node_modules/@vscode/vsce-sign-alpine-arm64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz\",\n      \"integrity\": \"sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"alpine\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-alpine-x64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz\",\n      \"integrity\": \"sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"alpine\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-darwin-arm64\": {\n      \"version\": \"2.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.2.tgz\",\n      \"integrity\": \"sha512-rz8F4pMcxPj8fjKAJIfkUT8ycG9CjIp888VY/6pq6cuI2qEzQ0+b5p3xb74CJnBbSC0p2eRVoe+WgNCAxCLtzQ==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"darwin\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-darwin-x64\": {\n      \"version\": \"2.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz\",\n      \"integrity\": \"sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"darwin\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-linux-arm\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz\",\n      \"integrity\": \"sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==\",\n      \"cpu\": [\n        \"arm\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-linux-arm64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz\",\n      \"integrity\": \"sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-linux-x64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz\",\n      \"integrity\": \"sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-win32-arm64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz\",\n      \"integrity\": \"sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"win32\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-win32-x64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz\",\n      \"integrity\": \"sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"win32\"\n      ]\n    },\n    \"node_modules/agent-base\": {\n      \"version\": \"7.1.4\",\n      \"resolved\": \"https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz\",\n      \"integrity\": \"sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 14\"\n      }\n    },\n    \"node_modules/ajv\": {\n      \"version\": \"8.17.1\",\n      \"resolved\": \"https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz\",\n      \"integrity\": \"sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"fast-deep-equal\": \"^3.1.3\",\n        \"fast-uri\": \"^3.0.1\",\n        \"json-schema-traverse\": \"^1.0.0\",\n        \"require-from-string\": \"^2.0.2\"\n      },\n      \"funding\": {\n        \"type\": \"github\",\n        \"url\": \"https://github.com/sponsors/epoberezkin\"\n      }\n    },\n    \"node_modules/ansi-escapes\": {\n      \"version\": \"7.2.0\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz\",\n      \"integrity\": \"sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"environment\": \"^1.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/ansi-regex\": {\n      \"version\": \"6.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz\",\n      \"integrity\": \"sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=12\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/ansi-regex?sponsor=1\"\n      }\n    },\n    \"node_modules/ansi-styles\": {\n      \"version\": \"4.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n      \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"color-convert\": \"^2.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=8\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n      }\n    },\n    \"node_modules/argparse\": {\n      \"version\": \"2.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz\",\n      \"integrity\": \"sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==\",\n      \"dev\": true,\n      \"license\": \"Python-2.0\"\n    },\n    \"node_modules/astral-regex\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz\",\n      \"integrity\": \"sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/asynckit\": {\n      \"version\": \"0.4.0\",\n      \"resolved\": \"https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz\",\n      \"integrity\": \"sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/azure-devops-node-api\": {\n      \"version\": \"12.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz\",\n      \"integrity\": \"sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"tunnel\": \"0.0.6\",\n        \"typed-rest-client\": \"^1.8.4\"\n      }\n    },\n    \"node_modules/balanced-match\": {\n      \"version\": \"1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz\",\n      \"integrity\": \"sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/base64-js\": {\n      \"version\": \"1.5.1\",\n      \"resolved\": \"https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz\",\n      \"integrity\": \"sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==\",\n      \"dev\": true,\n      \"funding\": [\n        {\n          \"type\": \"github\",\n          \"url\": \"https://github.com/sponsors/feross\"\n        },\n        {\n          \"type\": \"patreon\",\n          \"url\": \"https://www.patreon.com/feross\"\n        },\n        {\n          \"type\": \"consulting\",\n          \"url\": \"https://feross.org/support\"\n        }\n      ],\n      \"license\": \"MIT\",\n      \"optional\": true\n    },\n    \"node_modules/binaryextensions\": {\n      \"version\": \"6.11.0\",\n      \"resolved\": \"https://registry.npmjs.org/binaryextensions/-/binaryextensions-6.11.0.tgz\",\n      \"integrity\": \"sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==\",\n      \"dev\": true,\n      \"license\": \"Artistic-2.0\",\n      \"dependencies\": {\n        \"editions\": \"^6.21.0\"\n      },\n      \"engines\": {\n        \"node\": \">=4\"\n      },\n      \"funding\": {\n        \"url\": \"https://bevry.me/fund\"\n      }\n    },\n    \"node_modules/bl\": {\n      \"version\": \"4.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/bl/-/bl-4.1.0.tgz\",\n      \"integrity\": \"sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"dependencies\": {\n        \"buffer\": \"^5.5.0\",\n        \"inherits\": \"^2.0.4\",\n        \"readable-stream\": \"^3.4.0\"\n      }\n    },\n    \"node_modules/boolbase\": {\n      \"version\": \"1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz\",\n      \"integrity\": \"sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==\",\n      \"dev\": true,\n      \"license\": \"ISC\"\n    },\n    \"node_modules/boundary\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz\",\n      \"integrity\": \"sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==\",\n      \"dev\": true,\n      \"license\": \"BSD-2-Clause\"\n    },\n    \"node_modules/brace-expansion\": {\n      \"version\": \"1.1.12\",\n      \"resolved\": \"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz\",\n      \"integrity\": \"sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"balanced-match\": \"^1.0.0\",\n        \"concat-map\": \"0.0.1\"\n      }\n    },\n    \"node_modules/braces\": {\n      \"version\": \"3.0.3\",\n      \"resolved\": \"https://registry.npmjs.org/braces/-/braces-3.0.3.tgz\",\n      \"integrity\": \"sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"fill-range\": \"^7.1.1\"\n      },\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/buffer\": {\n      \"version\": \"5.7.1\",\n      \"resolved\": \"https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz\",\n      \"integrity\": \"sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==\",\n      \"dev\": true,\n      \"funding\": [\n        {\n          \"type\": \"github\",\n          \"url\": \"https://github.com/sponsors/feross\"\n        },\n        {\n          \"type\": \"patreon\",\n          \"url\": \"https://www.patreon.com/feross\"\n        },\n        {\n          \"type\": \"consulting\",\n          \"url\": \"https://feross.org/support\"\n        }\n      ],\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"dependencies\": {\n        \"base64-js\": \"^1.3.1\",\n        \"ieee754\": \"^1.1.13\"\n      }\n    },\n    \"node_modules/buffer-crc32\": {\n      \"version\": \"0.2.13\",\n      \"resolved\": \"https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz\",\n      \"integrity\": \"sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \"*\"\n      }\n    },\n    \"node_modules/buffer-equal-constant-time\": {\n      \"version\": \"1.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz\",\n      \"integrity\": \"sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==\",\n      \"dev\": true,\n      \"license\": \"BSD-3-Clause\"\n    },\n    \"node_modules/bundle-name\": {\n      \"version\": \"4.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz\",\n      \"integrity\": \"sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"run-applescript\": \"^7.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/call-bind-apply-helpers\": {\n      \"version\": \"1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz\",\n      \"integrity\": \"sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"es-errors\": \"^1.3.0\",\n        \"function-bind\": \"^1.1.2\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/call-bound\": {\n      \"version\": \"1.0.4\",\n      \"resolved\": \"https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz\",\n      \"integrity\": \"sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"call-bind-apply-helpers\": \"^1.0.2\",\n        \"get-intrinsic\": \"^1.3.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/ljharb\"\n      }\n    },\n    \"node_modules/chalk\": {\n      \"version\": \"4.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n      \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ansi-styles\": \"^4.1.0\",\n        \"supports-color\": \"^7.1.0\"\n      },\n      \"engines\": {\n        \"node\": \">=10\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n      }\n    },\n    \"node_modules/cheerio\": {\n      \"version\": \"1.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz\",\n      \"integrity\": \"sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"cheerio-select\": \"^2.1.0\",\n        \"dom-serializer\": \"^2.0.0\",\n        \"domhandler\": \"^5.0.3\",\n        \"domutils\": \"^3.2.2\",\n        \"encoding-sniffer\": \"^0.2.1\",\n        \"htmlparser2\": \"^10.0.0\",\n        \"parse5\": \"^7.3.0\",\n        \"parse5-htmlparser2-tree-adapter\": \"^7.1.0\",\n        \"parse5-parser-stream\": \"^7.1.2\",\n        \"undici\": \"^7.12.0\",\n        \"whatwg-mimetype\": \"^4.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.18.1\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/cheeriojs/cheerio?sponsor=1\"\n      }\n    },\n    \"node_modules/cheerio-select\": {\n      \"version\": \"2.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz\",\n      \"integrity\": \"sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==\",\n      \"dev\": true,\n      \"license\": \"BSD-2-Clause\",\n      \"dependencies\": {\n        \"boolbase\": \"^1.0.0\",\n        \"css-select\": \"^5.1.0\",\n        \"css-what\": \"^6.1.0\",\n        \"domelementtype\": \"^2.3.0\",\n        \"domhandler\": \"^5.0.3\",\n        \"domutils\": \"^3.0.1\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/fb55\"\n      }\n    },\n    \"node_modules/chownr\": {\n      \"version\": \"1.1.4\",\n      \"resolved\": \"https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz\",\n      \"integrity\": \"sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==\",\n      \"dev\": true,\n      \"license\": \"ISC\",\n      \"optional\": true\n    },\n    \"node_modules/cockatiel\": {\n      \"version\": \"3.2.1\",\n      \"resolved\": \"https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz\",\n      \"integrity\": \"sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=16\"\n      }\n    },\n    \"node_modules/color-convert\": {\n      \"version\": \"2.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n      \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"color-name\": \"~1.1.4\"\n      },\n      \"engines\": {\n        \"node\": \">=7.0.0\"\n      }\n    },\n    \"node_modules/color-name\": {\n      \"version\": \"1.1.4\",\n      \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n      \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/combined-stream\": {\n      \"version\": \"1.0.8\",\n      \"resolved\": \"https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz\",\n      \"integrity\": \"sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"delayed-stream\": \"~1.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.8\"\n      }\n    },\n    \"node_modules/commander\": {\n      \"version\": \"12.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/commander/-/commander-12.1.0.tgz\",\n      \"integrity\": \"sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/concat-map\": {\n      \"version\": \"0.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz\",\n      \"integrity\": \"sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/cross-spawn\": {\n      \"version\": \"7.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz\",\n      \"integrity\": \"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"path-key\": \"^3.1.0\",\n        \"shebang-command\": \"^2.0.0\",\n        \"which\": \"^2.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/css-select\": {\n      \"version\": \"5.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz\",\n      \"integrity\": \"sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==\",\n      \"dev\": true,\n      \"license\": \"BSD-2-Clause\",\n      \"dependencies\": {\n        \"boolbase\": \"^1.0.0\",\n        \"css-what\": \"^6.1.0\",\n        \"domhandler\": \"^5.0.2\",\n        \"domutils\": \"^3.0.1\",\n        \"nth-check\": \"^2.0.1\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/fb55\"\n      }\n    },\n    \"node_modules/css-what\": {\n      \"version\": \"6.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz\",\n      \"integrity\": \"sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==\",\n      \"dev\": true,\n      \"license\": \"BSD-2-Clause\",\n      \"engines\": {\n        \"node\": \">= 6\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/fb55\"\n      }\n    },\n    \"node_modules/debug\": {\n      \"version\": \"4.4.3\",\n      \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n      \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ms\": \"^2.1.3\"\n      },\n      \"engines\": {\n        \"node\": \">=6.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"supports-color\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/decompress-response\": {\n      \"version\": \"6.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz\",\n      \"integrity\": \"sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"dependencies\": {\n        \"mimic-response\": \"^3.1.0\"\n      },\n      \"engines\": {\n        \"node\": \">=10\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/deep-extend\": {\n      \"version\": \"0.6.0\",\n      \"resolved\": \"https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz\",\n      \"integrity\": \"sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"engines\": {\n        \"node\": \">=4.0.0\"\n      }\n    },\n    \"node_modules/default-browser\": {\n      \"version\": \"5.2.1\",\n      \"resolved\": \"https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz\",\n      \"integrity\": \"sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"bundle-name\": \"^4.1.0\",\n        \"default-browser-id\": \"^5.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/default-browser-id\": {\n      \"version\": \"5.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz\",\n      \"integrity\": \"sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/define-lazy-prop\": {\n      \"version\": \"3.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz\",\n      \"integrity\": \"sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=12\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/delayed-stream\": {\n      \"version\": \"1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz\",\n      \"integrity\": \"sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=0.4.0\"\n      }\n    },\n    \"node_modules/detect-libc\": {\n      \"version\": \"2.1.1\",\n      \"resolved\": ","isInternal":false,"tokens":19834,"sizeBytes":50000},{"name":"package.json","path":"tools/vscode-extension/package.json","rawUrl":"https://raw.githubusercontent.com/starfederation/datastar/HEAD/tools/vscode-extension/package.json","title":"datastar-vscode","category":"anthropic-skill","format":"json","content":"{\n  \"name\": \"datastar-vscode\",\n  \"version\": \"1.3.0\",\n  \"displayName\": \"Datastar\",\n  \"description\": \"Adds autocomplete and syntax highlighting for Datastar to Visual Studio Code.\",\n  \"author\": \"Ben Croker\",\n  \"publisher\": \"starfederation\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/starfederation/datastar\",\n  \"icon\": \"src/icon.png\",\n  \"galleryBanner\": {\n    \"color\": \"#bee3f8\",\n    \"theme\": \"light\"\n  },\n  \"engines\": {\n    \"vscode\": \"^1.63.0\"\n  },\n  \"categories\": [\n    \"Snippets\",\n    \"Other\"\n  ],\n  \"activationEvents\": [\n    \"onStartupFinished\"\n  ],\n  \"main\": \"src/extension.js\",\n  \"contributes\": {\n    \"grammars\": [\n      {\n        \"scopeName\": \"datastar.injection\",\n        \"path\": \"./src/datastar.injection.tmLanguage.json\",\n        \"injectTo\": [\n          \"text.html.basic\",\n          \"text.html.derivative\",\n          \"text.html.php\",\n          \"text.html.twig\",\n          \"text.html.php.blade\",\n          \"text.html.edge\",\n          \"text.html.nunjucks\",\n          \"text.html.njk\",\n          \"source.templ\",\n          \"source.astro\",\n          \"source.gohtml\",\n          \"text.html.vue\",\n          \"source.vue\",\n          \"source.svelte\",\n          \"text.html.svelte\",\n          \"text.html.handlebars\",\n          \"source.mustache\",\n          \"source.liquid\",\n          \"text.html.erb\",\n          \"text.html.ejs\",\n          \"text.pug\",\n          \"text.aspnetcorerazor\",\n          \"text.html.django\",\n          \"text.html.jinja\",\n          \"text.html.jsp\"\n        ]\n      }\n    ],\n    \"configuration\": {\n      \"title\": \"Datastar\",\n      \"properties\": {\n        \"datastar.customAttributes\": {\n          \"type\": \"array\",\n          \"default\": [],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Custom Datastar plugin names (without 'data-' prefix). Example: ['my-plugin', 'custom-action']\"\n        },\n        \"datastar.enabledLanguages\": {\n          \"type\": \"array\",\n          \"default\": [\n            \"html\",\n            \"php\",\n            \"twig\",\n            \"edge\",\n            \"nunjucks\",\n            \"templ\",\n            \"astro\",\n            \"vue\",\n            \"svelte\",\n            \"handlebars\",\n            \"mustache\",\n            \"liquid\",\n            \"erb\",\n            \"ejs\",\n            \"pug\",\n            \"razor\",\n            \"blade\",\n            \"django-html\",\n            \"jinja\",\n            \"gohtml\",\n            \"jsp\",\n            \"aspnetcorerazor\"\n          ],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Languages and file extensions where Datastar snippets should be available. Supports both VS Code language IDs (e.g., 'html', 'php') and file extensions (e.g., '.twig', '.templ', '.custom').\",\n          \"markdownDescription\": \"Languages and file extensions where Datastar snippets should be available. Supports both VS Code language IDs and file extensions.\\n\\n**Default supported languages/extensions:**\\n- `html` - HTML files\\n- `php` - PHP files\\n- `twig` - Twig templates (Craft CMS, Symfony)\\n- `blade` - Laravel Blade templates\\n- `vue` - Vue single file components\\n- `svelte` - Svelte files\\n- `astro` - Astro files\\n- `templ` - Go Templ files\\n- `erb` - Ruby ERB templates\\n- `ejs` - EJS templates\\n- `handlebars` - Handlebars templates\\n- `jinja` - Jinja templates (Python/Django)\\n- `gohtml` - Go HTML templates\\n\\n**Add custom file extensions:**\\n- `.edge` - Edge templates\\n- `.njk` - Nunjucks templates\\n- `.liquid` - Liquid templates\\n- `.pug` - Pug templates\\n- `.hbs` - Handlebars files\\n- `.mustache` - Mustache templates\\n- `.custom` - Any custom extension\\n\\n**Example:**\\n```json\\n[\\n  \\\"html\\\",\\n  \\\"php\\\",\\n  \\\"twig\\\",\\n  \\\".edge\\\",\\n  \\\".njk\\\",\\n  \\\".custom\\\"\\n]\\n```\"\n        }\n      }\n    },\n    \"snippets\": [\n      {\n        \"language\": \"html\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"php\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"twig\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"edge\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"nunjucks\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"templ\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"astro\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"vue\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"svelte\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"handlebars\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"mustache\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"liquid\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"erb\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"ejs\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"pug\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"razor\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"blade\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"django-html\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"jinja\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"gohtml\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"jsp\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"aspnetcorerazor\",\n        \"path\": \"./src/data-attributes.json\"\n      }\n    ]\n  },\n  \"devDependencies\": {\n    \"@vscode/vsce\": \"^3.7.1\"\n  },\n  \"scripts\": {\n    \"build\": \"npm exec vsce package\",\n    \"publish\": \"npm exec vsce publish $npm_package_version && npx ovsx publish datastar-vscode-$npm_package_version.vsix\"\n  }\n}\n","frontmatter":{"name":"datastar-vscode","version":"1.3.0","displayName":"Datastar","description":"Adds autocomplete and syntax highlighting for Datastar to Visual Studio Code.","author":"Ben Croker","publisher":"starfederation","license":"MIT","repository":"https://github.com/starfederation/datastar","icon":"src/icon.png","galleryBanner":{"color":"#bee3f8","theme":"light"},"engines":{"vscode":"^1.63.0"},"categories":["Snippets","Other"],"activationEvents":["onStartupFinished"],"main":"src/extension.js","contributes":{"grammars":[{"scopeName":"datastar.injection","path":"./src/datastar.injection.tmLanguage.json","injectTo":["text.html.basic","text.html.derivative","text.html.php","text.html.twig","text.html.php.blade","text.html.edge","text.html.nunjucks","text.html.njk","source.templ","source.astro","source.gohtml","text.html.vue","source.vue","source.svelte","text.html.svelte","text.html.handlebars","source.mustache","source.liquid","text.html.erb","text.html.ejs","text.pug","text.aspnetcorerazor","text.html.django","text.html.jinja","text.html.jsp"]}],"configuration":{"title":"Datastar","properties":{"datastar.customAttributes":{"type":"array","default":[],"items":{"type":"string"},"description":"Custom Datastar plugin names (without 'data-' prefix). Example: ['my-plugin', 'custom-action']"},"datastar.enabledLanguages":{"type":"array","default":["html","php","twig","edge","nunjucks","templ","astro","vue","svelte","handlebars","mustache","liquid","erb","ejs","pug","razor","blade","django-html","jinja","gohtml","jsp","aspnetcorerazor"],"items":{"type":"string"},"description":"Languages and file extensions where Datastar snippets should be available. Supports both VS Code language IDs (e.g., 'html', 'php') and file extensions (e.g., '.twig', '.templ', '.custom').","markdownDescription":"Languages and file extensions where Datastar snippets should be available. Supports both VS Code language IDs and file extensions.\n\n**Default supported languages/extensions:**\n- `html` - HTML files\n- `php` - PHP files\n- `twig` - Twig templates (Craft CMS, Symfony)\n- `blade` - Laravel Blade templates\n- `vue` - Vue single file components\n- `svelte` - Svelte files\n- `astro` - Astro files\n- `templ` - Go Templ files\n- `erb` - Ruby ERB templates\n- `ejs` - EJS templates\n- `handlebars` - Handlebars templates\n- `jinja` - Jinja templates (Python/Django)\n- `gohtml` - Go HTML templates\n\n**Add custom file extensions:**\n- `.edge` - Edge templates\n- `.njk` - Nunjucks templates\n- `.liquid` - Liquid templates\n- `.pug` - Pug templates\n- `.hbs` - Handlebars files\n- `.mustache` - Mustache templates\n- `.custom` - Any custom extension\n\n**Example:**\n```json\n[\n  \"html\",\n  \"php\",\n  \"twig\",\n  \".edge\",\n  \".njk\",\n  \".custom\"\n]\n```"}}},"snippets":[{"language":"html","path":"./src/data-attributes.json"},{"language":"php","path":"./src/data-attributes.json"},{"language":"twig","path":"./src/data-attributes.json"},{"language":"edge","path":"./src/data-attributes.json"},{"language":"nunjucks","path":"./src/data-attributes.json"},{"language":"templ","path":"./src/data-attributes.json"},{"language":"astro","path":"./src/data-attributes.json"},{"language":"vue","path":"./src/data-attributes.json"},{"language":"svelte","path":"./src/data-attributes.json"},{"language":"handlebars","path":"./src/data-attributes.json"},{"language":"mustache","path":"./src/data-attributes.json"},{"language":"liquid","path":"./src/data-attributes.json"},{"language":"erb","path":"./src/data-attributes.json"},{"language":"ejs","path":"./src/data-attributes.json"},{"language":"pug","path":"./src/data-attributes.json"},{"language":"razor","path":"./src/data-attributes.json"},{"language":"blade","path":"./src/data-attributes.json"},{"language":"django-html","path":"./src/data-attributes.json"},{"language":"jinja","path":"./src/data-attributes.json"},{"language":"gohtml","path":"./src/data-attributes.json"},{"language":"jsp","path":"./src/data-attributes.json"},{"language":"aspnetcorerazor","path":"./src/data-attributes.json"}]},"devDependencies":{"@vscode/vsce":"^3.7.1"},"scripts":{"build":"npm exec vsce package","publish":"npm exec vsce publish $npm_package_version && npx ovsx publish datastar-vscode-$npm_package_version.vsix"}},"isInternal":false,"tokens":1546,"sizeBytes":6027},{"name":"data-attributes.json","path":"tools/vscode-extension/src/data-attributes.json","rawUrl":"https://raw.githubusercontent.com/starfederation/datastar/HEAD/tools/vscode-extension/src/data-attributes.json","title":"Src Skill","category":"anthropic-skill","format":"json","content":"{\n  \"data-attr\": {\n    \"prefix\": \"data-attr\",\n    \"body\": \"data-attr=\\\"{${1:attributeName}: ${2:expression}}\\\"\",\n    \"description\": \"Sets one or more attribute values using a set of key-value pairs that map to the attribute name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-attributes\"\n      }\n    ]\n  },\n  \"data-attr:*\": {\n    \"prefix\": \"data-attr:*\",\n    \"body\": \"data-attr:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Sets an element’s attribute value based on an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-attributes\"\n      }\n    ]\n  },\n  \"data-bind\": {\n    \"prefix\": \"data-bind\",\n    \"body\": \"data-bind=\\\"${1:signalName}\\\"\",\n    \"description\": \"Creates a new signal and enables two-way binding between it and the element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-bind\"\n      }\n    ]\n  },\n  \"data-bind:*\": {\n    \"prefix\": \"data-bind:*\",\n    \"body\": \"data-bind:${1:name}\",\n    \"description\": \"Creates a new signal and enables two-way binding between it and the element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-bind\"\n      }\n    ]\n  },\n  \"data-class\": {\n    \"prefix\": \"data-class\",\n    \"body\": \"data-class=\\\"{${1:className}: ${2:expression}}\\\"\",\n    \"description\": \"Adds or removes one or more classes from an element using a set of key-value pairs that map to the class name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-class\"\n      }\n    ]\n  },\n  \"data-class:*\": {\n    \"prefix\": \"data-class:*\",\n    \"body\": \"data-class:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Adds or removes a class from an element based on an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-class\"\n      }\n    ]\n  },\n  \"data-computed\": {\n    \"prefix\": \"data-computed\",\n    \"body\": \"data-computed=\\\"{${1:signalName}: ${2:expression}}\\\"\",\n    \"description\": \"Creates one or more signals that are computed based on a set of key-value pairs that map to the signal name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-computed\"\n      }\n    ]\n  },\n  \"data-computed:*\": {\n    \"prefix\": \"data-computed:*\",\n    \"body\": \"data-computed:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Creates a signal that is computed based on an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-computed\"\n      }\n    ]\n  },\n  \"data-custom-validity\": {\n    \"prefix\": \"data-custom-validity\",\n    \"body\": \"data-custom-validity=\\\"${1:expression}\\\"\",\n    \"description\": \"Adds custom validity to an element using an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-custom-validity\"\n      }\n    ]\n  },\n  \"data-effect\": {\n    \"prefix\": \"data-effect\",\n    \"body\": \"data-effect=\\\"${1:expression}\\\"\",\n    \"description\": \"Executes an expression on page load and whenever any signals in the expression change.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-effect\"\n      }\n    ]\n  },\n  \"data-ignore\": {\n    \"prefix\": \"data-ignore\",\n    \"body\": \"data-ignore\",\n    \"description\": \"Ignores an element and its descendants from being processed.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-ignore\"\n      }\n    ]\n  },\n  \"data-ignore-morph\": {\n    \"prefix\": \"data-ignore-morph\",\n    \"body\": \"data-ignore-morph\",\n    \"description\": \"Ignores an element when patching an element using the `morph` mode.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-ignore-morph\"\n      }\n    ]\n  },\n  \"data-indicator\": {\n    \"prefix\": \"data-indicator\",\n    \"body\": \"data-indicator=\\\"${1:signalName}\\\"\",\n    \"description\": \"Creates a signal to track in-flight backend requests.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-indicator\"\n      }\n    ]\n  },\n  \"data-indicator:*\": {\n    \"prefix\": \"data-indicator:*\",\n    \"body\": \"data-indicator:${1:name}\",\n    \"description\": \"Creates a signal to track in-flight backend requests.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-indicator\"\n      }\n    ]\n  },\n  \"data-init\": {\n    \"prefix\": \"data-init\",\n    \"body\": \"data-init=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever the attribute is initialised.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-init\"\n      }\n    ]\n  },\n  \"data-json-signals\": {\n    \"prefix\": \"data-json-signals\",\n    \"body\": \"data-json-signals=\\\"${1:expression}\\\"\",\n    \"description\": \"Sets the text content of an element to a reactive JSON stringified version of signals.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-json-signals\"\n      }\n    ]\n  },\n  \"data-on\": {\n    \"prefix\": \"data-on:*\",\n    \"body\": \"data-on:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Runs an expression whenever an event is triggered on an element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on\"\n      }\n    ]\n  },\n  \"data-on:click\": {\n    \"prefix\": \"data-on:click\",\n    \"body\": \"data-on:click=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever the element is clicked.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on\"\n      }\n    ]\n  },\n  \"data-on:keydown\": {\n    \"prefix\": \"data-on:keydown\",\n    \"body\": \"data-on:keydown=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever a key is pressed.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on\"\n      }\n    ]\n  },\n  \"data-on-intersect\": {\n    \"prefix\": \"data-on-intersect\",\n    \"body\": \"data-on-intersect=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression on intersection with the viewport.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-intersect\"\n      }\n    ]\n  },\n  \"data-on-interval\": {\n    \"prefix\": \"data-on-interval\",\n    \"body\": \"data-on-interval=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression at a regular interval.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-interval\"\n      }\n    ]\n  },\n  \"data-on-raf\": {\n    \"prefix\": \"data-on-raf\",\n    \"body\": \"data-on-raf=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression on every `requestAnimationFrame` event.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-raf\"\n      }\n    ]\n  },\n  \"data-on-resize\": {\n    \"prefix\": \"data-on-resize\",\n    \"body\": \"data-on-resize=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever an element’s dimensions change.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-resize\"\n      }\n    ]\n  },\n  \"data-on-signal-patch\": {\n    \"prefix\": \"data-on-signal-patch\",\n    \"body\": \"data-on-signal-patch=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever one or more signals are patched.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-signal-patch\"\n      }\n    ]\n  },\n  \"data-on-signal-patch-filter\": {\n    \"prefix\": \"data-on-signal-patch-filter\",\n    \"body\": \"data-on-signal-patch-filter=\\\"${1:expression}\\\"\",\n    \"description\": \"Filters which signals to watch when using the `data-on-signal-patch` attribute.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-signal-change\"\n      }\n    ]\n  },\n  \"data-persist\": {\n    \"prefix\": \"data-persist\",\n    \"body\": \"data-persist=\\\"\\\"\",\n    \"description\": \"Persists signals in local storage.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-persist\"\n      }\n    ]\n  },\n  \"data-persist:*\": {\n    \"prefix\": \"data-persist:*\",\n    \"body\": \"data-persist:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Persists signals in local storage with a custom key.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-persist\"\n      }\n    ]\n  },\n  \"data-preserve-attr\": {\n    \"prefix\": \"data-preserve-attr\",\n    \"body\": \"data-preserve-attr=\\\"\\\"\",\n    \"description\": \"Preserves the value of an attribute when patching elements using the `morph` mode.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-preserve-attr\"\n      }\n    ]\n  },\n  \"data-query-string\": {\n    \"prefix\": \"data-query-string\",\n    \"body\": \"data-query-string=\\\"\\\"\",\n    \"description\": \"Syncs query string params to signal values on page load, and syncs signal values to query string params on change.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-query-string\"\n      }\n    ]\n  },\n  \"data-ref\": {\n    \"prefix\": \"data-ref\",\n    \"body\": \"data-ref=\\\"${1:signalName}\\\"\",\n    \"description\": \"Creates a signal whose value references an element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-ref\"\n      }\n    ]\n  },\n  \"data-ref:*\": {\n    \"prefix\": \"data-ref:*\",\n    \"body\": \"data-ref:${1:name}\",\n    \"description\": \"Creates a signal whose value references an element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-ref\"\n      }\n    ]\n  },\n  \"data-replace-url\": {\n    \"prefix\": \"data-replace-url\",\n    \"body\": \"data-replace-url=\\\"${1:expression}\\\"\",\n    \"description\": \"Replaces the URL in the browser with an evaluated expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-replace-url\"\n      }\n    ]\n  },\n  \"data-scroll-into-view\": {\n    \"prefix\": \"data-scroll-into-view\",\n    \"body\": \"data-scroll-into-view\",\n    \"description\": \"Scrolls the element into view.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-scroll-into-view\"\n      }\n    ]\n  },\n  \"data-show\": {\n    \"prefix\": \"data-show\",\n    \"body\": \"data-show=\\\"${1:expression}\\\"\",\n    \"description\": \"Shows or hides an element based on whether an expression evaluates to `true` or `false`.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-show\"\n      }\n    ]\n  },\n  \"data-signals\": {\n    \"prefix\": \"data-signals\",\n    \"body\": \"data-signals=\\\"{${1:signalName}: ${2:expression}}\\\"\",\n    \"description\": \"Merges one or more signals into the existing signals using a set of key-value pairs that map to the signal name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-signals\"\n      }\n    ]\n  },\n  \"data-signals:*\": {\n    \"prefix\": \"data-signals:*\",\n    \"body\": \"data-signals:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Merges a signal into the existing signals.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-signals\"\n      }\n    ]\n  },\n  \"data-style\": {\n    \"prefix\": \"data-style\",\n    \"body\": \"data-style=\\\"{${1:styleName}: ${2:expression}}\\\"\",\n    \"description\": \"Adds or removes one or more inline CSS styles from an element using a set of key-value pairs that map to the style name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-style\"\n      }\n    ]\n  },\n  \"data-style:*\": {\n    \"prefix\": \"data-style:*\",\n    \"body\": \"data-style:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Adds or removes an inline CSS style from an element based on an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-style\"\n      }\n    ]\n  },\n  \"data-text\": {\n    \"prefix\": \"data-text\",\n    \"body\": \"data-text=\\\"${1:expression}\\\"\",\n    \"description\": \"Sets the text content of an element to the evaluated expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-text\"\n      }\n    ]\n  },\n  \"data-view-transition\": {\n    \"prefix\": \"data-view-transition\",\n    \"body\": \"data-view-transition=\\\"${1:expression}\\\"\",\n    \"description\": \"Sets the value of `view-transition-name` for use with the View Transition API.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-view-transition\"\n      }\n    ]\n  }\n}","frontmatter":{"data-attr":{"prefix":"data-attr","body":"data-attr=\"{${1:attributeName}: ${2:expression}}\"","description":"Sets one or more attribute values using a set of key-value pairs that map to the attribute name and expression.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-attributes"}]},"data-attr:*":{"prefix":"data-attr:*","body":"data-attr:${1:name}=\"${2:expression}\"","description":"Sets an element’s attribute value based on an expression.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-attributes"}]},"data-bind":{"prefix":"data-bind","body":"data-bind=\"${1:signalName}\"","description":"Creates a new signal and enables two-way binding between it and the element.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-bind"}]},"data-bind:*":{"prefix":"data-bind:*","body":"data-bind:${1:name}","description":"Creates a new signal and enables two-way binding between it and the element.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-bind"}]},"data-class":{"prefix":"data-class","body":"data-class=\"{${1:className}: ${2:expression}}\"","description":"Adds or removes one or more classes from an element using a set of key-value pairs that map to the class name and expression.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-class"}]},"data-class:*":{"prefix":"data-class:*","body":"data-class:${1:name}=\"${2:expression}\"","description":"Adds or removes a class from an element based on an expression.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-class"}]},"data-computed":{"prefix":"data-computed","body":"data-computed=\"{${1:signalName}: ${2:expression}}\"","description":"Creates one or more signals that are computed based on a set of key-value pairs that map to the signal name and expression.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-computed"}]},"data-computed:*":{"prefix":"data-computed:*","body":"data-computed:${1:name}=\"${2:expression}\"","description":"Creates a signal that is computed based on an expression.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-computed"}]},"data-custom-validity":{"prefix":"data-custom-validity","body":"data-custom-validity=\"${1:expression}\"","description":"Adds custom validity to an element using an expression.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-custom-validity"}]},"data-effect":{"prefix":"data-effect","body":"data-effect=\"${1:expression}\"","description":"Executes an expression on page load and whenever any signals in the expression change.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-effect"}]},"data-ignore":{"prefix":"data-ignore","body":"data-ignore","description":"Ignores an element and its descendants from being processed.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-ignore"}]},"data-ignore-morph":{"prefix":"data-ignore-morph","body":"data-ignore-morph","description":"Ignores an element when patching an element using the `morph` mode.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-ignore-morph"}]},"data-indicator":{"prefix":"data-indicator","body":"data-indicator=\"${1:signalName}\"","description":"Creates a signal to track in-flight backend requests.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-indicator"}]},"data-indicator:*":{"prefix":"data-indicator:*","body":"data-indicator:${1:name}","description":"Creates a signal to track in-flight backend requests.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-indicator"}]},"data-init":{"prefix":"data-init","body":"data-init=\"${1:expression}\"","description":"Runs an expression whenever the attribute is initialised.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-init"}]},"data-json-signals":{"prefix":"data-json-signals","body":"data-json-signals=\"${1:expression}\"","description":"Sets the text content of an element to a reactive JSON stringified version of signals.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-json-signals"}]},"data-on":{"prefix":"data-on:*","body":"data-on:${1:name}=\"${2:expression}\"","description":"Runs an expression whenever an event is triggered on an element.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-on"}]},"data-on:click":{"prefix":"data-on:click","body":"data-on:click=\"${1:expression}\"","description":"Runs an expression whenever the element is clicked.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-on"}]},"data-on:keydown":{"prefix":"data-on:keydown","body":"data-on:keydown=\"${1:expression}\"","description":"Runs an expression whenever a key is pressed.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-on"}]},"data-on-intersect":{"prefix":"data-on-intersect","body":"data-on-intersect=\"${1:expression}\"","description":"Runs an expression on intersection with the viewport.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-on-intersect"}]},"data-on-interval":{"prefix":"data-on-interval","body":"data-on-interval=\"${1:expression}\"","description":"Runs an expression at a regular interval.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-on-interval"}]},"data-on-raf":{"prefix":"data-on-raf","body":"data-on-raf=\"${1:expression}\"","description":"Runs an expression on every `requestAnimationFrame` event.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-on-raf"}]},"data-on-resize":{"prefix":"data-on-resize","body":"data-on-resize=\"${1:expression}\"","description":"Runs an expression whenever an element’s dimensions change.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-on-resize"}]},"data-on-signal-patch":{"prefix":"data-on-signal-patch","body":"data-on-signal-patch=\"${1:expression}\"","description":"Runs an expression whenever one or more signals are patched.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-on-signal-patch"}]},"data-on-signal-patch-filter":{"prefix":"data-on-signal-patch-filter","body":"data-on-signal-patch-filter=\"${1:expression}\"","description":"Filters which signals to watch when using the `data-on-signal-patch` attribute.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-on-signal-change"}]},"data-persist":{"prefix":"data-persist","body":"data-persist=\"\"","description":"Persists signals in local storage.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-persist"}]},"data-persist:*":{"prefix":"data-persist:*","body":"data-persist:${1:name}=\"${2:expression}\"","description":"Persists signals in local storage with a custom key.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-persist"}]},"data-preserve-attr":{"prefix":"data-preserve-attr","body":"data-preserve-attr=\"\"","description":"Preserves the value of an attribute when patching elements using the `morph` mode.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-preserve-attr"}]},"data-query-string":{"prefix":"data-query-string","body":"data-query-string=\"\"","description":"Syncs query string params to signal values on page load, and syncs signal values to query string params on change.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-query-string"}]},"data-ref":{"prefix":"data-ref","body":"data-ref=\"${1:signalName}\"","description":"Creates a signal whose value references an element.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-ref"}]},"data-ref:*":{"prefix":"data-ref:*","body":"data-ref:${1:name}","description":"Creates a signal whose value references an element.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-ref"}]},"data-replace-url":{"prefix":"data-replace-url","body":"data-replace-url=\"${1:expression}\"","description":"Replaces the URL in the browser with an evaluated expression.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-replace-url"}]},"data-scroll-into-view":{"prefix":"data-scroll-into-view","body":"data-scroll-into-view","description":"Scrolls the element into view.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-scroll-into-view"}]},"data-show":{"prefix":"data-show","body":"data-show=\"${1:expression}\"","description":"Shows or hides an element based on whether an expression evaluates to `true` or `false`.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-show"}]},"data-signals":{"prefix":"data-signals","body":"data-signals=\"{${1:signalName}: ${2:expression}}\"","description":"Merges one or more signals into the existing signals using a set of key-value pairs that map to the signal name and expression.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-signals"}]},"data-signals:*":{"prefix":"data-signals:*","body":"data-signals:${1:name}=\"${2:expression}\"","description":"Merges a signal into the existing signals.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-signals"}]},"data-style":{"prefix":"data-style","body":"data-style=\"{${1:styleName}: ${2:expression}}\"","description":"Adds or removes one or more inline CSS styles from an element using a set of key-value pairs that map to the style name and expression.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-style"}]},"data-style:*":{"prefix":"data-style:*","body":"data-style:${1:name}=\"${2:expression}\"","description":"Adds or removes an inline CSS style from an element based on an expression.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-style"}]},"data-text":{"prefix":"data-text","body":"data-text=\"${1:expression}\"","description":"Sets the text content of an element to the evaluated expression.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-text"}]},"data-view-transition":{"prefix":"data-view-transition","body":"data-view-transition=\"${1:expression}\"","description":"Sets the value of `view-transition-name` for use with the View Transition API.","references":[{"name":"Documentation","url":"https://data-star.dev/reference/attributes#data-view-transition"}]}},"isInternal":false,"tokens":3590,"sizeBytes":14022},{"name":"datastar.injection.tmLanguage.json","path":"tools/vscode-extension/src/datastar.injection.tmLanguage.json","rawUrl":"https://raw.githubusercontent.com/starfederation/datastar/HEAD/tools/vscode-extension/src/datastar.injection.tmLanguage.json","title":"Src Skill","category":"anthropic-skill","format":"json","content":"{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"scopeName\": \"datastar.injection\",\n  \"injectionSelector\": \"L:text.html, L:meta.tag -string -comment -expression.html-template -meta.function.echo.blade\",\n  \"patterns\": [\n    {\n      \"include\": \"#datastar-attribute\"\n    }\n  ],\n  \"repository\": {\n    \"datastar-attribute\": {\n      \"comment\": \"Match Datastar attributes: data-[plugin]:[key]:[nested-key]__[modifier(s)]\",\n      \"begin\": \"\\\\b(data-)(attr|bind|class|computed|effect|ignore|ignore-morph|indicator|init|json-signals|on|on-intersect|on-interval|on-signal-patch|on-signal-patch-filter|preserve-attr|ref|show|signals|style|text|animate|custom-validity|on-raf|on-resize|persist|query-string|replace-url|rocket|scroll-into-view|view-transition|my-foo)(?=__|:|[\\\\s>=])\",\n      \"end\": \"(?<=[\\\"'])|(?=[\\\\s>])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.datastar.prefix\"\n        },\n        \"2\": {\n          \"name\": \"support.function.datastar.plugin\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"comment\": \"Match plugin-like keys: :data-[plugin]\",\n          \"match\": \"(:)(data-(?:attr|bind|class|computed|effect|ignore|ignore-morph|indicator|init|json-signals|on|on-intersect|on-interval|on-signal-patch|on-signal-patch-filter|preserve-attr|ref|show|signals|style|text|animate|custom-validity|on-raf|on-resize|persist|query-string|replace-url|rocket|scroll-into-view|view-transition|my-foo))(?=__|:|[\\\\s>=])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key.datastar\"\n            },\n            \"2\": {\n              \"name\": \"support.function.datastar.plugin\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Match regular keys: :key\",\n          \"match\": \"(:)([a-z][a-z0-9-]*)(?=__|:|[\\\\s>=])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key.datastar\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.datastar.key\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Match modifiers with arguments: __modifier.arg\",\n          \"match\": \"(__)([a-z][a-z0-9-]*)(\\\\.)([a-z0-9]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.modifier.datastar\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.datastar\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.modifier-arg.datastar\"\n            },\n            \"4\": {\n              \"name\": \"constant.numeric.modifier-arg.datastar\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Match modifiers without arguments: __modifier\",\n          \"match\": \"(__)([a-z][a-z0-9-]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.modifier.datastar\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.datastar\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Match attribute value with expressions\",\n          \"begin\": \"(=)([\\\"'])\",\n          \"end\": \"\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key-value.html\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#datastar-expressions\"\n            }\n          ]\n        }\n      ]\n    },\n    \"datastar-expressions\": {\n      \"patterns\": [\n        {\n          \"include\": \"#signal-reference\"\n        },\n        {\n          \"include\": \"#action-call\"\n        },\n        {\n          \"include\": \"#method-call\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#javascript-syntax\"\n        }\n      ]\n    },\n    \"signal-reference\": {\n      \"match\": \"(\\\\$\\\\$?[a-zA-Z_][a-zA-Z0-9_]*)((\\\\?)?\\\\.[a-zA-Z_][a-zA-Z0-9_]*(?!\\\\())*(\\\\[[^\\\\]]+\\\\])?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.datastar.signal\"\n        }\n      }\n    },\n    \"action-call\": {\n      \"begin\": \"(@[a-z]+)(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.datastar.action\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.arguments.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    },\n    \"method-call\": {\n      \"begin\": \"(\\\\.)([a-zA-Z_][a-zA-Z0-9_]*)(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.datastar\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.datastar\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.arguments.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"begin\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.datastar\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.arguments.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    },\n    \"javascript-syntax\": {\n      \"patterns\": [\n        {\n          \"include\": \"#arrow-function\"\n        },\n        {\n          \"include\": \"#object-literal\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#spread-operator\"\n        },\n        {\n          \"include\": \"#js-strings\"\n        },\n        {\n          \"include\": \"#js-numbers\"\n        },\n        {\n          \"include\": \"#js-keywords\"\n        },\n        {\n          \"include\": \"#js-operators\"\n        }\n      ]\n    },\n    \"js-strings\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.double.datastar\",\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.escape.datastar\",\n              \"match\": \"\\\\\\\\.\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.single.datastar\",\n          \"begin\": \"'\",\n          \"end\": \"'\",\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.escape.datastar\",\n              \"match\": \"\\\\\\\\.\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.template.datastar\",\n          \"begin\": \"`\",\n          \"end\": \"`\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.template.expression.datastar\",\n              \"begin\": \"\\\\$\\\\{\",\n              \"end\": \"\\\\}\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.template-expression.begin.datastar\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.template-expression.end.datastar\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#datastar-expressions\"\n                }\n              ]\n            },\n            {\n              \"name\": \"constant.character.escape.datastar\",\n              \"match\": \"\\\\\\\\.\"\n            }\n          ]\n        }\n      ]\n    },\n    \"js-numbers\": {\n      \"match\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\\\\b\",\n      \"name\": \"constant.numeric.datastar\"\n    },\n    \"js-keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(const|let|var|async|await|function|return|throw|new|if|else|for|while|do|switch|case|break|continue|try|catch|finally)\\\\b\",\n          \"name\": \"keyword.control.datastar\"\n        },\n        {\n          \"match\": \"\\\\b(true|false|null|undefined)\\\\b\",\n          \"name\": \"constant.language.datastar\"\n        },\n        {\n          \"match\": \"\\\\b(this|event|el|Promise|Error|Array|Object|String|Number|Boolean|Date|Math|console)\\\\b\",\n          \"name\": \"support.class.datastar\"\n        }\n      ]\n    },\n    \"js-operators\": {\n      \"match\": \"(\\\\+\\\\+|--|\\\\+=|-=|\\\\*=|/=|%=|\\\\+|-|\\\\*|/|%|===|!==|==|!=|>=|<=|>|<|&&|\\\\|\\\\||\\\\?\\\\?|!|=|\\\\?|:)\",\n      \"name\": \"keyword.operator.datastar\"\n    },\n    \"spread-operator\": {\n      \"match\": \"\\\\.\\\\.\\\\.\",\n      \"name\": \"keyword.operator.spread.datastar\"\n    },\n    \"arrow-function\": {\n      \"match\": \"(\\\\([^)]*\\\\)|[a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(=>)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.function.datastar\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.function.arrow.datastar\"\n        }\n      }\n    },\n    \"object-literal\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.object.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.object.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.property.datastar\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.key-value.datastar\"\n            }\n          }\n        },\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    },\n    \"array-literal\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    }\n  }\n}","frontmatter":{"$schema":"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json","scopeName":"datastar.injection","injectionSelector":"L:text.html, L:meta.tag -string -comment -expression.html-template -meta.function.echo.blade","patterns":[{"include":"#datastar-attribute"}],"repository":{"datastar-attribute":{"comment":"Match Datastar attributes: data-[plugin]:[key]:[nested-key]__[modifier(s)]","begin":"\\b(data-)(attr|bind|class|computed|effect|ignore|ignore-morph|indicator|init|json-signals|on|on-intersect|on-interval|on-signal-patch|on-signal-patch-filter|preserve-attr|ref|show|signals|style|text|animate|custom-validity|on-raf|on-resize|persist|query-string|replace-url|rocket|scroll-into-view|view-transition|my-foo)(?=__|:|[\\s>=])","end":"(?<=[\"'])|(?=[\\s>])","beginCaptures":{"1":{"name":"keyword.operator.datastar.prefix"},"2":{"name":"support.function.datastar.plugin"}},"patterns":[{"comment":"Match plugin-like keys: :data-[plugin]","match":"(:)(data-(?:attr|bind|class|computed|effect|ignore|ignore-morph|indicator|init|json-signals|on|on-intersect|on-interval|on-signal-patch|on-signal-patch-filter|preserve-attr|ref|show|signals|style|text|animate|custom-validity|on-raf|on-resize|persist|query-string|replace-url|rocket|scroll-into-view|view-transition|my-foo))(?=__|:|[\\s>=])","captures":{"1":{"name":"punctuation.separator.key.datastar"},"2":{"name":"support.function.datastar.plugin"}}},{"comment":"Match regular keys: :key","match":"(:)([a-z][a-z0-9-]*)(?=__|:|[\\s>=])","captures":{"1":{"name":"punctuation.separator.key.datastar"},"2":{"name":"variable.parameter.datastar.key"}}},{"comment":"Match modifiers with arguments: __modifier.arg","match":"(__)([a-z][a-z0-9-]*)(\\.)([a-z0-9]+)","captures":{"1":{"name":"punctuation.separator.modifier.datastar"},"2":{"name":"storage.modifier.datastar"},"3":{"name":"punctuation.separator.modifier-arg.datastar"},"4":{"name":"constant.numeric.modifier-arg.datastar"}}},{"comment":"Match modifiers without arguments: __modifier","match":"(__)([a-z][a-z0-9-]*)","captures":{"1":{"name":"punctuation.separator.modifier.datastar"},"2":{"name":"storage.modifier.datastar"}}},{"comment":"Match attribute value with expressions","begin":"(=)([\"'])","end":"\\2","beginCaptures":{"1":{"name":"punctuation.separator.key-value.html"},"2":{"name":"punctuation.definition.string.begin.html"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.html"}},"patterns":[{"include":"#datastar-expressions"}]}]},"datastar-expressions":{"patterns":[{"include":"#signal-reference"},{"include":"#action-call"},{"include":"#method-call"},{"include":"#function-call"},{"include":"#javascript-syntax"}]},"signal-reference":{"match":"(\\$\\$?[a-zA-Z_][a-zA-Z0-9_]*)((\\?)?\\.[a-zA-Z_][a-zA-Z0-9_]*(?!\\())*(\\[[^\\]]+\\])?","captures":{"1":{"name":"variable.other.datastar.signal"}}},"action-call":{"begin":"(@[a-z]+)(\\()","end":"\\)","beginCaptures":{"1":{"name":"support.function.datastar.action"},"2":{"name":"punctuation.section.arguments.begin.datastar"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.datastar"}},"patterns":[{"include":"#datastar-expressions"}]},"method-call":{"begin":"(\\.)([a-zA-Z_][a-zA-Z0-9_]*)(\\()","end":"\\)","beginCaptures":{"1":{"name":"punctuation.accessor.datastar"},"2":{"name":"entity.name.function.datastar"},"3":{"name":"punctuation.section.arguments.begin.datastar"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.datastar"}},"patterns":[{"include":"#datastar-expressions"}]},"function-call":{"begin":"\\b([a-zA-Z_][a-zA-Z0-9_]*)(\\()","end":"\\)","beginCaptures":{"1":{"name":"entity.name.function.datastar"},"2":{"name":"punctuation.section.arguments.begin.datastar"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.datastar"}},"patterns":[{"include":"#datastar-expressions"}]},"javascript-syntax":{"patterns":[{"include":"#arrow-function"},{"include":"#object-literal"},{"include":"#array-literal"},{"include":"#spread-operator"},{"include":"#js-strings"},{"include":"#js-numbers"},{"include":"#js-keywords"},{"include":"#js-operators"}]},"js-strings":{"patterns":[{"name":"string.quoted.double.datastar","begin":"\"","end":"\"","patterns":[{"name":"constant.character.escape.datastar","match":"\\\\."}]},{"name":"string.quoted.single.datastar","begin":"'","end":"'","patterns":[{"name":"constant.character.escape.datastar","match":"\\\\."}]},{"name":"string.template.datastar","begin":"`","end":"`","patterns":[{"name":"meta.template.expression.datastar","begin":"\\$\\{","end":"\\}","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.datastar"}},"endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.datastar"}},"patterns":[{"include":"#datastar-expressions"}]},{"name":"constant.character.escape.datastar","match":"\\\\."}]}]},"js-numbers":{"match":"\\b\\d+(\\.\\d+)?\\b","name":"constant.numeric.datastar"},"js-keywords":{"patterns":[{"match":"\\b(const|let|var|async|await|function|return|throw|new|if|else|for|while|do|switch|case|break|continue|try|catch|finally)\\b","name":"keyword.control.datastar"},{"match":"\\b(true|false|null|undefined)\\b","name":"constant.language.datastar"},{"match":"\\b(this|event|el|Promise|Error|Array|Object|String|Number|Boolean|Date|Math|console)\\b","name":"support.class.datastar"}]},"js-operators":{"match":"(\\+\\+|--|\\+=|-=|\\*=|/=|%=|\\+|-|\\*|/|%|===|!==|==|!=|>=|<=|>|<|&&|\\|\\||\\?\\?|!|=|\\?|:)","name":"keyword.operator.datastar"},"spread-operator":{"match":"\\.\\.\\.","name":"keyword.operator.spread.datastar"},"arrow-function":{"match":"(\\([^)]*\\)|[a-zA-Z_][a-zA-Z0-9_]*)\\s*(=>)","captures":{"1":{"name":"variable.parameter.function.datastar"},"2":{"name":"storage.type.function.arrow.datastar"}}},"object-literal":{"begin":"\\{","end":"\\}","beginCaptures":{"0":{"name":"punctuation.definition.object.begin.datastar"}},"endCaptures":{"0":{"name":"punctuation.definition.object.end.datastar"}},"patterns":[{"match":"([a-zA-Z_][a-zA-Z0-9_]*)\\s*(:)","captures":{"1":{"name":"variable.other.property.datastar"},"2":{"name":"punctuation.separator.key-value.datastar"}}},{"include":"#datastar-expressions"}]},"array-literal":{"begin":"\\[","end":"\\]","beginCaptures":{"0":{"name":"punctuation.definition.array.begin.datastar"}},"endCaptures":{"0":{"name":"punctuation.definition.array.end.datastar"}},"patterns":[{"include":"#datastar-expressions"}]}}},"isInternal":false,"tokens":2590,"sizeBytes":10257},{"name":"README.md","path":"tools/intellij-plugin/README.md","rawUrl":"https://raw.githubusercontent.com/starfederation/datastar/HEAD/tools/intellij-plugin/README.md","title":"intellij-plugin Documentation","category":"plugin-manifest","format":"markdown","content":"# Datastar Support JetBrains Plugin\n\n[![Version](https://img.shields.io/jetbrains/plugin/v/26072.svg)](https://plugins.jetbrains.com/plugin/26072)\n[![Downloads](https://img.shields.io/jetbrains/plugin/d/26072.svg)](https://plugins.jetbrains.com/plugin/26072)\n\n<!-- Plugin description -->\nThis plugin offers IntelliJ IDE support for the [Datastar](https://data-star.dev/) framework.\n\nIt offers autocomplete for all of the Datastar custom `data-*` attributes, with additional autocomplete of DOM\nattributes and events.\n\nYou can show the documentation alongside the autocomplete suggestions via the File &rarr; Settings &rarr; Editor &rarr;\nGeneral &rarr;\nCode Completion: **Show the documentation popup in .... ms checkbox**\n<!-- Plugin description end -->\n\n![Screenshot](./resources/img/datastar-intellij-plugin.png)\n\n## Installation\n\n- Using the IDE built-in plugin system:\n\n  <kbd>Settings/Preferences</kbd> > <kbd>Plugins</kbd> > <kbd>Marketplace</kbd> > <kbd>Search for \"\n  datastar-jetbrains-plugin\"</kbd> >\n  <kbd>Install</kbd>\n\n- Using JetBrains Marketplace:\n\n  Go to [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/26072) and install it by clicking\n  the <kbd>Install to ...</kbd> button in case your IDE is running.\n\n  You can also download the [latest release](https://plugins.jetbrains.com/plugin/26072/versions) from\n  JetBrains Marketplace and install it manually using\n  <kbd>Settings/Preferences</kbd> > <kbd>Plugins</kbd> > <kbd>⚙️</kbd> > <kbd>Install plugin from disk...</kbd>\n\n- Manually:\n\n  Download the [latest release](https://github.com/starfederation/datastar-jetbrains-plugin/releases/latest) and install it\n  manually using\n  <kbd>Settings/Preferences</kbd> > <kbd>Plugins</kbd> > <kbd>⚙️</kbd> > <kbd>Install plugin from disk...</kbd>\n\n## Errata\n\n- The Datastar support plugin does have inline documentation and links to the official documentation, but due an\n  [issue with the `web-types`](https://github.com/JetBrains/web-types/issues/85) implementation, it does not appear on\n  hover currently.\n- Autocomplete of Datastar actions in attribute values is not implemented yet\n- CI build & release workflows are not implemented yet\n\nBrought to you by [nystudio107](https://nystudio107.com/)\n\n---\nPlugin based on the [IntelliJ Platform Plugin Template][template].\n\n[template]: https://github.com/JetBrains/intellij-platform-plugin-template\n\n[docs:plugin-description]: https://plugins.jetbrains.com/docs/intellij/plugin-user-experience.html#plugin-description-and-presentation\n","isInternal":false,"tokens":604,"sizeBytes":2521},{"name":"README.md","path":"tools/vscode-extension/README.md","rawUrl":"https://raw.githubusercontent.com/starfederation/datastar/HEAD/tools/vscode-extension/README.md","title":"vscode-extension Documentation","category":"plugin-manifest","format":"markdown","content":"# Datastar Extension for Visual Studio Code\n\nAdds autocomplete and syntax highlighting for [Datastar](https://data-star.dev/) to Visual Studio Code.\n\n![VSCode extension](https://data-star.dev/static/images/vscode-extension-120.png)\n\n## Configuration\n\nBy default, Datastar snippets work in HTML and most common template languages. You can customize which languages and file extensions have Datastar support by configuring the `datastar.enabledLanguages` setting.\n\n**To configure:**\n1. Open VS Code Settings (Cmd/Ctrl + ,)\n2. Search for \"datastar enabled languages\"\n3. Add language IDs (e.g., `html`, `php`, `twig`) or file extensions (e.g., `.edge`, `.njk`, `.custom`)\n\n**Example:**\n```json\n{\n  \"datastar.enabledLanguages\": [\n    \"html\",\n    \"php\",\n    \"twig\",\n    \".edge\",\n    \".custom\"\n  ]\n}\n```\n\n### Custom Attributes\n\nYou can add syntax highlighting support for custom Datastar plugins using the `datastar.customAttributes` setting.\n\n**To configure:**\n1. Open VS Code Settings (Cmd/Ctrl + ,)\n2. Search for \"datastar custom attributes\"\n3. Add your custom plugin names (without the `data-` prefix)\n\n**Example:**\n```json\n{\n  \"datastar.customAttributes\": [\n    \"my-plugin\"\n  ]\n}\n```\n\nAfter adding custom attributes, reload VS Code to apply the changes.\n\n## License\n\nThis plugin is licensed for free under the MIT License.\n\n## Requirements\n\nThis plugin requires Visual Studio Code version 1.63.0 or later.\n\n## Installation\n\nInstall the extension from the Visual Studio Code Marketplace or from the extensions panel by searching for “Datastar”.\n","isInternal":false,"tokens":362,"sizeBytes":1546}],"systemPromptSnippet":"<yakaai_skills repo=\"starfederation/datastar\">\n<!-- File: tools/intellij-plugin/CHANGELOG.md (Tokens: ~951 | Category: anthropic-skill) -->\n# Datastar Support JetBrains Plugin Changelog\n\n## [Unreleased]\n\n## [1.2.3] - 2025-11-08\n\n- Made it so that the `data-bind` attribute appears on all elements, rather than only a few select ones (`input`, `select`, etc.).\n\n## [1.2.2] - 2025-10-22\n\n- Fixed icon.\n\n## [1.2.1] - 2025-10-22\n\n- Fixed icon.\n\n## [1.2.0] - 2025-10-22\n\n- Added support for using object syntax with `data-computed`.\n- Added the `self` modifier to `data-ignore`.\n- Changed the attribute key delimiter from `-` to `:`.\n- Renamed `data-on-load` to `data-init`.\n\n## [1.1.1] - 2025-08-23\n\n- Added the `data-style` attribute.\n- Added the ability to use a key with the `data-persist` attribute.\n- Added the `filter` modifier to the `data-query-string` attribute.\n- Removed the `trusted` modifier.\n\n## [1.1.0] - 2025-07-16\n\n### Added\n\n- Added the `data-effect` attribute.\n- Added the `data-ignore` attribute.\n- Added the `data-ignore-morph` attribute.\n- Added the `data-json-signals` attribute.\n- Added the `data-on-resize` attribute.\n- Added the `data-on-signal-patch` attribute.\n- Added the `data-on-signal-patch-filter` attribute.\n- Added the `data-preserve-attr` attribute.\n- Added the `data-query-string` attribute.\n- Added the `trusted` modifier.\n\n## [1.0.2] - 2025.02.11\n\n### Added\n\n- Added the `case` modifier to `data-on-*`.\n- Added the `viewtransition` modifier to `data-on-*`.\n\n## [1.0.1] - 2025.02.01\n\n### Added\n\n- Added the `data-on-interval` attribute.\n- Added the `delay` modifier to `data-on-*`.\n- Added the `duration` modifier to `data-on-*`.\n\n## [1.0.0] - 2025.01.04\n\n### Added\n\n- Added the `data-custom-validity` attribute.\n- Added the `data-star-ignore` attribute.\n- Added the `outside` modifier to `data-on-*`.\n\n### Changed\n\n- Replaced the `data-attributes` attribute with `data-attr`.\n\n## [0.21.0] - 2024.12.10\n\n### Added\n\n- Initial public release\n\n[Unreleased]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.2.3...HEAD\n[1.2.3]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.2.2...v1.2.3\n[1.2.2]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.2.1...v1.2.2\n[1.2.1]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.2.0...v1.2.1\n[1.2.0]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.1.1...v1.2.0\n[1.1.1]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.1.0...v1.1.1\n[1.1.0]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.0.2...v1.1.0\n[1.0.2]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.0.1...v1.0.2\n[1.0.1]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v1.0.0...v1.0.1\n[1.0.0]: https://github.com/starfederation/datastar/tools/intellij-plugin/compare/v0.21.0...v1.0.0\n[0.21.0]: https://github.com/starfederation/datastar/tools/intellij-plugin/commits/v0.21.0\n\n<!-- File: tools/intellij-plugin/LICENSE.md (Tokens: ~207 | Category: anthropic-skill) -->\nThe MIT License (MIT)\n\nCopyright (c) nystudio107\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n<!-- File: tools/intellij-plugin/schema.json (Tokens: ~9401 | Category: anthropic-skill) -->\n{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"title\": \"JSON schema for Web-Types\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"$schema\": {\n      \"type\": \"string\"\n    },\n    \"framework\": {\n      \"description\": \"Framework, for which the components are provided by the library. If the library is not enabled in a particular context, all symbols from this file will not be available as well. If you want symbols to be always available do not specify framework.\",\n      \"type\": \"string\"\n    },\n    \"required-context\": {\n      \"description\": \"Since 2024.2. Specify contexts, which are required to enable contributions from this file.\",\n      \"$ref\": \"#/definitions/required-context\"\n    },\n    \"context\": {\n      \"description\": \"Deprecated since 2024.2 because of ambiguous meaning - use \\\"required-context\\\" instead.\",\n      \"deprecationMessage\": \"Use \\\"required-context\\\" instead.\",\n      \"$ref\": \"#/definitions/required-context\"\n    },\n    \"name\": {\n      \"description\": \"Name of the library.\",\n      \"type\": \"string\"\n    },\n    \"version\": {\n      \"description\": \"Version of the library, for which Web-Types are provided.\",\n      \"type\": \"string\"\n    },\n    \"js-types-syntax\": {\n      \"$ref\": \"#/definitions/js-types-syntax\"\n    },\n    \"description-markup\": {\n      \"$ref\": \"#/definitions/description-markup\"\n    },\n    \"framework-config\": {\n      \"$ref\": \"#/definitions/framework-config\"\n    },\n    \"contexts-config\": {\n      \"$ref\": \"#/definitions/contexts-config\"\n    },\n    \"default-icon\": {\n      \"$ref\": \"#/definitions/icon\"\n    },\n    \"contributions\": {\n      \"description\": \"Symbol can be contributed to one of the 3 namespaces - HTML, CSS and JS. Within a particular namespace there can be different kinds of symbols. In each of the namespaces, there are several predefined kinds, which integrate directly with IDE, but providers are free to define their own.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"html\": {\n          \"$ref\": \"#/definitions/html\"\n        },\n        \"css\": {\n          \"$ref\": \"#/definitions/css\"\n        },\n        \"js\": {\n          \"$ref\": \"#/definitions/js-global\"\n        }\n      },\n      \"additionalProperties\": false\n    }\n  },\n  \"required\": [\n    \"name\",\n    \"version\"\n  ],\n  \"additionalProperties\": false,\n  \"definitions\": {\n    \"js-types-syntax\": {\n      \"description\": \"Language in which JavaScript objects types are specified.\",\n      \"type\": \"string\",\n      \"enum\": [\n        \"typescript\"\n      ]\n    },\n    \"description-markup\": {\n      \"description\": \"Markup language in which descriptions are formatted.\",\n      \"type\": \"string\",\n      \"default\": \"none\",\n      \"enum\": [\n        \"html\",\n        \"markdown\",\n        \"none\"\n      ]\n    },\n    \"required-context\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"kind\": {\n              \"type\": \"string\"\n            },\n            \"name\": {\n              \"type\": \"string\"\n            }\n          },\n          \"required\": [\n            \"kind\",\n            \"name\"\n          ],\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"anyOf\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/definitions/required-context\"\n              }\n            }\n          },\n          \"required\": [\n            \"anyOf\"\n          ],\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"allOf\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/definitions/required-context\"\n              }\n            }\n          },\n          \"required\": [\n            \"allOf\"\n          ],\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"not\": {\n              \"$ref\": \"#/definitions/required-context\"\n            }\n          },\n          \"required\": [\n            \"not\"\n          ],\n          \"additionalProperties\": false\n        }\n      ]\n    },\n    \"framework-config\": {\n      \"description\": \"Provide configuration for the specified web framework. This is an advanced feature, which is used to provide support for templating frameworks like Angular, Vue, Svelte, etc.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"enable-when\": {\n          \"$ref\": \"#/definitions/enablement-rules\"\n        },\n        \"disable-when\": {\n          \"$ref\": \"#/definitions/disablement-rules\"\n        },\n        \"canonical-names\": {\n          \"description\": \"In many frameworks symbols can have multiple versions of a name. Specify canonical name conversion rule for names of particular symbol kinds against which comparisons will be made. Format of the 'canonical-names' property names is '{namespace}/{symbol kind}'. By default symbol names in HTML namespace are converted to lower-case, and in CSS and JS namespaces are left as-is. In case of name patterns, rules are applied to each part of the pattern separately, so even if the symbol with pattern is in HTML namespace, references to JS events will be case-sensitive.\",\n          \"$ref\": \"#/definitions/name-conversion-rules-single\"\n        },\n        \"match-names\": {\n          \"description\": \"Provide an array of name conversions, in which particular symbol kinds should be matched against canonical names of symbols. By default symbol names are converted using canonical-names rule.\",\n          \"$ref\": \"#/definitions/name-conversion-rules-multiple\"\n        },\n        \"name-variants\": {\n          \"description\": \"Provide an array of name conversions, in which particular symbol kinds should be proposed in auto completion. Format of the 'name-variants' property names is '{namespace}/{symbol kind}'. All symbol kinds are by default provided as-is.\",\n          \"$ref\": \"#/definitions/name-conversion-rules-multiple\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"contexts-config\": {\n      \"description\": \"Provide configuration for Web Types contexts. This allows to contribute additional Web Types for example if a particular library is present in the project.\",\n      \"type\": \"object\",\n      \"additionalProperties\": {\n        \"$ref\": \"#/definitions/context-kind-config\"\n      }\n    },\n    \"context-kind-config\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"kind\": {\n          \"description\": \"Context kind. Only a single context of the particular kind will be enabled. An example of context kind is framework, which has dedicated support in Web Types.\",\n          \"deprecationMessage\": \"As of 2024.2 this is deprecated way of defining context. The outer context should be the context kind with a nested context name.\",\n          \"type\": \"string\"\n        },\n        \"enable-when\": {\n          \"deprecationMessage\": \"As of 2024.2 this is deprecated way of defining context. The outer context should be the context kind with a nested context name.\",\n          \"$ref\": \"#/definitions/enablement-rules\"\n        },\n        \"disable-when\": {\n          \"deprecationMessage\": \"As of 2024.2 this is deprecated way of defining context. The outer context should be the context kind with a nested context name.\",\n          \"$ref\": \"#/definitions/disablement-rules\"\n        }\n      },\n      \"additionalProperties\": {\n        \"$ref\": \"#/definitions/context-config\"\n      }\n    },\n    \"context-config\": {\n      \"description\": \"Since 2024.2. Provide rules for setting a particular name for particular context kind. This allows to contribute additional Web Types for example if a particular library is present in the project.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"enable-when\": {\n          \"$ref\": \"#/definitions/enablement-rules\"\n        },\n        \"disable-when\": {\n          \"$ref\": \"#/definitions/disablement-rules\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"enablement-rules\": {\n      \"description\": \"Specify rules for enabling web framework support. Only one framework can be enabled in a particular file. If you need your contributions to be enabled in all files, regardless of the context, do not specify the framework.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"node-packages\": {\n          \"description\": \"Node.js package names, which enable framework support within the folder containing the package.json.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"ruby-gems\": {\n          \"description\": \"Since 2024.2. Ruby gem names, which enable framework support within the particular Ruby module.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"file-extensions\": {\n          \"description\": \"Extensions of files, which should have the framework support enabled. Use this to support custom file extensions like '.vue' or '.svelte'. Never specify generic extensions like '.html', '.js' or '.ts'. If you need your contributions to be present in every file don't specify the framework at all\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"file-name-patterns\": {\n          \"description\": \"RegExp patterns to match file names, which should have the framework support enabled. Use carefully as broken pattern may even freeze IDE.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/pattern\"\n          }\n        },\n        \"ide-libraries\": {\n          \"description\": \"Global JavaScript libraries names enabled within the IDE, which enable framework support in the whole project\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"project-tool-executables\": {\n          \"description\": \"List of tool executables (without extension), which presence should be checked in the project. In case of Node projects, such tools will be searched in node_modules/.bin/\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"additionalProperties\": {\n        \"$ref\": \"#/definitions/custom-enablement-rules\"\n      }\n    },\n    \"custom-enablement-rules\": {\n      \"description\": \"Since 2024.2. Custom package manager dependencies, which would enable context according to the rules of custom provider.\",\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"disablement-rules\": {\n      \"description\": \"Specify rules for disabling web framework support. These rules take precedence over enable-when rules. They allow to turn off framework support in case of some conflicts between frameworks priority.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"file-extensions\": {\n          \"description\": \"Extensions of files, which should have the framework support disabled\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"file-name-patterns\": {\n          \"description\": \"RegExp patterns to match file names, which should have the framework support disabled\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/pattern\"\n          }\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"name-conversion-rules-single\": {\n      \"type\": \"object\",\n      \"patternProperties\": {\n        \"^/[^/\\\\n\\\\r]+/[^/\\\\n\\\\r]+$\": {\n          \"$ref\": \"#/definitions/name-converter\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"name-conversion-rules-multiple\": {\n      \"type\": \"object\",\n      \"patternProperties\": {\n        \"^/[^/\\\\n\\\\r]+/[^/\\\\n\\\\r]+$\": {\n          \"$ref\": \"#/definitions/name-converters\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"name-converters\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"$ref\": \"#/definitions/name-converter\"\n      }\n    },\n    \"name-converter\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"as-is\",\n        \"PascalCase\",\n        \"camelCase\",\n        \"lowercase\",\n        \"UPPERCASE\",\n        \"kebab-case\",\n        \"snake_case\"\n      ]\n    },\n    \"icon\": {\n      \"description\": \"Relative path to the icon representing the symbol or actual SVG of the icon.\",\n      \"type\": \"string\"\n    },\n    \"base-contribution\": {\n      \"type\": \"object\",\n      \"description\": \"The base for any contributions.\",\n      \"javaAbstract\": true,\n      \"javaInterfaces\": [\n        \"GenericContributionsHost\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"$ref\": \"#/definitions/name\"\n        },\n        \"description\": {\n          \"$ref\": \"#/definitions/description\"\n        },\n        \"description-sections\": {\n          \"$ref\": \"#/definitions/description-sections\"\n        },\n        \"required-context\": {\n          \"description\": \"Since 2024.2. Specify contexts, which are required to enable this contribution.\",\n          \"$ref\": \"#/definitions/required-context\"\n        },\n        \"doc-url\": {\n          \"$ref\": \"#/definitions/doc-url\"\n        },\n        \"icon\": {\n          \"$ref\": \"#/definitions/icon\"\n        },\n        \"source\": {\n          \"$ref\": \"#/definitions/source\"\n        },\n        \"since\": {\n          \"$ref\": \"#/definitions/since\"\n        },\n        \"deprecated\": {\n          \"$ref\": \"#/definitions/deprecated\"\n        },\n        \"deprecated-since\": {\n          \"$ref\": \"#/definitions/deprecated-since\"\n        },\n        \"obsolete\": {\n          \"$ref\": \"#/definitions/obsolete\"\n        },\n        \"obsolete-since\": {\n          \"$ref\": \"#/definitions/obsolete-since\"\n        },\n        \"experimental\": {\n          \"$ref\": \"#/definitions/experimental\"\n        },\n        \"priority\": {\n          \"$ref\": \"#/definitions/priority\"\n        },\n        \"proximity\": {\n          \"$ref\": \"#/definitions/proximity\"\n        },\n        \"virtual\": {\n          \"$ref\": \"#/definitions/virtual\"\n        },\n        \"abstract\": {\n          \"$ref\": \"#/definitions/abstract\"\n        },\n        \"extension\": {\n          \"$ref\": \"#/definitions/extension\"\n        },\n        \"extends\": {\n          \"$ref\": \"#/definitions/extends\"\n        },\n        \"pattern\": {\n          \"$ref\": \"#/definitions/name-pattern-root\"\n        },\n        \"html\": {\n          \"$ref\": \"#/definitions/html\"\n        },\n        \"css\": {\n          \"$ref\": \"#/definitions/css\"\n        },\n        \"js\": {\n          \"$ref\": \"#/definitions/js\"\n        },\n        \"exclusive-contributions\": {\n          \"$ref\": \"#/definitions/exclusive-contributions\"\n        }\n      }\n    },\n    \"typed-contribution\": {\n      \"type\": \"object\",\n      \"description\": \"The base for any contribution, which can possibly have a JS type.\",\n      \"javaAbstract\": true,\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        }\n      ],\n      \"properties\": {\n        \"type\": {\n          \"$ref\": \"#/definitions/type-list\"\n        }\n      }\n    },\n    \"generic-contribution\": {\n      \"type\": \"object\",\n      \"description\": \"A generic contribution. All contributions are of this type, except for HTML attributes and elements, as well as predefined CSS contribution kinds.\",\n      \"javaAbstract\": true,\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/typed-contribution\"\n        }\n      ],\n      \"properties\": {\n        \"default\": {\n          \"$ref\": \"#/definitions/default\"\n        },\n        \"required\": {\n          \"$ref\": \"#/definitions/required\"\n        },\n        \"attribute-value\": {\n          \"$ref\": \"#/definitions/html-attribute-value\"\n        }\n      }\n    },\n    \"type-list\": {\n      \"description\": \"Specify type according to selected language for type syntax. The type can be specified by a string expression, an object with list of imports and an expression, or an array of possible types.\",\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/type\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/type\"\n          }\n        }\n      ]\n    },\n    \"type\": {\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/type-reference\"\n        },\n        {\n          \"type\": \"string\"\n        }\n      ]\n    },\n    \"type-reference\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"module\": {\n          \"description\": \"Name of module, which exports the type. May be omitted, in which case it's assumed to be the name of the library.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name of the symbol to import\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"additionalProperties\": false\n    },\n    \"html-value-type\": {\n      \"oneOf\": [\n        {\n          \"type\": \"string\",\n          \"description\": \"Provide one of special attribute value types:  \\\"enum\\\", \\\"symbol\\\", \\\"of-match\\\", or a simple JavaScript type according to the specified type format.\"\n        },\n        {\n          \"$ref\": \"#/definitions/type-reference\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/type\"\n          }\n        }\n      ]\n    },\n    \"source\": {\n      \"description\": \"Allows to specify the source of the entity. For Vue.js component this may be for instance a class.\",\n      \"type\": \"object\",\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"file\": {\n              \"description\": \"Path to the file, relative to the web-types JSON.\",\n              \"type\": \"string\"\n            },\n            \"offset\": {\n              \"description\": \"Offset in the file under which the source symbol, like class name, is located.\",\n              \"type\": \"integer\"\n            }\n          },\n          \"required\": [\n            \"file\",\n            \"offset\"\n          ],\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"module\": {\n              \"description\": \"Name of module, which exports the symbol. May be omitted, in which case it's assumed to be the name of the library.\",\n              \"type\": \"string\"\n            },\n            \"symbol\": {\n              \"description\": \"Name of the exported symbol.\",\n              \"type\": \"string\"\n            }\n          },\n          \"required\": [\n            \"symbol\"\n          ],\n          \"additionalProperties\": false\n        }\n      ]\n    },\n    \"name\": {\n      \"type\": \"string\"\n    },\n    \"description\": {\n      \"description\": \"Short description to be rendered in documentation popup. It will be rendered according to description-markup setting.\",\n      \"type\": \"string\"\n    },\n    \"description-sections\": {\n      \"description\": \"Custom sections to be shown below description in the documentation popup.\",\n      \"type\": \"object\",\n      \"additionalProperties\": {\n        \"type\": \"string\"\n      }\n    },\n    \"doc-url\": {\n      \"description\": \"Link to online documentation.\",\n      \"type\": \"string\"\n    },\n    \"virtual\": {\n      \"description\": \"Mark contribution as virtual. Virtual contributions can be filtered out if needed in references. A virtual contribution meaning may differ by framework or kind contexts, but usually means something synthetic or something, which gets erased in the runtime by the framework. E.g. Vue or Angular attribute bindings are virtual. \",\n      \"type\": \"boolean\"\n    },\n    \"abstract\": {\n      \"description\": \"Mark contribution as abstract. Such contributions serve only as super contributions for other contributions.\",\n      \"type\": \"boolean\"\n    },\n    \"extension\": {\n      \"description\": \"Mark contribution as an extension. Such contributions do not define a new contribution on their own, but can provide additional properties or contributions to existing contributions.\",\n      \"type\": \"boolean\"\n    },\n    \"priority\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"lowest\",\n        \"low\",\n        \"normal\",\n        \"high\",\n        \"highest\"\n      ]\n    },\n    \"proximity\": {\n      \"type\": \"integer\"\n    },\n    \"name-pattern-root\": {\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/name-pattern\"\n        },\n        {\n          \"type\": \"string\"\n        }\n      ]\n    },\n    \"exclusive-contributions\": {\n      \"description\": \"Specify list of contribution kinds qualified with a namespace, for which during reference resolution this will be the final contribution host. E.g. if a special HTML element does not accept standard attributes, add:\\n\\\"exclusive-contributions\\\": [\\\"/html/attributes\\\"].\",\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\",\n        \"pattern\": \"/[^/\\\\n\\\\r]+/[^/\\\\n\\\\r]+\"\n      }\n    },\n    \"name-pattern\": {\n      \"type\": \"object\",\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"required\": {\n              \"$ref\": \"#/definitions/required\"\n            },\n            \"unique\": {\n              \"type\": \"boolean\"\n            },\n            \"repeat\": {\n              \"type\": \"boolean\"\n            },\n            \"template\": {\n              \"$ref\": \"#/definitions/name-pattern-template\"\n            },\n            \"or\": {\n              \"$ref\": \"#/definitions/name-pattern-template\"\n            },\n            \"delegate\": {\n              \"$ref\": \"#/definitions/reference\"\n            },\n            \"deprecated\": {\n              \"$ref\": \"#/definitions/deprecated\"\n            },\n            \"priority\": {\n              \"$ref\": \"#/definitions/priority\"\n            },\n            \"proximity\": {\n              \"$ref\": \"#/definitions/proximity\"\n            },\n            \"items\": {\n              \"$ref\": \"#/definitions/list-reference\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"regex\": {\n              \"type\": \"string\"\n            },\n            \"case-sensitive\": {\n              \"type\": \"boolean\",\n              \"default\": true\n            }\n          },\n          \"required\": [\n            \"regex\"\n          ],\n          \"additionalProperties\": false\n        }\n      ]\n    },\n    \"name-pattern-template\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"items\": {\n        \"oneOf\": [\n          {\n            \"type\": \"string\"\n          },\n          {\n            \"$ref\": \"#/definitions/name-pattern-template\"\n          },\n          {\n            \"$ref\": \"#/definitions/name-pattern\"\n          }\n        ]\n      }\n    },\n    \"list-reference\": {\n      \"description\": \"A reference to an element in Web-Types model.\",\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/reference\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/reference\"\n          }\n        }\n      ]\n    },\n    \"reference\": {\n      \"description\": \"A reference to an element in Web-Types model.\",\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/reference-with-props\"\n        },\n        {\n          \"type\": \"string\"\n        }\n      ]\n    },\n    \"reference-with-props\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"includeVirtual\": {\n          \"type\": \"boolean\",\n          \"default\": true\n        },\n        \"includeAbstract\": {\n          \"type\": \"boolean\"\n        },\n        \"filter\": {\n          \"type\": \"string\"\n        },\n        \"name-conversion\": {\n          \"description\": \"Override global name conversion rules for matching symbols under the path.\",\n          \"$ref\": \"#/definitions/reference-name-conversion\"\n        }\n      },\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"reference-name-conversion\": {\n      \"description\": \"Override global name conversion rules for matching symbols under the path.\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"canonical-names\": {\n          \"description\": \"Override global canonical name conversion rule against which comparisons are made for the referenced symbols. When only rule name is specified, it applies to the symbols of the same kind as the last segment of the referenced path. Otherwise format of the property names is '{namespace}/{symbol kind}'. Supported by JetBrains IDEs since 2022.1.\",\n          \"oneOf\": [\n            {\n              \"$ref\": \"#/definitions/name-converter\"\n            },\n            {\n              \"$ref\": \"#/definitions/name-conversion-rules-single\"\n            }\n          ]\n        },\n        \"match-names\": {\n          \"description\": \"Override global rules, by which referenced symbols should be matched against their canonical names. When only rule names are specified, they applies to the symbols of the same kind as the last segment of the referenced path. Otherwise format of the property names is '{namespace}/{symbol kind}'. Supported by JetBrains IDEs since 2022.1.\",\n          \"oneOf\": [\n            {\n              \"$ref\": \"#/definitions/name-converters\"\n            },\n            {\n              \"$ref\": \"#/definitions/name-conversion-rules-multiple\"\n            }\n          ]\n        },\n        \"name-variants\": {\n          \"description\": \"Override global rules, by which referenced symbol names should be proposed in auto completion. When only rule names are specified, they applies to the symbols of the same kind as the last segment of the referenced path. Otherwise format of the property names is '{namespace}/{symbol kind}'. Supported by JetBrains IDEs since 2022.1.\",\n          \"oneOf\": [\n            {\n              \"$ref\": \"#/definitions/name-converters\"\n            },\n            {\n              \"$ref\": \"#/definitions/name-conversion-rules-multiple\"\n            }\n          ]\n        }\n      }\n    },\n    \"extends\": {\n      \"$ref\": \"#/definitions/reference\"\n    },\n    \"default\": {\n      \"type\": \"string\"\n    },\n    \"required\": {\n      \"type\": \"boolean\"\n    },\n    \"since\": {\n      \"description\": \"Version since this symbol is available.\",\n      \"type\": \"string\"\n    },\n    \"deprecated\": {\n      \"description\": \"Specifies whether the symbol is deprecated. Deprecated symbol usage is discouraged, but still supported. Value can be a boolean or a string message with explanation and migration information.\",\n      \"type\": [\n        \"boolean\",\n        \"string\"\n      ],\n      \"default\": false\n    },\n    \"deprecated-since\": {\n      \"description\": \"Version in which this symbol was first deprecated.\",\n      \"type\": \"string\"\n    },\n    \"obsolete\": {\n      \"description\": \"Specifies whether the symbol is obsolete. Obsolete symbols are no longer supported. Value can be a boolean or a string message with explanation and migration information.\",\n      \"type\": [\n        \"boolean\",\n        \"string\"\n      ],\n      \"default\": false\n    },\n    \"obsolete-since\": {\n      \"description\": \"Version in which this symbol was first made obsolete.\",\n      \"type\": \"string\"\n    },\n    \"experimental\": {\n      \"description\": \"Specifies whether the symbol is experimental. Value can be a boolean or a string message with explanation. Experimental symbols should be used with caution as the API might change.\",\n      \"type\": [\n        \"boolean\",\n        \"string\"\n      ],\n      \"default\": false\n    },\n    \"pattern\": {\n      \"description\": \"A RegEx pattern to match whole content. Syntax should work with at least ECMA, Java and Python implementations.\",\n      \"oneOf\": [\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"regex\": {\n              \"type\": \"string\"\n            },\n            \"case-sensitive\": {\n              \"type\": \"boolean\",\n              \"default\": true\n            }\n          }\n        }\n      ]\n    },\n    \"html-contributions-host\": {\n      \"type\": \"object\",\n      \"javaInterfaces\": [\n        \"GenericContributionsHost\"\n      ],\n      \"javaInterface\": true,\n      \"properties\": {\n        \"elements\": {\n          \"description\": \"HTML elements.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/html-element\"\n          }\n        },\n        \"attributes\": {\n          \"description\": \"HTML attributes.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/html-attribute\"\n          }\n        },\n        \"events\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-html-contribution\"\n          },\n          \"description\": \"DOM events are deprecated in HTML namespace. Contribute events to JS namespace: /js/events\",\n          \"deprecationMessage\": \"Contribute events to JS namespace: /js/events\"\n        }\n      },\n      \"patternProperties\": {\n        \"^(?!pattern$).*$\": {\n          \"$ref\": \"#/definitions/generic-html-contributions\"\n        }\n      }\n    },\n    \"generic-html-contributions\": {\n      \"javaLenientDeserialize\": true,\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-html-contribution-or-property\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-html-contribution-or-property\"\n          }\n        }\n      ]\n    },\n    \"generic-html-contribution-or-property\": {\n      \"javaInterfaces\": [\n        \"GenericContributionOrProperty\"\n      ],\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-html-contribution\"\n        },\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"number\"\n        },\n        {\n          \"type\": \"boolean\"\n        }\n      ]\n    },\n    \"generic-html-contribution\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/html-contributions-host\"\n        }\n      ]\n    },\n    \"html\": {\n      \"type\": \"object\",\n      \"description\": \"Contains contributions to HTML namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are 2 predefined kinds, which integrate directly with IDE - HTML elements and HTML attributes. There are also 2 deprecated kinds: tags (which is equivalent to 'elements') and 'events' (which was moved to JS namespace)\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/html-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"types-syntax\": {\n          \"$ref\": \"#/definitions/deprecated-types-syntax\"\n        },\n        \"description-markup\": {\n          \"$ref\": \"#/definitions/deprecated-description-markup\"\n        },\n        \"tags\": {\n          \"type\": \"array\",\n          \"description\": \"Deprecated, use `elements` property.\",\n          \"deprecationMessage\": \"Use `elements` property.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/html-element\"\n          }\n        }\n      }\n    },\n    \"html-element\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/html-contributions-host\"\n        }\n      ]\n    },\n    \"html-attribute\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/html-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"value\": {\n          \"$ref\": \"#/definitions/html-attribute-value\"\n        },\n        \"default\": {\n          \"type\": \"string\"\n        },\n        \"required\": {\n          \"$ref\": \"#/definitions/required\"\n        },\n        \"vue-argument\": {\n          \"$ref\": \"#/definitions/deprecated-html-attribute-vue-argument\"\n        },\n        \"vue-modifiers\": {\n          \"description\": \"Deprecated vue-specific property - contribute Vue directives to /contributions/html/vue-directives\",\n          \"deprecationMessage\": \"Contribute Vue directives to /contributions/html/vue-directives\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/deprecated-html-attribute-vue-modifier\"\n          }\n        }\n      }\n    },\n    \"html-attribute-value\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"kind\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"no-value\",\n            \"plain\",\n            \"expression\"\n          ]\n        },\n        \"type\": {\n          \"$ref\": \"#/definitions/html-value-type\"\n        },\n        \"required\": {\n          \"type\": \"boolean\"\n        },\n        \"default\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"css-contributions-host\": {\n      \"type\": \"object\",\n      \"javaInterfaces\": [\n        \"GenericContributionsHost\"\n      ],\n      \"javaInterface\": true,\n      \"properties\": {\n        \"properties\": {\n          \"type\": \"array\",\n          \"description\": \"CSS properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-property\"\n          }\n        },\n        \"pseudo-elements\": {\n          \"description\": \"CSS pseudo-elements\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-pseudo-element\"\n          }\n        },\n        \"pseudo-classes\": {\n          \"description\": \"CSS pseudo-classes\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-pseudo-class\"\n          }\n        },\n        \"functions\": {\n          \"description\": \"CSS functions\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-generic-item\"\n          }\n        },\n        \"classes\": {\n          \"description\": \"CSS classes\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-generic-item\"\n          }\n        },\n        \"parts\": {\n          \"description\": \"CSS parts\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/css-generic-item\"\n          }\n        }\n      },\n      \"patternProperties\": {\n        \"^(?!pattern$).*$\": {\n          \"$ref\": \"#/definitions/generic-css-contributions\"\n        }\n      }\n    },\n    \"generic-css-contributions\": {\n      \"javaLenientDeserialize\": true,\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-css-contribution-or-property\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-css-contribution-or-property\"\n          }\n        }\n      ]\n    },\n    \"generic-css-contribution-or-property\": {\n      \"javaInterfaces\": [\n        \"GenericContributionOrProperty\"\n      ],\n      \"oneOf\": [\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"number\"\n        },\n        {\n          \"type\": \"boolean\"\n        },\n        {\n          \"$ref\": \"#/definitions/generic-css-contribution\"\n        }\n      ]\n    },\n    \"generic-css-contribution\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ]\n    },\n    \"css\": {\n      \"type\": \"object\",\n      \"description\": \"Contains contributions to CSS namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are predefined kinds, which integrate directly with IDE - properties, classes, functions, pseudo-elements, pseudo-classes and parts.\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ]\n    },\n    \"css-property\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"values\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        }\n      }\n    },\n    \"css-generic-item\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ]\n    },\n    \"css-pseudo-element\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"arguments\": {\n          \"type\": \"boolean\",\n          \"description\": \"Specify whether the pseudo-element requires arguments.\"\n        }\n      }\n    },\n    \"css-pseudo-class\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/base-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/css-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"arguments\": {\n          \"type\": \"boolean\",\n          \"description\": \"Specify whether the pseudo-class requires arguments.\"\n        }\n      }\n    },\n    \"js-contributions-host\": {\n      \"type\": \"object\",\n      \"javaInterfaces\": [\n        \"GenericContributionsHost\"\n      ],\n      \"javaInterface\": true,\n      \"properties\": {\n        \"events\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-js-contribution\"\n          },\n          \"description\": \"DOM events\"\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/js-property\"\n          },\n          \"description\": \"JavaScript properties of an object, HTML tag, framework component, etc.\"\n        },\n        \"symbols\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/js-symbol\"\n          },\n          \"description\": \"Symbols available for JavaScript resolve. TypeScript resolve is not supported.\"\n        }\n      },\n      \"patternProperties\": {\n        \"^(?!pattern$).*$\": {\n          \"$ref\": \"#/definitions/generic-js-contributions\"\n        }\n      }\n    },\n    \"generic-js-contributions\": {\n      \"javaLenientDeserialize\": true,\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-js-contribution-or-property\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-js-contribution-or-property\"\n          }\n        }\n      ]\n    },\n    \"generic-js-contribution-or-property\": {\n      \"javaInterfaces\": [\n        \"GenericContributionOrProperty\"\n      ],\n      \"oneOf\": [\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"number\"\n        },\n        {\n          \"type\": \"boolean\"\n        },\n        {\n          \"$ref\": \"#/definitions/generic-js-contribution\"\n        }\n      ]\n    },\n    \"generic-js-contribution\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/js-contributions-host\"\n        }\n      ]\n    },\n    \"js-global\": {\n      \"type\": \"object\",\n      \"description\": \"Contains contributions to JS namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are 2 predefined kinds, which integrate directly with IDE - properties and events, but only events can be contributed globally.\",\n      \"properties\": {\n        \"events\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/generic-js-contribution\"\n          },\n          \"description\": \"DOM events\"\n        },\n        \"symbols\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/js-symbol\"\n          },\n          \"description\": \"Globally available symbols for JavaScript resolve. TypeScript resolve is not supported. Please note that these symbols will override any normally available global JavaScript symbols.\"\n        }\n      },\n      \"patternProperties\": {\n        \"^(?!pattern$).*$\": {\n          \"$ref\": \"#/definitions/generic-js-contributions\"\n        }\n      }\n    },\n    \"js\": {\n      \"type\": \"object\",\n      \"description\": \"Contains contributions to JS namespace. It's property names represent symbol kinds, its property values contain list of contributions of particular kind. There are 2 predefined kinds, which integrate directly with IDE - properties and events.\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/js-contributions-host\"\n        }\n      ]\n    },\n    \"js-property\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/generic-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/js-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"read-only\": {\n          \"description\": \"Specifies whether the property is read only.\",\n          \"type\": \"boolean\"\n        }\n      }\n    },\n    \"js-symbol\": {\n      \"type\": \"object\",\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/typed-contribution\"\n        },\n        {\n          \"$ref\": \"#/definitions/js-contributions-host\"\n        }\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"description\": \"Kind of the symbol. Default is variable.\",\n          \"type\": \"string\",\n          \"enum\": [\n            \"Variable\",\n            \"Function\",\n            \"Namespace\",\n            \"Class\",\n            \"Interface\",\n            \"Enum\",\n            \"Alias\",\n            \"Module\"\n          ]\n        }\n      }\n    },\n    \"deprecated-types-syntax\": {\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/js-types-syntax\"\n        }\n      ],\n      \"description\": \"Deprecated, use top-level js-types-syntax property.\",\n      \"deprecationMessage\": \"Use top-level js-types-syntax property.\"\n    },\n    \"deprecated-description-markup\": {\n      \"description\": \"Deprecated, use top-level property.\",\n      \"deprecationMessage\": \"Use top-level property.\",\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/definitions/description-markup\"\n        }\n      ]\n    },\n    \"deprecated-html-attribute-vue-argument\": {\n      \"type\": \"object\",\n      \"description\": \"Deprecated vue-specific property - contribute Vue directives to /contributions/html/vue-directives\",\n      \"deprecationMessage\": \"Contribute Vue directives to /contributions/html/vue-directives\",\n      \"properties\": {\n        \"pattern\": {\n          \"$ref\": \"#/definitions/name-pattern-root\"\n        },\n        \"description\": {\n          \"$ref\": \"#/definitions/description\"\n        },\n        \"doc-url\": {\n          \"$ref\": \"#/definitions/doc-url\"\n        },\n        \"required\": {\n          \"description\": \"Whether directive requires an argument\",\n          \"type\": \"boolean\",\n          \"default\": false\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"deprecated-html-attribute-vue-modifier\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"name\": {\n          \"$ref\": \"#/definitions/name\"\n        },\n        \"pattern\": {\n          \"$ref\": \"#/definitions/name-pattern-root\"\n        },\n        \"description\": {\n          \"$ref\": \"#/definitions/description\"\n        },\n        \"doc-url\": {\n          \"$ref\": \"#/definitions/doc-url\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"additionalProperties\": false\n    }\n  }\n}\n\n<!-- File: tools/intellij-plugin/src/main/resources/datastar-attributes.web-types.json (Tokens: ~6560 | Category: anthropic-skill) -->\n{\n  \"$schema\": \"../../../../schema.json\",\n  \"name\": \"Datastar\",\n  \"version\": \"1.0.0\",\n  \"js-types-syntax\": \"typescript\",\n  \"description-markup\": \"markdown\",\n  \"default-icon\": \"icon.png\",\n  \"contributions\": {\n    \"js\": {\n      \"datastar-bind-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        }\n      ],\n      \"datastar-class-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the class\"\n        }\n      ],\n      \"datastar-computed-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        }\n      ],\n      \"datastar-ignore-modifiers\": [\n        {\n          \"name\": \"self\",\n          \"description\": \"Only ignore the element itself, not its descendants\"\n        }\n      ],\n      \"datastar-indicator-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        }\n      ],\n      \"datastar-init-modifiers\": [\n        {\n          \"name\": \"delay\",\n          \"description\": \"Delay the event listener\"\n        },\n        {\n          \"name\": \"delay.1s\",\n          \"description\": \"Delay for 1 second\"\n        },\n        {\n          \"name\": \"viewtransition\",\n          \"description\": \"Wraps the expression in `document.startViewTransition()`\"\n        }\n      ],\n      \"datastar-json-signals-modifiers\": [\n        {\n          \"name\": \"terse\",\n          \"description\": \"Outputs a more compact JSON format\"\n        }\n      ],\n      \"datastar-on-modifiers\": [\n        {\n          \"name\": \"capture\",\n          \"description\": \"Use a capture event listener\"\n        },\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the event name\"\n        },\n        {\n          \"name\": \"debounce\",\n          \"description\": \"Debounce the event listener\"\n        },\n        {\n          \"name\": \"debounce.500ms\",\n          \"description\": \"Debounce for 1000 milliseconds\"\n        },\n        {\n          \"name\": \"debounce.1s\",\n          \"description\": \"Debounce for 1 second\"\n        },\n        {\n          \"name\": \"debounce.leading\",\n          \"description\": \"Debounce with leading edge\"\n        },\n        {\n          \"name\": \"debounce.notrailing\",\n          \"description\": \"Debounce without trailing edge\"\n        },\n        {\n          \"name\": \"once\",\n          \"description\": \"Only trigger the event listener once\"\n        },\n        {\n          \"name\": \"outside\",\n          \"description\": \"Triggers when the event is outside the element\"\n        },\n        {\n          \"name\": \"passive\",\n          \"description\": \"Do not call `preventDefault` on the event listener\"\n        },\n        {\n          \"name\": \"throttle\",\n          \"description\": \"Throttle the event listener\"\n        },\n        {\n          \"name\": \"throttle.500ms\",\n          \"description\": \"Throttle for 500 milliseconds\"\n        },\n        {\n          \"name\": \"throttle.1s\",\n          \"description\": \"Throttle for 1 second\"\n        },\n        {\n          \"name\": \"throttle.noleading\",\n          \"description\": \"Throttle without leading edge\"\n        },\n        {\n          \"name\": \"throttle.trailing\",\n          \"description\": \"Throttle without trailing edge\"\n        },\n        {\n          \"name\": \"viewtransition\",\n          \"description\": \"Wraps the expression in `document.startViewTransition()` when the View Transition API is available\"\n        },\n        {\n          \"name\": \"window\",\n          \"description\": \"Attaches the event listener to the `window` element\"\n        }\n      ],\n      \"datastar-on-intersect-modifiers\": [\n        {\n          \"name\": \"full\",\n          \"description\": \"Trigger when the full element is visible\"\n        },\n        {\n          \"name\": \"half\",\n          \"description\": \"Trigger when half of the element is visible\"\n        },\n        {\n          \"name\": \"once\",\n          \"description\": \"Only trigger the event once\"\n        },\n        {\n          \"name\": \"viewtransition\",\n          \"description\": \"Wraps the expression in `document.startViewTransition()`\"\n        }\n      ],\n      \"datastar-on-interval-modifiers\": [\n        {\n          \"name\": \"duration\",\n          \"description\": \"The interval duration\"\n        },\n        {\n          \"name\": \"duration.500ms\",\n          \"description\": \"Set an interval duration of 500 milliseconds\"\n        },\n        {\n          \"name\": \"viewtransition\",\n          \"description\": \"Wraps the expression in `document.startViewTransition()`\"\n        }\n      ],\n      \"datastar-on-timing-modifiers\": [\n        {\n          \"name\": \"debounce\",\n          \"description\": \"Debounce the event listener\"\n        },\n        {\n          \"name\": \"debounce.500ms\",\n          \"description\": \"Debounce for 1000 milliseconds\"\n        },\n        {\n          \"name\": \"debounce.1s\",\n          \"description\": \"Debounce for 1 second\"\n        },\n        {\n          \"name\": \"debounce.leading\",\n          \"description\": \"Debounce with leading edge\"\n        },\n        {\n          \"name\": \"debounce.notrailing\",\n          \"description\": \"Debounce without trailing edge\"\n        },\n        {\n          \"name\": \"throttle\",\n          \"description\": \"Throttle the event listener\"\n        },\n        {\n          \"name\": \"throttle.500ms\",\n          \"description\": \"Throttle for 500 milliseconds\"\n        },\n        {\n          \"name\": \"throttle.1s\",\n          \"description\": \"Throttle for 1 second\"\n        },\n        {\n          \"name\": \"throttle.noleading\",\n          \"description\": \"Throttle without leading edge\"\n        },\n        {\n          \"name\": \"throttle.trailing\",\n          \"description\": \"Throttle without trailing edge\"\n        }\n      ],\n      \"datastar-persist-modifiers\": [\n        {\n          \"name\": \"session\",\n          \"description\": \"Persists signals values in Session Storage\"\n        }\n      ],\n      \"datastar-query-string-modifiers\": [\n        {\n          \"name\": \"filter\",\n          \"description\": \"Filters out empty values\"\n        },\n        {\n          \"name\": \"history\",\n          \"description\": \"Enables history support\"\n        }\n      ],\n      \"datastar-ref-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        }\n      ],\n      \"datastar-scroll-into-view-modifiers\": [\n        {\n          \"name\": \"auto\",\n          \"description\": \"Scrolling is determined by the computed scroll-behavior CSS property\"\n        },\n        {\n          \"name\": \"instant\",\n          \"description\": \"Scrolling should be instant\"\n        },\n        {\n          \"name\": \"focus\",\n          \"description\": \"Focus the element after scrolling\"\n        },\n        {\n          \"name\": \"hcenter\",\n          \"description\": \"Scroll to the horizontal center of the element\"\n        },\n        {\n          \"name\": \"hend\",\n          \"description\": \"Scroll to the right of the element\"\n        },\n        {\n          \"name\": \"hnearest\",\n          \"description\": \"Scroll to the nearest horizontal edge of the element\"\n        },\n        {\n          \"name\": \"hstart\",\n          \"description\": \"Scroll to the left of the element\"\n        },\n        {\n          \"name\": \"smooth\",\n          \"description\": \"Scrolling should be animate smoothly\"\n        },\n        {\n          \"name\": \"vstart\",\n          \"description\": \"Scroll to the top of the element\"\n        },\n        {\n          \"name\": \"vcenter\",\n          \"description\": \"Scroll to the vertical center of the element\"\n        },\n        {\n          \"name\": \"vend\",\n          \"description\": \"Scroll to the bottom of the element\"\n        },\n        {\n          \"name\": \"vnearest\",\n          \"description\": \"Scroll to the nearest vertical edge of the element\"\n        }\n      ],\n      \"datastar-signals-modifiers\": [\n        {\n          \"name\": \"case\",\n          \"description\": \"Modify the casing of the signal name\"\n        },\n        {\n          \"name\": \"ifmissing\",\n          \"description\": \"Only set the signals if the key does not exist. This is useful for setting defaults without overwriting existing values\"\n        }\n      ]\n    },\n    \"html\": {\n      \"attributes\": [\n        {\n          \"name\": \"data-attr:*\",\n          \"virtual\": true,\n          \"description\": \"Sets an element’s attribute value based on an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-attr\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"items\": [\n                  {\n                    \"path\": \"/html/attributes\",\n                    \"includeVirtual\": false\n                  }\n                ],\n                \"template\": [\n                  \"data-attr:\",\n                  \"$...\",\n                  \"#item:event name\"\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-attr\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-bind:*\",\n          \"virtual\": true,\n          \"description\": \"Creates a new signal and enables two-way binding between it and the element.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-bind\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-bind:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-bind-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\",\n                \"required\": false\n              },\n              {\n                \"template\": [\n                  \"data-bind\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-class:*\",\n          \"virtual\": true,\n          \"description\": \"Adds or removes classes from an element based on an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-class\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-class:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-class-modifiers\",\n                    \"template\": [\n                      \"data-class:\",\n                      \"$...\",\n                      \"#item:event name\"\n                    ],\n                    \"priority\": \"normal\"\n                  }\n                ]\n              },\n              {\n                \"template\": [\n                  \"data-class\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-computed:*\",\n          \"virtual\": true,\n          \"description\": \"Creates a signal that is computed based on an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-computed\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-computed:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-computed-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-computed\",\n                  {\n                    \"items\": \"/js/datastar-computed-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-custom-validity\",\n          \"virtual\": true,\n          \"description\": \"Adds custom validity to an element using an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-custom-validity\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-custom-validity\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-effect\",\n          \"virtual\": true,\n          \"description\": \"Executes an expression on page load and whenever any signals in the expression change.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-effect\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-effect\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-ignore\",\n          \"virtual\": true,\n          \"description\": \"Ignores an element and its descendants from being processed.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-ignore\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-ignore\",\n              {\n                \"items\": \"/js/datastar-ignore-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-ignore-morph\",\n          \"virtual\": true,\n          \"description\": \"Ignores an element when patching an element using the `morph` mode.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-ignore-morph\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-ignore-morph\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-indicator:*\",\n          \"virtual\": true,\n          \"description\": \"Creates a signal to track in-flight backend requests.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-indicator\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-indicator:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-indicator-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-indicator\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-init\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression whenever the element is initialised.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-init\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-init\",\n              {\n                \"items\": \"/js/datastar-init-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-json-signals\",\n          \"virtual\": true,\n          \"description\": \"Sets the text content of an element to a reactive JSON stringified version of signals.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-json-signals\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-json-signals\",\n              {\n                \"items\": \"/js/datastar-json-signals-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on:*\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression whenever an event is triggered on an element.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"items\": \"/js/events\",\n                \"template\": [\n                  \"data-on:\",\n                  \"$...\",\n                  \"#item:event name\",\n                  {\n                    \"items\": \"/js/datastar-on-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-on-intersect\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression on intersection with the viewport.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-intersect\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-intersect\",\n              {\n                \"items\": \"/js/datastar-on-intersect-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-interval\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression at a regular interval.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-interval\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-interval\",\n              {\n                \"items\": \"/js/datastar-on-interval-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-raf\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression on every `requestAnimationFrame` event.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-raf\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-raf\",\n              {\n                \"items\": \"/js/datastar-on-timing-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-resize\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression whenever an element’s dimensions change.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-resize\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-resize\",\n              {\n                \"items\": \"/js/datastar-on-timing-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-signal-patch\",\n          \"virtual\": true,\n          \"description\": \"Runs an expression whenever one or more signals are patched.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-signal-patch\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-signal-patch\",\n              {\n                \"items\": \"/js/datastar-on-timing-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-on-signal-patch-filter\",\n          \"virtual\": true,\n          \"description\": \"Filters which signals to watch when using the `data-on-signal-patch` attribute.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-on-signal-patch-filter\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-on-signal-patch-filter\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-persist:*\",\n          \"virtual\": true,\n          \"description\": \"Persists all signals in local storage.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-persist\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-persist:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-persist\",\n                  {\n                    \"items\": \"/js/datastar-persist-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-preserve-attr\",\n          \"virtual\": true,\n          \"description\": \"Preserves the value of an attribute when patching elements using the `morph` mode.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-preserve-attr\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-preserve-attr\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-query-string\",\n          \"virtual\": true,\n          \"description\": \"Syncs query string params to signal values on page load, and syncs signal values to query string params on change.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-query-string\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-query-string\",\n              {\n                \"items\": \"/js/datastar-query-string-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-ref:*\",\n          \"virtual\": true,\n          \"description\": \"Creates a signal whose value references an element.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-ref\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-ref:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-ref-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-ref\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-replace-url\",\n          \"virtual\": true,\n          \"description\": \"Replaces the URL in the browser with an evaluated expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-replace-url\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-replace-url\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-scroll-into-view\",\n          \"virtual\": true,\n          \"description\": \"Scrolls the element into view.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-scroll-into-view\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": false\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-scroll-into-view\",\n              {\n                \"items\": \"/js/datastar-scroll-into-view-modifiers\",\n                \"template\": [\n                  \"__\",\n                  \"$...\",\n                  \"#item:modifier\"\n                ],\n                \"required\": false,\n                \"repeat\": true\n              }\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-show\",\n          \"virtual\": true,\n          \"description\": \"Shows or hides an element based on whether an expression evaluates to `true` or `false`.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-show\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"boolean\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-show\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-signals:*\",\n          \"virtual\": true,\n          \"description\": \"Merges a signal into the existing signals.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-signals\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-signals:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  },\n                  {\n                    \"items\": \"/js/datastar-signals-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-signals\",\n                  {\n                    \"items\": \"/js/datastar-signals-modifiers\",\n                    \"template\": [\n                      \"__\",\n                      \"$...\",\n                      \"#item:modifier\"\n                    ],\n                    \"required\": false,\n                    \"repeat\": true\n                  }\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-style:*\",\n          \"virtual\": true,\n          \"description\": \"Adds or removes inline CSS styles from an element based on an expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-style\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": [\n              \"string\",\n              \"object\"\n            ],\n            \"required\": true\n          },\n          \"pattern\": {\n            \"or\": [\n              {\n                \"template\": [\n                  \"data-style:\",\n                  {\n                    \"regex\": \"[-a-z0-9]+\"\n                  }\n                ],\n                \"priority\": \"normal\"\n              },\n              {\n                \"template\": [\n                  \"data-style\"\n                ],\n                \"priority\": \"normal\"\n              }\n            ]\n          }\n        },\n        {\n          \"name\": \"data-text\",\n          \"virtual\": true,\n          \"description\": \"Sets the text content of an element to the evaluated expression.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-text\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-text\"\n            ],\n            \"priority\": \"normal\"\n          }\n        },\n        {\n          \"name\": \"data-view-transition\",\n          \"virtual\": true,\n          \"description\": \"Sets the value of `view-transition-name` for use with the View Transition API.\",\n          \"doc-url\": \"https://data-star.dev/reference/attributes#data-view-transition\",\n          \"value\": {\n            \"kind\": \"expression\",\n            \"type\": \"string\",\n            \"required\": true\n          },\n          \"pattern\": {\n            \"template\": [\n              \"data-view-transition\"\n            ],\n            \"priority\": \"normal\"\n          }\n        }\n      ]\n    }\n  }\n}\n\n<!-- File: tools/vscode-extension/LICENSE.md (Tokens: ~198 | Category: anthropic-skill) -->\nCopyright © Ben Croker\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n<!-- File: tools/vscode-extension/package-lock.json (Tokens: ~19834 | Category: anthropic-skill) -->\n{\n  \"name\": \"datastar-vscode\",\n  \"version\": \"1.2.1\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"datastar-vscode\",\n      \"version\": \"1.2.1\",\n      \"license\": \"MIT\",\n      \"devDependencies\": {\n        \"@vscode/vsce\": \"^3.7.1\"\n      },\n      \"engines\": {\n        \"vscode\": \"^1.63.0\"\n      }\n    },\n    \"node_modules/@azu/format-text\": {\n      \"version\": \"1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz\",\n      \"integrity\": \"sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==\",\n      \"dev\": true,\n      \"license\": \"BSD-3-Clause\"\n    },\n    \"node_modules/@azu/style-format\": {\n      \"version\": \"1.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.1.tgz\",\n      \"integrity\": \"sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==\",\n      \"dev\": true,\n      \"license\": \"WTFPL\",\n      \"dependencies\": {\n        \"@azu/format-text\": \"^1.0.1\"\n      }\n    },\n    \"node_modules/@azure/abort-controller\": {\n      \"version\": \"2.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz\",\n      \"integrity\": \"sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=18.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-auth\": {\n      \"version\": \"1.10.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz\",\n      \"integrity\": \"sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.1.2\",\n        \"@azure/core-util\": \"^1.13.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-client\": {\n      \"version\": \"1.10.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.1.tgz\",\n      \"integrity\": \"sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.1.2\",\n        \"@azure/core-auth\": \"^1.10.0\",\n        \"@azure/core-rest-pipeline\": \"^1.22.0\",\n        \"@azure/core-tracing\": \"^1.3.0\",\n        \"@azure/core-util\": \"^1.13.0\",\n        \"@azure/logger\": \"^1.3.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-rest-pipeline\": {\n      \"version\": \"1.22.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.1.tgz\",\n      \"integrity\": \"sha512-UVZlVLfLyz6g3Hy7GNDpooMQonUygH7ghdiSASOOHy97fKj/mPLqgDX7aidOijn+sCMU+WU8NjlPlNTgnvbcGA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.1.2\",\n        \"@azure/core-auth\": \"^1.10.0\",\n        \"@azure/core-tracing\": \"^1.3.0\",\n        \"@azure/core-util\": \"^1.13.0\",\n        \"@azure/logger\": \"^1.3.0\",\n        \"@typespec/ts-http-runtime\": \"^0.3.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-tracing\": {\n      \"version\": \"1.3.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz\",\n      \"integrity\": \"sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/core-util\": {\n      \"version\": \"1.13.1\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz\",\n      \"integrity\": \"sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.1.2\",\n        \"@typespec/ts-http-runtime\": \"^0.3.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/identity\": {\n      \"version\": \"4.12.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/identity/-/identity-4.12.0.tgz\",\n      \"integrity\": \"sha512-6vuh2R3Cte6SD6azNalLCjIDoryGdcvDVEV7IDRPtm5lHX5ffkDlIalaoOp5YJU08e4ipjJENel20kSMDLAcug==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/abort-controller\": \"^2.0.0\",\n        \"@azure/core-auth\": \"^1.9.0\",\n        \"@azure/core-client\": \"^1.9.2\",\n        \"@azure/core-rest-pipeline\": \"^1.17.0\",\n        \"@azure/core-tracing\": \"^1.0.0\",\n        \"@azure/core-util\": \"^1.11.0\",\n        \"@azure/logger\": \"^1.0.0\",\n        \"@azure/msal-browser\": \"^4.2.0\",\n        \"@azure/msal-node\": \"^3.5.0\",\n        \"open\": \"^10.1.0\",\n        \"tslib\": \"^2.2.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/logger\": {\n      \"version\": \"1.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz\",\n      \"integrity\": \"sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@typespec/ts-http-runtime\": \"^0.3.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@azure/msal-browser\": {\n      \"version\": \"4.24.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.24.0.tgz\",\n      \"integrity\": \"sha512-BNoiUEx4olj16U9ZiquvIhG1dZBnwWSzSXiSclq/9qiFQXYeLOKqEaEv98+xLXJ3oLw9APwHTR1eY2Qk0v6XBQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/msal-common\": \"15.13.0\"\n      },\n      \"engines\": {\n        \"node\": \">=0.8.0\"\n      }\n    },\n    \"node_modules/@azure/msal-common\": {\n      \"version\": \"15.13.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.13.0.tgz\",\n      \"integrity\": \"sha512-8oF6nj02qX7eE/6+wFT5NluXRHc05AgdCC3fJnkjiJooq8u7BcLmxaYYSwc2AfEkWRMRi6Eyvvbeqk4U4412Ag==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=0.8.0\"\n      }\n    },\n    \"node_modules/@azure/msal-node\": {\n      \"version\": \"3.8.0\",\n      \"resolved\": \"https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.0.tgz\",\n      \"integrity\": \"sha512-23BXm82Mp5XnRhrcd4mrHa0xuUNRp96ivu3nRatrfdAqjoeWAGyD0eEAafxAOHAEWWmdlyFK4ELFcdziXyw2sA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/msal-common\": \"15.13.0\",\n        \"jsonwebtoken\": \"^9.0.0\",\n        \"uuid\": \"^8.3.0\"\n      },\n      \"engines\": {\n        \"node\": \">=16\"\n      }\n    },\n    \"node_modules/@babel/code-frame\": {\n      \"version\": \"7.27.1\",\n      \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n      \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@babel/helper-validator-identifier\": \"^7.27.1\",\n        \"js-tokens\": \"^4.0.0\",\n        \"picocolors\": \"^1.1.1\"\n      },\n      \"engines\": {\n        \"node\": \">=6.9.0\"\n      }\n    },\n    \"node_modules/@babel/helper-validator-identifier\": {\n      \"version\": \"7.28.5\",\n      \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz\",\n      \"integrity\": \"sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=6.9.0\"\n      }\n    },\n    \"node_modules/@isaacs/balanced-match\": {\n      \"version\": \"4.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz\",\n      \"integrity\": \"sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \"20 || >=22\"\n      }\n    },\n    \"node_modules/@isaacs/brace-expansion\": {\n      \"version\": \"5.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz\",\n      \"integrity\": \"sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@isaacs/balanced-match\": \"^4.0.1\"\n      },\n      \"engines\": {\n        \"node\": \"20 || >=22\"\n      }\n    },\n    \"node_modules/@isaacs/cliui\": {\n      \"version\": \"8.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz\",\n      \"integrity\": \"sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==\",\n      \"dev\": true,\n      \"license\": \"ISC\",\n      \"dependencies\": {\n        \"string-width\": \"^5.1.2\",\n        \"string-width-cjs\": \"npm:string-width@^4.2.0\",\n        \"strip-ansi\": \"^7.0.1\",\n        \"strip-ansi-cjs\": \"npm:strip-ansi@^6.0.1\",\n        \"wrap-ansi\": \"^8.1.0\",\n        \"wrap-ansi-cjs\": \"npm:wrap-ansi@^7.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=12\"\n      }\n    },\n    \"node_modules/@isaacs/cliui/node_modules/emoji-regex\": {\n      \"version\": \"9.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz\",\n      \"integrity\": \"sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@isaacs/cliui/node_modules/string-width\": {\n      \"version\": \"5.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz\",\n      \"integrity\": \"sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"eastasianwidth\": \"^0.2.0\",\n        \"emoji-regex\": \"^9.2.2\",\n        \"strip-ansi\": \"^7.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=12\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/@nodelib/fs.scandir\": {\n      \"version\": \"2.1.5\",\n      \"resolved\": \"https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz\",\n      \"integrity\": \"sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@nodelib/fs.stat\": \"2.0.5\",\n        \"run-parallel\": \"^1.1.9\"\n      },\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/@nodelib/fs.stat\": {\n      \"version\": \"2.0.5\",\n      \"resolved\": \"https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz\",\n      \"integrity\": \"sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/@nodelib/fs.walk\": {\n      \"version\": \"1.2.8\",\n      \"resolved\": \"https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz\",\n      \"integrity\": \"sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@nodelib/fs.scandir\": \"2.1.5\",\n        \"fastq\": \"^1.6.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/@secretlint/config-creator\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-10.2.2.tgz\",\n      \"integrity\": \"sha512-BynOBe7Hn3LJjb3CqCHZjeNB09s/vgf0baBaHVw67w7gHF0d25c3ZsZ5+vv8TgwSchRdUCRrbbcq5i2B1fJ2QQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/types\": \"^10.2.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/config-loader\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-10.2.2.tgz\",\n      \"integrity\": \"sha512-ndjjQNgLg4DIcMJp4iaRD6xb9ijWQZVbd9694Ol2IszBIbGPPkwZHzJYKICbTBmh6AH/pLr0CiCaWdGJU7RbpQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/profiler\": \"^10.2.2\",\n        \"@secretlint/resolver\": \"^10.2.2\",\n        \"@secretlint/types\": \"^10.2.2\",\n        \"ajv\": \"^8.17.1\",\n        \"debug\": \"^4.4.1\",\n        \"rc-config-loader\": \"^4.1.3\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/core\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/core/-/core-10.2.2.tgz\",\n      \"integrity\": \"sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/profiler\": \"^10.2.2\",\n        \"@secretlint/types\": \"^10.2.2\",\n        \"debug\": \"^4.4.1\",\n        \"structured-source\": \"^4.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/formatter\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/formatter/-/formatter-10.2.2.tgz\",\n      \"integrity\": \"sha512-10f/eKV+8YdGKNQmoDUD1QnYL7TzhI2kzyx95vsJKbEa8akzLAR5ZrWIZ3LbcMmBLzxlSQMMccRmi05yDQ5YDA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/resolver\": \"^10.2.2\",\n        \"@secretlint/types\": \"^10.2.2\",\n        \"@textlint/linter-formatter\": \"^15.2.0\",\n        \"@textlint/module-interop\": \"^15.2.0\",\n        \"@textlint/types\": \"^15.2.0\",\n        \"chalk\": \"^5.4.1\",\n        \"debug\": \"^4.4.1\",\n        \"pluralize\": \"^8.0.0\",\n        \"strip-ansi\": \"^7.1.0\",\n        \"table\": \"^6.9.0\",\n        \"terminal-link\": \"^4.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/formatter/node_modules/chalk\": {\n      \"version\": \"5.6.2\",\n      \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz\",\n      \"integrity\": \"sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \"^12.17.0 || ^14.13 || >=16.0.0\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n      }\n    },\n    \"node_modules/@secretlint/node\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/node/-/node-10.2.2.tgz\",\n      \"integrity\": \"sha512-eZGJQgcg/3WRBwX1bRnss7RmHHK/YlP/l7zOQsrjexYt6l+JJa5YhUmHbuGXS94yW0++3YkEJp0kQGYhiw1DMQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/config-loader\": \"^10.2.2\",\n        \"@secretlint/core\": \"^10.2.2\",\n        \"@secretlint/formatter\": \"^10.2.2\",\n        \"@secretlint/profiler\": \"^10.2.2\",\n        \"@secretlint/source-creator\": \"^10.2.2\",\n        \"@secretlint/types\": \"^10.2.2\",\n        \"debug\": \"^4.4.1\",\n        \"p-map\": \"^7.0.3\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/profiler\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/profiler/-/profiler-10.2.2.tgz\",\n      \"integrity\": \"sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@secretlint/resolver\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/resolver/-/resolver-10.2.2.tgz\",\n      \"integrity\": \"sha512-3md0cp12e+Ae5V+crPQYGd6aaO7ahw95s28OlULGyclyyUtf861UoRGS2prnUrKh7MZb23kdDOyGCYb9br5e4w==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@secretlint/secretlint-formatter-sarif\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-10.2.2.tgz\",\n      \"integrity\": \"sha512-ojiF9TGRKJJw308DnYBucHxkpNovDNu1XvPh7IfUp0A12gzTtxuWDqdpuVezL7/IP8Ua7mp5/VkDMN9OLp1doQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"node-sarif-builder\": \"^3.2.0\"\n      }\n    },\n    \"node_modules/@secretlint/secretlint-rule-no-dotenv\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-10.2.2.tgz\",\n      \"integrity\": \"sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/types\": \"^10.2.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/secretlint-rule-preset-recommend\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-10.2.2.tgz\",\n      \"integrity\": \"sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/source-creator\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-10.2.2.tgz\",\n      \"integrity\": \"sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@secretlint/types\": \"^10.2.2\",\n        \"istextorbinary\": \"^9.5.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@secretlint/types\": {\n      \"version\": \"10.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@secretlint/types/-/types-10.2.2.tgz\",\n      \"integrity\": \"sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@sindresorhus/merge-streams\": {\n      \"version\": \"2.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz\",\n      \"integrity\": \"sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/@textlint/ast-node-types\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.5.0.tgz\",\n      \"integrity\": \"sha512-K0LEuuTo4rza8yDrlYkRdXLao8Iz/QBMsQdIxRrOOrLYb4HAtZaypZ78c+J6rDA1UlGxadZVLmkkiv4KV5fMKQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@textlint/linter-formatter\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.5.0.tgz\",\n      \"integrity\": \"sha512-DPTm2+VXKID41qKQWagg/4JynM6hEEpvbq0PlGsEoC4Xm7IqXIxFym3mSf5+ued0cuiIV1hR9kgXjqGdP035tw==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azu/format-text\": \"^1.0.2\",\n        \"@azu/style-format\": \"^1.0.1\",\n        \"@textlint/module-interop\": \"15.5.0\",\n        \"@textlint/resolver\": \"15.5.0\",\n        \"@textlint/types\": \"15.5.0\",\n        \"chalk\": \"^4.1.2\",\n        \"debug\": \"^4.4.3\",\n        \"js-yaml\": \"^4.1.1\",\n        \"lodash\": \"^4.17.21\",\n        \"pluralize\": \"^2.0.0\",\n        \"string-width\": \"^4.2.3\",\n        \"strip-ansi\": \"^6.0.1\",\n        \"table\": \"^6.9.0\",\n        \"text-table\": \"^0.2.0\"\n      }\n    },\n    \"node_modules/@textlint/linter-formatter/node_modules/ansi-regex\": {\n      \"version\": \"5.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n      \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/@textlint/linter-formatter/node_modules/pluralize\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz\",\n      \"integrity\": \"sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@textlint/linter-formatter/node_modules/strip-ansi\": {\n      \"version\": \"6.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n      \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ansi-regex\": \"^5.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/@textlint/module-interop\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.5.0.tgz\",\n      \"integrity\": \"sha512-rqfouEhBEgZlR9umswWXXRBcmmSM28Trpr9b0duzgehKYVc7wSQCuQMagr6YBJa2NRMfRNinupusbJXMg0ij2A==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@textlint/resolver\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/resolver/-/resolver-15.5.0.tgz\",\n      \"integrity\": \"sha512-kK5nFbg5N3kVoZExQI/dnYjCInmTltvXDnuCRrBxHI01i6kO/o8R7Lc2aFkAZ6/NUZuRPalkyDdwZJke4/R2wg==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@textlint/types\": {\n      \"version\": \"15.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@textlint/types/-/types-15.5.0.tgz\",\n      \"integrity\": \"sha512-EjAPbuA+3NyQ9WyFP7iUlddi35F3mGrf4tb4cZM0nWywbtEJ3+XAYqL+5RsF0qFeSguxGir09NdZOWrG9wVOUQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@textlint/ast-node-types\": \"15.5.0\"\n      }\n    },\n    \"node_modules/@types/normalize-package-data\": {\n      \"version\": \"2.4.4\",\n      \"resolved\": \"https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz\",\n      \"integrity\": \"sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@types/sarif\": {\n      \"version\": \"2.1.7\",\n      \"resolved\": \"https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz\",\n      \"integrity\": \"sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@typespec/ts-http-runtime\": {\n      \"version\": \"0.3.1\",\n      \"resolved\": \"https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.1.tgz\",\n      \"integrity\": \"sha512-SnbaqayTVFEA6/tYumdF0UmybY0KHyKwGPBXnyckFlrrKdhWFrL3a2HIPXHjht5ZOElKGcXfD2D63P36btb+ww==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"http-proxy-agent\": \"^7.0.0\",\n        \"https-proxy-agent\": \"^7.0.0\",\n        \"tslib\": \"^2.6.2\"\n      },\n      \"engines\": {\n        \"node\": \">=20.0.0\"\n      }\n    },\n    \"node_modules/@vscode/vsce\": {\n      \"version\": \"3.7.1\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce/-/vsce-3.7.1.tgz\",\n      \"integrity\": \"sha512-OTm2XdMt2YkpSn2Nx7z2EJtSuhRHsTPYsSK59hr3v8jRArK+2UEoju4Jumn1CmpgoBLGI6ReHLJ/czYltNUW3g==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@azure/identity\": \"^4.1.0\",\n        \"@secretlint/node\": \"^10.1.2\",\n        \"@secretlint/secretlint-formatter-sarif\": \"^10.1.2\",\n        \"@secretlint/secretlint-rule-no-dotenv\": \"^10.1.2\",\n        \"@secretlint/secretlint-rule-preset-recommend\": \"^10.1.2\",\n        \"@vscode/vsce-sign\": \"^2.0.0\",\n        \"azure-devops-node-api\": \"^12.5.0\",\n        \"chalk\": \"^4.1.2\",\n        \"cheerio\": \"^1.0.0-rc.9\",\n        \"cockatiel\": \"^3.1.2\",\n        \"commander\": \"^12.1.0\",\n        \"form-data\": \"^4.0.0\",\n        \"glob\": \"^11.0.0\",\n        \"hosted-git-info\": \"^4.0.2\",\n        \"jsonc-parser\": \"^3.2.0\",\n        \"leven\": \"^3.1.0\",\n        \"markdown-it\": \"^14.1.0\",\n        \"mime\": \"^1.3.4\",\n        \"minimatch\": \"^3.0.3\",\n        \"parse-semver\": \"^1.1.1\",\n        \"read\": \"^1.0.7\",\n        \"secretlint\": \"^10.1.2\",\n        \"semver\": \"^7.5.2\",\n        \"tmp\": \"^0.2.3\",\n        \"typed-rest-client\": \"^1.8.4\",\n        \"url-join\": \"^4.0.1\",\n        \"xml2js\": \"^0.5.0\",\n        \"yauzl\": \"^2.3.1\",\n        \"yazl\": \"^2.2.2\"\n      },\n      \"bin\": {\n        \"vsce\": \"vsce\"\n      },\n      \"engines\": {\n        \"node\": \">= 20\"\n      },\n      \"optionalDependencies\": {\n        \"keytar\": \"^7.7.0\"\n      }\n    },\n    \"node_modules/@vscode/vsce-sign\": {\n      \"version\": \"2.0.8\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.8.tgz\",\n      \"integrity\": \"sha512-H7p8E11cZMj6mt8xIi3QXZ7dSU/2MH3Y7c+5JfUhHAV4xfaPNc8ozwLVK282c6ah596KoIJIdPUlNHV7Qs/5JA==\",\n      \"dev\": true,\n      \"hasInstallScript\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optionalDependencies\": {\n        \"@vscode/vsce-sign-alpine-arm64\": \"2.0.6\",\n        \"@vscode/vsce-sign-alpine-x64\": \"2.0.6\",\n        \"@vscode/vsce-sign-darwin-arm64\": \"2.0.2\",\n        \"@vscode/vsce-sign-darwin-x64\": \"2.0.2\",\n        \"@vscode/vsce-sign-linux-arm\": \"2.0.6\",\n        \"@vscode/vsce-sign-linux-arm64\": \"2.0.6\",\n        \"@vscode/vsce-sign-linux-x64\": \"2.0.6\",\n        \"@vscode/vsce-sign-win32-arm64\": \"2.0.6\",\n        \"@vscode/vsce-sign-win32-x64\": \"2.0.6\"\n      }\n    },\n    \"node_modules/@vscode/vsce-sign-alpine-arm64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz\",\n      \"integrity\": \"sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"alpine\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-alpine-x64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz\",\n      \"integrity\": \"sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"alpine\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-darwin-arm64\": {\n      \"version\": \"2.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.2.tgz\",\n      \"integrity\": \"sha512-rz8F4pMcxPj8fjKAJIfkUT8ycG9CjIp888VY/6pq6cuI2qEzQ0+b5p3xb74CJnBbSC0p2eRVoe+WgNCAxCLtzQ==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"darwin\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-darwin-x64\": {\n      \"version\": \"2.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz\",\n      \"integrity\": \"sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"darwin\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-linux-arm\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz\",\n      \"integrity\": \"sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==\",\n      \"cpu\": [\n        \"arm\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-linux-arm64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz\",\n      \"integrity\": \"sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-linux-x64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz\",\n      \"integrity\": \"sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-win32-arm64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz\",\n      \"integrity\": \"sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"win32\"\n      ]\n    },\n    \"node_modules/@vscode/vsce-sign-win32-x64\": {\n      \"version\": \"2.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz\",\n      \"integrity\": \"sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"SEE LICENSE IN LICENSE.txt\",\n      \"optional\": true,\n      \"os\": [\n        \"win32\"\n      ]\n    },\n    \"node_modules/agent-base\": {\n      \"version\": \"7.1.4\",\n      \"resolved\": \"https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz\",\n      \"integrity\": \"sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 14\"\n      }\n    },\n    \"node_modules/ajv\": {\n      \"version\": \"8.17.1\",\n      \"resolved\": \"https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz\",\n      \"integrity\": \"sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"fast-deep-equal\": \"^3.1.3\",\n        \"fast-uri\": \"^3.0.1\",\n        \"json-schema-traverse\": \"^1.0.0\",\n        \"require-from-string\": \"^2.0.2\"\n      },\n      \"funding\": {\n        \"type\": \"github\",\n        \"url\": \"https://github.com/sponsors/epoberezkin\"\n      }\n    },\n    \"node_modules/ansi-escapes\": {\n      \"version\": \"7.2.0\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz\",\n      \"integrity\": \"sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"environment\": \"^1.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/ansi-regex\": {\n      \"version\": \"6.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz\",\n      \"integrity\": \"sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=12\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/ansi-regex?sponsor=1\"\n      }\n    },\n    \"node_modules/ansi-styles\": {\n      \"version\": \"4.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n      \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"color-convert\": \"^2.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=8\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n      }\n    },\n    \"node_modules/argparse\": {\n      \"version\": \"2.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz\",\n      \"integrity\": \"sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==\",\n      \"dev\": true,\n      \"license\": \"Python-2.0\"\n    },\n    \"node_modules/astral-regex\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz\",\n      \"integrity\": \"sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/asynckit\": {\n      \"version\": \"0.4.0\",\n      \"resolved\": \"https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz\",\n      \"integrity\": \"sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/azure-devops-node-api\": {\n      \"version\": \"12.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz\",\n      \"integrity\": \"sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"tunnel\": \"0.0.6\",\n        \"typed-rest-client\": \"^1.8.4\"\n      }\n    },\n    \"node_modules/balanced-match\": {\n      \"version\": \"1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz\",\n      \"integrity\": \"sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/base64-js\": {\n      \"version\": \"1.5.1\",\n      \"resolved\": \"https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz\",\n      \"integrity\": \"sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==\",\n      \"dev\": true,\n      \"funding\": [\n        {\n          \"type\": \"github\",\n          \"url\": \"https://github.com/sponsors/feross\"\n        },\n        {\n          \"type\": \"patreon\",\n          \"url\": \"https://www.patreon.com/feross\"\n        },\n        {\n          \"type\": \"consulting\",\n          \"url\": \"https://feross.org/support\"\n        }\n      ],\n      \"license\": \"MIT\",\n      \"optional\": true\n    },\n    \"node_modules/binaryextensions\": {\n      \"version\": \"6.11.0\",\n      \"resolved\": \"https://registry.npmjs.org/binaryextensions/-/binaryextensions-6.11.0.tgz\",\n      \"integrity\": \"sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==\",\n      \"dev\": true,\n      \"license\": \"Artistic-2.0\",\n      \"dependencies\": {\n        \"editions\": \"^6.21.0\"\n      },\n      \"engines\": {\n        \"node\": \">=4\"\n      },\n      \"funding\": {\n        \"url\": \"https://bevry.me/fund\"\n      }\n    },\n    \"node_modules/bl\": {\n      \"version\": \"4.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/bl/-/bl-4.1.0.tgz\",\n      \"integrity\": \"sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"dependencies\": {\n        \"buffer\": \"^5.5.0\",\n        \"inherits\": \"^2.0.4\",\n        \"readable-stream\": \"^3.4.0\"\n      }\n    },\n    \"node_modules/boolbase\": {\n      \"version\": \"1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz\",\n      \"integrity\": \"sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==\",\n      \"dev\": true,\n      \"license\": \"ISC\"\n    },\n    \"node_modules/boundary\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz\",\n      \"integrity\": \"sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==\",\n      \"dev\": true,\n      \"license\": \"BSD-2-Clause\"\n    },\n    \"node_modules/brace-expansion\": {\n      \"version\": \"1.1.12\",\n      \"resolved\": \"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz\",\n      \"integrity\": \"sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"balanced-match\": \"^1.0.0\",\n        \"concat-map\": \"0.0.1\"\n      }\n    },\n    \"node_modules/braces\": {\n      \"version\": \"3.0.3\",\n      \"resolved\": \"https://registry.npmjs.org/braces/-/braces-3.0.3.tgz\",\n      \"integrity\": \"sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"fill-range\": \"^7.1.1\"\n      },\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/buffer\": {\n      \"version\": \"5.7.1\",\n      \"resolved\": \"https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz\",\n      \"integrity\": \"sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==\",\n      \"dev\": true,\n      \"funding\": [\n        {\n          \"type\": \"github\",\n          \"url\": \"https://github.com/sponsors/feross\"\n        },\n        {\n          \"type\": \"patreon\",\n          \"url\": \"https://www.patreon.com/feross\"\n        },\n        {\n          \"type\": \"consulting\",\n          \"url\": \"https://feross.org/support\"\n        }\n      ],\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"dependencies\": {\n        \"base64-js\": \"^1.3.1\",\n        \"ieee754\": \"^1.1.13\"\n      }\n    },\n    \"node_modules/buffer-crc32\": {\n      \"version\": \"0.2.13\",\n      \"resolved\": \"https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz\",\n      \"integrity\": \"sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \"*\"\n      }\n    },\n    \"node_modules/buffer-equal-constant-time\": {\n      \"version\": \"1.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz\",\n      \"integrity\": \"sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==\",\n      \"dev\": true,\n      \"license\": \"BSD-3-Clause\"\n    },\n    \"node_modules/bundle-name\": {\n      \"version\": \"4.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz\",\n      \"integrity\": \"sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"run-applescript\": \"^7.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/call-bind-apply-helpers\": {\n      \"version\": \"1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz\",\n      \"integrity\": \"sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"es-errors\": \"^1.3.0\",\n        \"function-bind\": \"^1.1.2\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/call-bound\": {\n      \"version\": \"1.0.4\",\n      \"resolved\": \"https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz\",\n      \"integrity\": \"sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"call-bind-apply-helpers\": \"^1.0.2\",\n        \"get-intrinsic\": \"^1.3.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/ljharb\"\n      }\n    },\n    \"node_modules/chalk\": {\n      \"version\": \"4.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n      \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ansi-styles\": \"^4.1.0\",\n        \"supports-color\": \"^7.1.0\"\n      },\n      \"engines\": {\n        \"node\": \">=10\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n      }\n    },\n    \"node_modules/cheerio\": {\n      \"version\": \"1.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz\",\n      \"integrity\": \"sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"cheerio-select\": \"^2.1.0\",\n        \"dom-serializer\": \"^2.0.0\",\n        \"domhandler\": \"^5.0.3\",\n        \"domutils\": \"^3.2.2\",\n        \"encoding-sniffer\": \"^0.2.1\",\n        \"htmlparser2\": \"^10.0.0\",\n        \"parse5\": \"^7.3.0\",\n        \"parse5-htmlparser2-tree-adapter\": \"^7.1.0\",\n        \"parse5-parser-stream\": \"^7.1.2\",\n        \"undici\": \"^7.12.0\",\n        \"whatwg-mimetype\": \"^4.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=20.18.1\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/cheeriojs/cheerio?sponsor=1\"\n      }\n    },\n    \"node_modules/cheerio-select\": {\n      \"version\": \"2.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz\",\n      \"integrity\": \"sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==\",\n      \"dev\": true,\n      \"license\": \"BSD-2-Clause\",\n      \"dependencies\": {\n        \"boolbase\": \"^1.0.0\",\n        \"css-select\": \"^5.1.0\",\n        \"css-what\": \"^6.1.0\",\n        \"domelementtype\": \"^2.3.0\",\n        \"domhandler\": \"^5.0.3\",\n        \"domutils\": \"^3.0.1\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/fb55\"\n      }\n    },\n    \"node_modules/chownr\": {\n      \"version\": \"1.1.4\",\n      \"resolved\": \"https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz\",\n      \"integrity\": \"sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==\",\n      \"dev\": true,\n      \"license\": \"ISC\",\n      \"optional\": true\n    },\n    \"node_modules/cockatiel\": {\n      \"version\": \"3.2.1\",\n      \"resolved\": \"https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz\",\n      \"integrity\": \"sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=16\"\n      }\n    },\n    \"node_modules/color-convert\": {\n      \"version\": \"2.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n      \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"color-name\": \"~1.1.4\"\n      },\n      \"engines\": {\n        \"node\": \">=7.0.0\"\n      }\n    },\n    \"node_modules/color-name\": {\n      \"version\": \"1.1.4\",\n      \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n      \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/combined-stream\": {\n      \"version\": \"1.0.8\",\n      \"resolved\": \"https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz\",\n      \"integrity\": \"sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"delayed-stream\": \"~1.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.8\"\n      }\n    },\n    \"node_modules/commander\": {\n      \"version\": \"12.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/commander/-/commander-12.1.0.tgz\",\n      \"integrity\": \"sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/concat-map\": {\n      \"version\": \"0.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz\",\n      \"integrity\": \"sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==\",\n      \"dev\": true,\n      \"license\": \"MIT\"\n    },\n    \"node_modules/cross-spawn\": {\n      \"version\": \"7.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz\",\n      \"integrity\": \"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"path-key\": \"^3.1.0\",\n        \"shebang-command\": \"^2.0.0\",\n        \"which\": \"^2.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/css-select\": {\n      \"version\": \"5.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz\",\n      \"integrity\": \"sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==\",\n      \"dev\": true,\n      \"license\": \"BSD-2-Clause\",\n      \"dependencies\": {\n        \"boolbase\": \"^1.0.0\",\n        \"css-what\": \"^6.1.0\",\n        \"domhandler\": \"^5.0.2\",\n        \"domutils\": \"^3.0.1\",\n        \"nth-check\": \"^2.0.1\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/fb55\"\n      }\n    },\n    \"node_modules/css-what\": {\n      \"version\": \"6.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz\",\n      \"integrity\": \"sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==\",\n      \"dev\": true,\n      \"license\": \"BSD-2-Clause\",\n      \"engines\": {\n        \"node\": \">= 6\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/fb55\"\n      }\n    },\n    \"node_modules/debug\": {\n      \"version\": \"4.4.3\",\n      \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n      \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ms\": \"^2.1.3\"\n      },\n      \"engines\": {\n        \"node\": \">=6.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"supports-color\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/decompress-response\": {\n      \"version\": \"6.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz\",\n      \"integrity\": \"sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"dependencies\": {\n        \"mimic-response\": \"^3.1.0\"\n      },\n      \"engines\": {\n        \"node\": \">=10\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/deep-extend\": {\n      \"version\": \"0.6.0\",\n      \"resolved\": \"https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz\",\n      \"integrity\": \"sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"engines\": {\n        \"node\": \">=4.0.0\"\n      }\n    },\n    \"node_modules/default-browser\": {\n      \"version\": \"5.2.1\",\n      \"resolved\": \"https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz\",\n      \"integrity\": \"sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"bundle-name\": \"^4.1.0\",\n        \"default-browser-id\": \"^5.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/default-browser-id\": {\n      \"version\": \"5.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz\",\n      \"integrity\": \"sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/define-lazy-prop\": {\n      \"version\": \"3.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz\",\n      \"integrity\": \"sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=12\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/delayed-stream\": {\n      \"version\": \"1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz\",\n      \"integrity\": \"sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=0.4.0\"\n      }\n    },\n    \"node_modules/detect-libc\": {\n      \"version\": \"2.1.1\",\n      \"resolved\":\n\n<!-- File: tools/vscode-extension/package.json (Tokens: ~1546 | Category: anthropic-skill) -->\n{\n  \"name\": \"datastar-vscode\",\n  \"version\": \"1.3.0\",\n  \"displayName\": \"Datastar\",\n  \"description\": \"Adds autocomplete and syntax highlighting for Datastar to Visual Studio Code.\",\n  \"author\": \"Ben Croker\",\n  \"publisher\": \"starfederation\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/starfederation/datastar\",\n  \"icon\": \"src/icon.png\",\n  \"galleryBanner\": {\n    \"color\": \"#bee3f8\",\n    \"theme\": \"light\"\n  },\n  \"engines\": {\n    \"vscode\": \"^1.63.0\"\n  },\n  \"categories\": [\n    \"Snippets\",\n    \"Other\"\n  ],\n  \"activationEvents\": [\n    \"onStartupFinished\"\n  ],\n  \"main\": \"src/extension.js\",\n  \"contributes\": {\n    \"grammars\": [\n      {\n        \"scopeName\": \"datastar.injection\",\n        \"path\": \"./src/datastar.injection.tmLanguage.json\",\n        \"injectTo\": [\n          \"text.html.basic\",\n          \"text.html.derivative\",\n          \"text.html.php\",\n          \"text.html.twig\",\n          \"text.html.php.blade\",\n          \"text.html.edge\",\n          \"text.html.nunjucks\",\n          \"text.html.njk\",\n          \"source.templ\",\n          \"source.astro\",\n          \"source.gohtml\",\n          \"text.html.vue\",\n          \"source.vue\",\n          \"source.svelte\",\n          \"text.html.svelte\",\n          \"text.html.handlebars\",\n          \"source.mustache\",\n          \"source.liquid\",\n          \"text.html.erb\",\n          \"text.html.ejs\",\n          \"text.pug\",\n          \"text.aspnetcorerazor\",\n          \"text.html.django\",\n          \"text.html.jinja\",\n          \"text.html.jsp\"\n        ]\n      }\n    ],\n    \"configuration\": {\n      \"title\": \"Datastar\",\n      \"properties\": {\n        \"datastar.customAttributes\": {\n          \"type\": \"array\",\n          \"default\": [],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Custom Datastar plugin names (without 'data-' prefix). Example: ['my-plugin', 'custom-action']\"\n        },\n        \"datastar.enabledLanguages\": {\n          \"type\": \"array\",\n          \"default\": [\n            \"html\",\n            \"php\",\n            \"twig\",\n            \"edge\",\n            \"nunjucks\",\n            \"templ\",\n            \"astro\",\n            \"vue\",\n            \"svelte\",\n            \"handlebars\",\n            \"mustache\",\n            \"liquid\",\n            \"erb\",\n            \"ejs\",\n            \"pug\",\n            \"razor\",\n            \"blade\",\n            \"django-html\",\n            \"jinja\",\n            \"gohtml\",\n            \"jsp\",\n            \"aspnetcorerazor\"\n          ],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Languages and file extensions where Datastar snippets should be available. Supports both VS Code language IDs (e.g., 'html', 'php') and file extensions (e.g., '.twig', '.templ', '.custom').\",\n          \"markdownDescription\": \"Languages and file extensions where Datastar snippets should be available. Supports both VS Code language IDs and file extensions.\\n\\n**Default supported languages/extensions:**\\n- `html` - HTML files\\n- `php` - PHP files\\n- `twig` - Twig templates (Craft CMS, Symfony)\\n- `blade` - Laravel Blade templates\\n- `vue` - Vue single file components\\n- `svelte` - Svelte files\\n- `astro` - Astro files\\n- `templ` - Go Templ files\\n- `erb` - Ruby ERB templates\\n- `ejs` - EJS templates\\n- `handlebars` - Handlebars templates\\n- `jinja` - Jinja templates (Python/Django)\\n- `gohtml` - Go HTML templates\\n\\n**Add custom file extensions:**\\n- `.edge` - Edge templates\\n- `.njk` - Nunjucks templates\\n- `.liquid` - Liquid templates\\n- `.pug` - Pug templates\\n- `.hbs` - Handlebars files\\n- `.mustache` - Mustache templates\\n- `.custom` - Any custom extension\\n\\n**Example:**\\n```json\\n[\\n  \\\"html\\\",\\n  \\\"php\\\",\\n  \\\"twig\\\",\\n  \\\".edge\\\",\\n  \\\".njk\\\",\\n  \\\".custom\\\"\\n]\\n```\"\n        }\n      }\n    },\n    \"snippets\": [\n      {\n        \"language\": \"html\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"php\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"twig\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"edge\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"nunjucks\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"templ\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"astro\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"vue\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"svelte\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"handlebars\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"mustache\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"liquid\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"erb\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"ejs\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"pug\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"razor\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"blade\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"django-html\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"jinja\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"gohtml\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"jsp\",\n        \"path\": \"./src/data-attributes.json\"\n      },\n      {\n        \"language\": \"aspnetcorerazor\",\n        \"path\": \"./src/data-attributes.json\"\n      }\n    ]\n  },\n  \"devDependencies\": {\n    \"@vscode/vsce\": \"^3.7.1\"\n  },\n  \"scripts\": {\n    \"build\": \"npm exec vsce package\",\n    \"publish\": \"npm exec vsce publish $npm_package_version && npx ovsx publish datastar-vscode-$npm_package_version.vsix\"\n  }\n}\n\n<!-- File: tools/vscode-extension/src/data-attributes.json (Tokens: ~3590 | Category: anthropic-skill) -->\n{\n  \"data-attr\": {\n    \"prefix\": \"data-attr\",\n    \"body\": \"data-attr=\\\"{${1:attributeName}: ${2:expression}}\\\"\",\n    \"description\": \"Sets one or more attribute values using a set of key-value pairs that map to the attribute name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-attributes\"\n      }\n    ]\n  },\n  \"data-attr:*\": {\n    \"prefix\": \"data-attr:*\",\n    \"body\": \"data-attr:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Sets an element’s attribute value based on an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-attributes\"\n      }\n    ]\n  },\n  \"data-bind\": {\n    \"prefix\": \"data-bind\",\n    \"body\": \"data-bind=\\\"${1:signalName}\\\"\",\n    \"description\": \"Creates a new signal and enables two-way binding between it and the element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-bind\"\n      }\n    ]\n  },\n  \"data-bind:*\": {\n    \"prefix\": \"data-bind:*\",\n    \"body\": \"data-bind:${1:name}\",\n    \"description\": \"Creates a new signal and enables two-way binding between it and the element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-bind\"\n      }\n    ]\n  },\n  \"data-class\": {\n    \"prefix\": \"data-class\",\n    \"body\": \"data-class=\\\"{${1:className}: ${2:expression}}\\\"\",\n    \"description\": \"Adds or removes one or more classes from an element using a set of key-value pairs that map to the class name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-class\"\n      }\n    ]\n  },\n  \"data-class:*\": {\n    \"prefix\": \"data-class:*\",\n    \"body\": \"data-class:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Adds or removes a class from an element based on an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-class\"\n      }\n    ]\n  },\n  \"data-computed\": {\n    \"prefix\": \"data-computed\",\n    \"body\": \"data-computed=\\\"{${1:signalName}: ${2:expression}}\\\"\",\n    \"description\": \"Creates one or more signals that are computed based on a set of key-value pairs that map to the signal name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-computed\"\n      }\n    ]\n  },\n  \"data-computed:*\": {\n    \"prefix\": \"data-computed:*\",\n    \"body\": \"data-computed:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Creates a signal that is computed based on an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-computed\"\n      }\n    ]\n  },\n  \"data-custom-validity\": {\n    \"prefix\": \"data-custom-validity\",\n    \"body\": \"data-custom-validity=\\\"${1:expression}\\\"\",\n    \"description\": \"Adds custom validity to an element using an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-custom-validity\"\n      }\n    ]\n  },\n  \"data-effect\": {\n    \"prefix\": \"data-effect\",\n    \"body\": \"data-effect=\\\"${1:expression}\\\"\",\n    \"description\": \"Executes an expression on page load and whenever any signals in the expression change.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-effect\"\n      }\n    ]\n  },\n  \"data-ignore\": {\n    \"prefix\": \"data-ignore\",\n    \"body\": \"data-ignore\",\n    \"description\": \"Ignores an element and its descendants from being processed.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-ignore\"\n      }\n    ]\n  },\n  \"data-ignore-morph\": {\n    \"prefix\": \"data-ignore-morph\",\n    \"body\": \"data-ignore-morph\",\n    \"description\": \"Ignores an element when patching an element using the `morph` mode.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-ignore-morph\"\n      }\n    ]\n  },\n  \"data-indicator\": {\n    \"prefix\": \"data-indicator\",\n    \"body\": \"data-indicator=\\\"${1:signalName}\\\"\",\n    \"description\": \"Creates a signal to track in-flight backend requests.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-indicator\"\n      }\n    ]\n  },\n  \"data-indicator:*\": {\n    \"prefix\": \"data-indicator:*\",\n    \"body\": \"data-indicator:${1:name}\",\n    \"description\": \"Creates a signal to track in-flight backend requests.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-indicator\"\n      }\n    ]\n  },\n  \"data-init\": {\n    \"prefix\": \"data-init\",\n    \"body\": \"data-init=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever the attribute is initialised.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-init\"\n      }\n    ]\n  },\n  \"data-json-signals\": {\n    \"prefix\": \"data-json-signals\",\n    \"body\": \"data-json-signals=\\\"${1:expression}\\\"\",\n    \"description\": \"Sets the text content of an element to a reactive JSON stringified version of signals.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-json-signals\"\n      }\n    ]\n  },\n  \"data-on\": {\n    \"prefix\": \"data-on:*\",\n    \"body\": \"data-on:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Runs an expression whenever an event is triggered on an element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on\"\n      }\n    ]\n  },\n  \"data-on:click\": {\n    \"prefix\": \"data-on:click\",\n    \"body\": \"data-on:click=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever the element is clicked.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on\"\n      }\n    ]\n  },\n  \"data-on:keydown\": {\n    \"prefix\": \"data-on:keydown\",\n    \"body\": \"data-on:keydown=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever a key is pressed.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on\"\n      }\n    ]\n  },\n  \"data-on-intersect\": {\n    \"prefix\": \"data-on-intersect\",\n    \"body\": \"data-on-intersect=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression on intersection with the viewport.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-intersect\"\n      }\n    ]\n  },\n  \"data-on-interval\": {\n    \"prefix\": \"data-on-interval\",\n    \"body\": \"data-on-interval=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression at a regular interval.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-interval\"\n      }\n    ]\n  },\n  \"data-on-raf\": {\n    \"prefix\": \"data-on-raf\",\n    \"body\": \"data-on-raf=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression on every `requestAnimationFrame` event.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-raf\"\n      }\n    ]\n  },\n  \"data-on-resize\": {\n    \"prefix\": \"data-on-resize\",\n    \"body\": \"data-on-resize=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever an element’s dimensions change.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-resize\"\n      }\n    ]\n  },\n  \"data-on-signal-patch\": {\n    \"prefix\": \"data-on-signal-patch\",\n    \"body\": \"data-on-signal-patch=\\\"${1:expression}\\\"\",\n    \"description\": \"Runs an expression whenever one or more signals are patched.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-signal-patch\"\n      }\n    ]\n  },\n  \"data-on-signal-patch-filter\": {\n    \"prefix\": \"data-on-signal-patch-filter\",\n    \"body\": \"data-on-signal-patch-filter=\\\"${1:expression}\\\"\",\n    \"description\": \"Filters which signals to watch when using the `data-on-signal-patch` attribute.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-on-signal-change\"\n      }\n    ]\n  },\n  \"data-persist\": {\n    \"prefix\": \"data-persist\",\n    \"body\": \"data-persist=\\\"\\\"\",\n    \"description\": \"Persists signals in local storage.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-persist\"\n      }\n    ]\n  },\n  \"data-persist:*\": {\n    \"prefix\": \"data-persist:*\",\n    \"body\": \"data-persist:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Persists signals in local storage with a custom key.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-persist\"\n      }\n    ]\n  },\n  \"data-preserve-attr\": {\n    \"prefix\": \"data-preserve-attr\",\n    \"body\": \"data-preserve-attr=\\\"\\\"\",\n    \"description\": \"Preserves the value of an attribute when patching elements using the `morph` mode.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-preserve-attr\"\n      }\n    ]\n  },\n  \"data-query-string\": {\n    \"prefix\": \"data-query-string\",\n    \"body\": \"data-query-string=\\\"\\\"\",\n    \"description\": \"Syncs query string params to signal values on page load, and syncs signal values to query string params on change.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-query-string\"\n      }\n    ]\n  },\n  \"data-ref\": {\n    \"prefix\": \"data-ref\",\n    \"body\": \"data-ref=\\\"${1:signalName}\\\"\",\n    \"description\": \"Creates a signal whose value references an element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-ref\"\n      }\n    ]\n  },\n  \"data-ref:*\": {\n    \"prefix\": \"data-ref:*\",\n    \"body\": \"data-ref:${1:name}\",\n    \"description\": \"Creates a signal whose value references an element.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-ref\"\n      }\n    ]\n  },\n  \"data-replace-url\": {\n    \"prefix\": \"data-replace-url\",\n    \"body\": \"data-replace-url=\\\"${1:expression}\\\"\",\n    \"description\": \"Replaces the URL in the browser with an evaluated expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-replace-url\"\n      }\n    ]\n  },\n  \"data-scroll-into-view\": {\n    \"prefix\": \"data-scroll-into-view\",\n    \"body\": \"data-scroll-into-view\",\n    \"description\": \"Scrolls the element into view.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-scroll-into-view\"\n      }\n    ]\n  },\n  \"data-show\": {\n    \"prefix\": \"data-show\",\n    \"body\": \"data-show=\\\"${1:expression}\\\"\",\n    \"description\": \"Shows or hides an element based on whether an expression evaluates to `true` or `false`.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-show\"\n      }\n    ]\n  },\n  \"data-signals\": {\n    \"prefix\": \"data-signals\",\n    \"body\": \"data-signals=\\\"{${1:signalName}: ${2:expression}}\\\"\",\n    \"description\": \"Merges one or more signals into the existing signals using a set of key-value pairs that map to the signal name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-signals\"\n      }\n    ]\n  },\n  \"data-signals:*\": {\n    \"prefix\": \"data-signals:*\",\n    \"body\": \"data-signals:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Merges a signal into the existing signals.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-signals\"\n      }\n    ]\n  },\n  \"data-style\": {\n    \"prefix\": \"data-style\",\n    \"body\": \"data-style=\\\"{${1:styleName}: ${2:expression}}\\\"\",\n    \"description\": \"Adds or removes one or more inline CSS styles from an element using a set of key-value pairs that map to the style name and expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-style\"\n      }\n    ]\n  },\n  \"data-style:*\": {\n    \"prefix\": \"data-style:*\",\n    \"body\": \"data-style:${1:name}=\\\"${2:expression}\\\"\",\n    \"description\": \"Adds or removes an inline CSS style from an element based on an expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-style\"\n      }\n    ]\n  },\n  \"data-text\": {\n    \"prefix\": \"data-text\",\n    \"body\": \"data-text=\\\"${1:expression}\\\"\",\n    \"description\": \"Sets the text content of an element to the evaluated expression.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-text\"\n      }\n    ]\n  },\n  \"data-view-transition\": {\n    \"prefix\": \"data-view-transition\",\n    \"body\": \"data-view-transition=\\\"${1:expression}\\\"\",\n    \"description\": \"Sets the value of `view-transition-name` for use with the View Transition API.\",\n    \"references\": [\n      {\n        \"name\": \"Documentation\",\n        \"url\": \"https://data-star.dev/reference/attributes#data-view-transition\"\n      }\n    ]\n  }\n}\n\n<!-- File: tools/vscode-extension/src/datastar.injection.tmLanguage.json (Tokens: ~2590 | Category: anthropic-skill) -->\n{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"scopeName\": \"datastar.injection\",\n  \"injectionSelector\": \"L:text.html, L:meta.tag -string -comment -expression.html-template -meta.function.echo.blade\",\n  \"patterns\": [\n    {\n      \"include\": \"#datastar-attribute\"\n    }\n  ],\n  \"repository\": {\n    \"datastar-attribute\": {\n      \"comment\": \"Match Datastar attributes: data-[plugin]:[key]:[nested-key]__[modifier(s)]\",\n      \"begin\": \"\\\\b(data-)(attr|bind|class|computed|effect|ignore|ignore-morph|indicator|init|json-signals|on|on-intersect|on-interval|on-signal-patch|on-signal-patch-filter|preserve-attr|ref|show|signals|style|text|animate|custom-validity|on-raf|on-resize|persist|query-string|replace-url|rocket|scroll-into-view|view-transition|my-foo)(?=__|:|[\\\\s>=])\",\n      \"end\": \"(?<=[\\\"'])|(?=[\\\\s>])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.datastar.prefix\"\n        },\n        \"2\": {\n          \"name\": \"support.function.datastar.plugin\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"comment\": \"Match plugin-like keys: :data-[plugin]\",\n          \"match\": \"(:)(data-(?:attr|bind|class|computed|effect|ignore|ignore-morph|indicator|init|json-signals|on|on-intersect|on-interval|on-signal-patch|on-signal-patch-filter|preserve-attr|ref|show|signals|style|text|animate|custom-validity|on-raf|on-resize|persist|query-string|replace-url|rocket|scroll-into-view|view-transition|my-foo))(?=__|:|[\\\\s>=])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key.datastar\"\n            },\n            \"2\": {\n              \"name\": \"support.function.datastar.plugin\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Match regular keys: :key\",\n          \"match\": \"(:)([a-z][a-z0-9-]*)(?=__|:|[\\\\s>=])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key.datastar\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.datastar.key\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Match modifiers with arguments: __modifier.arg\",\n          \"match\": \"(__)([a-z][a-z0-9-]*)(\\\\.)([a-z0-9]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.modifier.datastar\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.datastar\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.modifier-arg.datastar\"\n            },\n            \"4\": {\n              \"name\": \"constant.numeric.modifier-arg.datastar\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Match modifiers without arguments: __modifier\",\n          \"match\": \"(__)([a-z][a-z0-9-]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.modifier.datastar\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.datastar\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Match attribute value with expressions\",\n          \"begin\": \"(=)([\\\"'])\",\n          \"end\": \"\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key-value.html\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#datastar-expressions\"\n            }\n          ]\n        }\n      ]\n    },\n    \"datastar-expressions\": {\n      \"patterns\": [\n        {\n          \"include\": \"#signal-reference\"\n        },\n        {\n          \"include\": \"#action-call\"\n        },\n        {\n          \"include\": \"#method-call\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#javascript-syntax\"\n        }\n      ]\n    },\n    \"signal-reference\": {\n      \"match\": \"(\\\\$\\\\$?[a-zA-Z_][a-zA-Z0-9_]*)((\\\\?)?\\\\.[a-zA-Z_][a-zA-Z0-9_]*(?!\\\\())*(\\\\[[^\\\\]]+\\\\])?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.datastar.signal\"\n        }\n      }\n    },\n    \"action-call\": {\n      \"begin\": \"(@[a-z]+)(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.datastar.action\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.arguments.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    },\n    \"method-call\": {\n      \"begin\": \"(\\\\.)([a-zA-Z_][a-zA-Z0-9_]*)(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.datastar\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.datastar\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.arguments.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"begin\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.datastar\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.arguments.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    },\n    \"javascript-syntax\": {\n      \"patterns\": [\n        {\n          \"include\": \"#arrow-function\"\n        },\n        {\n          \"include\": \"#object-literal\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#spread-operator\"\n        },\n        {\n          \"include\": \"#js-strings\"\n        },\n        {\n          \"include\": \"#js-numbers\"\n        },\n        {\n          \"include\": \"#js-keywords\"\n        },\n        {\n          \"include\": \"#js-operators\"\n        }\n      ]\n    },\n    \"js-strings\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.double.datastar\",\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.escape.datastar\",\n              \"match\": \"\\\\\\\\.\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.single.datastar\",\n          \"begin\": \"'\",\n          \"end\": \"'\",\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.escape.datastar\",\n              \"match\": \"\\\\\\\\.\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.template.datastar\",\n          \"begin\": \"`\",\n          \"end\": \"`\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.template.expression.datastar\",\n              \"begin\": \"\\\\$\\\\{\",\n              \"end\": \"\\\\}\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.template-expression.begin.datastar\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.template-expression.end.datastar\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#datastar-expressions\"\n                }\n              ]\n            },\n            {\n              \"name\": \"constant.character.escape.datastar\",\n              \"match\": \"\\\\\\\\.\"\n            }\n          ]\n        }\n      ]\n    },\n    \"js-numbers\": {\n      \"match\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\\\\b\",\n      \"name\": \"constant.numeric.datastar\"\n    },\n    \"js-keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(const|let|var|async|await|function|return|throw|new|if|else|for|while|do|switch|case|break|continue|try|catch|finally)\\\\b\",\n          \"name\": \"keyword.control.datastar\"\n        },\n        {\n          \"match\": \"\\\\b(true|false|null|undefined)\\\\b\",\n          \"name\": \"constant.language.datastar\"\n        },\n        {\n          \"match\": \"\\\\b(this|event|el|Promise|Error|Array|Object|String|Number|Boolean|Date|Math|console)\\\\b\",\n          \"name\": \"support.class.datastar\"\n        }\n      ]\n    },\n    \"js-operators\": {\n      \"match\": \"(\\\\+\\\\+|--|\\\\+=|-=|\\\\*=|/=|%=|\\\\+|-|\\\\*|/|%|===|!==|==|!=|>=|<=|>|<|&&|\\\\|\\\\||\\\\?\\\\?|!|=|\\\\?|:)\",\n      \"name\": \"keyword.operator.datastar\"\n    },\n    \"spread-operator\": {\n      \"match\": \"\\\\.\\\\.\\\\.\",\n      \"name\": \"keyword.operator.spread.datastar\"\n    },\n    \"arrow-function\": {\n      \"match\": \"(\\\\([^)]*\\\\)|[a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(=>)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.function.datastar\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.function.arrow.datastar\"\n        }\n      }\n    },\n    \"object-literal\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.object.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.object.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.property.datastar\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.key-value.datastar\"\n            }\n          }\n        },\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    },\n    \"array-literal\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.begin.datastar\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.datastar\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#datastar-expressions\"\n        }\n      ]\n    }\n  }\n}\n\n<!-- File: tools/intellij-plugin/README.md (Tokens: ~604 | Category: plugin-manifest) -->\n# Datastar Support JetBrains Plugin\n\n[![Version](https://img.shields.io/jetbrains/plugin/v/26072.svg)](https://plugins.jetbrains.com/plugin/26072)\n[![Downloads](https://img.shields.io/jetbrains/plugin/d/26072.svg)](https://plugins.jetbrains.com/plugin/26072)\n\n<!-- Plugin description -->\nThis plugin offers IntelliJ IDE support for the [Datastar](https://data-star.dev/) framework.\n\nIt offers autocomplete for all of the Datastar custom `data-*` attributes, with additional autocomplete of DOM\nattributes and events.\n\nYou can show the documentation alongside the autocomplete suggestions via the File &rarr; Settings &rarr; Editor &rarr;\nGeneral &rarr;\nCode Completion: **Show the documentation popup in .... ms checkbox**\n<!-- Plugin description end -->\n\n![Screenshot](./resources/img/datastar-intellij-plugin.png)\n\n## Installation\n\n- Using the IDE built-in plugin system:\n\n  <kbd>Settings/Preferences</kbd> > <kbd>Plugins</kbd> > <kbd>Marketplace</kbd> > <kbd>Search for \"\n  datastar-jetbrains-plugin\"</kbd> >\n  <kbd>Install</kbd>\n\n- Using JetBrains Marketplace:\n\n  Go to [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/26072) and install it by clicking\n  the <kbd>Install to ...</kbd> button in case your IDE is running.\n\n  You can also download the [latest release](https://plugins.jetbrains.com/plugin/26072/versions) from\n  JetBrains Marketplace and install it manually using\n  <kbd>Settings/Preferences</kbd> > <kbd>Plugins</kbd> > <kbd>⚙️</kbd> > <kbd>Install plugin from disk...</kbd>\n\n- Manually:\n\n  Download the [latest release](https://github.com/starfederation/datastar-jetbrains-plugin/releases/latest) and install it\n  manually using\n  <kbd>Settings/Preferences</kbd> > <kbd>Plugins</kbd> > <kbd>⚙️</kbd> > <kbd>Install plugin from disk...</kbd>\n\n## Errata\n\n- The Datastar support plugin does have inline documentation and links to the official documentation, but due an\n  [issue with the `web-types`](https://github.com/JetBrains/web-types/issues/85) implementation, it does not appear on\n  hover currently.\n- Autocomplete of Datastar actions in attribute values is not implemented yet\n- CI build & release workflows are not implemented yet\n\nBrought to you by [nystudio107](https://nystudio107.com/)\n\n---\nPlugin based on the [IntelliJ Platform Plugin Template][template].\n\n[template]: https://github.com/JetBrains/intellij-platform-plugin-template\n\n[docs:plugin-description]: https://plugins.jetbrains.com/docs/intellij/plugin-user-experience.html#plugin-description-and-presentation\n\n<!-- File: tools/vscode-extension/README.md (Tokens: ~362 | Category: plugin-manifest) -->\n# Datastar Extension for Visual Studio Code\n\nAdds autocomplete and syntax highlighting for [Datastar](https://data-star.dev/) to Visual Studio Code.\n\n![VSCode extension](https://data-star.dev/static/images/vscode-extension-120.png)\n\n## Configuration\n\nBy default, Datastar snippets work in HTML and most common template languages. You can customize which languages and file extensions have Datastar support by configuring the `datastar.enabledLanguages` setting.\n\n**To configure:**\n1. Open VS Code Settings (Cmd/Ctrl + ,)\n2. Search for \"datastar enabled languages\"\n3. Add language IDs (e.g., `html`, `php`, `twig`) or file extensions (e.g., `.edge`, `.njk`, `.custom`)\n\n**Example:**\n```json\n{\n  \"datastar.enabledLanguages\": [\n    \"html\",\n    \"php\",\n    \"twig\",\n    \".edge\",\n    \".custom\"\n  ]\n}\n```\n\n### Custom Attributes\n\nYou can add syntax highlighting support for custom Datastar plugins using the `datastar.customAttributes` setting.\n\n**To configure:**\n1. Open VS Code Settings (Cmd/Ctrl + ,)\n2. Search for \"datastar custom attributes\"\n3. Add your custom plugin names (without the `data-` prefix)\n\n**Example:**\n```json\n{\n  \"datastar.customAttributes\": [\n    \"my-plugin\"\n  ]\n}\n```\n\nAfter adding custom attributes, reload VS Code to apply the changes.\n\n## License\n\nThis plugin is licensed for free under the MIT License.\n\n## Requirements\n\nThis plugin requires Visual Studio Code version 1.63.0 or later.\n\n## Installation\n\nInstall the extension from the Visual Studio Code Marketplace or from the extensions panel by searching for “Datastar”.\n</yakaai_skills>"}