Skip to content

Commit e08fe28

Browse files
committed
fix(valid-define-options): Allow the use of simple constants
1 parent fef5b53 commit e08fe28

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

lib/rules/valid-define-options.js

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,21 @@ module.exports = {
8989
variable &&
9090
variable.references.some((ref) => ref.identifier === node) &&
9191
variable.defs.length > 0 &&
92-
variable.defs.every(
93-
(def) =>
94-
def.type !== 'ImportBinding' &&
95-
utils.inRange(scriptSetup.range, def.name) &&
96-
!utils.inRange(defineOptions.range, def.name)
97-
)
92+
variable.defs.every((def) => {
93+
if (def.type === 'ImportBinding') return false
94+
if (!utils.inRange(scriptSetup.range, def.name)) return false
95+
if (utils.inRange(defineOptions.range, def.name)) return false
96+
if (
97+
def.parent &&
98+
def.parent.kind === 'const' &&
99+
def.node.init &&
100+
!['ArrayExpression', 'ObjectExpression'].includes(
101+
def.node.init?.type
102+
)
103+
)
104+
return false
105+
return true
106+
})
98107
) {
99108
if (utils.withinTypeNode(node)) {
100109
continue

tests/lib/rules/valid-define-options.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,14 @@ tester.run('valid-define-options', rule, {
7474
7575
defineOptions(def);
7676
</script>`
77+
},
78+
{
79+
filename: 'test.vue',
80+
code: `
81+
<script setup>
82+
const def = 'foo';
83+
defineOptions({ name: def });
84+
</script>`
7785
}
7886
],
7987
invalid: [

0 commit comments

Comments
 (0)