|
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