|
5 | 5 | 'use strict' |
6 | 6 |
|
7 | 7 | /** |
8 | | - * @typedef {import('../utils').ComponentArrayEmit} ComponentArrayEmit |
9 | | - * @typedef {import('../utils').ComponentObjectEmit} ComponentObjectEmit |
10 | | - * @typedef {import('../utils').ComponentTypeEmit} ComponentTypeEmit |
11 | | - * @typedef {import('../utils').ComponentArrayProp} ComponentArrayProp |
12 | | - * @typedef {import('../utils').ComponentObjectProp} ComponentObjectProp |
13 | | - * @typedef {import('../utils').ComponentTypeProp} ComponentTypeProp |
| 8 | + * @typedef {import('../utils').ComponentEmit} ComponentEmit |
| 9 | + * @typedef {import('../utils').ComponentProp} ComponentProp |
14 | 10 | * @typedef {import('../utils').VueObjectData} VueObjectData |
15 | 11 | */ |
16 | 12 |
|
@@ -99,36 +95,36 @@ module.exports = { |
99 | 95 | const allowProps = !!options.allowProps |
100 | 96 | /** @type {Map<ObjectExpression | Program, { contextReferenceIds: Set<Identifier>, emitReferenceIds: Set<Identifier> }>} */ |
101 | 97 | const setupContexts = new Map() |
102 | | - /** @type {Map<ObjectExpression | Program, (ComponentArrayEmit | ComponentObjectEmit | ComponentTypeEmit)[]>} */ |
| 98 | + /** @type {Map<ObjectExpression | Program, ComponentEmit[]>} */ |
103 | 99 | const vueEmitsDeclarations = new Map() |
104 | | - /** @type {Map<ObjectExpression | Program, (ComponentArrayProp | ComponentObjectProp | ComponentTypeProp)[]>} */ |
| 100 | + /** @type {Map<ObjectExpression | Program, ComponentProp[]>} */ |
105 | 101 | const vuePropsDeclarations = new Map() |
106 | 102 |
|
107 | 103 | /** |
108 | 104 | * @typedef {object} VueTemplateDefineData |
109 | 105 | * @property {'export' | 'mark' | 'definition' | 'setup'} type |
110 | 106 | * @property {ObjectExpression | Program} define |
111 | | - * @property {(ComponentArrayEmit | ComponentObjectEmit | ComponentTypeEmit)[]} emits |
112 | | - * @property {(ComponentArrayProp | ComponentObjectProp | ComponentTypeProp)[]} props |
| 107 | + * @property {ComponentEmit[]} emits |
| 108 | + * @property {ComponentProp[]} props |
113 | 109 | * @property {CallExpression} [defineEmits] |
114 | 110 | */ |
115 | 111 | /** @type {VueTemplateDefineData | null} */ |
116 | 112 | let vueTemplateDefineData = null |
117 | 113 |
|
118 | 114 | /** |
119 | | - * @param {(ComponentArrayEmit | ComponentObjectEmit | ComponentTypeEmit)[]} emits |
120 | | - * @param {(ComponentArrayProp | ComponentObjectProp | ComponentTypeProp)[]} props |
| 115 | + * @param {ComponentEmit[]} emits |
| 116 | + * @param {ComponentProp[]} props |
121 | 117 | * @param {Literal} nameLiteralNode |
122 | 118 | * @param {ObjectExpression | Program} vueDefineNode |
123 | 119 | */ |
124 | 120 | function verifyEmit(emits, props, nameLiteralNode, vueDefineNode) { |
125 | 121 | const name = `${nameLiteralNode.value}` |
126 | | - if (emits.some((e) => e.emitName === name)) { |
| 122 | + if (emits.some((e) => e.emitName === name || e.emitName == null)) { |
127 | 123 | return |
128 | 124 | } |
129 | 125 | if (allowProps) { |
130 | 126 | const key = `on${capitalize(name)}` |
131 | | - if (props.some((e) => e.propName === key)) { |
| 127 | + if (props.some((e) => e.propName === key || e.propName == null)) { |
132 | 128 | return |
133 | 129 | } |
134 | 130 | } |
@@ -311,9 +307,15 @@ module.exports = { |
311 | 307 | }), |
312 | 308 | utils.defineVueVisitor(context, { |
313 | 309 | onVueObjectEnter(node) { |
314 | | - vueEmitsDeclarations.set(node, utils.getComponentEmits(node)) |
| 310 | + vueEmitsDeclarations.set( |
| 311 | + node, |
| 312 | + utils.getComponentEmitsFromOptions(node) |
| 313 | + ) |
315 | 314 | if (allowProps) { |
316 | | - vuePropsDeclarations.set(node, utils.getComponentProps(node)) |
| 315 | + vuePropsDeclarations.set( |
| 316 | + node, |
| 317 | + utils.getComponentPropsFromOptions(node) |
| 318 | + ) |
317 | 319 | } |
318 | 320 | }, |
319 | 321 | onSetupFunctionEnter(node, { node: vueNode }) { |
@@ -409,7 +411,7 @@ module.exports = { |
409 | 411 |
|
410 | 412 | /** |
411 | 413 | * @param {ObjectExpression|Program} define |
412 | | - * @param {(ComponentArrayEmit | ComponentObjectEmit | ComponentTypeEmit)[]} emits |
| 414 | + * @param {ComponentEmit[]} emits |
413 | 415 | * @param {Literal} nameNode |
414 | 416 | * @param {RuleContext} context |
415 | 417 | * @returns {Rule.SuggestionReportDescriptor[]} |
|
0 commit comments