From 2de20f7cf3f9930d879f707249a7373c338f95f6 Mon Sep 17 00:00:00 2001 From: magic-akari Date: Wed, 29 Jun 2022 19:36:49 +0800 Subject: [PATCH 1/4] feat(es/module): support node interop --- Cargo.lock | 1 + crates/swc/src/builder.rs | 16 +- .../src/helpers/_interop_require_wildcard.js | 25 +- crates/swc_ecma_transforms_module/Cargo.toml | 1 + crates/swc_ecma_transforms_module/src/amd.rs | 52 +-- .../src/common_js.rs | 103 ++++-- .../src/import_analysis.rs | 20 +- .../src/module_decl_strip.rs | 7 +- crates/swc_ecma_transforms_module/src/umd.rs | 37 ++- crates/swc_ecma_transforms_module/src/util.rs | 32 ++ .../export-all/input.js | 0 .../interop-node/export-all/module.json | 3 + .../interop-node/export-all/output.amd.js | 16 + .../common/interop-node/export-all/output.cjs | 11 + .../interop-node/export-all/output.umd.js | 19 ++ .../export-default-10/input.js | 0 .../export-default-10/module.json | 3 + .../export-default-10/output.amd.js | 0 .../interop-node/export-default-10/output.cjs | 12 + .../export-default-10/output.umd.js | 0 .../export-default-11/input.js | 0 .../export-default-11/module.json | 3 + .../export-default-11/output.amd.js | 0 .../interop-node/export-default-11/output.cjs | 17 + .../export-default-11/output.umd.js | 0 .../export-default-2/input.js | 0 .../interop-node/export-default-2/module.json | 3 + .../export-default-2/output.amd.js | 0 .../interop-node/export-default-2/output.cjs | 10 + .../export-default-2/output.umd.js | 0 .../export-default-3/input.js | 0 .../interop-node/export-default-3/module.json | 3 + .../export-default-3/output.amd.js | 0 .../interop-node/export-default-3/output.cjs | 10 + .../export-default-3/output.umd.js | 0 .../export-default-4/input.js | 0 .../interop-node/export-default-4/module.json | 3 + .../export-default-4/output.amd.js | 0 .../interop-node/export-default-4/output.cjs | 10 + .../export-default-4/output.umd.js | 0 .../export-default-5/input.js | 0 .../interop-node/export-default-5/module.json | 3 + .../export-default-5/output.amd.js | 0 .../interop-node/export-default-5/output.cjs | 10 + .../export-default-5/output.umd.js | 0 .../export-default-6/input.js | 0 .../interop-node/export-default-6/module.json | 3 + .../export-default-6/output.amd.js | 0 .../interop-node/export-default-6/output.cjs | 11 + .../export-default-6/output.umd.js | 0 .../export-default-7/input.js | 0 .../interop-node/export-default-7/module.json | 3 + .../export-default-7/output.amd.js | 0 .../interop-node/export-default-7/output.cjs | 10 + .../export-default-7/output.umd.js | 0 .../export-default-8/input.js | 0 .../interop-node/export-default-8/module.json | 3 + .../export-default-8/output.amd.js | 0 .../interop-node/export-default-8/output.cjs | 11 + .../export-default-8/output.umd.js | 0 .../export-default-9/input.js | 0 .../interop-node/export-default-9/module.json | 3 + .../export-default-9/output.amd.js | 0 .../interop-node/export-default-9/output.cjs | 10 + .../export-default-9/output.umd.js | 0 .../export-default/input.js | 0 .../interop-node/export-default/module.json | 3 + .../export-default/output.amd.js | 0 .../interop-node/export-default/output.cjs | 10 + .../export-default/output.umd.js | 0 .../export-destructured/input.js | 0 .../export-destructured/module.json | 3 + .../export-destructured/output.amd.js | 0 .../export-destructured/output.cjs | 46 +++ .../export-destructured/output.umd.js | 0 .../export-from-1/input.js | 0 .../interop-node/export-from-1/module.json | 3 + .../export-from-1/output.amd.js | 0 .../export-from-1/output.cjs | 0 .../export-from-1/output.umd.js | 0 .../export-from-2/input.js | 0 .../interop-node/export-from-2/module.json | 3 + .../export-from-2/output.amd.js | 0 .../interop-node/export-from-2/output.cjs | 10 + .../export-from-2/output.umd.js | 0 .../export-from-3/input.js | 0 .../interop-node/export-from-3/module.json | 3 + .../export-from-3/output.amd.js | 0 .../interop-node/export-from-3/output.cjs | 16 + .../export-from-3/output.umd.js | 0 .../export-from-4/input.js | 0 .../interop-node/export-from-4/module.json | 3 + .../export-from-4/output.amd.js | 0 .../interop-node/export-from-4/output.cjs | 10 + .../export-from-4/output.umd.js | 0 .../export-from-5/input.js | 0 .../interop-node/export-from-5/module.json | 3 + .../export-from-5/output.amd.js | 0 .../interop-node/export-from-5/output.cjs | 10 + .../export-from-5/output.umd.js | 0 .../export-from-6/input.js | 0 .../interop-node/export-from-6/module.json | 3 + .../export-from-6/output.amd.js | 0 .../interop-node/export-from-6/output.cjs | 16 + .../export-from-6/output.umd.js | 0 .../export-from-7/input.js | 0 .../interop-node/export-from-7/module.json | 3 + .../interop-node/export-from-7/output.amd.js | 15 + .../interop-node/export-from-7/output.cjs | 10 + .../interop-node/export-from-7/output.umd.js | 18 + .../export-from-8/input.js | 0 .../interop-node/export-from-8/module.json | 3 + .../export-from-8/output.amd.js | 0 .../interop-node/export-from-8/output.cjs | 116 +++++++ .../export-from-8/output.umd.js | 0 .../export-named-1/input.js | 0 .../interop-node/export-named-1/module.json | 3 + .../export-named-1/output.amd.js | 0 .../interop-node/export-named-1/output.cjs | 10 + .../export-named-1/output.umd.js | 0 .../export-named-2/input.js | 0 .../interop-node/export-named-2/module.json | 3 + .../export-named-2/output.amd.js | 0 .../interop-node/export-named-2/output.cjs | 16 + .../export-named-2/output.umd.js | 0 .../export-named-3/input.js | 0 .../interop-node/export-named-3/module.json | 3 + .../export-named-3/output.amd.js | 0 .../interop-node/export-named-3/output.cjs | 10 + .../export-named-3/output.umd.js | 0 .../export-named-4/input.js | 0 .../interop-node/export-named-4/module.json | 3 + .../export-named-4/output.amd.js | 0 .../interop-node/export-named-4/output.cjs | 10 + .../export-named-4/output.umd.js | 0 .../export-named-5/input.js | 0 .../interop-node/export-named-5/module.json | 3 + .../export-named-5/output.amd.js | 0 .../interop-node/export-named-5/output.cjs | 16 + .../export-named-5/output.umd.js | 0 .../exports-variable/input.js | 0 .../interop-node/exports-variable/module.json | 3 + .../exports-variable/output.amd.js | 0 .../interop-node/exports-variable/output.cjs | 33 ++ .../exports-variable/output.umd.js | 0 .../hoist-function-exports/input.js | 0 .../hoist-function-exports/module.json | 3 + .../hoist-function-exports/output.amd.js | 0 .../hoist-function-exports/output.cjs | 24 ++ .../hoist-function-exports/output.umd.js | 0 .../imports-default/input.js | 0 .../interop-node/imports-default/module.json | 3 + .../imports-default/output.amd.js | 13 + .../interop-node/imports-default/output.cjs | 7 + .../imports-default/output.umd.js | 16 + .../imports-glob/input.js | 0 .../interop-node/imports-glob/module.json | 3 + .../interop-node/imports-glob/output.amd.js | 11 + .../interop-node/imports-glob/output.cjs | 5 + .../interop-node/imports-glob/output.umd.js | 14 + .../imports-mixing/input.js | 0 .../interop-node/imports-mixing/module.json | 3 + .../interop-node/imports-mixing/output.amd.js | 13 + .../interop-node/imports-mixing/output.cjs | 7 + .../interop-node/imports-mixing/output.umd.js | 16 + .../imports-named/input.js | 0 .../interop-node/imports-named/module.json | 3 + .../imports-named/output.amd.js | 0 .../imports-named/output.cjs | 0 .../imports-named/output.umd.js | 0 .../imports-ordering/input.js | 0 .../interop-node/imports-ordering/module.json | 3 + .../imports-ordering/output.amd.js | 14 + .../interop-node/imports-ordering/output.cjs | 8 + .../imports-ordering/output.umd.js | 17 + .../imports/input.js | 0 .../common/interop-node/imports/module.json | 3 + .../imports/output.amd.js | 0 .../imports/output.cjs | 0 .../imports/output.umd.js | 0 .../overview/input.js | 0 .../common/interop-node/overview/module.json | 3 + .../interop-node/overview/output.amd.js | 33 ++ .../common/interop-node/overview/output.cjs | 27 ++ .../interop-node/overview/output.umd.js | 36 ++ .../{interop => interop-node}/remap/input.js | 0 .../common/interop-node/remap/module.json | 3 + .../remap/output.amd.js | 0 .../common/interop-node/remap/output.cjs | 32 ++ .../remap/output.umd.js | 0 .../export-from/input.js | 0 .../export-from/module.json | 0 .../export-from/output.amd.js | 0 .../export-from/output.cjs | 0 .../export-from/output.umd.js | 0 .../import-default-only/input.js | 0 .../import-default-only/module.json | 0 .../import-default-only/output.amd.js | 0 .../import-default-only/output.cjs | 0 .../import-default-only/output.umd.js | 0 .../import-wildcard/input.js | 0 .../import-wildcard/module.json | 0 .../import-wildcard/output.amd.js | 0 .../import-wildcard/output.cjs | 0 .../import-wildcard/output.umd.js | 0 .../common/interop-swc/export-all/input.js | 6 + .../export-all/output.amd.js | 0 .../export-all/output.cjs | 0 .../export-all/output.umd.js | 0 .../interop-swc/export-default-10/input.js | 3 + .../export-default-10/output.amd.js | 16 + .../export-default-10/output.cjs | 0 .../export-default-10/output.umd.js | 19 ++ .../interop-swc/export-default-11/input.js | 3 + .../export-default-11/output.amd.js | 21 ++ .../export-default-11/output.cjs | 0 .../export-default-11/output.umd.js | 24 ++ .../interop-swc/export-default-2/input.js | 1 + .../export-default-2/output.amd.js | 14 + .../export-default-2/output.cjs | 0 .../export-default-2/output.umd.js | 17 + .../interop-swc/export-default-3/input.js | 1 + .../export-default-3/output.amd.js | 14 + .../export-default-3/output.cjs | 0 .../export-default-3/output.umd.js | 17 + .../interop-swc/export-default-4/input.js | 1 + .../export-default-4/output.amd.js | 14 + .../export-default-4/output.cjs | 0 .../export-default-4/output.umd.js | 17 + .../interop-swc/export-default-5/input.js | 1 + .../export-default-5/output.amd.js | 14 + .../export-default-5/output.cjs | 0 .../export-default-5/output.umd.js | 17 + .../interop-swc/export-default-6/input.js | 1 + .../export-default-6/output.amd.js | 15 + .../export-default-6/output.cjs | 0 .../export-default-6/output.umd.js | 18 + .../interop-swc/export-default-7/input.js | 1 + .../export-default-7/output.amd.js | 14 + .../export-default-7/output.cjs | 0 .../export-default-7/output.umd.js | 17 + .../interop-swc/export-default-8/input.js | 1 + .../export-default-8/output.amd.js | 15 + .../export-default-8/output.cjs | 0 .../export-default-8/output.umd.js | 18 + .../interop-swc/export-default-9/input.js | 2 + .../export-default-9/output.amd.js | 14 + .../export-default-9/output.cjs | 0 .../export-default-9/output.umd.js | 17 + .../interop-swc/export-default/input.js | 1 + .../interop-swc/export-default/output.amd.js | 14 + .../export-default/output.cjs | 0 .../interop-swc/export-default/output.umd.js | 17 + .../interop-swc/export-destructured/input.js | 18 + .../export-destructured/output.amd.js | 50 +++ .../export-destructured/output.cjs | 0 .../export-destructured/output.umd.js | 53 +++ .../common/interop-swc/export-from-1/input.js | 1 + .../interop-swc/export-from-1/output.amd.js | 11 + .../interop-swc/export-from-1/output.cjs | 5 + .../interop-swc/export-from-1/output.umd.js | 14 + .../common/interop-swc/export-from-2/input.js | 1 + .../interop-swc/export-from-2/output.amd.js | 14 + .../export-from-2/output.cjs | 0 .../interop-swc/export-from-2/output.umd.js | 17 + .../common/interop-swc/export-from-3/input.js | 1 + .../interop-swc/export-from-3/output.amd.js | 20 ++ .../export-from-3/output.cjs | 0 .../interop-swc/export-from-3/output.umd.js | 23 ++ .../common/interop-swc/export-from-4/input.js | 1 + .../interop-swc/export-from-4/output.amd.js | 14 + .../export-from-4/output.cjs | 0 .../interop-swc/export-from-4/output.umd.js | 17 + .../common/interop-swc/export-from-5/input.js | 1 + .../interop-swc/export-from-5/output.amd.js | 14 + .../export-from-5/output.cjs | 0 .../interop-swc/export-from-5/output.umd.js | 17 + .../common/interop-swc/export-from-6/input.js | 1 + .../interop-swc/export-from-6/output.amd.js | 20 ++ .../export-from-6/output.cjs | 0 .../interop-swc/export-from-6/output.umd.js | 23 ++ .../common/interop-swc/export-from-7/input.js | 1 + .../export-from-7/output.amd.js | 0 .../export-from-7/output.cjs | 0 .../export-from-7/output.umd.js | 0 .../common/interop-swc/export-from-8/input.js | 206 ++++++++++++ .../interop-swc/export-from-8/output.amd.js | 119 +++++++ .../export-from-8/output.cjs | 0 .../interop-swc/export-from-8/output.umd.js | 122 +++++++ .../interop-swc/export-named-1/input.js | 2 + .../interop-swc/export-named-1/output.amd.js | 14 + .../export-named-1/output.cjs | 0 .../interop-swc/export-named-1/output.umd.js | 17 + .../interop-swc/export-named-2/input.js | 2 + .../interop-swc/export-named-2/output.amd.js | 20 ++ .../export-named-2/output.cjs | 0 .../interop-swc/export-named-2/output.umd.js | 23 ++ .../interop-swc/export-named-3/input.js | 2 + .../interop-swc/export-named-3/output.amd.js | 14 + .../export-named-3/output.cjs | 0 .../interop-swc/export-named-3/output.umd.js | 17 + .../interop-swc/export-named-4/input.js | 2 + .../interop-swc/export-named-4/output.amd.js | 14 + .../export-named-4/output.cjs | 0 .../interop-swc/export-named-4/output.umd.js | 17 + .../interop-swc/export-named-5/input.js | 2 + .../interop-swc/export-named-5/output.amd.js | 20 ++ .../export-named-5/output.cjs | 0 .../interop-swc/export-named-5/output.umd.js | 23 ++ .../interop-swc/exports-variable/input.js | 9 + .../exports-variable/output.amd.js | 37 +++ .../exports-variable/output.cjs | 0 .../exports-variable/output.umd.js | 40 +++ .../hoist-function-exports/input.js | 11 + .../hoist-function-exports/output.amd.js | 28 ++ .../hoist-function-exports/output.cjs | 0 .../hoist-function-exports/output.umd.js | 31 ++ .../interop-swc/imports-default/input.js | 5 + .../imports-default/output.amd.js | 0 .../imports-default/output.cjs | 0 .../imports-default/output.umd.js | 0 .../common/interop-swc/imports-glob/input.js | 1 + .../imports-glob/output.amd.js | 0 .../imports-glob/output.cjs | 0 .../imports-glob/output.umd.js | 0 .../interop-swc/imports-mixing/input.js | 4 + .../imports-mixing/output.amd.js | 0 .../imports-mixing/output.cjs | 0 .../imports-mixing/output.umd.js | 0 .../common/interop-swc/imports-named/input.js | 11 + .../interop-swc/imports-named/output.amd.js | 16 + .../interop-swc/imports-named/output.cjs | 11 + .../interop-swc/imports-named/output.umd.js | 19 ++ .../interop-swc/imports-ordering/input.js | 4 + .../imports-ordering/output.amd.js | 0 .../imports-ordering/output.cjs | 0 .../imports-ordering/output.umd.js | 0 .../common/interop-swc/imports/input.js | 3 + .../common/interop-swc/imports/output.amd.js | 12 + .../common/interop-swc/imports/output.cjs | 7 + .../common/interop-swc/imports/output.umd.js | 15 + .../common/interop-swc/overview/input.js | 15 + .../overview/output.amd.js | 0 .../overview/output.cjs | 0 .../overview/output.umd.js | 0 .../fixture/common/interop-swc/remap/input.js | 21 ++ .../common/interop-swc/remap/output.amd.js | 36 ++ .../{interop => interop-swc}/remap/output.cjs | 0 .../common/interop-swc/remap/output.umd.js | 39 +++ .../tests/simplify.rs | 2 +- node-swc/__tests__/transform/interop.mjs | 313 ++++++++++++++++++ node-swc/src/types.ts | 89 +++++ .../src/_interop_require_wildcard.mjs | 25 +- 353 files changed, 3283 insertions(+), 103 deletions(-) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-all/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/module.json create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/output.amd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/output.cjs create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/output.umd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-10/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-10/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-10/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-10/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-10/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-11/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-11/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-11/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-11/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-11/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-2/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-2/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-2/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-2/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-2/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-3/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-3/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-3/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-3/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-3/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-4/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-4/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-4/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-4/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-4/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-5/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-5/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-5/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-5/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-5/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-6/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-6/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-6/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-6/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-6/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-7/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-7/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-7/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-7/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-7/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-8/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-8/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-8/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-8/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-8/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-9/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-9/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-9/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-9/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default-9/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-default/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-destructured/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-destructured/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-destructured/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-destructured/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-destructured/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-1/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-1/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-1/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-1/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-1/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-2/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-2/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-2/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-2/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-2/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-3/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-3/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-3/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-3/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-3/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-4/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-4/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-4/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-4/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-4/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-5/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-5/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-5/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-5/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-5/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-6/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-6/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-6/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-6/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-6/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-7/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/module.json create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/output.amd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/output.cjs create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/output.umd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-8/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-8/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-8/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-8/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-from-8/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-named-1/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-1/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-named-1/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-1/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-named-1/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-named-2/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-2/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-named-2/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-2/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-named-2/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-named-3/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-3/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-named-3/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-3/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-named-3/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-named-4/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-4/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-named-4/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-4/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-named-4/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-named-5/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-5/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-named-5/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-5/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/export-named-5/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/exports-variable/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/exports-variable/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/exports-variable/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/exports-variable/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/exports-variable/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/hoist-function-exports/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/hoist-function-exports/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/hoist-function-exports/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/hoist-function-exports/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/hoist-function-exports/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/imports-default/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/module.json create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/output.amd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/output.cjs create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/output.umd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/imports-glob/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/module.json create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/output.amd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/output.cjs create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/output.umd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/imports-mixing/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/module.json create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/output.amd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/output.cjs create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/output.umd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/imports-named/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-named/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/imports-named/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/imports-named/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/imports-named/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/imports-ordering/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/module.json create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/output.amd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/output.cjs create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/output.umd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/imports/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/imports/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/imports/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/imports/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/overview/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/module.json create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/output.amd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/output.cjs create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/output.umd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/remap/input.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/remap/module.json rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/remap/output.amd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/remap/output.cjs rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-node}/remap/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{no-interop => interop-none}/export-from/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{no-interop => interop-none}/export-from/module.json (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{no-interop => interop-none}/export-from/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{no-interop => interop-none}/export-from/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{no-interop => interop-none}/export-from/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{no-interop => interop-none}/import-default-only/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{no-interop => interop-none}/import-default-only/module.json (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{no-interop => interop-none}/import-default-only/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{no-interop => interop-none}/import-default-only/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{no-interop => interop-none}/import-default-only/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{no-interop => interop-none}/import-wildcard/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{no-interop => interop-none}/import-wildcard/module.json (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{no-interop => interop-none}/import-wildcard/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{no-interop => interop-none}/import-wildcard/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{no-interop => interop-none}/import-wildcard/output.umd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/input.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-all/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-all/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-all/output.umd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-default-10/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-default-11/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-default-2/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-default-3/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-default-4/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-default-5/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-default-6/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-default-7/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-default-8/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-default-9/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-default/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-destructured/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.amd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.cjs create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-from-2/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-from-3/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-from-4/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-from-5/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-from-6/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/input.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-from-7/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-from-7/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-from-7/output.umd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-from-8/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-named-1/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-named-2/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-named-3/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-named-4/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/export-named-5/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/exports-variable/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/hoist-function-exports/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/input.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/imports-default/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/imports-default/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/imports-default/output.umd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/input.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/imports-glob/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/imports-glob/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/imports-glob/output.umd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/input.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/imports-mixing/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/imports-mixing/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/imports-mixing/output.umd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.amd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.cjs create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/input.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/imports-ordering/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/imports-ordering/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/imports-ordering/output.umd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.amd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.cjs create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.umd.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/input.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/overview/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/overview/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/overview/output.umd.js (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/input.js create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/output.amd.js rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop => interop-swc}/remap/output.cjs (100%) create mode 100644 crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/output.umd.js create mode 100644 node-swc/__tests__/transform/interop.mjs diff --git a/Cargo.lock b/Cargo.lock index 09d26f5924fa..fabe682cc109 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3648,6 +3648,7 @@ dependencies = [ "anyhow", "bitflags", "indexmap", + "is-macro", "path-clean", "pathdiff", "serde", diff --git a/crates/swc/src/builder.rs b/crates/swc/src/builder.rs index cff77679efac..e3631e91c058 100644 --- a/crates/swc/src/builder.rs +++ b/crates/swc/src/builder.rs @@ -182,14 +182,18 @@ impl<'a, 'b, P: swc_ecma_visit::Fold> PassBuilder<'a, 'b, P> { where P: 'cmt, { - let (need_analyzer, no_interop, ignore_dynamic) = match module { - Some(ModuleConfig::CommonJs(ref c)) => (true, c.no_interop, c.ignore_dynamic), - Some(ModuleConfig::Amd(ref c)) => (true, c.config.no_interop, c.config.ignore_dynamic), - Some(ModuleConfig::Umd(ref c)) => (true, c.config.no_interop, c.config.ignore_dynamic), + let (need_analyzer, import_interop, ignore_dynamic) = match module { + Some(ModuleConfig::CommonJs(ref c)) => (true, c.import_interop(), c.ignore_dynamic), + Some(ModuleConfig::Amd(ref c)) => { + (true, c.config.import_interop(), c.config.ignore_dynamic) + } + Some(ModuleConfig::Umd(ref c)) => { + (true, c.config.import_interop(), c.config.ignore_dynamic) + } Some(ModuleConfig::SystemJs(_)) | Some(ModuleConfig::Es6) | Some(ModuleConfig::NodeNext) - | None => (false, true, true), + | None => (false, true.into(), true), }; let mut feature_flag = FeatureFlag::empty(); @@ -320,7 +324,7 @@ impl<'a, 'b, P: swc_ecma_visit::Fold> PassBuilder<'a, 'b, P> { compat_pass, // module / helper Optional::new( - modules::import_analysis::import_analyzer(no_interop, ignore_dynamic), + modules::import_analysis::import_analyzer(import_interop, ignore_dynamic), need_analyzer ), compat::reserved_words::reserved_words(), diff --git a/crates/swc_ecma_transforms_base/src/helpers/_interop_require_wildcard.js b/crates/swc_ecma_transforms_base/src/helpers/_interop_require_wildcard.js index f4a0861b953d..9783ff78ec6a 100644 --- a/crates/swc_ecma_transforms_base/src/helpers/_interop_require_wildcard.js +++ b/crates/swc_ecma_transforms_base/src/helpers/_interop_require_wildcard.js @@ -1,28 +1,31 @@ -function _getRequireWildcardCache() { +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; - var cache = new WeakMap(); - _getRequireWildcardCache = function () { return cache; }; - return cache; + + var cacheBabelInterop = new WeakMap(); + var cacheNodeInterop = new WeakMap(); + return (_getRequireWildcardCache = function (nodeInterop) { + return nodeInterop ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); } -function _interopRequireWildcard(obj) { - if (obj && obj.__esModule) { + +function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) { return obj; } - + if (obj === null || (typeof obj !== "object" && typeof obj !== "function")) { return { default: obj } } - - var cache = _getRequireWildcardCache(); + + var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; - var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) { + if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; diff --git a/crates/swc_ecma_transforms_module/Cargo.toml b/crates/swc_ecma_transforms_module/Cargo.toml index 95845401ee05..02a050e56d7a 100644 --- a/crates/swc_ecma_transforms_module/Cargo.toml +++ b/crates/swc_ecma_transforms_module/Cargo.toml @@ -18,6 +18,7 @@ ahash = "0.7.4" anyhow = "1.0.41" bitflags = "1" indexmap = "1.8.0" +is-macro = "0.2.0" path-clean = "0.1.0" pathdiff = "0.2.0" serde = { version = "1.0.118", features = ["derive"] } diff --git a/crates/swc_ecma_transforms_module/src/amd.rs b/crates/swc_ecma_transforms_module/src/amd.rs index 697d674cff63..4618a33a797b 100644 --- a/crates/swc_ecma_transforms_module/src/amd.rs +++ b/crates/swc_ecma_transforms_module/src/amd.rs @@ -3,7 +3,7 @@ use serde::{Deserialize, Serialize}; use swc_atoms::{js_word, JsWord}; use swc_common::{util::take::Take, FileName, Mark, Span, DUMMY_SP}; use swc_ecma_ast::*; -use swc_ecma_transforms_base::{feature::FeatureFlag, helper, helper_expr}; +use swc_ecma_transforms_base::{feature::FeatureFlag, helper_expr}; use swc_ecma_utils::{ member_expr, private_ident, quote_ident, quote_str, ExprFactory, FunctionFactory, IsDirective, }; @@ -15,7 +15,8 @@ use crate::{ module_ref_rewriter::{ImportMap, ModuleRefRewriter}, path::{ImportResolver, Resolver}, util::{ - clone_first_use_strict, define_es_module, emit_export_stmts, local_name_for_src, use_strict, + clone_first_use_strict, define_es_module, emit_export_stmts, local_name_for_src, + use_strict, ImportInterop, }, }; @@ -108,6 +109,8 @@ impl VisitMut for Amd { noop_visit_mut_type!(); fn visit_mut_module_items(&mut self, n: &mut Vec) { + let import_interop = self.config.import_interop(); + let mut strip = ModuleDeclStrip::default(); n.visit_mut_with(&mut strip); @@ -128,7 +131,7 @@ impl VisitMut for Amd { let is_export_assign = export_assign.is_some(); - if has_module_decl && !self.config.no_interop && !is_export_assign { + if has_module_decl && !import_interop.is_none() && !is_export_assign { stmts.push(define_es_module(self.exports())) } @@ -260,7 +263,7 @@ impl VisitMut for Amd { *span, args.take(), require, - !self.config.no_interop, + self.config.import_interop(), self.support_arrow, ); } @@ -296,6 +299,8 @@ impl Amd { export: Export, is_export_assign: bool, ) -> impl Iterator { + let import_interop = self.config.import_interop(); + let mut stmts = Vec::with_capacity(link.len()); let mut export_obj_prop_list = export @@ -308,7 +313,9 @@ impl Amd { let is_swc_default_helper = !link_flag.has_named() && src.starts_with("@swc/helpers/"); - if self.config.no_interop || is_swc_default_helper { + let is_node_default = !link_flag.has_named() && import_interop.is_node(); + + if import_interop.is_none() || is_swc_default_helper { link_flag -= LinkFlag::NAMESPACE; } @@ -331,7 +338,7 @@ impl Amd { &new_var_ident, &Some(mod_ident.clone()), &mut false, - is_swc_default_helper, + is_swc_default_helper || is_node_default, ); if is_swc_default_helper { @@ -356,17 +363,19 @@ impl Amd { // _introp(mod); if need_interop { - import_expr = CallExpr { - span: DUMMY_SP, - callee: if link_flag.namespace() { - helper!(interop_require_wildcard, "interopRequireWildcard") + import_expr = match import_interop { + ImportInterop::Swc if link_flag.interop() => if link_flag.namespace() { + helper_expr!(interop_require_wildcard, "interopRequireWildcard") } else { - helper!(interop_require_default, "interopRequireDefault") - }, - args: vec![import_expr.as_arg()], - type_args: Default::default(), + helper_expr!(interop_require_default, "interopRequireDefault") + } + .as_call(DUMMY_SP, vec![import_expr.as_arg()]), + ImportInterop::Node if link_flag.namespace() => { + helper_expr!(interop_require_wildcard, "interopRequireWildcard") + .as_call(DUMMY_SP, vec![import_expr.as_arg(), true.as_arg()]) + } + _ => import_expr, } - .into() }; // mod = _introp(mod); @@ -418,7 +427,7 @@ pub(crate) fn amd_dynamic_import( span: Span, args: Vec, require: Ident, - es_module_interop: bool, + import_interop: ImportInterop, support_arrow: bool, ) -> Expr { let resolve = private_ident!("resolve"); @@ -427,11 +436,12 @@ pub(crate) fn amd_dynamic_import( let module = private_ident!("m"); - let resolved_module: Expr = if es_module_interop { - helper_expr!(interop_require_wildcard, "interopRequireWildcard") - .as_call(DUMMY_SP, vec![module.clone().as_arg()]) - } else { - module.clone().into() + let resolved_module: Expr = match import_interop { + ImportInterop::None => module.clone().into(), + ImportInterop::Swc => helper_expr!(interop_require_wildcard, "interopRequireWildcard") + .as_call(DUMMY_SP, vec![module.clone().as_arg()]), + ImportInterop::Node => helper_expr!(interop_require_wildcard, "interopRequireWildcard") + .as_call(DUMMY_SP, vec![module.clone().as_arg(), true.as_arg()]), }; let resolve_callback = resolve diff --git a/crates/swc_ecma_transforms_module/src/common_js.rs b/crates/swc_ecma_transforms_module/src/common_js.rs index c698784f9845..4d0148e29cf7 100644 --- a/crates/swc_ecma_transforms_module/src/common_js.rs +++ b/crates/swc_ecma_transforms_module/src/common_js.rs @@ -1,9 +1,9 @@ -use swc_atoms::js_word; +use swc_atoms::{js_word, JsWord}; use swc_common::{collections::AHashSet, util::take::Take, FileName, Mark, Span, DUMMY_SP}; use swc_ecma_ast::*; -use swc_ecma_transforms_base::{feature::FeatureFlag, helper, helper_expr}; +use swc_ecma_transforms_base::{feature::FeatureFlag, helper_expr}; use swc_ecma_utils::{ - member_expr, private_ident, quote_ident, ExprFactory, FunctionFactory, IsDirective, + member_expr, private_ident, quote_ident, undefined, ExprFactory, FunctionFactory, IsDirective, }; use swc_ecma_visit::{as_folder, noop_visit_mut_type, Fold, VisitMut, VisitMutWith}; @@ -13,7 +13,8 @@ use crate::{ module_ref_rewriter::{ImportMap, ModuleRefRewriter}, path::{ImportResolver, Resolver}, util::{ - clone_first_use_strict, define_es_module, emit_export_stmts, local_name_for_src, use_strict, + clone_first_use_strict, define_es_module, emit_export_stmts, local_name_for_src, prop_name, + use_strict, ImportInterop, }, }; @@ -70,6 +71,8 @@ impl VisitMut for Cjs { noop_visit_mut_type!(); fn visit_mut_module_items(&mut self, n: &mut Vec) { + let import_interop = self.config.import_interop(); + let mut strip = ModuleDeclStrip::default(); n.visit_mut_with(&mut strip); @@ -90,7 +93,7 @@ impl VisitMut for Cjs { let is_export_assign = export_assign.is_some(); - if has_module_decl && !self.config.no_interop && !is_export_assign { + if has_module_decl && !import_interop.is_none() && !is_export_assign { stmts.push(define_es_module(self.exports()).into()) } @@ -170,7 +173,7 @@ impl VisitMut for Cjs { *span, args.take(), quote_ident!(require_span, "require"), - !self.config.no_interop, + self.config.import_interop(), self.support_arrow, is_lit_path, ); @@ -208,6 +211,8 @@ impl Cjs { export: Export, is_export_assign: bool, ) -> impl Iterator { + let import_interop = self.config.import_interop(); + let mut stmts = Vec::with_capacity(link.len()); let mut export_obj_prop_list = export @@ -233,7 +238,9 @@ impl Cjs { let is_swc_default_helper = !link_flag.has_named() && src.starts_with("@swc/helpers/"); - if self.config.no_interop || is_swc_default_helper { + let is_node_default = !link_flag.has_named() && import_interop.is_node(); + + if import_interop.is_none() || is_swc_default_helper { link_flag -= LinkFlag::NAMESPACE; } @@ -250,7 +257,7 @@ impl Cjs { &mod_ident, &raw_mod_ident, &mut decl_mod_ident, - is_swc_default_helper, + is_swc_default_helper || is_node_default, ); let is_lazy = @@ -300,20 +307,20 @@ impl Cjs { }; // _introp(require("mod")); - let import_expr = if !link_flag.interop() { - import_expr - } else { - CallExpr { - span: DUMMY_SP, - callee: if link_flag.namespace() { - helper!(interop_require_wildcard, "interopRequireWildcard") + let import_expr = { + match import_interop { + ImportInterop::Swc if link_flag.interop() => if link_flag.namespace() { + helper_expr!(interop_require_wildcard, "interopRequireWildcard") } else { - helper!(interop_require_default, "interopRequireDefault") - }, - args: vec![import_expr.as_arg()], - type_args: Default::default(), + helper_expr!(interop_require_default, "interopRequireDefault") + } + .as_call(DUMMY_SP, vec![import_expr.as_arg()]), + ImportInterop::Node if link_flag.namespace() => { + helper_expr!(interop_require_wildcard, "interopRequireWildcard") + .as_call(DUMMY_SP, vec![import_expr.as_arg(), true.as_arg()]) + } + _ => import_expr, } - .into() }; if decl_mod_ident { @@ -342,13 +349,24 @@ impl Cjs { }, ); - let mut export_stmts = Default::default(); + let mut export_stmts: Vec = Default::default(); if !export_obj_prop_list.is_empty() && !is_export_assign { + if import_interop.is_node() { + export_obj_prop_list.sort_by(|a, b| a.0.cmp(&b.0)); + + let export_id_list: Vec<(JsWord, Span)> = export_obj_prop_list + .iter() + .map(|(name, span, _)| (name.clone(), *span)) + .collect(); + + self.emit_lexer_export_init(export_id_list, &mut export_stmts); + } + let features = self.available_features; let exports = self.exports(); - export_stmts = emit_export_stmts(features, exports, export_obj_prop_list); + export_stmts.extend(emit_export_stmts(features, exports, export_obj_prop_list)); } export_stmts.into_iter().chain(stmts) @@ -357,6 +375,34 @@ impl Cjs { fn exports(&mut self) -> Ident { quote_ident!(DUMMY_SP.apply_mark(self.unresolved_mark), "exports") } + + /// emit [cjs-module-lexer](https://github.com/nodejs/cjs-module-lexer) friendly exports list + /// ```javascript + /// exports.foo = exports.bar = void 0; + /// ``` + fn emit_lexer_export_init( + &mut self, + export_id_list: Vec<(JsWord, Span)>, + stmts: &mut Vec, + ) { + for group in export_id_list.chunks(100) { + let mut expr = *undefined(DUMMY_SP); + + for (export_name, span) in group { + let prop = prop_name(export_name, DUMMY_SP).into(); + + let export_binding = MemberExpr { + obj: Box::new(self.exports().into()), + span: *span, + prop, + }; + + expr = expr.make_assign_to(op!("="), export_binding.as_pat_or_expr()); + } + + stmts.push(expr.into_stmt()); + } + } } /// ```javascript @@ -368,7 +414,7 @@ pub(crate) fn cjs_dynamic_import( span: Span, args: Vec, require: Ident, - es_module_interop: bool, + import_interop: ImportInterop, support_arrow: bool, is_lit_path: bool, ) -> Expr { @@ -388,11 +434,12 @@ pub(crate) fn cjs_dynamic_import( let import_expr = { let require = require.as_call(DUMMY_SP, require_args); - if es_module_interop { - helper_expr!(interop_require_wildcard, "interopRequireWildcard") - .as_call(DUMMY_SP, vec![require.as_arg()]) - } else { - require + match import_interop { + ImportInterop::None => require, + ImportInterop::Swc => helper_expr!(interop_require_wildcard, "interopRequireWildcard") + .as_call(DUMMY_SP, vec![require.as_arg()]), + ImportInterop::Node => helper_expr!(interop_require_wildcard, "interopRequireWildcard") + .as_call(DUMMY_SP, vec![require.as_arg(), true.as_arg()]), } }; diff --git a/crates/swc_ecma_transforms_module/src/import_analysis.rs b/crates/swc_ecma_transforms_module/src/import_analysis.rs index 672dc42ab7f1..3b4a3974549e 100644 --- a/crates/swc_ecma_transforms_module/src/import_analysis.rs +++ b/crates/swc_ecma_transforms_module/src/import_analysis.rs @@ -6,11 +6,14 @@ use swc_ecma_visit::{ as_folder, noop_visit_mut_type, noop_visit_type, Fold, Visit, VisitMut, VisitWith, }; -use crate::module_decl_strip::LinkFlag; +use crate::{module_decl_strip::LinkFlag, util::ImportInterop}; -pub fn import_analyzer(no_interop: bool, ignore_dynamic: bool) -> impl Fold + VisitMut { +pub fn import_analyzer( + import_interop: ImportInterop, + ignore_dynamic: bool, +) -> impl Fold + VisitMut { as_folder(ImportAnalyzer { - no_interop, + import_interop, ignore_dynamic, flag_record: Default::default(), dynamic_import_found: false, @@ -18,7 +21,7 @@ pub fn import_analyzer(no_interop: bool, ignore_dynamic: bool) -> impl Fold + Vi } pub struct ImportAnalyzer { - no_interop: bool, + import_interop: ImportInterop, ignore_dynamic: bool, flag_record: AHashMap, @@ -50,13 +53,14 @@ impl Visit for ImportAnalyzer { enable_helper!(export_star); } - if self.no_interop { + if self.import_interop.is_none() { return; } - if flag_record - .values() - .any(|flag| flag.interop() && !flag.has_named()) + if self.import_interop.is_swc() + && flag_record + .values() + .any(|flag| flag.interop() && !flag.has_named()) { enable_helper!(interop_require_default); } diff --git a/crates/swc_ecma_transforms_module/src/module_decl_strip.rs b/crates/swc_ecma_transforms_module/src/module_decl_strip.rs index 22df60d9e643..1297ec9bf7cf 100644 --- a/crates/swc_ecma_transforms_module/src/module_decl_strip.rs +++ b/crates/swc_ecma_transforms_module/src/module_decl_strip.rs @@ -576,7 +576,8 @@ pub trait LinkSpecifierReducer { mod_ident: &Ident, raw_mod_ident: &Option, ref_to_mod_ident: &mut bool, - is_swc_default_helper: bool, + // do not emit `mod.default`, emit `mod` instead + default_nowrap: bool, ); } @@ -588,7 +589,7 @@ impl LinkSpecifierReducer for AHashSet { mod_ident: &Ident, raw_mod_ident: &Option, ref_to_mod_ident: &mut bool, - is_swc_default_helper: bool, + default_nowrap: bool, ) { self.into_iter().for_each(|s| match s { LinkSpecifier::ImportNamed { imported, local } => { @@ -606,7 +607,7 @@ impl LinkSpecifierReducer for AHashSet { id, ( mod_ident.clone(), - (!is_swc_default_helper).then(|| js_word!("default")), + (!default_nowrap).then(|| js_word!("default")), ), ); } diff --git a/crates/swc_ecma_transforms_module/src/umd.rs b/crates/swc_ecma_transforms_module/src/umd.rs index f3aada5dc2e9..2b10ed7c963a 100644 --- a/crates/swc_ecma_transforms_module/src/umd.rs +++ b/crates/swc_ecma_transforms_module/src/umd.rs @@ -2,7 +2,7 @@ use anyhow::Context; use swc_atoms::JsWord; use swc_common::{sync::Lrc, util::take::Take, FileName, Mark, SourceMap, Span, DUMMY_SP}; use swc_ecma_ast::*; -use swc_ecma_transforms_base::{feature::FeatureFlag, helper, helper_expr}; +use swc_ecma_transforms_base::{feature::FeatureFlag, helper_expr}; use swc_ecma_utils::{ is_valid_prop_ident, private_ident, quote_ident, quote_str, ExprFactory, IsDirective, }; @@ -15,7 +15,8 @@ use crate::{ module_ref_rewriter::{ImportMap, ModuleRefRewriter}, path::{ImportResolver, Resolver}, util::{ - clone_first_use_strict, define_es_module, emit_export_stmts, local_name_for_src, use_strict, + clone_first_use_strict, define_es_module, emit_export_stmts, local_name_for_src, + use_strict, ImportInterop, }, }; @@ -87,6 +88,8 @@ impl VisitMut for Umd { noop_visit_mut_type!(); fn visit_mut_module(&mut self, module: &mut Module) { + let import_interop = self.config.config.import_interop(); + let filename = self.cm.span_to_filename(module.span); let exported_name = self.config.determine_export_name(filename); @@ -112,7 +115,7 @@ impl VisitMut for Umd { let is_export_assign = export_assign.is_some(); - if has_module_decl && !self.config.config.no_interop && !is_export_assign { + if has_module_decl && !import_interop.is_none() && !is_export_assign { stmts.push(define_es_module(self.exports())) } @@ -187,6 +190,8 @@ impl Umd { export: Export, is_export_assign: bool, ) -> impl Iterator { + let import_interop = self.config.config.import_interop(); + let mut stmts = Vec::with_capacity(link.len()); let mut export_obj_prop_list = export @@ -199,7 +204,9 @@ impl Umd { let is_swc_default_helper = !link_flag.has_named() && src.starts_with("@swc/helpers/"); - if self.config.config.no_interop || is_swc_default_helper { + let is_node_default = !link_flag.has_named() && import_interop.is_node(); + + if import_interop.is_none() || is_swc_default_helper { link_flag -= LinkFlag::NAMESPACE; } @@ -222,7 +229,7 @@ impl Umd { &new_var_ident, &Some(mod_ident.clone()), &mut false, - is_swc_default_helper, + is_swc_default_helper || is_node_default, ); if is_swc_default_helper { @@ -247,17 +254,19 @@ impl Umd { // _introp(mod); if need_interop { - import_expr = CallExpr { - span: DUMMY_SP, - callee: if link_flag.namespace() { - helper!(interop_require_wildcard, "interopRequireWildcard") + import_expr = match import_interop { + ImportInterop::Swc if link_flag.interop() => if link_flag.namespace() { + helper_expr!(interop_require_wildcard, "interopRequireWildcard") } else { - helper!(interop_require_default, "interopRequireDefault") - }, - args: vec![import_expr.as_arg()], - type_args: Default::default(), + helper_expr!(interop_require_default, "interopRequireDefault") + } + .as_call(DUMMY_SP, vec![import_expr.as_arg()]), + ImportInterop::Node if link_flag.namespace() => { + helper_expr!(interop_require_wildcard, "interopRequireWildcard") + .as_call(DUMMY_SP, vec![import_expr.as_arg(), true.as_arg()]) + } + _ => import_expr, } - .into() }; // mod = _introp(mod); diff --git a/crates/swc_ecma_transforms_module/src/util.rs b/crates/swc_ecma_transforms_module/src/util.rs index 4b96a53fae12..a29d3928bd75 100644 --- a/crates/swc_ecma_transforms_module/src/util.rs +++ b/crates/swc_ecma_transforms_module/src/util.rs @@ -1,4 +1,5 @@ use inflector::Inflector; +use is_macro::Is; use serde::{Deserialize, Serialize}; use swc_atoms::{js_word, JsWord}; use swc_cached::regex::CachedRegex; @@ -20,6 +21,9 @@ pub struct Config { #[serde(default)] pub lazy: Lazy, #[serde(default)] + pub import_interop: Option, + #[serde(default)] + /// Note: deprecated pub no_interop: bool, #[serde(default)] pub ignore_dynamic: bool, @@ -33,6 +37,7 @@ impl Default for Config { strict: false, strict_mode: default_strict_mode(), lazy: Lazy::default(), + import_interop: None, no_interop: false, ignore_dynamic: false, preserve_import_meta: false, @@ -44,6 +49,33 @@ const fn default_strict_mode() -> bool { true } +#[derive(Debug, Clone, Copy, PartialEq, Eq, Is, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub enum ImportInterop { + #[serde(alias = "babel")] + Swc, + Node, + None, +} + +impl From for ImportInterop { + fn from(no_interop: bool) -> Self { + if no_interop { + ImportInterop::None + } else { + ImportInterop::Swc + } + } +} + +impl Config { + #[inline(always)] + pub fn import_interop(&self) -> ImportInterop { + self.import_interop + .unwrap_or_else(|| self.no_interop.into()) + } +} + #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(deny_unknown_fields, rename_all = "camelCase")] pub struct LazyObjectConfig { diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-all/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-all/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/output.amd.js new file mode 100644 index 000000000000..59cad0a0a033 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/output.amd.js @@ -0,0 +1,16 @@ +define([ + "require", + "exports", + "react" +], function(require, exports, _react) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true + }); + _react = _exportStar(_react, exports); + var _default = _react; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/output.cjs new file mode 100644 index 000000000000..e4c8457b223f --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/output.cjs @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true +}); +const _react = _exportStar(require("react"), exports); +var _default = _react; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/output.umd.js new file mode 100644 index 000000000000..c7fce329611d --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-all/output.umd.js @@ -0,0 +1,19 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports, require("react")); + else if (typeof define === "function" && define.amd) define([ + "exports", + "react" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}, global.react); +})(this, function(exports, _react) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true + }); + _react = _exportStar(_react, exports); + var _default = _react; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-10/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-10/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-10/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-10/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-10/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-10/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-10/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-10/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-10/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-10/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-10/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-10/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-10/output.cjs new file mode 100644 index 000000000000..11079f2da053 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-10/output.cjs @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true +}); +var _default = function() { + return "foo"; +}(); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-10/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-10/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-10/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-10/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-11/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-11/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-11/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-11/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-11/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-11/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-11/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-11/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-11/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-11/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-11/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-11/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-11/output.cjs new file mode 100644 index 000000000000..9d37195696d5 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-11/output.cjs @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.Cachier = void 0; +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + Cachier: ()=>Cachier, + default: ()=>_default +}); +var _default = new Cachier(); +function Cachier(databaseName) {} diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-11/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-11/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-11/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-11/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-2/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-2/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-2/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-2/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-2/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-2/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-2/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-2/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-2/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-2/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-2/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-2/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-2/output.cjs new file mode 100644 index 000000000000..5eee36d1782c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-2/output.cjs @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true +}); +var _default = {}; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-2/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-2/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-2/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-2/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-3/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-3/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-3/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-3/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-3/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-3/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-3/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-3/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-3/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-3/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-3/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-3/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-3/output.cjs new file mode 100644 index 000000000000..a10b7febe4cd --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-3/output.cjs @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true +}); +var _default = []; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-3/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-3/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-3/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-3/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-4/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-4/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-4/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-4/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-4/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-4/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-4/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-4/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-4/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-4/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-4/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-4/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-4/output.cjs new file mode 100644 index 000000000000..eaf8ee7dc2a5 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-4/output.cjs @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true +}); +var _default = foo; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-4/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-4/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-4/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-4/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-5/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-5/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-5/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-5/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-5/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-5/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-5/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-5/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-5/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-5/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-5/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-5/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-5/output.cjs new file mode 100644 index 000000000000..3837d7532edd --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-5/output.cjs @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true +}); +function _default() {} diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-5/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-5/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-5/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-5/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-6/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-6/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-6/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-6/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-6/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-6/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-6/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-6/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-6/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-6/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-6/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-6/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-6/output.cjs new file mode 100644 index 000000000000..b53340bea4f7 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-6/output.cjs @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true +}); +class _default { +} diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-6/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-6/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-6/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-6/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-7/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-7/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-7/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-7/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-7/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-7/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-7/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-7/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-7/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-7/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-7/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-7/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-7/output.cjs new file mode 100644 index 000000000000..b266dc6d9e0d --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-7/output.cjs @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +Object.defineProperty(exports, "default", { + get: ()=>foo, + enumerable: true +}); +function foo() {} diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-7/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-7/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-7/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-7/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-8/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-8/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-8/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-8/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-8/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-8/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-8/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-8/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-8/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-8/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-8/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-8/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-8/output.cjs new file mode 100644 index 000000000000..92c1d19159e9 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-8/output.cjs @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +Object.defineProperty(exports, "default", { + get: ()=>Foo, + enumerable: true +}); +class Foo { +} diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-8/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-8/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-8/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-8/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-9/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-9/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-9/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-9/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-9/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-9/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-9/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-9/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-9/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-9/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-9/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-9/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-9/output.cjs new file mode 100644 index 000000000000..0cdfe1211bc8 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-9/output.cjs @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +Object.defineProperty(exports, "default", { + get: ()=>foo, + enumerable: true +}); +var foo; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-9/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-9/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-9/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default-9/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default/output.cjs new file mode 100644 index 000000000000..61da191a4b4f --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default/output.cjs @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true +}); +var _default = 42; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-default/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-destructured/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-destructured/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-destructured/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-destructured/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-destructured/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-destructured/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-destructured/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-destructured/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-destructured/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-destructured/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-destructured/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-destructured/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-destructured/output.cjs new file mode 100644 index 000000000000..ad8a4228e926 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-destructured/output.cjs @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.y = exports.x = exports.f4 = exports.f3 = exports.f2 = exports.f1 = void 0; +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + f1: ()=>f1, + f2: ()=>f2, + f3: ()=>f3, + f4: ()=>f4, + x: ()=>x, + y: ()=>y +}); +let x = 0; +let y = 0; +function f1() { + ({ x } = { + x: 1 + }); +} +function f2() { + ({ x , y } = { + x: 2, + y: 3 + }); +} +function f3() { + [x, y, z] = [ + 3, + 4, + 5 + ]; +} +function f4() { + [x, , y] = [ + 3, + 4, + 5 + ]; +} diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-destructured/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-destructured/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-destructured/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-destructured/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-1/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-1/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-1/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-1/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-1/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-1/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-1/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-1/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-1/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-1/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-1/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-1/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-1/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-1/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-1/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-1/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-1/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-1/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-1/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-2/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-2/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-2/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-2/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-2/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-2/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-2/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-2/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-2/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-2/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-2/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-2/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-2/output.cjs new file mode 100644 index 000000000000..3dec26659066 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-2/output.cjs @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.foo = void 0; +Object.defineProperty(exports, "foo", { + get: ()=>_foo.foo, + enumerable: true +}); +const _foo = require("foo"); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-2/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-2/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-2/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-2/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-3/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-3/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-3/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-3/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-3/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-3/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-3/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-3/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-3/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-3/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-3/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-3/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-3/output.cjs new file mode 100644 index 000000000000..50f795d9cdb2 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-3/output.cjs @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.foo = exports.bar = void 0; +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + bar: ()=>_foo.bar, + foo: ()=>_foo.foo +}); +const _foo = require("foo"); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-3/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-3/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-3/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-3/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-4/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-4/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-4/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-4/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-4/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-4/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-4/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-4/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-4/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-4/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-4/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-4/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-4/output.cjs new file mode 100644 index 000000000000..96726f67c4a8 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-4/output.cjs @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.bar = void 0; +Object.defineProperty(exports, "bar", { + get: ()=>_foo.foo, + enumerable: true +}); +const _foo = require("foo"); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-4/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-4/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-4/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-4/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-5/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-5/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-5/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-5/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-5/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-5/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-5/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-5/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-5/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-5/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-5/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-5/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-5/output.cjs new file mode 100644 index 000000000000..93e1a8ca9a0d --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-5/output.cjs @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +Object.defineProperty(exports, "default", { + get: ()=>_foo.foo, + enumerable: true +}); +const _foo = require("foo"); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-5/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-5/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-5/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-5/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-6/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-6/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-6/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-6/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-6/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-6/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-6/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-6/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-6/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-6/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-6/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-6/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-6/output.cjs new file mode 100644 index 000000000000..9fdac8837b4b --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-6/output.cjs @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.bar = void 0; +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + bar: ()=>_foo.bar, + default: ()=>_foo.foo +}); +const _foo = require("foo"); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-6/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-6/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-6/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-6/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-7/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-7/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/output.amd.js new file mode 100644 index 000000000000..d620c9abf10a --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/output.amd.js @@ -0,0 +1,15 @@ +define([ + "require", + "exports", + "foo" +], function(require, exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "foo", { + get: ()=>_foo.default, + enumerable: true + }); + _foo = _foo; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/output.cjs new file mode 100644 index 000000000000..6d48893aa3f3 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/output.cjs @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.foo = void 0; +Object.defineProperty(exports, "foo", { + get: ()=>_foo.default, + enumerable: true +}); +const _foo = require("foo"); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/output.umd.js new file mode 100644 index 000000000000..f3b924cc691a --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-7/output.umd.js @@ -0,0 +1,18 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports, require("foo")); + else if (typeof define === "function" && define.amd) define([ + "exports", + "foo" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}, global.foo); +})(this, function(exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "foo", { + get: ()=>_foo.default, + enumerable: true + }); + _foo = _foo; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-8/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-8/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-8/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-8/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-8/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-8/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-8/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-8/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-8/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-8/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-8/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-8/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-8/output.cjs new file mode 100644 index 000000000000..5ef27ba0ddd3 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-8/output.cjs @@ -0,0 +1,116 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.foo98 = exports.foo97 = exports.foo96 = exports.foo95 = exports.foo94 = exports.foo93 = exports.foo92 = exports.foo91 = exports.foo90 = exports.foo9 = exports.foo89 = exports.foo88 = exports.foo87 = exports.foo86 = exports.foo85 = exports.foo84 = exports.foo83 = exports.foo82 = exports.foo81 = exports.foo80 = exports.foo8 = exports.foo79 = exports.foo78 = exports.foo77 = exports.foo76 = exports.foo75 = exports.foo74 = exports.foo73 = exports.foo72 = exports.foo71 = exports.foo70 = exports.foo7 = exports.foo69 = exports.foo68 = exports.foo67 = exports.foo66 = exports.foo65 = exports.foo64 = exports.foo63 = exports.foo62 = exports.foo61 = exports.foo60 = exports.foo6 = exports.foo59 = exports.foo58 = exports.foo57 = exports.foo56 = exports.foo55 = exports.foo54 = exports.foo53 = exports.foo52 = exports.foo51 = exports.foo50 = exports.foo5 = exports.foo49 = exports.foo48 = exports.foo47 = exports.foo46 = exports.foo45 = exports.foo44 = exports.foo43 = exports.foo42 = exports.foo41 = exports.foo40 = exports.foo4 = exports.foo39 = exports.foo38 = exports.foo37 = exports.foo36 = exports.foo35 = exports.foo34 = exports.foo33 = exports.foo32 = exports.foo31 = exports.foo30 = exports.foo3 = exports.foo29 = exports.foo28 = exports.foo27 = exports.foo26 = exports.foo25 = exports.foo24 = exports.foo23 = exports.foo22 = exports.foo21 = exports.foo20 = exports.foo2 = exports.foo19 = exports.foo18 = exports.foo17 = exports.foo16 = exports.foo15 = exports.foo14 = exports.foo13 = exports.foo12 = exports.foo11 = exports.foo100 = exports.foo10 = exports.foo1 = exports.foo = void 0; +exports.foo99 = void 0; +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + foo: ()=>_foo.foo, + foo1: ()=>_foo.foo1, + foo10: ()=>_foo.foo10, + foo100: ()=>_foo.foo100, + foo11: ()=>_foo.foo11, + foo12: ()=>_foo.foo12, + foo13: ()=>_foo.foo13, + foo14: ()=>_foo.foo14, + foo15: ()=>_foo.foo15, + foo16: ()=>_foo.foo16, + foo17: ()=>_foo.foo17, + foo18: ()=>_foo.foo18, + foo19: ()=>_foo.foo19, + foo2: ()=>_foo.foo2, + foo20: ()=>_foo.foo20, + foo21: ()=>_foo.foo21, + foo22: ()=>_foo.foo22, + foo23: ()=>_foo.foo23, + foo24: ()=>_foo.foo24, + foo25: ()=>_foo.foo25, + foo26: ()=>_foo.foo26, + foo27: ()=>_foo.foo27, + foo28: ()=>_foo.foo28, + foo29: ()=>_foo.foo29, + foo3: ()=>_foo.foo3, + foo30: ()=>_foo.foo30, + foo31: ()=>_foo.foo31, + foo32: ()=>_foo.foo32, + foo33: ()=>_foo.foo33, + foo34: ()=>_foo.foo34, + foo35: ()=>_foo.foo35, + foo36: ()=>_foo.foo36, + foo37: ()=>_foo.foo37, + foo38: ()=>_foo.foo38, + foo39: ()=>_foo.foo39, + foo4: ()=>_foo.foo4, + foo40: ()=>_foo.foo40, + foo41: ()=>_foo.foo41, + foo42: ()=>_foo.foo42, + foo43: ()=>_foo.foo43, + foo44: ()=>_foo.foo44, + foo45: ()=>_foo.foo45, + foo46: ()=>_foo.foo46, + foo47: ()=>_foo.foo47, + foo48: ()=>_foo.foo48, + foo49: ()=>_foo.foo49, + foo5: ()=>_foo.foo5, + foo50: ()=>_foo.foo50, + foo51: ()=>_foo.foo51, + foo52: ()=>_foo.foo52, + foo53: ()=>_foo.foo53, + foo54: ()=>_foo.foo54, + foo55: ()=>_foo.foo55, + foo56: ()=>_foo.foo56, + foo57: ()=>_foo.foo57, + foo58: ()=>_foo.foo58, + foo59: ()=>_foo.foo59, + foo6: ()=>_foo.foo6, + foo60: ()=>_foo.foo60, + foo61: ()=>_foo.foo61, + foo62: ()=>_foo.foo62, + foo63: ()=>_foo.foo63, + foo64: ()=>_foo.foo64, + foo65: ()=>_foo.foo65, + foo66: ()=>_foo.foo66, + foo67: ()=>_foo.foo67, + foo68: ()=>_foo.foo68, + foo69: ()=>_foo.foo69, + foo7: ()=>_foo.foo7, + foo70: ()=>_foo.foo70, + foo71: ()=>_foo.foo71, + foo72: ()=>_foo.foo72, + foo73: ()=>_foo.foo73, + foo74: ()=>_foo.foo74, + foo75: ()=>_foo.foo75, + foo76: ()=>_foo.foo76, + foo77: ()=>_foo.foo77, + foo78: ()=>_foo.foo78, + foo79: ()=>_foo.foo79, + foo8: ()=>_foo.foo8, + foo80: ()=>_foo.foo80, + foo81: ()=>_foo.foo81, + foo82: ()=>_foo.foo82, + foo83: ()=>_foo.foo83, + foo84: ()=>_foo.foo84, + foo85: ()=>_foo.foo85, + foo86: ()=>_foo.foo86, + foo87: ()=>_foo.foo87, + foo88: ()=>_foo.foo88, + foo89: ()=>_foo.foo89, + foo9: ()=>_foo.foo9, + foo90: ()=>_foo.foo90, + foo91: ()=>_foo.foo91, + foo92: ()=>_foo.foo92, + foo93: ()=>_foo.foo93, + foo94: ()=>_foo.foo94, + foo95: ()=>_foo.foo95, + foo96: ()=>_foo.foo96, + foo97: ()=>_foo.foo97, + foo98: ()=>_foo.foo98, + foo99: ()=>_foo.foo99 +}); +const _foo = require("foo"); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-8/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-8/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-8/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-from-8/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-1/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-1/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-1/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-1/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-1/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-1/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-1/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-1/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-1/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-1/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-1/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-1/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-1/output.cjs new file mode 100644 index 000000000000..80034090596b --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-1/output.cjs @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.foo = void 0; +Object.defineProperty(exports, "foo", { + get: ()=>foo, + enumerable: true +}); +var foo; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-1/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-1/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-1/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-1/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-2/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-2/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-2/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-2/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-2/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-2/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-2/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-2/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-2/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-2/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-2/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-2/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-2/output.cjs new file mode 100644 index 000000000000..56a5192ccc91 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-2/output.cjs @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.foo = exports.bar = void 0; +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + bar: ()=>bar, + foo: ()=>foo +}); +var foo, bar; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-2/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-2/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-2/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-2/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-3/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-3/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-3/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-3/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-3/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-3/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-3/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-3/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-3/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-3/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-3/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-3/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-3/output.cjs new file mode 100644 index 000000000000..427b483ff646 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-3/output.cjs @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.bar = void 0; +Object.defineProperty(exports, "bar", { + get: ()=>foo, + enumerable: true +}); +var foo; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-3/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-3/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-3/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-3/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-4/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-4/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-4/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-4/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-4/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-4/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-4/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-4/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-4/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-4/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-4/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-4/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-4/output.cjs new file mode 100644 index 000000000000..0cdfe1211bc8 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-4/output.cjs @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +Object.defineProperty(exports, "default", { + get: ()=>foo, + enumerable: true +}); +var foo; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-4/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-4/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-4/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-4/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-5/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-5/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-5/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-5/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-5/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-5/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-5/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-5/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-5/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-5/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-5/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-5/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-5/output.cjs new file mode 100644 index 000000000000..179e5c47fab9 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-5/output.cjs @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.bar = void 0; +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + bar: ()=>bar, + default: ()=>foo +}); +var foo, bar; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-5/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-5/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-5/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/export-named-5/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/exports-variable/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/exports-variable/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/exports-variable/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/exports-variable/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/exports-variable/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/exports-variable/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/exports-variable/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/exports-variable/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/exports-variable/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/exports-variable/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/exports-variable/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/exports-variable/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/exports-variable/output.cjs new file mode 100644 index 000000000000..eace5fdfef94 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/exports-variable/output.cjs @@ -0,0 +1,33 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.foo9 = exports.foo8 = exports.foo7 = exports.foo6 = exports.foo5 = exports.foo4 = exports.foo3 = exports.foo2 = exports.foo = exports.bar = void 0; +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + bar: ()=>bar, + foo: ()=>foo, + foo2: ()=>foo2, + foo3: ()=>foo3, + foo4: ()=>foo4, + foo5: ()=>foo5, + foo6: ()=>foo6, + foo7: ()=>foo7, + foo8: ()=>foo8, + foo9: ()=>foo9 +}); +var foo = 1; +var foo2 = 1, bar = 2; +var foo3 = function() {}; +var foo4; +let foo5 = 2; +let foo6; +const foo7 = 3; +function foo8() {} +class foo9 { +} diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/exports-variable/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/exports-variable/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/exports-variable/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/exports-variable/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/hoist-function-exports/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/hoist-function-exports/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/hoist-function-exports/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/hoist-function-exports/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/hoist-function-exports/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/hoist-function-exports/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/hoist-function-exports/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/hoist-function-exports/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/hoist-function-exports/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/hoist-function-exports/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/hoist-function-exports/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/hoist-function-exports/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/hoist-function-exports/output.cjs new file mode 100644 index 000000000000..26c9b48f929c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/hoist-function-exports/output.cjs @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.nextOdd = exports.isOdd = void 0; +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + isOdd: ()=>isOdd, + nextOdd: ()=>nextOdd +}); +const _evens = require("./evens"); +function nextOdd(n) { + return (0, _evens.isEven)(n) ? n + 1 : n + 2; +} +var isOdd = function(isEven) { + return function(n) { + return !isEven(n); + }; +}(_evens.isEven); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/hoist-function-exports/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/hoist-function-exports/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/hoist-function-exports/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/hoist-function-exports/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-default/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-default/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/output.amd.js new file mode 100644 index 000000000000..c0313653a904 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/output.amd.js @@ -0,0 +1,13 @@ +define([ + "require", + "exports", + "foo" +], function(require, exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + _foo = _foo; + _foo; + _foo; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/output.cjs new file mode 100644 index 000000000000..3ec2ad41c97c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/output.cjs @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +const _foo = require("foo"); +_foo; +_foo; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/output.umd.js new file mode 100644 index 000000000000..155b7dfc007e --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-default/output.umd.js @@ -0,0 +1,16 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports, require("foo")); + else if (typeof define === "function" && define.amd) define([ + "exports", + "foo" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}, global.foo); +})(this, function(exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + _foo = _foo; + _foo; + _foo; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-glob/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-glob/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/output.amd.js new file mode 100644 index 000000000000..e698fd48d298 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/output.amd.js @@ -0,0 +1,11 @@ +define([ + "require", + "exports", + "foo" +], function(require, exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + _foo = _interopRequireWildcard(_foo, true); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/output.cjs new file mode 100644 index 000000000000..88df1796c98a --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/output.cjs @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +const _foo = _interopRequireWildcard(require("foo"), true); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/output.umd.js new file mode 100644 index 000000000000..ea82c3062625 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-glob/output.umd.js @@ -0,0 +1,14 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports, require("foo")); + else if (typeof define === "function" && define.amd) define([ + "exports", + "foo" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}, global.foo); +})(this, function(exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + _foo = _interopRequireWildcard(_foo, true); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-mixing/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-mixing/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/output.amd.js new file mode 100644 index 000000000000..ca24004583fc --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/output.amd.js @@ -0,0 +1,13 @@ +define([ + "require", + "exports", + "foo" +], function(require, exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + _foo = _interopRequireWildcard(_foo, true); + _foo.default; + _foo.baz; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/output.cjs new file mode 100644 index 000000000000..1f3982c6ed49 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/output.cjs @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +const _foo = _interopRequireWildcard(require("foo"), true); +_foo.default; +_foo.baz; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/output.umd.js new file mode 100644 index 000000000000..02b3dbd3c51b --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-mixing/output.umd.js @@ -0,0 +1,16 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports, require("foo")); + else if (typeof define === "function" && define.amd) define([ + "exports", + "foo" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}, global.foo); +})(this, function(exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + _foo = _interopRequireWildcard(_foo, true); + _foo.default; + _foo.baz; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-named/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-named/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-named/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-named/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-named/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-named/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-named/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-named/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-named/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-named/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-named/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-named/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-named/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-named/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-named/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-named/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-named/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-named/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-named/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-ordering/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-ordering/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/output.amd.js new file mode 100644 index 000000000000..62ce7d8b82a0 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/output.amd.js @@ -0,0 +1,14 @@ +define([ + "require", + "exports", + "./foo", + "./bar", + "./derp", + "./qux" +], function(require, exports, _foo, _bar, _derp, _qux) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + _bar = _bar; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/output.cjs new file mode 100644 index 000000000000..0ced927f8fe8 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/output.cjs @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +require("./foo"); +const _bar = require("./bar"); +require("./derp"); +const _qux = require("./qux"); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/output.umd.js new file mode 100644 index 000000000000..f9f2cf66bfc0 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports-ordering/output.umd.js @@ -0,0 +1,17 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports, require("./foo"), require("./bar"), require("./derp"), require("./qux")); + else if (typeof define === "function" && define.amd) define([ + "exports", + "./foo", + "./bar", + "./derp", + "./qux" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}, global.foo, global.bar, global.derp, global.qux); +})(this, function(exports, _foo, _bar, _derp, _qux) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + _bar = _bar; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/imports/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/overview/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/overview/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/output.amd.js new file mode 100644 index 000000000000..5875f496260f --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/output.amd.js @@ -0,0 +1,33 @@ +define([ + "require", + "exports", + "foo", + "foo-bar", + "./directory/foo-bar", + "foo2", + "foo3", + "foo4", + "foo5" +], function(require, exports, _foo, _fooBar, _fooBar1, _foo2, _foo3, _foo4, _foo5) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + test: ()=>test, + test2: ()=>test2 + }); + _foo2 = _foo2; + _foo3 = _interopRequireWildcard(_foo3, true); + var test; + var test2 = 5; + _foo4.bar; + _foo5.foo; + _foo2; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/output.cjs new file mode 100644 index 000000000000..1b4820dceca1 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/output.cjs @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.test2 = exports.test = void 0; +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + test: ()=>test, + test2: ()=>test2 +}); +require("foo"); +require("foo-bar"); +require("./directory/foo-bar"); +const _foo2 = require("foo2"); +const _foo3 = _interopRequireWildcard(require("foo3"), true); +const _foo4 = require("foo4"); +const _foo5 = require("foo5"); +var test; +var test2 = 5; +_foo4.bar; +_foo5.foo; +_foo2; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/output.umd.js new file mode 100644 index 000000000000..9f648d95b859 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/overview/output.umd.js @@ -0,0 +1,36 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports, require("foo"), require("foo-bar"), require("./directory/foo-bar"), require("foo2"), require("foo3"), require("foo4"), require("foo5")); + else if (typeof define === "function" && define.amd) define([ + "exports", + "foo", + "foo-bar", + "./directory/foo-bar", + "foo2", + "foo3", + "foo4", + "foo5" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}, global.foo, global.fooBar, global.fooBar, global.foo2, global.foo3, global.foo4, global.foo5); +})(this, function(exports, _foo, _fooBar, _fooBar1, _foo2, _foo3, _foo4, _foo5) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + test: ()=>test, + test2: ()=>test2 + }); + _foo2 = _foo2; + _foo3 = _interopRequireWildcard(_foo3, true); + var test; + var test2 = 5; + _foo4.bar; + _foo5.foo; + _foo2; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/remap/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/remap/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/remap/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/remap/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/remap/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/remap/module.json new file mode 100644 index 000000000000..2923d83b417c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/remap/module.json @@ -0,0 +1,3 @@ +{ + "importInterop": "node" +} \ No newline at end of file diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/remap/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/remap/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/remap/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/remap/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/remap/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/remap/output.cjs new file mode 100644 index 000000000000..286ef275c8b4 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/remap/output.cjs @@ -0,0 +1,32 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.test = exports.f = exports.e = exports.c = exports.a = void 0; +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + a: ()=>a, + c: ()=>b, + e: ()=>d, + f: ()=>d, + test: ()=>test +}); +var test = 2; +test = 5; +test++; +(function() { + var test = 2; + test = 3; + test++; +})(); +var a = 2; +a = 3; +var b = 2; +b = 3; +var d = 3; +d = 4; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/remap/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/remap/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/remap/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-node/remap/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/export-from/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/export-from/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/export-from/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/export-from/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/export-from/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/export-from/module.json similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/export-from/module.json rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/export-from/module.json diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/export-from/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/export-from/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/export-from/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/export-from/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/export-from/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/export-from/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/export-from/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/export-from/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/export-from/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/export-from/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/export-from/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/export-from/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-default-only/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-default-only/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-default-only/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-default-only/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-default-only/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-default-only/module.json similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-default-only/module.json rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-default-only/module.json diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-default-only/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-default-only/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-default-only/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-default-only/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-default-only/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-default-only/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-default-only/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-default-only/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-default-only/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-default-only/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-default-only/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-default-only/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-wildcard/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-wildcard/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-wildcard/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-wildcard/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-wildcard/module.json b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-wildcard/module.json similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-wildcard/module.json rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-wildcard/module.json diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-wildcard/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-wildcard/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-wildcard/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-wildcard/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-wildcard/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-wildcard/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-wildcard/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-wildcard/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-wildcard/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-wildcard/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/no-interop/import-wildcard/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-none/import-wildcard/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/input.js new file mode 100644 index 000000000000..c9776e87f237 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/input.js @@ -0,0 +1,6 @@ +// The fact that this exports both a normal default, and all of the names via +// re-export is an edge case that is important not to miss. See +// https://github.com/babel/babel/issues/8306 as an example. +import _default from "react"; +export default _default; +export * from "react"; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-all/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-all/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-all/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-all/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-all/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-all/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/input.js new file mode 100644 index 000000000000..c0279bb6cff9 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/input.js @@ -0,0 +1,3 @@ +export default (function () { + return "foo"; +})(); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/output.amd.js new file mode 100644 index 000000000000..11fe86cdebc7 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/output.amd.js @@ -0,0 +1,16 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true + }); + var _default = function() { + return "foo"; + }(); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-10/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-10/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/output.umd.js new file mode 100644 index 000000000000..503c431cc32c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/output.umd.js @@ -0,0 +1,19 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true + }); + var _default = function() { + return "foo"; + }(); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/input.js new file mode 100644 index 000000000000..8c9172656db7 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/input.js @@ -0,0 +1,3 @@ +export default new Cachier(); + +export function Cachier(databaseName) {} diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/output.amd.js new file mode 100644 index 000000000000..ca8cb0b3b6ee --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/output.amd.js @@ -0,0 +1,21 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + Cachier: ()=>Cachier, + default: ()=>_default + }); + var _default = new Cachier(); + function Cachier(databaseName) {} +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-11/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-11/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/output.umd.js new file mode 100644 index 000000000000..1d00d5db7f1c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/output.umd.js @@ -0,0 +1,24 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + Cachier: ()=>Cachier, + default: ()=>_default + }); + var _default = new Cachier(); + function Cachier(databaseName) {} +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/input.js new file mode 100644 index 000000000000..ff8b4c56321a --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/input.js @@ -0,0 +1 @@ +export default {}; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/output.amd.js new file mode 100644 index 000000000000..0819898574fc --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/output.amd.js @@ -0,0 +1,14 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true + }); + var _default = {}; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-2/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-2/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/output.umd.js new file mode 100644 index 000000000000..c435daab8dab --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/output.umd.js @@ -0,0 +1,17 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true + }); + var _default = {}; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/input.js new file mode 100644 index 000000000000..d6d1738de67e --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/input.js @@ -0,0 +1 @@ +export default []; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/output.amd.js new file mode 100644 index 000000000000..bf9534455217 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/output.amd.js @@ -0,0 +1,14 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true + }); + var _default = []; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-3/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-3/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/output.umd.js new file mode 100644 index 000000000000..d4bbb18aa232 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/output.umd.js @@ -0,0 +1,17 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true + }); + var _default = []; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/input.js new file mode 100644 index 000000000000..f7b318b3f637 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/input.js @@ -0,0 +1 @@ +export default foo; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/output.amd.js new file mode 100644 index 000000000000..10ec510642a4 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/output.amd.js @@ -0,0 +1,14 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true + }); + var _default = foo; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-4/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-4/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/output.umd.js new file mode 100644 index 000000000000..5f2c76f74b3c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/output.umd.js @@ -0,0 +1,17 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true + }); + var _default = foo; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/input.js new file mode 100644 index 000000000000..ea9b101e1c22 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/input.js @@ -0,0 +1 @@ +export default function () {} diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/output.amd.js new file mode 100644 index 000000000000..efa0e34a00b2 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/output.amd.js @@ -0,0 +1,14 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true + }); + function _default() {} +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-5/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-5/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/output.umd.js new file mode 100644 index 000000000000..bef3422103ff --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/output.umd.js @@ -0,0 +1,17 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true + }); + function _default() {} +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/input.js new file mode 100644 index 000000000000..a6e68e983892 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/input.js @@ -0,0 +1 @@ +export default class {} diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/output.amd.js new file mode 100644 index 000000000000..0ceec52f4dc1 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/output.amd.js @@ -0,0 +1,15 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true + }); + class _default { + } +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-6/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-6/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/output.umd.js new file mode 100644 index 000000000000..31a889e3783c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/output.umd.js @@ -0,0 +1,18 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true + }); + class _default { + } +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/input.js new file mode 100644 index 000000000000..386baca17315 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/input.js @@ -0,0 +1 @@ +export default function foo() {} diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/output.amd.js new file mode 100644 index 000000000000..031fb64eddeb --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/output.amd.js @@ -0,0 +1,14 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>foo, + enumerable: true + }); + function foo() {} +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-7/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-7/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/output.umd.js new file mode 100644 index 000000000000..43747ef1819c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/output.umd.js @@ -0,0 +1,17 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>foo, + enumerable: true + }); + function foo() {} +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/input.js new file mode 100644 index 000000000000..7804111002d7 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/input.js @@ -0,0 +1 @@ +export default class Foo {} diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/output.amd.js new file mode 100644 index 000000000000..510871f3c906 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/output.amd.js @@ -0,0 +1,15 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>Foo, + enumerable: true + }); + class Foo { + } +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-8/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-8/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/output.umd.js new file mode 100644 index 000000000000..02ee94a386ba --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/output.umd.js @@ -0,0 +1,18 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>Foo, + enumerable: true + }); + class Foo { + } +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/input.js new file mode 100644 index 000000000000..f52d2a90308e --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/input.js @@ -0,0 +1,2 @@ +var foo; +export { foo as default }; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/output.amd.js new file mode 100644 index 000000000000..e1f186c6312a --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/output.amd.js @@ -0,0 +1,14 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>foo, + enumerable: true + }); + var foo; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-9/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-9/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/output.umd.js new file mode 100644 index 000000000000..9228b25dc094 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/output.umd.js @@ -0,0 +1,17 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>foo, + enumerable: true + }); + var foo; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/input.js new file mode 100644 index 000000000000..7a4e8a723a40 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/input.js @@ -0,0 +1 @@ +export default 42; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/output.amd.js new file mode 100644 index 000000000000..021c462eeb3c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/output.amd.js @@ -0,0 +1,14 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true + }); + var _default = 42; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/output.umd.js new file mode 100644 index 000000000000..aee902a2c6e7 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/output.umd.js @@ -0,0 +1,17 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_default, + enumerable: true + }); + var _default = 42; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/input.js new file mode 100644 index 000000000000..bb4978ee76cd --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/input.js @@ -0,0 +1,18 @@ +export let x = 0; +export let y = 0; + +export function f1() { + ({ x } = { x: 1 }); +} + +export function f2() { + ({ x, y } = { x: 2, y: 3 }); +} + +export function f3() { + [x, y, z] = [3, 4, 5]; +} + +export function f4() { + [x, , y] = [3, 4, 5]; +} diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/output.amd.js new file mode 100644 index 000000000000..dfdcc420438d --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/output.amd.js @@ -0,0 +1,50 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + f1: ()=>f1, + f2: ()=>f2, + f3: ()=>f3, + f4: ()=>f4, + x: ()=>x, + y: ()=>y + }); + let x = 0; + let y = 0; + function f1() { + ({ x } = { + x: 1 + }); + } + function f2() { + ({ x , y } = { + x: 2, + y: 3 + }); + } + function f3() { + [x, y, z] = [ + 3, + 4, + 5 + ]; + } + function f4() { + [x, , y] = [ + 3, + 4, + 5 + ]; + } +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-destructured/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-destructured/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/output.umd.js new file mode 100644 index 000000000000..5ed1b183a9f1 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/output.umd.js @@ -0,0 +1,53 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + f1: ()=>f1, + f2: ()=>f2, + f3: ()=>f3, + f4: ()=>f4, + x: ()=>x, + y: ()=>y + }); + let x = 0; + let y = 0; + function f1() { + ({ x } = { + x: 1 + }); + } + function f2() { + ({ x , y } = { + x: 2, + y: 3 + }); + } + function f3() { + [x, y, z] = [ + 3, + 4, + 5 + ]; + } + function f4() { + [x, , y] = [ + 3, + 4, + 5 + ]; + } +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/input.js new file mode 100644 index 000000000000..9ec8f63ab2fd --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/input.js @@ -0,0 +1 @@ +export * from "foo"; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.amd.js new file mode 100644 index 000000000000..2e1b42564462 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.amd.js @@ -0,0 +1,11 @@ +define([ + "require", + "exports", + "foo" +], function(require, exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + _exportStar(_foo, exports); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.cjs new file mode 100644 index 000000000000..59c1df1a18a4 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.cjs @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +_exportStar(require("foo"), exports); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.umd.js new file mode 100644 index 000000000000..81a0ab21d127 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.umd.js @@ -0,0 +1,14 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports, require("foo")); + else if (typeof define === "function" && define.amd) define([ + "exports", + "foo" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}, global.foo); +})(this, function(exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + _exportStar(_foo, exports); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/input.js new file mode 100644 index 000000000000..d5296d83cd34 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/input.js @@ -0,0 +1 @@ +export { foo } from "foo"; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/output.amd.js new file mode 100644 index 000000000000..6313bf4a6e64 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/output.amd.js @@ -0,0 +1,14 @@ +define([ + "require", + "exports", + "foo" +], function(require, exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "foo", { + get: ()=>_foo.foo, + enumerable: true + }); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-2/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-2/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/output.umd.js new file mode 100644 index 000000000000..56bdfa8a97d1 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/output.umd.js @@ -0,0 +1,17 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports, require("foo")); + else if (typeof define === "function" && define.amd) define([ + "exports", + "foo" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}, global.foo); +})(this, function(exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "foo", { + get: ()=>_foo.foo, + enumerable: true + }); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/input.js new file mode 100644 index 000000000000..ca2bf4e4b832 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/input.js @@ -0,0 +1 @@ +export { bar, foo } from "foo"; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/output.amd.js new file mode 100644 index 000000000000..2947cadd8da3 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/output.amd.js @@ -0,0 +1,20 @@ +define([ + "require", + "exports", + "foo" +], function(require, exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + bar: ()=>_foo.bar, + foo: ()=>_foo.foo + }); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-3/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-3/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/output.umd.js new file mode 100644 index 000000000000..3351e1a30cb4 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/output.umd.js @@ -0,0 +1,23 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports, require("foo")); + else if (typeof define === "function" && define.amd) define([ + "exports", + "foo" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}, global.foo); +})(this, function(exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + bar: ()=>_foo.bar, + foo: ()=>_foo.foo + }); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/input.js new file mode 100644 index 000000000000..01da91b9e358 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/input.js @@ -0,0 +1 @@ +export { foo as bar } from "foo"; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/output.amd.js new file mode 100644 index 000000000000..de3a71674c5a --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/output.amd.js @@ -0,0 +1,14 @@ +define([ + "require", + "exports", + "foo" +], function(require, exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "bar", { + get: ()=>_foo.foo, + enumerable: true + }); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-4/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-4/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/output.umd.js new file mode 100644 index 000000000000..77ad92047bba --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/output.umd.js @@ -0,0 +1,17 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports, require("foo")); + else if (typeof define === "function" && define.amd) define([ + "exports", + "foo" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}, global.foo); +})(this, function(exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "bar", { + get: ()=>_foo.foo, + enumerable: true + }); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/input.js new file mode 100644 index 000000000000..d998b7340035 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/input.js @@ -0,0 +1 @@ +export { foo as default } from "foo"; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/output.amd.js new file mode 100644 index 000000000000..717706435f7f --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/output.amd.js @@ -0,0 +1,14 @@ +define([ + "require", + "exports", + "foo" +], function(require, exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_foo.foo, + enumerable: true + }); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-5/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-5/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/output.umd.js new file mode 100644 index 000000000000..e64415a70815 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/output.umd.js @@ -0,0 +1,17 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports, require("foo")); + else if (typeof define === "function" && define.amd) define([ + "exports", + "foo" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}, global.foo); +})(this, function(exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>_foo.foo, + enumerable: true + }); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/input.js new file mode 100644 index 000000000000..326896216fc0 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/input.js @@ -0,0 +1 @@ +export { bar, foo as default } from "foo"; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/output.amd.js new file mode 100644 index 000000000000..fa12d5352ba2 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/output.amd.js @@ -0,0 +1,20 @@ +define([ + "require", + "exports", + "foo" +], function(require, exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + bar: ()=>_foo.bar, + default: ()=>_foo.foo + }); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-6/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-6/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/output.umd.js new file mode 100644 index 000000000000..e899a3095462 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/output.umd.js @@ -0,0 +1,23 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports, require("foo")); + else if (typeof define === "function" && define.amd) define([ + "exports", + "foo" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}, global.foo); +})(this, function(exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + bar: ()=>_foo.bar, + default: ()=>_foo.foo + }); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/input.js new file mode 100644 index 000000000000..9e092bc2893e --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/input.js @@ -0,0 +1 @@ +export { default as foo } from "foo"; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-7/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-7/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-7/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-7/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-7/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-7/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/input.js new file mode 100644 index 000000000000..bf256e3a191b --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/input.js @@ -0,0 +1,206 @@ +import { + foo, + foo1, + foo10, + foo100, + foo11, + foo12, + foo13, + foo14, + foo15, + foo16, + foo17, + foo18, + foo19, + foo2, + foo20, + foo21, + foo22, + foo23, + foo24, + foo25, + foo26, + foo27, + foo28, + foo29, + foo3, + foo30, + foo31, + foo32, + foo33, + foo34, + foo35, + foo36, + foo37, + foo38, + foo39, + foo4, + foo40, + foo41, + foo42, + foo43, + foo44, + foo45, + foo46, + foo47, + foo48, + foo49, + foo5, + foo50, + foo51, + foo52, + foo53, + foo54, + foo55, + foo56, + foo57, + foo58, + foo59, + foo6, + foo60, + foo61, + foo62, + foo63, + foo64, + foo65, + foo66, + foo67, + foo68, + foo69, + foo7, + foo70, + foo71, + foo72, + foo73, + foo74, + foo75, + foo76, + foo77, + foo78, + foo79, + foo8, + foo80, + foo81, + foo82, + foo83, + foo84, + foo85, + foo86, + foo87, + foo88, + foo89, + foo9, + foo90, + foo91, + foo92, + foo93, + foo94, + foo95, + foo96, + foo97, + foo98, + foo99, +} from "foo"; +export { + foo, + foo1, + foo10, + foo100, + foo11, + foo12, + foo13, + foo14, + foo15, + foo16, + foo17, + foo18, + foo19, + foo2, + foo20, + foo21, + foo22, + foo23, + foo24, + foo25, + foo26, + foo27, + foo28, + foo29, + foo3, + foo30, + foo31, + foo32, + foo33, + foo34, + foo35, + foo36, + foo37, + foo38, + foo39, + foo4, + foo40, + foo41, + foo42, + foo43, + foo44, + foo45, + foo46, + foo47, + foo48, + foo49, + foo5, + foo50, + foo51, + foo52, + foo53, + foo54, + foo55, + foo56, + foo57, + foo58, + foo59, + foo6, + foo60, + foo61, + foo62, + foo63, + foo64, + foo65, + foo66, + foo67, + foo68, + foo69, + foo7, + foo70, + foo71, + foo72, + foo73, + foo74, + foo75, + foo76, + foo77, + foo78, + foo79, + foo8, + foo80, + foo81, + foo82, + foo83, + foo84, + foo85, + foo86, + foo87, + foo88, + foo89, + foo9, + foo90, + foo91, + foo92, + foo93, + foo94, + foo95, + foo96, + foo97, + foo98, + foo99, +}; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/output.amd.js new file mode 100644 index 000000000000..89a924e066fb --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/output.amd.js @@ -0,0 +1,119 @@ +define([ + "require", + "exports", + "foo" +], function(require, exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + foo: ()=>_foo.foo, + foo1: ()=>_foo.foo1, + foo10: ()=>_foo.foo10, + foo100: ()=>_foo.foo100, + foo11: ()=>_foo.foo11, + foo12: ()=>_foo.foo12, + foo13: ()=>_foo.foo13, + foo14: ()=>_foo.foo14, + foo15: ()=>_foo.foo15, + foo16: ()=>_foo.foo16, + foo17: ()=>_foo.foo17, + foo18: ()=>_foo.foo18, + foo19: ()=>_foo.foo19, + foo2: ()=>_foo.foo2, + foo20: ()=>_foo.foo20, + foo21: ()=>_foo.foo21, + foo22: ()=>_foo.foo22, + foo23: ()=>_foo.foo23, + foo24: ()=>_foo.foo24, + foo25: ()=>_foo.foo25, + foo26: ()=>_foo.foo26, + foo27: ()=>_foo.foo27, + foo28: ()=>_foo.foo28, + foo29: ()=>_foo.foo29, + foo3: ()=>_foo.foo3, + foo30: ()=>_foo.foo30, + foo31: ()=>_foo.foo31, + foo32: ()=>_foo.foo32, + foo33: ()=>_foo.foo33, + foo34: ()=>_foo.foo34, + foo35: ()=>_foo.foo35, + foo36: ()=>_foo.foo36, + foo37: ()=>_foo.foo37, + foo38: ()=>_foo.foo38, + foo39: ()=>_foo.foo39, + foo4: ()=>_foo.foo4, + foo40: ()=>_foo.foo40, + foo41: ()=>_foo.foo41, + foo42: ()=>_foo.foo42, + foo43: ()=>_foo.foo43, + foo44: ()=>_foo.foo44, + foo45: ()=>_foo.foo45, + foo46: ()=>_foo.foo46, + foo47: ()=>_foo.foo47, + foo48: ()=>_foo.foo48, + foo49: ()=>_foo.foo49, + foo5: ()=>_foo.foo5, + foo50: ()=>_foo.foo50, + foo51: ()=>_foo.foo51, + foo52: ()=>_foo.foo52, + foo53: ()=>_foo.foo53, + foo54: ()=>_foo.foo54, + foo55: ()=>_foo.foo55, + foo56: ()=>_foo.foo56, + foo57: ()=>_foo.foo57, + foo58: ()=>_foo.foo58, + foo59: ()=>_foo.foo59, + foo6: ()=>_foo.foo6, + foo60: ()=>_foo.foo60, + foo61: ()=>_foo.foo61, + foo62: ()=>_foo.foo62, + foo63: ()=>_foo.foo63, + foo64: ()=>_foo.foo64, + foo65: ()=>_foo.foo65, + foo66: ()=>_foo.foo66, + foo67: ()=>_foo.foo67, + foo68: ()=>_foo.foo68, + foo69: ()=>_foo.foo69, + foo7: ()=>_foo.foo7, + foo70: ()=>_foo.foo70, + foo71: ()=>_foo.foo71, + foo72: ()=>_foo.foo72, + foo73: ()=>_foo.foo73, + foo74: ()=>_foo.foo74, + foo75: ()=>_foo.foo75, + foo76: ()=>_foo.foo76, + foo77: ()=>_foo.foo77, + foo78: ()=>_foo.foo78, + foo79: ()=>_foo.foo79, + foo8: ()=>_foo.foo8, + foo80: ()=>_foo.foo80, + foo81: ()=>_foo.foo81, + foo82: ()=>_foo.foo82, + foo83: ()=>_foo.foo83, + foo84: ()=>_foo.foo84, + foo85: ()=>_foo.foo85, + foo86: ()=>_foo.foo86, + foo87: ()=>_foo.foo87, + foo88: ()=>_foo.foo88, + foo89: ()=>_foo.foo89, + foo9: ()=>_foo.foo9, + foo90: ()=>_foo.foo90, + foo91: ()=>_foo.foo91, + foo92: ()=>_foo.foo92, + foo93: ()=>_foo.foo93, + foo94: ()=>_foo.foo94, + foo95: ()=>_foo.foo95, + foo96: ()=>_foo.foo96, + foo97: ()=>_foo.foo97, + foo98: ()=>_foo.foo98, + foo99: ()=>_foo.foo99 + }); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-8/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-8/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/output.umd.js new file mode 100644 index 000000000000..2f8c72af2877 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/output.umd.js @@ -0,0 +1,122 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports, require("foo")); + else if (typeof define === "function" && define.amd) define([ + "exports", + "foo" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}, global.foo); +})(this, function(exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + foo: ()=>_foo.foo, + foo1: ()=>_foo.foo1, + foo10: ()=>_foo.foo10, + foo100: ()=>_foo.foo100, + foo11: ()=>_foo.foo11, + foo12: ()=>_foo.foo12, + foo13: ()=>_foo.foo13, + foo14: ()=>_foo.foo14, + foo15: ()=>_foo.foo15, + foo16: ()=>_foo.foo16, + foo17: ()=>_foo.foo17, + foo18: ()=>_foo.foo18, + foo19: ()=>_foo.foo19, + foo2: ()=>_foo.foo2, + foo20: ()=>_foo.foo20, + foo21: ()=>_foo.foo21, + foo22: ()=>_foo.foo22, + foo23: ()=>_foo.foo23, + foo24: ()=>_foo.foo24, + foo25: ()=>_foo.foo25, + foo26: ()=>_foo.foo26, + foo27: ()=>_foo.foo27, + foo28: ()=>_foo.foo28, + foo29: ()=>_foo.foo29, + foo3: ()=>_foo.foo3, + foo30: ()=>_foo.foo30, + foo31: ()=>_foo.foo31, + foo32: ()=>_foo.foo32, + foo33: ()=>_foo.foo33, + foo34: ()=>_foo.foo34, + foo35: ()=>_foo.foo35, + foo36: ()=>_foo.foo36, + foo37: ()=>_foo.foo37, + foo38: ()=>_foo.foo38, + foo39: ()=>_foo.foo39, + foo4: ()=>_foo.foo4, + foo40: ()=>_foo.foo40, + foo41: ()=>_foo.foo41, + foo42: ()=>_foo.foo42, + foo43: ()=>_foo.foo43, + foo44: ()=>_foo.foo44, + foo45: ()=>_foo.foo45, + foo46: ()=>_foo.foo46, + foo47: ()=>_foo.foo47, + foo48: ()=>_foo.foo48, + foo49: ()=>_foo.foo49, + foo5: ()=>_foo.foo5, + foo50: ()=>_foo.foo50, + foo51: ()=>_foo.foo51, + foo52: ()=>_foo.foo52, + foo53: ()=>_foo.foo53, + foo54: ()=>_foo.foo54, + foo55: ()=>_foo.foo55, + foo56: ()=>_foo.foo56, + foo57: ()=>_foo.foo57, + foo58: ()=>_foo.foo58, + foo59: ()=>_foo.foo59, + foo6: ()=>_foo.foo6, + foo60: ()=>_foo.foo60, + foo61: ()=>_foo.foo61, + foo62: ()=>_foo.foo62, + foo63: ()=>_foo.foo63, + foo64: ()=>_foo.foo64, + foo65: ()=>_foo.foo65, + foo66: ()=>_foo.foo66, + foo67: ()=>_foo.foo67, + foo68: ()=>_foo.foo68, + foo69: ()=>_foo.foo69, + foo7: ()=>_foo.foo7, + foo70: ()=>_foo.foo70, + foo71: ()=>_foo.foo71, + foo72: ()=>_foo.foo72, + foo73: ()=>_foo.foo73, + foo74: ()=>_foo.foo74, + foo75: ()=>_foo.foo75, + foo76: ()=>_foo.foo76, + foo77: ()=>_foo.foo77, + foo78: ()=>_foo.foo78, + foo79: ()=>_foo.foo79, + foo8: ()=>_foo.foo8, + foo80: ()=>_foo.foo80, + foo81: ()=>_foo.foo81, + foo82: ()=>_foo.foo82, + foo83: ()=>_foo.foo83, + foo84: ()=>_foo.foo84, + foo85: ()=>_foo.foo85, + foo86: ()=>_foo.foo86, + foo87: ()=>_foo.foo87, + foo88: ()=>_foo.foo88, + foo89: ()=>_foo.foo89, + foo9: ()=>_foo.foo9, + foo90: ()=>_foo.foo90, + foo91: ()=>_foo.foo91, + foo92: ()=>_foo.foo92, + foo93: ()=>_foo.foo93, + foo94: ()=>_foo.foo94, + foo95: ()=>_foo.foo95, + foo96: ()=>_foo.foo96, + foo97: ()=>_foo.foo97, + foo98: ()=>_foo.foo98, + foo99: ()=>_foo.foo99 + }); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/input.js new file mode 100644 index 000000000000..c87700dd666d --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/input.js @@ -0,0 +1,2 @@ +var foo; +export { foo }; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/output.amd.js new file mode 100644 index 000000000000..4e41599ea2d8 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/output.amd.js @@ -0,0 +1,14 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "foo", { + get: ()=>foo, + enumerable: true + }); + var foo; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-1/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-1/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/output.umd.js new file mode 100644 index 000000000000..9389b665075a --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/output.umd.js @@ -0,0 +1,17 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "foo", { + get: ()=>foo, + enumerable: true + }); + var foo; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/input.js new file mode 100644 index 000000000000..d65163a2cb00 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/input.js @@ -0,0 +1,2 @@ +var foo, bar; +export { bar, foo }; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/output.amd.js new file mode 100644 index 000000000000..66f332554285 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/output.amd.js @@ -0,0 +1,20 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + bar: ()=>bar, + foo: ()=>foo + }); + var foo, bar; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-2/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-2/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/output.umd.js new file mode 100644 index 000000000000..4683a3ab21cd --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/output.umd.js @@ -0,0 +1,23 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + bar: ()=>bar, + foo: ()=>foo + }); + var foo, bar; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/input.js new file mode 100644 index 000000000000..4d05fa005de5 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/input.js @@ -0,0 +1,2 @@ +var foo; +export { foo as bar }; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/output.amd.js new file mode 100644 index 000000000000..a7495229ed12 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/output.amd.js @@ -0,0 +1,14 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "bar", { + get: ()=>foo, + enumerable: true + }); + var foo; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-3/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-3/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/output.umd.js new file mode 100644 index 000000000000..6eea32160987 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/output.umd.js @@ -0,0 +1,17 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "bar", { + get: ()=>foo, + enumerable: true + }); + var foo; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/input.js new file mode 100644 index 000000000000..f52d2a90308e --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/input.js @@ -0,0 +1,2 @@ +var foo; +export { foo as default }; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/output.amd.js new file mode 100644 index 000000000000..e1f186c6312a --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/output.amd.js @@ -0,0 +1,14 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>foo, + enumerable: true + }); + var foo; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-4/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-4/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/output.umd.js new file mode 100644 index 000000000000..9228b25dc094 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/output.umd.js @@ -0,0 +1,17 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "default", { + get: ()=>foo, + enumerable: true + }); + var foo; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/input.js new file mode 100644 index 000000000000..93be378132f1 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/input.js @@ -0,0 +1,2 @@ +var foo, bar; +export { bar, foo as default }; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/output.amd.js new file mode 100644 index 000000000000..8e4b61e0b935 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/output.amd.js @@ -0,0 +1,20 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + bar: ()=>bar, + default: ()=>foo + }); + var foo, bar; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-5/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-5/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/output.umd.js new file mode 100644 index 000000000000..48d4e8d79ac7 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/output.umd.js @@ -0,0 +1,23 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + bar: ()=>bar, + default: ()=>foo + }); + var foo, bar; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/input.js new file mode 100644 index 000000000000..0e3bfeb8a532 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/input.js @@ -0,0 +1,9 @@ +export var foo = 1; +export var foo2 = 1, bar = 2; +export var foo3 = function () {}; +export var foo4; +export let foo5 = 2; +export let foo6; +export const foo7 = 3; +export function foo8() {} +export class foo9 {} diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/output.amd.js new file mode 100644 index 000000000000..0ddf61d8f98d --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/output.amd.js @@ -0,0 +1,37 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + bar: ()=>bar, + foo: ()=>foo, + foo2: ()=>foo2, + foo3: ()=>foo3, + foo4: ()=>foo4, + foo5: ()=>foo5, + foo6: ()=>foo6, + foo7: ()=>foo7, + foo8: ()=>foo8, + foo9: ()=>foo9 + }); + var foo = 1; + var foo2 = 1, bar = 2; + var foo3 = function() {}; + var foo4; + let foo5 = 2; + let foo6; + const foo7 = 3; + function foo8() {} + class foo9 { + } +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/exports-variable/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/exports-variable/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/output.umd.js new file mode 100644 index 000000000000..9bb41d04c7d5 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/output.umd.js @@ -0,0 +1,40 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + bar: ()=>bar, + foo: ()=>foo, + foo2: ()=>foo2, + foo3: ()=>foo3, + foo4: ()=>foo4, + foo5: ()=>foo5, + foo6: ()=>foo6, + foo7: ()=>foo7, + foo8: ()=>foo8, + foo9: ()=>foo9 + }); + var foo = 1; + var foo2 = 1, bar = 2; + var foo3 = function() {}; + var foo4; + let foo5 = 2; + let foo6; + const foo7 = 3; + function foo8() {} + class foo9 { + } +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/input.js new file mode 100644 index 000000000000..3e38b8aa1947 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/input.js @@ -0,0 +1,11 @@ +import { isEven } from "./evens"; + +export function nextOdd(n) { + return isEven(n) ? n + 1 : n + 2; +} + +export var isOdd = (function (isEven) { + return function (n) { + return !isEven(n); + }; +})(isEven); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/output.amd.js new file mode 100644 index 000000000000..9d078c9bc465 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/output.amd.js @@ -0,0 +1,28 @@ +define([ + "require", + "exports", + "./evens" +], function(require, exports, _evens) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + isOdd: ()=>isOdd, + nextOdd: ()=>nextOdd + }); + function nextOdd(n) { + return (0, _evens.isEven)(n) ? n + 1 : n + 2; + } + var isOdd = function(isEven) { + return function(n) { + return !isEven(n); + }; + }(_evens.isEven); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/hoist-function-exports/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/hoist-function-exports/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/output.umd.js new file mode 100644 index 000000000000..e799113cd56e --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/output.umd.js @@ -0,0 +1,31 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports, require("./evens")); + else if (typeof define === "function" && define.amd) define([ + "exports", + "./evens" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}, global.evens); +})(this, function(exports, _evens) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + isOdd: ()=>isOdd, + nextOdd: ()=>nextOdd + }); + function nextOdd(n) { + return (0, _evens.isEven)(n) ? n + 1 : n + 2; + } + var isOdd = function(isEven) { + return function(n) { + return !isEven(n); + }; + }(_evens.isEven); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/input.js new file mode 100644 index 000000000000..ed26d97f2583 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/input.js @@ -0,0 +1,5 @@ +import foo from "foo"; +import { default as foo2 } from "foo"; + +foo; +foo2; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-default/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-default/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-default/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-default/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-default/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-default/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/input.js new file mode 100644 index 000000000000..e55c0775003b --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/input.js @@ -0,0 +1 @@ +import * as foo from "foo"; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-glob/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-glob/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-glob/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-glob/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-glob/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-glob/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/input.js new file mode 100644 index 000000000000..307db99257e6 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/input.js @@ -0,0 +1,4 @@ +import foo, { baz as xyz } from "foo"; + +foo; +xyz; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-mixing/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-mixing/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-mixing/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-mixing/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-mixing/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-mixing/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/input.js new file mode 100644 index 000000000000..01900566f695 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/input.js @@ -0,0 +1,11 @@ +import { bar } from "foo"; +import { bar2, baz } from "foo"; +import { bar as baz2 } from "foo"; +import { bar as baz3, xyz } from "foo"; + +bar; +bar2; +baz; +baz2; +baz3; +xyz; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.amd.js new file mode 100644 index 000000000000..46d4272c3634 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.amd.js @@ -0,0 +1,16 @@ +define([ + "require", + "exports", + "foo" +], function(require, exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + _foo.bar; + _foo.bar2; + _foo.baz; + _foo.bar; + _foo.bar; + _foo.xyz; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.cjs new file mode 100644 index 000000000000..fe7cf14ec8bb --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.cjs @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +const _foo = require("foo"); +_foo.bar; +_foo.bar2; +_foo.baz; +_foo.bar; +_foo.bar; +_foo.xyz; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.umd.js new file mode 100644 index 000000000000..2c43045680cb --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.umd.js @@ -0,0 +1,19 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports, require("foo")); + else if (typeof define === "function" && define.amd) define([ + "exports", + "foo" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}, global.foo); +})(this, function(exports, _foo) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + _foo.bar; + _foo.bar2; + _foo.baz; + _foo.bar; + _foo.bar; + _foo.xyz; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/input.js new file mode 100644 index 000000000000..d89ed3d87820 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/input.js @@ -0,0 +1,4 @@ +import "./foo"; +import bar from "./bar"; +import "./derp"; +import { qux } from "./qux"; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-ordering/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-ordering/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-ordering/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-ordering/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-ordering/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-ordering/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/input.js new file mode 100644 index 000000000000..222b6885ac84 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/input.js @@ -0,0 +1,3 @@ +import "foo"; +import "foo-bar"; +import "./directory/foo-bar"; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.amd.js new file mode 100644 index 000000000000..807a00789434 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.amd.js @@ -0,0 +1,12 @@ +define([ + "require", + "exports", + "foo", + "foo-bar", + "./directory/foo-bar" +], function(require, exports, _foo, _fooBar, _fooBar1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.cjs new file mode 100644 index 000000000000..54dbaf082e7c --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.cjs @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +require("foo"); +require("foo-bar"); +require("./directory/foo-bar"); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.umd.js new file mode 100644 index 000000000000..7ab5cfbdfd89 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.umd.js @@ -0,0 +1,15 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports, require("foo"), require("foo-bar"), require("./directory/foo-bar")); + else if (typeof define === "function" && define.amd) define([ + "exports", + "foo", + "foo-bar", + "./directory/foo-bar" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}, global.foo, global.fooBar, global.fooBar); +})(this, function(exports, _foo, _fooBar, _fooBar1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/input.js new file mode 100644 index 000000000000..afb183fef5de --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/input.js @@ -0,0 +1,15 @@ +import "foo"; +import "foo-bar"; +import "./directory/foo-bar"; +import foo from "foo2"; +import * as foo2 from "foo3"; +import { bar } from "foo4"; +import { foo as bar2 } from "foo5"; + +var test; +export { test }; +export var test2 = 5; + +bar; +bar2; +foo; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/overview/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/overview/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/overview/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/overview/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/overview/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/overview/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/input.js new file mode 100644 index 000000000000..5031e9d4b752 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/input.js @@ -0,0 +1,21 @@ +export var test = 2; +test = 5; +test++; + +(function () { + var test = 2; + test = 3; + test++; +})(); + +var a = 2; +export { a }; +a = 3; + +var b = 2; +export { b as c }; +b = 3; + +var d = 3; +export { d as e, d as f }; +d = 4; diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/output.amd.js new file mode 100644 index 000000000000..d31e145f0781 --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/output.amd.js @@ -0,0 +1,36 @@ +define([ + "require", + "exports" +], function(require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + a: ()=>a, + c: ()=>b, + e: ()=>d, + f: ()=>d, + test: ()=>test + }); + var test = 2; + test = 5; + test++; + (function() { + var test = 2; + test = 3; + test++; + })(); + var a = 2; + a = 3; + var b = 2; + b = 3; + var d = 3; + d = 4; +}); diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop/remap/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop/remap/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/output.umd.js new file mode 100644 index 000000000000..0704bfa857fe --- /dev/null +++ b/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/output.umd.js @@ -0,0 +1,39 @@ +(function(global, factory) { + if (typeof module === "object" && typeof module.exports === "object") factory(exports); + else if (typeof define === "function" && define.amd) define([ + "exports" + ], factory); + else if (global = typeof globalThis !== "undefined" ? globalThis : global || self) factory(global.input = {}); +})(this, function(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); + } + _export(exports, { + a: ()=>a, + c: ()=>b, + e: ()=>d, + f: ()=>d, + test: ()=>test + }); + var test = 2; + test = 5; + test++; + (function() { + var test = 2; + test = 3; + test++; + })(); + var a = 2; + a = 3; + var b = 2; + b = 3; + var d = 3; + d = 4; +}); diff --git a/crates/swc_ecma_transforms_optimization/tests/simplify.rs b/crates/swc_ecma_transforms_optimization/tests/simplify.rs index d961984f3c2d..087128f63514 100644 --- a/crates/swc_ecma_transforms_optimization/tests/simplify.rs +++ b/crates/swc_ecma_transforms_optimization/tests/simplify.rs @@ -580,7 +580,7 @@ test!( Default::default() ), es3(true), - import_analyzer(false, false), + import_analyzer(false.into(), false), inject_helpers(), common_js( Mark::fresh(Mark::root()), diff --git a/node-swc/__tests__/transform/interop.mjs b/node-swc/__tests__/transform/interop.mjs new file mode 100644 index 000000000000..c4a85d52068b --- /dev/null +++ b/node-swc/__tests__/transform/interop.mjs @@ -0,0 +1,313 @@ +import swc from "../../.."; + +const source = `import foo from "foo"; +import bar, { baz } from "bar"; + +export const x = { foo, bar }; +export const y = baz; +export default { + x, + y, +}; +`; + +it("should support importInterop: swc", async () => { + const { code } = await swc.transform(source, { + jsc: { + parser: { + syntax: "ecmascript", + }, + target: "es2020", + }, + module: { + type: "commonjs", + importInterop: "swc", + }, + }); + expect(code).toMatchInlineSnapshot(` +"\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { + value: true +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + default: ()=>_default, + x: ()=>x, + y: ()=>y +}); +const _foo = _interopRequireDefault(require(\\"foo\\")); +const _bar = _interopRequireWildcard(require(\\"bar\\")); +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; +} +function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== \\"function\\") return null; + var cacheBabelInterop = new WeakMap(); + var cacheNodeInterop = new WeakMap(); + return (_getRequireWildcardCache = function(nodeInterop) { + return nodeInterop ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); +} +function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) { + return obj; + } + if (obj === null || typeof obj !== \\"object\\" && typeof obj !== \\"function\\") { + return { + default: obj + }; + } + var cache = _getRequireWildcardCache(nodeInterop); + if (cache && cache.has(obj)) { + return cache.get(obj); + } + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for(var key in obj){ + if (key !== \\"default\\" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + if (desc && (desc.get || desc.set)) { + Object.defineProperty(newObj, key, desc); + } else { + newObj[key] = obj[key]; + } + } + } + newObj.default = obj; + if (cache) { + cache.set(obj, newObj); + } + return newObj; +} +const x = { + foo: _foo.default, + bar: _bar.default +}; +const y = _bar.baz; +var _default = { + x, + y +}; +" +`); +}); + +it("should support importInterop: babel", async () => { + const { code } = await swc.transform(source, { + jsc: { + parser: { + syntax: "ecmascript", + }, + target: "es2020", + }, + module: { + type: "commonjs", + importInterop: "babel", + }, + }); + expect(code).toMatchInlineSnapshot(` +"\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { + value: true +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + default: ()=>_default, + x: ()=>x, + y: ()=>y +}); +const _foo = _interopRequireDefault(require(\\"foo\\")); +const _bar = _interopRequireWildcard(require(\\"bar\\")); +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; +} +function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== \\"function\\") return null; + var cacheBabelInterop = new WeakMap(); + var cacheNodeInterop = new WeakMap(); + return (_getRequireWildcardCache = function(nodeInterop) { + return nodeInterop ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); +} +function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) { + return obj; + } + if (obj === null || typeof obj !== \\"object\\" && typeof obj !== \\"function\\") { + return { + default: obj + }; + } + var cache = _getRequireWildcardCache(nodeInterop); + if (cache && cache.has(obj)) { + return cache.get(obj); + } + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for(var key in obj){ + if (key !== \\"default\\" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + if (desc && (desc.get || desc.set)) { + Object.defineProperty(newObj, key, desc); + } else { + newObj[key] = obj[key]; + } + } + } + newObj.default = obj; + if (cache) { + cache.set(obj, newObj); + } + return newObj; +} +const x = { + foo: _foo.default, + bar: _bar.default +}; +const y = _bar.baz; +var _default = { + x, + y +}; +" +`); +}); + +it("should support importInterop: node", async () => { + const { code } = await swc.transform(source, { + jsc: { + parser: { + syntax: "ecmascript", + }, + target: "es2020", + }, + module: { + type: "commonjs", + importInterop: "node", + }, + }); + expect(code).toMatchInlineSnapshot(` +"\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { + value: true +}); +exports.y = exports.x = exports.default = void 0; +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + default: ()=>_default, + x: ()=>x, + y: ()=>y +}); +const _foo = require(\\"foo\\"); +const _bar = _interopRequireWildcard(require(\\"bar\\"), true); +function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== \\"function\\") return null; + var cacheBabelInterop = new WeakMap(); + var cacheNodeInterop = new WeakMap(); + return (_getRequireWildcardCache = function(nodeInterop) { + return nodeInterop ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); +} +function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) { + return obj; + } + if (obj === null || typeof obj !== \\"object\\" && typeof obj !== \\"function\\") { + return { + default: obj + }; + } + var cache = _getRequireWildcardCache(nodeInterop); + if (cache && cache.has(obj)) { + return cache.get(obj); + } + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for(var key in obj){ + if (key !== \\"default\\" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + if (desc && (desc.get || desc.set)) { + Object.defineProperty(newObj, key, desc); + } else { + newObj[key] = obj[key]; + } + } + } + newObj.default = obj; + if (cache) { + cache.set(obj, newObj); + } + return newObj; +} +const x = { + foo: _foo, + bar: _bar.default +}; +const y = _bar.baz; +var _default = { + x, + y +}; +" +`); +}); + +it("should support importInterop: none", async () => { + const { code } = await swc.transform(source, { + jsc: { + parser: { + syntax: "ecmascript", + }, + target: "es2020", + }, + module: { + type: "commonjs", + importInterop: "none", + }, + }); + expect(code).toMatchInlineSnapshot(` +"\\"use strict\\"; +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + default: ()=>_default, + x: ()=>x, + y: ()=>y +}); +const _foo = require(\\"foo\\"); +const _bar = require(\\"bar\\"); +const x = { + foo: _foo.default, + bar: _bar.default +}; +const y = _bar.baz; +var _default = { + x, + y +}; +" +`); +}); diff --git a/node-swc/src/types.ts b/node-swc/src/types.ts index 04f829d49b97..3212e29e59e3 100644 --- a/node-swc/src/types.ts +++ b/node-swc/src/types.ts @@ -949,6 +949,8 @@ export interface BaseModuleConfig { */ lazy?: boolean | string[]; /** + * @deprecated Use the `importInterop` option instead. + * * By default, when using exports with swc a non-enumerable __esModule property is exported. * This property is then used to determine if the import is the default export or if * it contains the default export. @@ -959,6 +961,93 @@ export interface BaseModuleConfig { * Defaults to `false`. */ noInterop?: boolean; + /** + * Defaults to `swc`. + * + * CommonJS modules and ECMAScript modules are not fully compatible. + * However, compilers, bundlers and JavaScript runtimes developed different strategies + * to make them work together as well as possible. + * + * - `swc` (alias: `babel`) + * + * When using exports with `swc` a non-enumerable `__esModule` property is exported + * This property is then used to determine if the import is the default export + * or if it contains the default export. + * + * ```javascript + * import foo from "foo"; + * import { bar } from "bar"; + * foo; + * bar; + * + * // Is compiled to ... + * + * "use strict"; + * + * function _interopRequireDefault(obj) { + * return obj && obj.__esModule ? obj : { default: obj }; + * } + * + * var _foo = _interopRequireDefault(require("foo")); + * var _bar = require("bar"); + * + * _foo.default; + * _bar.bar; + * ``` + * + * When this import interop is used, if both the imported and the importer module are compiled + * with swc they behave as if none of them was compiled. + * + * This is the default behavior. + * + * - `node` + * + * When importing CommonJS files (either directly written in CommonJS, or generated with a compiler) + * Node.js always binds the `default` export to the value of `module.exports`. + * + * ```javascript + * import foo from "foo"; + * import { bar } from "bar"; + * foo; + * bar; + * + * // Is compiled to ... + * + * "use strict"; + * + * var _foo = require("foo"); + * var _bar = require("bar"); + * + * _foo; + * _bar.bar; + * ``` + * This is not exactly the same as what Node.js does since swc allows accessing any property of `module.exports` + * as a named export, while Node.js only allows importing statically analyzable properties of `module.exports`. + * However, any import working in Node.js will also work when compiled with swc using `importInterop: "node"`. + * + * - `none` + * + * If you know that the imported file has been transformed with a compiler that stores the `default` export on + * `exports.default` (such as swc or Babel), you can safely omit the `_interopRequireDefault` helper. + * + * ```javascript + * import foo from "foo"; + * import { bar } from "bar"; + * foo; + * bar; + * + * // Is compiled to ... + * + * "use strict"; + * + * var _foo = require("foo"); + * var _bar = require("bar"); + * + * _foo.default; + * _bar.bar; + * ``` + */ + importInterop?: "swc" | "babel" | "node" | "none"; /** * If set to true, dynamic imports will be preserved. */ diff --git a/packages/swc-helpers/src/_interop_require_wildcard.mjs b/packages/swc-helpers/src/_interop_require_wildcard.mjs index a81c1e4f5ca6..22c135944b83 100644 --- a/packages/swc-helpers/src/_interop_require_wildcard.mjs +++ b/packages/swc-helpers/src/_interop_require_wildcard.mjs @@ -1,28 +1,31 @@ -function _getRequireWildcardCache() { +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; - var cache = new WeakMap(); - _getRequireWildcardCache = function () { return cache; }; - return cache; + + var cacheBabelInterop = new WeakMap(); + var cacheNodeInterop = new WeakMap(); + return (_getRequireWildcardCache = function (nodeInterop) { + return nodeInterop ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); } -export default function _interopRequireWildcard(obj) { - if (obj && obj.__esModule) { + +export default function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) { return obj; } - + if (obj === null || (typeof obj !== "object" && typeof obj !== "function")) { return { default: obj } } - - var cache = _getRequireWildcardCache(); + + var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; - var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) { + if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; From 630b5b35e9433441b52953579e3e740b6f86970a Mon Sep 17 00:00:00 2001 From: magic-akari Date: Thu, 30 Jun 2022 10:24:20 +0800 Subject: [PATCH 2/4] chore: restore rename --- .../fixture/common/{interop-swc => interop}/export-all/input.js | 0 .../common/{interop-swc => interop}/export-all/output.amd.js | 0 .../fixture/common/{interop-swc => interop}/export-all/output.cjs | 0 .../common/{interop-swc => interop}/export-all/output.umd.js | 0 .../common/{interop-swc => interop}/export-default-10/input.js | 0 .../{interop-swc => interop}/export-default-10/output.amd.js | 0 .../common/{interop-swc => interop}/export-default-10/output.cjs | 0 .../{interop-swc => interop}/export-default-10/output.umd.js | 0 .../common/{interop-swc => interop}/export-default-11/input.js | 0 .../{interop-swc => interop}/export-default-11/output.amd.js | 0 .../common/{interop-swc => interop}/export-default-11/output.cjs | 0 .../{interop-swc => interop}/export-default-11/output.umd.js | 0 .../common/{interop-swc => interop}/export-default-2/input.js | 0 .../{interop-swc => interop}/export-default-2/output.amd.js | 0 .../common/{interop-swc => interop}/export-default-2/output.cjs | 0 .../{interop-swc => interop}/export-default-2/output.umd.js | 0 .../common/{interop-swc => interop}/export-default-3/input.js | 0 .../{interop-swc => interop}/export-default-3/output.amd.js | 0 .../common/{interop-swc => interop}/export-default-3/output.cjs | 0 .../{interop-swc => interop}/export-default-3/output.umd.js | 0 .../common/{interop-swc => interop}/export-default-4/input.js | 0 .../{interop-swc => interop}/export-default-4/output.amd.js | 0 .../common/{interop-swc => interop}/export-default-4/output.cjs | 0 .../{interop-swc => interop}/export-default-4/output.umd.js | 0 .../common/{interop-swc => interop}/export-default-5/input.js | 0 .../{interop-swc => interop}/export-default-5/output.amd.js | 0 .../common/{interop-swc => interop}/export-default-5/output.cjs | 0 .../{interop-swc => interop}/export-default-5/output.umd.js | 0 .../common/{interop-swc => interop}/export-default-6/input.js | 0 .../{interop-swc => interop}/export-default-6/output.amd.js | 0 .../common/{interop-swc => interop}/export-default-6/output.cjs | 0 .../{interop-swc => interop}/export-default-6/output.umd.js | 0 .../common/{interop-swc => interop}/export-default-7/input.js | 0 .../{interop-swc => interop}/export-default-7/output.amd.js | 0 .../common/{interop-swc => interop}/export-default-7/output.cjs | 0 .../{interop-swc => interop}/export-default-7/output.umd.js | 0 .../common/{interop-swc => interop}/export-default-8/input.js | 0 .../{interop-swc => interop}/export-default-8/output.amd.js | 0 .../common/{interop-swc => interop}/export-default-8/output.cjs | 0 .../{interop-swc => interop}/export-default-8/output.umd.js | 0 .../common/{interop-swc => interop}/export-default-9/input.js | 0 .../{interop-swc => interop}/export-default-9/output.amd.js | 0 .../common/{interop-swc => interop}/export-default-9/output.cjs | 0 .../{interop-swc => interop}/export-default-9/output.umd.js | 0 .../common/{interop-swc => interop}/export-default/input.js | 0 .../common/{interop-swc => interop}/export-default/output.amd.js | 0 .../common/{interop-swc => interop}/export-default/output.cjs | 0 .../common/{interop-swc => interop}/export-default/output.umd.js | 0 .../common/{interop-swc => interop}/export-destructured/input.js | 0 .../{interop-swc => interop}/export-destructured/output.amd.js | 0 .../{interop-swc => interop}/export-destructured/output.cjs | 0 .../{interop-swc => interop}/export-destructured/output.umd.js | 0 .../common/{interop-swc => interop}/export-from-1/input.js | 0 .../common/{interop-swc => interop}/export-from-1/output.amd.js | 0 .../common/{interop-swc => interop}/export-from-1/output.cjs | 0 .../common/{interop-swc => interop}/export-from-1/output.umd.js | 0 .../common/{interop-swc => interop}/export-from-2/input.js | 0 .../common/{interop-swc => interop}/export-from-2/output.amd.js | 0 .../common/{interop-swc => interop}/export-from-2/output.cjs | 0 .../common/{interop-swc => interop}/export-from-2/output.umd.js | 0 .../common/{interop-swc => interop}/export-from-3/input.js | 0 .../common/{interop-swc => interop}/export-from-3/output.amd.js | 0 .../common/{interop-swc => interop}/export-from-3/output.cjs | 0 .../common/{interop-swc => interop}/export-from-3/output.umd.js | 0 .../common/{interop-swc => interop}/export-from-4/input.js | 0 .../common/{interop-swc => interop}/export-from-4/output.amd.js | 0 .../common/{interop-swc => interop}/export-from-4/output.cjs | 0 .../common/{interop-swc => interop}/export-from-4/output.umd.js | 0 .../common/{interop-swc => interop}/export-from-5/input.js | 0 .../common/{interop-swc => interop}/export-from-5/output.amd.js | 0 .../common/{interop-swc => interop}/export-from-5/output.cjs | 0 .../common/{interop-swc => interop}/export-from-5/output.umd.js | 0 .../common/{interop-swc => interop}/export-from-6/input.js | 0 .../common/{interop-swc => interop}/export-from-6/output.amd.js | 0 .../common/{interop-swc => interop}/export-from-6/output.cjs | 0 .../common/{interop-swc => interop}/export-from-6/output.umd.js | 0 .../common/{interop-swc => interop}/export-from-7/input.js | 0 .../common/{interop-swc => interop}/export-from-7/output.amd.js | 0 .../common/{interop-swc => interop}/export-from-7/output.cjs | 0 .../common/{interop-swc => interop}/export-from-7/output.umd.js | 0 .../common/{interop-swc => interop}/export-from-8/input.js | 0 .../common/{interop-swc => interop}/export-from-8/output.amd.js | 0 .../common/{interop-swc => interop}/export-from-8/output.cjs | 0 .../common/{interop-swc => interop}/export-from-8/output.umd.js | 0 .../common/{interop-swc => interop}/export-named-1/input.js | 0 .../common/{interop-swc => interop}/export-named-1/output.amd.js | 0 .../common/{interop-swc => interop}/export-named-1/output.cjs | 0 .../common/{interop-swc => interop}/export-named-1/output.umd.js | 0 .../common/{interop-swc => interop}/export-named-2/input.js | 0 .../common/{interop-swc => interop}/export-named-2/output.amd.js | 0 .../common/{interop-swc => interop}/export-named-2/output.cjs | 0 .../common/{interop-swc => interop}/export-named-2/output.umd.js | 0 .../common/{interop-swc => interop}/export-named-3/input.js | 0 .../common/{interop-swc => interop}/export-named-3/output.amd.js | 0 .../common/{interop-swc => interop}/export-named-3/output.cjs | 0 .../common/{interop-swc => interop}/export-named-3/output.umd.js | 0 .../common/{interop-swc => interop}/export-named-4/input.js | 0 .../common/{interop-swc => interop}/export-named-4/output.amd.js | 0 .../common/{interop-swc => interop}/export-named-4/output.cjs | 0 .../common/{interop-swc => interop}/export-named-4/output.umd.js | 0 .../common/{interop-swc => interop}/export-named-5/input.js | 0 .../common/{interop-swc => interop}/export-named-5/output.amd.js | 0 .../common/{interop-swc => interop}/export-named-5/output.cjs | 0 .../common/{interop-swc => interop}/export-named-5/output.umd.js | 0 .../common/{interop-swc => interop}/exports-variable/input.js | 0 .../{interop-swc => interop}/exports-variable/output.amd.js | 0 .../common/{interop-swc => interop}/exports-variable/output.cjs | 0 .../{interop-swc => interop}/exports-variable/output.umd.js | 0 .../{interop-swc => interop}/hoist-function-exports/input.js | 0 .../{interop-swc => interop}/hoist-function-exports/output.amd.js | 0 .../{interop-swc => interop}/hoist-function-exports/output.cjs | 0 .../{interop-swc => interop}/hoist-function-exports/output.umd.js | 0 .../common/{interop-swc => interop}/imports-default/input.js | 0 .../common/{interop-swc => interop}/imports-default/output.amd.js | 0 .../common/{interop-swc => interop}/imports-default/output.cjs | 0 .../common/{interop-swc => interop}/imports-default/output.umd.js | 0 .../fixture/common/{interop-swc => interop}/imports-glob/input.js | 0 .../common/{interop-swc => interop}/imports-glob/output.amd.js | 0 .../common/{interop-swc => interop}/imports-glob/output.cjs | 0 .../common/{interop-swc => interop}/imports-glob/output.umd.js | 0 .../common/{interop-swc => interop}/imports-mixing/input.js | 0 .../common/{interop-swc => interop}/imports-mixing/output.amd.js | 0 .../common/{interop-swc => interop}/imports-mixing/output.cjs | 0 .../common/{interop-swc => interop}/imports-mixing/output.umd.js | 0 .../common/{interop-swc => interop}/imports-named/input.js | 0 .../common/{interop-swc => interop}/imports-named/output.amd.js | 0 .../common/{interop-swc => interop}/imports-named/output.cjs | 0 .../common/{interop-swc => interop}/imports-named/output.umd.js | 0 .../common/{interop-swc => interop}/imports-ordering/input.js | 0 .../{interop-swc => interop}/imports-ordering/output.amd.js | 0 .../common/{interop-swc => interop}/imports-ordering/output.cjs | 0 .../{interop-swc => interop}/imports-ordering/output.umd.js | 0 .../fixture/common/{interop-swc => interop}/imports/input.js | 0 .../fixture/common/{interop-swc => interop}/imports/output.amd.js | 0 .../fixture/common/{interop-swc => interop}/imports/output.cjs | 0 .../fixture/common/{interop-swc => interop}/imports/output.umd.js | 0 .../fixture/common/{interop-swc => interop}/overview/input.js | 0 .../common/{interop-swc => interop}/overview/output.amd.js | 0 .../fixture/common/{interop-swc => interop}/overview/output.cjs | 0 .../common/{interop-swc => interop}/overview/output.umd.js | 0 .../tests/fixture/common/{interop-swc => interop}/remap/input.js | 0 .../fixture/common/{interop-swc => interop}/remap/output.amd.js | 0 .../fixture/common/{interop-swc => interop}/remap/output.cjs | 0 .../fixture/common/{interop-swc => interop}/remap/output.umd.js | 0 144 files changed, 0 insertions(+), 0 deletions(-) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-all/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-all/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-all/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-all/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-10/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-10/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-10/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-10/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-11/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-11/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-11/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-11/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-2/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-2/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-2/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-2/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-3/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-3/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-3/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-3/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-4/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-4/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-4/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-4/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-5/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-5/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-5/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-5/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-6/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-6/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-6/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-6/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-7/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-7/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-7/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-7/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-8/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-8/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-8/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-8/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-9/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-9/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-9/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default-9/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-default/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-destructured/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-destructured/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-destructured/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-destructured/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-1/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-1/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-1/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-1/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-2/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-2/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-2/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-2/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-3/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-3/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-3/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-3/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-4/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-4/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-4/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-4/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-5/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-5/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-5/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-5/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-6/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-6/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-6/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-6/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-7/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-7/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-7/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-7/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-8/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-8/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-8/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-from-8/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-1/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-1/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-1/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-1/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-2/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-2/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-2/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-2/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-3/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-3/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-3/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-3/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-4/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-4/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-4/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-4/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-5/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-5/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-5/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/export-named-5/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/exports-variable/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/exports-variable/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/exports-variable/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/exports-variable/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/hoist-function-exports/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/hoist-function-exports/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/hoist-function-exports/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/hoist-function-exports/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-default/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-default/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-default/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-default/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-glob/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-glob/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-glob/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-glob/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-mixing/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-mixing/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-mixing/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-mixing/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-named/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-named/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-named/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-named/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-ordering/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-ordering/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-ordering/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports-ordering/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/imports/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/overview/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/overview/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/overview/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/overview/output.umd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/remap/input.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/remap/output.amd.js (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/remap/output.cjs (100%) rename crates/swc_ecma_transforms_module/tests/fixture/common/{interop-swc => interop}/remap/output.umd.js (100%) diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-all/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-all/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-all/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-all/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-all/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-all/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-all/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-all/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-all/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-10/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-10/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-10/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-10/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-10/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-10/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-10/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-10/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-10/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-11/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-11/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-11/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-11/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-11/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-11/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-11/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-11/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-11/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-2/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-2/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-2/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-2/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-2/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-2/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-2/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-2/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-2/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-3/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-3/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-3/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-3/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-3/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-3/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-3/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-3/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-3/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-4/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-4/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-4/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-4/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-4/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-4/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-4/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-4/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-4/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-5/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-5/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-5/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-5/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-5/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-5/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-5/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-5/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-5/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-6/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-6/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-6/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-6/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-6/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-6/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-6/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-6/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-6/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-7/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-7/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-7/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-7/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-7/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-7/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-7/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-7/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-7/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-8/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-8/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-8/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-8/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-8/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-8/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-8/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-8/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-8/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-9/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-9/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-9/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-9/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-9/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-9/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-9/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default-9/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default-9/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-default/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-default/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-destructured/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-destructured/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-destructured/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-destructured/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-destructured/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-destructured/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-destructured/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-destructured/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-destructured/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-1/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-1/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-1/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-1/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-1/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-1/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-1/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-1/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-1/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-2/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-2/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-2/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-2/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-2/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-2/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-2/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-2/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-2/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-3/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-3/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-3/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-3/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-3/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-3/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-3/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-3/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-3/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-4/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-4/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-4/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-4/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-4/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-4/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-4/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-4/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-4/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-5/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-5/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-5/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-5/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-5/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-5/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-5/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-5/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-5/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-6/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-6/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-6/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-6/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-6/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-6/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-6/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-6/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-6/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-7/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-7/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-7/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-7/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-7/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-7/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-7/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-7/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-7/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-8/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-8/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-8/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-8/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-8/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-8/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-8/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-from-8/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-from-8/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-1/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-1/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-1/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-1/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-1/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-1/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-1/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-1/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-1/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-2/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-2/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-2/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-2/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-2/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-2/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-2/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-2/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-2/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-3/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-3/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-3/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-3/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-3/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-3/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-3/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-3/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-3/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-4/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-4/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-4/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-4/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-4/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-4/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-4/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-4/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-4/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-5/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-5/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-5/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-5/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-5/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-5/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-5/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/export-named-5/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/export-named-5/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/exports-variable/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/exports-variable/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/exports-variable/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/exports-variable/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/exports-variable/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/exports-variable/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/exports-variable/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/exports-variable/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/exports-variable/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/hoist-function-exports/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/hoist-function-exports/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/hoist-function-exports/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/hoist-function-exports/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/hoist-function-exports/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/hoist-function-exports/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/hoist-function-exports/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/hoist-function-exports/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/hoist-function-exports/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-default/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-default/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-default/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-default/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-default/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-default/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-default/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-default/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-default/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-glob/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-glob/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-glob/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-glob/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-glob/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-glob/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-glob/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-glob/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-glob/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-mixing/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-mixing/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-mixing/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-mixing/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-mixing/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-mixing/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-mixing/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-mixing/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-mixing/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-named/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-named/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-named/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-named/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-named/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-named/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-named/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-named/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-named/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-ordering/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-ordering/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-ordering/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-ordering/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-ordering/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-ordering/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-ordering/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports-ordering/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports-ordering/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/imports/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/imports/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/overview/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/overview/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/overview/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/overview/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/overview/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/overview/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/overview/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/overview/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/overview/output.umd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/input.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/remap/input.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/input.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/remap/input.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/output.amd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/remap/output.amd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/output.amd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/remap/output.amd.js diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/output.cjs b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/remap/output.cjs similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/output.cjs rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/remap/output.cjs diff --git a/crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/output.umd.js b/crates/swc_ecma_transforms_module/tests/fixture/common/interop/remap/output.umd.js similarity index 100% rename from crates/swc_ecma_transforms_module/tests/fixture/common/interop-swc/remap/output.umd.js rename to crates/swc_ecma_transforms_module/tests/fixture/common/interop/remap/output.umd.js From 1e01d7169dea0f7145e6c296e3f3f9c8efad4f39 Mon Sep 17 00:00:00 2001 From: magic-akari Date: Thu, 30 Jun 2022 10:48:24 +0800 Subject: [PATCH 3/4] chore: update --- crates/swc_ecma_transforms_module/src/amd.rs | 2 + .../src/common_js.rs | 47 +++++++++---------- crates/swc_ecma_transforms_module/src/umd.rs | 2 + crates/swc_ecma_transforms_module/src/util.rs | 1 - 4 files changed, 27 insertions(+), 25 deletions(-) diff --git a/crates/swc_ecma_transforms_module/src/amd.rs b/crates/swc_ecma_transforms_module/src/amd.rs index 4618a33a797b..237efaeff903 100644 --- a/crates/swc_ecma_transforms_module/src/amd.rs +++ b/crates/swc_ecma_transforms_module/src/amd.rs @@ -400,6 +400,8 @@ impl Amd { let mut export_stmts = Default::default(); if !export_obj_prop_list.is_empty() && !is_export_assign { + export_obj_prop_list.sort_by(|a, b| a.0.cmp(&b.0)); + let features = self.available_features; let exports = self.exports(); diff --git a/crates/swc_ecma_transforms_module/src/common_js.rs b/crates/swc_ecma_transforms_module/src/common_js.rs index 4d0148e29cf7..5c3b83b4f951 100644 --- a/crates/swc_ecma_transforms_module/src/common_js.rs +++ b/crates/swc_ecma_transforms_module/src/common_js.rs @@ -352,15 +352,15 @@ impl Cjs { let mut export_stmts: Vec = Default::default(); if !export_obj_prop_list.is_empty() && !is_export_assign { - if import_interop.is_node() { - export_obj_prop_list.sort_by(|a, b| a.0.cmp(&b.0)); + export_obj_prop_list.sort_by(|a, b| a.0.cmp(&b.0)); + if import_interop.is_node() { let export_id_list: Vec<(JsWord, Span)> = export_obj_prop_list .iter() .map(|(name, span, _)| (name.clone(), *span)) .collect(); - self.emit_lexer_export_init(export_id_list, &mut export_stmts); + export_stmts = self.emit_lexer_exports_init(export_id_list); } let features = self.available_features; @@ -372,7 +372,7 @@ impl Cjs { export_stmts.into_iter().chain(stmts) } - fn exports(&mut self) -> Ident { + fn exports(&self) -> Ident { quote_ident!(DUMMY_SP.apply_mark(self.unresolved_mark), "exports") } @@ -380,28 +380,27 @@ impl Cjs { /// ```javascript /// exports.foo = exports.bar = void 0; /// ``` - fn emit_lexer_export_init( - &mut self, - export_id_list: Vec<(JsWord, Span)>, - stmts: &mut Vec, - ) { - for group in export_id_list.chunks(100) { - let mut expr = *undefined(DUMMY_SP); - - for (export_name, span) in group { - let prop = prop_name(export_name, DUMMY_SP).into(); - - let export_binding = MemberExpr { - obj: Box::new(self.exports().into()), - span: *span, - prop, - }; + fn emit_lexer_exports_init(&mut self, export_id_list: Vec<(JsWord, Span)>) -> Vec { + export_id_list + .chunks(100) + .map(|group| { + let mut expr = *undefined(DUMMY_SP); + + for (export_name, span) in group { + let prop = prop_name(export_name, DUMMY_SP).into(); + + let export_binding = MemberExpr { + obj: Box::new(self.exports().into()), + span: *span, + prop, + }; - expr = expr.make_assign_to(op!("="), export_binding.as_pat_or_expr()); - } + expr = expr.make_assign_to(op!("="), export_binding.as_pat_or_expr()); + } - stmts.push(expr.into_stmt()); - } + expr.into_stmt() + }) + .collect() } } diff --git a/crates/swc_ecma_transforms_module/src/umd.rs b/crates/swc_ecma_transforms_module/src/umd.rs index 2b10ed7c963a..dbf6911c45bb 100644 --- a/crates/swc_ecma_transforms_module/src/umd.rs +++ b/crates/swc_ecma_transforms_module/src/umd.rs @@ -291,6 +291,8 @@ impl Umd { let mut export_stmts = Default::default(); if !export_obj_prop_list.is_empty() && !is_export_assign { + export_obj_prop_list.sort_by(|a, b| a.0.cmp(&b.0)); + let features = self.available_features; let exports = self.exports(); diff --git a/crates/swc_ecma_transforms_module/src/util.rs b/crates/swc_ecma_transforms_module/src/util.rs index a29d3928bd75..1395428e1bf5 100644 --- a/crates/swc_ecma_transforms_module/src/util.rs +++ b/crates/swc_ecma_transforms_module/src/util.rs @@ -316,7 +316,6 @@ pub(crate) fn emit_export_stmts( .into_iter() .collect(), _ => { - prop_list.sort_by(|a, b| a.0.cmp(&b.0)); let props = prop_list .into_iter() .map(prop_auto) From 94ec721c6fbc3b8fe04103a7d915c198aaac0e12 Mon Sep 17 00:00:00 2001 From: magic-akari Date: Thu, 30 Jun 2022 10:57:38 +0800 Subject: [PATCH 4/4] chore: move test cases to swc --- .../tests/fixture/interop/babel/input/.swcrc | 12 + .../fixture/interop/babel/input/index.js | 9 + .../fixture/interop/babel/output/index.js | 28 ++ .../tests/fixture/interop/node/input/.swcrc | 12 + .../tests/fixture/interop/node/input/index.js | 9 + .../fixture/interop/node/output/index.js | 28 ++ .../tests/fixture/interop/none/input/.swcrc | 12 + .../tests/fixture/interop/none/input/index.js | 9 + .../fixture/interop/none/output/index.js | 23 ++ .../tests/fixture/interop/swc/input/.swcrc | 12 + .../tests/fixture/interop/swc/input/index.js | 9 + .../tests/fixture/interop/swc/output/index.js | 28 ++ node-swc/__tests__/transform/interop.mjs | 313 ------------------ 13 files changed, 191 insertions(+), 313 deletions(-) create mode 100644 crates/swc/tests/fixture/interop/babel/input/.swcrc create mode 100644 crates/swc/tests/fixture/interop/babel/input/index.js create mode 100644 crates/swc/tests/fixture/interop/babel/output/index.js create mode 100644 crates/swc/tests/fixture/interop/node/input/.swcrc create mode 100644 crates/swc/tests/fixture/interop/node/input/index.js create mode 100644 crates/swc/tests/fixture/interop/node/output/index.js create mode 100644 crates/swc/tests/fixture/interop/none/input/.swcrc create mode 100644 crates/swc/tests/fixture/interop/none/input/index.js create mode 100644 crates/swc/tests/fixture/interop/none/output/index.js create mode 100644 crates/swc/tests/fixture/interop/swc/input/.swcrc create mode 100644 crates/swc/tests/fixture/interop/swc/input/index.js create mode 100644 crates/swc/tests/fixture/interop/swc/output/index.js delete mode 100644 node-swc/__tests__/transform/interop.mjs diff --git a/crates/swc/tests/fixture/interop/babel/input/.swcrc b/crates/swc/tests/fixture/interop/babel/input/.swcrc new file mode 100644 index 000000000000..8b93b7aa719e --- /dev/null +++ b/crates/swc/tests/fixture/interop/babel/input/.swcrc @@ -0,0 +1,12 @@ +{ + "jsc": { + "parser": { + "syntax": "ecmascript" + }, + "target": "es2020" + }, + "module": { + "type": "commonjs", + "importInterop": "babel" + } +} \ No newline at end of file diff --git a/crates/swc/tests/fixture/interop/babel/input/index.js b/crates/swc/tests/fixture/interop/babel/input/index.js new file mode 100644 index 000000000000..d445233c373e --- /dev/null +++ b/crates/swc/tests/fixture/interop/babel/input/index.js @@ -0,0 +1,9 @@ +import foo from "foo"; +import bar, { baz } from "bar"; + +export const x = { foo, bar }; +export const y = baz; +export default { + x, + y, +}; diff --git a/crates/swc/tests/fixture/interop/babel/output/index.js b/crates/swc/tests/fixture/interop/babel/output/index.js new file mode 100644 index 000000000000..71e0d39bfd8c --- /dev/null +++ b/crates/swc/tests/fixture/interop/babel/output/index.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + default: ()=>_default, + x: ()=>x, + y: ()=>y +}); +const _interopRequireDefault = require("@swc/helpers/lib/_interop_require_default.js").default; +const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default; +const _foo = _interopRequireDefault(require("foo")); +const _bar = _interopRequireWildcard(require("bar")); +const x = { + foo: _foo.default, + bar: _bar.default +}; +const y = _bar.baz; +var _default = { + x, + y +}; diff --git a/crates/swc/tests/fixture/interop/node/input/.swcrc b/crates/swc/tests/fixture/interop/node/input/.swcrc new file mode 100644 index 000000000000..9f3bc921259e --- /dev/null +++ b/crates/swc/tests/fixture/interop/node/input/.swcrc @@ -0,0 +1,12 @@ +{ + "jsc": { + "parser": { + "syntax": "ecmascript" + }, + "target": "es2020" + }, + "module": { + "type": "commonjs", + "importInterop": "node" + } +} \ No newline at end of file diff --git a/crates/swc/tests/fixture/interop/node/input/index.js b/crates/swc/tests/fixture/interop/node/input/index.js new file mode 100644 index 000000000000..d445233c373e --- /dev/null +++ b/crates/swc/tests/fixture/interop/node/input/index.js @@ -0,0 +1,9 @@ +import foo from "foo"; +import bar, { baz } from "bar"; + +export const x = { foo, bar }; +export const y = baz; +export default { + x, + y, +}; diff --git a/crates/swc/tests/fixture/interop/node/output/index.js b/crates/swc/tests/fixture/interop/node/output/index.js new file mode 100644 index 000000000000..bf8b6a2bf176 --- /dev/null +++ b/crates/swc/tests/fixture/interop/node/output/index.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.y = exports.x = exports.default = void 0; +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + default: ()=>_default, + x: ()=>x, + y: ()=>y +}); +const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default; +const _foo = require("foo"); +const _bar = _interopRequireWildcard(require("bar"), true); +const x = { + foo: _foo, + bar: _bar.default +}; +const y = _bar.baz; +var _default = { + x, + y +}; diff --git a/crates/swc/tests/fixture/interop/none/input/.swcrc b/crates/swc/tests/fixture/interop/none/input/.swcrc new file mode 100644 index 000000000000..48668ee5f21f --- /dev/null +++ b/crates/swc/tests/fixture/interop/none/input/.swcrc @@ -0,0 +1,12 @@ +{ + "jsc": { + "parser": { + "syntax": "ecmascript" + }, + "target": "es2020" + }, + "module": { + "type": "commonjs", + "importInterop": "none" + } +} \ No newline at end of file diff --git a/crates/swc/tests/fixture/interop/none/input/index.js b/crates/swc/tests/fixture/interop/none/input/index.js new file mode 100644 index 000000000000..d445233c373e --- /dev/null +++ b/crates/swc/tests/fixture/interop/none/input/index.js @@ -0,0 +1,9 @@ +import foo from "foo"; +import bar, { baz } from "bar"; + +export const x = { foo, bar }; +export const y = baz; +export default { + x, + y, +}; diff --git a/crates/swc/tests/fixture/interop/none/output/index.js b/crates/swc/tests/fixture/interop/none/output/index.js new file mode 100644 index 000000000000..0dc44603556e --- /dev/null +++ b/crates/swc/tests/fixture/interop/none/output/index.js @@ -0,0 +1,23 @@ +"use strict"; +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + default: ()=>_default, + x: ()=>x, + y: ()=>y +}); +const _foo = require("foo"); +const _bar = require("bar"); +const x = { + foo: _foo.default, + bar: _bar.default +}; +const y = _bar.baz; +var _default = { + x, + y +}; diff --git a/crates/swc/tests/fixture/interop/swc/input/.swcrc b/crates/swc/tests/fixture/interop/swc/input/.swcrc new file mode 100644 index 000000000000..3e8238f79034 --- /dev/null +++ b/crates/swc/tests/fixture/interop/swc/input/.swcrc @@ -0,0 +1,12 @@ +{ + "jsc": { + "parser": { + "syntax": "ecmascript" + }, + "target": "es2020" + }, + "module": { + "type": "commonjs", + "importInterop": "swc" + } +} \ No newline at end of file diff --git a/crates/swc/tests/fixture/interop/swc/input/index.js b/crates/swc/tests/fixture/interop/swc/input/index.js new file mode 100644 index 000000000000..d445233c373e --- /dev/null +++ b/crates/swc/tests/fixture/interop/swc/input/index.js @@ -0,0 +1,9 @@ +import foo from "foo"; +import bar, { baz } from "bar"; + +export const x = { foo, bar }; +export const y = baz; +export default { + x, + y, +}; diff --git a/crates/swc/tests/fixture/interop/swc/output/index.js b/crates/swc/tests/fixture/interop/swc/output/index.js new file mode 100644 index 000000000000..71e0d39bfd8c --- /dev/null +++ b/crates/swc/tests/fixture/interop/swc/output/index.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + get: all[name], + enumerable: true + }); +} +_export(exports, { + default: ()=>_default, + x: ()=>x, + y: ()=>y +}); +const _interopRequireDefault = require("@swc/helpers/lib/_interop_require_default.js").default; +const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default; +const _foo = _interopRequireDefault(require("foo")); +const _bar = _interopRequireWildcard(require("bar")); +const x = { + foo: _foo.default, + bar: _bar.default +}; +const y = _bar.baz; +var _default = { + x, + y +}; diff --git a/node-swc/__tests__/transform/interop.mjs b/node-swc/__tests__/transform/interop.mjs deleted file mode 100644 index c4a85d52068b..000000000000 --- a/node-swc/__tests__/transform/interop.mjs +++ /dev/null @@ -1,313 +0,0 @@ -import swc from "../../.."; - -const source = `import foo from "foo"; -import bar, { baz } from "bar"; - -export const x = { foo, bar }; -export const y = baz; -export default { - x, - y, -}; -`; - -it("should support importInterop: swc", async () => { - const { code } = await swc.transform(source, { - jsc: { - parser: { - syntax: "ecmascript", - }, - target: "es2020", - }, - module: { - type: "commonjs", - importInterop: "swc", - }, - }); - expect(code).toMatchInlineSnapshot(` -"\\"use strict\\"; -Object.defineProperty(exports, \\"__esModule\\", { - value: true -}); -function _export(target, all) { - for(var name in all)Object.defineProperty(target, name, { - get: all[name], - enumerable: true - }); -} -_export(exports, { - default: ()=>_default, - x: ()=>x, - y: ()=>y -}); -const _foo = _interopRequireDefault(require(\\"foo\\")); -const _bar = _interopRequireWildcard(require(\\"bar\\")); -function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { - default: obj - }; -} -function _getRequireWildcardCache(nodeInterop) { - if (typeof WeakMap !== \\"function\\") return null; - var cacheBabelInterop = new WeakMap(); - var cacheNodeInterop = new WeakMap(); - return (_getRequireWildcardCache = function(nodeInterop) { - return nodeInterop ? cacheNodeInterop : cacheBabelInterop; - })(nodeInterop); -} -function _interopRequireWildcard(obj, nodeInterop) { - if (!nodeInterop && obj && obj.__esModule) { - return obj; - } - if (obj === null || typeof obj !== \\"object\\" && typeof obj !== \\"function\\") { - return { - default: obj - }; - } - var cache = _getRequireWildcardCache(nodeInterop); - if (cache && cache.has(obj)) { - return cache.get(obj); - } - var newObj = {}; - var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; - for(var key in obj){ - if (key !== \\"default\\" && Object.prototype.hasOwnProperty.call(obj, key)) { - var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; - if (desc && (desc.get || desc.set)) { - Object.defineProperty(newObj, key, desc); - } else { - newObj[key] = obj[key]; - } - } - } - newObj.default = obj; - if (cache) { - cache.set(obj, newObj); - } - return newObj; -} -const x = { - foo: _foo.default, - bar: _bar.default -}; -const y = _bar.baz; -var _default = { - x, - y -}; -" -`); -}); - -it("should support importInterop: babel", async () => { - const { code } = await swc.transform(source, { - jsc: { - parser: { - syntax: "ecmascript", - }, - target: "es2020", - }, - module: { - type: "commonjs", - importInterop: "babel", - }, - }); - expect(code).toMatchInlineSnapshot(` -"\\"use strict\\"; -Object.defineProperty(exports, \\"__esModule\\", { - value: true -}); -function _export(target, all) { - for(var name in all)Object.defineProperty(target, name, { - get: all[name], - enumerable: true - }); -} -_export(exports, { - default: ()=>_default, - x: ()=>x, - y: ()=>y -}); -const _foo = _interopRequireDefault(require(\\"foo\\")); -const _bar = _interopRequireWildcard(require(\\"bar\\")); -function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { - default: obj - }; -} -function _getRequireWildcardCache(nodeInterop) { - if (typeof WeakMap !== \\"function\\") return null; - var cacheBabelInterop = new WeakMap(); - var cacheNodeInterop = new WeakMap(); - return (_getRequireWildcardCache = function(nodeInterop) { - return nodeInterop ? cacheNodeInterop : cacheBabelInterop; - })(nodeInterop); -} -function _interopRequireWildcard(obj, nodeInterop) { - if (!nodeInterop && obj && obj.__esModule) { - return obj; - } - if (obj === null || typeof obj !== \\"object\\" && typeof obj !== \\"function\\") { - return { - default: obj - }; - } - var cache = _getRequireWildcardCache(nodeInterop); - if (cache && cache.has(obj)) { - return cache.get(obj); - } - var newObj = {}; - var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; - for(var key in obj){ - if (key !== \\"default\\" && Object.prototype.hasOwnProperty.call(obj, key)) { - var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; - if (desc && (desc.get || desc.set)) { - Object.defineProperty(newObj, key, desc); - } else { - newObj[key] = obj[key]; - } - } - } - newObj.default = obj; - if (cache) { - cache.set(obj, newObj); - } - return newObj; -} -const x = { - foo: _foo.default, - bar: _bar.default -}; -const y = _bar.baz; -var _default = { - x, - y -}; -" -`); -}); - -it("should support importInterop: node", async () => { - const { code } = await swc.transform(source, { - jsc: { - parser: { - syntax: "ecmascript", - }, - target: "es2020", - }, - module: { - type: "commonjs", - importInterop: "node", - }, - }); - expect(code).toMatchInlineSnapshot(` -"\\"use strict\\"; -Object.defineProperty(exports, \\"__esModule\\", { - value: true -}); -exports.y = exports.x = exports.default = void 0; -function _export(target, all) { - for(var name in all)Object.defineProperty(target, name, { - get: all[name], - enumerable: true - }); -} -_export(exports, { - default: ()=>_default, - x: ()=>x, - y: ()=>y -}); -const _foo = require(\\"foo\\"); -const _bar = _interopRequireWildcard(require(\\"bar\\"), true); -function _getRequireWildcardCache(nodeInterop) { - if (typeof WeakMap !== \\"function\\") return null; - var cacheBabelInterop = new WeakMap(); - var cacheNodeInterop = new WeakMap(); - return (_getRequireWildcardCache = function(nodeInterop) { - return nodeInterop ? cacheNodeInterop : cacheBabelInterop; - })(nodeInterop); -} -function _interopRequireWildcard(obj, nodeInterop) { - if (!nodeInterop && obj && obj.__esModule) { - return obj; - } - if (obj === null || typeof obj !== \\"object\\" && typeof obj !== \\"function\\") { - return { - default: obj - }; - } - var cache = _getRequireWildcardCache(nodeInterop); - if (cache && cache.has(obj)) { - return cache.get(obj); - } - var newObj = {}; - var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; - for(var key in obj){ - if (key !== \\"default\\" && Object.prototype.hasOwnProperty.call(obj, key)) { - var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; - if (desc && (desc.get || desc.set)) { - Object.defineProperty(newObj, key, desc); - } else { - newObj[key] = obj[key]; - } - } - } - newObj.default = obj; - if (cache) { - cache.set(obj, newObj); - } - return newObj; -} -const x = { - foo: _foo, - bar: _bar.default -}; -const y = _bar.baz; -var _default = { - x, - y -}; -" -`); -}); - -it("should support importInterop: none", async () => { - const { code } = await swc.transform(source, { - jsc: { - parser: { - syntax: "ecmascript", - }, - target: "es2020", - }, - module: { - type: "commonjs", - importInterop: "none", - }, - }); - expect(code).toMatchInlineSnapshot(` -"\\"use strict\\"; -function _export(target, all) { - for(var name in all)Object.defineProperty(target, name, { - get: all[name], - enumerable: true - }); -} -_export(exports, { - default: ()=>_default, - x: ()=>x, - y: ()=>y -}); -const _foo = require(\\"foo\\"); -const _bar = require(\\"bar\\"); -const x = { - foo: _foo.default, - bar: _bar.default -}; -const y = _bar.baz; -var _default = { - x, - y -}; -" -`); -});