Commit Graph

394 Commits

Author SHA1 Message Date
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
Jarred Sumner
b76384351c More bug fixes (#2486)
* 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-28 18:23:50 -07:00
Dylan Conway
31c2fea74a A couple bug fixes (#2458)
* 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-22 18:09:51 -07:00
Colin McDonnell
a5f92224b5 Fix types (#2453)
* WIP

* WIP

* WIP

* WIP

* Improve typechecking in type files

* Fix typechecking

* Update

* Update submodule

* CI for typechecking

* Add ci

* Update commands

* Format after build

* Dont use bunx

* Rename job

* Use nodemodules prettier

* Update workflow

* Use symlink

* Debug

* Debug

* Clean up and rename jobs
2023-03-22 15:01:01 -07:00
Jarred Sumner
9ce18245d1 Remove usages of port numbers in tests 2023-03-19 16:51:13 -07:00
Jarred Sumner
5a23d17620 Several bug fixes (#2427)
* Fix test

* Fix segfault when unexpected type is passed in `expect().toThrow`

* Fix issues with request constructor

* Don't bother cloning headers when its empty

* woops

* more tests

* fix incorrect test

* Make the fetch error messages better

* Update response.zig

* Fix test that failed on macOS

* Fix test

* Remove extra hash table lookups

* Support running dummy registry directly

cc @alexlamsl

* Update test

* Update test

* fixup

* Workaround crash in test runner

* Fixup test

* Fixup test

* Update os.test.js

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-03-19 14:08:20 -07:00
Jarred Sumner
8f02ef8294 0 length body is a null stream 2023-03-18 18:03:05 -07:00
Jarred Sumner
e41e884747 Hanging abort test 2023-03-18 17:55:05 -07:00
Jarred Sumner
1b7423412a Make this test more thorough 2023-03-18 16:58:15 -07:00
Jarred Sumner
96fcecdcc9 [fetch] Make the default body value null when unspecified
This is better aligned with the fetch spec
2023-03-18 16:15:21 -07:00
Dylan Conway
a9c41c67e6 Fix several bugs (#2418)
* utf16 codepoint with replacement character

* Fix test failure with `TextEncoder("ascii')`

* Add missing type

* Fix Response.prototype.bodyUsed and Request.prototype.bodyUsed

* Fix bug with scrypt error not clearing

* Update server.zig

* oopsie
2023-03-18 00:55:05 -07:00
Dylan Conway
1d4cc63154 Fix various fetch/response/request tests (#2416)
* fix most fetch tests, skip a few

* fastGet, toValueGC, and invalid init

* bigint unreachable, range error, log process as process

* remove extra fetch_headers

* remove js_type parameter, check isObject()

* throw invalid mime type error, use enum literal

* switch back to promise rejection

* RangeError pascal case
2023-03-17 17:14:39 -07:00
Dylan Conway
baf8787fa4 remove trailing comma 2023-03-15 22:06:28 -07:00
Dylan Conway
4792abdb7f Implement toMatchSnapshot() (#2294)
* buggy snapshot

* error output for failed snapshot

* missing first

* hints

* open dir once, better cleanup

* update flag

* truncate on update

* object and class snapshot formatting

* array formatting

* no function name, single item is empty array

* string objects, maps, sets, promise

* avoid using invalid memory

* handle number objects

* handle extending `Number`

* boolean objects

* snapshot tests and test updates

* snapshot format for buffers

* safer snapshot parsing

* property matchers setup

* strings and tests

* generate classes with empty prototype

* optional `propertyMatchers` parameter

* new test folder structure

* strings.eqlLong

* globalObject.throwPretty() and expect.any tests

* add updateSnapshot flag to help

* move snapshot format out of `printErrorlikeObject`

* empty object snapshot format

* separate typed array, remove trailing comma

* use `isCell`, object trailing commas

* handle unicode

* todo for primitive constructors

* switch to `JSC.Node.Syscall.open` and `JSC.Maybe`

* use js parser for snapshot files

* deinit ast, log parse error

* copy/paste most of `exports.ZigConsoleClient`

* remove snapshot option

* remove ordered properties option

* remove snapshot format option from `exports.zig`

* remove extra newlines

* change mode

* update test runner output

* escape backticks faster

* `bunx jest` in temp dir

* remove buffered writer

* add `toMatchSnapshot` to types

* cleanup, switch to `pread`

* cli `--update` flag

* `--update-snapshots`

* remove string object format
2023-03-14 16:50:59 -07:00
Ashcon Partovi
5d89efedec Add tests for AbortSignal, AbortController 2023-03-14 11:54:16 -07:00
Ashcon Partovi
f63c26208a Better test coverage for Request and Response 2023-03-13 17:13:24 -07:00
Ashcon Partovi
d7e067902f Add more tests for Headers 2023-03-09 12:34:11 -08:00
Jarred Sumner
f22336b5b5 More spec compliant Blob.prototype.type (#2340)
* Make `Blob.prototype. type` more spec compliant

* Add a few more checks for isNumber()

* Fix `make headers`

* Safer JSValue.isString()

* More tests for blob.slice

* Make `Blob.prototype.type` more spec compliant

* Add isASCII check

* Fix types

* Fix failing type test

* Update blob.zig

* Update blob.zig

* Fix .eql check on empty values

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-03-08 00:18:14 -08:00
Ashcon Partovi
f7e4eb8369 Reorganize tests (#2332) 2023-03-07 12:22:34 -08:00