Use native AbortController & AbortSignal when abort-controller is loaded (#8489)

* Nationalize `abort-controller`

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
Jarred Sumner
2024-01-25 15:01:29 -08:00
committed by GitHub
parent f4f8bb377a
commit b6c1dc1fa8
4 changed files with 93 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
#pragma once
#include "JSAbortController.h"
#include "JSAbortSignal.h"
using namespace JSC;
using namespace WebCore;
namespace Zig {
inline void generateNativeModule_AbortControllerModule(
JSC::JSGlobalObject *lexicalGlobalObject, JSC::Identifier moduleKey,
Vector<JSC::Identifier, 4> &exportNames,
JSC::MarkedArgumentBuffer &exportValues) {
Zig::GlobalObject *globalObject =
reinterpret_cast<Zig::GlobalObject *>(lexicalGlobalObject);
JSC::VM &vm = globalObject->vm();
auto *abortController =
WebCore::JSAbortController::getConstructor(vm, globalObject).getObject();
JSValue abortSignal =
WebCore::JSAbortSignal::getConstructor(vm, globalObject);
const auto controllerIdent = Identifier::fromString(vm, "AbortController"_s);
const auto signalIdent = Identifier::fromString(vm, "AbortSignal"_s);
const Identifier esModuleMarker = builtinNames(vm).__esModulePublicName();
exportNames.append(vm.propertyNames->defaultKeyword);
exportValues.append(abortController);
exportNames.append(signalIdent);
exportValues.append(abortSignal);
exportNames.append(controllerIdent);
exportValues.append(abortController);
exportNames.append(esModuleMarker);
exportValues.append(jsBoolean(true));
// https://github.com/mysticatea/abort-controller/blob/a935d38e09eb95d6b633a8c42fcceec9969e7b05/dist/abort-controller.js#L125
abortController->putDirect(
vm, signalIdent, abortSignal,
static_cast<unsigned>(PropertyAttribute::DontEnum));
abortController->putDirect(
vm, controllerIdent, abortController,
static_cast<unsigned>(PropertyAttribute::DontEnum));
abortController->putDirect(
vm, vm.propertyNames->defaultKeyword, abortController,
static_cast<unsigned>(PropertyAttribute::DontEnum));
}
} // namespace Zig