UNPKG

eslint-plugin-vue

Version:

Official ESLint plugin for Vue.js

44 lines (42 loc) 1.74 kB
const require_runtime = require('../_virtual/_rolldown/runtime.js'); const require_index = require('../utils/index.js'); const require_casing = require('../utils/casing.js'); //#region lib/rules/match-component-import-name.ts var import_utils = /* @__PURE__ */ require_runtime.__toESM(require_index.default); function getExpectedNames(identifier) { return [require_casing.pascalCase(identifier.name), require_casing.kebabCase(identifier.name)]; } var match_component_import_name_default = { meta: { type: "problem", docs: { description: "require the registered component name to match the imported component name", categories: void 0, url: "https://eslint.vuejs.org/rules/match-component-import-name.html" }, fixable: null, schema: [], messages: { unexpected: "Component alias {{importedName}} should be one of: {{expectedName}}." } }, create(context) { return import_utils.default.executeOnVueComponent(context, (obj) => { const components = import_utils.default.findProperty(obj, "components"); if (!components || !components.value || components.value.type !== "ObjectExpression") return; for (const property of components.value.properties) { if (property.type === "SpreadElement" || property.value.type !== "Identifier" || property.computed === true) continue; const importedName = import_utils.default.getStaticPropertyName(property) || ""; const expectedNames = getExpectedNames(property.value); if (!expectedNames.includes(importedName)) context.report({ node: property, messageId: "unexpected", data: { importedName, expectedName: expectedNames.join(", ") } }); } }); } }; //#endregion exports.default = match_component_import_name_default;