about summary refs log tree commit diff stats
path: root/src/js
Commit message (Collapse)AuthorAgeFilesLines
...
* javascript: misc. refactoringsbptato2023-08-242-47/+34
| | | | | | | | | | | | * Remove some unused properties from objects * Un-extern JSFunctionList * Remove js/javascript dependency from regex (the wrapper functions were rather pointless) * Remove setProperty (only toJS(Table) used it, but there we have to use defineProperty instead.) * Accordingly, use definePropertyCWE in toJS(Table) * Simplify fromJSTable (replace pointer arithmetic with UncheckedArray) * Reduce implicit `result' usage
* DOMParser: use correct URLbptato2023-08-231-5/+2
| | | | | | | | Use current document's URL if window && window.document, otherwise default to about:blank. Also, it seems that passing nil to window is really necessary in some cases, so remove notes indicating otherwise.
* javascript: optimize unforgeable definitionbptato2023-08-231-16/+26
| | | | | | | | | Walking the prototype chain for every single type just so we can define the few LegacyUnforgeable properties we need is not the greatest idea. Instead, we now merge LegacyUnforgeable lists with those of ancestor prototypes, which reduces the entire ceremony to a single `get' from the global table.
* javascript: simplifybptato2023-08-211-3/+2
|
* javascript: remove stray eprintbptato2023-08-201-2/+0
| | | | oops
* javascript: finish LegacyUnforgeable + misc fixesbptato2023-08-201-62/+91
| | | | | | | | Add jsuffget, jsuffunc for setting LegacyUnforgeable on functions. Misc fixes: * define LegacyUnforgeable properties for native object shims * replace some macros with templates
* javascript: update Events, misc fixes & additionsbptato2023-08-202-200/+366
| | | | | | | | | | | | | | Events: just implement the interfaces, no events are triggered yet. JS changes: * add LegacyUnforgeable * make consts enumerable * fix crash in isInstanceOf * fix destructor warnings * refactor registerType As a result, peakmem is now 1G+ on 1.6.14. It stays ~750M on 2.0.0. Hmm. Well, better upgrade to 2.0.0 I guess.
* Fixes & workarounds to compile on Nim 2.0.0bptato2023-08-011-1/+1
| | | | | | | | | | | | | | * Import punycode, as it has been removed from stdlib. * Fix some syntax errors * Apparently you can no longer compare distinct pointers with nil. Add explicit comparisons with typeof(nil) instead. * htmlparser: rename _ to other, as semantics of _ have changed. (Quite a shame, it looked better with _. Oh well.) * Explicitly specify mm:refc, as the browser OOMs with orc for some reason. Confirmed to compile & run on 2.0.0, 1.6.14, 1.6.12, 1.6.10 and 1.6.8. (<1.6.8 it's broken & wontfix.)
* Add compileMatchRegexbptato2023-07-251-0/+35
| | | | | | | This makes it so that host = 'example\.org' mandates an exact match, but host = '^example' matches example.org, example.com, etc. (Previously, 'example\.org' would have matched exampleexample.org as well, which was quite counter-intuitive.)
* js: remove unused functionbptato2023-07-051-4/+0
|
* Add utf-8 support to libregexpbptato2023-07-041-96/+10
| | | | | | | This allows us to greatly simplify exec(Regex). In particular, we no longer have to convert any line containing non-ascii characters into UTF-16 (which was a significant inefficiency in regex search until now).
* Event: add some properties, js: add defineConstsbptato2023-07-041-1/+18
|
* Fix JS type conversion regressionsbptato2023-07-031-7/+11
|
* nim_finalize_for_js: use withValuebptato2023-07-031-2/+2
|
* Add XHR/Event stubsbptato2023-07-021-0/+5
|
* Add platform object conversion to union typebptato2023-07-021-3/+19
| | | | And with that, implement Request constructor with a Request init.
* return Result[T, JSError] from fromJSbptato2023-07-022-114/+116
|
* fromJSObject: throw on invalid object classbptato2023-07-021-12/+24
|
* Remove outdated commentbptato2023-07-021-7/+0
|
* Use separate flag for adding getset instead of reprbptato2023-07-011-4/+4
| | | | Still a hack, but maybe more reliable?
* use =destroy instead of finalizersbptato2023-07-013-2/+15
| | | | | This should help with moving to ORC in the future. (Also, finalizers do not work very well in the first place.)
* Add window.locationbptato2023-06-291-38/+49
| | | | Note: setters do not work yet.
* Remove .jsgctorbptato2023-06-291-21/+2
| | | | | Not sure how it ever worked. This fixes Text() constructors etc.
* Refactor fromJS bodybptato2023-06-281-66/+87
|
* Remove unused function stub & commentbptato2023-06-271-10/+0
|
* Remove getClassID hackbptato2023-06-271-11/+4
| | | | Add a JS_GetClassID function to QJS instead.
* Free JSRuntime, JSContext and ctors on exitbptato2023-06-271-1/+3
|
* Option -> Opt in config, return error in compileSearchRegexbptato2023-06-241-11/+11
|
* Fix potential crash on startupbptato2023-06-241-4/+7
|
* Working Nim-QuickJS GC integrationbptato2023-06-241-40/+72
| | | | I believe this works correctly. Hopefully I'm not wrong.
* Fix module loading bugsbptato2023-06-221-0/+4
|
* Remove LegacyJSError, use enums for storing symbolsbptato2023-06-221-57/+45
|
* Replace nim_finalize_for_js with collectInteropCyclesbptato2023-06-201-51/+23
| | | | | | Pros: maybe doesn't corrupt memory Cons: leaks memory instead Maybe we should just use destructors...
* Do not GC_ref JS object opaquesbptato2023-06-201-1/+0
| | | | So that the finalizer is actually triggered
* Do not allow text() twice, etc...bptato2023-06-201-0/+5
|
* Do not pass JSContext to getJSValuebptato2023-06-201-5/+5
|
* Fix fromJS Opt bugsbptato2023-06-191-9/+10
|
* Reject fetch promise on network errorbptato2023-06-191-1/+1
| | | | Instead of setting the non-standard res variable.
* Get rid of the .jserr pragmabptato2023-06-191-70/+11
|
* Fix memory leak with alt pointersbptato2023-06-191-1/+6
| | | | Must unref them if unused.
* Rework JS exception systembptato2023-06-192-120/+318
| | | | | Now we use Result for passing exceptions to JS. As a result, we can finally get rid of the .jserr pragma.
* Add typeerror to jsgctorbptato2023-06-181-1/+1
|
* Cleanups & bug fixes involving promisesbptato2023-06-151-11/+16
| | | | | Now a promise returning nil doesn't just leave the rest of the then chain hanging. Hooray.
* Simplify request.json, remove unused bindingsbptato2023-06-091-9/+0
|
* Remove JSObject again, add File API constructorbptato2023-06-082-7/+1
|
* Pre-allocate alternative objects for finalizerbptato2023-06-051-3/+12
| | | | Not sure if this helps
* js: fix string regression, throw on invalid ctorbptato2023-06-051-3/+5
|
* Fix empty string crash/regressionbptato2023-06-051-1/+1
| | | | Oops
* Refactor Request constructorbptato2023-06-051-6/+8
|
* Add support for canvas and multipartbptato2023-06-052-78/+224
| | | | | | | | | | | | | | | Quite incomplete canvas implementation. Crucially, the layout engine can't do much with whatever is drawn because it doesn't support images yet. I've re-introduced multipart as well, with the FormData API. For the append function I've also introduced a hack to the JS binding generator that allows requesting the JSContext pointer in nim procs. Really I should just fix the union generator thing and add support for overloading. In conclusion, for now the only thing canvas can be used for is exporting it as PNG and uploading it somewhere. Also, we now have PNG encoding and decoding too. (Now if only we had sixels as well...)