mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
Fix case in dynamic require()
This commit is contained in:
@@ -66,14 +66,20 @@ function require(name) {
|
||||
|
||||
function loadModule(meta, resolvedSpecifier) {
|
||||
"use strict";
|
||||
var Loader = globalThis.Loader;
|
||||
|
||||
var queue = @createFIFO();
|
||||
var key = resolvedSpecifier;
|
||||
var registry = Loader.registry;
|
||||
while (key) {
|
||||
@fulfillModuleSync(key);
|
||||
var entry = registry.@get(key);
|
||||
// we need to explicitly check because state could be @ModuleFetch
|
||||
// it will throw this error if we do not:
|
||||
// @throwTypeError("Requested module is already fetched.");
|
||||
var entry = Loader.registry.@get(key);
|
||||
|
||||
if (!entry || entry.state <= @ModuleFetch) {
|
||||
@fulfillModuleSync(key);
|
||||
entry = Loader.registry.@get(key);
|
||||
}
|
||||
|
||||
|
||||
// entry.fetch is a Promise<SourceCode>
|
||||
// SourceCode is not a string, it's a JSC::SourceCode object
|
||||
@@ -147,9 +153,10 @@ function loadModule(meta, resolvedSpecifier) {
|
||||
|
||||
entry.dependencies = dependencies;
|
||||
key = queue.shift();
|
||||
while (key && (registry.@get(key)?.state ?? @ModuleFetch) >= @ModuleLink) {
|
||||
while (key && (Loader.registry.@get(key)?.state ?? @ModuleFetch) >= @ModuleLink) {
|
||||
key = queue.shift();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var linkAndEvaluateResult = Loader.linkAndEvaluateModule(
|
||||
|
||||
@@ -11,6 +11,7 @@ import { describe, expect, it } from "bun:test";
|
||||
import { renderToReadableStream as renderToReadableStreamBrowser } from "react-dom/server.browser";
|
||||
import { gc } from "./gc";
|
||||
import { renderToReadableStream as renderToReadableStreamBun } from "./reactdom-bun";
|
||||
import React from "react";
|
||||
|
||||
Object.defineProperty(renderToReadableStreamBrowser, "name", {
|
||||
value: "server.browser",
|
||||
@@ -88,6 +89,17 @@ const fixtures = [
|
||||
],
|
||||
];
|
||||
|
||||
describe("React", () => {
|
||||
it("React.createContext works", () => {
|
||||
expect(typeof React.createContext).toBe("function");
|
||||
const pleaseDontThrow = React.createContext({ foo: true });
|
||||
expect(pleaseDontThrow.$$typeof.description).toBe("react.context");
|
||||
|
||||
const pleaseDontThrow2 = React.default.createContext({ foo: true });
|
||||
expect(pleaseDontThrow2.$$typeof.description).toBe("react.context");
|
||||
});
|
||||
});
|
||||
|
||||
describe("ReactDOM", () => {
|
||||
for (let renderToReadableStream of [
|
||||
renderToReadableStreamBun,
|
||||
|
||||
Reference in New Issue
Block a user