Skip to content

Commit

Permalink
refactor: simplify import helper function
Browse files Browse the repository at this point in the history
  • Loading branch information
sxzz committed Apr 16, 2023
1 parent 2b0846f commit 49ce826
Show file tree
Hide file tree
Showing 8 changed files with 47 additions and 28 deletions.
11 changes: 11 additions & 0 deletions .changeset/three-needles-taste.md
@@ -0,0 +1,11 @@
---
'@vue-macros/common': minor
'@vue-macros/define-props-refs': patch
'unplugin-vue-define-options': patch
'@vue-macros/named-template': patch
'@vue-macros/better-define': patch
'@vue-macros/define-models': patch
'@vue-macros/define-prop': patch
---

simplify import helper function
13 changes: 7 additions & 6 deletions packages/better-define/src/core/index.ts
@@ -1,5 +1,4 @@
import {
HELPER_PREFIX,
MagicString,
getTransformResult,
importHelperFn,
Expand Down Expand Up @@ -54,12 +53,14 @@ export async function transformBetterDefine(
let decl = runtimeDecls
if (props.withDefaultsAst && !props.defaults) {
// dynamic defaults
decl = `${HELPER_PREFIX}mergeDefaults(${decl}, ${s.sliceNode(
props.withDefaultsAst.arguments[1],
{ offset }
)})`
decl = `${importHelperFn(
s,
offset,
'mergeDefaults'
)}(${decl}, ${s.sliceNode(props.withDefaultsAst.arguments[1], {
offset,
})})`
// add helper
importHelperFn(s, offset, 'mergeDefaults', 'vue')
}
decl = `defineProps(${decl})`

Expand Down
2 changes: 1 addition & 1 deletion packages/common/src/ast.ts
Expand Up @@ -303,7 +303,7 @@ export function importHelperFn(
s: MagicStringBase,
offset: number,
local: string,
from: string,
from = 'vue',
isDefault = false
) {
const imported = isDefault ? 'default' : local
Expand Down
23 changes: 16 additions & 7 deletions packages/define-models/src/core/index.ts
Expand Up @@ -422,9 +422,13 @@ export function transformDefineModels(
}

function rewriteRuntime() {
importHelperFn(s, setupOffset, 'useVModel', useVmodelHelperId, true)

const text = `${HELPER_PREFIX}useVModel(${Object.entries(map)
const text = `${importHelperFn(
s,
setupOffset,
'useVModel',
useVmodelHelperId,
true
)}(${Object.entries(map)
.map(([name, { options }]) => {
const prop = getPropKey(name, true)
const evt = getEventKey(name, true)
Expand Down Expand Up @@ -457,11 +461,16 @@ export function transformDefineModels(
value: string,
original = false
) {
importHelperFn(s, setupOffset, 'emitHelper', emitHelperId, true)
const eventName = aliasMap[id.name]
const content = `${HELPER_PREFIX}emitHelper(${emitsIdentifier}, '${getEventKey(
String(eventName)
)}', ${value}${original ? `, ${id.name}` : ''})`
const content = `${importHelperFn(
s,
setupOffset,
'emitHelper',
emitHelperId,
true
)}(${emitsIdentifier}, '${getEventKey(String(eventName))}', ${value}${
original ? `, ${id.name}` : ''
})`
s.overwriteNode(node, content, { offset: setupOffset })
}

Expand Down
8 changes: 5 additions & 3 deletions packages/define-options/src/core/transform.ts
@@ -1,6 +1,5 @@
import {
DEFINE_OPTIONS,
HELPER_PREFIX,
MagicString,
addNormalScript,
checkInvalidScopeReference,
Expand Down Expand Up @@ -45,10 +44,13 @@ export function transformDefineOptions(code: string, id: string) {

const scriptOffset = normalScript.start()

importHelperFn(s, scriptOffset, 'defineComponent', 'vue')
s.appendLeft(
scriptOffset,
`\nexport default /*#__PURE__*/ ${HELPER_PREFIX}defineComponent(`
`\nexport default /*#__PURE__*/ ${importHelperFn(
s,
scriptOffset,
'defineComponent'
)}(`
)

if (arg.type === 'ObjectExpression' && hasPropsOrEmits(arg))
Expand Down
7 changes: 5 additions & 2 deletions packages/define-prop/src/core/index.ts
Expand Up @@ -56,10 +56,13 @@ export async function transformDefineProp(
if (isCallOf(node, DEFINE_PROP)) {
hasDefineProp = true
const propName = walkCall(node, parent)
const toRef = importHelperFn(s, offset, 'toRef', 'vue')
s.overwriteNode(
node,
`${toRef}(${PROPS_VARIABLE_NAME}, ${JSON.stringify(propName)})`,
`${importHelperFn(
s,
offset,
'toRef'
)}(${PROPS_VARIABLE_NAME}, ${JSON.stringify(propName)})`,
{ offset }
)
} else if (isCallOf(node, DEFINE_PROPS)) {
Expand Down
8 changes: 1 addition & 7 deletions packages/define-props-refs/src/core/index.ts
Expand Up @@ -22,7 +22,6 @@ export function transformDefinePropsRefs(code: string, id: string) {
const s = new MagicString(code)
const setupAst = getSetupAst()!

let changed = false
walkAST<Node>(setupAst, {
enter(node) {
if (isCallOf(node, WITH_DEFAULTS) && node.arguments) {
Expand All @@ -34,10 +33,6 @@ export function transformDefinePropsRefs(code: string, id: string) {
},
})

if (changed) {
importHelperFn(s, offset, 'toRefs', 'vue')
}

return getTransformResult(s, id)

function processDefinePropsRefs(
Expand All @@ -60,11 +55,10 @@ export function transformDefinePropsRefs(code: string, id: string) {
s.prependLeft(offset, `\nconst ${HELPER_PREFIX}props = ${code}`)
s.overwriteNode(
defaultsCall || propsCall,
`${HELPER_PREFIX}toRefs(${HELPER_PREFIX}props)`,
`${importHelperFn(s, offset, 'toRefs')}(${HELPER_PREFIX}props)`,
{
offset,
}
)
changed = true
}
}
3 changes: 1 addition & 2 deletions packages/named-template/src/core/index.ts
Expand Up @@ -201,8 +201,7 @@ export function postTransform(
if (fnName === '_createVNode') {
s.overwriteNode(vnode, render)
} else if (fnName === '_createBlock') {
importHelperFn(s, 0, 'Fragment', 'vue')
s.overwriteNode(component, `${HELPER_PREFIX}Fragment`)
s.overwriteNode(component, importHelperFn(s, 0, 'Fragment'))
const text = `${vnode.arguments[1] ? '' : ', null'}, [${render}]`
s.appendLeft((vnode.arguments[1] || vnode.arguments[0]).end!, text)
}
Expand Down

0 comments on commit 49ce826

Please sign in to comment.