about summary refs log tree commit diff stats
path: root/src/js
Commit message (Collapse)AuthorAgeFilesLines
...
* javascript: add TextEncoder, TextDecoderbptato2023-10-216-0/+178
|
* XHR progressbptato2023-10-141-3/+4
| | | | still non-functional
* Refactor Consolebptato2023-10-131-0/+58
| | | | | * merge dom.console & client.Console * move client-specific stuff out of Console (into callbacks when necessary)
* js: improve optional argument handlingbptato2023-09-261-1/+4
| | | | | | | If a fallback argument has been specified, treat undefined as if no argument had been given. This removes the need for the ?? 1 checks in the config.
* client, timeout: simplifybptato2023-09-241-9/+9
| | | | | We don't use the generic feature of selectors, so just unify the client & buffer timeout types.
* regex: copy after compilingbptato2023-09-241-38/+17
| | | | | | | | | | | | Instead of the broken attempt at making regexes zero-copy (it copied anyway), copy once and forget about it. (There have been way too many problems with the destructor approach, including the latest one where the GC would happily zero out our regexes if they were in a sequence. Maybe we can make this work once we switched to ORC. For now, it's not worth the trouble.)
* dom: add document.all, misc fixesbptato2023-09-193-4/+12
| | | | | | | | * Fix an issue with Collection cache invalidation (we must invalidate collections of the parent node on insertion, so that it triggers a refresh). * Remove circular reference of document.document, now we use a function instead.
* javascript: static methods, URL.canParsebptato2023-09-171-23/+46
|
* move around more modulesbptato2023-09-147-7/+7
| | | | | | | | | | * ips -> io/ * loader related stuff -> loader/ * tempfile -> extern/ * buffer, forkserver -> server/ * lineedit, window -> display/ * cell -> types/ * opt -> types/
* javascript: fix a GC bugbptato2023-09-092-5/+23
| | | | | | | GC_unref may indirectly call nim_finalize_for_js, which could mess up execution of checkDestroy. I haven't encountered it in refc, but it's definitely present in orc.
* tojs: remove JSDictbptato2023-09-091-12/+0
| | | | it's broken anyway, and unused currently
* javascript: add JSDict typebptato2023-09-093-1/+35
| | | | And use that in extern().
* ouchbptato2023-09-081-1/+1
|
* regex: avoid infinite loopbptato2023-09-081-1/+7
| | | | | A capture size of 0 (e.g. |) no longer sends the regex matcher into an infinite loop.
* atob, btoa: handle latin-1 correctlybptato2023-09-081-12/+36
|
* Add btoa, atobbptato2023-09-071-0/+24
|
* javascript: reference unforgeables in tablebptato2023-09-041-1/+1
| | | | | Conceptually, seqs are by-value. In practice I they are by-ref, but let's not depend on this.
* tojs: fix memory leakbptato2023-09-041-5/+12
| | | | | | Welp. GC_ref should only be called if a new reference is being created. This is what we did until 48f1306f, where this regression slipped in.
* buffer: basic click event supportbptato2023-08-313-5/+18
| | | | | | | Mostly a proof of concept. Just bubble it unconditionally for now and never prevent default. Also, fix fromJSFunction by Dup'ing its closure JSValue.
* javascript: fix fromJSFunction, simplify setOpaquebptato2023-08-303-5/+7
| | | | | | * fromJSFunction: dup the value, so that it cannot go out of context. * setOpaque no longer calls GC_ref, so no need for it to be generic instead of just taking a pointer.
* javascript: factor out fromJSbptato2023-08-293-489/+498
|
* javascript: move error ctors to js/errorbptato2023-08-292-48/+48
|
* js: fix typobptato2023-08-291-1/+1
|
* Add jsdelprop, allow deletion of ActionMap propsbptato2023-08-291-2/+41
| | | | mostly for symmetry with real objects
* Add jssetprop, make ActionMap editable from JSbptato2023-08-291-3/+48
| | | | | | | | | jssetprop just adds the set_property exotic function. ActionMap is now editable from JS; the setter is implemented in the same way as bindPagerKey/bindLineKey. (In fact, now those two just call the setter.) But this is still rather inefficient and subject to change.
* refactor: Result[T, JSError] -> JSResult[T]bptato2023-08-281-21/+20
|
* javascript: refactorbptato2023-08-288-396/+425
| | | | | | | Split out parts of the JS module, because it was starting to confuse the compiler a little. (Peakmem is back at 750M. Interesting.)
* javascript: de-ref some interfacesbptato2023-08-281-54/+47
| | | | | | | Also, make ActionMap use getters/hasprop instead of a table copy. peakmem remains up +200M at 950M after commit 9991bd3393483158ab0d1b9d995f695dee3c65dc. :(
* javascript: allow by-ref getters to non-ref objectsbptato2023-08-271-36/+161
| | | | | | | | This makes not creating separate reference types for SameObject attributes possible. Also add a fromJS2 "hook" to allow defining fromJS behavior in modules other than javascript.
* 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.)