aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/webcore (follow)
AgeCommit message (Collapse)AuthorFilesLines
2023-06-25make these strings lazyGravatar Jarred Sumner 1-26/+37
2023-06-24Rewrite Bun's runtime CommonJS loader (#3379)Gravatar Jarred Sumner 2-0/+2
* wip changes for CommonJS * this rewrite is almost complete * even more code * wip * Remove usages of `import.meta.require` from builtins * Remove usages of require * Regenerate * :scissors: builtin rewrite commonjs in printer * Use lazy custom getters for import.meta * fixups * Remove depd * ugh * still crashing * fixup undici * comment out import.meta.require.resolve temporarily not a real solution but it stops the crashes * Redo import.meta.primordials * Builtins now have a `builtin://` protocol in source origin * Seems to work? * Finsih getting rid of primordials * switcharoo * No more function * just one more bug * Update launch.json * Implement `require.main` * :scissors: * Bump WebKit * Fixup import cycles * Fixup improt cycles * export more things * Implement `createCommonJSModule` builtin * More exports * regenerate * i broke some stuff * some of these tests work now * We lost the encoding * Sort of fix zlib * Sort of fix util * Update events.js * bump * bump * bump * Fix missing export in fs * fix some bugs with builtin esm modules (stream, worker_threads, events). its not perfect yet. * fix some other internal module bugs * oops * fix some extra require default stuff * uncomment this file but it crsahes on my machine * tidy code here * fixup tls exports * make simdutf happier * Add hasPrefix binding * Add test for `require.main` * Fix CommonJS evaluation order race condition * Make node:http load faster * Add missing exports to tls.js * Use the getter * Regenerate builtins * Fix assertion failure in Bun.write() * revamp dotEnv parser (#3347) - fixes `strings.indexOfAny()` - fixes OOB array access fixes #411 fixes #2823 fixes #3042 * fix tests for `expect()` (#3384) - extend test job time-out for `darwin-aarch64` * `expect().resolves` and `expect().rejects` (#3318) * Move expect and snapshots to their own files * expect().resolves and expect().rejects * Fix promise being added to unhandled rejection list * Handle timeouts in expect(<promise>) * wip merge * Fix merge issue --------- Co-authored-by: Jarred Sumner <jarred@jarredsumner.com> Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> * fixup min/memcopy (#3388) * Fix crash in builtins * Don't attempt to evaluate modules with no source code * Update WebCoreJSBuiltins.cpp * Update WebCoreJSBuiltins.cpp * Update WebCoreJSBuiltins.cpp * Fix crash * cleanup * Fix test cc @paperdave * Fixup Undici * Fix issue in node:http * Create util-deprecate.mjs * Fix several bugs * Use the identifier * Support error.code in `util.deprecate` * make the CJs loader slightly more resilient * Update WebCoreJSBuiltins.cpp * Fix macros --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Co-authored-by: dave caruso <me@paperdave.net> Co-authored-by: Alex Lam S.L <alexlamsl@gmail.com> Co-authored-by: Ashcon Partovi <ashcon@partovi.net> Co-authored-by: Ciro Spaciari <ciro.spaciari@gmail.com>
2023-06-21finish implementing JSMockFunction prototype + lots of expect test ↵Gravatar dave caruso 2-0/+2
organizing (#3304) * mock tests * fix mistake * stuff * partially implement mock return promises * lot of housecleaning on jest tests * document / rename internalFields in jsmockfunction * finish implementing JSMockFunction prototype * cleanup * more progress * everything is done * remove demo.test.js * finish rebase * requested changes * fix compile error
2023-06-14Prepare to support webkit debug build assertionsGravatar Jarred Sumner 4-47/+22
2023-06-09Implement mocks in bun:test (#3252)Gravatar Jarred Sumner 2-0/+5
* wip * wip * most of the code for mocks in bun:test * finishing up * Implement `toHaveBeenCalled` and `toHaveBeenCalledTimes(1)` * Test * visit * results, not returnValues * exact * Update jest.zig * A couple more tests * Add jest.fn * support resetting mocks * Implement spyOn --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-06-05[node:vm] Fix crash when `new ArrayBuffer()` is returnedGravatar Jarred Sumner 1-0/+4
2023-06-04`removeAllListeners` return `this` (#3208)Gravatar Dylan Conway 1-23/+4
* return this in `removeAllListeners` * move `UNUSED_PARAM` for used params
2023-06-01Fix streams breaking on reverted EventEmitter / Make Discord.js work (#2913)Gravatar dave caruso 1-1/+1
* Revert "Revert "use a lazyily initialized stream for `node:crypto` `createHash` (#2652)"" This reverts commit 613bb4822ee8f4fbfd78aef391e2db8f07659a6f. * Revert "Revert "implement `node:events` in javascript (#2604)"" This reverts commit a4d0a1961abe0c6073e15cc6f7c0601b74f2e3f7. * oops * fix entrypoints stuff * fix hash copy * use native events for node streams and crypto * requested changes * oops * make discord.js work * fix webkit hash * headers tojson
2023-05-29Cleanup CommonJS changes (#3112)bun-v0.6.5Gravatar Jarred Sumner 2-0/+3
* Add more GC in test * Fix handling of functions and re-assignments in CommonJS * Increase timeout --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-05-26Pretty formatter for `Headers` & `URLSearchParams` (#3081)Gravatar Jarred Sumner 3-3/+59
* Pretty formatter for `Headers` & `URLSearchParams` * cleanup * console.log on Headers, FormData, URLSearchParams will always quote the keys now --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-05-26Fix crash in test.todo + remove JSC C API usages in bun:test (#3079)Gravatar Jarred Sumner 4-9/+33
* Fix crash in test.todo * remove usages of JSC C API in bun:test * Remove additional JSC-C API usages * fix `make headers` * URLSearchParams.length * FormData length * URLSearchParams length * Fix `make headers` * very fancy length * Fix bug with exceptions being ignored sometimes * Add tests for extension toHaveLength --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-05-22Write out builtins with TypeScript + Minify them (#2999)Gravatar dave caruso 13-13/+0
* start work drafting how builtins will work * work on ts builtin * builtins stuff so far * builtins * done for today * continue work * working on it * bindings so far * well, it builds. doesnt run * IT RUNS * still lots of ts errors but it is functional * sloppy mode
2023-05-21[WebSocket] Implement `"nodebuffer"` binaryTypeGravatar Jarred Sumner 2-1/+53
2023-05-21[internal] Fix potential missing callbacks in AbortSignalGravatar Jarred Sumner 1-0/+2
2023-05-21Upgrade WebKit (#2980)Gravatar Jarred Sumner 5-34/+33
* [internal] Show the file path to the calling function from JS * [internal] Make `JSC.NewFunction` more type safe * Upgrade WebKit * Finish --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-05-18Implement `node:vm` (#2785)Gravatar Silver 2-1/+3
* feat: begin implementing node:vm Script object * refactor: clean up and address review comments * refactor: rename Script to VMModuleScript * fix: expose VMModuleScript.prototype also oops I forgot to commit the new files last time * feat(vm): Implement contexts and scripts * feat(vm): implement globalThis * feat(vm): expose node:vm module with global helper functions * refactor(vm): rename VMModuleScript to NodeVMScript * feat: implement script options * doc: add TODOs for runIn*Context options
2023-04-25Implement `onResolve` plugins in `Bun.build()`, support multiple onLoad and ↵Gravatar Jarred Sumner 2-0/+2
onResolve plugins (#2739) * its 2023 * WIP `onResolve` plugins * more progress * it compiles * Lots of small fixes * Seems to work excluding entry points * Update BundlerPluginBuiltins.cpp --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-04-13Upgrade WebKit (#2643)Gravatar Jarred Sumner 6-7/+4
* Missing export * Regenerate builtins * Fix crash in require() * Various breaking JSC changes * hopefully speed up C++ compilation a little * Skip failing test fo rnow * Update WebKit * Add a comment * Fix error in postinstall * Update WebKit --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-04-04Dylan/fix some failing tests (#2544)Gravatar Jarred Sumner 1-1/+8
* handle `umask()` invalid arguments * move `bktree-fast` to test root, fix postinstall * fix fs test * could be baseline * handle different timezones * accidentally deleted tests * fix hang in `AbortSignal.timeout` * bring abort tests back * Revert "bring abort tests back" This reverts commit 0ff2ad5bf408694ac719b8ba0a38b16070e10201. * bunx node-gyp * bun x * fix typecheck * test * Update inspect.test.js --------- Co-authored-by: Dylan Conway <dylan.conway567@gmail.com>
2023-03-28More bug fixes (#2486)Gravatar Jarred Sumner 3-13/+14
* readline_promises test fix * fix `escapeHTML` for baseline builds * fs test fixes, use `tmpdir()` * add paths for `resolve.test.js` * isError with toString symbol and error prototype * comment about `toString` * skip async macro transform * test cleanup, skip stack format test * readline undo and redo fix * capture error from readline keypress * Update tcp-server.test.ts * use `removefileat` for recursive rmdir * use strong for `signal.reason` * initialize `m_flags` * directory with file fs test * recursive option * import expect * could be less than * move abort signal tests to another process * fix typecheck --------- Co-authored-by: Dylan Conway <dylan.conway567@gmail.com>
2023-03-22A couple bug fixes (#2458)Gravatar Dylan Conway 1-11/+0
* fix valid status code range * update path * highwatermark option * throw DOMException * remove extra transpiler output * more transpiler tests * comment * get index not quickly * replace with `getDirectIndex` * update abort test * throw out of range status code * promisify test fix * move stdio test instance files * working crypto tests * allow duplicate set-cookie headers * different formatting * revert, fix will be in different pr * it is called * use min buffer size * fix url tests * null origin for other protocols * remove overload * add very large file test * await * coerce to int64 * 64 * no cast * add todo blob url tests * use `tryConvertToInt52`
2023-03-03fix(node:http): match Node headers casing (lowercase only) (#2288)Gravatar Derrick Farris 1-1/+1
* fix(node:http): match Node headers casing (lowercase only) * fix(JSFetchHeaders): `WTFMove` the ascii string
2023-02-25slight performance improvement to EventEmitterGravatar Jarred Sumner 3-36/+49
2023-02-22feat(Request.signal) Initial support for signal in Request + fetch and ↵Gravatar Ciro Spaciari 2-0/+10
Request + Bun.serve (#2097) * add fetch abort signal * get aborted (still segfaults) * bidings.zig u0 error * still GC/memory error * fix start crash * fix AbortSignal fromJS * change fromJS to obj.as * addAbortSignalEventListenner * handle abort types, and add tests * fix tests * add custom reason test * merge 2 substring methods, use MAKE_STATIC_STRING_IMPL * fix create AbortError and TimeoutError, move globalThis and exception creation to main thread * fix tests and rebuild headers * no need to check with substring reason is already an exception * no need to check with substring reason is already an exception * fix dumb error inverting conditions for check reason * fix custom reason behavior * Request signal * remove package-lock.json * Remove JSC.Strong from Request signal * fix globals for fetch abort signal * more tests, clone signal crashs * fix AbortSignal.toJS * fix toJS bidings for AbortSignal * add streaming tests * fix abortion before connecting * fix tests and segfault * add fetch testing abort after finish * fix signal handler cleanup * support signal event Bun.serve * pull tests (failing) * remove unsupported test * formating * fix server Request.signal, fix cleanNativeBindings * add direct tests * more pull tests * fix stream tests * fix fetch, pending onAborted fix in HTTPServerWritable --------- Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2023-02-17Fix #1602 (#2066)Gravatar Justin Whear 2-14/+18
* initial test case * fix segfault from JSObjectMakeDeferredPromise * pass exceptions through from FetchHeader.createFromJS * not resolved, but getting close * implement review suggestions * fix exception check, tests * Change how header filtering is accomplished Previously the FetchHeaders implementation relied on converting names and values to IDLByteString to catch non-ASCII data, though not always reliably. This resulted in message-less TypeErrors when headers contained invalid characters. This commit shifts everything to IDLDOMString for the conversion and relies on the actual error checking in FetchHeaders.canWriteHeader, resulting in nicer error messages. To ensure that all headers are written as ASCII/UTF8 rather than UTF16, the copyTo bindings function checks the encoding and converts if necessary. * wrapping up FetchHeader fixes * since utf8 allocates only do so when needed * Update src/bun.js/bindings/bindings.cpp Co-authored-by: Jarred Sumner <jarred@jarredsumner.com> * WebCore__FetchHeaders__has should return on exception path * strip out log calls from test --------- Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2023-02-15feat(fetch) AbortSignal (#2019)Gravatar Ciro Spaciari 2-0/+8
* add fetch abort signal * get aborted (still segfaults) * bidings.zig u0 error * still GC/memory error * fix start crash * fix AbortSignal fromJS * change fromJS to obj.as * addAbortSignalEventListenner * handle abort types, and add tests * fix tests * add custom reason test * merge 2 substring methods, use MAKE_STATIC_STRING_IMPL * fix create AbortError and TimeoutError, move globalThis and exception creation to main thread * fix tests and rebuild headers * no need to check with substring reason is already an exception * no need to check with substring reason is already an exception * fix dumb error inverting conditions for check reason * fix custom reason behavior
2023-02-13fix(FormData): make String explicit, thanks @dylan-conway (#2065)Gravatar Derrick Farris 1-1/+1
2023-02-13fix(FormData): add string literal operator (#2064)Gravatar Derrick Farris 1-2/+2
2023-02-13Add pretty printer for FormDataGravatar Jarred Sumner 2-1/+77
2023-02-13Implement `FormData` (#2051)Gravatar Jarred Sumner 5-4/+752
* Backport std::forward change * Implement `FormData` * Fix io_darwin headers issue * Implement `Blob` support in FormData * Add test for file upload * Fix bug with Blob not reading Content-Type * Finish implementing FormData * Add FormData to types --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-02-11Backport std::forward changeGravatar Jarred Sumner 31-66/+66
2023-02-06Fix buildGravatar Jarred Sumner 1-3/+4
2023-02-06Backport https://github.com/WebKit/WebKit/pull/9713Gravatar Jarred Sumner 2-2/+2
2023-01-26fix websocket hang (#1910)Gravatar Dylan Conway 1-0/+5
* ref and deref, and some tests * subprocess file * remove deref * use flag in test
2023-01-22[EventEmitter] Preserve `this` in event emitter callbacksGravatar Jarred Sumner 4-2/+20
2023-01-17Fix lifetime issue in require.resolveGravatar Jarred Sumner 2-0/+2
2023-01-17[EventEmitter] Fix emitter.off("eventName")Gravatar Jarred Sumner 1-1/+6
2023-01-14Fixes #1794Gravatar Jarred Sumner 3-3/+18
2023-01-08feat(node:readline): add node:readline and node:readline/promises (#1738)Gravatar Derrick Farris 1-0/+9
* feat(readline): WIP: add readline * test(helpers): add deepStrictEqual helper * feat(readline): add readline & readline/promises to loader * fix(node:events): emit newListener on new listener added * feat(readline): finish readline cb interface, add tests * fix(stream): fix Transform.end() * fix(node-test-helpers): correct throws behavior, improve how all asserts work * feat(readline/promises): add readline/promises * feat(assert): add assert.match * test(readline): uncomment more tests * fix(readline): MaxCeil -> MathCeil 🤦 * fix(readline): export promises from node:readline * fix(readline): temp fix for circular dependency * cleanup(readline): remove console.log * fix(readline): change true -> 0 for CommonJS export * perf(readline): micro-optimizations with some getters * perf(readline): lazy load isWritable * cleanup(readline): rename debug flag env var to BUN_JS_DEBUG
2023-01-04Add `SharedBuffer` from WebKit to make it easier to import more WebCore stuffGravatar Jarred Sumner 2-0/+1111
2023-01-0410x faster `new Buffer` (#1717)Gravatar Jarred Sumner 3-4/+1
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2022-12-28[WebSocket] Implement `headers` supportGravatar Jarred Sumner 3-9/+106
Fixes https://github.com/oven-sh/bun/issues/1676
2022-12-17Delete Oniguruma (#1625)Gravatar Jarred Sumner 2-2/+0
* Update .gitmodules * Delete oniguruma * Delete Oniguruma * Make this test less flaky * :scissors: Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2022-12-08EventEmitter - return original this value for better chainabilityGravatar Jarred Sumner 1-2/+4
2022-12-07[node:events] EventEmitter#on and EventEmitter#off should return the ↵Gravatar Jarred Sumner 1-4/+3
EventEmitter instance
2022-12-05Missing commitGravatar Jarred Sumner 1-0/+2
2022-12-05"Fix" monkey-patching EventEmitter prototypeGravatar Jarred Sumner 3-35/+72
2022-12-02Add `AbortSignal.timeout`Gravatar Jarred Sumner 1-13/+13
2022-12-02Propagate reason in AbortSignal and reuse in ReadableStream.pipeToGravatar Jarred Sumner 6-12/+19
Similar to https://github.com/WebKit/WebKit/pull/7013
2022-12-02Make cloning headers object fasterGravatar Jarred Sumner 3-38/+42