Skip to content

Commit f1d2953

Browse files
committed
feat: allow MemberExpression
1 parent 29dd39c commit f1d2953

File tree

4 files changed

+26
-20
lines changed

4 files changed

+26
-20
lines changed

README.md

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ module.exports = {
8282
## Usage
8383

8484
```ts
85-
// /store/user.ts
85+
// ~/store/user.ts
8686
export const useUserStore = $$defineStore('user', () => {
8787
let token = $ref('')
8888
function login() {
@@ -112,13 +112,14 @@ export const useUserStore = defineStore('user', () => {
112112
```vue
113113
<script setup lang="tsx">
114114
import { useBase64 } from '@vueuse/core'
115+
import { useUserStore } from '~/store/user'
115116
116-
function log(...logs: Ref<any>[]) {
117-
console.log(logs)
118-
}
117+
const { token, login } = $toRefs(useUserStore())
118+
// is equivalent to:
119+
const { token, login } = $(toRefs(useUserStore()))
120+
login()
119121
120-
const defaultText = $ref('vue')
121-
const text = $inject('text', defaultText)
122+
const text = $inject('text', token)
122123
// is equivalent to:
123124
const text = $(inject('text', $$(defaultText)))
124125
@@ -127,19 +128,19 @@ const { base64 } = $useBase64(text)
127128
const { base64 } = $(useBase64($$(text)))
128129
129130
$watch(base64, () => {
130-
$log(base64)
131+
$console.log(base64)
131132
})
132133
// is equivalent to:
133134
watch($$(base64), () => {
134-
log($$(base64))
135+
console.log($$(base64))
135136
})
136137
137138
const stop = $$watch(base64, () => {
138-
$log(base64)
139+
$console.log(base64)
139140
})
140141
// is equivalent to:
141142
const stop = watch($$(base64), () => {
142-
log($$(base64))
143+
console.log($$(base64))
143144
})
144145
stop()
145146

playground/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
# Vue 3 Macros Playground
1+
# Reactivity Function Playground

playground/src/App.vue

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,18 @@ import { type Ref, inject, ref, toRefs, watch } from 'vue'
33
import { useBase64 } from '@vueuse/core'
44
import { useUserStore } from '../store/user'
55
6-
function logRef(...logs: Ref<any>[]) {
7-
console.log(logs)
8-
}
9-
106
const { token, login } = $toRefs(useUserStore())
117
login()
128
139
const text = $inject('text', token)
1410
const { base64 } = $useBase64(text)
11+
1512
$watch(base64, () => {
16-
$logRef(base64)
13+
$console.log(base64)
1714
})
1815
1916
const stop = $$watch(base64, () => {
20-
$logRef(base64)
17+
$console.log(base64)
2118
})
2219
stop()
2320

src/index.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,22 @@ function transformReactivityFunction(code: string, id: string) {
9494
for (const { ast, offset } of asts) {
9595
walkAST<t.Node>(ast, {
9696
enter(node, parent) {
97+
let name
9798
if (
9899
node.type === 'CallExpression' &&
99-
node.callee.type === 'Identifier' &&
100+
[
101+
'Identifier',
102+
'MemberExpression',
103+
'OptionalMemberExpression',
104+
].includes(node.callee.type) &&
100105
/^\$(?!(\$|ref|computed|shallowRef|toRef|customRef|defineProp|defineProps|defineModels)?(\(|$))/.test(
101-
node.callee.name
106+
(name = code.slice(
107+
node.callee.start! + offset,
108+
node.callee.end! + offset
109+
))
102110
)
103111
) {
104-
if (node.callee.name.startsWith('$$')) {
112+
if (name.startsWith('$$')) {
105113
s.remove(
106114
node.callee.start! + offset,
107115
node.callee.start! + offset + 2

0 commit comments

Comments
 (0)