These node represents values that are accessed only through the serialized output which are not directly accessed by the user. This allows output deduping which is usually only achievable with the nodes that are derived from the values directly declared by the user.
Rework Iterable format.
Previously iterables used Array.from to get the items from the iterables, and then output them through either Array.prototype.values or Array[@@iterator] however this proved to be problematic for two reasons: 1. Array.from assumes that the iterator method would never throw, but that's not the case, so we also want the serialized iterator to emulate this sequence as to when the iterator would yield an item, would throw an error or when it is done, much like how seroval does for ReadableStream.
Iterables would also mistakenly duplicate references because of lazy evaluation. This breaks cross-referencing. The PR changes it so that items are evaluated immediately, which removes the need for lazy evaluation (which means, there's also no need to check if an item is an iterable or not internally).
isIterable check is deprecated (same with the Plugin API)
Deprecate MethodShorthand and ArrayPrototypeValues feature flags.
These two is only utilized by old iterable serialization, which no longer exists.
Add AsyncIterable support for async and streaming modes
Simplify serialized ReadableStream format for streaming mode
So instead of doing a nonsense switch code, we just call the controller method directly.
Add JSON serialization/deserialization support for cross-reference and streaming modes
Fix plugin references not getting assigned
Add ReadableStream support for async modes
Add Symbol.toStringTag and Symbol.isConcatSpreadable property serialization support
SpecialReference
nodesArray.from
to get the items from the iterables, and then output them through eitherArray.prototype.values
orArray[@@iterator]
however this proved to be problematic for two reasons: 1.Array.from
assumes that the iterator method would never throw, but that's not the case, so we also want the serialized iterator to emulate this sequence as to when the iterator would yield an item, would throw an error or when it is done, much like how seroval does forReadableStream
.isIterable
check is deprecated (same with the Plugin API)MethodShorthand
andArrayPrototypeValues
feature flags.AsyncIterable
support for async and streaming modesswitch
code, we just call the controller method directly.ReadableStream
support for async modesSymbol.toStringTag
andSymbol.isConcatSpreadable
property serialization support