packages/compiler-sfc/test/rewriteDefault.spec.ts TYPESCRIPT 312 lines View on github.com → Search inside
1import { rewriteDefault } from '../src'23describe('compiler sfc: rewriteDefault', () => {4  test('without export default', () => {5    expect(rewriteDefault(`export  a = {}`, 'script')).toMatchInlineSnapshot(`6      "export  a = {}7      const script = {}"8    `)9  })1011  test('rewrite export default', () => {12    expect(13      rewriteDefault(`export  default {}`, 'script')14    ).toMatchInlineSnapshot(`"const script = {}"`)15  })1617  test('rewrite export named default', () => {18    expect(19      rewriteDefault(20        `const a = 1 \n export { a as b, a as default, a as c}`,21        'script'22      )23    ).toMatchInlineSnapshot(`24      "const a = 1 25       export { a as b,  a as c}26      const script = a"27    `)2829    expect(30      rewriteDefault(31        `const a = 1 \n export { a as b, a as default    , a as c}`,32        'script'33      )34    ).toMatchInlineSnapshot(`35      "const a = 1 36       export { a as b,  a as c}37      const script = a"38    `)39  })4041  test('w/ comments', async () => {42    expect(rewriteDefault(`// export default\nexport default {}`, 'script'))43      .toMatchInlineSnapshot(`44      "// export default45      const script = {}"46    `)47  })4849  test('export named default multiline', () => {50    expect(51      rewriteDefault(`let App = {}\n export {\nApp as default\n}`, '_sfc_main')52    ).toMatchInlineSnapshot(`53      "let App = {}54       export {55      56      }57      const _sfc_main = App"58    `)59  })6061  test('export named default multiline /w comments', () => {62    expect(63      rewriteDefault(64        `const a = 1 \n export {\n a as b,\n a as default,\n a as c}\n` +65          `// export { myFunction as default }`,66        'script'67      )68    ).toMatchInlineSnapshot(`69      "const a = 1 70       export {71       a as b,72       73       a as c}74      // export { myFunction as default }75      const script = a"76    `)7778    expect(79      rewriteDefault(80        `const a = 1 \n export {\n a as b,\n a as default      ,\n a as c}\n` +81          `// export { myFunction as default }`,82        'script'83      )84    ).toMatchInlineSnapshot(`85      "const a = 1 86       export {87       a as b,88       89       a as c}90      // export { myFunction as default }91      const script = a"92    `)93  })9495  test(`export { default } from '...'`, async () => {96    expect(97      rewriteDefault(`export { default, foo } from './index.js'`, 'script')98    ).toMatchInlineSnapshot(`99    "import { default as __VUE_DEFAULT__ } from './index.js'100    export {  foo } from './index.js'101    const script = __VUE_DEFAULT__"102    `)103104    expect(105      rewriteDefault(`export { default    , foo } from './index.js'`, 'script')106    ).toMatchInlineSnapshot(`107    "import { default as __VUE_DEFAULT__ } from './index.js'108    export {  foo } from './index.js'109    const script = __VUE_DEFAULT__"110    `)111112    expect(113      rewriteDefault(`export { foo,   default } from './index.js'`, 'script')114    ).toMatchInlineSnapshot(`115    "import { default as __VUE_DEFAULT__ } from './index.js'116    export { foo,    } from './index.js'117    const script = __VUE_DEFAULT__"118    `)119120    expect(121      rewriteDefault(122        `export { foo as default, bar } from './index.js'`,123        'script'124      )125    ).toMatchInlineSnapshot(`126    "import { foo } from './index.js'127    export {  bar } from './index.js'128    const script = foo"129    `)130131    expect(132      rewriteDefault(133        `export { foo as default     , bar } from './index.js'`,134        'script'135      )136    ).toMatchInlineSnapshot(`137    "import { foo } from './index.js'138    export {  bar } from './index.js'139    const script = foo"140    `)141142    expect(143      rewriteDefault(144        `export { bar,   foo as default } from './index.js'`,145        'script'146      )147    ).toMatchInlineSnapshot(`148    "import { foo } from './index.js'149    export { bar,    } from './index.js'150    const script = foo"151    `)152  })153154  test('export default class', async () => {155    expect(rewriteDefault(`export default class Foo {}`, 'script'))156      .toMatchInlineSnapshot(`157      "class Foo {}158      const script = Foo"159    `)160  })161162  test('export default class w/ comments', async () => {163    expect(164      rewriteDefault(`// export default\nexport default class Foo {}`, 'script')165    ).toMatchInlineSnapshot(`166      "// export default167      class Foo {}168      const script = Foo"169    `)170  })171172  test('export default class w/ comments 2', async () => {173    expect(174      rewriteDefault(175        `export default {}\n` + `// export default class Foo {}`,176        'script'177      )178    ).toMatchInlineSnapshot(`179      "const script = {}180      // export default class Foo {}"181    `)182  })183184  test('export default class w/ comments 3', async () => {185    expect(186      rewriteDefault(187        `/*\nexport default class Foo {}*/\n` + `export default class Bar {}`,188        'script'189      )190    ).toMatchInlineSnapshot(`191      "/*192      export default class Foo {}*/193       class Bar {}194      const script = Bar"195    `)196  })197198  test('@Component\nexport default class', async () => {199    expect(rewriteDefault(`@Component\nexport default class Foo {}`, 'script'))200      .toMatchInlineSnapshot(`201      "@Component202      class Foo {}203      const script = Foo"204    `)205  })206207  test('@Component\nexport default class w/ comments', async () => {208    expect(209      rewriteDefault(210        `// export default\n@Component\nexport default class Foo {}`,211        'script'212      )213    ).toMatchInlineSnapshot(`214      "// export default215      @Component216      class Foo {}217      const script = Foo"218    `)219  })220221  test('@Component\nexport default class w/ comments 2', async () => {222    expect(223      rewriteDefault(224        `export default {}\n` + `// @Component\n// export default class Foo {}`,225        'script'226      )227    ).toMatchInlineSnapshot(`228      "const script = {}229      // @Component230      // export default class Foo {}"231    `)232  })233234  test('@Component\nexport default class w/ comments 3', async () => {235    expect(236      rewriteDefault(237        `/*\n@Component\nexport default class Foo {}*/\n` +238          `export default class Bar {}`,239        'script'240      )241    ).toMatchInlineSnapshot(`242      "/*243      @Component244      export default class Foo {}*/245       class Bar {}246      const script = Bar"247    `)248  })249250  // #13060251  test('@Component\nexport default class w/ comments 4', async () => {252    expect(253      rewriteDefault(254        `@Component255        export default class App extends Vue {256          /* default <- This word means my component is not built correctly */257          @Prop({ type: String, required: true })258          protected someString: string;259        }`,260        'script'261      )262    ).toMatchInlineSnapshot(`263      "@Component264              class App extends Vue {265                /* default <- This word means my component is not built correctly */266                @Prop({ type: String, required: true })267                protected someString: string;268              }269      const script = App"270    `)271  })272273  // #12892274  test('@Component\nexport default class w/ comments 5', async () => {275    expect(276      rewriteDefault(277        `@Component({})278        export default class HelloWorld extends Vue {279          test = "";280          mounted() {281            console.log("mounted!");282            this.test = "Hallo Welt!";283          }284          exportieren(): void {285            // do nothing286          }287          defaultWert(): void {288            // do nothing289          }290        }`,291        'script',292        ['typescript', 'decorators-legacy']293      )294    ).toMatchInlineSnapshot(`295      "@Component({}) class HelloWorld extends Vue {296                test = "";297                mounted() {298                  console.log("mounted!");299                  this.test = "Hallo Welt!";300                }301                exportieren(): void {302                  // do nothing303                }304                defaultWert(): void {305                  // do nothing306                }307              }308      const script = HelloWorld"309    `)310  })311})

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.