Commit Graph

91 Commits

Author SHA1 Message Date
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
zhiyuan
c5f2b42649 Feat(test): add toMatch (#2404) 2023-03-17 03:49:41 -07:00
zhiyuan
0befd9ad85 feat(expect): update toBeInstanceOf (#2396)
* feat: update instanceof binding

* fix: according to PR comments
2023-03-15 20:04:55 -07:00
Jarred Sumner
9a5f78fa3b Fixes #2399 2023-03-15 19:18:56 -07:00
Dylan Conway
7fcbffa19a calculated class name after name prop 2023-03-14 17:03:52 -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
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
Ciro Spaciari
c81043bf5e put AbortSignal in WebCore namespace (#2267) 2023-03-02 11:49:32 -08:00
Jarred Sumner
88b5cda109 Make Bun.gc(true) more aggressive 2023-02-28 21:56:28 -08:00
Jarred Sumner
0a7309c8f2 slight performance improvement to EventEmitter 2023-02-25 03:34:41 -08:00
Ciro Spaciari
24d624b176 feat(Request.signal) Initial support for signal in Request + fetch and 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-22 19:27:25 -08:00
Dylan Conway
d786dd6c0b Update test runner output with colors and diffs (#2122)
* add zig-diff

* move diff functions

* toHaveProperty diff for objects

* use formatter

* format labels

* move work to format, diff when it makes sense

* remove comptime, dim equal slices

* order before diff

* line diffs

* add diffz

* switch to diffz

* add `diffLines()` function

* small `prettyFmt()` bug fix

* test runner color output

* update `toBe()` error output

* fix test

* diff method, fix crash

* fix link test

* remove `isRegex`
2023-02-21 11:47:13 -08:00
Justin Whear
fb313f210a Fix #1602 (#2066)
* 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-17 15:54:05 -08:00
Ciro Spaciari
597053ea91 feat(fetch) AbortSignal (#2019)
* 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-15 14:20:40 -08:00
Jarred Sumner
aa0762e466 Implement FormData (#2051)
* 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-13 00:50:15 -08:00
Jarred Sumner
2c31beda75 Fixes #1887 2023-01-24 00:14:59 -08:00
Jarred Sumner
45296570ce Fix crash in DOMJIT call with empty input 2023-01-23 04:58:42 -08:00
Jarred Sumner
c530ead1e0 Add a comment 2023-01-23 04:06:01 -08:00
Jarred Sumner
69875d86cd Fix console.log printing multiple properties 2023-01-17 13:44:13 -08:00
Jarred Sumner
e18863df1b attempt (unsuccessfully) to improve c++ build time 2023-01-10 10:23:11 -08:00
Jarred Sumner
905a3313b5 check for isEmpty or !isCell 2023-01-09 03:18:41 -08:00
Jarred Sumner
83a5c9f3da [internal] Fix checking for Error object 2023-01-08 07:37:51 -08:00
Jarred Sumner
fadd1c0152 [Bun.connect] Fix bug where connect() Promise wouldn't reject on a connection error 2023-01-07 23:45:43 -08:00
Jarred Sumner
87983464d8 Implement DNS module (#1691)
* Boilerplate for DNS stuff

* Add c-ares

* lookup

* make

* Implement dns.lookup

* Create c-ares

* wip

* normalize

* repro

* Revert "repro"

This reverts commit 8b93e0c295b335b8882a9601da47720348549beb.

* Implement macOS `getaddrinfo_async_start`

* embiggen

* Update string_immutable.zig

* Update Makefile

* alright

* Update .gitignore

* Add types

* more ccache

* Update Dockerfile

* Update Dockerfile

* Update Dockerfile

* Update bun.d.ts

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-01-07 07:09:48 -08:00
Jarred SUmner
0b0aadfc5f Make asPromise() and asInternalPromise() safer, but slower 2023-01-01 07:20:16 -08:00
Jarred Sumner
9e6d39bae6 [internal] Add more bindings 2023-01-01 02:19:11 -08:00
Alex Lam S.L
092b86321c log object string correctly (#1674)
use `Symbol.toStringTag` of the object or that of its `.prototype`

fixes #1584
2022-12-28 01:21:21 -08:00
Jarred Sumner
feea8824f1 Delete Oniguruma (#1625)
* Update .gitmodules

* Delete oniguruma

* Delete Oniguruma

* Make this test less flaky

* ✂️

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2022-12-17 15:41:47 -08:00
Jarred Sumner
e547efbf4a Don't call getters in console.log 2022-12-06 20:20:08 -08:00
Dylan Conway
1aa4cd2f6a 9 characters 2022-12-05 19:42:49 -08:00
Jarred Sumner
0ea8de4087 Make console an AsyncIterable 2022-12-05 11:35:34 -08:00
Jarred Sumner
2369bade48 Clean up more cases 2022-12-04 08:47:22 -08:00
Jarred Sumner
69114ac0a9 Fix console.log sometimes incorrectly reporting undefined
cc @Electroid
2022-12-04 08:05:57 -08:00
Dylan Conway
9cc03cd71a matchers for less than and greater than (#1573)
* toBeGreaterThan with tests

* toBeGreaterThanOrEqual and tests

* toBeLessThan and toBeLessThanOrEqual with tests

* expect types

* switch expressions
2022-12-02 20:35:13 -08:00
Jarred Sumner
43f2a8eb85 Add some code I forgot to commit 2022-12-02 19:35:11 -08:00
Jarred Sumner
7a158e68ae Fix crash when macros return a Promise 2022-12-01 23:46:18 -08:00
Dylan Conway
92da72beb0 bun test toStrictEqual (#1568)
* toStrictEqual and bug fix in deepEqual

* rebase Remove some dead bindings code

* remove debugging test

* canGetIndexQuickly for array holes

* isStrict template

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2022-12-01 19:36:47 -08:00
Jarred Sumner
e1e5f8c43b Include size of ArrayBuffer and others in GC timer scheduling 2022-12-01 02:36:51 -08:00
Jarred Sumner
bddf523ac9 Reduce memory usage in Bun.serve() by up to 3x (#1569)
* Update WebKit

* Use 5x less memory in Bun.serve()

* Update Dockerfile.devcontainer

* Update async-overhead.mjs

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2022-12-01 02:34:15 -08:00
Dylan Conway
1506a25198 formatting and remove comment 2022-11-30 16:40:54 -08:00
Jarred Sumner
f999bdca26 ✂️ 2022-11-29 23:56:52 -08:00
Dylan Conway
56884b5f1d toHaveProperty and tests (#1558)
* toHaveProperty and tests

* emoji tests
2022-11-28 23:15:12 -08:00
Jarred Sumner
002f4ecc9e Fix crash in console.log 2022-11-27 19:37:14 -08:00
Jarred Sumner
495f25501f Increase the max prototype count 2022-11-27 09:32:40 -08:00
Jarred Sumner
0992c3867d Update bindings.cpp 2022-11-27 08:45:40 -08:00
Jarred Sumner
740027975b Handle more cases with printing objects 2022-11-27 08:39:10 -08:00
Jarred Sumner
706406af48 remove leak 2022-11-27 07:58:10 -08:00
Jarred Sumner
5e6e8ece4e [console.log] Improve Object formatting and error handling 2022-11-27 07:27:21 -08:00
Dylan Conway
dc330701d2 Bun.deepEquals and expect().toEqual() (#1548)
* all of deepEquals

* remove comment, tests, move inline function
2022-11-23 22:50:49 -08:00
Jarred Sumner
ac36ea51cf possibly more reliable Bun.spawn (#1547)
* wip

* wip

* Fix bug with stdin

* zig fmt

* seems to work!

* Update streams.test.js

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2022-11-23 07:14:33 -08:00