packages/compiler-sfc/test/__snapshots__/compileScript.spec.ts.snap 972 lines View on github.com → Search inside
1// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html23exports[`SFC analyze <script> bindings > auto name inference > basic 1`] = `4"export default {5  __name: 'FooBar',6  setup(__props) {7const a = 18return { a }9}1011}"12`;1314exports[`SFC analyze <script> bindings > auto name inference > do not overwrite manual name (call) 1`] = `15"import { defineComponent } from 'vue'16        const __default__ = defineComponent({17          name: 'Baz'18        })19        20export default /*#__PURE__*/Object.assign(__default__, {21  setup(__props) {22const a = 123return { a }24}2526})"27`;2829exports[`SFC analyze <script> bindings > auto name inference > do not overwrite manual name (object) 1`] = `30"const __default__ = {31          name: 'Baz'32        }33        34export default /*#__PURE__*/Object.assign(__default__, {35  setup(__props) {36const a = 137return { a }38}3940})"41`;4243exports[`SFC compile <script setup> > <script> after <script setup> the script content not end with \`\\n\` 1`] = `44"const n = 145import { x } from './x'46    47export default {48  setup(__props) {4950    51return { n, x }52}5354}"55`;5657exports[`SFC compile <script setup> > <script> and <script setup> co-usage > script first 1`] = `58"import { x } from './x'59      60      export const n = 16162      const __default__ = {}63      64export default /*#__PURE__*/Object.assign(__default__, {65  setup(__props) {6667      x()68      69return { n, x }70}7172})"73`;7475exports[`SFC compile <script setup> > <script> and <script setup> co-usage > script setup first 1`] = `76"export const n = 177      const __default__ = {}78      79import { x } from './x'80      81export default /*#__PURE__*/Object.assign(__default__, {82  setup(__props) {8384      x()85      86return { n, x }87}8889})"90`;9192exports[`SFC compile <script setup> > <script> and <script setup> co-usage > script setup first, lang="ts", script block content export default 1`] = `93"import { defineComponent as _defineComponent } from 'vue'9495      const __default__ = {96        name: "test"97      }98      99import { x } from './x'100      101export default /*#__PURE__*/_defineComponent({102  ...__default__,103  setup(__props) {104105      x()106      107return { x }108}109110})"111`;112113exports[`SFC compile <script setup> > <script> and <script setup> co-usage > script setup first, named default export 1`] = `114"export const n = 1115      const def = {}116      117      118const __default__ = def119120import { x } from './x'121      122export default /*#__PURE__*/Object.assign(__default__, {123  setup(__props) {124125      x()126      127return { n, def, x }128}129130})"131`;132133exports[`SFC compile <script setup> > <script> and <script setup> co-usage > spaces in ExportDefaultDeclaration node > with many spaces and newline 1`] = `134"import { x } from './x'135        136        export const n = 1137        const __default__ = {138          some:'option'139        }140        141export default /*#__PURE__*/Object.assign(__default__, {142  setup(__props) {143144        x()145        146return { n, x }147}148149})"150`;151152exports[`SFC compile <script setup> > <script> and <script setup> co-usage > spaces in ExportDefaultDeclaration node > with minimal spaces 1`] = `153"import { x } from './x'154        155        export const n = 1156        const __default__ = {157          some:'option'158        }159        160export default /*#__PURE__*/Object.assign(__default__, {161  setup(__props) {162163        x()164        165return { n, x }166}167168})"169`;170171exports[`SFC compile <script setup> > binding analysis for destructure 1`] = `172"export default {173  setup(__props) {174175      const { foo, b: bar, ['x' + 'y']: baz, x: { y, zz: { z }}} = {}176      177return { foo, bar, baz, y, z }178}179180}"181`;182183exports[`SFC compile <script setup> > defineEmits() 1`] = `184"export default {185  emits: ['foo', 'bar'],186  setup(__props, { emit: myEmit }) {187188189190return { myEmit }191}192193}"194`;195196exports[`SFC compile <script setup> > defineExpose() 1`] = `197"export default {198  setup(__props, { expose }) {199200expose({ foo: 123 })201202return {  }203}204205}"206`;207208exports[`SFC compile <script setup> > defineProps w/ external definition 1`] = `209"import { propsModel } from './props'210    211export default {212  props: propsModel,213  setup(__props) {214215const props = __props;216217    218    219return { props, propsModel }220}221222}"223`;224225exports[`SFC compile <script setup> > defineProps w/ leading code 1`] = `226"import { x } from './x'227    228export default {229  props: {},230  setup(__props) {231232const props = __props;233234    235return { props, x }236}237238}"239`;240241exports[`SFC compile <script setup> > defineProps() 1`] = `242"export default {243  props: {244  foo: String245},246  setup(__props) {247248const props = __props;249250251const bar = 1252253return { props, bar }254}255256}"257`;258259exports[`SFC compile <script setup> > defineProps/defineEmits in multi-variable declaration (full removal) 1`] = `260"export default {261  props: ['item'],262  emits: ['a'],263  setup(__props, { emit }) {264265const props = __props;266267    268    269return { props, emit }270}271272}"273`;274275exports[`SFC compile <script setup> > defineProps/defineEmits in multi-variable declaration 1`] = `276"export default {277  props: ['item'],278  emits: ['a'],279  setup(__props, { emit }) {280281const props = __props;282283    const a = 1;284    285return { props, a, emit }286}287288}"289`;290291exports[`SFC compile <script setup> > defineProps/defineEmits in multi-variable declaration fix #6757  1`] = `292"export default {293  props: ['item'],294  emits: ['a'],295  setup(__props, { emit }) {296297const props = __props;298299    const a = 1;300    301return { a, props, emit }302}303304}"305`;306307exports[`SFC compile <script setup> > dev mode import usage check > TS annotations 1`] = `308"import { defineComponent as _defineComponent } from 'vue'309import { Foo, Baz, Qux, Fred } from './x'310        311export default /*#__PURE__*/_defineComponent({312  setup(__props) {313314        const a = 1315        function b() {}316        317return { a, b, Baz }318}319320})"321`;322323exports[`SFC compile <script setup> > dev mode import usage check > attribute expressions 1`] = `324"import { defineComponent as _defineComponent } from 'vue'325import { bar, baz } from './x'326        327export default /*#__PURE__*/_defineComponent({328  setup(__props) {329330        const cond = true331        332return { cond, bar, baz }333}334335})"336`;337338exports[`SFC compile <script setup> > dev mode import usage check > components 1`] = `339"import { defineComponent as _defineComponent } from 'vue'340import { FooBar, FooBaz, FooQux, foo } from './x'341        342export default /*#__PURE__*/_defineComponent({343  setup(__props) {344345        const fooBar: FooBar = 1346        347return { fooBar, FooBaz, FooQux, foo }348}349350})"351`;352353exports[`SFC compile <script setup> > dev mode import usage check > directive 1`] = `354"import { defineComponent as _defineComponent } from 'vue'355import { vMyDir } from './x'356        357export default /*#__PURE__*/_defineComponent({358  setup(__props) {359360        361return { vMyDir }362}363364})"365`;366367exports[`SFC compile <script setup> > dev mode import usage check > imported ref as template ref 1`] = `368"import { defineComponent as _defineComponent } from 'vue'369import { aref } from './x'370        371export default /*#__PURE__*/_defineComponent({372  setup(__props) {373374        375return { aref }376}377378})"379`;380381exports[`SFC compile <script setup> > dev mode import usage check > js template string interpolations 1`] = `382"import { defineComponent as _defineComponent } from 'vue'383import { VAR, VAR2, VAR3 } from './x'384        385export default /*#__PURE__*/_defineComponent({386  setup(__props) {387388        389return { VAR, VAR3 }390}391392})"393`;394395exports[`SFC compile <script setup> > dev mode import usage check > last tag 1`] = `396"import { defineComponent as _defineComponent } from 'vue'397import { FooBaz, Last } from './x'398        399export default /*#__PURE__*/_defineComponent({400  setup(__props) {401402        403return { FooBaz, Last }404}405406})"407`;408409exports[`SFC compile <script setup> > dev mode import usage check > vue interpolations 1`] = `410"import { defineComponent as _defineComponent } from 'vue'411import { x, y, z, x$y } from './x'412      413export default /*#__PURE__*/_defineComponent({414  setup(__props) {415416      417return { x, z, x$y }418}419420})"421`;422423exports[`SFC compile <script setup> > errors > should allow defineProps/Emit() referencing imported binding 1`] = `424"import { bar } from './bar'425        426export default {427  props: {428          foo: {429            default: () => bar430          }431        },432  emits: {433          foo: () => bar > 1434        },435  setup(__props) {436437        438        439        440return { bar }441}442443}"444`;445446exports[`SFC compile <script setup> > errors > should allow defineProps/Emit() referencing scope var 1`] = `447"export default {448  props: {449            foo: {450              default: bar => bar + 1451            }452          },453  emits: {454            foo: bar => bar > 1455          },456  setup(__props) {457458          const bar = 1459          460          461        462return { bar }463}464465}"466`;467468exports[`SFC compile <script setup> > imports > import dedupe between <script> and <script setup> 1`] = `469"import { x } from './x'470        471export default {472  setup(__props) {473474        x()475        476return { x }477}478479}"480`;481482exports[`SFC compile <script setup> > imports > should allow defineProps/Emit at the start of imports 1`] = `483"import { ref } from 'vue'484      485export default {486  props: ['foo'],487  emits: ['bar'],488  setup(__props) {489490      491      492      const r = ref(0)493      494return { r, ref }495}496497}"498`;499500exports[`SFC compile <script setup> > imports > should extract comment for import or type declarations 1`] = `501"import a from 'a' // comment502        import b from 'b'503        504export default {505  setup(__props) {506507        508return { a, b }509}510511}"512`;513514exports[`SFC compile <script setup> > imports > should hoist and expose imports 1`] = `515"import { ref } from 'vue'516          import 'foo/css'517        518export default {519  setup(__props) {520521          522return { ref }523}524525}"526`;527528exports[`SFC compile <script setup> > should expose top level declarations 1`] = `529"import { xx } from './x'530      let aa = 1531      const bb = 2532      function cc() {}533      class dd {}534      535import { x } from './x'536      537export default {538  setup(__props) {539540      let a = 1541      const b = 2542      function c() {}543      class d {}544      545return { aa, bb, cc, dd, a, b, c, d, xx, x }546}547548}"549`;550551exports[`SFC compile <script setup> > with TypeScript > const Enum 1`] = `552"import { defineComponent as _defineComponent } from 'vue'553const enum Foo { A = 123 }554        555export default /*#__PURE__*/_defineComponent({556  setup(__props) {557558        559return { Foo }560}561562})"563`;564565exports[`SFC compile <script setup> > with TypeScript > defineEmits w/ type (exported interface) 1`] = `566"import { defineComponent as _defineComponent } from 'vue'567export interface Emits { (e: 'foo' | 'bar'): void }568      569export default /*#__PURE__*/_defineComponent({570  emits: ["foo", "bar"],571  setup(__props, { emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) {572573      574      575return { emit }576}577578})"579`;580581exports[`SFC compile <script setup> > with TypeScript > defineEmits w/ type (exported type alias) 1`] = `582"import { defineComponent as _defineComponent } from 'vue'583export type Emits = { (e: 'foo' | 'bar'): void }584      585export default /*#__PURE__*/_defineComponent({586  emits: ["foo", "bar"],587  setup(__props, { emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) {588589      590      591return { emit }592}593594})"595`;596597exports[`SFC compile <script setup> > with TypeScript > defineEmits w/ type (interface ts type) 1`] = `598"import { defineComponent as _defineComponent } from 'vue'599interface Emits { (e: 'foo'): void }600      601export default /*#__PURE__*/_defineComponent({602  emits: ['foo'],603  setup(__props, { emit }) {604605      606      607return { emit }608}609610})"611`;612613exports[`SFC compile <script setup> > with TypeScript > defineEmits w/ type (interface) 1`] = `614"import { defineComponent as _defineComponent } from 'vue'615interface Emits { (e: 'foo' | 'bar'): void }616      617export default /*#__PURE__*/_defineComponent({618  emits: ["foo", "bar"],619  setup(__props, { emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) {620621      622      623return { emit }624}625626})"627`;628629exports[`SFC compile <script setup> > with TypeScript > defineEmits w/ type (referenced exported function type) 1`] = `630"import { defineComponent as _defineComponent } from 'vue'631export type Emits = (e: 'foo' | 'bar') => void632      633export default /*#__PURE__*/_defineComponent({634  emits: ["foo", "bar"],635  setup(__props, { emit }: { emit: ((e: 'foo' | 'bar') => void), expose: any, slots: any, attrs: any }) {636637      638      639return { emit }640}641642})"643`;644645exports[`SFC compile <script setup> > with TypeScript > defineEmits w/ type (referenced function type) 1`] = `646"import { defineComponent as _defineComponent } from 'vue'647type Emits = (e: 'foo' | 'bar') => void648      649export default /*#__PURE__*/_defineComponent({650  emits: ["foo", "bar"],651  setup(__props, { emit }: { emit: ((e: 'foo' | 'bar') => void), expose: any, slots: any, attrs: any }) {652653      654      655return { emit }656}657658})"659`;660661exports[`SFC compile <script setup> > with TypeScript > defineEmits w/ type (type alias) 1`] = `662"import { defineComponent as _defineComponent } from 'vue'663type Emits = { (e: 'foo' | 'bar'): void }664      665export default /*#__PURE__*/_defineComponent({666  emits: ["foo", "bar"],667  setup(__props, { emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) {668669      670      671return { emit }672}673674})"675`;676677exports[`SFC compile <script setup> > with TypeScript > defineEmits w/ type (type literal w/ call signatures) 1`] = `678"import { defineComponent as _defineComponent } from 'vue'679680export default /*#__PURE__*/_defineComponent({681  emits: ["foo", "bar", "baz"],682  setup(__props, { emit }: { emit: ({(e: 'foo' | 'bar'): void; (e: 'baz', id: number): void;}), expose: any, slots: any, attrs: any }) {683684      685      686return { emit }687}688689})"690`;691692exports[`SFC compile <script setup> > with TypeScript > defineEmits w/ type 1`] = `693"import { defineComponent as _defineComponent } from 'vue'694695export default /*#__PURE__*/_defineComponent({696  emits: ["foo", "bar"],697  setup(__props, { emit }: { emit: ((e: 'foo' | 'bar') => void), expose: any, slots: any, attrs: any }) {698699      700      701return { emit }702}703704})"705`;706707exports[`SFC compile <script setup> > with TypeScript > defineProps w/ exported interface 1`] = `708"import { defineComponent as _defineComponent } from 'vue'709export interface Props { x?: number }710      711export default /*#__PURE__*/_defineComponent({712  props: {713    x: { type: Number, required: false }714  },715  setup(__props: any) {716717      718      719return {  }720}721722})"723`;724725exports[`SFC compile <script setup> > with TypeScript > defineProps w/ exported interface in normal script 1`] = `726"import { defineComponent as _defineComponent } from 'vue'727728        export interface Props { x?: number }729      730export default /*#__PURE__*/_defineComponent({731  props: {732    x: { type: Number, required: false }733  },734  setup(__props: any) {735736        737      738return {  }739}740741})"742`;743744exports[`SFC compile <script setup> > with TypeScript > defineProps w/ exported type alias 1`] = `745"import { defineComponent as _defineComponent } from 'vue'746export type Props = { x?: number }747      748export default /*#__PURE__*/_defineComponent({749  props: {750    x: { type: Number, required: false }751  },752  setup(__props: any) {753754      755      756return {  }757}758759})"760`;761762exports[`SFC compile <script setup> > with TypeScript > defineProps w/ interface 1`] = `763"import { defineComponent as _defineComponent } from 'vue'764interface Props { x?: number }765      766export default /*#__PURE__*/_defineComponent({767  props: {768    x: { type: Number, required: false }769  },770  setup(__props: any) {771772      773      774return {  }775}776777})"778`;779780exports[`SFC compile <script setup> > with TypeScript > defineProps w/ type 1`] = `781"import { defineComponent as _defineComponent } from 'vue'782interface Test {}783784      type Alias = number[]785786      787export default /*#__PURE__*/_defineComponent({788  props: {789    string: { type: String, required: true },790    number: { type: Number, required: true },791    boolean: { type: Boolean, required: true },792    object: { type: Object, required: true },793    objectLiteral: { type: Object, required: true },794    fn: { type: Function, required: true },795    functionRef: { type: Function, required: true },796    objectRef: { type: Object, required: true },797    dateTime: { type: Date, required: true },798    array: { type: Array, required: true },799    arrayRef: { type: Array, required: true },800    tuple: { type: Array, required: true },801    set: { type: Set, required: true },802    literal: { type: String, required: true },803    optional: { type: null, required: false },804    recordRef: { type: Object, required: true },805    interface: { type: Object, required: true },806    alias: { type: Array, required: true },807    method: { type: Function, required: true },808    symbol: { type: Symbol, required: true },809    union: { type: [String, Number], required: true },810    literalUnion: { type: String, required: true },811    literalUnionNumber: { type: Number, required: true },812    literalUnionMixed: { type: [String, Number, Boolean], required: true },813    intersection: { type: Object, required: true },814    foo: { type: [Function, null], required: true }815  },816  setup(__props: any) {817818      819      820return {  }821}822823})"824`;825826exports[`SFC compile <script setup> > with TypeScript > defineProps w/ type alias 1`] = `827"import { defineComponent as _defineComponent } from 'vue'828type Props = { x?: number }829      830export default /*#__PURE__*/_defineComponent({831  props: {832    x: { type: Number, required: false }833  },834  setup(__props: any) {835836      837      838return {  }839}840841})"842`;843844exports[`SFC compile <script setup> > with TypeScript > defineProps/Emit w/ runtime options 1`] = `845"import { defineComponent as _defineComponent } from 'vue'846847export default /*#__PURE__*/_defineComponent({848  props: { foo: String },849  emits: ['a', 'b'],850  setup(__props, { emit }) {851852const props = __props;853854855856857return { props, emit }858}859860})"861`;862863exports[`SFC compile <script setup> > with TypeScript > hoist type declarations 1`] = `864"import { defineComponent as _defineComponent } from 'vue'865export interface Foo {}866        type Bar = {}867      868export default /*#__PURE__*/_defineComponent({869  setup(__props) {870871        872return {  }873}874875})"876`;877878exports[`SFC compile <script setup> > with TypeScript > import type 1`] = `879"import { defineComponent as _defineComponent } from 'vue'880import type { Foo } from './main.ts'881        import { type Bar, Baz } from './main.ts'882        883export default /*#__PURE__*/_defineComponent({884  setup(__props) {885886        887return { Baz }888}889890})"891`;892893exports[`SFC compile <script setup> > with TypeScript > runtime Enum 1`] = `894"import { defineComponent as _defineComponent } from 'vue'895enum Foo { A = 123 }896        897export default /*#__PURE__*/_defineComponent({898  setup(__props) {899900        901return { Foo }902}903904})"905`;906907exports[`SFC compile <script setup> > with TypeScript > runtime Enum in normal script 1`] = `908"import { defineComponent as _defineComponent } from 'vue'909enum Foo { A = 123 }910        911          export enum D { D = "D" }912          const enum C { C = "C" }913          enum B { B = "B" }914        915export default /*#__PURE__*/_defineComponent({916  setup(__props) {917918        919return { D, C, B, Foo }920}921922})"923`;924925exports[`SFC compile <script setup> > with TypeScript > withDefaults (dynamic) 1`] = `926"import { mergeDefaults as _mergeDefaults, defineComponent as _defineComponent } from 'vue'927import { defaults } from './foo'928      929export default /*#__PURE__*/_defineComponent({930  props: _mergeDefaults({931    foo: { type: String, required: false },932    bar: { type: Number, required: false },933    baz: { type: Boolean, required: true }934  }, { ...defaults }),935  setup(__props: any) {936937const props = __props as {938        foo?: string939        bar?: number940        baz: boolean941      };942943      944      945return { props, defaults }946}947948})"949`;950951exports[`SFC compile <script setup> > with TypeScript > withDefaults (static) 1`] = `952"import { defineComponent as _defineComponent } from 'vue'953954export default /*#__PURE__*/_defineComponent({955  props: {956    foo: { type: String, required: false, default: 'hi' },957    bar: { type: Number, required: false },958    baz: { type: Boolean, required: true },959    qux: { type: Function, required: false, default() { return 1 } }960  },961  setup(__props: any) {962963const props = __props as { foo: string, bar?: number, baz: boolean, qux(): number };964965      966      967return { props }968}969970})"971`;

Findings

✓ No findings reported for this file.

Get this view in your editor

Same data, no extra tab — call code_get_file + code_get_findings over MCP from Claude/Cursor/Copilot.