export const n = 1"
`;
-exports[`SFC compile <script setup> defineEmit() (deprecated) 1`] = `
-"export default {
- emits: ['foo', 'bar'],
- setup(__props, { expose, emit: myEmit }) {
- expose()
-
-
-
-return { myEmit }
-}
-
-}"
-`;
-
exports[`SFC compile <script setup> defineEmits() 1`] = `
"export default {
emits: ['foo', 'bar'],
setup(__props, { expose }) {
expose()
- const foo = _ref(1)
+ let foo = _ref(1)
return { foo, ref }
}
}"
`;
-exports[`SFC compile <script setup> inlineTemplate mode should not wrap render fn with withId when having scoped styles 1`] = `
-"import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, withScopeId as _withScopeId } from \\"vue\\"
-
-
-export default {
- setup(__props) {
-
- const msg = 1
-
-return (_ctx, _cache) => {
- return (_openBlock(), _createElementBlock(\\"h1\\", null, _toDisplayString(msg)))
-}
-}
-
-}"
-`;
-
exports[`SFC compile <script setup> inlineTemplate mode should work 1`] = `
"import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \\"vue\\"
props: propsModel,`)
})
- test('defineEmit() (deprecated)', () => {
- const { content, bindings } = compile(`
-<script setup>
-const myEmit = defineEmit(['foo', 'bar'])
-</script>
- `)
- assertCode(content)
- expect(bindings).toStrictEqual({
- myEmit: BindingTypes.SETUP_CONST
- })
- // should remove defineOptions import and call
- expect(content).not.toMatch(/defineEmits?/)
- // should generate correct setup signature
- expect(content).toMatch(`setup(__props, { expose, emit: myEmit }) {`)
- // should include context options in default export
- expect(content).toMatch(`export default {
- emits: ['foo', 'bar'],`)
- })
-
test('defineEmits()', () => {
const { content, bindings } = compile(`
<script setup>
`
<script setup>
import { ref } from 'vue'
- ref: foo = 1
+ let foo = $ref(1)
</script>
`,
{ refSugar: true }
test('ref', () => {
assertAwaitDetection(
- `ref: a = 1 + (await foo)`,
+ `let a = $ref(1 + (await foo))`,
`1 + ((([__temp,__restore]=_withAsyncContext(()=>(foo))),__temp=await __temp,__restore(),__temp))`
)
})
// Special compiler macros
const DEFINE_PROPS = 'defineProps'
-const DEFINE_EMIT = 'defineEmit'
+const DEFINE_EMITS = 'defineEmits'
const DEFINE_EXPOSE = 'defineExpose'
const WITH_DEFAULTS = 'withDefaults'
const $FROM_REFS = `$fromRefs`
const $RAW = `$raw`
-// deprecated
-const DEFINE_EMITS = 'defineEmits'
-
export interface SFCScriptCompileOptions {
/**
* Scope ID for prefixing injected CSS varialbes.
}
function processDefineEmits(node: Node): boolean {
- if (!isCallOf(node, c => c === DEFINE_EMIT || c === DEFINE_EMITS)) {
+ if (!isCallOf(node, DEFINE_EMITS)) {
return false
}
if (hasDefineEmitCall) {
if (node.typeParameters) {
if (emitsRuntimeDecl) {
error(
- `${DEFINE_EMIT}() cannot accept both type and non-type arguments ` +
+ `${DEFINE_EMITS}() cannot accept both type and non-type arguments ` +
`at the same time. Use one or the other.`,
node
)
if (
source === 'vue' &&
(imported === DEFINE_PROPS ||
- imported === DEFINE_EMIT ||
imported === DEFINE_EMITS ||
imported === DEFINE_EXPOSE)
) {
isConst &&
isCallOf(
init,
- c =>
- c === DEFINE_PROPS ||
- c === DEFINE_EMIT ||
- c === DEFINE_EMITS ||
- c === WITH_DEFAULTS
+ c => c === DEFINE_PROPS || c === DEFINE_EMITS || c === WITH_DEFAULTS
)
)
if (id.type === 'Identifier') {