/* * Copyright (C) 2016-2019 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. */ #pragma once #include "IDLTypes.h" #include "JSDOMConvertBase.h" #include "StringAdaptors.h" namespace WebCore { WEBCORE_EXPORT String identifierToString(JSC::JSGlobalObject&, const JSC::Identifier&); WEBCORE_EXPORT String identifierToByteString(JSC::JSGlobalObject&, const JSC::Identifier&); WEBCORE_EXPORT String valueToByteString(JSC::JSGlobalObject&, JSC::JSValue); WEBCORE_EXPORT AtomString valueToByteAtomString(JSC::JSGlobalObject&, JSC::JSValue); WEBCORE_EXPORT String identifierToUSVString(JSC::JSGlobalObject&, const JSC::Identifier&); WEBCORE_EXPORT String valueToUSVString(JSC::JSGlobalObject&, JSC::JSValue); WEBCORE_EXPORT AtomString valueToUSVAtomString(JSC::JSGlobalObject&, JSC::JSValue); inline AtomString propertyNameToString(JSC::PropertyName propertyName) { ASSERT(!propertyName.isSymbol()); return propertyName.uid() ? propertyName.uid() : propertyName.publicName(); } inline AtomString propertyNameToAtomString(JSC::PropertyName propertyName) { return AtomString(propertyName.uid() ? propertyName.uid() : propertyName.publicName()); } // MARK: - // MARK: String types template<> struct Converter : DefaultConverter { static String convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSValue value) { return value.toWTFString(&lexicalGlobalObject); } }; template<> struct JSConverter { static constexpr bool needsState = true; static constexpr bool needsGlobalObject = false; static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const String& value) { return JSC::jsStringWithCache(JSC::getVM(&lexicalGlobalObject), value); } static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const UncachedString& value) { return JSC::jsString(JSC::getVM(&lexicalGlobalObject), value.string); } static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const OwnedString& value) { return JSC::jsOwnedString(JSC::getVM(&lexicalGlobalObject), value.string); } static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const URL& value) { return JSC::jsOwnedString(JSC::getVM(&lexicalGlobalObject), value.string()); } }; template<> struct Converter : DefaultConverter { static String convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSValue value) { return valueToByteString(lexicalGlobalObject, value); } }; template<> struct JSConverter { static constexpr bool needsState = true; static constexpr bool needsGlobalObject = false; static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const String& value) { return JSC::jsStringWithCache(JSC::getVM(&lexicalGlobalObject), value); } static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const UncachedString& value) { return JSC::jsString(JSC::getVM(&lexicalGlobalObject), value.string); } static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const OwnedString& value) { return JSC::jsOwnedString(JSC::getVM(&lexicalGlobalObject), value.string); } }; template<> struct Converter : DefaultConverter { static String convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSValue value) { return valueToUSVString(lexicalGlobalObject, value); } static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const URL& value) { return JSC::jsOwnedString(JSC::getVM(&lexicalGlobalObject), value.string()); } }; template<> struct JSConverter { static constexpr bool needsState = true; static constexpr bool needsGlobalObject = false; static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const String& value) { return JSC::jsStringWithCache(JSC::getVM(&lexicalGlobalObject), value); } static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const UncachedString& value) { return JSC::jsString(JSC::getVM(&lexicalGlobalObject), value.string); } static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const OwnedString& value) { return JSC::jsOwnedString(JSC::getVM(&lexicalGlobalObject), value.string); } static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const URL& value) { return JSC::jsOwnedString(JSC::getVM(&lexicalGlobalObject), value.string()); } }; // MARK: - // MARK: String type adaptors template struct Converter> : DefaultConverter> { static String convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSValue value) { if (value.isNull()) return emptyString(); return Converter::convert(lexicalGlobalObject, value); } }; template struct JSConverter> { static constexpr bool needsState = true; static constexpr bool needsGlobalObject = false; static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const String& value) { return JSConverter::convert(lexicalGlobalObject, value); } }; template struct Converter> : DefaultConverter> { static AtomString convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSValue value) { if (value.isNull()) return emptyAtom(); return Converter>::convert(lexicalGlobalObject, value); } }; template struct JSConverter> { static constexpr bool needsState = true; static constexpr bool needsGlobalObject = false; static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const AtomString& value) { return JSConverter::convert(lexicalGlobalObject, value); } }; template struct Converter> : DefaultConverter> { static AtomString convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSValue value) { static_assert(std::is_same::value, "This adaptor is only supported for IDLDOMString at the moment."); return value.toString(&lexicalGlobalObject)->toAtomString(&lexicalGlobalObject); } }; template<> struct Converter> : DefaultConverter> { static AtomString convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSValue value) { return valueToUSVAtomString(lexicalGlobalObject, value); } }; template<> struct Converter> : DefaultConverter> { static AtomString convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSValue value) { return valueToByteAtomString(lexicalGlobalObject, value); } }; template struct JSConverter> { static constexpr bool needsState = true; static constexpr bool needsGlobalObject = false; static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const AtomString& value) { return JSConverter::convert(lexicalGlobalObject, value); } static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const String& value) { return JSConverter::convert(lexicalGlobalObject, value); } static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const URL& value) { return JSConverter::convert(lexicalGlobalObject, value.string()); } }; template<> struct JSConverter> { static constexpr bool needsState = true; static constexpr bool needsGlobalObject = false; static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const AtomString& value) { return JSConverter::convert(lexicalGlobalObject, value.string()); } static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const String& value) { return JSConverter::convert(lexicalGlobalObject, value); } static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const URL& value) { return JSConverter::convert(lexicalGlobalObject, value.string()); } }; template<> struct JSConverter> { static constexpr bool needsState = true; static constexpr bool needsGlobalObject = false; static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const AtomString& value) { return JSConverter::convert(lexicalGlobalObject, value.string()); } }; template struct Converter> : DefaultConverter> { static AtomString convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSValue value) { static_assert(std::is_same::value, "This adaptor is only supported for IDLDOMString at the moment."); return value.toString(&lexicalGlobalObject)->toExistingAtomString(&lexicalGlobalObject); } }; template struct JSConverter> { static constexpr bool needsState = true; static constexpr bool needsGlobalObject = false; static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const AtomString& value) { static_assert(std::is_same::value, "This adaptor is only supported for IDLDOMString at the moment."); return JSConverter::convert(lexicalGlobalObject, value); } }; } // namespace WebCoreed/zlib Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2023-10-18Adds macOS Keychain certs to default CA storeGravatar Anshul Gupta 2-2/+175
2023-10-18fix(node:buffer): fix the behavior of `totalLength` in `Buffer.concat` (#6574)Gravatar Ai Hoshino 2-3/+23
* fix(node:buffer): fix the behavior of `totalLength` in `Buffer.concat` Close: #6570 Close: #3639 * fix buffer totalLength type --------- Co-authored-by: Ashcon Partovi <ashcon@partovi.net>
2023-10-18fix: change `--no-scripts` to `--ignore-scripts` (#6587)Gravatar Dawid Sowa 1-2/+2
2023-10-18fix: online docs moved (#6579)Gravatar Mountain/\Ash 1-1/+1
2023-10-18Fix minimum kernel version in docs (#6153)Gravatar Kevin Latka 1-1/+1
* Fix minimum kernel version in docs * Update install.md * Update install.md * Update install.md --------- Co-authored-by: Colin McDonnell <colinmcd94@gmail.com>
2023-10-18build-id++Gravatar Dylan Conway 1-1/+1
2023-10-18fix(web): stub `performance.getEntriesByName` (#6542)Gravatar Liz 1-0/+18
2023-10-17update root package variableGravatar Dylan Conway 1-8/+3
2023-10-17Fix missing `{port: 0}` causing flaky testGravatar Ashcon Partovi 1-0/+2
2023-10-17test changes in usockets in ciGravatar Dylan Conway 5-0/+9
2023-10-17fix #4766 (#6563)Gravatar Pierre CM 1-4/+4
2023-10-17Update ZigGeneratedClasses.cppGravatar Dylan Conway 1-2/+0
2023-10-17use npm alias in dependencies (#6545)Gravatar Dylan Conway 7-29/+271
* aliased package in dependencies * other buf * make sure version works * make sure overrides don't override alias * tests * update * comments
2023-10-17fix(node:http): fix `server.address()` (#6442)Gravatar Ai Hoshino 12-12/+453
Closes #6413, #5850
2023-10-17docs: fix ws.publish (#6558)Gravatar Aral Roca Gomez 1-1/+1
In this example there is no server variable in the context, and here it makes more sense to use ws.publish. It is explained below that once the serve is done, the server.publish can be used.
2023-10-17perf(bun-types): remove needless some call (#6550)Gravatar Mikhail 1-1/+1
2023-10-16fix(runtime): make some things more stable (partial jsc debug build) (#5881)Gravatar dave caruso 116-1446/+1830
* make our debug assertions work * install bun-webkit-debug * more progress * ok * progress... * more debug build stuff * ok * a * asdfghjkl * fix(runtime): fix bad assertion failure in JSBufferList * ok * stuff * upgrade webkit * Update src/bun.js/bindings/JSDOMWrapperCache.h Co-authored-by: Jarred Sumner <jarred@jarredsumner.com> * fix message for colin's changes * okay * fix cjs prototype * implement mainModule * i think this fixes it all --------- Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2023-10-16fix(runtime): improve IPC reliability + organization pass on that code (#6475)Gravatar dave caruso 15-98/+266
* dfghj * Handle messages that did not finish * tidy * ok * a * Merge remote-tracking branch 'origin/main' into dave/ipc-fixes * test failures --------- Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2023-10-16Simplify getting Set of extentions (#4975)Gravatar Mikhail 1-3/+3
2023-10-16Fix formattingGravatar Ashcon Partovi 1-3/+1
2023-10-16fix(test): when tests run with --only the nested describe blocks `.on… (#5616)Gravatar Igor Shapiro 2-13/+45
2023-10-16perf(node:events): optimize `emit(...)` function (#5485)Gravatar Yannik Schröder 3-11/+132
2023-10-16fix: don't remove content-encoding header from header table (#5743)Gravatar Liz 2-2/+25
Closes #5668
2023-10-16fix(sqlite) Insert .all() does not return an array #5872 (#5946)Gravatar Hugo Galan 2-7/+11
* fixing #5872 * removing useless comment
2023-10-16Fix formattingGravatar Ashcon Partovi 2-5/+4
2023-10-16Fix `Response.statusText` (#6151)Gravatar Chris Toshok 10-238/+269
2023-10-16fix-subprocess-argument-missing (#6407)Gravatar Nicolae-Rares Ailincai 4-2/+40
* fix-subprocess-argument-missing * fix-tests * nitpick, these should === not just be undefined --------- Co-authored-by: dave caruso <me@paperdave.net>
2023-10-16Add type parameter to `expect` (#6128)Gravatar Voldemat 1-3/+3
2023-10-16fix(node:worker_threads): ensure threadId property is exposed on ↵Gravatar Jérôme Benoit 6-15/+75
worker_threads instance (#6521) * fix: ensure threadId property is exposed on worker_threads instance Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com> * fix: rename lazy worker_threads module properties Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com> * fix: add getter for threadId Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com> * test: improve worker_threads UTs Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com> * test: fix lazy loading Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com> * test: fix worker_threads test Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org> * fix: return the worker threadId Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com> * test: refine worker_threads expectation on threadId Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org> --------- Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com> Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
2023-10-16Fix use before define bug in sqliteGravatar Ashcon Partovi 2-5/+5
Fixes #6481
2023-10-16fix(jest): fix toStrictEqual on same URLs (#6528)Gravatar João Alisson 2-13/+16
Fixes #6492
2023-10-16Fix `toHaveBeenCalled` having wrong error signatureGravatar Ashcon Partovi 1-2/+2
Fixes #6527
2023-10-16Fix formattingGravatar Ashcon Partovi 1-2/+1
2023-10-16Add `reusePort` to `Bun.serve` typesGravatar Ashcon Partovi 1-0/+9
2023-10-16Fix `request.url` having incorrect portGravatar Ashcon Partovi 4-1/+92
Fixes #6443
2023-10-16Remove uWebSockets header from Bun.serve responsesGravatar Ashcon Partovi 1-6/+6
2023-10-16Rename some testsGravatar Ashcon Partovi 3-0/+0
2023-10-16Fix #6467Gravatar Ashcon Partovi 2-3/+10
2023-10-16Update InternalModuleRegistryConstants.hGravatar Dylan Conway 1-3/+3
2023-10-16Development -> Contributing (#6538)Gravatar Colin McDonnell 2-1/+1
Co-authored-by: Colin McDonnell <colin@KennyM1.local>
2023-10-14fix(net/tls) fix pg hang on end + hanging on query (#6487)Gravatar Ciro Spaciari 3-8/+36
* fix pg hang on end + hanging on query * remove dummy function * fix node-stream * add test * fix test * return error in test * fix test use once instead of on * fix OOM * generated * 💅 * 💅
2023-10-13fix installing dependencies that match workspace versions (#6494)Gravatar Dylan Conway 4-2/+64
* check if dependency matches workspace version * test * Update lockfile.zig * set resolution to workspace package id
2023-10-13fix lockfile struct padding (#6495)Gravatar Dylan Conway 3-3/+18
* integrity padding * error message for bytes at end of struct