diff options
| author | 2023-01-21 23:11:31 -0800 | |
|---|---|---|
| committer | 2023-01-21 23:11:31 -0800 | |
| commit | 99d2d6e607a31a1beab84e1169e2d0bc352a79cf (patch) | |
| tree | ee03ff151357941463f4418eaf787f8e948a3fe1 /src/bun.js/bindings/ZigGlobalObject.cpp | |
| parent | a2cfdf0e1c0353428f0682969e3fcfa86cc2d6a7 (diff) | |
| download | bun-99d2d6e607a31a1beab84e1169e2d0bc352a79cf.tar.gz bun-99d2d6e607a31a1beab84e1169e2d0bc352a79cf.tar.zst bun-99d2d6e607a31a1beab84e1169e2d0bc352a79cf.zip | |
Support query string parameters in module resolution
Diffstat (limited to 'src/bun.js/bindings/ZigGlobalObject.cpp')
| -rw-r--r-- | src/bun.js/bindings/ZigGlobalObject.cpp | 19 | 
1 files changed, 16 insertions, 3 deletions
| diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index 74b8eab9e..b37e280f3 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -3585,9 +3585,14 @@ JSC::Identifier GlobalObject::moduleLoaderResolve(JSGlobalObject* globalObject,      res.success = false;      ZigString keyZ = toZigString(key, globalObject);      ZigString referrerZ = referrer && !referrer.isUndefinedOrNull() && referrer.isString() ? toZigString(referrer, globalObject) : ZigStringEmpty; -    Zig__GlobalObject__resolve(&res, globalObject, &keyZ, &referrerZ); +    ZigString queryString = { 0, 0 }; +    Zig__GlobalObject__resolve(&res, globalObject, &keyZ, &referrerZ, &queryString);      if (res.success) { +        if (queryString.len > 0) { +            return JSC::Identifier::fromString(globalObject->vm(), makeString(Zig::toString(res.result.value), Zig::toString(queryString))); +        } +          return toIdentifier(res.result.value, globalObject);      } else {          auto scope = DECLARE_THROW_SCOPE(globalObject->vm()); @@ -3612,14 +3617,22 @@ JSC::JSInternalPromise* GlobalObject::moduleLoaderImportModule(JSGlobalObject* g      ErrorableZigString resolved;      auto moduleNameZ = toZigString(moduleNameValue, globalObject);      auto sourceOriginZ = sourceURL.isEmpty() ? ZigStringCwd : toZigString(sourceURL.fileSystemPath()); +    ZigString queryString = { 0, 0 };      resolved.success = false; -    Zig__GlobalObject__resolve(&resolved, globalObject, &moduleNameZ, &sourceOriginZ); +    Zig__GlobalObject__resolve(&resolved, globalObject, &moduleNameZ, &sourceOriginZ, &queryString);      if (!resolved.success) {          throwException(scope, resolved.result.err, globalObject);          return promise->rejectWithCaughtException(globalObject, scope);      } -    auto result = JSC::importModule(globalObject, toIdentifier(resolved.result.value, globalObject), +    JSC::Identifier resolvedIdentifier; +    if (queryString.len == 0) { +        resolvedIdentifier = toIdentifier(resolved.result.value, globalObject); +    } else { +        resolvedIdentifier = JSC::Identifier::fromString(vm, makeString(Zig::toString(resolved.result.value), Zig::toString(queryString))); +    } + +    auto result = JSC::importModule(globalObject, resolvedIdentifier,          JSC::jsUndefined(), parameters, JSC::jsUndefined());      RETURN_IF_EXCEPTION(scope, promise->rejectWithCaughtException(globalObject, scope)); | 
