aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitmodules7
-rw-r--r--Dockerfile24
-rw-r--r--Makefile14
-rw-r--r--src/bun.js/bindings/OnigurumaRegExp.cpp903
-rw-r--r--src/bun.js/bindings/OnigurumaRegExp.h106
-rw-r--r--src/bun.js/bindings/ZigGlobalObject.cpp19
-rw-r--r--src/bun.js/bindings/ZigGlobalObject.h5
-rw-r--r--src/bun.js/bindings/bindings.cpp18
-rw-r--r--src/bun.js/bindings/headers-cpp.h2
-rw-r--r--src/bun.js/bindings/headers.h2
-rw-r--r--src/bun.js/bindings/webcore/DOMClientIsoSubspaces.h1
-rw-r--r--src/bun.js/bindings/webcore/DOMIsoSubspaces.h1
-rw-r--r--src/bun.js/builtins/WebCoreJSBuiltinInternals.cpp1
-rw-r--r--src/bun.js/builtins/WebCoreJSBuiltins.cpp2
-rw-r--r--src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/ConsoleObjectBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/ConsoleObjectBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/OnigurumaRegExpPrototypeBuiltins.cpp672
-rw-r--r--src/bun.js/builtins/cpp/OnigurumaRegExpPrototypeBuiltins.h201
-rw-r--r--src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/StreamInternalsBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/StreamInternalsBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/TransformStreamBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/TransformStreamBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/WebCoreJSBuiltinInternals.h1
-rw-r--r--src/bun.js/builtins/cpp/WebCoreJSBuiltins.h5
-rw-r--r--src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.h1
-rw-r--r--src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.cpp1
-rw-r--r--src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.h1
-rw-r--r--src/bun.js/builtins/js/OnigurumaRegExpPrototype.js583
m---------src/deps/oniguruma0
-rw-r--r--src/js_ast.zig27
-rw-r--r--src/js_printer.zig27
-rw-r--r--test/bun.js/body-stream.test.ts20
-rw-r--r--test/bun.js/oniguruma-regexp.test.ts860
-rw-r--r--test/bun.js/test-test.test.ts5
69 files changed, 19 insertions, 3531 deletions
diff --git a/.gitmodules b/.gitmodules
index 0030d7cd9..8012e5461 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -62,10 +62,3 @@ ignore = dirty
depth = 1
shallow = true
fetchRecurseSubmodules = false
-[submodule "src/deps/oniguruma"]
-path = src/deps/oniguruma
-url = https://github.com/kkos/oniguruma
-ignore = dirty
-depth = 1
-shallow = true
-fetchRecurseSubmodules = false
diff --git a/Dockerfile b/Dockerfile
index a42aefb74..f5f16056b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -195,29 +195,7 @@ WORKDIR $BUN_DIR
RUN --mount=type=cache,target=/ccache cd $BUN_DIR && \
make libarchive && rm -rf src/deps/libarchive Makefile
-FROM bun-base as oniguruma
-ARG DEBIAN_FRONTEND
-ARG GITHUB_WORKSPACE
-ARG ZIG_PATH
-# Directory extracts to "bun-webkit"
-ARG WEBKIT_DIR
-ARG BUN_RELEASE_DIR
-ARG BUN_DEPS_OUT_DIR
-ARG BUN_DIR
-ARG CPU_TARGET
-ENV CPU_TARGET=${CPU_TARGET}
-
-RUN install_packages autoconf automake libtool pkg-config
-
-COPY Makefile ${BUN_DIR}/Makefile
-COPY src/deps/oniguruma ${BUN_DIR}/src/deps/oniguruma
-
-ENV CCACHE_DIR=/ccache
-
-WORKDIR $BUN_DIR
-
-RUN --mount=type=cache,target=/ccache cd ${BUN_DIR} && make oniguruma && rm -rf src/deps/oniguruma Makefile
FROM bun-base as tinycc
@@ -458,7 +436,6 @@ COPY --from=zlib ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
COPY --from=lolhtml ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
COPY --from=mimalloc ${BUN_DEPS_OUT_DIR}/*.o ${BUN_DEPS_OUT_DIR}/
COPY --from=libarchive ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
-COPY --from=oniguruma ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
COPY --from=picohttp ${BUN_DEPS_OUT_DIR}/*.o ${BUN_DEPS_OUT_DIR}/
COPY --from=uws ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
COPY --from=uws ${BUN_DEPS_OUT_DIR}/*.o ${BUN_DEPS_OUT_DIR}/
@@ -522,7 +499,6 @@ COPY --from=libarchive ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
COPY --from=boringssl ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
COPY --from=lolhtml ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
COPY --from=mimalloc ${BUN_DEPS_OUT_DIR}/*.o ${BUN_DEPS_OUT_DIR}/
-COPY --from=oniguruma ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
COPY --from=picohttp ${BUN_DEPS_OUT_DIR}/*.o ${BUN_DEPS_OUT_DIR}/
COPY --from=sqlite ${BUN_DEPS_OUT_DIR}/*.o ${BUN_DEPS_OUT_DIR}/
COPY --from=tinycc ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
diff --git a/Makefile b/Makefile
index 43ed3138a..e2078e8d3 100644
--- a/Makefile
+++ b/Makefile
@@ -418,8 +418,7 @@ MINIMUM_ARCHIVE_FILES = -L$(BUN_DEPS_OUT_DIR) \
$(_MIMALLOC_LINK) \
-lssl \
-lcrypto \
- -llolhtml \
- -lonig
+ -llolhtml
ARCHIVE_FILES_WITHOUT_LIBCRYPTO = $(MINIMUM_ARCHIVE_FILES) \
-larchive \
@@ -531,7 +530,7 @@ builtins: ## to generate builtins
generate-builtins: builtins
.PHONY: vendor-without-check
-vendor-without-check: npm-install node-fallbacks runtime_js fallback_decoder bun_error mimalloc picohttp zlib boringssl libarchive lolhtml usockets uws tinycc oniguruma
+vendor-without-check: npm-install node-fallbacks runtime_js fallback_decoder bun_error mimalloc picohttp zlib boringssl libarchive lolhtml usockets uws tinycc
BUN_TYPES_REPO_PATH ?= $(realpath packages/bun-types)
@@ -583,13 +582,6 @@ boringssl-debug: boringssl-build-debug boringssl-copy
compile-ffi-test:
clang $(OPTIMIZATION_LEVEL) -shared -undefined dynamic_lookup -o /tmp/bun-ffi-test.dylib -fPIC ./test/bun.js/ffi-test.c
-.PHONY: oniguruma
-oniguruma:
- cd $(BUN_DEPS_DIR)/oniguruma && \
- autoreconf -vfi && \
- CFLAGS="$(CFLAGS)" $(CCACHE_CC_FLAG) ./configure && \
- make -j${CPUS} && \
- cp ./src/.libs/libonig.a $(BUN_DEPS_OUT_DIR)/libonig.a
sqlite:
@@ -880,7 +872,7 @@ clone-submodules:
git -c submodule."src/bun.js/WebKit".update=none submodule update --init --recursive --depth=1 --progress
.PHONY: devcontainer
-devcontainer: $(OBJ_DIR) $(DEBUG_OBJ_DIR) clone-submodules mimalloc zlib libarchive boringssl picohttp identifier-cache node-fallbacks npm-install api analytics bun_error fallback_decoder bindings uws lolhtml usockets tinycc runtime_js_dev sqlite oniguruma webcrypto-debug webcrypto
+devcontainer: $(OBJ_DIR) $(DEBUG_OBJ_DIR) clone-submodules mimalloc zlib libarchive boringssl picohttp identifier-cache node-fallbacks npm-install api analytics bun_error fallback_decoder bindings uws lolhtml usockets tinycc runtime_js_dev sqlite webcrypto-debug webcrypto
.PHONY: devcontainer-build
devcontainer-build:
diff --git a/src/bun.js/bindings/OnigurumaRegExp.cpp b/src/bun.js/bindings/OnigurumaRegExp.cpp
deleted file mode 100644
index 446a576e8..000000000
--- a/src/bun.js/bindings/OnigurumaRegExp.cpp
+++ /dev/null
@@ -1,903 +0,0 @@
-#include "OnigurumaRegExp.h"
-
-#include "ZigGlobalObject.h"
-#define ONIG_ESCAPE_UCHAR_COLLISION
-#include "oniguruma/src/oniguruma.h"
-
-using namespace JSC;
-using namespace WebCore;
-
-#include "WebCoreJSClientData.h"
-
-extern "C" EncodedJSValue jsFunctionGetOnigurumaRegExpConstructor(JSGlobalObject* lexicalGlobalObject, EncodedJSValue thisValue, PropertyName attributeName)
-{
- auto& vm = lexicalGlobalObject->vm();
- Zig::GlobalObject* globalObject = reinterpret_cast<Zig::GlobalObject*>(lexicalGlobalObject);
- return JSValue::encode(globalObject->OnigurumaRegExpConstructor());
-}
-
-namespace Zig {
-
-static WTF::String to16Bit(ASCIILiteral str)
-{
- UChar* buffer = nullptr;
- auto out = WTF::StringImpl::createUninitialized(str.length(), buffer);
- WTF::StringImpl::copyCharacters(buffer, str.characters8(), str.length());
- return WTF::String(WTFMove(out));
-}
-
-static WTF::String to16Bit(JSC::JSString* str, JSC::JSGlobalObject* globalObject)
-{
- if (!str->is8Bit() || str->length() == 0) {
- return str->value(globalObject);
- }
-
- auto value = str->value(globalObject);
- auto outStr = WTF::String(value.characters8(), value.length());
- outStr.convertTo16Bit();
- return outStr;
-}
-
-static WTF::String to16Bit(WTF::String str)
-{
- if (str.is8Bit()) {
- auto out = str.isolatedCopy();
- out.convertTo16Bit();
- return out;
- }
-
- return str;
-}
-
-static WTF::String to16Bit(JSValue jsValue, JSC::JSGlobalObject* globalObject, ASCIILiteral defaultValue)
-{
- if (!jsValue || jsValue.isUndefinedOrNull()) {
- return to16Bit(defaultValue);
- }
-
- auto* jsString = jsValue.toString(globalObject);
- if (jsString->length() == 0) {
- return to16Bit(defaultValue);
- }
-
- return to16Bit(jsString, globalObject);
-}
-
-static WTF::String convertToOnigurumaSyntax(const WTF::String& string)
-{
- WTF::StringBuilder sb;
- uint32_t length = string.length();
- const UChar* characters = string.characters16();
- bool inCharacterClass = false;
- bool inCharacterProperty = false;
-
- for (int i = 0; i < length; i++) {
-
- // extend multibyte hex characters
- while (characters[i] == '\\') {
- if (i + 1 < length && characters[i + 1] == 'x') {
- if (i + 2 < length && isxdigit(characters[i + 2])) {
- if (i + 3 < length && isxdigit(characters[i + 3])) {
- sb.append(string.substring(i, 4));
- sb.append("\\x00"_s);
- i += 4;
- } else {
- // skip '\'
- sb.append(string.substring(i + 1, 2));
- i += 3;
- }
- } else {
- break;
- }
- } else {
- break;
- }
- }
-
- if (i >= length) {
- break;
- }
-
- // convert character properties
- if (UNLIKELY(characters[i] == '{' && i - 2 >= 0 && (characters[i - 1] == 'p' || characters[i - 1] == 'P') && characters[i - 2] == '\\')) {
- sb.append(characters[i]);
- i += 1;
- if (i == length) {
- break;
- }
-
- // handle negative
- if (characters[i] == '^') {
- sb.append(characters[i]);
- i += 1;
- if (i == length) {
- break;
- }
- }
-
- // could be \p{propName=propValue} or \p{propValue}.
- bool foundEquals = false;
- WTF::StringBuilder propName;
- while (characters[i] != '}') {
- if (characters[i] == '=') {
- foundEquals = true;
- i += 1;
- if (i == length) {
- break;
- }
- continue;
- }
-
- if (foundEquals) {
- sb.append(characters[i]);
- } else {
- propName.append(characters[i]);
- }
-
- i += 1;
- if (i == length) {
- break;
- }
- }
-
- if (!foundEquals) {
- sb.append(propName.toString());
- }
- }
-
- if (i >= length) {
- break;
- }
-
- // escape brackets in character classes
- if (inCharacterClass) {
- // we know ']' will be escaped so there isn't a need to scan for the closing bracket
- if (characters[i] == '[' || characters[i] == ']') {
- if (characters[i - 1] != '\\') {
- // character class intersections not supported, assume end of character class
- if (characters[i] == ']') {
- inCharacterClass = false;
- } else {
- sb.append('\\');
- }
- }
- }
- } else {
- if (characters[i] == '[') {
- if (i - 1 >= 0) {
- if (characters[i - 1] != '\\') {
- inCharacterClass = true;
- }
- } else {
- inCharacterClass = true;
- }
- }
- }
-
- sb.append(characters[i]);
- }
-
- return to16Bit(sb.toString());
-}
-
-static inline bool is16BitLineTerminator(UChar c)
-{
- return c == '\r' || c == '\n' || (c & ~1) == 0x2028;
-}
-
-static inline WTF::String escapedPattern(const WTF::String& pattern, const UChar* characters, size_t length)
-{
- bool previousCharacterWasBackslash = false;
- bool inBrackets = false;
- bool shouldEscape = false;
-
- // 15.10.6.4 specifies that RegExp.prototype.toString must return '/' + source + '/',
- // and also states that the result must be a valid RegularExpressionLiteral. '//' is
- // not a valid RegularExpressionLiteral (since it is a single line comment), and hence
- // source cannot ever validly be "". If the source is empty, return a different Pattern
- // that would match the same thing.
- if (!length)
- return "(?:)"_s;
-
- // early return for strings that don't contain a forwards slash and LineTerminator
- for (unsigned i = 0; i < length; ++i) {
- UChar ch = characters[i];
- if (!previousCharacterWasBackslash) {
- if (inBrackets) {
- if (ch == ']')
- inBrackets = false;
- } else {
- if (ch == '/') {
- shouldEscape = true;
- break;
- }
- if (ch == '[')
- inBrackets = true;
- }
- }
-
- if (is16BitLineTerminator(ch)) {
- shouldEscape = true;
- break;
- }
-
- if (previousCharacterWasBackslash)
- previousCharacterWasBackslash = false;
- else
- previousCharacterWasBackslash = ch == '\\';
- }
-
- if (!shouldEscape)
- return pattern;
-
- previousCharacterWasBackslash = false;
- inBrackets = false;
- StringBuilder result;
- for (unsigned i = 0; i < length; ++i) {
- UChar ch = characters[i];
- if (!previousCharacterWasBackslash) {
- if (inBrackets) {
- if (ch == ']')
- inBrackets = false;
- } else {
- if (ch == '/')
- result.append('\\');
- else if (ch == '[')
- inBrackets = true;
- }
- }
-
- // escape LineTerminator
- if (is16BitLineTerminator(ch)) {
- if (!previousCharacterWasBackslash) {
- result.append('\\');
- }
-
- if (ch == '\n') {
- result.append('n');
- } else if (ch == '\r') {
- result.append('r');
- } else if (ch == 0x2028) {
- result.append("u2028");
- } else {
- result.append("u2029");
- }
- } else
- result.append(ch);
-
- if (previousCharacterWasBackslash)
- previousCharacterWasBackslash = false;
- else
- previousCharacterWasBackslash = ch == '\\';
- }
-
- return result.toString();
-}
-
-WTF::String sortRegExpFlags(WTF::String flagsString)
-{
- WTF::Vector<UChar> flags = { 'd', 'g', 'i', 'm', 's', 'u', 'y' };
- WTF::StringBuilder result;
-
- for (auto flag : flags) {
- if (flagsString.contains(flag)) {
- result.append(flag);
- }
- }
-
- return result.toString();
-}
-
-bool validateRegExpFlags(WTF::StringView flags)
-{
- std::map<char16_t, bool> flagsAllowed = { { 'g', false }, { 'i', false }, { 'm', false }, { 's', false }, { 'u', false }, { 'y', false }, { 'd', false } };
- for (auto flag : flags.codeUnits()) {
- auto flagItr = flagsAllowed.find(flag);
- if (flagItr == flagsAllowed.end() || flagItr->second) {
- return false;
- }
- flagItr->second = true;
- }
-
- return true;
-}
-
-std::once_flag onigurumaEncodingInitFlag;
-
-static regex_t* createOnigurumaRegExp(JSGlobalObject* globalObject, const WTF::String& patternString, const WTF::String& flagsString, int& errorCode, OnigErrorInfo& errorInfo)
-{
- auto& vm = globalObject->vm();
- auto throwScope = DECLARE_THROW_SCOPE(vm);
-
- OnigEncoding encodings[] = {
- ONIG_ENCODING_UTF16_LE,
- };
- std::call_once(onigurumaEncodingInitFlag, [&encodings]() {
- onig_initialize(encodings, 1);
- });
-
- OnigOptionType options = 0;
- if (flagsString.contains('i')) {
- options |= ONIG_OPTION_IGNORECASE;
- }
- if (flagsString.contains('m')) {
- options |= ONIG_OPTION_MULTILINE;
- } else {
- options |= ONIG_OPTION_SINGLELINE;
- }
- if (flagsString.contains('s')) {
- options |= ONIG_OPTION_MULTILINE;
- }
-
- OnigSyntaxType* syntax = ONIG_SYNTAX_ONIGURUMA;
- OnigEncodingType* encoding = encodings[0];
- regex_t* onigRegExp = NULL;
-
- errorCode = onig_new(
- &onigRegExp,
- reinterpret_cast<const OnigUChar*>(patternString.characters16()),
- reinterpret_cast<const OnigUChar*>(patternString.characters16() + patternString.length()),
- options,
- encoding,
- syntax,
- &errorInfo);
-
- return onigRegExp;
-}
-
-class OnigurumaRegExpPrototype final : public JSC::JSNonFinalObject {
-public:
- using Base = JSC::JSNonFinalObject;
-
- static OnigurumaRegExpPrototype* create(JSC::VM& vm, JSGlobalObject* globalObject, JSC::Structure* structure)
- {
- OnigurumaRegExpPrototype* ptr = new (NotNull, JSC::allocateCell<OnigurumaRegExpPrototype>(vm)) OnigurumaRegExpPrototype(vm, globalObject, structure);
- ptr->finishCreation(vm, globalObject);
- return ptr;
- }
-
- DECLARE_INFO;
- template<typename CellType, JSC::SubspaceAccess>
- static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm)
- {
- return &vm.plainObjectSpace();
- }
- static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
- {
- return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info());
- }
-
-private:
- OnigurumaRegExpPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
- : Base(vm, structure)
- {
- }
-
- void finishCreation(JSC::VM&, JSC::JSGlobalObject*);
-};
-
-const ClassInfo OnigurumaRegExpConstructor::s_info = { "Function"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(OnigurumaRegExpConstructor) };
-const ClassInfo OnigurumaRegExpPrototype::s_info = { "Object"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(OnigurumaRegExpPrototype) };
-const ClassInfo OnigurumaRegEx::s_info = { "RegExp"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(OnigurumaRegEx) };
-
-JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterGlobal, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName))
-{
- auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis));
- if (UNLIKELY(!thisValue)) {
- return JSValue::encode(jsUndefined());
- }
- return JSValue::encode(jsBoolean(thisValue->flagsString().contains('g')));
-}
-
-JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterDotAll, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName))
-{
- auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis));
- if (UNLIKELY(!thisValue)) {
- return JSValue::encode(jsUndefined());
- }
- return JSValue::encode(jsBoolean(thisValue->flagsString().contains('s')));
-}
-
-JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterHasIndices, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName))
-{
- auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis));
- if (UNLIKELY(!thisValue)) {
- return JSValue::encode(jsUndefined());
- }
- return JSValue::encode(jsBoolean(thisValue->flagsString().contains('d')));
-}
-
-JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterIgnoreCase, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName))
-{
- auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis));
- if (UNLIKELY(!thisValue)) {
- return JSValue::encode(jsUndefined());
- }
- return JSValue::encode(jsBoolean(thisValue->flagsString().contains('i')));
-}
-
-JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterMultiline, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName))
-{
- auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis));
- if (UNLIKELY(!thisValue)) {
- return JSValue::encode(jsUndefined());
- }
- return JSValue::encode(jsBoolean(thisValue->flagsString().contains('m')));
-}
-
-JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterSticky, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName))
-{
- auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis));
- if (UNLIKELY(!thisValue)) {
- return JSValue::encode(jsUndefined());
- }
-
- return JSValue::encode(jsBoolean(thisValue->flagsString().contains('y')));
-}
-
-JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterUnicode, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName))
-{
- auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis));
- if (UNLIKELY(!thisValue)) {
- return JSValue::encode(jsUndefined());
- }
- return JSValue::encode(jsBoolean(thisValue->flagsString().contains('u')));
-}
-
-JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterSource, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName))
-{
- auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis));
- if (!thisValue)
- return JSValue::encode(jsUndefined());
-
- return JSValue::encode(jsString(globalObject->vm(), escapedPattern(thisValue->patternString(), thisValue->patternString().characters16(), thisValue->patternString().length())));
-}
-
-JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterFlags, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName))
-{
- auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis));
- if (!thisValue)
- return JSValue::encode(jsUndefined());
-
- return JSValue::encode(jsString(globalObject->vm(), thisValue->flagsString()));
-}
-
-JSC_DEFINE_CUSTOM_GETTER(onigurumaRegExpProtoGetterLastIndex, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, PropertyName))
-{
- auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis));
- if (UNLIKELY(!thisValue)) {
- return JSValue::encode(jsUndefined());
- }
- return JSValue::encode(jsNumber(thisValue->m_lastIndex));
-}
-
-JSC_DEFINE_CUSTOM_SETTER(onigurumaRegExpProtoSetterLastIndex, (JSGlobalObject * globalObject, EncodedJSValue encodedThis, EncodedJSValue encodedValue, PropertyName))
-{
- auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(JSValue::decode(encodedThis));
- if (UNLIKELY(!thisValue)) {
- return JSValue::encode(jsUndefined());
- }
- auto throwScope = DECLARE_THROW_SCOPE(globalObject->vm());
- JSValue value = JSValue::decode(encodedValue);
- if (!value.isAnyInt()) {
- throwException(globalObject, throwScope, createTypeError(globalObject, "lastIndex must be an integer"_s));
- return false;
- }
- int32_t lastIndex = value.toInt32(globalObject);
- thisValue->m_lastIndex = lastIndex;
- return true;
-}
-
-// compile is deprecated
-JSC_DEFINE_HOST_FUNCTION(onigurumaRegExpProtoFuncCompile, (JSGlobalObject * globalObject, JSC::CallFrame* callFrame))
-{
- VM& vm = globalObject->vm();
- auto scope = DECLARE_CATCH_SCOPE(vm);
- auto throwScope = DECLARE_THROW_SCOPE(vm);
-
- JSValue thisValue = callFrame->thisValue();
- auto* thisRegExp = jsDynamicCast<OnigurumaRegEx*>(callFrame->thisValue());
- if (UNLIKELY(!thisRegExp))
- return JSValue::encode(jsUndefined());
-
- if (thisRegExp->globalObject() != globalObject) {
- throwScope.throwException(globalObject, createTypeError(globalObject, makeString("RegExp.prototype.compile function's Realm must be the same to |this| RegExp object"_s)));
- return JSValue::encode({});
- }
-
- JSValue arg0 = callFrame->argument(0);
- JSValue arg1 = callFrame->argument(1);
-
- WTF::String patternStringExtended;
- if (auto* regExpObject = jsDynamicCast<OnigurumaRegEx*>(arg0)) {
- if (!arg1.isUndefined()) {
- throwScope.throwException(globalObject, createTypeError(globalObject, makeString("Cannot supply flags when constructing one RegExp from another."_s)));
- return JSValue::encode({});
- }
- thisRegExp->setPatternString(regExpObject->patternString());
- patternStringExtended = convertToOnigurumaSyntax(thisRegExp->patternString());
- thisRegExp->setFlagsString(regExpObject->flagsString());
- } else {
- WTF::String newPatternString = to16Bit(arg0, globalObject, "(?:)"_s);
- RETURN_IF_EXCEPTION(scope, {});
-
- patternStringExtended = convertToOnigurumaSyntax(newPatternString);
-
- WTF::String newFlagsString = to16Bit(arg1, globalObject, ""_s);
- RETURN_IF_EXCEPTION(scope, {});
-
- if (!validateRegExpFlags(newFlagsString)) {
- throwScope.throwException(globalObject, createSyntaxError(globalObject, makeString("Invalid flags supplied to RegExp constructor."_s)));
- return JSValue::encode({});
- }
-
- newFlagsString = sortRegExpFlags(newFlagsString);
-
- thisRegExp->setPatternString(newPatternString);
- thisRegExp->setFlagsString(newFlagsString);
- }
-
- // for pattern syntax checking
- int errorCode = 0;
- OnigErrorInfo errorInfo = { 0 };
- regex_t* onigurumaRegExp = createOnigurumaRegExp(globalObject, convertToOnigurumaSyntax(thisRegExp->patternString()), thisRegExp->flagsString(), errorCode, errorInfo);
- if (errorCode != ONIG_NORMAL) {
- OnigUChar errorBuff[ONIG_MAX_ERROR_MESSAGE_LEN] = { 0 };
- int length = onig_error_code_to_str(errorBuff, errorCode, &errorInfo);
- WTF::StringBuilder errorMessage;
- errorMessage.append("Invalid regular expression: "_s);
- if (length < 0) {
- errorMessage.append("An unknown error occurred."_s);
- } else {
- errorMessage.appendCharacters(errorBuff, length);
- }
- if (onigurumaRegExp != nullptr) {
- onig_free(onigurumaRegExp);
- }
- throwScope.throwException(globalObject, createSyntaxError(globalObject, errorMessage.toString()));
- return JSValue::encode({});
- }
- onig_free(onigurumaRegExp);
-
- thisRegExp->m_lastIndex = 0;
-
- return JSValue::encode(thisRegExp);
-}
-
-JSC_DEFINE_HOST_FUNCTION(onigurumaRegExpProtoFuncTest, (JSGlobalObject * globalObject, JSC::CallFrame* callFrame))
-{
- auto& vm = globalObject->vm();
- auto scope = DECLARE_THROW_SCOPE(vm);
- auto throwScope = DECLARE_THROW_SCOPE(vm);
-
- auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(callFrame->thisValue());
- if (!thisValue)
- return JSValue::encode(jsUndefined());
-
- JSValue arg = callFrame->argument(0);
- if (!arg.isString()) {
- scope.throwException(globalObject, createTypeError(globalObject, "Argument 0 of RegExp.prototype.test must be a string"_s));
- return JSValue::encode(jsBoolean(false));
- }
-
- WTF::String string = to16Bit(arg, globalObject, ""_s);
- RETURN_IF_EXCEPTION(scope, JSValue::encode({}));
-
- int errorCode = 0;
- OnigErrorInfo errorInfo = { 0 };
- regex_t* onigurumaRegExp = createOnigurumaRegExp(globalObject, convertToOnigurumaSyntax(thisValue->patternString()), thisValue->flagsString(), errorCode, errorInfo);
- if (errorCode != ONIG_NORMAL) {
- OnigUChar errorBuff[ONIG_MAX_ERROR_MESSAGE_LEN] = { 0 };
- int length = onig_error_code_to_str(errorBuff, errorCode, &errorInfo);
- WTF::StringBuilder errorMessage;
- errorMessage.append("Invalid regular expression: "_s);
- if (length < 0) {
- errorMessage.append("An unknown error occurred."_s);
- } else {
- errorMessage.appendCharacters(errorBuff, length);
- }
- if (onigurumaRegExp != nullptr) {
- onig_free(onigurumaRegExp);
- }
- throwScope.throwException(globalObject, createSyntaxError(globalObject, errorMessage.toString()));
- return JSValue::encode({});
- }
-
- OnigRegion* region = onig_region_new();
-
- const OnigUChar* end = reinterpret_cast<const OnigUChar*>(string.characters16() + string.length());
- const OnigUChar* start = reinterpret_cast<const OnigUChar*>(string.characters16() + thisValue->m_lastIndex);
- const OnigUChar* range = end;
-
- if (thisValue->m_lastIndex >= string.length()) {
- onig_region_free(region, 1);
- onig_free(onigurumaRegExp);
- thisValue->m_lastIndex = 0;
- return JSValue::encode(jsBoolean(false));
- }
-
- int result = onig_search(
- onigurumaRegExp,
- reinterpret_cast<const OnigUChar*>(string.characters16()),
- end,
- start,
- range,
- region,
- ONIG_OPTION_DEFAULT);
-
- if (result < 0) {
- thisValue->m_lastIndex = 0;
- onig_region_free(region, 1);
- onig_free(onigurumaRegExp);
- return JSValue::encode(jsBoolean(false));
- }
-
- if (thisValue->flagsString().contains('y') && region->beg[0] != thisValue->m_lastIndex) {
- onig_region_free(region, 1);
- onig_free(onigurumaRegExp);
- return JSValue::encode(jsBoolean(false));
- }
-
- if (thisValue->flagsString().contains('g')) {
- thisValue->m_lastIndex = region->end[0] / 2;
- } else {
- thisValue->m_lastIndex = 0;
- }
-
- onig_region_free(region, 1);
- onig_free(onigurumaRegExp);
-
- return JSValue::encode(jsBoolean(true));
-}
-
-JSC_DEFINE_HOST_FUNCTION(onigurumaRegExpProtoFuncExec, (JSGlobalObject * globalObject, JSC::CallFrame* callFrame))
-{
- auto& vm = globalObject->vm();
- auto scope = DECLARE_THROW_SCOPE(vm);
- auto throwScope = DECLARE_THROW_SCOPE(vm);
-
- auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(callFrame->thisValue());
- if (!thisValue)
- return JSValue::encode(jsUndefined());
-
- JSValue arg = callFrame->argument(0);
- if (!arg || arg.isUndefinedOrNull()) {
- thisValue->m_lastIndex = 0;
- return JSValue::encode(jsNull());
- }
-
- WTF::String string = to16Bit(arg, globalObject, ""_s);
- RETURN_IF_EXCEPTION(scope, JSValue::encode({}));
-
- int errorCode = 0;
- OnigErrorInfo errorInfo = { 0 };
- regex_t* onigurumaRegExp = createOnigurumaRegExp(globalObject, convertToOnigurumaSyntax(thisValue->patternString()), thisValue->flagsString(), errorCode, errorInfo);
- if (errorCode != ONIG_NORMAL) {
- OnigUChar errorBuff[ONIG_MAX_ERROR_MESSAGE_LEN] = { 0 };
- int length = onig_error_code_to_str(errorBuff, errorCode, &errorInfo);
- WTF::StringBuilder errorMessage;
- errorMessage.append("Invalid regular expression: "_s);
- if (length < 0) {
- errorMessage.append("An unknown error occurred."_s);
- } else {
- errorMessage.appendCharacters(errorBuff, length);
- }
- if (onigurumaRegExp != nullptr) {
- onig_free(onigurumaRegExp);
- }
- throwScope.throwException(globalObject, createSyntaxError(globalObject, errorMessage.toString()));
- return JSValue::encode({});
- }
-
- OnigRegion* region = onig_region_new();
-
- const OnigUChar* end = reinterpret_cast<const OnigUChar*>(string.characters16() + string.length());
- const OnigUChar* start = reinterpret_cast<const OnigUChar*>(string.characters16() + thisValue->m_lastIndex);
- const OnigUChar* range = end;
-
- int result = onig_search(
- onigurumaRegExp,
- reinterpret_cast<const OnigUChar*>(string.characters16()),
- end,
- start,
- range,
- region,
- ONIG_OPTION_DEFAULT);
-
- if (result < 0) {
- onig_region_free(region, 1);
- onig_free(onigurumaRegExp);
- thisValue->m_lastIndex = 0;
- return JSValue::encode(jsNull());
- }
-
- JSArray* array = constructEmptyArray(globalObject, nullptr, 0);
- RETURN_IF_EXCEPTION(scope, JSValue::encode({}));
- JSArray* indicesArray = constructEmptyArray(globalObject, nullptr, 0);
- RETURN_IF_EXCEPTION(scope, JSValue::encode({}));
-
- array->putDirect(vm, vm.propertyNames->index, jsNumber(region->beg[0] / 2));
- array->putDirect(vm, vm.propertyNames->input, jsString(vm, string));
- array->putDirect(vm, vm.propertyNames->groups, jsUndefined());
-
- for (int i = 0; i < region->num_regs; i++) {
- size_t outStringLen = (region->end[i] / 2) - (region->beg[i] / 2);
- UChar* ptr;
- WTF::String outString;
- if (outStringLen > 0) {
- outString = WTF::String::createUninitialized(static_cast<unsigned int>(outStringLen), ptr);
- if (UNLIKELY(!ptr)) {
- throwOutOfMemoryError(globalObject, scope);
- onig_region_free(region, 1);
- onig_free(onigurumaRegExp);
- return JSValue::encode(jsNull());
- }
-
- memcpy(ptr, (region->beg[i] / 2) + string.characters16(), outStringLen * sizeof(UChar));
- }
-
- array->putDirectIndex(globalObject, i, jsString(vm, outString));
-
- JSArray* indices = constructEmptyArray(globalObject, nullptr, 0);
- RETURN_IF_EXCEPTION(scope, JSValue::encode({}));
- indices->putDirectIndex(globalObject, 0, jsNumber(region->beg[i] / 2));
- indices->putDirectIndex(globalObject, 1, jsNumber(region->end[i] / 2));
- indicesArray->putDirectIndex(globalObject, i, indices);
- }
-
- if (thisValue->flagsString().contains('d')) {
- array->putDirect(vm, vm.propertyNames->indices, indicesArray);
- }
-
- if (thisValue->flagsString().contains('g')) {
- thisValue->m_lastIndex = region->end[0] / 2;
- } else {
- thisValue->m_lastIndex = 0;
- }
-
- onig_region_free(region, 1);
- onig_free(onigurumaRegExp);
-
- return JSValue::encode(array);
-}
-
-JSC_DEFINE_HOST_FUNCTION(onigurumaRegExpProtoFuncToString, (JSGlobalObject * globalObject, JSC::CallFrame* callFrame))
-{
- auto* thisValue = jsDynamicCast<OnigurumaRegEx*>(callFrame->thisValue());
- if (!thisValue)
- return JSValue::encode(jsUndefined());
-
- WTF::String patternString = escapedPattern(thisValue->patternString(), thisValue->patternString().characters16(), thisValue->patternString().length());
- WTF::String flagsString = thisValue->flagsString();
-
- WTF::StringBuilder source;
- source.append("/"_s);
- source.append(patternString);
- source.append("/"_s);
- source.append(flagsString);
-
- return JSValue::encode(jsString(globalObject->vm(), source.toString()));
-}
-
-void OnigurumaRegExpPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
-{
- Base::finishCreation(vm);
- ASSERT(inherits(info()));
- this->putDirectNativeFunction(vm, globalObject, PropertyName(vm.propertyNames->compile), 2, onigurumaRegExpProtoFuncCompile, ImplementationVisibility::Public, NoIntrinsic, static_cast<unsigned>(0));
- this->putDirectNativeFunction(vm, globalObject, PropertyName(vm.propertyNames->exec), 1, onigurumaRegExpProtoFuncExec, ImplementationVisibility::Public, NoIntrinsic, static_cast<unsigned>(0));
- this->putDirectNativeFunction(vm, globalObject, PropertyName(vm.propertyNames->toString), 0, onigurumaRegExpProtoFuncToString, ImplementationVisibility::Public, NoIntrinsic, static_cast<unsigned>(0));
- this->putDirectCustomAccessor(vm, vm.propertyNames->global, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterGlobal, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly);
- this->putDirectCustomAccessor(vm, vm.propertyNames->dotAll, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterDotAll, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly);
- this->putDirectCustomAccessor(vm, vm.propertyNames->hasIndices, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterHasIndices, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly);
- this->putDirectCustomAccessor(vm, vm.propertyNames->ignoreCase, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterIgnoreCase, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly);
- this->putDirectCustomAccessor(vm, vm.propertyNames->multiline, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterMultiline, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly);
- this->putDirectCustomAccessor(vm, vm.propertyNames->sticky, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterSticky, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly);
- this->putDirectCustomAccessor(vm, vm.propertyNames->unicode, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterUnicode, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly);
- this->putDirectCustomAccessor(vm, vm.propertyNames->source, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterSource, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly);
- this->putDirectCustomAccessor(vm, vm.propertyNames->flags, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterFlags, nullptr), 0 | PropertyAttribute::CustomAccessor | PropertyAttribute::ReadOnly);
- this->putDirectCustomAccessor(vm, vm.propertyNames->lastIndex, JSC::CustomGetterSetter::create(vm, onigurumaRegExpProtoGetterLastIndex, onigurumaRegExpProtoSetterLastIndex), 0 | PropertyAttribute::CustomAccessor);
-
- this->putDirectNativeFunction(vm, globalObject, PropertyName(vm.propertyNames->test), 1, onigurumaRegExpProtoFuncTest, ImplementationVisibility::Public, NoIntrinsic, static_cast<unsigned>(0));
-
- this->putDirectBuiltinFunction(vm, globalObject, vm.propertyNames->matchSymbol, onigurumaRegExpPrototypeMatchCodeGenerator(vm), static_cast<unsigned>(0));
- this->putDirectBuiltinFunction(vm, globalObject, vm.propertyNames->matchAllSymbol, onigurumaRegExpPrototypeMatchAllCodeGenerator(vm), static_cast<unsigned>(0));
- this->putDirectBuiltinFunction(vm, globalObject, vm.propertyNames->replaceSymbol, onigurumaRegExpPrototypeReplaceCodeGenerator(vm), static_cast<unsigned>(0));
- this->putDirectBuiltinFunction(vm, globalObject, vm.propertyNames->searchSymbol, onigurumaRegExpPrototypeSearchCodeGenerator(vm), static_cast<unsigned>(0));
- this->putDirectBuiltinFunction(vm, globalObject, vm.propertyNames->splitSymbol, onigurumaRegExpPrototypeSplitCodeGenerator(vm), static_cast<unsigned>(0));
-}
-
-JSC::Structure* OnigurumaRegExpConstructor::createClassStructure(JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
-{
- JSC::VM& vm = globalObject->vm();
- return OnigurumaRegEx::createStructure(
- vm,
- globalObject,
- prototype);
-}
-JSC::JSObject* OnigurumaRegExpConstructor::createPrototype(JSC::JSGlobalObject* globalObject)
-{
- return OnigurumaRegExpPrototype::create(globalObject->vm(), globalObject, OnigurumaRegExpPrototype::createStructure(globalObject->vm(), globalObject, globalObject->objectPrototype()));
-}
-
-void OnigurumaRegExpConstructor::finishCreation(VM& vm, JSValue prototype)
-{
-
- Base::finishCreation(vm, 0, "RegExp"_s, PropertyAdditionMode::WithoutStructureTransition);
- putDirectWithoutTransition(vm, vm.propertyNames->prototype, prototype, PropertyAttribute::DontEnum | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly);
- ASSERT(inherits(info()));
-}
-
-OnigurumaRegExpConstructor* OnigurumaRegExpConstructor::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, JSValue prototype)
-{
- OnigurumaRegExpConstructor* ptr = new (NotNull, JSC::allocateCell<OnigurumaRegExpConstructor>(vm)) OnigurumaRegExpConstructor(vm, structure, construct);
- ptr->finishCreation(vm, prototype);
- return ptr;
-}
-
-static JSC::EncodedJSValue constructOrCall(Zig::GlobalObject* globalObject, JSValue arg0, JSValue arg1)
-{
- auto& vm = globalObject->vm();
- auto scope = DECLARE_CATCH_SCOPE(vm);
- auto throwScope = DECLARE_THROW_SCOPE(vm);
-
- WTF::String patternString = to16Bit(arg0, globalObject, "(?:)"_s);
- RETURN_IF_EXCEPTION(scope, {});
-
- WTF::String flagsString = to16Bit(arg1, globalObject, ""_s);
- RETURN_IF_EXCEPTION(scope, {});
-
- if (!validateRegExpFlags(flagsString)) {
- throwScope.throwException(globalObject, createSyntaxError(globalObject, makeString("Invalid flags supplied to RegExp constructor."_s)));
- return JSValue::encode({});
- }
-
- flagsString = sortRegExpFlags(flagsString);
-
- // create for pattern compilation errors, but need to create another for each exec/test
- int errorCode = 0;
- OnigErrorInfo errorInfo = { 0 };
- regex_t* onigurumaRegExp = createOnigurumaRegExp(globalObject, convertToOnigurumaSyntax(patternString), flagsString, errorCode, errorInfo);
- if (errorCode != ONIG_NORMAL) {
- OnigUChar errorBuff[ONIG_MAX_ERROR_MESSAGE_LEN] = { 0 };
- int length = onig_error_code_to_str(errorBuff, errorCode, &errorInfo);
- WTF::StringBuilder errorMessage;
- errorMessage.append("Invalid regular expression: "_s);
- if (length < 0) {
- errorMessage.append("An unknown error occurred."_s);
- } else {
- errorMessage.appendCharacters(errorBuff, length);
- }
- throwScope.throwException(globalObject, createSyntaxError(globalObject, errorMessage.toString()));
- return JSValue::encode({});
- }
- onig_free(onigurumaRegExp);
-
- OnigurumaRegEx* result = OnigurumaRegEx::create(globalObject, WTFMove(patternString), WTFMove(flagsString));
-
- return JSValue::encode(result);
-}
-
-JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES OnigurumaRegExpConstructor::construct(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame)
-{
- Zig::GlobalObject* globalObject = reinterpret_cast<Zig::GlobalObject*>(lexicalGlobalObject);
- JSC::VM& vm = globalObject->vm();
- JSObject* newTarget = asObject(callFrame->newTarget());
- auto* constructor = globalObject->OnigurumaRegExpConstructor();
- Structure* structure = globalObject->OnigurumaRegExpStructure();
- if (constructor != newTarget) {
- auto scope = DECLARE_THROW_SCOPE(vm);
-
- auto* functionGlobalObject = reinterpret_cast<Zig::GlobalObject*>(
- // ShadowRealm functions belong to a different global object.
- getFunctionRealm(globalObject, newTarget));
- RETURN_IF_EXCEPTION(scope, {});
- structure = InternalFunction::createSubclassStructure(
- globalObject,
- newTarget,
- functionGlobalObject->OnigurumaRegExpStructure());
- }
-
- return constructOrCall(globalObject, callFrame->argument(0), callFrame->argument(1));
-}
-
-}
diff --git a/src/bun.js/bindings/OnigurumaRegExp.h b/src/bun.js/bindings/OnigurumaRegExp.h
deleted file mode 100644
index 8ddb65a0c..000000000
--- a/src/bun.js/bindings/OnigurumaRegExp.h
+++ /dev/null
@@ -1,106 +0,0 @@
-#pragma once
-
-#include "root.h"
-#include "BunBuiltinNames.h"
-#include "BunClientData.h"
-#include "ZigGlobalObject.h"
-
-extern "C" JSC::EncodedJSValue jsFunctionGetOnigurumaRegExpConstructor(JSC::JSGlobalObject* lexicalGlobalObject, JSC::EncodedJSValue thisValue, JSC::PropertyName attributeName);
-
-namespace Zig {
-
-using namespace JSC;
-using namespace WebCore;
-
-class OnigurumaRegEx final : public JSC::JSDestructibleObject {
-public:
- using Base = JSC::JSDestructibleObject;
-
- static OnigurumaRegEx* create(JSC::VM& vm, JSGlobalObject* globalObject, JSC::Structure* structure)
- {
- OnigurumaRegEx* ptr = new (NotNull, JSC::allocateCell<OnigurumaRegEx>(vm)) OnigurumaRegEx(vm, globalObject, structure);
- ptr->finishCreation(vm);
- return ptr;
- }
-
- static OnigurumaRegEx* create(JSC::JSGlobalObject* globalObject, WTF::String&& pattern, WTF::String&& flags)
- {
- auto* structure = reinterpret_cast<Zig::GlobalObject*>(globalObject)->OnigurumaRegExpStructure();
- auto* object = create(globalObject->vm(), globalObject, structure);
- object->m_flagsString = WTFMove(flags);
- object->m_patternString = WTFMove(pattern);
-
- return object;
- }
-
- DECLARE_EXPORT_INFO;
- template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm)
- {
- if constexpr (mode == JSC::SubspaceAccess::Concurrently)
- return nullptr;
-
- return WebCore::subspaceForImpl<OnigurumaRegEx, UseCustomHeapCellType::No>(
- vm,
- [](auto& spaces) { return spaces.m_clientSubspaceForOnigurumaRegExp.get(); },
- [](auto& spaces, auto&& space) { spaces.m_clientSubspaceForOnigurumaRegExp = WTFMove(space); },
- [](auto& spaces) { return spaces.m_subspaceForOnigurumaRegExp.get(); },
- [](auto& spaces, auto&& space) { spaces.m_subspaceForOnigurumaRegExp = WTFMove(space); });
- }
-
- static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
- {
- return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(RegExpObjectType, StructureFlags), info());
- }
-
- // static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
-
- const WTF::String& flagsString() const { return m_flagsString; }
- void setFlagsString(const WTF::String& flagsString) { m_flagsString = flagsString; }
- const WTF::String& patternString() const { return m_patternString; }
- void setPatternString(const WTF::String& patternString) { m_patternString = patternString; }
-
- int32_t m_lastIndex = 0;
-
-private:
- OnigurumaRegEx(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
- : Base(vm, structure)
- {
- }
-
- void finishCreation(JSC::VM&)
- {
- Base::finishCreation(vm());
- }
-
- WTF::String m_patternString = {};
- WTF::String m_flagsString = {};
-};
-
-class OnigurumaRegExpConstructor final : public JSC::InternalFunction {
-public:
- using Base = JSC::InternalFunction;
- static OnigurumaRegExpConstructor* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, JSValue prototype);
-
- // Must be defined for each specialization class.
- static JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES construct(JSC::JSGlobalObject*, JSC::CallFrame*);
- DECLARE_EXPORT_INFO;
-
- static JSC::Structure* createClassStructure(JSC::JSGlobalObject*, JSC::JSValue prototype);
- static JSC::JSObject* createPrototype(JSC::JSGlobalObject*);
-
- static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
- {
- return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::InternalFunctionType, StructureFlags), info());
- }
-
-private:
- OnigurumaRegExpConstructor(JSC::VM& vm, JSC::Structure* structure, JSC::NativeFunction nativeFunction)
- : Base(vm, structure, nativeFunction, nativeFunction)
-
- {
- }
-
- void finishCreation(JSC::VM&, JSValue prototype);
-};
-
-} \ No newline at end of file
diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp
index 1e70fdd99..e8ee74943 100644
--- a/src/bun.js/bindings/ZigGlobalObject.cpp
+++ b/src/bun.js/bindings/ZigGlobalObject.cpp
@@ -167,8 +167,6 @@ using JSBuffer = WebCore::JSBuffer;
#include "webcrypto/JSCryptoKey.h"
#include "webcrypto/JSSubtleCrypto.h"
-#include "OnigurumaRegExp.h"
-
constexpr size_t DEFAULT_ERROR_STACK_TRACE_LIMIT = 10;
#ifdef __APPLE__
@@ -2579,17 +2577,6 @@ void GlobalObject::finishCreation(VM& vm)
init.setConstructor(constructor);
});
- m_OnigurumaRegExpClassStructure.initLater(
- [](LazyClassStructure::Initializer& init) {
- auto* prototype = OnigurumaRegExpConstructor::createPrototype(init.global);
- auto* structure = OnigurumaRegExpConstructor::createClassStructure(init.global, prototype);
- auto* constructor = OnigurumaRegExpConstructor::create(
- init.vm, init.global, OnigurumaRegExpConstructor::createStructure(init.vm, init.global, init.global->functionPrototype()), prototype);
- init.setPrototype(prototype);
- init.setStructure(structure);
- init.setConstructor(constructor);
- });
-
m_callSiteStructure.initLater(
[](LazyClassStructure::Initializer& init) {
auto* prototype = CallSitePrototype::create(init.vm, CallSitePrototype::createStructure(init.vm, init.global, init.global->objectPrototype()), init.global);
@@ -3224,11 +3211,6 @@ void GlobalObject::installAPIGlobals(JSClassRef* globals, int count, JSC::VM& vm
}
{
- JSC::Identifier identifier = JSC::Identifier::fromString(vm, "OnigurumaRegExp"_s);
- object->putDirectCustomAccessor(vm, identifier, JSC::CustomGetterSetter::create(vm, jsFunctionGetOnigurumaRegExpConstructor, nullptr), JSC::PropertyAttribute::CustomAccessor | 0);
- }
-
- {
JSC::Identifier identifier = JSC::Identifier::fromString(vm, "stringHashCode"_s);
object->putDirectNativeFunction(vm, this, identifier, 1, functionHashCode, ImplementationVisibility::Public, NoIntrinsic,
JSC::PropertyAttribute::Function | JSC::PropertyAttribute::DontDelete | 0);
@@ -3362,7 +3344,6 @@ void GlobalObject::visitChildrenImpl(JSCell* cell, Visitor& visitor)
thisObject->m_JSReadableStateClassStructure.visit(visitor);
thisObject->m_JSStringDecoderClassStructure.visit(visitor);
thisObject->m_NapiClassStructure.visit(visitor);
- thisObject->m_OnigurumaRegExpClassStructure.visit(visitor);
thisObject->m_pendingVirtualModuleResultStructure.visit(visitor);
thisObject->m_performMicrotaskFunction.visit(visitor);
diff --git a/src/bun.js/bindings/ZigGlobalObject.h b/src/bun.js/bindings/ZigGlobalObject.h
index 90d67d34f..7335c9d97 100644
--- a/src/bun.js/bindings/ZigGlobalObject.h
+++ b/src/bun.js/bindings/ZigGlobalObject.h
@@ -224,10 +224,6 @@ public:
JSC::JSObject* JSReadableState() { return m_JSReadableStateClassStructure.constructorInitializedOnMainThread(this); }
JSC::JSValue JSReadableStatePrototype() { return m_JSReadableStateClassStructure.prototypeInitializedOnMainThread(this); }
- JSC::Structure* OnigurumaRegExpStructure() { return m_OnigurumaRegExpClassStructure.getInitializedOnMainThread(this); }
- JSC::JSValue OnigurumaRegExpPrototype() { return m_OnigurumaRegExpClassStructure.prototypeInitializedOnMainThread(this); }
- JSC::JSObject* OnigurumaRegExpConstructor() { return m_OnigurumaRegExpClassStructure.constructorInitializedOnMainThread(this); }
-
JSC::JSMap* readableStreamNativeMap() { return m_lazyReadableStreamPrototypeMap.getInitializedOnMainThread(this); }
JSC::JSMap* requireMap() { return m_requireMap.getInitializedOnMainThread(this); }
JSC::Structure* encodeIntoObjectStructure() { return m_encodeIntoObjectStructure.getInitializedOnMainThread(this); }
@@ -465,7 +461,6 @@ private:
LazyClassStructure m_JSReadableStateClassStructure;
LazyClassStructure m_JSStringDecoderClassStructure;
LazyClassStructure m_NapiClassStructure;
- LazyClassStructure m_OnigurumaRegExpClassStructure;
LazyClassStructure m_callSiteStructure;
/**
diff --git a/src/bun.js/bindings/bindings.cpp b/src/bun.js/bindings/bindings.cpp
index b5a78af0a..f37af006b 100644
--- a/src/bun.js/bindings/bindings.cpp
+++ b/src/bun.js/bindings/bindings.cpp
@@ -82,7 +82,6 @@
#include "JavaScriptCore/PropertyNameArray.h"
#include "JavaScriptCore/HashMapImpl.h"
#include "JavaScriptCore/HashMapImplInlines.h"
-#include "OnigurumaRegExp.h"
template<typename UWSResponse>
static void copyToUWS(WebCore::FetchHeaders* headers, UWSResponse* res)
@@ -382,22 +381,7 @@ bool Bun__deepEquals(JSC__JSGlobalObject* globalObject, JSValue v1, JSValue v2,
return false;
}
- if (OnigurumaRegEx* left = jsDynamicCast<OnigurumaRegEx*>(v1)) {
- OnigurumaRegEx* right = jsDynamicCast<OnigurumaRegEx*>(v2);
- if (UNLIKELY(!right)) {
- return false;
- }
-
- if (!equal(left->patternString(), right->patternString())) {
- return false;
- }
-
- if (!equal(left->flagsString(), right->flagsString())) {
- return false;
- }
-
- return true;
- } else if (JSC::RegExpObject* left = jsDynamicCast<JSC::RegExpObject*>(v1)) {
+ if (JSC::RegExpObject* left = jsDynamicCast<JSC::RegExpObject*>(v1)) {
JSC::RegExpObject* right = jsDynamicCast<JSC::RegExpObject*>(v2);
if (UNLIKELY(!right)) {
diff --git a/src/bun.js/bindings/headers-cpp.h b/src/bun.js/bindings/headers-cpp.h
index b1cbc2cf6..b8bf7c300 100644
--- a/src/bun.js/bindings/headers-cpp.h
+++ b/src/bun.js/bindings/headers-cpp.h
@@ -1,4 +1,4 @@
-//-- AUTOGENERATED FILE -- 1671153921
+//-- AUTOGENERATED FILE -- 1671319165
// clang-format off
#pragma once
diff --git a/src/bun.js/bindings/headers.h b/src/bun.js/bindings/headers.h
index 29bc2b21a..f29395eff 100644
--- a/src/bun.js/bindings/headers.h
+++ b/src/bun.js/bindings/headers.h
@@ -1,5 +1,5 @@
// clang-format off
-//-- AUTOGENERATED FILE -- 1671153921
+//-- AUTOGENERATED FILE -- 1671319165
#pragma once
#include <stddef.h>
diff --git a/src/bun.js/bindings/webcore/DOMClientIsoSubspaces.h b/src/bun.js/bindings/webcore/DOMClientIsoSubspaces.h
index e7504c024..5c7acd18a 100644
--- a/src/bun.js/bindings/webcore/DOMClientIsoSubspaces.h
+++ b/src/bun.js/bindings/webcore/DOMClientIsoSubspaces.h
@@ -29,7 +29,6 @@ public:
std::unique_ptr<GCClient::IsoSubspace> m_clientSubspaceForStringDecoder;
std::unique_ptr<GCClient::IsoSubspace> m_clientSubspaceForReadableState;
std::unique_ptr<GCClient::IsoSubspace> m_clientSubspaceForPendingVirtualModuleResult;
- std::unique_ptr<GCClient::IsoSubspace> m_clientSubspaceForOnigurumaRegExp;
std::unique_ptr<GCClient::IsoSubspace> m_clientSubspaceForCallSite;
std::unique_ptr<GCClient::IsoSubspace> m_clientSubspaceForNapiExternal;
#include "ZigGeneratedClasses+DOMClientIsoSubspaces.h"
diff --git a/src/bun.js/bindings/webcore/DOMIsoSubspaces.h b/src/bun.js/bindings/webcore/DOMIsoSubspaces.h
index cba631c61..d15866b7b 100644
--- a/src/bun.js/bindings/webcore/DOMIsoSubspaces.h
+++ b/src/bun.js/bindings/webcore/DOMIsoSubspaces.h
@@ -29,7 +29,6 @@ public:
std::unique_ptr<IsoSubspace> m_subspaceForStringDecoder;
std::unique_ptr<IsoSubspace> m_subspaceForReadableState;
std::unique_ptr<IsoSubspace> m_subspaceForPendingVirtualModuleResult;
- std::unique_ptr<IsoSubspace> m_subspaceForOnigurumaRegExp;
std::unique_ptr<IsoSubspace> m_subspaceForCallSite;
std::unique_ptr<IsoSubspace> m_subspaceForNapiExternal;
#include "ZigGeneratedClasses+DOMIsoSubspaces.h"
diff --git a/src/bun.js/builtins/WebCoreJSBuiltinInternals.cpp b/src/bun.js/builtins/WebCoreJSBuiltinInternals.cpp
index 93e13369a..446b8fd81 100644
--- a/src/bun.js/builtins/WebCoreJSBuiltinInternals.cpp
+++ b/src/bun.js/builtins/WebCoreJSBuiltinInternals.cpp
@@ -8,7 +8,6 @@ namespace Zig { class GlobalObject; }
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/WebCoreJSBuiltins.cpp b/src/bun.js/builtins/WebCoreJSBuiltins.cpp
index 1e8fa06d6..f5b25a463 100644
--- a/src/bun.js/builtins/WebCoreJSBuiltins.cpp
+++ b/src/bun.js/builtins/WebCoreJSBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
@@ -40,7 +39,6 @@
#include "ImportMetaObjectBuiltins.cpp"
#include "JSBufferConstructorBuiltins.cpp"
#include "JSBufferPrototypeBuiltins.cpp"
-#include "OnigurumaRegExpPrototypeBuiltins.cpp"
#include "ProcessObjectInternalsBuiltins.cpp"
#include "ReadableByteStreamControllerBuiltins.cpp"
#include "ReadableByteStreamInternalsBuiltins.cpp"
diff --git a/src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.cpp b/src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.cpp
index fac21b4ec..3bec31ac7 100644
--- a/src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.h b/src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.h
index b86a05c27..fc56f2911 100644
--- a/src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.h
+++ b/src/bun.js/builtins/cpp/ByteLengthQueuingStrategyBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ConsoleObjectBuiltins.cpp b/src/bun.js/builtins/cpp/ConsoleObjectBuiltins.cpp
index 39080d690..7d4fc6e2e 100644
--- a/src/bun.js/builtins/cpp/ConsoleObjectBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ConsoleObjectBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ConsoleObjectBuiltins.h b/src/bun.js/builtins/cpp/ConsoleObjectBuiltins.h
index 9e2a43707..975394c5f 100644
--- a/src/bun.js/builtins/cpp/ConsoleObjectBuiltins.h
+++ b/src/bun.js/builtins/cpp/ConsoleObjectBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.cpp b/src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.cpp
index 82aaefddb..ed428601a 100644
--- a/src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.h b/src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.h
index a05d5c9b8..06811f00a 100644
--- a/src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.h
+++ b/src/bun.js/builtins/cpp/CountQueuingStrategyBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp b/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp
index 75a52c699..360168176 100644
--- a/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.h b/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.h
index f3182273c..5cc424ec8 100644
--- a/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.h
+++ b/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.cpp b/src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.cpp
index 1ec885ee0..ed14b6699 100644
--- a/src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.h b/src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.h
index 67670d715..f9181b402 100644
--- a/src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.h
+++ b/src/bun.js/builtins/cpp/JSBufferConstructorBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.cpp b/src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.cpp
index 367041f65..cd8b072d4 100644
--- a/src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.h b/src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.h
index 04fa9df0b..75de0fce2 100644
--- a/src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.h
+++ b/src/bun.js/builtins/cpp/JSBufferPrototypeBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/OnigurumaRegExpPrototypeBuiltins.cpp b/src/bun.js/builtins/cpp/OnigurumaRegExpPrototypeBuiltins.cpp
deleted file mode 100644
index cf55745b1..000000000
--- a/src/bun.js/builtins/cpp/OnigurumaRegExpPrototypeBuiltins.cpp
+++ /dev/null
@@ -1,672 +0,0 @@
-/*
- * Copyright (c) 2015 Igalia
- * Copyright (c) 2015 Igalia S.L.
- * Copyright (c) 2015 Igalia.
- * Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
- * Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
- * Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
- * Copyright (c) 2022 Codeblog Corp. 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.
- *
- */
-
-// DO NOT EDIT THIS FILE. It is automatically generated from JavaScript files for
-// builtins by the script: Source/JavaScriptCore/Scripts/generate-js-builtins.py
-
-#include "config.h"
-#include "OnigurumaRegExpPrototypeBuiltins.h"
-
-#include "WebCoreJSClientData.h"
-#include <JavaScriptCore/HeapInlines.h>
-#include <JavaScriptCore/IdentifierInlines.h>
-#include <JavaScriptCore/ImplementationVisibility.h>
-#include <JavaScriptCore/Intrinsic.h>
-#include <JavaScriptCore/JSCJSValueInlines.h>
-#include <JavaScriptCore/JSCellInlines.h>
-#include <JavaScriptCore/StructureInlines.h>
-#include <JavaScriptCore/VM.h>
-
-namespace WebCore {
-
-const JSC::ConstructAbility s_onigurumaRegExpPrototypeAdvanceStringIndexCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const JSC::ConstructorKind s_onigurumaRegExpPrototypeAdvanceStringIndexCodeConstructorKind = JSC::ConstructorKind::None;
-const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeAdvanceStringIndexCodeImplementationVisibility = JSC::ImplementationVisibility::Private;
-const int s_onigurumaRegExpPrototypeAdvanceStringIndexCodeLength = 427;
-static const JSC::Intrinsic s_onigurumaRegExpPrototypeAdvanceStringIndexCodeIntrinsic = JSC::NoIntrinsic;
-const char* const s_onigurumaRegExpPrototypeAdvanceStringIndexCode =
- "(function (string, index, unicode)\n" \
- "{\n" \
- " //\n" \
- " \"use strict\";\n" \
- "\n" \
- " if (!unicode)\n" \
- " return index + 1;\n" \
- "\n" \
- " if (index + 1 >= string.length)\n" \
- " return index + 1;\n" \
- "\n" \
- " var first = string.@charCodeAt(index);\n" \
- " if (first < 0xD800 || first > 0xDBFF)\n" \
- " return index + 1;\n" \
- "\n" \
- " var second = string.@charCodeAt(index + 1);\n" \
- " if (second < 0xDC00 || second > 0xDFFF)\n" \
- " return index + 1;\n" \
- "\n" \
- " return index + 2;\n" \
- "})\n" \
-;
-
-const JSC::ConstructAbility s_onigurumaRegExpPrototypeMatchSlowCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const JSC::ConstructorKind s_onigurumaRegExpPrototypeMatchSlowCodeConstructorKind = JSC::ConstructorKind::None;
-const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeMatchSlowCodeImplementationVisibility = JSC::ImplementationVisibility::Private;
-const int s_onigurumaRegExpPrototypeMatchSlowCodeLength = 796;
-static const JSC::Intrinsic s_onigurumaRegExpPrototypeMatchSlowCodeIntrinsic = JSC::NoIntrinsic;
-const char* const s_onigurumaRegExpPrototypeMatchSlowCode =
- "(function (regexp, str)\n" \
- "{\n" \
- " \"use strict\";\n" \
- "\n" \
- " if (!regexp.global)\n" \
- " return regexp.exec(str);\n" \
- " \n" \
- " var unicode = regexp.unicode;\n" \
- " regexp.lastIndex = 0;\n" \
- " var resultList = [];\n" \
- "\n" \
- " //\n" \
- " //\n" \
- " //\n" \
- " var maximumReasonableMatchSize = 100000000;\n" \
- "\n" \
- " while (true) {\n" \
- " var result = regexp.exec(str);\n" \
- " \n" \
- " if (result === null) {\n" \
- " if (resultList.length === 0)\n" \
- " return null;\n" \
- " return resultList;\n" \
- " }\n" \
- "\n" \
- " if (resultList.length > maximumReasonableMatchSize)\n" \
- " @throwOutOfMemoryError();\n" \
- "\n" \
- " var resultString = @toString(result[0]);\n" \
- "\n" \
- " if (!resultString.length)\n" \
- " regexp.lastIndex = @advanceStringIndex(str, regexp.lastIndex, unicode);\n" \
- "\n" \
- " @arrayPush(resultList, resultString);\n" \
- " }\n" \
- "})\n" \
-;
-
-const JSC::ConstructAbility s_onigurumaRegExpPrototypeMatchCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const JSC::ConstructorKind s_onigurumaRegExpPrototypeMatchCodeConstructorKind = JSC::ConstructorKind::None;
-const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeMatchCodeImplementationVisibility = JSC::ImplementationVisibility::Public;
-const int s_onigurumaRegExpPrototypeMatchCodeLength = 225;
-static const JSC::Intrinsic s_onigurumaRegExpPrototypeMatchCodeIntrinsic = JSC::NoIntrinsic;
-const char* const s_onigurumaRegExpPrototypeMatchCode =
- "(function (strArg)\n" \
- "{\n" \
- " \"use strict\";\n" \
- "\n" \
- " if (!@isObject(this))\n" \
- " @throwTypeError(\"RegExp.prototype.@@match requires that |this| be an Object\");\n" \
- "\n" \
- " var str = @toString(strArg);\n" \
- "\n" \
- " return @matchSlow(this, str);\n" \
- "})\n" \
-;
-
-const JSC::ConstructAbility s_onigurumaRegExpPrototypeMatchAllCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const JSC::ConstructorKind s_onigurumaRegExpPrototypeMatchAllCodeConstructorKind = JSC::ConstructorKind::None;
-const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeMatchAllCodeImplementationVisibility = JSC::ImplementationVisibility::Public;
-const int s_onigurumaRegExpPrototypeMatchAllCodeLength = 2928;
-static const JSC::Intrinsic s_onigurumaRegExpPrototypeMatchAllCodeIntrinsic = JSC::NoIntrinsic;
-const char* const s_onigurumaRegExpPrototypeMatchAllCode =
- "(function (strArg)\n" \
- "{\n" \
- " \"use strict\";\n" \
- "\n" \
- " var regExp = this;\n" \
- " if (!@isObject(regExp)) {\n" \
- " @throwTypeError(\"RegExp.prototype.@@matchAll requires |this| to be an Object\");\n" \
- " }\n" \
- "\n" \
- " var string = @toString(strArg);\n" \
- "\n" \
- " var Matcher = @speciesConstructor(regExp, @Bun.OnigurumaRegExp);\n" \
- "\n" \
- " var flags = @toString(regExp.flags);\n" \
- " var matcher = new Matcher(regExp.source, flags);\n" \
- " matcher.lastIndex = @toLength(regExp.lastIndex);\n" \
- "\n" \
- " var global = @stringIncludesInternal.@call(flags, \"g\");\n" \
- " var fullUnicode = @stringIncludesInternal.@call(flags, \"u\");\n" \
- "\n" \
- " var iterator = globalThis.Symbol.iterator;\n" \
- "\n" \
- " var RegExpStringIterator = class RegExpStringIterator {\n" \
- " constructor(regExp, string, global, fullUnicode)\n" \
- " {\n" \
- " \n" \
- " @putByIdDirectPrivate(this, \"regExpStringIteratorRegExp\", regExp);\n" \
- " @putByIdDirectPrivate(this, \"regExpStringIteratorString\", string);\n" \
- " @putByIdDirectPrivate(this, \"regExpStringIteratorGlobal\", global);\n" \
- " @putByIdDirectPrivate(this, \"regExpStringIteratorUnicode\", fullUnicode);\n" \
- " @putByIdDirectPrivate(this, \"regExpStringIteratorDone\", false);\n" \
- " }\n" \
- "\n" \
- " next() {\n" \
- " \"use strict\";\n" \
- " if (!@isObject(this)) {\n" \
- " @throwTypeError(\"%RegExpStringIteratorPrototype%.next requires |this| to be an Object\");\n" \
- " }\n" \
- " \n" \
- " var done = @getByIdDirectPrivate(this, \"regExpStringIteratorDone\");\n" \
- " if (done === @undefined) {\n" \
- " @throwTypeError(\"%RegExpStringIteratorPrototype%.next requires |this| to be an RegExp String Iterator instance\");\n" \
- " }\n" \
- " \n" \
- " if (done) {\n" \
- " return { value: @undefined, done: true };\n" \
- " }\n" \
- " \n" \
- " var regExp = @getByIdDirectPrivate(this, \"regExpStringIteratorRegExp\");\n" \
- " var string = @getByIdDirectPrivate(this, \"regExpStringIteratorString\");\n" \
- " var global = @getByIdDirectPrivate(this, \"regExpStringIteratorGlobal\");\n" \
- " var fullUnicode = @getByIdDirectPrivate(this, \"regExpStringIteratorUnicode\");\n" \
- " var match = regExp.exec(string);\n" \
- " if (match === null) {\n" \
- " @putByIdDirectPrivate(this, \"regExpStringIteratorDone\", true);\n" \
- " return { value: @undefined, done: true };\n" \
- " }\n" \
- " \n" \
- " if (global) {\n" \
- " var matchStr = @toString(match[0]);\n" \
- " if (matchStr === \"\") {\n" \
- " var thisIndex = @toLength(regExp.lastIndex);\n" \
- " regExp.lastIndex = @advanceStringIndex(string, thisIndex, fullUnicode);\n" \
- " }\n" \
- " } else\n" \
- " @putByIdDirectPrivate(this, \"regExpStringIteratorDone\", true);\n" \
- " \n" \
- " return { value: match, done: false };\n" \
- " }\n" \
- "\n" \
- " [iterator]() {\n" \
- " return this;\n" \
- " }\n" \
- "\n" \
- " };\n" \
- "\n" \
- " return new RegExpStringIterator(matcher, string, global, fullUnicode);\n" \
- "})\n" \
-;
-
-const JSC::ConstructAbility s_onigurumaRegExpPrototypeGetSubstitutionCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const JSC::ConstructorKind s_onigurumaRegExpPrototypeGetSubstitutionCodeConstructorKind = JSC::ConstructorKind::None;
-const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeGetSubstitutionCodeImplementationVisibility = JSC::ImplementationVisibility::Private;
-const int s_onigurumaRegExpPrototypeGetSubstitutionCodeLength = 3603;
-static const JSC::Intrinsic s_onigurumaRegExpPrototypeGetSubstitutionCodeIntrinsic = JSC::NoIntrinsic;
-const char* const s_onigurumaRegExpPrototypeGetSubstitutionCode =
- "(function (matched, str, position, captures, namedCaptures, replacement)\n" \
- "{\n" \
- " \"use strict\";\n" \
- "\n" \
- " var matchLength = matched.length;\n" \
- " var stringLength = str.length;\n" \
- " var tailPos = position + matchLength;\n" \
- " var m = captures.length;\n" \
- " var replacementLength = replacement.length;\n" \
- " var result = \"\";\n" \
- " var lastStart = 0;\n" \
- "\n" \
- " for (var start = 0; start = @stringIndexOfInternal.@call(replacement, \"$\", lastStart), start !== -1; lastStart = start) {\n" \
- " if (start - lastStart > 0)\n" \
- " result = result + @stringSubstring.@call(replacement, lastStart, start);\n" \
- " start++;\n" \
- " if (start >= replacementLength)\n" \
- " result = result + \"$\";\n" \
- " else {\n" \
- " var ch = replacement[start];\n" \
- " switch (ch)\n" \
- " {\n" \
- " case \"$\":\n" \
- " result = result + \"$\";\n" \
- " start++;\n" \
- " break;\n" \
- " case \"&\":\n" \
- " result = result + matched;\n" \
- " start++;\n" \
- " break;\n" \
- " case \"`\":\n" \
- " if (position > 0)\n" \
- " result = result + @stringSubstring.@call(str, 0, position);\n" \
- " start++;\n" \
- " break;\n" \
- " case \"'\":\n" \
- " if (tailPos < stringLength)\n" \
- " result = result + @stringSubstring.@call(str, tailPos);\n" \
- " start++;\n" \
- " break;\n" \
- " case \"<\":\n" \
- " if (namedCaptures !== @undefined) {\n" \
- " var groupNameStartIndex = start + 1;\n" \
- " var groupNameEndIndex = @stringIndexOfInternal.@call(replacement, \">\", groupNameStartIndex);\n" \
- " if (groupNameEndIndex !== -1) {\n" \
- " var groupName = @stringSubstring.@call(replacement, groupNameStartIndex, groupNameEndIndex);\n" \
- " var capture = namedCaptures[groupName];\n" \
- " if (capture !== @undefined)\n" \
- " result = result + @toString(capture);\n" \
- "\n" \
- " start = groupNameEndIndex + 1;\n" \
- " break;\n" \
- " }\n" \
- " }\n" \
- "\n" \
- " result = result + \"$<\";\n" \
- " start++;\n" \
- " break;\n" \
- " default:\n" \
- " var chCode = ch.@charCodeAt(0);\n" \
- " if (chCode >= 0x30 && chCode <= 0x39) {\n" \
- " var originalStart = start - 1;\n" \
- " start++;\n" \
- "\n" \
- " var n = chCode - 0x30;\n" \
- " if (n > m) {\n" \
- " result = result + @stringSubstring.@call(replacement, originalStart, start);\n" \
- " break;\n" \
- " }\n" \
- "\n" \
- " if (start < replacementLength) {\n" \
- " var nextChCode = replacement.@charCodeAt(start);\n" \
- " if (nextChCode >= 0x30 && nextChCode <= 0x39) {\n" \
- " var nn = 10 * n + nextChCode - 0x30;\n" \
- " if (nn <= m) {\n" \
- " n = nn;\n" \
- " start++;\n" \
- " }\n" \
- " }\n" \
- " }\n" \
- "\n" \
- " if (n == 0) {\n" \
- " result = result + @stringSubstring.@call(replacement, originalStart, start);\n" \
- " break;\n" \
- " }\n" \
- "\n" \
- " var capture = captures[n - 1];\n" \
- " if (capture !== @undefined)\n" \
- " result = result + capture;\n" \
- " } else\n" \
- " result = result + \"$\";\n" \
- " break;\n" \
- " }\n" \
- " }\n" \
- " }\n" \
- "\n" \
- " return result + @stringSubstring.@call(replacement, lastStart);\n" \
- "})\n" \
-;
-
-const JSC::ConstructAbility s_onigurumaRegExpPrototypeReplaceCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const JSC::ConstructorKind s_onigurumaRegExpPrototypeReplaceCodeConstructorKind = JSC::ConstructorKind::None;
-const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeReplaceCodeImplementationVisibility = JSC::ImplementationVisibility::Public;
-const int s_onigurumaRegExpPrototypeReplaceCodeLength = 3208;
-static const JSC::Intrinsic s_onigurumaRegExpPrototypeReplaceCodeIntrinsic = JSC::NoIntrinsic;
-const char* const s_onigurumaRegExpPrototypeReplaceCode =
- "(function (strArg, replace)\n" \
- "{\n" \
- " \"use strict\";\n" \
- "\n" \
- " if (!@isObject(this))\n" \
- " @throwTypeError(\"RegExp.prototype.@@replace requires that |this| be an Object\");\n" \
- "\n" \
- " var regexp = this;\n" \
- "\n" \
- " var str = @toString(strArg);\n" \
- " var stringLength = str.length;\n" \
- " var functionalReplace = @isCallable(replace);\n" \
- "\n" \
- " if (!functionalReplace)\n" \
- " replace = @toString(replace);\n" \
- "\n" \
- " var global = regexp.global;\n" \
- " var unicode = false;\n" \
- "\n" \
- " if (global) {\n" \
- " unicode = regexp.unicode;\n" \
- " regexp.lastIndex = 0;\n" \
- " }\n" \
- "\n" \
- " var resultList = [];\n" \
- " var result;\n" \
- " var done = false;\n" \
- " while (!done) {\n" \
- " result = regexp.exec(str);\n" \
- "\n" \
- " if (result === null)\n" \
- " done = true;\n" \
- " else {\n" \
- " @arrayPush(resultList, result);\n" \
- " if (!global)\n" \
- " done = true;\n" \
- " else {\n" \
- " var matchStr = @toString(result[0]);\n" \
- "\n" \
- " if (!matchStr.length) {\n" \
- " var thisIndex = @toLength(regexp.lastIndex);\n" \
- " regexp.lastIndex = @advanceStringIndex(str, thisIndex, unicode);\n" \
- " }\n" \
- " }\n" \
- " }\n" \
- " }\n" \
- "\n" \
- " var accumulatedResult = \"\";\n" \
- " var nextSourcePosition = 0;\n" \
- "\n" \
- " for (var i = 0, resultListLength = resultList.length; i < resultListLength; ++i) {\n" \
- " var result = resultList[i];\n" \
- " var nCaptures = result.length - 1;\n" \
- " if (nCaptures < 0)\n" \
- " nCaptures = 0;\n" \
- " var matched = @toString(result[0]);\n" \
- " var matchLength = matched.length;\n" \
- " var position = @toIntegerOrInfinity(result.index);\n" \
- " position = (position > stringLength) ? stringLength : position;\n" \
- " position = (position < 0) ? 0 : position;\n" \
- "\n" \
- " var captures = [];\n" \
- " for (var n = 1; n <= nCaptures; n++) {\n" \
- " var capN = result[n];\n" \
- " if (capN !== @undefined)\n" \
- " capN = @toString(capN);\n" \
- " @arrayPush(captures, capN);\n" \
- " }\n" \
- "\n" \
- " var replacement;\n" \
- " var namedCaptures = result.groups;\n" \
- "\n" \
- " if (functionalReplace) {\n" \
- " var replacerArgs = [ matched ];\n" \
- " for (var j = 0; j < captures.length; j++)\n" \
- " @arrayPush(replacerArgs, captures[j]);\n" \
- "\n" \
- " @arrayPush(replacerArgs, position);\n" \
- " @arrayPush(replacerArgs, str);\n" \
- "\n" \
- " if (namedCaptures !== @undefined)\n" \
- " @arrayPush(replacerArgs, namedCaptures);\n" \
- "\n" \
- " var replValue = replace.@apply(@undefined, replacerArgs);\n" \
- " replacement = @toString(replValue);\n" \
- " } else {\n" \
- " if (namedCaptures !== @undefined)\n" \
- " namedCaptures = @toObject(namedCaptures, \"RegExp.prototype[Symbol.replace] requires 'groups' property of a match not be null\");\n" \
- "\n" \
- " replacement = @getSubstitution(matched, str, position, captures, namedCaptures, replace);\n" \
- " }\n" \
- "\n" \
- " if (position >= nextSourcePosition) {\n" \
- " accumulatedResult = accumulatedResult + @stringSubstring.@call(str, nextSourcePosition, position) + replacement;\n" \
- " nextSourcePosition = position + matchLength;\n" \
- " }\n" \
- " }\n" \
- "\n" \
- " if (nextSourcePosition >= stringLength)\n" \
- " return accumulatedResult;\n" \
- "\n" \
- " return accumulatedResult + @stringSubstring.@call(str, nextSourcePosition);\n" \
- "})\n" \
-;
-
-const JSC::ConstructAbility s_onigurumaRegExpPrototypeSearchCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const JSC::ConstructorKind s_onigurumaRegExpPrototypeSearchCodeConstructorKind = JSC::ConstructorKind::None;
-const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeSearchCodeImplementationVisibility = JSC::ImplementationVisibility::Public;
-const int s_onigurumaRegExpPrototypeSearchCodeLength = 631;
-static const JSC::Intrinsic s_onigurumaRegExpPrototypeSearchCodeIntrinsic = JSC::NoIntrinsic;
-const char* const s_onigurumaRegExpPrototypeSearchCode =
- "(function (strArg)\n" \
- "{\n" \
- " \"use strict\";\n" \
- "\n" \
- " var regexp = this;\n" \
- "\n" \
- " //\n" \
- " //\n" \
- " if (!@isObject(this))\n" \
- " @throwTypeError(\"RegExp.prototype.@@search requires that |this| be an Object\");\n" \
- "\n" \
- " //\n" \
- " var str = @toString(strArg)\n" \
- "\n" \
- " //\n" \
- " var previousLastIndex = regexp.lastIndex;\n" \
- "\n" \
- " //\n" \
- " //\n" \
- " if (!@sameValue(previousLastIndex, 0))\n" \
- " regexp.lastIndex = 0;\n" \
- "\n" \
- " //\n" \
- " var result = regexp.exec(str);\n" \
- "\n" \
- " //\n" \
- " //\n" \
- " //\n" \
- " if (!@sameValue(regexp.lastIndex, previousLastIndex))\n" \
- " regexp.lastIndex = previousLastIndex;\n" \
- "\n" \
- " //\n" \
- " if (result === null)\n" \
- " return -1;\n" \
- "\n" \
- " //\n" \
- " return result.index;\n" \
- "})\n" \
-;
-
-const JSC::ConstructAbility s_onigurumaRegExpPrototypeSplitCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const JSC::ConstructorKind s_onigurumaRegExpPrototypeSplitCodeConstructorKind = JSC::ConstructorKind::None;
-const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeSplitCodeImplementationVisibility = JSC::ImplementationVisibility::Public;
-const int s_onigurumaRegExpPrototypeSplitCodeLength = 2926;
-static const JSC::Intrinsic s_onigurumaRegExpPrototypeSplitCodeIntrinsic = JSC::NoIntrinsic;
-const char* const s_onigurumaRegExpPrototypeSplitCode =
- "(function (string, limit)\n" \
- "{\n" \
- " \"use strict\";\n" \
- "\n" \
- " //\n" \
- " //\n" \
- " if (!@isObject(this))\n" \
- " @throwTypeError(\"RegExp.prototype.@@split requires that |this| be an Object\");\n" \
- " var regexp = this;\n" \
- "\n" \
- " //\n" \
- " var str = @toString(string);\n" \
- "\n" \
- " //\n" \
- " var speciesConstructor = @speciesConstructor(regexp, @RegExp);\n" \
- "\n" \
- " //\n" \
- " var flags = @toString(regexp.flags);\n" \
- "\n" \
- " //\n" \
- " //\n" \
- " var unicodeMatching = @stringIncludesInternal.@call(flags, \"u\");\n" \
- " //\n" \
- " //\n" \
- " var newFlags = @stringIncludesInternal.@call(flags, \"y\") ? flags : flags + \"y\";\n" \
- "\n" \
- " //\n" \
- " var splitter = new speciesConstructor(regexp.source, newFlags);\n" \
- "\n" \
- " //\n" \
- " //\n" \
- "\n" \
- " //\n" \
- " //\n" \
- " var result = [];\n" \
- "\n" \
- " //\n" \
- " limit = (limit === @undefined) ? 0xffffffff : limit >>> 0;\n" \
- "\n" \
- " //\n" \
- " if (!limit)\n" \
- " return result;\n" \
- "\n" \
- " //\n" \
- " var size = str.length;\n" \
- "\n" \
- " //\n" \
- " if (!size) {\n" \
- " //\n" \
- " var z = splitter.exec(str);\n" \
- " //\n" \
- " if (z !== null)\n" \
- " return result;\n" \
- " //\n" \
- " @putByValDirect(result, 0, str);\n" \
- " //\n" \
- " return result;\n" \
- " }\n" \
- "\n" \
- " //\n" \
- " var position = 0;\n" \
- " //\n" \
- " var matchPosition = 0;\n" \
- "\n" \
- " //\n" \
- " while (matchPosition < size) {\n" \
- " //\n" \
- " splitter.lastIndex = matchPosition;\n" \
- " //\n" \
- " var matches = splitter.exec(str);\n" \
- " //\n" \
- " if (matches === null)\n" \
- " matchPosition = @advanceStringIndex(str, matchPosition, unicodeMatching);\n" \
- " //\n" \
- " else {\n" \
- " //\n" \
- " var endPosition = @toLength(splitter.lastIndex);\n" \
- " //\n" \
- " endPosition = (endPosition <= size) ? endPosition : size;\n" \
- " //\n" \
- " if (endPosition === position)\n" \
- " matchPosition = @advanceStringIndex(str, matchPosition, unicodeMatching);\n" \
- " //\n" \
- " else {\n" \
- " //\n" \
- " var subStr = @stringSubstring.@call(str, position, matchPosition);\n" \
- " //\n" \
- " //\n" \
- " @arrayPush(result, subStr);\n" \
- " //\n" \
- " if (result.length == limit)\n" \
- " return result;\n" \
- "\n" \
- " //\n" \
- " position = endPosition;\n" \
- " //\n" \
- " //\n" \
- " var numberOfCaptures = matches.length > 1 ? matches.length - 1 : 0;\n" \
- "\n" \
- " //\n" \
- " var i = 1;\n" \
- " //\n" \
- " while (i <= numberOfCaptures) {\n" \
- " //\n" \
- " var nextCapture = matches[i];\n" \
- " //\n" \
- " //\n" \
- " @arrayPush(result, nextCapture);\n" \
- " //\n" \
- " if (result.length == limit)\n" \
- " return result;\n" \
- " //\n" \
- " i++;\n" \
- " }\n" \
- " //\n" \
- " matchPosition = position;\n" \
- " }\n" \
- " }\n" \
- " }\n" \
- " //\n" \
- " var remainingStr = @stringSubstring.@call(str, position, size);\n" \
- " //\n" \
- " @arrayPush(result, remainingStr);\n" \
- " //\n" \
- " return result;\n" \
- "})\n" \
-;
-
-const JSC::ConstructAbility s_onigurumaRegExpPrototypeTestCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const JSC::ConstructorKind s_onigurumaRegExpPrototypeTestCodeConstructorKind = JSC::ConstructorKind::None;
-const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeTestCodeImplementationVisibility = JSC::ImplementationVisibility::Public;
-const int s_onigurumaRegExpPrototypeTestCodeLength = 452;
-static const JSC::Intrinsic s_onigurumaRegExpPrototypeTestCodeIntrinsic = JSC::NoIntrinsic;
-const char* const s_onigurumaRegExpPrototypeTestCode =
- "(function (strArg)\n" \
- "{\n" \
- " \"use strict\";\n" \
- "\n" \
- " var regexp = this;\n" \
- "\n" \
- " if (regexp.test == @Bun.OnigurumaRegExp.prototype.test) {\n" \
- " return regexp.test(strArg);\n" \
- " }\n" \
- "\n" \
- " //\n" \
- " //\n" \
- " if (!@isObject(regexp))\n" \
- " @throwTypeError(\"RegExp.prototype.test requires that |this| be an Object\");\n" \
- "\n" \
- " //\n" \
- " var str = @toString(strArg);\n" \
- "\n" \
- " //\n" \
- " var match = regexp.exec(str);\n" \
- "\n" \
- " //\n" \
- " if (match !== null)\n" \
- " return true;\n" \
- " return false;\n" \
- "})\n" \
-;
-
-
-#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \
-JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \
-{\
- JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \
- return clientData->builtinFunctions().onigurumaRegExpPrototypeBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().onigurumaRegExpPrototypeBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \
-}
-WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR)
-#undef DEFINE_BUILTIN_GENERATOR
-
-
-} // namespace WebCore
diff --git a/src/bun.js/builtins/cpp/OnigurumaRegExpPrototypeBuiltins.h b/src/bun.js/builtins/cpp/OnigurumaRegExpPrototypeBuiltins.h
deleted file mode 100644
index d8d17d14d..000000000
--- a/src/bun.js/builtins/cpp/OnigurumaRegExpPrototypeBuiltins.h
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright (c) 2015 Igalia
- * Copyright (c) 2015 Igalia S.L.
- * Copyright (c) 2015 Igalia.
- * Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
- * Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
- * Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
- * Copyright (c) 2022 Codeblog Corp. 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.
- *
- */
-
-// DO NOT EDIT THIS FILE. It is automatically generated from JavaScript files for
-// builtins by the script: Source/JavaScriptCore/Scripts/generate-js-builtins.py
-
-#pragma once
-
-#include <JavaScriptCore/BuiltinUtils.h>
-#include <JavaScriptCore/Identifier.h>
-#include <JavaScriptCore/JSFunction.h>
-#include <JavaScriptCore/UnlinkedFunctionExecutable.h>
-
-namespace JSC {
-class FunctionExecutable;
-}
-
-namespace WebCore {
-
-/* OnigurumaRegExpPrototype */
-extern const char* const s_onigurumaRegExpPrototypeAdvanceStringIndexCode;
-extern const int s_onigurumaRegExpPrototypeAdvanceStringIndexCodeLength;
-extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeAdvanceStringIndexCodeConstructAbility;
-extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeAdvanceStringIndexCodeConstructorKind;
-extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeAdvanceStringIndexCodeImplementationVisibility;
-extern const char* const s_onigurumaRegExpPrototypeMatchSlowCode;
-extern const int s_onigurumaRegExpPrototypeMatchSlowCodeLength;
-extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeMatchSlowCodeConstructAbility;
-extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeMatchSlowCodeConstructorKind;
-extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeMatchSlowCodeImplementationVisibility;
-extern const char* const s_onigurumaRegExpPrototypeMatchCode;
-extern const int s_onigurumaRegExpPrototypeMatchCodeLength;
-extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeMatchCodeConstructAbility;
-extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeMatchCodeConstructorKind;
-extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeMatchCodeImplementationVisibility;
-extern const char* const s_onigurumaRegExpPrototypeMatchAllCode;
-extern const int s_onigurumaRegExpPrototypeMatchAllCodeLength;
-extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeMatchAllCodeConstructAbility;
-extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeMatchAllCodeConstructorKind;
-extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeMatchAllCodeImplementationVisibility;
-extern const char* const s_onigurumaRegExpPrototypeGetSubstitutionCode;
-extern const int s_onigurumaRegExpPrototypeGetSubstitutionCodeLength;
-extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeGetSubstitutionCodeConstructAbility;
-extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeGetSubstitutionCodeConstructorKind;
-extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeGetSubstitutionCodeImplementationVisibility;
-extern const char* const s_onigurumaRegExpPrototypeReplaceCode;
-extern const int s_onigurumaRegExpPrototypeReplaceCodeLength;
-extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeReplaceCodeConstructAbility;
-extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeReplaceCodeConstructorKind;
-extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeReplaceCodeImplementationVisibility;
-extern const char* const s_onigurumaRegExpPrototypeSearchCode;
-extern const int s_onigurumaRegExpPrototypeSearchCodeLength;
-extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeSearchCodeConstructAbility;
-extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeSearchCodeConstructorKind;
-extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeSearchCodeImplementationVisibility;
-extern const char* const s_onigurumaRegExpPrototypeSplitCode;
-extern const int s_onigurumaRegExpPrototypeSplitCodeLength;
-extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeSplitCodeConstructAbility;
-extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeSplitCodeConstructorKind;
-extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeSplitCodeImplementationVisibility;
-extern const char* const s_onigurumaRegExpPrototypeTestCode;
-extern const int s_onigurumaRegExpPrototypeTestCodeLength;
-extern const JSC::ConstructAbility s_onigurumaRegExpPrototypeTestCodeConstructAbility;
-extern const JSC::ConstructorKind s_onigurumaRegExpPrototypeTestCodeConstructorKind;
-extern const JSC::ImplementationVisibility s_onigurumaRegExpPrototypeTestCodeImplementationVisibility;
-
-#define WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_DATA(macro) \
- macro(advanceStringIndex, onigurumaRegExpPrototypeAdvanceStringIndex, 3) \
- macro(matchSlow, onigurumaRegExpPrototypeMatchSlow, 2) \
- macro(match, onigurumaRegExpPrototypeMatch, 1) \
- macro(matchAll, onigurumaRegExpPrototypeMatchAll, 1) \
- macro(getSubstitution, onigurumaRegExpPrototypeGetSubstitution, 6) \
- macro(replace, onigurumaRegExpPrototypeReplace, 2) \
- macro(search, onigurumaRegExpPrototypeSearch, 1) \
- macro(split, onigurumaRegExpPrototypeSplit, 2) \
- macro(test, onigurumaRegExpPrototypeTest, 1) \
-
-#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_ADVANCESTRINGINDEX 1
-#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_MATCHSLOW 1
-#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_MATCH 1
-#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_MATCHALL 1
-#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_GETSUBSTITUTION 1
-#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_REPLACE 1
-#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_SEARCH 1
-#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_SPLIT 1
-#define WEBCORE_BUILTIN_ONIGURUMAREGEXPPROTOTYPE_TEST 1
-
-#define WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_CODE(macro) \
- macro(onigurumaRegExpPrototypeAdvanceStringIndexCode, advanceStringIndex, ASCIILiteral(), s_onigurumaRegExpPrototypeAdvanceStringIndexCodeLength) \
- macro(onigurumaRegExpPrototypeMatchSlowCode, matchSlow, ASCIILiteral(), s_onigurumaRegExpPrototypeMatchSlowCodeLength) \
- macro(onigurumaRegExpPrototypeMatchCode, match, "[Symbol.match]"_s, s_onigurumaRegExpPrototypeMatchCodeLength) \
- macro(onigurumaRegExpPrototypeMatchAllCode, matchAll, "[Symbol.matchAll]"_s, s_onigurumaRegExpPrototypeMatchAllCodeLength) \
- macro(onigurumaRegExpPrototypeGetSubstitutionCode, getSubstitution, ASCIILiteral(), s_onigurumaRegExpPrototypeGetSubstitutionCodeLength) \
- macro(onigurumaRegExpPrototypeReplaceCode, replace, "[Symbol.replace]"_s, s_onigurumaRegExpPrototypeReplaceCodeLength) \
- macro(onigurumaRegExpPrototypeSearchCode, search, "[Symbol.search]"_s, s_onigurumaRegExpPrototypeSearchCodeLength) \
- macro(onigurumaRegExpPrototypeSplitCode, split, "[Symbol.split]"_s, s_onigurumaRegExpPrototypeSplitCodeLength) \
- macro(onigurumaRegExpPrototypeTestCode, test, ASCIILiteral(), s_onigurumaRegExpPrototypeTestCodeLength) \
-
-#define WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_FUNCTION_NAME(macro) \
- macro(advanceStringIndex) \
- macro(getSubstitution) \
- macro(match) \
- macro(matchAll) \
- macro(matchSlow) \
- macro(replace) \
- macro(search) \
- macro(split) \
- macro(test) \
-
-#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \
- JSC::FunctionExecutable* codeName##Generator(JSC::VM&);
-
-WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR)
-#undef DECLARE_BUILTIN_GENERATOR
-
-class OnigurumaRegExpPrototypeBuiltinsWrapper : private JSC::WeakHandleOwner {
-public:
- explicit OnigurumaRegExpPrototypeBuiltinsWrapper(JSC::VM& vm)
- : m_vm(vm)
- WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES)
-#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { }))
- WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS)
-#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS
- {
- }
-
-#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \
- JSC::UnlinkedFunctionExecutable* name##Executable(); \
- const JSC::SourceCode& name##Source() const { return m_##name##Source; }
- WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES)
-#undef EXPOSE_BUILTIN_EXECUTABLES
-
- WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR)
-
- void exportNames();
-
-private:
- JSC::VM& m_vm;
-
- WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES)
-
-#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \
- JSC::SourceCode m_##name##Source;\
- JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable;
- WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS)
-#undef DECLARE_BUILTIN_SOURCE_MEMBERS
-
-};
-
-#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \
-inline JSC::UnlinkedFunctionExecutable* OnigurumaRegExpPrototypeBuiltinsWrapper::name##Executable() \
-{\
- if (!m_##name##Executable) {\
- JSC::Identifier executableName = functionName##PublicName();\
- if (overriddenName)\
- executableName = JSC::Identifier::fromString(m_vm, overriddenName);\
- m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\
- }\
- return m_##name##Executable.get();\
-}
-WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES)
-#undef DEFINE_BUILTIN_EXECUTABLES
-
-inline void OnigurumaRegExpPrototypeBuiltinsWrapper::exportNames()
-{
-#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName());
- WEBCORE_FOREACH_ONIGURUMAREGEXPPROTOTYPE_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME)
-#undef EXPORT_FUNCTION_NAME
-}
-
-} // namespace WebCore
diff --git a/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.cpp b/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.cpp
index 5c452c7f8..28cd73663 100644
--- a/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.h b/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.h
index 078eb6234..c3af84061 100644
--- a/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.h
+++ b/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.cpp
index e5f3b348e..3b38a593b 100644
--- a/src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.h b/src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.h
index b3ed9b51a..2e19b9d21 100644
--- a/src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.h
+++ b/src/bun.js/builtins/cpp/ReadableByteStreamControllerBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.cpp
index 087291d8e..f1732e48e 100644
--- a/src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.h b/src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.h
index 87afb3da2..06ee280bf 100644
--- a/src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.h
+++ b/src/bun.js/builtins/cpp/ReadableByteStreamInternalsBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.cpp
index 246d7b241..46dcf7f4e 100644
--- a/src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.h b/src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.h
index 94969b6e1..c1d1a4c7f 100644
--- a/src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.h
+++ b/src/bun.js/builtins/cpp/ReadableStreamBYOBReaderBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.cpp
index 52b56f01a..5e0cf16d4 100644
--- a/src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.h b/src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.h
index 91d764366..a5549ad98 100644
--- a/src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.h
+++ b/src/bun.js/builtins/cpp/ReadableStreamBYOBRequestBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ReadableStreamBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableStreamBuiltins.cpp
index 2d50f9cb3..223d8f564 100644
--- a/src/bun.js/builtins/cpp/ReadableStreamBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ReadableStreamBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ReadableStreamBuiltins.h b/src/bun.js/builtins/cpp/ReadableStreamBuiltins.h
index a51da4f44..b85038a43 100644
--- a/src/bun.js/builtins/cpp/ReadableStreamBuiltins.h
+++ b/src/bun.js/builtins/cpp/ReadableStreamBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.cpp
index 2e9b3f231..185d6cdee 100644
--- a/src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.h b/src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.h
index 3dda64a21..5ae59810a 100644
--- a/src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.h
+++ b/src/bun.js/builtins/cpp/ReadableStreamDefaultControllerBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp
index 9504549e0..24b91037b 100644
--- a/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.h b/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.h
index b3b9aed91..b883be6b8 100644
--- a/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.h
+++ b/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp
index 854d46faa..1b15e84e1 100644
--- a/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.h b/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.h
index 39b8e8b0d..a617260be 100644
--- a/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.h
+++ b/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/StreamInternalsBuiltins.cpp b/src/bun.js/builtins/cpp/StreamInternalsBuiltins.cpp
index c231091b6..7a1f7f098 100644
--- a/src/bun.js/builtins/cpp/StreamInternalsBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/StreamInternalsBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/StreamInternalsBuiltins.h b/src/bun.js/builtins/cpp/StreamInternalsBuiltins.h
index 6e3315a08..089992d77 100644
--- a/src/bun.js/builtins/cpp/StreamInternalsBuiltins.h
+++ b/src/bun.js/builtins/cpp/StreamInternalsBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/TransformStreamBuiltins.cpp b/src/bun.js/builtins/cpp/TransformStreamBuiltins.cpp
index bb276fc34..82319d8b9 100644
--- a/src/bun.js/builtins/cpp/TransformStreamBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/TransformStreamBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/TransformStreamBuiltins.h b/src/bun.js/builtins/cpp/TransformStreamBuiltins.h
index f299a0659..8547fd350 100644
--- a/src/bun.js/builtins/cpp/TransformStreamBuiltins.h
+++ b/src/bun.js/builtins/cpp/TransformStreamBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.cpp b/src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.cpp
index 7a30763d3..aae09e51d 100644
--- a/src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.h b/src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.h
index e837fc8c7..a38e0111e 100644
--- a/src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.h
+++ b/src/bun.js/builtins/cpp/TransformStreamDefaultControllerBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.cpp b/src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.cpp
index 0f09ce57e..2a0c48fa3 100644
--- a/src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.h b/src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.h
index 90768e1b6..4850ac1fb 100644
--- a/src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.h
+++ b/src/bun.js/builtins/cpp/TransformStreamInternalsBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/WebCoreJSBuiltinInternals.h b/src/bun.js/builtins/cpp/WebCoreJSBuiltinInternals.h
index e843b7136..fe709cb07 100644
--- a/src/bun.js/builtins/cpp/WebCoreJSBuiltinInternals.h
+++ b/src/bun.js/builtins/cpp/WebCoreJSBuiltinInternals.h
@@ -8,7 +8,6 @@ namespace Zig { class GlobalObject; }
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/WebCoreJSBuiltins.h b/src/bun.js/builtins/cpp/WebCoreJSBuiltins.h
index 0d6d0372c..598e0948e 100644
--- a/src/bun.js/builtins/cpp/WebCoreJSBuiltins.h
+++ b/src/bun.js/builtins/cpp/WebCoreJSBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
@@ -42,7 +41,6 @@
#include "ImportMetaObjectBuiltins.h"
#include "JSBufferConstructorBuiltins.h"
#include "JSBufferPrototypeBuiltins.h"
-#include "OnigurumaRegExpPrototypeBuiltins.h"
#include "ProcessObjectInternalsBuiltins.h"
#include "ReadableByteStreamControllerBuiltins.h"
#include "ReadableByteStreamInternalsBuiltins.h"
@@ -73,7 +71,6 @@ public:
, m_importMetaObjectBuiltins(m_vm)
, m_jsBufferConstructorBuiltins(m_vm)
, m_jsBufferPrototypeBuiltins(m_vm)
- , m_onigurumaRegExpPrototypeBuiltins(m_vm)
, m_processObjectInternalsBuiltins(m_vm)
, m_readableByteStreamControllerBuiltins(m_vm)
, m_readableByteStreamInternalsBuiltins(m_vm)
@@ -104,7 +101,6 @@ public:
ImportMetaObjectBuiltinsWrapper& importMetaObjectBuiltins() { return m_importMetaObjectBuiltins; }
JSBufferConstructorBuiltinsWrapper& jsBufferConstructorBuiltins() { return m_jsBufferConstructorBuiltins; }
JSBufferPrototypeBuiltinsWrapper& jsBufferPrototypeBuiltins() { return m_jsBufferPrototypeBuiltins; }
- OnigurumaRegExpPrototypeBuiltinsWrapper& onigurumaRegExpPrototypeBuiltins() { return m_onigurumaRegExpPrototypeBuiltins; }
ProcessObjectInternalsBuiltinsWrapper& processObjectInternalsBuiltins() { return m_processObjectInternalsBuiltins; }
ReadableByteStreamControllerBuiltinsWrapper& readableByteStreamControllerBuiltins() { return m_readableByteStreamControllerBuiltins; }
ReadableByteStreamInternalsBuiltinsWrapper& readableByteStreamInternalsBuiltins() { return m_readableByteStreamInternalsBuiltins; }
@@ -130,7 +126,6 @@ private:
ImportMetaObjectBuiltinsWrapper m_importMetaObjectBuiltins;
JSBufferConstructorBuiltinsWrapper m_jsBufferConstructorBuiltins;
JSBufferPrototypeBuiltinsWrapper m_jsBufferPrototypeBuiltins;
- OnigurumaRegExpPrototypeBuiltinsWrapper m_onigurumaRegExpPrototypeBuiltins;
ProcessObjectInternalsBuiltinsWrapper m_processObjectInternalsBuiltins;
ReadableByteStreamControllerBuiltinsWrapper m_readableByteStreamControllerBuiltins;
ReadableByteStreamInternalsBuiltinsWrapper m_readableByteStreamInternalsBuiltins;
diff --git a/src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.cpp b/src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.cpp
index c4d996494..fed47de16 100644
--- a/src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.h b/src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.h
index e8b90012b..41e5a62ab 100644
--- a/src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.h
+++ b/src/bun.js/builtins/cpp/WritableStreamDefaultControllerBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.cpp b/src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.cpp
index 4876aa54a..4a2088728 100644
--- a/src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.h b/src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.h
index cadcb9840..70d154bcd 100644
--- a/src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.h
+++ b/src/bun.js/builtins/cpp/WritableStreamDefaultWriterBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.cpp b/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.cpp
index e75d0e5dc..73df2027d 100644
--- a/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.cpp
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.h b/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.h
index a869ed60f..f38a4ac60 100644
--- a/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.h
+++ b/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.h
@@ -4,7 +4,6 @@
* Copyright (c) 2015 Igalia.
* Copyright (c) 2015, 2016 Canon Inc. All rights reserved.
* Copyright (c) 2015, 2016, 2017 Canon Inc.
- * Copyright (c) 2016, 2018 -2018 Apple Inc. All rights reserved.
* Copyright (c) 2016, 2020 Apple Inc. All rights reserved.
* Copyright (c) 2022 Codeblog Corp. All rights reserved.
*
diff --git a/src/bun.js/builtins/js/OnigurumaRegExpPrototype.js b/src/bun.js/builtins/js/OnigurumaRegExpPrototype.js
deleted file mode 100644
index e894069f3..000000000
--- a/src/bun.js/builtins/js/OnigurumaRegExpPrototype.js
+++ /dev/null
@@ -1,583 +0,0 @@
-/*
- * Copyright (C) 2016-2018 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. ``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
- * 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.
- */
-
-
-@linkTimeConstant
-function advanceStringIndex(string, index, unicode)
-{
- // This function implements AdvanceStringIndex described in ES6 21.2.5.2.3.
- "use strict";
-
- if (!unicode)
- return index + 1;
-
- if (index + 1 >= string.length)
- return index + 1;
-
- var first = string.@charCodeAt(index);
- if (first < 0xD800 || first > 0xDBFF)
- return index + 1;
-
- var second = string.@charCodeAt(index + 1);
- if (second < 0xDC00 || second > 0xDFFF)
- return index + 1;
-
- return index + 2;
-}
-
-
-@linkTimeConstant
-function matchSlow(regexp, str)
-{
- "use strict";
-
- if (!regexp.global)
- return regexp.exec(str);
-
- var unicode = regexp.unicode;
- regexp.lastIndex = 0;
- var resultList = [];
-
- // FIXME: It would be great to implement a solution similar to what we do in
- // RegExpObject::matchGlobal(). It's not clear if this is possible, since this loop has
- // effects. https://bugs.webkit.org/show_bug.cgi?id=158145
- var maximumReasonableMatchSize = 100000000;
-
- while (true) {
- var result = regexp.exec(str);
-
- if (result === null) {
- if (resultList.length === 0)
- return null;
- return resultList;
- }
-
- if (resultList.length > maximumReasonableMatchSize)
- @throwOutOfMemoryError();
-
- var resultString = @toString(result[0]);
-
- if (!resultString.length)
- regexp.lastIndex = @advanceStringIndex(str, regexp.lastIndex, unicode);
-
- @arrayPush(resultList, resultString);
- }
-}
-
-@overriddenName="[Symbol.match]"
-function match(strArg)
-{
- "use strict";
-
- if (!@isObject(this))
- @throwTypeError("RegExp.prototype.@@match requires that |this| be an Object");
-
- var str = @toString(strArg);
-
- return @matchSlow(this, str);
-}
-
-@overriddenName="[Symbol.matchAll]"
-function matchAll(strArg)
-{
- "use strict";
-
- var regExp = this;
- if (!@isObject(regExp)) {
- @throwTypeError("RegExp.prototype.@@matchAll requires |this| to be an Object");
- }
-
- var string = @toString(strArg);
-
- var Matcher = @speciesConstructor(regExp, @Bun.OnigurumaRegExp);
-
- var flags = @toString(regExp.flags);
- var matcher = new Matcher(regExp.source, flags);
- matcher.lastIndex = @toLength(regExp.lastIndex);
-
- var global = @stringIncludesInternal.@call(flags, "g");
- var fullUnicode = @stringIncludesInternal.@call(flags, "u");
-
- var iterator = globalThis.Symbol.iterator;
-
- var RegExpStringIterator = class RegExpStringIterator {
- constructor(regExp, string, global, fullUnicode)
- {
-
- @putByIdDirectPrivate(this, "regExpStringIteratorRegExp", regExp);
- @putByIdDirectPrivate(this, "regExpStringIteratorString", string);
- @putByIdDirectPrivate(this, "regExpStringIteratorGlobal", global);
- @putByIdDirectPrivate(this, "regExpStringIteratorUnicode", fullUnicode);
- @putByIdDirectPrivate(this, "regExpStringIteratorDone", false);
- }
-
- next() {
- "use strict";
- if (!@isObject(this)) {
- @throwTypeError("%RegExpStringIteratorPrototype%.next requires |this| to be an Object");
- }
-
- var done = @getByIdDirectPrivate(this, "regExpStringIteratorDone");
- if (done === @undefined) {
- @throwTypeError("%RegExpStringIteratorPrototype%.next requires |this| to be an RegExp String Iterator instance");
- }
-
- if (done) {
- return { value: @undefined, done: true };
- }
-
- var regExp = @getByIdDirectPrivate(this, "regExpStringIteratorRegExp");
- var string = @getByIdDirectPrivate(this, "regExpStringIteratorString");
- var global = @getByIdDirectPrivate(this, "regExpStringIteratorGlobal");
- var fullUnicode = @getByIdDirectPrivate(this, "regExpStringIteratorUnicode");
- var match = regExp.exec(string);
- if (match === null) {
- @putByIdDirectPrivate(this, "regExpStringIteratorDone", true);
- return { value: @undefined, done: true };
- }
-
- if (global) {
- var matchStr = @toString(match[0]);
- if (matchStr === "") {
- var thisIndex = @toLength(regExp.lastIndex);
- regExp.lastIndex = @advanceStringIndex(string, thisIndex, fullUnicode);
- }
- } else
- @putByIdDirectPrivate(this, "regExpStringIteratorDone", true);
-
- return { value: match, done: false };
- }
-
- [iterator]() {
- return this;
- }
-
- };
-
- return new RegExpStringIterator(matcher, string, global, fullUnicode);
-}
-
-@linkTimeConstant
-function getSubstitution(matched, str, position, captures, namedCaptures, replacement)
-{
- "use strict";
-
- var matchLength = matched.length;
- var stringLength = str.length;
- var tailPos = position + matchLength;
- var m = captures.length;
- var replacementLength = replacement.length;
- var result = "";
- var lastStart = 0;
-
- for (var start = 0; start = @stringIndexOfInternal.@call(replacement, "$", lastStart), start !== -1; lastStart = start) {
- if (start - lastStart > 0)
- result = result + @stringSubstring.@call(replacement, lastStart, start);
- start++;
- if (start >= replacementLength)
- result = result + "$";
- else {
- var ch = replacement[start];
- switch (ch)
- {
- case "$":
- result = result + "$";
- start++;
- break;
- case "&":
- result = result + matched;
- start++;
- break;
- case "`":
- if (position > 0)
- result = result + @stringSubstring.@call(str, 0, position);
- start++;
- break;
- case "'":
- if (tailPos < stringLength)
- result = result + @stringSubstring.@call(str, tailPos);
- start++;
- break;
- case "<":
- if (namedCaptures !== @undefined) {
- var groupNameStartIndex = start + 1;
- var groupNameEndIndex = @stringIndexOfInternal.@call(replacement, ">", groupNameStartIndex);
- if (groupNameEndIndex !== -1) {
- var groupName = @stringSubstring.@call(replacement, groupNameStartIndex, groupNameEndIndex);
- var capture = namedCaptures[groupName];
- if (capture !== @undefined)
- result = result + @toString(capture);
-
- start = groupNameEndIndex + 1;
- break;
- }
- }
-
- result = result + "$<";
- start++;
- break;
- default:
- var chCode = ch.@charCodeAt(0);
- if (chCode >= 0x30 && chCode <= 0x39) {
- var originalStart = start - 1;
- start++;
-
- var n = chCode - 0x30;
- if (n > m) {
- result = result + @stringSubstring.@call(replacement, originalStart, start);
- break;
- }
-
- if (start < replacementLength) {
- var nextChCode = replacement.@charCodeAt(start);
- if (nextChCode >= 0x30 && nextChCode <= 0x39) {
- var nn = 10 * n + nextChCode - 0x30;
- if (nn <= m) {
- n = nn;
- start++;
- }
- }
- }
-
- if (n == 0) {
- result = result + @stringSubstring.@call(replacement, originalStart, start);
- break;
- }
-
- var capture = captures[n - 1];
- if (capture !== @undefined)
- result = result + capture;
- } else
- result = result + "$";
- break;
- }
- }
- }
-
- return result + @stringSubstring.@call(replacement, lastStart);
-}
-
-@overriddenName="[Symbol.replace]"
-function replace(strArg, replace)
-{
- "use strict";
-
- if (!@isObject(this))
- @throwTypeError("RegExp.prototype.@@replace requires that |this| be an Object");
-
- var regexp = this;
-
- var str = @toString(strArg);
- var stringLength = str.length;
- var functionalReplace = @isCallable(replace);
-
- if (!functionalReplace)
- replace = @toString(replace);
-
- var global = regexp.global;
- var unicode = false;
-
- if (global) {
- unicode = regexp.unicode;
- regexp.lastIndex = 0;
- }
-
- var resultList = [];
- var result;
- var done = false;
- while (!done) {
- result = regexp.exec(str);
-
- if (result === null)
- done = true;
- else {
- @arrayPush(resultList, result);
- if (!global)
- done = true;
- else {
- var matchStr = @toString(result[0]);
-
- if (!matchStr.length) {
- var thisIndex = @toLength(regexp.lastIndex);
- regexp.lastIndex = @advanceStringIndex(str, thisIndex, unicode);
- }
- }
- }
- }
-
- var accumulatedResult = "";
- var nextSourcePosition = 0;
-
- for (var i = 0, resultListLength = resultList.length; i < resultListLength; ++i) {
- var result = resultList[i];
- var nCaptures = result.length - 1;
- if (nCaptures < 0)
- nCaptures = 0;
- var matched = @toString(result[0]);
- var matchLength = matched.length;
- var position = @toIntegerOrInfinity(result.index);
- position = (position > stringLength) ? stringLength : position;
- position = (position < 0) ? 0 : position;
-
- var captures = [];
- for (var n = 1; n <= nCaptures; n++) {
- var capN = result[n];
- if (capN !== @undefined)
- capN = @toString(capN);
- @arrayPush(captures, capN);
- }
-
- var replacement;
- var namedCaptures = result.groups;
-
- if (functionalReplace) {
- var replacerArgs = [ matched ];
- for (var j = 0; j < captures.length; j++)
- @arrayPush(replacerArgs, captures[j]);
-
- @arrayPush(replacerArgs, position);
- @arrayPush(replacerArgs, str);
-
- if (namedCaptures !== @undefined)
- @arrayPush(replacerArgs, namedCaptures);
-
- var replValue = replace.@apply(@undefined, replacerArgs);
- replacement = @toString(replValue);
- } else {
- if (namedCaptures !== @undefined)
- namedCaptures = @toObject(namedCaptures, "RegExp.prototype[Symbol.replace] requires 'groups' property of a match not be null");
-
- replacement = @getSubstitution(matched, str, position, captures, namedCaptures, replace);
- }
-
- if (position >= nextSourcePosition) {
- accumulatedResult = accumulatedResult + @stringSubstring.@call(str, nextSourcePosition, position) + replacement;
- nextSourcePosition = position + matchLength;
- }
- }
-
- if (nextSourcePosition >= stringLength)
- return accumulatedResult;
-
- return accumulatedResult + @stringSubstring.@call(str, nextSourcePosition);
-}
-
-// 21.2.5.9 RegExp.prototype[@@search] (string)
-@overriddenName="[Symbol.search]"
-function search(strArg)
-{
- "use strict";
-
- var regexp = this;
-
- // 1. Let rx be the this value.
- // 2. If Type(rx) is not Object, throw a TypeError exception.
- if (!@isObject(this))
- @throwTypeError("RegExp.prototype.@@search requires that |this| be an Object");
-
- // 3. Let S be ? ToString(string).
- var str = @toString(strArg)
-
- // 4. Let previousLastIndex be ? Get(rx, "lastIndex").
- var previousLastIndex = regexp.lastIndex;
-
- // 5. If SameValue(previousLastIndex, 0) is false, then
- // 5.a. Perform ? Set(rx, "lastIndex", 0, true).
- if (!@sameValue(previousLastIndex, 0))
- regexp.lastIndex = 0;
-
- // 6. Let result be ? RegExpExec(rx, S).
- var result = regexp.exec(str);
-
- // 7. Let currentLastIndex be ? Get(rx, "lastIndex").
- // 8. If SameValue(currentLastIndex, previousLastIndex) is false, then
- // 8.a. Perform ? Set(rx, "lastIndex", previousLastIndex, true).
- if (!@sameValue(regexp.lastIndex, previousLastIndex))
- regexp.lastIndex = previousLastIndex;
-
- // 9. If result is null, return -1.
- if (result === null)
- return -1;
-
- // 10. Return ? Get(result, "index").
- return result.index;
-}
-
-// ES 21.2.5.11 RegExp.prototype[@@split](string, limit)
-@overriddenName="[Symbol.split]"
-function split(string, limit)
-{
- "use strict";
-
- // 1. Let rx be the this value.
- // 2. If Type(rx) is not Object, throw a TypeError exception.
- if (!@isObject(this))
- @throwTypeError("RegExp.prototype.@@split requires that |this| be an Object");
- var regexp = this;
-
- // 3. Let S be ? ToString(string).
- var str = @toString(string);
-
- // 4. Let C be ? SpeciesConstructor(rx, %RegExp%).
- var speciesConstructor = @speciesConstructor(regexp, @RegExp);
-
- // 5. Let flags be ? ToString(? Get(rx, "flags")).
- var flags = @toString(regexp.flags);
-
- // 6. If flags contains "u", var unicodeMatching be true.
- // 7. Else, let unicodeMatching be false.
- var unicodeMatching = @stringIncludesInternal.@call(flags, "u");
- // 8. If flags contains "y", var newFlags be flags.
- // 9. Else, let newFlags be the string that is the concatenation of flags and "y".
- var newFlags = @stringIncludesInternal.@call(flags, "y") ? flags : flags + "y";
-
- // 10. Let splitter be ? Construct(C, « rx, newFlags »).
- var splitter = new speciesConstructor(regexp.source, newFlags);
-
- // We need to check again for RegExp subclasses that will fail the speciesConstructor test
- // but can still use the fast path after we invoke the constructor above.
-
- // 11. Let A be ArrayCreate(0).
- // 12. Let lengthA be 0.
- var result = [];
-
- // 13. If limit is undefined, let lim be 2^32-1; else var lim be ? ToUint32(limit).
- limit = (limit === @undefined) ? 0xffffffff : limit >>> 0;
-
- // 16. If lim = 0, return A.
- if (!limit)
- return result;
-
- // 14. [Defered from above] Let size be the number of elements in S.
- var size = str.length;
-
- // 17. If size = 0, then
- if (!size) {
- // a. Let z be ? RegExpExec(splitter, S).
- var z = splitter.exec(str);
- // b. If z is not null, return A.
- if (z !== null)
- return result;
- // c. Perform ! CreateDataProperty(A, "0", S).
- @putByValDirect(result, 0, str);
- // d. Return A.
- return result;
- }
-
- // 15. [Defered from above] Let p be 0.
- var position = 0;
- // 18. Let q be p.
- var matchPosition = 0;
-
- // 19. Repeat, while q < size
- while (matchPosition < size) {
- // a. Perform ? Set(splitter, "lastIndex", q, true).
- splitter.lastIndex = matchPosition;
- // b. Let z be ? RegExpExec(splitter, S).
- var matches = splitter.exec(str);
- // c. If z is null, let q be AdvanceStringIndex(S, q, unicodeMatching).
- if (matches === null)
- matchPosition = @advanceStringIndex(str, matchPosition, unicodeMatching);
- // d. Else z is not null,
- else {
- // i. Let e be ? ToLength(? Get(splitter, "lastIndex")).
- var endPosition = @toLength(splitter.lastIndex);
- // ii. Let e be min(e, size).
- endPosition = (endPosition <= size) ? endPosition : size;
- // iii. If e = p, let q be AdvanceStringIndex(S, q, unicodeMatching).
- if (endPosition === position)
- matchPosition = @advanceStringIndex(str, matchPosition, unicodeMatching);
- // iv. Else e != p,
- else {
- // 1. Let T be a String value equal to the substring of S consisting of the elements at indices p (inclusive) through q (exclusive).
- var subStr = @stringSubstring.@call(str, position, matchPosition);
- // 2. Perform ! CreateDataProperty(A, ! ToString(lengthA), T).
- // 3. Let lengthA be lengthA + 1.
- @arrayPush(result, subStr);
- // 4. If lengthA = lim, return A.
- if (result.length == limit)
- return result;
-
- // 5. Let p be e.
- position = endPosition;
- // 6. Let numberOfCaptures be ? ToLength(? Get(z, "length")).
- // 7. Let numberOfCaptures be max(numberOfCaptures-1, 0).
- var numberOfCaptures = matches.length > 1 ? matches.length - 1 : 0;
-
- // 8. Let i be 1.
- var i = 1;
- // 9. Repeat, while i <= numberOfCaptures,
- while (i <= numberOfCaptures) {
- // a. Let nextCapture be ? Get(z, ! ToString(i)).
- var nextCapture = matches[i];
- // b. Perform ! CreateDataProperty(A, ! ToString(lengthA), nextCapture).
- // d. Let lengthA be lengthA + 1.
- @arrayPush(result, nextCapture);
- // e. If lengthA = lim, return A.
- if (result.length == limit)
- return result;
- // c. Let i be i + 1.
- i++;
- }
- // 10. Let q be p.
- matchPosition = position;
- }
- }
- }
- // 20. Let T be a String value equal to the substring of S consisting of the elements at indices p (inclusive) through size (exclusive).
- var remainingStr = @stringSubstring.@call(str, position, size);
- // 21. Perform ! CreateDataProperty(A, ! ToString(lengthA), T).
- @arrayPush(result, remainingStr);
- // 22. Return A.
- return result;
-}
-
-// ES 21.2.5.13 RegExp.prototype.test(string)
-function test(strArg)
-{
- "use strict";
-
- var regexp = this;
-
- if (regexp.test == @Bun.OnigurumaRegExp.prototype.test) {
- return regexp.test(strArg);
- }
-
- // 1. Let R be the this value.
- // 2. If Type(R) is not Object, throw a TypeError exception.
- if (!@isObject(regexp))
- @throwTypeError("RegExp.prototype.test requires that |this| be an Object");
-
- // 3. Let string be ? ToString(S).
- var str = @toString(strArg);
-
- // 4. Let match be ? RegExpExec(R, string).
- var match = regexp.exec(str);
-
- // 5. If match is not null, return true; else return false.
- if (match !== null)
- return true;
- return false;
-}
diff --git a/src/deps/oniguruma b/src/deps/oniguruma
deleted file mode 160000
-Subproject 0be69456f20278740a0db8418ba45c1a08e15a2
diff --git a/src/js_ast.zig b/src/js_ast.zig
index ffdce6783..75539f235 100644
--- a/src/js_ast.zig
+++ b/src/js_ast.zig
@@ -1846,33 +1846,6 @@ pub const E = struct {
pub var empty = RegExp{ .value = "" };
- pub fn usesLookBehindAssertion(this: *const RegExp) bool {
- var pat = this.pattern();
- while (pat.len > 0) {
- const start = strings.indexOfChar(pat, '?') orelse return false;
- if (start == 0) {
- pat = pat[1..];
- continue;
- }
- const l_paren = pat[start - 1];
- if (start > 1 and pat[start - 2] == '\\') {
- pat = pat[start..];
- continue;
- }
- if (l_paren != '(' or pat.len < start + 1) {
- pat = pat[start..];
- continue;
- }
- const op = pat[start + 1];
- if (op == '<') {
- return true;
- }
- pat = pat[start + 1 ..];
- }
-
- return false;
- }
-
pub fn pattern(this: RegExp) string {
// rewind until we reach the /foo/gim
diff --git a/src/js_printer.zig b/src/js_printer.zig
index 062221ac6..1a817cc37 100644
--- a/src/js_printer.zig
+++ b/src/js_printer.zig
@@ -2581,32 +2581,7 @@ pub fn NewPrinter(
p.print(" ");
}
- if (comptime is_bun_platform) {
- if (e.value.len > 2 and e.usesLookBehindAssertion()) {
- p.print("(new globalThis.Bun.OnigurumaRegExp(");
- const pattern = e.pattern();
- const flags = e.flags();
- std.debug.assert(pattern.len > 0);
- var buf = bun.default_allocator.alloc(u16, strings.elementLengthUTF8IntoUTF16([]const u8, pattern)) catch unreachable;
- defer bun.default_allocator.free(buf);
- const buf_len = std.unicode.utf8ToUtf16Le(buf, pattern) catch unreachable;
- std.debug.assert(buf_len == buf.len);
- const q = p.bestQuoteCharForString(buf, true);
- p.print(q);
- p.printQuotedUTF16(buf, q);
- p.print(q);
- if (flags.len > 0) {
- p.print(",");
- p.printSpace();
- p.printQuotedUTF8(flags, true);
- }
- p.print("))");
- } else {
- p.print(e.value);
- }
- } else {
- p.print(e.value);
- }
+ p.print(e.value);
// Need a space before the next identifier to avoid it turning into flags
p.prev_reg_exp_end = p.writer.written;
diff --git a/test/bun.js/body-stream.test.ts b/test/bun.js/body-stream.test.ts
index bc6dc10f8..0a44246b0 100644
--- a/test/bun.js/body-stream.test.ts
+++ b/test/bun.js/body-stream.test.ts
@@ -5,7 +5,7 @@ import { readFileSync } from "fs";
// afterEach(() => Bun.gc(true));
-var port = 4020;
+var port = 4021;
{
const BodyMixin = [
@@ -175,12 +175,13 @@ var port = 4020;
}
}
+var existingServer;
async function runInServer(
opts: ServeOptions,
cb: (url: string) => void | Promise<void>,
) {
var server;
- server = Bun.serve({
+ const handler = {
...opts,
port: port++,
fetch(req) {
@@ -197,17 +198,20 @@ async function runInServer(
console.log(err.stack);
throw err;
},
- });
+ };
+
+ if (!existingServer) {
+ existingServer = server = Bun.serve(handler);
+ } else {
+ server = existingServer;
+ server.reload(handler);
+ }
+
try {
await cb(`http://${server.hostname}:${server.port}`);
} catch (e) {
throw e;
} finally {
- server && server.stop();
- server = undefined;
- if (port > 4200) {
- port = 4120;
- }
}
}
diff --git a/test/bun.js/oniguruma-regexp.test.ts b/test/bun.js/oniguruma-regexp.test.ts
deleted file mode 100644
index f95609270..000000000
--- a/test/bun.js/oniguruma-regexp.test.ts
+++ /dev/null
@@ -1,860 +0,0 @@
-// @ts-ignore
-import { OnigurumaRegExp } from "bun";
-import { expect, it, test } from "bun:test";
-import { gc as gcTrace, withoutAggressiveGC } from "./gc";
-
-it("character property scripts", () => {
- // oniguruma does not support \p{Script=<script value>}
- // they are converted to \p{<script value>} internally
- const sentence = "A ticket to 大阪 costs ¥2000 👌.";
-
- const g0 = OnigurumaRegExp("\\p{Emoji_Presentation}", "gu");
- const s0 = sentence.match(g0);
- const g1 = RegExp("\\p{Emoji_Presentation}", "gu");
- const s1 = sentence.match(g1);
- for (const [i, s] of s0.entries()) {
- expect(s === s1[i]).toBe(true);
- }
-
- const g2 = OnigurumaRegExp("\\P{Script_Extensions=Latin}+", "gu");
- const s2 = sentence.match(g2);
- const g3 = RegExp("\\P{Script_Extensions=Latin}+", "gu");
- const s3 = sentence.match(g3);
- for (const [i, s] of s2.entries()) {
- expect(s === s3[i]).toBe(true);
- }
-
- const g4 = OnigurumaRegExp("\\p{Sc}|\\p{P}", "gu");
- const s4 = sentence.match(g4);
- const g5 = RegExp("\\p{Sc}|\\p{P}", "gu");
- const s5 = sentence.match(g5);
- for (const [i, s] of s4.entries()) {
- expect(s === s5[i]).toBe(true);
- }
-
- expect("٢".match(new RegExp("\\p{Script=Thaana}", "u"))).toBe(null);
- expect("٢".match(new RegExp("\\p{Script_Extensions=Thaana}", "u"))![0]).toBe(
- "٢",
- );
-
- expect("٢".match(new OnigurumaRegExp("\\p{Thaana}", "u"))).toBe(null);
- expect(
- "٢".match(new OnigurumaRegExp("\\p{Script_Extensions=Thaana}", "u")),
- ).toBe(null);
-
- let r1 = new OnigurumaRegExp(
- "<\\/(?<fullName>(?<name>[-_\\p{Letter}\\p{Number}\\p{script=Deva}\\p{sc=Thai}]{1,32})(?: (?<subcommandOrGroup>[-_\\p{Letter}\\p{Number}\\p{sc=Deva}\\p{sc=Thai}]{1,32}))?(?: (?<subcommand>[-_\\p{Letter}\\p{Number}\\p{sc=Deva}\\p{sc=Thai}]{1,32}))?):(?<id>\\d{17,20})>",
- "",
- );
- expect(r1 !== null).toBe(true);
-});
-
-it("repeated match and exec calls", () => {
- withoutAggressiveGC(() => {
- for (let i = 0; i < 20000; i++) {
- let r1 = new OnigurumaRegExp("//.+?/[^?]+", "sg");
- let r2 = new RegExp("//.+?/[^?]+", "sg");
- let s1 = "https://dylan-conway.com/profile";
- expect(s1.match(r1)![0] === s1.match(r2)![0]).toBe(true);
- expect(r1.exec(s1)![0] === r2.exec(s1)![0]).toBe(true);
- }
- });
-});
-
-it("repeated match and exec calls no global flag", () => {
- withoutAggressiveGC(() => {
- for (let i = 0; i < 20000; i++) {
- let r1 = new OnigurumaRegExp("//.+?/[^?]+", "s");
- let r2 = new RegExp("//.+?/[^?]+", "s");
- let s1 = "https://dylan-conway.com/profile";
- expect(r1.exec(s1)![0] === r2.exec(s1)![0]).toBe(true);
- expect(s1.match(r1)![0] === s1.match(r2)![0]).toBe(true);
- }
- });
-});
-
-const rb1 = new OnigurumaRegExp("//.+?/[^?]+", "s");
-const rb2 = new RegExp("//.+?/[^?]+", "s");
-it("repeated match calls with global regex without global flag", () => {
- withoutAggressiveGC(() => {
- for (let i = 0; i < 20000; i++) {
- let s1 = "https://dylan-conway.com/profile";
- expect(rb1.exec(s1)![0] === rb2.exec(s1)![0]).toBe(true);
- expect(s1.match(rb1)![0] === s1.match(rb2)![0]).toBe(true);
- }
- });
-});
-
-it("escaped characters in character classes", () => {
- expect(
- new RegExp("[a-z]").exec("a")![0] ===
- new OnigurumaRegExp("[a-z]").exec("a")![0],
- ).toBe(true);
-
- Bun.gc(true);
-
- expect(
- new RegExp("[a-z]").exec("b")![0] ===
- new OnigurumaRegExp("[a-z]").exec("b")![0],
- ).toBe(true);
-
- Bun.gc(true);
-
- expect(new RegExp("[a-zA-Z0-9_]+").exec("B9")![0]).toBe(
- new OnigurumaRegExp("[a-zA-Z0-9_]+").exec("B9")![0],
- );
- Bun.gc(true);
- expect(new RegExp("[a-z]").exec("-")).toBe(null);
- Bun.gc(true);
- expect(new OnigurumaRegExp("[a-z]").exec("-")).toBe(null);
- Bun.gc(true);
- expect(new RegExp("[a\\-z]").exec("-")![0]).toBe("-");
- Bun.gc(true);
- expect(new OnigurumaRegExp("[a\\-z]").exec("-")![0]).toBe("-");
- Bun.gc(true);
- expect(new RegExp("[a\\-z]").exec("a")![0]).toBe("a");
- Bun.gc(true);
- expect(new OnigurumaRegExp("[a\\-z]").exec("a")![0]).toBe("a");
- Bun.gc(true);
- expect(new RegExp("[a\\-z]").exec("z")![0]).toBe("z");
- Bun.gc(true);
- expect(new OnigurumaRegExp("[a\\-z]").exec("z")![0]).toBe("z");
- Bun.gc(true);
- expect(new RegExp("[a\\-z]").exec("b")).toBe(null);
- Bun.gc(true);
- expect(new OnigurumaRegExp("[a\\-z]").exec("b")).toBe(null);
- Bun.gc(true);
-
- expect(new RegExp("[^b-c]").exec("a")![0]).toBe(
- new OnigurumaRegExp("[^b-c]").exec("a")![0],
- );
- Bun.gc(true);
-
- expect(new RegExp("[\\^b-c]").exec("a")).toBe(null);
- expect(new OnigurumaRegExp("[\\^b-c]").exec("a")).toBe(null);
- Bun.gc(true);
-
- expect(new RegExp("[\\^b-c]").exec("^c")![0]).toBe("^");
- expect(new OnigurumaRegExp("[\\^b-c]").exec("^c")![0]).toBe("^");
- Bun.gc(true);
-
- expect(new RegExp("[a^b-c]").exec("a^")![0]).toBe("a");
- expect(new OnigurumaRegExp("[a^b-c]").exec("a^")![0]).toBe("a");
- Bun.gc(true);
-
- expect(new RegExp("[\\\\]").exec("\\")![0]).toBe("\\");
- expect(new OnigurumaRegExp("[\\\\]").exec("\\")![0]).toBe("\\");
- Bun.gc(true);
-
- let p = "//.+?[^?]+";
- let s = "https://dylan-conway.com/profile";
- const b1 = new RegExp(p, "gs");
- const b2 = new OnigurumaRegExp(p, "gs");
- Bun.gc(true);
- expect(s.match(b1)![0] === s.match(b2)![0]).toBe(true);
- Bun.gc(true);
-
- const b3 = new RegExp("[\\^]");
- const b4 = new OnigurumaRegExp("[\\^]");
- Bun.gc(true);
- expect(
- "https://dylan-co^nway.com/profile".match(b3)![0] ===
- "https://dylan-co^nway.com/profile".match(b4)![0],
- ).toBe(true);
- Bun.gc(true);
-
- // prettier-ignore
- p = "\/\/.+?\/[^?]+";
- s = "https://dylan-conway.com/profile";
- Bun.gc(true);
- expect(s.match(new OnigurumaRegExp(p, "gs"))![0]).toBe(
- new RegExp(p, "gs").exec(s)![0],
- );
- Bun.gc(true);
-
- // middle no escape
- p = "[.i^e]+";
- s = "https://dylan-co^nway.com/profile";
- expect(new OnigurumaRegExp(p).exec(s)![0]).toBe(new RegExp(p).exec(s)![0]);
-
- // middle with escape
- p = "[.i\\^e]+";
- s = "https://dylan-co^nway.com/profile";
- expect(new OnigurumaRegExp(p).exec(s)![0]).toBe(new RegExp(p).exec(s)![0]);
-
- // end with escape
- p = "[.ie\\^]+";
- s = "https://dylan-co^nway.com/profile";
- expect(new OnigurumaRegExp(p).exec(s)![0]).toBe(new RegExp(p).exec(s)![0]);
-
- // end no escape
- p = "[.ie^]+";
- s = "https://dylan-co^nway.com/profile";
- expect(new OnigurumaRegExp(p).exec(s)![0]).toBe(new RegExp(p).exec(s)![0]);
-
- // start no escape
- p = "[^.ie]+";
- s = "https://dylan-co^nway.com/profile";
- expect(new OnigurumaRegExp(p).exec(s)![0]).toBe(new RegExp(p).exec(s)![0]);
-
- // start with escape
- p = "[\\^.ie]+";
- s = "https://dylan-co^nway.com/profile";
- expect(new OnigurumaRegExp(p).exec(s)![0]).toBe(new RegExp(p).exec(s)![0]);
-
- // middle with escape
- p = "[.i\\-e]+";
- s = "https://dylan-conway.com/profile";
- expect(new OnigurumaRegExp(p).exec(s)![0]).toBe(new RegExp(p).exec(s)![0]);
-
- // end with escape
- p = "[.ie\\-]+";
- s = "https://dylan-conway.com/profile";
- expect(new OnigurumaRegExp(p).exec(s)![0]).toBe(new RegExp(p).exec(s)![0]);
-
- // end no escape
- p = "[.ie-]+";
- s = "https://dylan-conway.com/profile";
- expect(new OnigurumaRegExp(p).exec(s)![0]).toBe(new RegExp(p).exec(s)![0]);
-
- // start no escape
- p = "[-.ie]+";
- s = "https://dylan-conway.com/profile";
- expect(new OnigurumaRegExp(p).exec(s)![0]).toBe(new RegExp(p).exec(s)![0]);
-
- // start with escape
- p = "[\\-.ie]+";
- s = "https://dylan-conway.com/profile";
- expect(new OnigurumaRegExp(p).exec(s)![0]).toBe(new RegExp(p).exec(s)![0]);
-
- let r1 = new RegExp("^([[(]-?[\\d]+)?,?(-?[\\d]+[\\])])?$").exec("(1,1]")!;
- Bun.gc(true);
- let r2 = new OnigurumaRegExp("^([[(]-?[\\d]+)?,?(-?[\\d]+[\\])])?$").exec(
- "(1,1]",
- );
- Bun.gc(true);
- expect(r1[0]).toBe(r2[0]);
- Bun.gc(true);
-
- let r3 = new RegExp("[\\d],[\\d]").exec("1,2")!;
- let r4 = new OnigurumaRegExp("[\\d],[\\d]").exec("1,2");
- expect(r3[0]).toBe(r4[0]);
-
- let r5 = new RegExp("^[(],[)]?$").exec("(,")!;
- let r6 = new OnigurumaRegExp("^[(],[)]?$").exec("(,");
- expect(r5[0]).toBe(r6[0]);
-
- let r9 = new RegExp("[([],[)\\]]").exec("[,]")!;
- let r10 = new OnigurumaRegExp("[([],[)\\]]").exec("[,]");
- expect(r9[0]).toBe(r10[0]);
-
- let r13 = new RegExp("\\[").exec("[")!;
- let r14 = new OnigurumaRegExp("\\[").exec("[");
- expect(r13[0]).toBe(r14[0]);
-
- let r15 = new RegExp("\\]").exec("]")!;
- let r16 = new OnigurumaRegExp("\\]").exec("]");
- expect(r15[0]).toBe(r16[0]);
-
- let r17 = new RegExp("]").exec("]")!;
- let r18 = new OnigurumaRegExp("]").exec("]");
- expect(r17[0]).toBe(r18[0]);
-
- let r21 = new RegExp("[\\]]").exec("]")!;
- let r22 = new OnigurumaRegExp("[\\]]").exec("]");
- expect(r21[0]).toBe(r22[0]);
-
- let r23 = new RegExp("[\\[]").exec("[")!;
- let r24 = new OnigurumaRegExp("[\\[]").exec("[");
- expect(r23[0]).toBe(r24[0]);
-
- let r25 = new RegExp("[[][[]").exec("[[")!;
- let r26 = new OnigurumaRegExp("[[][[]").exec("[[");
- expect(r25[0]).toBe(r26[0]);
-
- let r27 = new RegExp("[[\\]][[\\]]").exec("[]")!;
- let r28 = new OnigurumaRegExp("[[\\]][[\\]]").exec("[]");
- expect(r27[0]).toBe(r28[0]);
-
- let r29 = new RegExp("[[\\]][[\\]]").exec("][")!;
- let r30 = new OnigurumaRegExp("[[\\]][[\\]]").exec("][");
- expect(r29[0]).toBe(r30[0]);
-
- let r31 = new RegExp("[[\\]][[\\]]").exec("]]")!;
- let r32 = new OnigurumaRegExp("[[\\]][[\\]]").exec("]]");
- expect(r31[0]).toBe(r32[0]);
-
- let r33 = new RegExp("[\\]][\\]]").exec("]]")!;
- let r34 = new OnigurumaRegExp("[\\]][\\]]").exec("]]");
- expect(r33[0]).toBe(r34[0]);
-
- let r35 = new RegExp("[a-z&&[^aeiou]").exec("a")!;
- let r36 = new OnigurumaRegExp("[a-z&&[^aeiou]").exec("a");
- expect(r35[0]).toBe(r36[0]);
-
- let r37 = new RegExp("[a-z&&[^aeiou]]").exec("a]")!;
- let r38 = new OnigurumaRegExp("[a-z&&[^aeiou]]").exec("a]");
- expect(r37[0]).toBe(r38[0]);
-});
-
-it("OnigurumaRegExp.prototype.exec()", () => {
- let a1 = new OnigurumaRegExp("\x3e", "gd");
- let a1_1 = a1.exec("table fo\x3eotball, fo\x3eosball");
- a1_1 = a1.exec("table fo\x3eotball, fo\x3eosball");
-
- let a2 = new RegExp("\x3e", "gd");
- let a2_1 = a2.exec("table fo\x3eotball, fo\x3eosball");
- a2_1 = a2.exec("table fo\x3eotball, fo\x3eosball")!;
-
- expect(a1_1[0]).toBe(a2_1[0]);
- expect(a1_1[1]).toBe(a2_1[1]);
- expect(a1_1.index).toBe(a2_1.index);
- expect(a1_1.input).toBe(a2_1.input);
- expect(a1.lastIndex).toBe(a2.lastIndex);
- expect(a1_1.groups).toBe(a2_1.groups);
- // @ts-ignore remove when `indices` is added to lib/dom
- expect(a1_1.indices[0][0]).toBe(a2_1.indices[0][0]);
- // @ts-ignore
- expect(a1_1.indices[0][1]).toBe(a2_1.indices[0][1]);
-});
-
-test("OnigurumaRegExp.prototype.exec() 2", () => {
- let a1 = new OnigurumaRegExp("\x3e\\x5e", "gd");
- let a1_1 = a1.exec("table fo\x3e\x5eotball, fo\x3e\x5eosball");
- a1_1 = a1.exec("table fo\x3e\x5eotball, fo\x3e\x5eosball");
-
- let a2 = new RegExp("\x3e\\x5e", "gd");
- let a2_1 = a2.exec("table fo\x3e\x5eotball, fo\x3e\x5eosball")!;
- a2_1 = a2.exec("table fo\x3e\x5eotball, fo\x3e\x5eosball")!;
-
- expect(a1_1[0]).toBe(a2_1[0]);
- expect(a1_1[1]).toBe(a2_1[1]);
- expect(a1_1.index).toBe(a2_1.index);
- expect(a1_1.input).toBe(a2_1.input);
- expect(a1.lastIndex).toBe(a2.lastIndex);
- expect(a1_1.groups).toBe(a2_1.groups);
- // @ts-ignore
- expect(a1_1.indices[0][0]).toBe(a2_1.indices[0][0]);
- // @ts-ignore
- expect(a1_1.indices[0][1]).toBe(a2_1.indices[0][1]);
-});
-
-test("OnigurumaRegExp.prototype.exec() 3", () => {
- let a22 = new OnigurumaRegExp("\\x9\\x5e", "gd");
- let a22_1 = a22.exec("table fox9^otball, fox9^osball");
- expect(a22_1[0]).toBe("x9^");
-
- let a1 = new OnigurumaRegExp("x3\\x5e", "gd");
- let a1_1 = a1.exec("table fo\\x3\x5eotball, fo\\x3\x5eosball");
-
- let a2 = new RegExp("\\x3\\x5e", "gd");
- let a2_1 = a2.exec("table fo\\x3\x5eotball, fo\\x3\x5eosball")!;
-
- expect(a1_1[0]).toBe(a2_1[0]);
- expect(a1_1[1]).toBe(a2_1[1]);
- expect(a1_1.index).toBe(a2_1.index);
- expect(a1_1.input).toBe(a2_1.input);
- expect(a1.lastIndex).toBe(a2.lastIndex);
- expect(a1_1.groups).toBe(a2_1.groups);
- // @ts-ignore
- expect(a1_1.indices[0][0]).toBe(a2_1.indices[0][0]);
- // @ts-ignore
- expect(a1_1.indices[0][1]).toBe(a2_1.indices[0][1]);
-});
-
-test("OnigurumaRegExp.prototype.exec() 4", () => {
- let a2 = new RegExp("\\x3\\x5e", "gd");
- let a2_1 = a2.exec("table fox3^otball, fox3^osball");
- a2_1 = a2.exec("table fox3^otball, fox3^osball");
-
- for (const RegExpConstructor of [OnigurumaRegExp, RegExp]) {
- let a2 = new RegExpConstructor("\\x3\\x5e", "gd");
- let a2_1 = a2.exec("table fox3^otball, fox3^osball");
- expect(a2_1[0]).toBe("x3^");
-
- expect(new RegExpConstructor("\\x3").source).toBe("\\x3");
- expect(new RegExpConstructor("\\x").source).toBe("\\x");
- expect(new RegExpConstructor("\\a").source).toBe("\\a");
- expect(new RegExpConstructor("j\\x3\\x2").source).toBe("j\\x3\\x2");
- expect(new RegExpConstructor("\\x3\\x5\\j").source).toBe("\\x3\\x5\\j");
- expect(new RegExpConstructor("\\x3\\x7\\xa").source).toBe("\\x3\\x7\\xa");
- expect(new RegExpConstructor("\\j323\\x7\\xa").source).toBe(
- "\\j323\\x7\\xa",
- );
- expect(new RegExpConstructor("\\x56").test("V")).toBe(true);
- }
-});
-
-test("OnigurumaRegExp.prototype.test()", () => {
- expect(new RegExp("\\\\(?![*+?^${}(|)[\\]])", "g").test("\\")).toBe(true);
- expect(new OnigurumaRegExp("\\\\(?![*+?^${}(|)[\\]])", "g").test("\\")).toBe(
- true,
- );
-
- expect(new RegExp("\\x56").test("V")).toBe(true);
- expect(new OnigurumaRegExp("\\x56").test("V")).toBe(true);
-
- expect(
- new RegExp("//").compile("\\\\(?![*+?^${}(|)[\\]])", "g").test("\\"),
- ).toBe(true);
- let r = new OnigurumaRegExp("//");
- expect(r.compile("\\\\(?![*+?^${}(|)[\\]])", "g").test("\\")).toBe(true);
- expect(
- new OnigurumaRegExp("").compile("\\\\(?![*+?^${}(|)[\\]])", "g").test("\\"),
- ).toBe(true);
-});
-
-test("OnigurumaRegExp flag order", () => {
- expect(new OnigurumaRegExp("a", "gd").toString()).toBe("/a/dg");
- expect(new OnigurumaRegExp("a", "ydmg").toString()).toBe("/a/dgmy");
-});
-
-test("OnigurumaRegExp.prototype.source", () => {
- let a1 = new OnigurumaRegExp("(foo)", "gd");
- let a2 = new RegExp("(foo)", "dg");
- expect(a1.source).toBe(a2.source);
-
- expect(new OnigurumaRegExp("/").source).toBe("\\/");
- expect(new RegExp("/").source).toBe("\\/");
-
- // @ts-ignore TS doesn't allow empty constructor
- expect(new OnigurumaRegExp().source).toBe(new RegExp().source);
- expect(new OnigurumaRegExp("").source).toBe(new RegExp("").source);
- expect(new OnigurumaRegExp("a").source).toBe(new RegExp("a").source);
- expect(new OnigurumaRegExp("a", "g").source).toBe(
- new RegExp("a", "g").source,
- );
- expect(new OnigurumaRegExp("/").source).toBe(new RegExp("/").source);
- expect(new OnigurumaRegExp("\n").source).toBe(new RegExp("\n").source);
- expect(new OnigurumaRegExp("\r").source).toBe(new RegExp("\r").source);
-});
-
-test("OnigurumaRegExp.prototype.toString()", () => {
- // @ts-ignore
- expect(new OnigurumaRegExp().toString()).toBe(new RegExp().toString());
- expect(new OnigurumaRegExp("").toString()).toBe(new RegExp("").toString());
- expect(new OnigurumaRegExp("a").toString()).toBe(new RegExp("a").toString());
- expect(new OnigurumaRegExp("a", "g").toString()).toBe(
- new RegExp("a", "g").toString(),
- );
- expect(new OnigurumaRegExp("/").toString()).toBe(new RegExp("/").toString());
- expect(new OnigurumaRegExp("\n").toString()).toBe(
- new RegExp("\n").toString(),
- );
- expect(new OnigurumaRegExp("\r").toString()).toBe(
- new RegExp("\r").toString(),
- );
- expect(
- new OnigurumaRegExp(
- "jf/.a.,voejpjoajglz;/qwjopeiv\\//\\/jpoqaj/Zdkj",
- ).toString(),
- ).toBe(
- new RegExp("jf/.a.,voejpjoajglz;/qwjopeiv\\//\\/jpoqaj/Zdkj").toString(),
- );
-});
-
-test("OnigurumaRegExp flags", () => {
- // multiline option
- for (const RegExpConstructor of [OnigurumaRegExp, RegExp]) {
- expect(new RegExpConstructor("boat").test("sailor\nboat")).toBe(true);
- expect(new RegExpConstructor("^boat").test("sailor\nboat")).toBe(false);
- expect(new RegExpConstructor("^boat", "m").test("sailor\nboat")).toBe(true);
- }
-
- // sticky option
- for (const RegExpConstructor of [RegExp]) {
- let str2 = "sailor";
- let h3 = new RegExpConstructor("or");
- let h4 = new RegExpConstructor("or", "y");
- expect(h3.test(str2)).toBe(true);
- expect(h4.test(str2)).toBe(false);
- let g1 = new RegExpConstructor("sail");
- let g2 = new RegExpConstructor("sail", "y");
- expect(g1.test(str2)).toBe(true);
- expect(g2.test(str2)).toBe(true);
- }
-
- expect(/a/s.toString()).toBe("/a/s");
- expect(/a/g.toString()).toBe("/a/g");
- expect(/a/y.toString()).toBe("/a/y");
- expect(/a/m.toString()).toBe("/a/m");
- expect(/a/gs.toString()).toBe("/a/gs");
- expect(/a/sy.toString()).toBe("/a/sy");
- expect(/a/gm.toString()).toBe("/a/gm");
- expect(/a/gsy.toString()).toBe("/a/gsy");
- expect(/a/gms.toString()).toBe("/a/gms");
- expect(/a/gmy.toString()).toBe("/a/gmy");
- // expect(/a/d.toString()).toBe("/a/d");
- // expect(/a/dgimsuy.toString()).toBe("/a/dgimsuy");
-
- // case insensitive option
- for (const RegExpConstructor of [OnigurumaRegExp, RegExp]) {
- expect(new RegExpConstructor("Is ThIs SqL?").test("IS THIS SQL?")).toBe(
- false,
- );
- expect(
- new RegExpConstructor("Is ThIs SqL?", "i").test("IS THIS SQL?"),
- ).toBe(true);
- }
-
- // dotall option
- for (const RegExpConstructor of [OnigurumaRegExp, RegExp]) {
- expect(new RegExpConstructor("a.b").test("a\nb")).toBe(false);
- expect(new RegExpConstructor("a.b", "s").test("a\nb")).toBe(true);
- }
-
- // indices option
- for (const RegExpConstructor of [OnigurumaRegExp, RegExp]) {
- expect(new RegExpConstructor("a", "g").exec("a").indices).toBe(undefined);
- expect(new RegExpConstructor("a", "gd").exec("a").index).toBe(0);
- expect(new RegExpConstructor("a", "dg").exec("a").index).toBe(0);
- }
-});
-
-test("OnigurumaRegExp.lastIndex", () => {
- for (const RegExpConstructor of [RegExp, OnigurumaRegExp]) {
- let a = new RegExpConstructor("foo", "g");
- expect(a.lastIndex).toBe(0);
- a.lastIndex = 1;
- expect(a.lastIndex).toBe(1);
- a.lastIndex = 0;
- expect(a.lastIndex).toBe(0);
- a.lastIndex = 1;
- expect(a.lastIndex).toBe(1);
- a.test("kfjekf");
- expect(a.lastIndex).toBe(0);
- a.test("o");
- expect(a.lastIndex).toBe(0);
- }
-
- let p1 = new OnigurumaRegExp("a");
- expect(p1.lastIndex).toBe(0);
- p1.lastIndex = 2;
- expect(p1.lastIndex).toBe(2);
- let p2 = new OnigurumaRegExp("b");
- expect(p2.lastIndex).toBe(0);
- p2.lastIndex = 2348;
- expect(p2.lastIndex).toBe(2348);
- expect(p1.lastIndex).toBe(2);
-
- for (const RegExpConstructor of [RegExp, OnigurumaRegExp]) {
- let a = new RegExpConstructor("foo", "g");
- a.lastIndex = 33;
- expect(a.lastIndex).toBe(33);
- a.compile("bar");
- expect(a.lastIndex).toBe(0);
- a.lastIndex = 44;
- expect(a.lastIndex).toBe(44);
- }
-
- for (const RegExpConstructor of [OnigurumaRegExp]) {
- let a = new RegExpConstructor("foo", "g");
- expect(a.lastIndex).toBe(0);
- a.test("kfjekfoofjekf");
- expect(a.lastIndex).toBe(8);
- a.test("kejfkjs");
- expect(a.lastIndex).toBe(0);
- a.exec("kfjekfoofjekf");
- expect(a.lastIndex).toBe(8);
- a.exec("kejfkjs");
- expect(a.lastIndex).toBe(0);
- }
-});
-
-test("OnigurumaRegExp errors", () => {
- let r = new OnigurumaRegExp("a", "igsym");
- let b = new OnigurumaRegExp("l", "m");
- try {
- r.compile(b, "g");
- } catch (e: any) {
- expect(e.message).toBe(
- "Cannot supply flags when constructing one RegExp from another.",
- );
- }
- try {
- r.compile("ll", "a");
- } catch (e: any) {
- expect(e.message).toBe("Invalid flags supplied to RegExp constructor.");
- }
- try {
- new OnigurumaRegExp("c", "a");
- } catch (e: any) {
- expect(e.message).toBe("Invalid flags supplied to RegExp constructor.");
- }
- const invalidRegExpError = "Invalid regular expression: ";
- try {
- new OnigurumaRegExp("?", "g");
- } catch (e: any) {
- expect(e.message.substring(0, invalidRegExpError.length)).toBe(
- invalidRegExpError,
- );
- }
- try {
- new OnigurumaRegExp("?");
- } catch (e: any) {
- expect(e.message.substring(0, invalidRegExpError.length)).toBe(
- invalidRegExpError,
- );
- }
- try {
- r.compile("?", "g");
- } catch (e: any) {
- expect(e.message.substring(0, invalidRegExpError.length)).toBe(
- invalidRegExpError,
- );
- }
- try {
- r.compile("?");
- } catch (e: any) {
- expect(e.message.substring(0, invalidRegExpError.length)).toBe(
- invalidRegExpError,
- );
- }
-
- try {
- new OnigurumaRegExp("\\");
- } catch (e: any) {
- expect(e.message.substring(0, invalidRegExpError.length)).toBe(
- invalidRegExpError,
- );
- }
-});
-
-test("OnigurumaRegExp random", () => {
- expect(new OnigurumaRegExp("love").test("I love JavaScript")).toBe(true);
- expect(new RegExp("love").test("I love JavaScript")).toBe(true);
-
- expect(new OnigurumaRegExp("a").test("sailor")).toBe(true);
- expect(new OnigurumaRegExp("or").test("sailor")).toBe(true);
- expect(new RegExp("a").test("sailor")).toBe(true);
- expect(new RegExp("or").test("sailor")).toBe(true);
-
- expect(new OnigurumaRegExp("a").test("a")).toBe(true);
- expect(new OnigurumaRegExp("a").test("b")).toBe(false);
- expect(new OnigurumaRegExp("a", "i").test("a")).toBe(true);
- expect(new OnigurumaRegExp("a", "i").test("A")).toBe(true);
- expect(new OnigurumaRegExp("a", "g").test("A")).toBe(false);
- expect(new OnigurumaRegExp("A", "i").test("a")).toBe(true);
- expect(new OnigurumaRegExp("A", "g").test("a")).toBe(false);
- expect(new OnigurumaRegExp("afasdfebadf", "i").test("b")).toBe(false);
-
- let r = new OnigurumaRegExp("a", "g");
- expect(r.source).toBe("a");
- expect(r.flags).toBe("g");
- expect(r.toString()).toBe("/a/g");
-
- r.compile("b", "i");
- expect(r.source).toBe("b");
- expect(r.flags).toBe("i");
- expect(r.toString()).toBe("/b/i");
-
- let b = new OnigurumaRegExp("l", "m");
- expect(r.compile(b) instanceof OnigurumaRegExp).toBe(true);
- expect(r.source).toBe("l");
- expect(r.flags).toBe("m");
- expect(r.toString()).toBe("/l/m");
-
- expect(new OnigurumaRegExp("a", "d").hasIndices).toBe(true);
- expect(new OnigurumaRegExp("a", "i").hasIndices).toBe(false);
- expect(new OnigurumaRegExp("a", "s").dotAll).toBe(true);
- expect(new OnigurumaRegExp("a", "i").dotAll).toBe(false);
- expect(new OnigurumaRegExp("a", "i").ignoreCase).toBe(true);
- expect(new OnigurumaRegExp("a", "s").ignoreCase).toBe(false);
- expect(new OnigurumaRegExp("a", "g").global).toBe(true);
- expect(new OnigurumaRegExp("a", "s").global).toBe(false);
- expect(new OnigurumaRegExp("a", "m").multiline).toBe(true);
- expect(new OnigurumaRegExp("a", "s").multiline).toBe(false);
- expect(new OnigurumaRegExp("a", "y").sticky).toBe(true);
- expect(new OnigurumaRegExp("a", "i").sticky).toBe(false);
- expect(new OnigurumaRegExp("a", "u").unicode).toBe(true);
- expect(new OnigurumaRegExp("a", "d").unicode).toBe(false);
- // @ts-ignore
- expect(new RegExp("a", "d").hasIndices).toBe(true);
- // @ts-ignore
- expect(new RegExp("a", "i").hasIndices).toBe(false);
- expect(new RegExp("a", "s").dotAll).toBe(true);
- expect(new RegExp("a", "i").dotAll).toBe(false);
- expect(new RegExp("a", "i").ignoreCase).toBe(true);
- expect(new RegExp("a", "s").ignoreCase).toBe(false);
- expect(new RegExp("a", "g").global).toBe(true);
- expect(new RegExp("a", "s").global).toBe(false);
- expect(new RegExp("a", "m").multiline).toBe(true);
- expect(new RegExp("a", "s").multiline).toBe(false);
- expect(new RegExp("a", "y").sticky).toBe(true);
- expect(new RegExp("a", "i").sticky).toBe(false);
- expect(new RegExp("a", "u").unicode).toBe(true);
- expect(new RegExp("a", "d").unicode).toBe(false);
-});
-
-it("String.prototype.replace", () => {
- for (let RegExpConstructor of [OnigurumaRegExp, RegExp]) {
- const r = new RegExpConstructor("a", "g");
- expect("a".replace(r, "b")).toBe("b");
- expect("a".replace(r, () => "b")).toBe("b");
- expect(
- "a".replace(r, (match, offset, string) => {
- expect(match).toBe("a");
- expect(offset).toBe(0);
- expect(string).toBe("a");
- return "b";
- }),
- ).toBe("b");
- }
-
- expect("aaaaaa".replace(new OnigurumaRegExp("a", "g"), "b")).toBe("bbbbbb");
- expect("aaaaaa".replace(new OnigurumaRegExp("a"), "b")).toBe("baaaaa");
- // case sensitive
- expect("aaaaaa".replace(new OnigurumaRegExp("A", "i"), "b")).toBe("baaaaa");
- expect("aaaaaa".replace(new OnigurumaRegExp("A"), "b")).toBe("aaaaaa");
-
- expect("aaaaaa".replace(new RegExp("a", "g"), "b")).toBe("bbbbbb");
- expect("aaaaaa".replace(new RegExp("a"), "b")).toBe("baaaaa");
-});
-
-it("Strings.prototype.match", () => {
- let str = "The rain in SPAIN stays mainly in the plain";
- for (let RegExpConstructor of [OnigurumaRegExp, RegExp]) {
- let r1 = new RegExpConstructor("ain", "g");
- let m1 = str.match(r1)!;
- expect(m1[0]).toBe("ain");
- expect(m1[1]).toBe("ain");
- expect(m1[2]).toBe("ain");
-
- r1.compile("ain", "ig");
- m1 = str.match(r1)!;
- expect(m1[0]).toBe("ain");
- expect(m1[1]).toBe("AIN");
- expect(m1[2]).toBe("ain");
- expect(m1[3]).toBe("ain");
- }
-});
-
-it("String.prototype.matchAll", () => {
- let str = "test1test2";
- for (let RegExpConstructor of [RegExp, OnigurumaRegExp]) {
- const regexp = new RegExpConstructor("t(e)(st(d?))", "g");
- const array = [...str.matchAll(regexp)];
- expect(array[0][0]).toBe("test");
- expect(array[0][1]).toBe("e");
- expect(array[0][2]).toBe("st");
- expect(array[0][3]).toBe("");
- expect(array[1][0]).toBe("test");
- expect(array[1][1]).toBe("e");
- expect(array[1][2]).toBe("st");
- expect(array[1][3]).toBe("");
- }
-});
-
-it("String.prototype.search", () => {
- let str = "The rain in SPAIN stays mainly in the plain";
- for (let RegExpConstructor of [OnigurumaRegExp, RegExp]) {
- let r1 = new RegExpConstructor("ain", "g");
- expect(str.search(r1)).toBe(5);
- r1.compile("ain", "ig");
- expect(str.search(r1)).toBe(5);
- }
-});
-
-it("String.prototype.split", () => {
- let str = "Hello World. How are you doing?";
- for (let RegExpConstructor of [RegExp, OnigurumaRegExp]) {
- let r1 = new RegExpConstructor("\\s", "g");
- let m1 = str.split(r1);
- expect(m1[0]).toBe("Hello");
- expect(m1[1]).toBe("World.");
- expect(m1[2]).toBe("How");
- expect(m1[3]).toBe("are");
- expect(m1[4]).toBe("you");
- expect(m1[5]).toBe("doing?");
- }
-});
-
-it("escapes characters, unicode, and hex", () => {
- for (const RegExpConstructor of [OnigurumaRegExp, RegExp]) {
- expect(new RegExpConstructor("[\\x00-\\x1F]").toString()).toBe(
- "/[\\x00-\\x1F]/",
- );
- expect(new RegExpConstructor("[\\u0000-\\u001F]").toString()).toBe(
- "/[\\u0000-\\u001F]/",
- );
- var s = /\\x{7HHHHHHH}(?=\\u{1233})/;
- let a = new RegExpConstructor("\u{0001F46E}");
- expect(a.exec("👮")![0]).toBe("👮");
- }
-
- let y = new OnigurumaRegExp("[👮\\x7F](?<=👮)");
- expect(y.exec("👮\\x{7F}")![0]).toBe("👮");
-
- let by = new OnigurumaRegExp("[👮\\cx7f](?<=👮)");
- expect(y.exec("👮\\x{7F}")![0]).toBe("👮");
-
- let bz = new OnigurumaRegExp("[👮\\x7](?<=👮)");
-
- let d = new OnigurumaRegExp("[\u{0001F46E}\x7F](?<=\u{0001F46E})");
- expect(d.exec("👮\x7F")![0]).toBe("👮");
-
- let y_2 = /[[👮\x7F](?<=👮)]/;
- expect(y_2.exec("👮]")![0]).toBe("👮]");
-
- let a1 = new OnigurumaRegExp("(f\xf3oo)", "gd");
- let a1_1 = a1.exec("table f\xf3ootball, f\xf3oosball");
- a1_1 = a1.exec("table f\xf3ootball, f\xf3oosball");
-
- let a2 = new RegExp("(f\xf3oo)", "dg");
- let a2_1 = a2.exec("table f\xf3ootball, f\xf3oosball")!;
- a2_1 = a2.exec("table f\xf3ootball, f\xf3oosball")!;
-
- expect(a1_1[0]).toBe(a2_1[0]);
- expect(a1_1[1]).toBe(a2_1[1]);
- expect(a1_1.index).toBe(a2_1.index);
- expect(a1_1.input).toBe(a2_1.input);
- expect(a1.lastIndex).toBe(a2.lastIndex);
- expect(a1_1.groups).toBe(a2_1.groups);
- // @ts-ignore
- expect(a1_1.indices[0][0]).toBe(a2_1.indices[0][0]);
- // @ts-ignore
- expect(a1_1.indices[0][1]).toBe(a2_1.indices[0][1]);
- // @ts-ignore
- expect(a1_1.indices[1][0]).toBe(a2_1.indices[1][0]);
- // @ts-ignore
- expect(a1_1.indices[1][1]).toBe(a2_1.indices[1][1]);
-});
-
-it("lookbehinds", () => {
- expect(/\d+(?=%)/.source).toBe("\\d+(?=%)");
- expect(/\d+(?!%)/.source).toBe("\\d+(?!%)");
- expect(/(?<=\$)\d+/.source).toBe("(?<=\\$)\\d+");
- expect(/(?<!\$)\d+/.source).toBe("(?<!\\$)\\d+");
- expect(/h(?=(\w)+)/.source).toBe("h(?=(\\w)+)");
- expect(/(?<=(\w)+)r/.source).toBe("(?<=(\\w)+)r");
- expect(/(?<=(o)d\1)r/.source).toBe("(?<=(o)d\\1)r");
- expect(/(?<=\1d(o))r/.source).toBe("(?<=\\1d(o))r");
-
- let small = /(?:)/;
- expect(small instanceof OnigurumaRegExp).toBe(false);
-
- expect(
- /[\x00-\x1F\x27\x5C\x7F-\x9F]|[\uD800-\uDBFF]\(?<=[\uDC00-\uDFFF]\)|(?!.*[\uD800-\uDBFF][\uDC00-\uDFFF]).*[\uDC00-\uDFFF]/ instanceof
- RegExp,
- ).toBe(true);
- expect(
- /[\x00-\x1F\x27\x5C\x7F-\x9F]|[\uD800-\uDBFF](?<=[\uDC00-\uDFFF])|(?!.*[\uD800-\uDBFF][\uDC00-\uDFFF]).*[\uDC00-\uDFFF]/ instanceof
- OnigurumaRegExp,
- ).toBe(true);
-
- expect(/(?<=\1d(o))/ instanceof OnigurumaRegExp).toBe(true);
- expect(/\(?<=\1d(o)\)/ instanceof OnigurumaRegExp).toBe(false);
- expect(
- /(?!.*[\uD800-\uDBFF][\uDC00-\uDFFF]).*[\uDC00-\uDFFF]/ instanceof RegExp,
- ).toBe(true);
- expect(
- /\(?!.*[\uD800-\uDBFF][\uDC00-\uDFFF]\).*[\uDC00-\uDFFF]/ instanceof RegExp,
- ).toBe(true);
-
- let e = new OnigurumaRegExp("(?<=)");
- expect(e.source).toBe("(?<=)");
- expect(new OnigurumaRegExp("(?<=)").source).toBe("(?<=)");
-
- expect(/\(?<=\)/.source).toBe("\\(?<=\\)");
- expect(/(?<=)/.source).toBe("(?<=)");
-});
diff --git a/test/bun.js/test-test.test.ts b/test/bun.js/test-test.test.ts
index 9a16dc654..504af3808 100644
--- a/test/bun.js/test-test.test.ts
+++ b/test/bun.js/test-test.test.ts
@@ -1,5 +1,4 @@
import { expect, test } from "bun:test";
-import { OnigurumaRegExp } from "bun";
test("toStrictEqual() vs toEqual()", () => {
expect([1, , 3]).toEqual([1, , 3]);
@@ -133,10 +132,6 @@ function f2() {
return "hey!";
}
test("deepEquals regex", () => {
- expect(new OnigurumaRegExp("s", "g")).toEqual(new OnigurumaRegExp("s", "g"));
- expect(new OnigurumaRegExp("s", "g")).not.toEqual(
- new OnigurumaRegExp("s", "i"),
- );
expect(/a/imu).toEqual(/a/imu);
expect(/a/imu).not.toEqual(/ab/imu);