Expand description
§vize_patina
Patina - The quality checker for Vize. Linter for Vue.js Single File Components.
§Name Origin
Patina (/ˈpætɪnə/) refers to the greenish layer that forms on copper,
bronze, and similar metals through oxidation over time. In art and antiques,
patina is highly valued as it indicates authenticity, age, and quality.
vize_patina examines Vue SFC code to ensure its quality and authenticity.
§Features
- Rich diagnostic output with code snippets and suggestions (like oxlint)
- eslint-plugin-vue compatible rules
- LSP-ready design for integration with vize_maestro
§Usage
ⓘ
use vize_patina::{Linter, OutputFormat, format_results};
let linter = Linter::new();
let source = r#"<template><div v-for="item in items">{{ item }}</div></template>"#;
let result = linter.lint_template(source, "test.vue");
if result.has_errors() {
// Format and display errors
let output = format_results(&[result], &[(filename.to_string(), source.to_string())], OutputFormat::Text);
println!("{}", output);
}§Rules
Currently implemented rules (eslint-plugin-vue compatible):
§Essential Rules
vue/require-v-for-key- Requirev-bind:keywithv-fordirectivesvue/valid-v-for- Enforce validv-fordirectivesvue/valid-v-if- Enforce validv-ifdirectivesvue/valid-v-else- Enforce validv-elsedirectivesvue/valid-v-bind- Enforce validv-binddirectivesvue/valid-v-on- Enforce validv-ondirectivesvue/valid-v-model- Enforce validv-modeldirectivesvue/valid-v-show- Enforce validv-showdirectivesvue/no-use-v-if-with-v-for- Disallow usingv-ifon the same element asv-forvue/no-unused-vars- Disallow unused variable definitions inv-fordirectivesvue/no-duplicate-attributes- Disallow duplicate attributesvue/no-template-key- Disallow key attribute on<template>vue/no-textarea-mustache- Disallow mustache interpolation in<textarea>vue/no-dupe-v-else-if- Disallow duplicate conditions in v-if chainsvue/no-reserved-component-names- Disallow reserved component names
§Strongly Recommended Rules
vue/no-template-shadow- Disallow variable shadowing in v-forvue/no-multi-spaces- Disallow multiple consecutive spacesvue/v-bind-style- Enforce v-bind directive style (shorthand or longform)vue/v-on-style- Enforce v-on directive style (shorthand or longform)
§Vapor Migration Rules (based on Vue 3.6.0-beta.1)
Template rules:
vapor/no-vue-lifecycle-events- Disallow @vue:xxx per-element lifecycle eventsvapor/no-suspense- Warn about Suspense in Vapor-only appsvapor/prefer-static-class- Prefer static class over dynamic bindingvapor/no-inline-template- Disallow deprecated inline-template
Script rules (enabled by opinionated / nuxt presets, or opt-in manually):
script/no-options-api- Disallow Options API patterns (Vapor is Composition-only)script/no-get-current-instance- Disallow getCurrentInstance() (returns null in Vapor)script/no-next-tick- Disallow nextTick() scheduling in Vapor-oriented code
§Musea Rules (for *.art.vue files)
musea/require-title- Require title attribute in<art>blockmusea/require-component- Require component attribute in<art>blockmusea/valid-variant- Require name attribute in<variant>blocksmusea/no-empty-variant- Disallow empty variant blocksmusea/unique-variant-names- Require unique variant namesmusea/prefer-design-tokens- Prefer design token CSS variables over hardcoded primitive values
§Script Rules (manual opt-in, default off unless a built-in preset enables them)
script/prefer-import-from-vue- Prefer importing from ‘vue’ instead of internal packagesscript/no-internal-imports- Disallow importing from Vue internal modules
Re-exports§
pub use output::format_results;pub use output::format_summary;pub use output::OutputFormat;pub use telegraph::Emitter;pub use telegraph::JsonEmitter;pub use telegraph::LspDiagnostic;pub use telegraph::LspEmitter;pub use telegraph::Telegraph;pub use telegraph::TextEmitter;
Modules§
- output
- Output formatters for lint diagnostics.
- rules
- Lint rules for Vue.js SFC files.
- telegraph
- Telegraph - The message delivery system for lint results.
Structs§
- Builtin
Script Rule Meta - Fix
- A fix for a diagnostic, containing one or more text edits.
- Lint
Context - Lint context provides utilities for rules during execution.
- Lint
Diagnostic - A lint diagnostic with rich information for display.
- Lint
Result - Lint result for a single file.
- Lint
Summary - Summary of lint results.
- Linter
- Main linter struct.
- Rule
Meta - Rule metadata
- Rule
Registry - Registry holding all enabled lint rules
- Text
Edit - A text edit for auto-fixing a diagnostic.
Enums§
- Help
Level - Help display level for diagnostics.
- Help
Render Target - Render target for help text conversion at output boundaries.
- Lint
Preset - Named lint presets exposed across Rust, CLI, and bindings.
- Locale
- Supported locales
- Rule
Category - Rule category for organization
- Severity
- Lint diagnostic severity.
Traits§
- Rule
- Rule trait for implementing lint rules
Functions§
- builtin_
script_ rules - lint
- Lint a Vue template source with default rules
- render_
help - Render help text (raw markdown) for the given target.