diff options
Diffstat (limited to 'src/javascript/jsc/bindings/Path.cpp')
-rw-r--r-- | src/javascript/jsc/bindings/Path.cpp | 208 |
1 files changed, 0 insertions, 208 deletions
diff --git a/src/javascript/jsc/bindings/Path.cpp b/src/javascript/jsc/bindings/Path.cpp deleted file mode 100644 index 6e3e27b0e..000000000 --- a/src/javascript/jsc/bindings/Path.cpp +++ /dev/null @@ -1,208 +0,0 @@ - -#include "root.h" - -#include "BunClientData.h" - -#include "JavaScriptCore/JSFunction.h" -#include "JavaScriptCore/JSMicrotask.h" -#include "JavaScriptCore/ObjectConstructor.h" - -#pragma mark - Node.js Path - -namespace Zig { - -static JSC::JSObject* createPath(JSC::JSGlobalObject* globalThis, bool isWindows); - -using JSGlobalObject = JSC::JSGlobalObject; -using Exception = JSC::Exception; -using JSValue = JSC::JSValue; -using JSString = JSC::JSString; -using JSModuleLoader = JSC::JSModuleLoader; -using JSModuleRecord = JSC::JSModuleRecord; -using Identifier = JSC::Identifier; -using SourceOrigin = JSC::SourceOrigin; -using JSObject = JSC::JSObject; -using JSNonFinalObject = JSC::JSNonFinalObject; -namespace JSCastingHelpers = JSC::JSCastingHelpers; - -// clang-format off -#define DEFINE_CALLBACK_FUNCTION_BODY(ZigFunction) JSC::VM& vm = globalObject->vm(); \ - auto* thisObject = JSC::jsDynamicCast<JSC::JSFinalObject*>( callFrame->thisValue()); \ - auto scope = DECLARE_THROW_SCOPE(vm); \ - if (!thisObject) \ - return throwVMTypeError(globalObject, scope); \ - auto argCount = static_cast<uint16_t>(callFrame->argumentCount()); \ - WTF::Vector<JSC::EncodedJSValue, 16> arguments; \ - arguments.reserveInitialCapacity(argCount); \ - if (argCount) { \ - for (uint16_t i = 0; i < argCount; ++i) { \ - arguments.uncheckedAppend(JSC::JSValue::encode(callFrame->uncheckedArgument(i))); \ - } \ - } \ - auto clientData = WebCore::clientData(vm); \ - auto isWindows = thisObject->get(globalObject, clientData->builtinNames().isWindowsPrivateName()); \ - JSC::JSValue result = JSC::JSValue::decode( \ - ZigFunction(globalObject, isWindows.asBoolean(), reinterpret_cast<JSC__JSValue*>(arguments.data()), argCount) \ - ); \ - JSC::JSObject *obj = result.getObject(); \ - if (UNLIKELY(obj != nullptr && obj->isErrorInstance())) { \ - scope.throwException(globalObject, obj); \ - return JSC::JSValue::encode(JSC::jsUndefined()); \ - } \ - if (UNLIKELY(scope.exception())) \ - return JSC::JSValue::encode(JSC::jsUndefined()); \ - return JSC::JSValue::encode(result); - -// clang-format on - -static JSC_DECLARE_HOST_FUNCTION(Path_functionBasename); -static JSC_DEFINE_HOST_FUNCTION(Path_functionBasename, - (JSC::JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) -{ - DEFINE_CALLBACK_FUNCTION_BODY(Bun__Path__basename); -} - -static JSC_DECLARE_HOST_FUNCTION(Path_functionDirname); -static JSC_DEFINE_HOST_FUNCTION(Path_functionDirname, - (JSC::JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) -{ - DEFINE_CALLBACK_FUNCTION_BODY(Bun__Path__dirname); -} -static JSC_DECLARE_HOST_FUNCTION(Path_functionExtname); -static JSC_DEFINE_HOST_FUNCTION(Path_functionExtname, - (JSC::JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) -{ - DEFINE_CALLBACK_FUNCTION_BODY(Bun__Path__extname); -} -static JSC_DECLARE_HOST_FUNCTION(Path_functionFormat); -static JSC_DEFINE_HOST_FUNCTION(Path_functionFormat, - (JSC::JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) -{ - DEFINE_CALLBACK_FUNCTION_BODY(Bun__Path__format); -} -static JSC_DECLARE_HOST_FUNCTION(Path_functionIsAbsolute); -static JSC_DEFINE_HOST_FUNCTION(Path_functionIsAbsolute, - (JSC::JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) -{ - DEFINE_CALLBACK_FUNCTION_BODY(Bun__Path__isAbsolute); -} -static JSC_DECLARE_HOST_FUNCTION(Path_functionJoin); -static JSC_DEFINE_HOST_FUNCTION(Path_functionJoin, - (JSC::JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) -{ - DEFINE_CALLBACK_FUNCTION_BODY(Bun__Path__join); -} -static JSC_DECLARE_HOST_FUNCTION(Path_functionNormalize); -static JSC_DEFINE_HOST_FUNCTION(Path_functionNormalize, - (JSC::JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) -{ - DEFINE_CALLBACK_FUNCTION_BODY(Bun__Path__normalize); -} -static JSC_DECLARE_HOST_FUNCTION(Path_functionParse); -static JSC_DEFINE_HOST_FUNCTION(Path_functionParse, - (JSC::JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) -{ - DEFINE_CALLBACK_FUNCTION_BODY(Bun__Path__parse); -} -static JSC_DECLARE_HOST_FUNCTION(Path_functionRelative); -static JSC_DEFINE_HOST_FUNCTION(Path_functionRelative, - (JSC::JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) -{ - DEFINE_CALLBACK_FUNCTION_BODY(Bun__Path__relative); -} -static JSC_DECLARE_HOST_FUNCTION(Path_functionResolve); -static JSC_DEFINE_HOST_FUNCTION(Path_functionResolve, - (JSC::JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) -{ - DEFINE_CALLBACK_FUNCTION_BODY(Bun__Path__resolve); -} -static JSC_DECLARE_HOST_FUNCTION(Path_functionToNamespacedPath); -static JSC_DEFINE_HOST_FUNCTION(Path_functionToNamespacedPath, - (JSC::JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) -{ - auto argCount = static_cast<uint16_t>(callFrame->argumentCount()); - // TODO: - return JSC::JSValue::encode(callFrame->argument(0)); -} - -static JSC::JSObject* createPath(JSGlobalObject* globalThis, bool isWindows) -{ - JSC::VM& vm = globalThis->vm(); - JSC::Structure* plainObjectStructure = JSC::JSFinalObject::createStructure(vm, globalThis, globalThis->objectPrototype(), 0); - JSC::JSObject* path = JSC::JSFinalObject::create(vm, plainObjectStructure); - auto clientData = WebCore::clientData(vm); - - path->putDirect(vm, clientData->builtinNames().isWindowsPrivateName(), - JSC::jsBoolean(isWindows), 0); - - path->putDirect(vm, clientData->builtinNames().basenamePublicName(), - JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalThis), 0, - "basename"_s, Path_functionBasename), - 0); - path->putDirect(vm, clientData->builtinNames().dirnamePublicName(), - JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalThis), 0, - "dirname"_s, Path_functionDirname), - 0); - path->putDirect(vm, clientData->builtinNames().extnamePublicName(), - JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalThis), 0, - "extname"_s, Path_functionExtname), - 0); - path->putDirect(vm, clientData->builtinNames().formatPublicName(), - JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalThis), 0, - "format"_s, Path_functionFormat), - 0); - path->putDirect(vm, clientData->builtinNames().isAbsolutePublicName(), - JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalThis), 0, - "isAbsolute"_s, Path_functionIsAbsolute), - 0); - path->putDirect(vm, clientData->builtinNames().joinPublicName(), - JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalThis), 0, - "join"_s, Path_functionJoin), - 0); - path->putDirect(vm, clientData->builtinNames().normalizePublicName(), - JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalThis), 0, - "normalize"_s, Path_functionNormalize), - 0); - path->putDirect(vm, clientData->builtinNames().parsePublicName(), - JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalThis), 0, - "parse"_s, Path_functionParse), - 0); - path->putDirect(vm, clientData->builtinNames().relativePublicName(), - JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalThis), 0, - "relative"_s, Path_functionRelative), - 0); - path->putDirect(vm, clientData->builtinNames().resolvePublicName(), - JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalThis), 0, - "resolve"_s, Path_functionResolve), - 0); - - path->putDirect(vm, clientData->builtinNames().toNamespacedPathPublicName(), - JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalThis), 0, - "toNamespacedPath"_s, - Path_functionToNamespacedPath), - 0); - - if (isWindows) { - path->putDirect(vm, clientData->builtinNames().sepPublicName(), - JSC::jsString(vm, WTF::String("\\"_s)), 0); - path->putDirect(vm, clientData->builtinNames().delimiterPublicName(), - JSC::jsString(vm, WTF::String(";"_s)), 0); - } else { - path->putDirect(vm, clientData->builtinNames().sepPublicName(), - JSC::jsString(vm, WTF::String("/"_s)), 0); - path->putDirect(vm, clientData->builtinNames().delimiterPublicName(), - JSC::jsString(vm, WTF::String(":"_s)), 0); - } - - return path; -} - -} // namespace Zig - -extern JSC__JSValue Bun__Path__create(JSC::JSGlobalObject* globalObject, bool isWindows) -{ - JSC::VM& vm = globalObject->vm(); - - return JSC::JSValue::encode(JSC::JSValue(Zig::createPath( - globalObject, isWindows))); -}
\ No newline at end of file |