Jarred Sumner
c99a9ba33a
Implement File
2023-08-21 01:29:06 -07:00
dave caruso
78defe7a87
Fix worker event loop ref/unref + leak ( #4114 )
...
* make more tests pass
* worker changes
* fix some bugs
* remove this
* progress
* uh
* okay
* remove console log
* a
* comment assert for later
* mergable state
* remove test
* remove test
2023-08-12 13:51:03 -07:00
dave caruso
009fe18fa2
worker tests ( #4058 )
...
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2023-08-08 22:19:46 -07:00
Jarred Sumner
38df5b146f
Enable Headers.prototype.getSetCookie
...
Fixes #4057
2023-08-08 01:18:36 -07:00
dave caruso
5497accbdb
Add env option for node:worker_threads ( #4052 )
...
* almost works
* env stuff
* test fixes
* wtfmove
* ok
* ok
* ref by default
* it now does the ref stuff by default
* cool
2023-08-07 23:58:38 -07:00
Dylan Conway
2fe6a965af
implement fetching data urls ( #4000 )
...
* fetch data urls
* `byteSlice`
* deinit slice
* allocate `mime_type` string if needed
* `content_type_allocated` and uncomment tests
* `str_`
* createAtom and slice decode result
2023-08-07 20:15:53 -07:00
Dylan Conway
1239c9460a
fix iterating headers with set-cookie ( #4048 )
...
* fix iterating headers with `set-cookie`
* a test
* move work to `HTTPHeaderMap::set`
* append set-cookie after sort
* remove compare function
2023-08-07 19:32:23 -07:00
Dylan Conway
9bbac35fd0
close BroadcastChannel in tests
2023-08-01 19:12:30 -07:00
Dylan Conway
6c40d6f2f5
add BroadcastChannel ( #3922 )
...
* copy and format
* update `SerializedScriptValue.cpp`
* use `expect().fail()` in message channel tests
* rename `BroadcastChannelIdentifier.h`
* copy registries
* progress and tests
* cleanup
* worker and broadcast channel test
* `BroadcastChannel` ref and unref
* `MessagePort` ref, unref, and hasRef
* remove `SecurityContext.cpp/h`
* add types
2023-08-01 18:40:02 -07:00
Dylan Conway
0ced5520e6
Update worker.test.ts
2023-08-01 18:05:11 -07:00
Jarred Sumner
214dc039e0
Implement Worker.prototype.threadId
2023-08-01 16:42:49 -07:00
Jarred Sumner
f2983e50b7
Add a test for TransformStream
2023-07-31 06:17:56 -07:00
Jarred Sumner
9ecae59bbb
Fix memory leak in response.clone(), further reduce memory usage of Request & Response ( #3902 )
...
* Atomize respsone.url & response.statusText
* Fix warning
* Atomize Request & Response URLs when possible
* Fix memory leak in response.clone()
bun/bench/snippets on jarred/atomize
❯ mem bun --smol request-response-clone.mjs
cpu: Apple M1 Max
runtime: bun 0.7.2 (arm64-darwin)
benchmark time (avg) (min … max) p75 p99 p995
-------------------------------------------------------- -----------------------------
req.clone().url 77.3 ns/iter (40.35 ns … 222.64 ns) 91.53 ns 128.11 ns 172.78 ns
resp.clone().url 162.43 ns/iter (116 ns … 337.77 ns) 177.4 ns 232.38 ns 262.65 ns
Peak memory usage: 60 MB
bun/bench/snippets on jarred/atomize
❯ mem bun-0.7.1 --smol request-response-clone.mjs
cpu: Apple M1 Max
runtime: bun 0.7.1 (arm64-darwin)
benchmark time (avg) (min … max) p75 p99 p995
-------------------------------------------------------- -----------------------------
req.clone().url 115.85 ns/iter (80.35 ns … 247.39 ns) 128.19 ns 181.93 ns 207.23 ns
resp.clone().url 252.32 ns/iter (202.6 ns … 351.07 ns) 266.56 ns 325.88 ns 334.73 ns
Peak memory usage: 1179 MB
* Update tests
* Update js_ast.zig
* Update test
---------
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2023-07-30 23:51:43 -07:00
Dylan Conway
d432448ac8
fix types and add message channel/port gc test
2023-07-28 16:55:49 -07:00
Dylan Conway
d614fdfaac
MessageChannel and MessagePort (#3860 )
...
* copy and format
* copy
* copy
* cleanup
* some tests
* spellcheck
* add types
* don't lock getting contextId
* array buffer test
2023-07-28 16:44:28 -07:00
Jarred Sumner
7a1ebec26f
Support file: URLs in fetch ( #3858 )
...
* Support file: URLs in `fetch`
* Update url.zig
---------
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2023-07-28 15:44:05 -07:00
Jarred Sumner
e110ccf84d
Fixes #3795 ( #3856 )
...
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2023-07-28 01:33:00 -07:00
Jarred Sumner
007f357495
Make readFile() async ( #3850 )
...
* less leaky
* async readfile
* Update types.zig
---------
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2023-07-27 16:55:49 -07:00
Jarred Sumner
e402159df1
test gardening
2023-07-24 19:36:53 -07:00
Jarred Sumner
1f1d0bfcfb
Make this test less flaky
2023-07-24 19:18:07 -07:00
Jarred Sumner
ef89f03de6
Update text-decoder.test.js
2023-07-20 15:26:06 -07:00
Julian
c383c6cd81
Pass constructor arguments to TextDecoder ( #3692 )
...
* Make TextDecoder constructor use options parameter
The constructor now actually sets TextDecoder properties using the
options parameter.
* Defer decoder allocation to end of constructor
* Verify types of TextDecoder options
* TextDecoder throw TypeError on failure
* Tidying
2023-07-20 14:50:54 -07:00
Jarred Sumner
dd46c11273
Support streams in response.formData() & request.formData, introduce Bun.readableStreamToFormData() ( #3697 )
...
* codegen
* FormData.from
* Fixes #3225
* Introduce `Bun.readableStreamToFormData`
* Update bun.d.ts
* Add examples
* add
---------
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2023-07-19 23:12:06 -07:00
Jarred Sumner
ed8be46a7b
Inlinebun object from workers
2023-07-19 22:53:28 -07:00
Jarred Sumner
6ca20424d6
Fix crash in console.log(urlSearchParams) on a URLSearchParams object with a lot of keys
2023-07-17 04:18:43 -07:00
Jarred Sumner
209dc981c0
Implement Workers ( #3645 )
...
* copy files
* format
* options
* Introduce `Worker`, `onmessage`, `onerror`, and `postMessage` globals
* Stub `Worker.prototype.ref` & `Worker.prototype.unref`
* Update web_worker.zig
* Worker works
* Add "mini" mode
* add wakeup
* Partially fix the keep-alive issue
* clean up refer behavior
* Implement `serialize` & `deserialize` in `bun:jsc` & add polyfill for `node:v8`
* Types & docs
* Update globals.d.ts
* Add mutex
* Fixes
---------
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com >
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2023-07-16 21:15:24 -07:00
Dylan Conway
c39c11e101
structured clone ( #3637 )
...
* copy `SerializedScriptValue`
* format
* make `SerializedScriptValue` compile
* add `transfer` option
* tests
* serialize/deserialize blobs
* tests for blobs
* serialize/deserialize file blobs
* more tests
* small cleanup
* format
* small changes + serialize offset
* slice helper
* map and set test
2023-07-14 19:37:22 -07:00
Ashcon Partovi
9eb8eea2a8
Implement ping(), pong(), terminate() for WebSocket client and server ( #3257 )
2023-07-13 09:39:43 -07:00
dave caruso
31ab56d362
Fix: console.log with class constructors ( #3602 )
...
* Fix console.log with class constructors
* oops
* fix it
* lol
* fix test
2023-07-11 12:48:19 -07:00
Ai Hoshino
565d1689e9
fix metadata bits of uuid (randomUUID()) ( #3583 )
...
* fix uuid version
Close: https://github.com/oven-sh/bun/issues/3575
* add unittest
* small fix
* avoid unnecessary copying
2023-07-09 07:20:52 -07:00
Colin McDonnell
affd06d05c
Update types, partially fix typecheck ( #3551 )
...
* Update types
* Remove caret
2023-07-07 15:10:33 -07:00
Ciro Spaciari
95ddfcc437
fix query without slash ( #3547 )
2023-07-06 12:01:16 -07:00
Jarred Sumner
3aaec120e7
Fixes #3512 ( #3526 )
...
* Fixes #3512
* Fix `clearTimeout` and `clearInterval` not cancelling jobs same-tick
---------
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2023-07-05 03:46:10 -07:00
Jarred Sumner
3345a7fc3c
Allow zero length WebSocket client & server messages ( #3488 )
...
* Allow zero length WebSocket client & server messages
* Add test
* Clean this up a little
* Clean up these tests a little
* Hopefully fix the test failure in release build
* Don't copy into the receive buffer
* Less flaky
---------
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2023-07-03 20:53:41 -07:00
Ciro Spaciari
a7a01bd52f
[tls] add socket parameter, setServername and ALPNprotocols support ( #3457 )
...
* add socket parameter support
* refactor #socket
* add test and more fixs
* some fixes
* bump uws
* handlers fix
* more fixes
* fix node net and node tls tests
* fix duplicate port
* fix deinit on CallbackJobs
* cleanup
* add setImmediate repro
* add test to setImmediate
* this is necessary?
* fix prependOnce on native listener
* try to findout the error on nodemailer CI
* show error message
* Update bun.lockb
* prettier
* Use exact versions of packages
* add alpnProtocol support
* update
* emit error when connect fails on net.Socket
* format
* fix _write and cleanup
* fixup
* fix connect, add alpn test
* fix socket.io
* add socket parameter to TLSSocket
* add TLSSocket socket first parameter
* fixup and _start
* remove flask tests
* fmt
---------
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2023-07-03 12:19:50 -07:00
dave caruso
c21fadf9bc
set content-length 0 in some cases ( #3503 )
2023-07-02 20:24:15 -07:00
Jarred Sumner
eb90ce50c3
Use fast path for Base64 in btoa ( #3504 )
...
* Use fast path for Base64 in `atob`
* Fix utf16, crash on linux
---------
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2023-07-02 20:16:52 -07:00
Jarred Sumner
617226e584
Make this test less flaky
2023-07-01 21:10:43 -07:00
Jarred Sumner
557aac6a34
Support FormData & file uploads in fetch body ( #3123 )
...
* Fixes #2264
* fixup
* Don't leak HTTP headers
* Include the mime type. It's cleaner
---------
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2023-05-31 00:43:59 -07:00
Jarred Sumner
4298f36fc9
fixup
2023-05-26 16:29:44 -07:00
Jarred Sumner
3a0735e164
Pretty formatter for Headers & URLSearchParams ( #3081 )
...
* 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-26 16:28:09 -07:00
Jarred Sumner
1f0dfacc0d
Fix memory leak in fetch(url) ( #2989 )
...
* Fix memory leak in `fetch(url)`
* Bump those numbers up
---------
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2023-05-22 10:09:30 -07:00
Jarred Sumner
91c9bd9dcc
[WebSocket] Implement "nodebuffer" binaryType
2023-05-21 18:34:00 -07:00
Jarred Sumner
4db3d793cf
console.log changes ( #2966 )
...
* [breaking] Don't quote property names of identifiers in console.log
* Make UTF-16 strings green
* always quote for jest
* update tests
* Update this
---------
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2023-05-19 19:50:06 -07:00
Jarred Sumner
e7e4030299
Fix bug with req.url set incorrectly ( #2881 )
...
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2023-05-15 01:52:51 -07:00
Ciro Spaciari
bf9e40d5b4
feat(Timer.refresh) add refresh support on Timer ( #2874 )
...
* add refresh support on Timer
* fix this return
* add refresh setTimeout tests
* fix tests and add setInterval test
* use setCached for arguments and callback
---------
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2023-05-14 10:18:56 -07:00
Ciro Spaciari
f9831e1f6f
feat(fetch) add redirect: 'error' support ( #2845 )
...
* add redirect: 'error' support
* fix typo
* fix typo
* refactor FetchRedirect enum
* fix FetchRedirect
* updated
2023-05-10 23:55:39 -07:00
Jarred Sumner
96dc0471ff
Clean-up 85b4be5f71
...
- We don't need to make `Bun__fetch` exported in every C++ header file
- We shouldn't return JSObjectRef, its an unnecessary wrapper
- The version of `fetch` on the Bun global should be non-configurable so that it is safe for anyone who wants to use that without a user-modifiable one
2023-05-10 16:55:13 -07:00
Ciro Spaciari
85b4be5f71
fix(fetch) fix fetch inheritance ( #2842 )
...
* patch fetch function inheritance
* fmt
* fix reserveCapacity and number of arguments for fetch
* change Bun.fetch to use Fetch.jsFunction
* merge Fetch.jsFunction and Fetch.call
* remove commented code
2023-05-10 16:38:52 -07:00
Zhongwei Yao
1d138057cb
Add last modify field "mtime" for FileBlob ( #1431 ) ( #2491 )
...
* Add lastModified field for FileBlob (#1431 )
lastModified value is epoch timestamp in millisecond unit.
* update according to review comment.
2023-04-06 14:01:49 -07:00