| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311 | import { rewriteDefault } from '../src'describe('compiler sfc: rewriteDefault', () => {  test('without export default', () => {    expect(rewriteDefault(`export  a = {}`, 'script')).toMatchInlineSnapshot(`      "export  a = {}      const script = {}"    `)  })  test('rewrite export default', () => {    expect(      rewriteDefault(`export  default {}`, 'script')    ).toMatchInlineSnapshot(`"const script = {}"`)  })  test('rewrite export named default', () => {    expect(      rewriteDefault(        `const a = 1 \n export { a as b, a as default, a as c}`,        'script'      )    ).toMatchInlineSnapshot(`      "const a = 1        export { a as b,  a as c}      const script = a"    `)    expect(      rewriteDefault(        `const a = 1 \n export { a as b, a as default    , a as c}`,        'script'      )    ).toMatchInlineSnapshot(`      "const a = 1        export { a as b,  a as c}      const script = a"    `)  })  test('w/ comments', async () => {    expect(rewriteDefault(`// export default\nexport default {}`, 'script'))      .toMatchInlineSnapshot(`      "// export default      const script = {}"    `)  })  test('export named default multiline', () => {    expect(      rewriteDefault(`let App = {}\n export {\nApp as default\n}`, '_sfc_main')    ).toMatchInlineSnapshot(`      "let App = {}       export {            }      const _sfc_main = App"    `)  })  test('export named default multiline /w comments', () => {    expect(      rewriteDefault(        `const a = 1 \n export {\n a as b,\n a as default,\n a as c}\n` +          `// export { myFunction as default }`,        'script'      )    ).toMatchInlineSnapshot(`      "const a = 1        export {       a as b,              a as c}      // export { myFunction as default }      const script = a"    `)    expect(      rewriteDefault(        `const a = 1 \n export {\n a as b,\n a as default      ,\n a as c}\n` +          `// export { myFunction as default }`,        'script'      )    ).toMatchInlineSnapshot(`      "const a = 1        export {       a as b,              a as c}      // export { myFunction as default }      const script = a"    `)  })  test(`export { default } from '...'`, async () => {    expect(      rewriteDefault(`export { default, foo } from './index.js'`, 'script')    ).toMatchInlineSnapshot(`    "import { default as __VUE_DEFAULT__ } from './index.js'    export {  foo } from './index.js'    const script = __VUE_DEFAULT__"    `)    expect(      rewriteDefault(`export { default    , foo } from './index.js'`, 'script')    ).toMatchInlineSnapshot(`    "import { default as __VUE_DEFAULT__ } from './index.js'    export {  foo } from './index.js'    const script = __VUE_DEFAULT__"    `)    expect(      rewriteDefault(`export { foo,   default } from './index.js'`, 'script')    ).toMatchInlineSnapshot(`    "import { default as __VUE_DEFAULT__ } from './index.js'    export { foo,    } from './index.js'    const script = __VUE_DEFAULT__"    `)    expect(      rewriteDefault(        `export { foo as default, bar } from './index.js'`,        'script'      )    ).toMatchInlineSnapshot(`    "import { foo } from './index.js'    export {  bar } from './index.js'    const script = foo"    `)    expect(      rewriteDefault(        `export { foo as default     , bar } from './index.js'`,        'script'      )    ).toMatchInlineSnapshot(`    "import { foo } from './index.js'    export {  bar } from './index.js'    const script = foo"    `)    expect(      rewriteDefault(        `export { bar,   foo as default } from './index.js'`,        'script'      )    ).toMatchInlineSnapshot(`    "import { foo } from './index.js'    export { bar,    } from './index.js'    const script = foo"    `)  })  test('export default class', async () => {    expect(rewriteDefault(`export default class Foo {}`, 'script'))      .toMatchInlineSnapshot(`      "class Foo {}      const script = Foo"    `)  })  test('export default class w/ comments', async () => {    expect(      rewriteDefault(`// export default\nexport default class Foo {}`, 'script')    ).toMatchInlineSnapshot(`      "// export default      class Foo {}      const script = Foo"    `)  })  test('export default class w/ comments 2', async () => {    expect(      rewriteDefault(        `export default {}\n` + `// export default class Foo {}`,        'script'      )    ).toMatchInlineSnapshot(`      "const script = {}      // export default class Foo {}"    `)  })  test('export default class w/ comments 3', async () => {    expect(      rewriteDefault(        `/*\nexport default class Foo {}*/\n` + `export default class Bar {}`,        'script'      )    ).toMatchInlineSnapshot(`      "/*      export default class Foo {}*/       class Bar {}      const script = Bar"    `)  })  test('@Component\nexport default class', async () => {    expect(rewriteDefault(`@Component\nexport default class Foo {}`, 'script'))      .toMatchInlineSnapshot(`      "@Component      class Foo {}      const script = Foo"    `)  })  test('@Component\nexport default class w/ comments', async () => {    expect(      rewriteDefault(        `// export default\n@Component\nexport default class Foo {}`,        'script'      )    ).toMatchInlineSnapshot(`      "// export default      @Component      class Foo {}      const script = Foo"    `)  })  test('@Component\nexport default class w/ comments 2', async () => {    expect(      rewriteDefault(        `export default {}\n` + `// @Component\n// export default class Foo {}`,        'script'      )    ).toMatchInlineSnapshot(`      "const script = {}      // @Component      // export default class Foo {}"    `)  })  test('@Component\nexport default class w/ comments 3', async () => {    expect(      rewriteDefault(        `/*\n@Component\nexport default class Foo {}*/\n` +          `export default class Bar {}`,        'script'      )    ).toMatchInlineSnapshot(`      "/*      @Component      export default class Foo {}*/       class Bar {}      const script = Bar"    `)  })  // #13060  test('@Component\nexport default class w/ comments 4', async () => {    expect(      rewriteDefault(        `@Component        export default class App extends Vue {          /* default <- This word means my component is not built correctly */          @Prop({ type: String, required: true })          protected someString: string;        }`,        'script'      )    ).toMatchInlineSnapshot(`      "@Component              class App extends Vue {                /* default <- This word means my component is not built correctly */                @Prop({ type: String, required: true })                protected someString: string;              }      const script = App"    `)  })  // #12892  test('@Component\nexport default class w/ comments 5', async () => {    expect(      rewriteDefault(        `@Component({})        export default class HelloWorld extends Vue {          test = "";          mounted() {            console.log("mounted!");            this.test = "Hallo Welt!";          }          exportieren(): void {            // do nothing          }          defaultWert(): void {            // do nothing          }        }`,        'script',        ['typescript', 'decorators-legacy']      )    ).toMatchInlineSnapshot(`      "@Component({}) class HelloWorld extends Vue {                test = "";                mounted() {                  console.log("mounted!");                  this.test = "Hallo Welt!";                }                exportieren(): void {                  // do nothing                }                defaultWert(): void {                  // do nothing                }              }      const script = HelloWorld"    `)  })})
 |