vize 0.390.0 → 0.404.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -210,6 +210,30 @@ interface LinterConfig {
210
210
  interface LintRuleOptions {
211
211
  "script/no-restricted-globals"?: NoRestrictedGlobalsOptions;
212
212
  "script/no-restricted-members"?: NoRestrictedMembersOptions;
213
+ "vue/component-name-in-template-casing"?: {
214
+ casing?: "PascalCase" | "kebab-case";
215
+ };
216
+ "script/custom-event-name-casing"?: {
217
+ casing?: "camelCase" | "kebab-case";
218
+ };
219
+ "vue/no-mutating-props"?: {
220
+ shallowOnly?: boolean;
221
+ };
222
+ "vue/sfc-element-order"?: {
223
+ order?: (string | string[])[];
224
+ };
225
+ "vue/html-self-closing"?: {
226
+ html?: {
227
+ void?: "always" | "never" | "any";
228
+ normal?: "always" | "never" | "any";
229
+ component?: "always" | "never" | "any";
230
+ };
231
+ svg?: "always" | "never" | "any";
232
+ math?: "always" | "never" | "any";
233
+ };
234
+ "vue/v-on-event-hyphenation"?: "always" | "never";
235
+ "vue/attribute-hyphenation"?: "always" | "never";
236
+ "musea/prefer-design-tokens"?: MuseaPreferDesignTokensOptions;
213
237
  }
214
238
  interface NoRestrictedGlobalsOptions {
215
239
  globals?: RestrictedGlobal[];
@@ -226,6 +250,23 @@ interface RestrictedMember {
226
250
  property: string;
227
251
  message?: string;
228
252
  }
253
+ interface MuseaPreferDesignTokensOptions {
254
+ tokens?: MuseaDesignToken[];
255
+ }
256
+ interface MuseaDesignToken {
257
+ /**
258
+ * Token path, for example color.primary
259
+ */
260
+ path: string;
261
+ /**
262
+ * Primitive CSS value to match, for example #3b82f6
263
+ */
264
+ value: string;
265
+ /**
266
+ * Token tier shown in diagnostics
267
+ */
268
+ tier?: string;
269
+ }
229
270
  interface TypeCheckerConfig {
230
271
  /**
231
272
  * Enable type checking
@@ -641,7 +682,7 @@ interface VizeConfigEntry {
641
682
  }
642
683
  //#endregion
643
684
  //#region src/types/rules.d.ts
644
- declare const LINT_RULE_NAMES: readonly ["a11y/alt-text", "a11y/anchor-has-content", "a11y/anchor-is-valid", "a11y/aria-props", "a11y/aria-role", "a11y/aria-unsupported-elements", "a11y/click-events-have-key-events", "a11y/form-control-has-label", "a11y/heading-has-content", "a11y/heading-levels", "a11y/iframe-has-title", "a11y/img-alt", "a11y/interactive-supports-focus", "a11y/label-has-for", "a11y/landmark-roles", "a11y/media-has-caption", "a11y/mouse-events-have-key-events", "a11y/no-access-key", "a11y/no-aria-hidden-on-focusable", "a11y/no-autofocus", "a11y/no-distracting-elements", "a11y/no-i-for-icon", "a11y/no-redundant-roles", "a11y/no-refer-to-non-existent-id", "a11y/no-role-presentation-on-focusable", "a11y/no-static-element-interactions", "a11y/placeholder-label-option", "a11y/role-has-required-aria-props", "a11y/tabindex-no-positive", "a11y/use-list", "css/no-display-none", "css/no-hardcoded-values", "css/no-id-selectors", "css/no-important", "css/no-utility-classes", "css/no-v-bind-performance", "css/prefer-logical-properties", "css/prefer-nested-selectors", "css/prefer-slotted", "css/require-font-display", "ecosystem/nuxt-prefer-nuxt-link", "ecosystem/pinia-prefer-store-to-refs", "ecosystem/router-link-require-to", "ecosystem/void-link-require-href", "ecosystem/void-link-valid-method", "ecosystem/vue-i18n-no-missing-key", "ecosystem/vue-router-prefer-named-link", "ecosystem/vue-router-prefer-named-push", "ecosystem/vue-test-utils-no-html-snapshot", "html/deprecated-attr", "html/deprecated-element", "html/id-duplication", "html/no-consecutive-br", "html/no-dupe-style-properties", "html/no-duplicate-class", "html/no-duplicate-dt", "html/no-empty-palpable-content", "html/require-datetime", "musea/no-empty-variant", "musea/prefer-design-tokens", "musea/require-component", "musea/require-title", "musea/unique-variant-names", "musea/valid-variant", "nuxt/no-nuxt-config-test-key", "nuxt/no-page-meta-runtime-values", "nuxt/nuxt-config-keys-order", "nuxt/prefer-import-meta", "petite-vue/no-unsupported-directive", "petite-vue/valid-v-effect", "petite-vue/valid-v-scope", "script/component-options-name-casing", "script/custom-event-name-casing", "script/define-emits-declaration", "script/define-macros-order", "script/define-props-declaration", "script/define-props-destructuring", "script/no-arrow-functions-in-watch", "script/no-async-in-computed", "script/no-boolean-default", "script/no-deep-destructure-in-props", "script/no-deprecated-data-object-declaration", "script/no-deprecated-destroyed-lifecycle", "script/no-deprecated-dollar-listeners-api", "script/no-deprecated-dollar-scopedslots-api", "script/no-deprecated-events-api", "script/no-deprecated-props-default-this", "script/no-dupe-keys", "script/no-duplicate-attr-inheritance", "script/no-export-in-script-setup", "script/no-get-current-instance", "script/no-import-compiler-macros", "script/no-internal-imports", "script/no-multiple-slot-args", "script/no-options-api", "script/no-potential-component-option-typo", "script/no-reactive-destructure", "script/no-ref-as-operand", "script/no-required-prop-with-default", "script/no-reserved-identifiers", "script/no-reserved-keys", "script/no-reserved-props", "script/no-restricted-globals", "script/no-restricted-members", "script/no-side-effects-in-computed-properties", "script/no-top-level-ref-in-script", "script/no-unstable-nested-components", "script/no-unused-emit-declarations", "script/no-use-computed-property-like-method", "script/no-with-defaults", "script/prefer-computed", "script/prefer-define-options", "script/prefer-import-from-vue", "script/prefer-ref-over-reactive", "script/prefer-use-attrs", "script/prefer-use-id", "script/prefer-use-slots", "script/prefer-use-template-ref", "script/require-default-prop", "script/require-explicit-emits", "script/require-explicit-slots", "script/require-function-return-type", "script/require-prop-type-constructor", "script/require-prop-types", "script/require-symbol-provide", "script/require-typed-object-prop", "script/require-typed-ref", "script/require-valid-default-prop", "script/return-in-computed-property", "script/return-in-emits-validator", "script/valid-define-emits", "script/valid-define-options", "script/valid-define-props", "script/valid-next-tick", "ssr/no-browser-globals-in-ssr", "ssr/no-hydration-mismatch", "type/no-floating-promises", "type/no-reactivity-loss", "type/no-unsafe-template-binding", "type/require-typed-emits", "type/require-typed-props", "vapor/no-inline-template", "vapor/no-vue-lifecycle-events", "vapor/prefer-static-class", "vapor/require-vapor-attribute", "vue/a11y-img-alt", "vue/attribute-hyphenation", "vue/attribute-order", "vue/component-definition-name-casing", "vue/component-name-in-template-casing", "vue/html-button-has-type", "vue/html-quotes", "vue/html-self-closing", "vue/multi-word-component-names", "vue/mustache-interpolation-spacing", "vue/no-array-index-key", "vue/no-bare-strings-in-template", "vue/no-boolean-attr-value", "vue/no-child-content", "vue/no-deprecated-filter", "vue/no-deprecated-functional-template", "vue/no-deprecated-html-element-is", "vue/no-deprecated-router-link-tag-prop", "vue/no-deprecated-scope-attribute", "vue/no-deprecated-slot-attribute", "vue/no-deprecated-slot-scope-attribute", "vue/no-deprecated-v-bind-sync", "vue/no-deprecated-v-on-native-modifier", "vue/no-deprecated-v-on-number-modifiers", "vue/no-dupe-v-else-if", "vue/no-duplicate-attributes", "vue/no-empty-component-block", "vue/no-inline-style", "vue/no-invalid-html-attribute", "vue/no-lone-template", "vue/no-multi-spaces", "vue/no-multiple-objects-in-class", "vue/no-multiple-template-root", "vue/no-mutating-props", "vue/no-negated-v-if-condition", "vue/no-preprocessor-lang", "vue/no-reserved-component-names", "vue/no-root-v-if", "vue/no-script-non-standard-lang", "vue/no-src-attribute", "vue/no-template-key", "vue/no-template-lang", "vue/no-template-shadow", "vue/no-template-target-blank", "vue/no-textarea-mustache", "vue/no-undefined-refs", "vue/no-unsafe-url", "vue/no-unsandboxed-iframe", "vue/no-unused-components", "vue/no-unused-properties", "vue/no-unused-refs", "vue/no-unused-vars", "vue/no-use-v-else-with-v-for", "vue/no-use-v-if-with-v-for", "vue/no-useless-mustaches", "vue/no-useless-template-attributes", "vue/no-useless-v-bind", "vue/no-v-for-template-key-on-child", "vue/no-v-html", "vue/no-v-text", "vue/no-v-text-v-html-on-component", "vue/permitted-contents", "vue/prefer-props-shorthand", "vue/prefer-true-attribute-shorthand", "vue/prop-name-casing", "vue/require-component-is", "vue/require-component-registration", "vue/require-scoped-style", "vue/require-toggle-inside-transition", "vue/require-v-for-key", "vue/scoped-event-names", "vue/sfc-element-order", "vue/single-style-block", "vue/slot-name-casing", "vue/this-in-template", "vue/use-unique-element-ids", "vue/use-v-on-exact", "vue/v-bind-style", "vue/v-on-event-hyphenation", "vue/v-on-handler-style", "vue/v-on-style", "vue/v-slot-style", "vue/valid-attribute-name", "vue/valid-template-root", "vue/valid-v-bind", "vue/valid-v-cloak", "vue/valid-v-else", "vue/valid-v-for", "vue/valid-v-html", "vue/valid-v-if", "vue/valid-v-memo", "vue/valid-v-model", "vue/valid-v-on", "vue/valid-v-once", "vue/valid-v-show", "vue/valid-v-slot", "vue/valid-v-text", "vue/warn-custom-block", "vue/warn-custom-directive"];
685
+ declare const LINT_RULE_NAMES: readonly ["a11y/alt-text", "a11y/anchor-has-content", "a11y/anchor-is-valid", "a11y/aria-props", "a11y/aria-role", "a11y/aria-unsupported-elements", "a11y/click-events-have-key-events", "a11y/form-control-has-label", "a11y/heading-has-content", "a11y/heading-levels", "a11y/iframe-has-title", "a11y/img-alt", "a11y/interactive-supports-focus", "a11y/label-has-for", "a11y/landmark-roles", "a11y/media-has-caption", "a11y/mouse-events-have-key-events", "a11y/no-access-key", "a11y/no-aria-hidden-on-focusable", "a11y/no-autofocus", "a11y/no-distracting-elements", "a11y/no-i-for-icon", "a11y/no-redundant-roles", "a11y/no-refer-to-non-existent-id", "a11y/no-role-presentation-on-focusable", "a11y/no-static-element-interactions", "a11y/placeholder-label-option", "a11y/role-has-required-aria-props", "a11y/tabindex-no-positive", "a11y/use-list", "css/no-display-none", "css/no-hardcoded-values", "css/no-id-selectors", "css/no-important", "css/no-utility-classes", "css/no-v-bind-performance", "css/prefer-logical-properties", "css/prefer-nested-selectors", "css/prefer-slotted", "css/require-font-display", "ecosystem/nuxt-prefer-nuxt-link", "ecosystem/pinia-prefer-store-to-refs", "ecosystem/router-link-require-to", "ecosystem/void-link-require-href", "ecosystem/void-link-valid-method", "ecosystem/vue-i18n-no-missing-key", "ecosystem/vue-router-prefer-named-link", "ecosystem/vue-router-prefer-named-push", "ecosystem/vue-test-utils-no-html-snapshot", "html/deprecated-attr", "html/deprecated-element", "html/id-duplication", "html/no-consecutive-br", "html/no-dupe-style-properties", "html/no-duplicate-class", "html/no-duplicate-dt", "html/no-empty-palpable-content", "html/require-datetime", "musea/no-empty-variant", "musea/prefer-design-tokens", "musea/require-component", "musea/require-title", "musea/unique-variant-names", "musea/valid-variant", "nuxt/no-nuxt-config-test-key", "nuxt/no-page-meta-runtime-values", "nuxt/nuxt-config-keys-order", "nuxt/prefer-import-meta", "petite-vue/no-unsupported-directive", "petite-vue/valid-v-effect", "petite-vue/valid-v-scope", "script/component-options-name-casing", "script/custom-event-name-casing", "script/define-emits-declaration", "script/define-macros-order", "script/define-props-declaration", "script/define-props-destructuring", "script/no-arrow-functions-in-watch", "script/no-async-in-computed", "script/no-boolean-default", "script/no-deep-destructure-in-props", "script/no-deprecated-data-object-declaration", "script/no-deprecated-destroyed-lifecycle", "script/no-deprecated-dollar-listeners-api", "script/no-deprecated-dollar-scopedslots-api", "script/no-deprecated-events-api", "script/no-deprecated-props-default-this", "script/no-dupe-keys", "script/no-duplicate-attr-inheritance", "script/no-export-in-script-setup", "script/no-get-current-instance", "script/no-import-compiler-macros", "script/no-internal-imports", "script/no-multiple-slot-args", "script/no-options-api", "script/no-potential-component-option-typo", "script/no-reactive-destructure", "script/no-ref-as-operand", "script/no-required-prop-with-default", "script/no-reserved-identifiers", "script/no-reserved-keys", "script/no-reserved-props", "script/no-restricted-globals", "script/no-restricted-members", "script/no-side-effects-in-computed-properties", "script/no-top-level-ref-in-script", "script/no-unstable-nested-components", "script/no-unused-emit-declarations", "script/no-use-computed-property-like-method", "script/no-with-defaults", "script/prefer-computed", "script/prefer-define-options", "script/prefer-import-from-vue", "script/prefer-ref-over-reactive", "script/prefer-use-attrs", "script/prefer-use-id", "script/prefer-use-slots", "script/prefer-use-template-ref", "script/require-default-prop", "script/require-explicit-emits", "script/require-explicit-slots", "script/require-function-return-type", "script/require-prop-type-constructor", "script/require-prop-types", "script/require-symbol-provide", "script/require-typed-object-prop", "script/require-typed-ref", "script/require-valid-default-prop", "script/return-in-computed-property", "script/return-in-emits-validator", "script/valid-define-emits", "script/valid-define-options", "script/valid-define-props", "script/valid-next-tick", "ssr/no-browser-globals-in-ssr", "ssr/no-hydration-mismatch", "type/no-floating-promises", "type/no-reactivity-loss", "type/no-unsafe-template-binding", "type/require-typed-emits", "type/require-typed-props", "vapor/no-inline-template", "vapor/no-vue-lifecycle-events", "vapor/prefer-static-class", "vapor/require-vapor-attribute", "vue/a11y-img-alt", "vue/attribute-hyphenation", "vue/attribute-order", "vue/component-definition-name-casing", "vue/component-name-in-template-casing", "vue/html-button-has-type", "vue/html-quotes", "vue/html-self-closing", "vue/multi-word-component-names", "vue/mustache-interpolation-spacing", "vue/no-array-index-key", "vue/no-bare-strings-in-template", "vue/no-boolean-attr-value", "vue/no-child-content", "vue/no-deprecated-filter", "vue/no-deprecated-functional-template", "vue/no-deprecated-html-element-is", "vue/no-deprecated-inline-template", "vue/no-deprecated-router-link-tag-prop", "vue/no-deprecated-scope-attribute", "vue/no-deprecated-slot-attribute", "vue/no-deprecated-slot-scope-attribute", "vue/no-deprecated-v-bind-sync", "vue/no-deprecated-v-on-native-modifier", "vue/no-deprecated-v-on-number-modifiers", "vue/no-dupe-v-else-if", "vue/no-duplicate-attributes", "vue/no-empty-component-block", "vue/no-inline-style", "vue/no-invalid-html-attribute", "vue/no-lone-template", "vue/no-multi-spaces", "vue/no-multiple-objects-in-class", "vue/no-multiple-template-root", "vue/no-mutating-props", "vue/no-negated-v-if-condition", "vue/no-non-component-keep-alive-child", "vue/no-preprocessor-lang", "vue/no-reserved-component-names", "vue/no-root-v-if", "vue/no-script-non-standard-lang", "vue/no-src-attribute", "vue/no-static-inline-styles", "vue/no-template-key", "vue/no-template-lang", "vue/no-template-shadow", "vue/no-template-target-blank", "vue/no-textarea-mustache", "vue/no-undefined-refs", "vue/no-unsafe-url", "vue/no-unsandboxed-iframe", "vue/no-unused-components", "vue/no-unused-properties", "vue/no-unused-refs", "vue/no-unused-vars", "vue/no-use-v-else-with-v-for", "vue/no-use-v-if-with-v-for", "vue/no-useless-mustaches", "vue/no-useless-template-attributes", "vue/no-useless-v-bind", "vue/no-v-for-template-key-on-child", "vue/no-v-html", "vue/no-v-text", "vue/no-v-text-v-html-on-component", "vue/permitted-contents", "vue/prefer-props-shorthand", "vue/prefer-true-attribute-shorthand", "vue/prop-name-casing", "vue/require-component-is", "vue/require-component-registration", "vue/require-scoped-style", "vue/require-toggle-inside-transition", "vue/require-v-for-key", "vue/scoped-event-names", "vue/sfc-element-order", "vue/single-style-block", "vue/slot-name-casing", "vue/this-in-template", "vue/use-unique-element-ids", "vue/use-v-on-exact", "vue/v-bind-style", "vue/v-on-event-hyphenation", "vue/v-on-handler-style", "vue/v-on-style", "vue/v-slot-style", "vue/valid-attribute-name", "vue/valid-template-root", "vue/valid-v-bind", "vue/valid-v-cloak", "vue/valid-v-else", "vue/valid-v-for", "vue/valid-v-html", "vue/valid-v-if", "vue/valid-v-memo", "vue/valid-v-model", "vue/valid-v-on", "vue/valid-v-once", "vue/valid-v-show", "vue/valid-v-slot", "vue/valid-v-text", "vue/warn-custom-block", "vue/warn-custom-directive"];
645
686
  type LintRuleName = (typeof LINT_RULE_NAMES)[number];
646
687
  type LintRulesConfig = Partial<Record<LintRuleName, RuleSeverity>>;
647
688
  //#endregion
@@ -733,4 +774,4 @@ declare function resolveConfigExport(exported: UserConfigExport, env?: ConfigEnv
733
774
  declare function normalizeGlobalTypes(config: GlobalTypesConfig): Record<string, GlobalTypeDeclaration>;
734
775
  //#endregion
735
776
  export { MuseaConfig as A, GlobalTypeDeclaration as C, LinterConfig as D, LintPreset as E, VitePluginConfig as F, VizeConfig as I, VizeConfigEntry as L, RuleCategory as M, RuleSeverity as N, MuseaA11yConfig as O, TypeCheckerConfig as P, VueVersion as R, FormatterConfig as S, LanguageServerConfig as T, VueConfig as _, loadConfig as a, CompilerCompatibilityConfig as b, LspConfig as c, MaybePromise as d, ResolvedVizeConfig as f, UserConfigInput as g, UserConfigExport as h, defineConfig as i, MuseaVrtConfig as j, MuseaAutogenConfig as k, ConfigEnv as l, UserConfigEntry as m, VIZE_CONFIG_JSON_SCHEMA_PATH as n, normalizeGlobalTypes as o, UserConfig as p, VIZE_CONFIG_PKL_SCHEMA_PATH as r, resolveConfigExport as s, CONFIG_FILE_NAMES as t, LoadConfigOptions as u, LintRuleName as v, GlobalTypesConfig as w, CompilerConfig as x, LintRulesConfig as y };
736
- //# sourceMappingURL=config-BVly6DWf.d.mts.map
777
+ //# sourceMappingURL=config-DyVRxv1Z.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-DyVRxv1Z.d.mts","names":[],"sources":["../src/types/generated.ts","../src/types/rules.ts","../src/types/runtime.ts","../src/types/index.ts","../src/config.ts"],"mappings":"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"}
package/dist/config.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as loadConfig, i as defineConfig, n as VIZE_CONFIG_JSON_SCHEMA_PATH, o as normalizeGlobalTypes, r as VIZE_CONFIG_PKL_SCHEMA_PATH, s as resolveConfigExport, t as CONFIG_FILE_NAMES } from "./config-BVly6DWf.mjs";
1
+ import { a as loadConfig, i as defineConfig, n as VIZE_CONFIG_JSON_SCHEMA_PATH, o as normalizeGlobalTypes, r as VIZE_CONFIG_PKL_SCHEMA_PATH, s as resolveConfigExport, t as CONFIG_FILE_NAMES } from "./config-DyVRxv1Z.mjs";
2
2
  export { CONFIG_FILE_NAMES, VIZE_CONFIG_JSON_SCHEMA_PATH, VIZE_CONFIG_PKL_SCHEMA_PATH, defineConfig, loadConfig, normalizeGlobalTypes, resolveConfigExport };
package/dist/index.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { A as MuseaConfig, C as GlobalTypeDeclaration, D as LinterConfig, E as LintPreset, F as VitePluginConfig, I as VizeConfig, L as VizeConfigEntry, M as RuleCategory, N as RuleSeverity, O as MuseaA11yConfig, P as TypeCheckerConfig, R as VueVersion, S as FormatterConfig, T as LanguageServerConfig, _ as VueConfig, a as loadConfig, b as CompilerCompatibilityConfig, c as LspConfig, d as MaybePromise, f as ResolvedVizeConfig, g as UserConfigInput, h as UserConfigExport, i as defineConfig, j as MuseaVrtConfig, k as MuseaAutogenConfig, l as ConfigEnv, m as UserConfigEntry, n as VIZE_CONFIG_JSON_SCHEMA_PATH, o as normalizeGlobalTypes, p as UserConfig, r as VIZE_CONFIG_PKL_SCHEMA_PATH, s as resolveConfigExport, t as CONFIG_FILE_NAMES, u as LoadConfigOptions, v as LintRuleName, w as GlobalTypesConfig, x as CompilerConfig, y as LintRulesConfig } from "./config-BVly6DWf.mjs";
1
+ import { A as MuseaConfig, C as GlobalTypeDeclaration, D as LinterConfig, E as LintPreset, F as VitePluginConfig, I as VizeConfig, L as VizeConfigEntry, M as RuleCategory, N as RuleSeverity, O as MuseaA11yConfig, P as TypeCheckerConfig, R as VueVersion, S as FormatterConfig, T as LanguageServerConfig, _ as VueConfig, a as loadConfig, b as CompilerCompatibilityConfig, c as LspConfig, d as MaybePromise, f as ResolvedVizeConfig, g as UserConfigInput, h as UserConfigExport, i as defineConfig, j as MuseaVrtConfig, k as MuseaAutogenConfig, l as ConfigEnv, m as UserConfigEntry, n as VIZE_CONFIG_JSON_SCHEMA_PATH, o as normalizeGlobalTypes, p as UserConfig, r as VIZE_CONFIG_PKL_SCHEMA_PATH, s as resolveConfigExport, t as CONFIG_FILE_NAMES, u as LoadConfigOptions, v as LintRuleName, w as GlobalTypesConfig, x as CompilerConfig, y as LintRulesConfig } from "./config-DyVRxv1Z.mjs";
2
2
  export { CONFIG_FILE_NAMES, type CompilerCompatibilityConfig, type CompilerConfig, type ConfigEnv, type FormatterConfig, type GlobalTypeDeclaration, type GlobalTypesConfig, type LanguageServerConfig, type LintPreset, type LintRuleName, type LintRulesConfig, type LinterConfig, type LoadConfigOptions, type LspConfig, type MaybePromise, type MuseaA11yConfig, type MuseaAutogenConfig, type MuseaConfig, type MuseaVrtConfig, type ResolvedVizeConfig, type RuleCategory, type RuleSeverity, type TypeCheckerConfig, type UserConfig, type UserConfigEntry, type UserConfigExport, type UserConfigInput, VIZE_CONFIG_JSON_SCHEMA_PATH, VIZE_CONFIG_PKL_SCHEMA_PATH, type VitePluginConfig, type VizeConfig, type VizeConfigEntry, type VueConfig, type VueVersion, defineConfig, loadConfig, normalizeGlobalTypes, resolveConfigExport };
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "url": "https://github.com/ubugeeei-prod/vize/issues"
8
8
  },
9
9
  "dependencies": {
10
- "@vizejs/native": "0.390.0",
10
+ "@vizejs/native": "0.404.8",
11
11
  "oxc-transform": "0.144.0"
12
12
  },
13
13
  "description": "Vize - High-performance Vue.js toolchain in Rust",
@@ -100,7 +100,7 @@
100
100
  ]
101
101
  }
102
102
  },
103
- "version": "0.390.0",
103
+ "version": "0.404.8",
104
104
  "scripts": {
105
105
  "build": "vp run --workspace-root generate:rule-types && vp pack",
106
106
  "check": "vp check src tests vite.config.ts",
@@ -6,6 +6,10 @@ typealias RuleSeverity = "off"|"warn"|"error"
6
6
  typealias RuleCategory = "correctness"|"suspicious"|"style"|"perf"|"a11y"|"security"
7
7
 
8
8
  typealias LintPreset = "happy-path"|"opinionated"|"essential"|"incremental"|"ecosystem"|"nuxt"
9
+ typealias TemplateComponentNameCasing = "PascalCase"|"kebab-case"
10
+ typealias CustomEventNameCasing = "camelCase"|"kebab-case"
11
+ typealias HtmlSelfClosingStyle = "always"|"never"|"any"
12
+ typealias HyphenationStyle = "always"|"never"
9
13
 
10
14
  /// A restricted global identifier for `script/no-restricted-globals`.
11
15
  class RestrictedGlobal {
@@ -40,10 +44,72 @@ class NoRestrictedMembersOptions {
40
44
  members: Listing<RestrictedMember>? = null
41
45
  }
42
46
 
47
+ /// Options for `vue/component-name-in-template-casing`.
48
+ class ComponentNameInTemplateCasingOptions {
49
+ casing: TemplateComponentNameCasing = "PascalCase"
50
+ }
51
+
52
+ /// Options for `script/custom-event-name-casing`.
53
+ class CustomEventNameCasingOptions {
54
+ casing: CustomEventNameCasing = "camelCase"
55
+ }
56
+
57
+ /// Options for `vue/no-mutating-props`.
58
+ class NoMutatingPropsOptions {
59
+ shallowOnly: Boolean = false
60
+ }
61
+
62
+ /// Options for `vue/sfc-element-order`.
63
+ class SfcElementOrderOptions {
64
+ order: Listing<String | Listing<String>> = new Listing {
65
+ new Listing { "script"; "template" }
66
+ "style"
67
+ }
68
+ }
69
+
70
+ /// HTML-family options for `vue/html-self-closing`.
71
+ class HtmlSelfClosingHtmlOptions {
72
+ `void`: HtmlSelfClosingStyle = "always"
73
+ normal: HtmlSelfClosingStyle = "any"
74
+ component: HtmlSelfClosingStyle = "always"
75
+ }
76
+
77
+ /// Options for `vue/html-self-closing`.
78
+ class HtmlSelfClosingOptions {
79
+ html: HtmlSelfClosingHtmlOptions = new HtmlSelfClosingHtmlOptions {}
80
+ svg: HtmlSelfClosingStyle = "always"
81
+ math: HtmlSelfClosingStyle = "always"
82
+ }
83
+
84
+ /// A design token recognized by `musea/prefer-design-tokens`.
85
+ class MuseaDesignToken {
86
+ /// Token path (e.g. `color.primary`).
87
+ path: String
88
+
89
+ /// Primitive CSS value to match (e.g. `#3b82f6`).
90
+ value: String
91
+
92
+ /// Token tier shown in diagnostics.
93
+ tier: String = "primitive"
94
+ }
95
+
96
+ /// Options for `musea/prefer-design-tokens`.
97
+ class MuseaPreferDesignTokensOptions {
98
+ tokens: Listing<MuseaDesignToken>? = null
99
+ }
100
+
43
101
  /// Typed per-rule options for rules that accept project-local configuration.
44
102
  class LintRuleOptions {
45
103
  `script/no-restricted-globals`: NoRestrictedGlobalsOptions? = null
46
104
  `script/no-restricted-members`: NoRestrictedMembersOptions? = null
105
+ `vue/component-name-in-template-casing`: ComponentNameInTemplateCasingOptions? = null
106
+ `script/custom-event-name-casing`: CustomEventNameCasingOptions? = null
107
+ `vue/no-mutating-props`: NoMutatingPropsOptions? = null
108
+ `vue/sfc-element-order`: SfcElementOrderOptions? = null
109
+ `vue/html-self-closing`: HtmlSelfClosingOptions? = null
110
+ `vue/v-on-event-hyphenation`: HyphenationStyle? = null
111
+ `vue/attribute-hyphenation`: HyphenationStyle? = null
112
+ `musea/prefer-design-tokens`: MuseaPreferDesignTokensOptions? = null
47
113
  }
48
114
 
49
115
  class LinterConfig {
@@ -51,7 +117,7 @@ class LinterConfig {
51
117
  enabled: Boolean = true
52
118
 
53
119
  /// Built-in lint preset.
54
- preset: LintPreset = "ecosystem"
120
+ preset: LintPreset = "happy-path"
55
121
 
56
122
  /// Enable native type-aware lint rules from the active lint configuration.
57
123
  typeAware: Boolean = false
@@ -199,15 +199,151 @@ noRestrictedMembersOptionsDef: JsonSchema = new JsonSchema {
199
199
  additionalProperties = false
200
200
  }
201
201
 
202
- lintRuleOptionsDef: JsonSchema = new JsonSchema {
202
+ componentNameInTemplateCasingOptionsDef: JsonSchema = new JsonSchema {
203
+ type = "object"
204
+ properties {
205
+ ["casing"] = new JsonSchema {
206
+ type = "string"
207
+ enum = new Listing { "PascalCase"; "kebab-case" }
208
+ default = "PascalCase"
209
+ }
210
+ }
211
+ additionalProperties = false
212
+ }
213
+
214
+ customEventNameCasingOptionsDef: JsonSchema = new JsonSchema {
215
+ type = "object"
216
+ properties {
217
+ ["casing"] = new JsonSchema {
218
+ type = "string"
219
+ enum = new Listing { "camelCase"; "kebab-case" }
220
+ default = "camelCase"
221
+ }
222
+ }
223
+ additionalProperties = false
224
+ }
225
+
226
+ noMutatingPropsOptionsDef: JsonSchema = new JsonSchema {
227
+ type = "object"
228
+ properties {
229
+ ["shallowOnly"] = new JsonSchema {
230
+ type = "boolean"
231
+ default = false
232
+ }
233
+ }
234
+ additionalProperties = false
235
+ }
236
+
237
+ sfcElementOrderGroupDef: JsonSchema = new JsonSchema {
238
+ oneOf = new Listing {
239
+ new JsonSchema {
240
+ type = "string"
241
+ }
242
+ new JsonSchema {
243
+ type = "array"
244
+ items = new JsonSchema {
245
+ type = "string"
246
+ }
247
+ }
248
+ }
249
+ }
250
+
251
+ sfcElementOrderOptionsDef: JsonSchema = new JsonSchema {
252
+ type = "object"
253
+ properties {
254
+ ["order"] = new JsonSchema {
255
+ type = "array"
256
+ items = sfcElementOrderGroupDef
257
+ }
258
+ }
259
+ additionalProperties = false
260
+ }
261
+
262
+ htmlSelfClosingStyleDef: JsonSchema = new JsonSchema {
263
+ type = "string"
264
+ enum = new Listing { "always"; "never"; "any" }
265
+ }
266
+
267
+ hyphenationStyleDef: JsonSchema = new JsonSchema {
268
+ type = "string"
269
+ enum = new Listing { "always"; "never" }
270
+ }
271
+
272
+ htmlSelfClosingHtmlOptionsDef: JsonSchema = new JsonSchema {
273
+ type = "object"
274
+ properties {
275
+ ["void"] = (htmlSelfClosingStyleDef) {
276
+ default = "always"
277
+ }
278
+ ["normal"] = (htmlSelfClosingStyleDef) {
279
+ default = "any"
280
+ }
281
+ ["component"] = (htmlSelfClosingStyleDef) {
282
+ default = "always"
283
+ }
284
+ }
285
+ additionalProperties = false
286
+ }
287
+
288
+ htmlSelfClosingOptionsDef: JsonSchema = new JsonSchema {
203
289
  type = "object"
204
290
  properties {
205
- ["script/no-restricted-globals"] = new JsonSchema {
206
- `$ref` = "#/definitions/NoRestrictedGlobalsOptions"
291
+ ["html"] = (htmlSelfClosingHtmlOptionsDef) {}
292
+ ["svg"] = (htmlSelfClosingStyleDef) {
293
+ default = "always"
207
294
  }
208
- ["script/no-restricted-members"] = new JsonSchema {
209
- `$ref` = "#/definitions/NoRestrictedMembersOptions"
295
+ ["math"] = (htmlSelfClosingStyleDef) {
296
+ default = "always"
210
297
  }
211
298
  }
212
299
  additionalProperties = false
213
300
  }
301
+
302
+ museaDesignTokenDef: JsonSchema = new JsonSchema {
303
+ type = "object"
304
+ properties {
305
+ ["path"] = new JsonSchema {
306
+ type = "string"
307
+ description = "Token path, for example color.primary"
308
+ }
309
+ ["value"] = new JsonSchema {
310
+ type = "string"
311
+ description = "Primitive CSS value to match, for example #3b82f6"
312
+ }
313
+ ["tier"] = new JsonSchema {
314
+ type = "string"
315
+ description = "Token tier shown in diagnostics"
316
+ default = "primitive"
317
+ }
318
+ }
319
+ required = new Listing { "path"; "value" }
320
+ additionalProperties = false
321
+ }
322
+
323
+ museaPreferDesignTokensOptionsDef: JsonSchema = new JsonSchema {
324
+ type = "object"
325
+ properties {
326
+ ["tokens"] = new JsonSchema {
327
+ type = "array"
328
+ items = new JsonSchema { `$ref` = "#/definitions/MuseaDesignToken" }
329
+ }
330
+ }
331
+ additionalProperties = false
332
+ }
333
+
334
+ lintRuleOptionsDef: JsonSchema = new JsonSchema {
335
+ type = "object"
336
+ properties {
337
+ ["script/no-restricted-globals"] = new JsonSchema { `$ref` = "#/definitions/NoRestrictedGlobalsOptions" }
338
+ ["script/no-restricted-members"] = new JsonSchema { `$ref` = "#/definitions/NoRestrictedMembersOptions" }
339
+ ["vue/component-name-in-template-casing"] = componentNameInTemplateCasingOptionsDef
340
+ ["script/custom-event-name-casing"] = customEventNameCasingOptionsDef
341
+ ["vue/no-mutating-props"] = noMutatingPropsOptionsDef
342
+ ["vue/sfc-element-order"] = sfcElementOrderOptionsDef
343
+ ["vue/html-self-closing"] = htmlSelfClosingOptionsDef
344
+ ["vue/v-on-event-hyphenation"] = hyphenationStyleDef
345
+ ["vue/attribute-hyphenation"] = hyphenationStyleDef
346
+ ["musea/prefer-design-tokens"] = new JsonSchema { `$ref` = "#/definitions/MuseaPreferDesignTokensOptions" }
347
+ }
348
+ additionalProperties = false
349
+ }
@@ -1,5 +1,4 @@
1
1
  /// Generates secondary JSON Schema compatibility output from the primary Pkl definitions.
2
- ///
3
2
  /// Usage: pkl eval -f json pkl/jsonschema/generate.pkl
4
3
  module vize.jsonschema.generate
5
4
  import "@json_schema/JsonSchema.pkl"
@@ -72,7 +71,7 @@ local linterConfigDef: JsonSchema = new JsonSchema {
72
71
  type = lintPresetEnum.type
73
72
  enum = lintPresetEnum.enum
74
73
  description = "Built-in lint preset"
75
- default = "ecosystem"
74
+ default = "happy-path"
76
75
  }
77
76
  ["typeAware"] = new JsonSchema {
78
77
  type = "boolean"
@@ -486,7 +485,6 @@ local configEntryDef: JsonSchema = new JsonSchema {
486
485
  }
487
486
  additionalProperties = false
488
487
  }
489
-
490
488
  output {
491
489
  value = new JsonSchema {
492
490
  `$schema` = "http://json-schema.org/draft-07/schema#"
@@ -503,6 +501,8 @@ output {
503
501
  ["RestrictedMember"] = ConfigArtifactDefinitions.restrictedMemberDef
504
502
  ["NoRestrictedGlobalsOptions"] = ConfigArtifactDefinitions.noRestrictedGlobalsOptionsDef
505
503
  ["NoRestrictedMembersOptions"] = ConfigArtifactDefinitions.noRestrictedMembersOptionsDef
504
+ ["MuseaDesignToken"] = ConfigArtifactDefinitions.museaDesignTokenDef
505
+ ["MuseaPreferDesignTokensOptions"] = ConfigArtifactDefinitions.museaPreferDesignTokensOptionsDef
506
506
  ["LintRuleOptions"] = ConfigArtifactDefinitions.lintRuleOptionsDef
507
507
  ["TypeCheckerConfig"] = typeCheckerConfigDef
508
508
  ["FormatterConfig"] = formatterConfigDef
package/pkl/vize.pkl CHANGED
@@ -15,6 +15,10 @@ typealias JsxCompat = "native" | "babel"
15
15
  typealias ScriptExt = "ts" | "js"
16
16
  typealias RuleSeverity = "off" | "warn" | "error"
17
17
  typealias LintPreset = "happy-path" | "opinionated" | "essential" | "incremental" | "ecosystem" | "nuxt"
18
+ typealias TemplateComponentNameCasing = "PascalCase" | "kebab-case"
19
+ typealias CustomEventNameCasing = "camelCase" | "kebab-case"
20
+ typealias HtmlSelfClosingStyle = "always" | "never" | "any"
21
+ typealias HyphenationStyle = "always" | "never"
18
22
  typealias TrailingComma = "all" | "none" | "es5"
19
23
  typealias FilterPattern = String | Listing<String>
20
24
  typealias GlobalTypeValue = String | GlobalTypeDeclaration
@@ -86,9 +90,58 @@ class NoRestrictedMembersOptions {
86
90
  members: Listing<RestrictedMember>? = null
87
91
  }
88
92
 
93
+ class ComponentNameInTemplateCasingOptions {
94
+ casing: TemplateComponentNameCasing = "PascalCase"
95
+ }
96
+
97
+ class CustomEventNameCasingOptions {
98
+ casing: CustomEventNameCasing = "camelCase"
99
+ }
100
+
101
+ class NoMutatingPropsOptions {
102
+ shallowOnly: Boolean = false
103
+ }
104
+
105
+ class SfcElementOrderOptions {
106
+ order: Listing<String | Listing<String>> = new Listing {
107
+ new Listing { "script"; "template" }
108
+ "style"
109
+ }
110
+ }
111
+
112
+ class HtmlSelfClosingHtmlOptions {
113
+ `void`: HtmlSelfClosingStyle = "always"
114
+ normal: HtmlSelfClosingStyle = "any"
115
+ component: HtmlSelfClosingStyle = "always"
116
+ }
117
+
118
+ class HtmlSelfClosingOptions {
119
+ html: HtmlSelfClosingHtmlOptions = new HtmlSelfClosingHtmlOptions {}
120
+ svg: HtmlSelfClosingStyle = "always"
121
+ math: HtmlSelfClosingStyle = "always"
122
+ }
123
+
124
+ class MuseaDesignToken {
125
+ path: String
126
+ value: String
127
+ tier: String? = null
128
+ }
129
+
130
+ class MuseaPreferDesignTokensOptions {
131
+ tokens: Listing<MuseaDesignToken>? = null
132
+ }
133
+
89
134
  class LintRuleOptions {
90
135
  `script/no-restricted-globals`: NoRestrictedGlobalsOptions? = null
91
136
  `script/no-restricted-members`: NoRestrictedMembersOptions? = null
137
+ `vue/component-name-in-template-casing`: ComponentNameInTemplateCasingOptions? = null
138
+ `script/custom-event-name-casing`: CustomEventNameCasingOptions? = null
139
+ `vue/no-mutating-props`: NoMutatingPropsOptions? = null
140
+ `vue/sfc-element-order`: SfcElementOrderOptions? = null
141
+ `vue/html-self-closing`: HtmlSelfClosingOptions? = null
142
+ `vue/v-on-event-hyphenation`: HyphenationStyle? = null
143
+ `vue/attribute-hyphenation`: HyphenationStyle? = null
144
+ `musea/prefer-design-tokens`: MuseaPreferDesignTokensOptions? = null
92
145
  }
93
146
 
94
147
  class LinterConfig {
@@ -195,7 +195,7 @@
195
195
  },
196
196
  "preset": {
197
197
  "description": "Built-in lint preset",
198
- "default": "ecosystem",
198
+ "default": "happy-path",
199
199
  "type": "string",
200
200
  "enum": ["happy-path", "opinionated", "essential", "incremental", "ecosystem", "nuxt"]
201
201
  },
@@ -301,6 +301,38 @@
301
301
  },
302
302
  "additionalProperties": false
303
303
  },
304
+ "MuseaDesignToken": {
305
+ "type": "object",
306
+ "properties": {
307
+ "path": {
308
+ "description": "Token path, for example color.primary",
309
+ "type": "string"
310
+ },
311
+ "value": {
312
+ "description": "Primitive CSS value to match, for example #3b82f6",
313
+ "type": "string"
314
+ },
315
+ "tier": {
316
+ "description": "Token tier shown in diagnostics",
317
+ "default": "primitive",
318
+ "type": "string"
319
+ }
320
+ },
321
+ "additionalProperties": false,
322
+ "required": ["path", "value"]
323
+ },
324
+ "MuseaPreferDesignTokensOptions": {
325
+ "type": "object",
326
+ "properties": {
327
+ "tokens": {
328
+ "type": "array",
329
+ "items": {
330
+ "$ref": "#/definitions/MuseaDesignToken"
331
+ }
332
+ }
333
+ },
334
+ "additionalProperties": false
335
+ },
304
336
  "LintRuleOptions": {
305
337
  "type": "object",
306
338
  "properties": {
@@ -309,6 +341,108 @@
309
341
  },
310
342
  "script/no-restricted-members": {
311
343
  "$ref": "#/definitions/NoRestrictedMembersOptions"
344
+ },
345
+ "vue/component-name-in-template-casing": {
346
+ "type": "object",
347
+ "properties": {
348
+ "casing": {
349
+ "default": "PascalCase",
350
+ "type": "string",
351
+ "enum": ["PascalCase", "kebab-case"]
352
+ }
353
+ },
354
+ "additionalProperties": false
355
+ },
356
+ "script/custom-event-name-casing": {
357
+ "type": "object",
358
+ "properties": {
359
+ "casing": {
360
+ "default": "camelCase",
361
+ "type": "string",
362
+ "enum": ["camelCase", "kebab-case"]
363
+ }
364
+ },
365
+ "additionalProperties": false
366
+ },
367
+ "vue/no-mutating-props": {
368
+ "type": "object",
369
+ "properties": {
370
+ "shallowOnly": {
371
+ "default": false,
372
+ "type": "boolean"
373
+ }
374
+ },
375
+ "additionalProperties": false
376
+ },
377
+ "vue/sfc-element-order": {
378
+ "type": "object",
379
+ "properties": {
380
+ "order": {
381
+ "type": "array",
382
+ "items": {
383
+ "oneOf": [
384
+ {
385
+ "type": "string"
386
+ },
387
+ {
388
+ "type": "array",
389
+ "items": {
390
+ "type": "string"
391
+ }
392
+ }
393
+ ]
394
+ }
395
+ }
396
+ },
397
+ "additionalProperties": false
398
+ },
399
+ "vue/html-self-closing": {
400
+ "type": "object",
401
+ "properties": {
402
+ "html": {
403
+ "type": "object",
404
+ "properties": {
405
+ "void": {
406
+ "default": "always",
407
+ "type": "string",
408
+ "enum": ["always", "never", "any"]
409
+ },
410
+ "normal": {
411
+ "default": "any",
412
+ "type": "string",
413
+ "enum": ["always", "never", "any"]
414
+ },
415
+ "component": {
416
+ "default": "always",
417
+ "type": "string",
418
+ "enum": ["always", "never", "any"]
419
+ }
420
+ },
421
+ "additionalProperties": false
422
+ },
423
+ "svg": {
424
+ "default": "always",
425
+ "type": "string",
426
+ "enum": ["always", "never", "any"]
427
+ },
428
+ "math": {
429
+ "default": "always",
430
+ "type": "string",
431
+ "enum": ["always", "never", "any"]
432
+ }
433
+ },
434
+ "additionalProperties": false
435
+ },
436
+ "vue/v-on-event-hyphenation": {
437
+ "type": "string",
438
+ "enum": ["always", "never"]
439
+ },
440
+ "vue/attribute-hyphenation": {
441
+ "type": "string",
442
+ "enum": ["always", "never"]
443
+ },
444
+ "musea/prefer-design-tokens": {
445
+ "$ref": "#/definitions/MuseaPreferDesignTokensOptions"
312
446
  }
313
447
  },
314
448
  "additionalProperties": false