Files
routie/frontend/node_modules/eslint-plugin-vue/dist/rules/match-component-import-name.js
T

44 lines
1.7 KiB
JavaScript

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;