mirror of
https://github.com/oven-sh/bun
synced 2026-02-10 10:58:56 +00:00
* Runtime support for `__esModule` annotations * Ignore `__esModule` annotation when `"type": "module"` is set --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
69 lines
3.1 KiB
JavaScript
69 lines
3.1 KiB
JavaScript
import { test, expect, describe } from "bun:test";
|
|
import * as WithTypeModuleExportEsModuleAnnotationMissingDefault from "./with-type-module/export-esModule-annotation-empty.cjs";
|
|
import * as WithTypeModuleExportEsModuleAnnotationNoDefault from "./with-type-module/export-esModule-annotation-no-default.cjs";
|
|
import * as WithTypeModuleExportEsModuleAnnotation from "./with-type-module/export-esModule-annotation.cjs";
|
|
import * as WithTypeModuleExportEsModuleNoAnnotation from "./with-type-module/export-esModule-no-annotation.cjs";
|
|
import * as WithoutTypeModuleExportEsModuleAnnotationMissingDefault from "./without-type-module/export-esModule-annotation-empty.cjs";
|
|
import * as WithoutTypeModuleExportEsModuleAnnotationNoDefault from "./without-type-module/export-esModule-annotation-no-default.cjs";
|
|
import * as WithoutTypeModuleExportEsModuleAnnotation from "./without-type-module/export-esModule-annotation.cjs";
|
|
import * as WithoutTypeModuleExportEsModuleNoAnnotation from "./without-type-module/export-esModule-no-annotation.cjs";
|
|
|
|
describe('without type: "module"', () => {
|
|
test("module.exports = {}", () => {
|
|
expect(WithoutTypeModuleExportEsModuleAnnotationMissingDefault.default).toEqual({});
|
|
expect(WithoutTypeModuleExportEsModuleAnnotationMissingDefault.__esModule).toBeUndefined();
|
|
});
|
|
|
|
test("exports.__esModule = true", () => {
|
|
expect(WithoutTypeModuleExportEsModuleAnnotationNoDefault.default).toEqual({
|
|
__esModule: true,
|
|
});
|
|
|
|
// The module namespace object will not have the __esModule property.
|
|
expect(WithoutTypeModuleExportEsModuleAnnotationNoDefault).not.toHaveProperty("__esModule");
|
|
});
|
|
|
|
test("exports.default = true; exports.__esModule = true;", () => {
|
|
expect(WithoutTypeModuleExportEsModuleAnnotation.default).toBeTrue();
|
|
expect(WithoutTypeModuleExportEsModuleAnnotation.__esModule).toBeUndefined();
|
|
});
|
|
|
|
test("exports.default = true;", () => {
|
|
expect(WithoutTypeModuleExportEsModuleNoAnnotation.default).toEqual({
|
|
default: true,
|
|
});
|
|
expect(WithoutTypeModuleExportEsModuleAnnotation.__esModule).toBeUndefined();
|
|
});
|
|
});
|
|
|
|
describe('with type: "module"', () => {
|
|
test("module.exports = {}", () => {
|
|
expect(WithTypeModuleExportEsModuleAnnotationMissingDefault.default).toEqual({});
|
|
expect(WithTypeModuleExportEsModuleAnnotationMissingDefault.__esModule).toBeUndefined();
|
|
});
|
|
|
|
test("exports.__esModule = true", () => {
|
|
expect(WithTypeModuleExportEsModuleAnnotationNoDefault.default).toEqual({
|
|
__esModule: true,
|
|
});
|
|
|
|
// The module namespace object WILL have the __esModule property.
|
|
expect(WithTypeModuleExportEsModuleAnnotationNoDefault).toHaveProperty("__esModule");
|
|
});
|
|
|
|
test("exports.default = true; exports.__esModule = true;", () => {
|
|
expect(WithTypeModuleExportEsModuleAnnotation.default).toEqual({
|
|
default: true,
|
|
__esModule: true,
|
|
});
|
|
expect(WithTypeModuleExportEsModuleAnnotation.__esModule).toBeTrue();
|
|
});
|
|
|
|
test("exports.default = true;", () => {
|
|
expect(WithTypeModuleExportEsModuleNoAnnotation.default).toEqual({
|
|
default: true,
|
|
});
|
|
expect(WithTypeModuleExportEsModuleAnnotation.__esModule).toBeTrue();
|
|
});
|
|
});
|