Initial commit

This commit is contained in:
2024-11-03 17:41:45 +01:00
commit c1640c1754
8043 changed files with 775536 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
const test = require("ava");
test("Full URL", async t => {
const { ImportTransformer } = await import("../import-transformer.js");
let before = `import {html, css, LitElement} from "lit";`;
let tf = new ImportTransformer(before);
let after = `import {html, css, LitElement} from "https://cdn.jsdelivr.net/gh/lit/dist@2/core/lit-core.min.js";`;
t.is(tf.transformWithImportMap({
imports: {
lit: "https://cdn.jsdelivr.net/gh/lit/dist@2/core/lit-core.min.js"
}
}), after);
});

217
node_modules/esm-import-transformer/test/test.js generated vendored Normal file
View File

@@ -0,0 +1,217 @@
import test from "ava";
import * as acorn from "acorn";
import { ImportTransformer } from "../import-transformer.js";
test("No import maps", t => {
let before = `import {html, css, LitElement} from "lit";`;
let tf = new ImportTransformer(before);
t.is(tf.transformWithImportMap(), before);
});
test("Simple substitution", t => {
let before = `import {html, css, LitElement} from "lit";`;
let tf = new ImportTransformer(before);
let after = `import {html, css, LitElement} from "other-lit-url";`;
t.is(tf.transformWithImportMap({
imports: {
lit: "other-lit-url"
}
}), after);
});
test("Simple substitution (backwards compat method)", t => {
let before = `import {html, css, LitElement} from "lit";`;
let tf = new ImportTransformer(before);
let after = `import {html, css, LitElement} from "other-lit-url";`;
t.is(tf.transform({
imports: {
lit: "other-lit-url"
}
}), after);
});
test("Simple substitution (manual supply of ast)", t => {
let before = `import {html, css, LitElement} from "lit";`;
let ast = acorn.parse(before, {
sourceType: "module",
ecmaVersion: "latest"
});
let tf = new ImportTransformer(before, ast);
let after = `import {html, css, LitElement} from "other-lit-url";`;
t.is(tf.transformWithImportMap({
imports: {
lit: "other-lit-url"
}
}), after);
});
test("Multiple substitutions", t => {
let before = `
import all from "lit";
import all2 from "lit2";
import all3 from "lit";
`;
let tf = new ImportTransformer(before);
let after = `
import all from "other-lit-url";
import all2 from "other-lit-url2";
import all3 from "other-lit-url";
`;
t.is(tf.transformWithImportMap({
imports: {
lit: "other-lit-url",
lit2: "other-lit-url2"
}
}), after);
});
test("Full URL", t => {
let before = `import {html, css, LitElement} from "lit";`;
let tf = new ImportTransformer(before);
let after = `import {html, css, LitElement} from "https://cdn.jsdelivr.net/gh/lit/dist@2/core/lit-core.min.js";`;
t.is(tf.transformWithImportMap({
imports: {
lit: "https://cdn.jsdelivr.net/gh/lit/dist@2/core/lit-core.min.js"
}
}), after);
});
test("Change to dynamic import (default)", t => {
let before = `import noop from "@zachleat/noop";`;
let tf = new ImportTransformer(before);
let after = `const noop = await import("@zachleat/noop");`;
t.is(tf.transformToDynamicImport(), after);
});
test("Change to dynamic import (destructured)", t => {
let before = `import { html, css, LitElement } from "lit";`;
let tf = new ImportTransformer(before);
let after = `const { html, css, LitElement } = await import("lit");`;
t.is(tf.transformToDynamicImport(), after);
});
test("Change to dynamic import (multiple)", t => {
let before = `import { html, css, LitElement } from "lit";
import noop from "@zachleat/noop";`;
let tf = new ImportTransformer(before);
let after = `const { html, css, LitElement } = await import("lit");
const noop = await import("@zachleat/noop");`;
t.is(tf.transformToDynamicImport(), after);
});
test("Change to dynamic import (multiple ×3)", t => {
let before = `import { html, css, LitElement } from "lit";
import noop from "@zachleat/noop";
import noop2 from "@zachleat/noop";`;
let tf = new ImportTransformer(before);
let after = `const { html, css, LitElement } = await import("lit");
const noop = await import("@zachleat/noop");
const noop2 = await import("@zachleat/noop");`;
t.is(tf.transformToDynamicImport(), after);
});
// TODO
test.skip("Change to dynamic import, multiple types", t => {
let before = `import myDefault, { myModule } from "/modules/my-module.js";`;
let tf = new ImportTransformer(before);
let after = `const myDefault = await import("my-module.js");const { myModule } = myDefault;`;
t.is(tf.transformToDynamicImport(), after);
});
// TODO
test.skip("Change to dynamic import with alias", t => {
let before = `import { reallyReallyLongModuleExportName as shortName } from "my-module.js";`;
let tf = new ImportTransformer(before);
let after = `const { reallyReallyLongModuleExportName: shortName } = await import("my-module.js");`;
t.is(tf.transformToDynamicImport(), after);
});
// TODO
test.skip("Change to dynamic import with namespace", t => {
let before = `import * as name from "my-module.js";`;
let tf = new ImportTransformer(before);
let after = `/* TODO */`;
t.is(tf.transformToDynamicImport(), after);
});
test("Change to require (default)", t => {
let before = `import noop from "@zachleat/noop";`;
let tf = new ImportTransformer(before);
let after = `const noop = require("@zachleat/noop");`;
t.is(tf.transformToRequire(), after);
});
test("Change to require (destructured)", t => {
let before = `import { html, css, LitElement } from "lit";`;
let tf = new ImportTransformer(before);
let after = `const { html, css, LitElement } = require("lit");`;
t.is(tf.transformToRequire(), after);
});
test("Change to require (multiple)", t => {
let before = `import { html, css, LitElement } from "lit";
import noop from "@zachleat/noop";`;
let tf = new ImportTransformer(before);
let after = `const { html, css, LitElement } = require("lit");
const noop = require("@zachleat/noop");`;
t.is(tf.transformToRequire(), after);
});
test("Change to require (multiple ×3)", t => {
let before = `import { html, css, LitElement } from "lit";
import noop from "@zachleat/noop";
import noop2 from "@zachleat/noop";`;
let tf = new ImportTransformer(before);
let after = `const { html, css, LitElement } = require("lit");
const noop = require("@zachleat/noop");
const noop2 = require("@zachleat/noop");`;
t.is(tf.transformToRequire(), after);
});
test("Test if has imports (using import)", t => {
let code = `import {html, css, LitElement} from "lit";`;
let tf = new ImportTransformer(code);
t.is(tf.hasImports(), true);
});
test("Test if has imports (using require)", t => {
let code = `const {html, css, LitElement} = require("lit");`;
let tf = new ImportTransformer(code);
t.is(tf.hasImports(), false);
});