mirror of
https://github.com/oven-sh/bun
synced 2026-02-10 02:48:50 +00:00
* wip changes for CommonJS * this rewrite is almost complete * even more code * wip * Remove usages of `import.meta.require` from builtins * Remove usages of require * Regenerate * ✂️ builtin rewrite commonjs in printer * Use lazy custom getters for import.meta * fixups * Remove depd * ugh * still crashing * fixup undici * comment out import.meta.require.resolve temporarily not a real solution but it stops the crashes * Redo import.meta.primordials * Builtins now have a `builtin://` protocol in source origin * Seems to work? * Finsih getting rid of primordials * switcharoo * No more function * just one more bug * Update launch.json * Implement `require.main` * ✂️ * Bump WebKit * Fixup import cycles * Fixup improt cycles * export more things * Implement `createCommonJSModule` builtin * More exports * regenerate * i broke some stuff * some of these tests work now * We lost the encoding * Sort of fix zlib * Sort of fix util * Update events.js * bump * bump * bump * Fix missing export in fs * fix some bugs with builtin esm modules (stream, worker_threads, events). its not perfect yet. * fix some other internal module bugs * oops * fix some extra require default stuff * uncomment this file but it crsahes on my machine * tidy code here * fixup tls exports * make simdutf happier * Add hasPrefix binding * Add test for `require.main` * Fix CommonJS evaluation order race condition * Make node:http load faster * Add missing exports to tls.js * Use the getter * Regenerate builtins * Fix assertion failure in Bun.write() * revamp dotEnv parser (#3347) - fixes `strings.indexOfAny()` - fixes OOB array access fixes #411 fixes #2823 fixes #3042 * fix tests for `expect()` (#3384) - extend test job time-out for `darwin-aarch64` * `expect().resolves` and `expect().rejects` (#3318) * Move expect and snapshots to their own files * expect().resolves and expect().rejects * Fix promise being added to unhandled rejection list * Handle timeouts in expect(<promise>) * wip merge * Fix merge issue --------- Co-authored-by: Jarred Sumner <jarred@jarredsumner.com> Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> * fixup min/memcopy (#3388) * Fix crash in builtins * Don't attempt to evaluate modules with no source code * Update WebCoreJSBuiltins.cpp * Update WebCoreJSBuiltins.cpp * Update WebCoreJSBuiltins.cpp * Fix crash * cleanup * Fix test cc @paperdave * Fixup Undici * Fix issue in node:http * Create util-deprecate.mjs * Fix several bugs * Use the identifier * Support error.code in `util.deprecate` * make the CJs loader slightly more resilient * Update WebCoreJSBuiltins.cpp * Fix macros --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Co-authored-by: dave caruso <me@paperdave.net> Co-authored-by: Alex Lam S.L <alexlamsl@gmail.com> Co-authored-by: Ashcon Partovi <ashcon@partovi.net> Co-authored-by: Ciro Spaciari <ciro.spaciari@gmail.com>
124 lines
2.7 KiB
JavaScript
124 lines
2.7 KiB
JavaScript
import { describe, expect, test } from "bun:test";
|
|
|
|
const weirdInternalSpecifiers = [
|
|
"_http_agent",
|
|
"_http_client",
|
|
"_http_common",
|
|
"_http_incoming",
|
|
"_http_outgoing",
|
|
"_http_server",
|
|
"_stream_duplex",
|
|
"_stream_passthrough",
|
|
"_stream_readable",
|
|
"_stream_transform",
|
|
"_stream_wrap",
|
|
"_stream_writable",
|
|
"_tls_common",
|
|
"_tls_wrap",
|
|
];
|
|
|
|
// Check that all the node modules comply with the expected interface in bun
|
|
var specifiers = [
|
|
"assert",
|
|
"assert/strict",
|
|
"async_hooks",
|
|
"buffer",
|
|
"child_process",
|
|
"cluster",
|
|
"console",
|
|
"constants",
|
|
"crypto",
|
|
"dgram",
|
|
"diagnostics_channel",
|
|
"dns",
|
|
"dns/promises",
|
|
"domain",
|
|
"events",
|
|
"fs",
|
|
"fs/promises",
|
|
"http",
|
|
"http2",
|
|
"https",
|
|
"inspector",
|
|
"inspector/promises",
|
|
"module",
|
|
"net",
|
|
"os",
|
|
"path",
|
|
"path/posix",
|
|
"path/win32",
|
|
"perf_hooks",
|
|
"process",
|
|
"punycode",
|
|
"querystring",
|
|
"readline",
|
|
"readline/promises",
|
|
"repl",
|
|
"stream",
|
|
"stream/consumers",
|
|
"stream/promises",
|
|
"stream/web",
|
|
"string_decoder",
|
|
"sys",
|
|
"timers",
|
|
"timers/promises",
|
|
"tls",
|
|
"trace_events",
|
|
"tty",
|
|
"url",
|
|
"util",
|
|
"util/types",
|
|
"v8",
|
|
"vm",
|
|
"worker_threads",
|
|
"zlib",
|
|
];
|
|
specifiers = [...weirdInternalSpecifiers, ...specifiers.flatMap(a => ["node:" + a, a])];
|
|
|
|
for (let specifier of specifiers) {
|
|
test(`stubbed CJS import.meta.require ${specifier}`, async () => {
|
|
import.meta.require(specifier);
|
|
});
|
|
|
|
test(`stubbed CJS require ${specifier}`, async () => {
|
|
require(specifier);
|
|
});
|
|
|
|
test(`stubbed import ${specifier}`, async () => {
|
|
const mod = await import(specifier);
|
|
if ("default" in mod) {
|
|
expect(mod).toHaveProperty("default");
|
|
const cjs = mod.default[Symbol.for("CommonJS")];
|
|
if (typeof cjs !== "undefined") {
|
|
if (cjs === 1) {
|
|
expect(typeof mod.default).toBe("function");
|
|
} else if (cjs === true) {
|
|
expect(cjs).toBe(true);
|
|
if (typeof mod.default !== "undefined") {
|
|
expect(typeof mod.default).toBe("function");
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
// TODO: uncomment this after node:module can be default imported
|
|
// throw new Error(`Module ${specifier} has no default export`);
|
|
}
|
|
});
|
|
}
|
|
|
|
// TODO: when node:vm is implemented, delete this test.
|
|
test("node:vm", () => {
|
|
const { Script } = import.meta.require("node:vm");
|
|
try {
|
|
// **This line should appear in the stack trace**
|
|
// That way it shows the "real" line causing the issue
|
|
// Instead of several layers of wrapping
|
|
new Script("1 + 1");
|
|
throw new Error("unreacahble");
|
|
} catch (e) {
|
|
const msg = Bun.inspect(e);
|
|
expect(msg).not.toContain("node:vm:");
|
|
expect(msg).toContain("**This line should appear in the stack trace**");
|
|
}
|
|
});
|