Very Popular
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248import { denoPlugin } from "./mod.ts";import { esbuild } from "./test_deps.ts";import { assert, assertEquals } from "./test_deps.ts";
const ALL = ["native", "portable"] as const;
function test( name: string, loaders: readonly ("native" | "portable")[], fn: (loader: "native" | "portable") => Promise<void>,) { for (const loader of loaders) { Deno.test(`[${loader}] ${name}`, async () => { try { await esbuild.initialize({}); await fn(loader); } finally { esbuild.stop(); } }); }}
test("remote ts", ALL, async (loader) => { const res = await esbuild.build({ plugins: [denoPlugin({ loader })], write: false, entryPoints: ["https://deno.land/std@0.139.0/hash/sha1.ts"], }); assertEquals(res.warnings, []); assertEquals(res.outputFiles.length, 1); const output = res.outputFiles[0]; assertEquals(output.path, "<stdout>"); const dataURL = `data:application/javascript;base64,${btoa(output.text)}`; const { Sha1 } = await import(dataURL); const sha = new Sha1(); sha.update("foobar"); const digest = sha.hex(); assertEquals(digest, "8843d7f92416211de9ebb963ff4ce28125932878");});
test("local ts", ALL, async (loader) => { const res = await esbuild.build({ plugins: [denoPlugin({ loader })], write: false, entryPoints: ["./testdata/mod.ts"], }); assertEquals(res.warnings, []); assertEquals(res.outputFiles.length, 1); const output = res.outputFiles[0]; assertEquals(output.path, "<stdout>"); const dataURL = `data:application/javascript;base64,${btoa(output.text)}`; const { bool } = await import(dataURL); assertEquals(bool, "asd2");});
test("remote mts", ALL, async (loader) => { const res = await esbuild.build({ plugins: [denoPlugin({ loader })], write: false, entryPoints: [ "https://gist.githubusercontent.com/lucacasonato/4ad57db57ee8d44e4ec08d6a912e93a7/raw/f33e698b4445a7243d72dbfe95afe2d004c7ffc6/mod.mts", ], }); assertEquals(res.warnings, []); assertEquals(res.outputFiles.length, 1); const output = res.outputFiles[0]; assertEquals(output.path, "<stdout>"); const dataURL = `data:application/javascript;base64,${btoa(output.text)}`; const { bool } = await import(dataURL); assertEquals(bool, "asd2");});
test("local mts", ALL, async (loader) => { const res = await esbuild.build({ plugins: [denoPlugin({ loader })], write: false, entryPoints: ["./testdata/mod.mts"], }); assertEquals(res.warnings, []); assertEquals(res.outputFiles.length, 1); const output = res.outputFiles[0]; assertEquals(output.path, "<stdout>"); const dataURL = `data:application/javascript;base64,${btoa(output.text)}`; const { bool } = await import(dataURL); assertEquals(bool, "asd2");});
test("remote js", ALL, async (loader) => { const res = await esbuild.build({ plugins: [denoPlugin({ loader })], write: false, entryPoints: ["https://crux.land/266TSp"], }); assertEquals(res.warnings, []); assertEquals(res.outputFiles.length, 1); const output = res.outputFiles[0]; assertEquals(output.path, "<stdout>"); const dataURL = `data:application/javascript;base64,${btoa(output.text)}`; const { bool } = await import(dataURL); assertEquals(bool, "asd");});
test("local js", ALL, async (loader) => { const res = await esbuild.build({ plugins: [denoPlugin({ loader })], write: false, entryPoints: ["./testdata/mod.js"], }); assertEquals(res.warnings, []); assertEquals(res.outputFiles.length, 1); const output = res.outputFiles[0]; assertEquals(output.path, "<stdout>"); const dataURL = `data:application/javascript;base64,${btoa(output.text)}`; const { bool } = await import(dataURL); assertEquals(bool, "asd");});
test("remote mjs", ALL, async (loader) => { const res = await esbuild.build({ plugins: [denoPlugin({ loader })], write: false, entryPoints: [ "https://gist.githubusercontent.com/lucacasonato/4ad57db57ee8d44e4ec08d6a912e93a7/raw/f33e698b4445a7243d72dbfe95afe2d004c7ffc6/mod.mjs", ], }); assertEquals(res.warnings, []); assertEquals(res.outputFiles.length, 1); const output = res.outputFiles[0]; assertEquals(output.path, "<stdout>"); const dataURL = `data:application/javascript;base64,${btoa(output.text)}`; const { bool } = await import(dataURL); assertEquals(bool, "asd");});
test("local mjs", ALL, async (loader) => { const res = await esbuild.build({ plugins: [denoPlugin({ loader })], write: false, entryPoints: ["./testdata/mod.mjs"], }); assertEquals(res.warnings, []); assertEquals(res.outputFiles.length, 1); const output = res.outputFiles[0]; assertEquals(output.path, "<stdout>"); const dataURL = `data:application/javascript;base64,${btoa(output.text)}`; const { bool } = await import(dataURL); assertEquals(bool, "asd");});
test("remote jsx", ALL, async (loader) => { const res = await esbuild.build({ plugins: [denoPlugin({ loader })], write: false, entryPoints: ["https://crux.land/GeaWJ"], }); assertEquals(res.warnings, []); assertEquals(res.outputFiles.length, 1); const output = res.outputFiles[0]; assertEquals(output.path, "<stdout>"); const dataURL = `data:application/javascript;base64,${btoa(output.text)}`; const m = await import(dataURL); assertEquals(m.default, "foo");});
test("local jsx", ALL, async (loader) => { const res = await esbuild.build({ plugins: [denoPlugin({ loader })], write: false, entryPoints: ["./testdata/mod.jsx"], }); assertEquals(res.warnings, []); assertEquals(res.outputFiles.length, 1); const output = res.outputFiles[0]; assertEquals(output.path, "<stdout>"); const dataURL = `data:application/javascript;base64,${btoa(output.text)}`; const m = await import(dataURL); assertEquals(m.default, "foo");});
test("remote tsx", ALL, async (loader) => { const res = await esbuild.build({ plugins: [denoPlugin({ loader })], write: false, entryPoints: ["https://crux.land/2Qjyo7"], }); assertEquals(res.warnings, []); assertEquals(res.outputFiles.length, 1); const output = res.outputFiles[0]; assertEquals(output.path, "<stdout>"); const dataURL = `data:application/javascript;base64,${btoa(output.text)}`; const m = await import(dataURL); assertEquals(m.default, "foo");});
test("local tsx", ALL, async (loader) => { const res = await esbuild.build({ plugins: [denoPlugin({ loader })], write: false, entryPoints: ["./testdata/mod.tsx"], }); assertEquals(res.warnings, []); assertEquals(res.outputFiles.length, 1); const output = res.outputFiles[0]; assertEquals(output.path, "<stdout>"); const dataURL = `data:application/javascript;base64,${btoa(output.text)}`; const m = await import(dataURL); assertEquals(m.default, "foo");});
test("bundle remote imports", ALL, async (loader) => { const res = await esbuild.build({ plugins: [denoPlugin({ loader })], write: false, bundle: true, platform: "neutral", entryPoints: ["https://deno.land/std@0.139.0/uuid/mod.ts"], }); assertEquals(res.warnings, []); assertEquals(res.outputFiles.length, 1); const output = res.outputFiles[0]; assertEquals(output.path, "<stdout>"); const dataURL = `data:application/javascript;base64,${btoa(output.text)}`; const { v4 } = await import(dataURL); assert(v4.validate(v4.generate()));});
const importMapURL = new URL("./testdata/importmap.json", import.meta.url);
test("bundle import map", ALL, async (loader) => { const res = await esbuild.build({ plugins: [ denoPlugin({ importMapURL, loader }), ], write: false, bundle: true, platform: "neutral", entryPoints: ["./testdata/importmap.js"], }); assertEquals(res.warnings, []); assertEquals(res.outputFiles.length, 1); const output = res.outputFiles[0]; assertEquals(output.path, "<stdout>"); const dataURL = `data:application/javascript;base64,${btoa(output.text)}`; const { bool } = await import(dataURL); assertEquals(bool, "asd2");});