New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

seroval

Package Overview
Dependencies
Maintainers
1
Versions
66
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

seroval - npm Package Compare versions

Comparing version 0.14.0 to 0.14.1

6

dist/types/core/base-primitives.d.ts
import type { BigIntTypedArrayValue, TypedArrayValue } from '../types';
import type { WellKnownSymbols } from './constants';
import type { SerovalAggregateErrorNode, SerovalArrayBufferNode, SerovalArrayNode, SerovalAsyncIteratorFactoryInstanceNode, SerovalBigIntNode, SerovalBigIntTypedArrayNode, SerovalBoxedNode, SerovalConstantNode, SerovalDataViewNode, SerovalDateNode, SerovalErrorNode, SerovalIndexedValueNode, SerovalIteratorFactoryInstanceNode, SerovalNode, SerovalNumberNode, SerovalObjectRecordNode, SerovalPluginNode, SerovalReferenceNode, SerovalRegExpNode, SerovalSetNode, SerovalStringNode, SerovalTypedArrayNode, SerovalWKSymbolNode } from './types';
import type { SerovalAggregateErrorNode, SerovalArrayBufferNode, SerovalArrayNode, SerovalAsyncIteratorFactoryInstanceNode, SerovalBigIntNode, SerovalBigIntTypedArrayNode, SerovalBoxedNode, SerovalConstantNode, SerovalDataViewNode, SerovalDateNode, SerovalErrorNode, SerovalIndexedValueNode, SerovalIteratorFactoryInstanceNode, SerovalNode, SerovalNodeWithID, SerovalNumberNode, SerovalObjectRecordNode, SerovalPluginNode, SerovalReferenceNode, SerovalRegExpNode, SerovalSetNode, SerovalStringNode, SerovalTypedArrayNode, SerovalWKSymbolNode } from './types';
export declare function createNumberNode(value: number): SerovalConstantNode | SerovalNumberNode;

@@ -22,4 +22,4 @@ export declare function createStringNode(value: string): SerovalStringNode;

export declare function createSetNode(id: number, size: number, items: SerovalNode[]): SerovalSetNode;
export declare function createIteratorFactoryInstanceNode(factory: SerovalNode, items: SerovalNode): SerovalIteratorFactoryInstanceNode;
export declare function createAsyncIteratorFactoryInstanceNode(factory: SerovalNode, items: SerovalNode): SerovalAsyncIteratorFactoryInstanceNode;
export declare function createIteratorFactoryInstanceNode(factory: SerovalNodeWithID, items: SerovalNode): SerovalIteratorFactoryInstanceNode;
export declare function createAsyncIteratorFactoryInstanceNode(factory: SerovalNodeWithID, items: SerovalNode): SerovalAsyncIteratorFactoryInstanceNode;
//# sourceMappingURL=base-primitives.d.ts.map

@@ -53,3 +53,3 @@ export declare const enum SerovalConstant {

Plugin = 40,
MapSentinel = 41,
SpecialReference = 41,
IteratorFactory = 42,

@@ -59,4 +59,3 @@ IteratorFactoryInstance = 43,

AsyncIteratorFactoryInstance = 45,
ReadableStream = 46,
ReadableStreamFactory = 47
ReadableStream = 46
}

@@ -63,0 +62,0 @@ export declare const enum SerovalObjectFlags {

import type { Plugin, PluginAccessOptions, SerovalMode } from '../plugin';
import type { SerovalAsyncIteratorFactoryNode, SerovalIndexedValueNode, SerovalIteratorFactoryNode, SerovalMapNode, SerovalMapSentinelNode, SerovalNode, SerovalNullConstructorNode, SerovalObjectNode, SerovalObjectRecordNode, SerovalReadableStreamFactoryNode, SerovalReferenceNode, SerovalWKSymbolNode } from '../types';
import { SpecialReference } from '../special-reference';
import type { SerovalAsyncIteratorFactoryNode, SerovalIndexedValueNode, SerovalIteratorFactoryNode, SerovalMapNode, SerovalNode, SerovalNullConstructorNode, SerovalObjectNode, SerovalObjectRecordNode, SerovalReferenceNode, SerovalSpecialReferenceNode, SerovalWKSymbolNode } from '../types';
export interface BaseParserContextOptions extends PluginAccessOptions {

@@ -20,3 +21,3 @@ disabledFeatures?: number;

protected parseWKSymbol(current: symbol): SerovalIndexedValueNode | SerovalWKSymbolNode | SerovalReferenceNode;
protected parseMapSentinel(): SerovalIndexedValueNode | SerovalMapSentinelNode;
protected parseSpecialReference(ref: SpecialReference): SerovalIndexedValueNode | SerovalSpecialReferenceNode;
protected parseIteratorFactory(): SerovalIndexedValueNode | SerovalIteratorFactoryNode;

@@ -26,4 +27,3 @@ protected parseAsyncIteratorFactory(streaming: 0 | 1): SerovalIndexedValueNode | SerovalAsyncIteratorFactoryNode;

protected createMapNode(id: number, k: SerovalNode[], v: SerovalNode[], s: number): SerovalMapNode;
protected parseReadableStreamFactory(): (SerovalIndexedValueNode | SerovalReadableStreamFactoryNode);
}
//# sourceMappingURL=parser.d.ts.map
import { SerovalObjectFlags } from '../constants';
import type { Plugin, PluginAccessOptions, SerovalMode } from '../plugin';
import type { SerovalArrayNode, SerovalNode, SerovalObjectRecordKey, SerovalObjectRecordNode, SerovalReferenceNode, SerovalObjectNode, SerovalNullConstructorNode, SerovalRegExpNode, SerovalDateNode, SerovalSetNode, SerovalMapNode, SerovalArrayBufferNode, SerovalTypedArrayNode, SerovalBigIntTypedArrayNode, SerovalDataViewNode, SerovalAggregateErrorNode, SerovalErrorNode, SerovalPromiseNode, SerovalWKSymbolNode, SerovalURLNode, SerovalURLSearchParamsNode, SerovalBlobNode, SerovalFileNode, SerovalHeadersNode, SerovalFormDataNode, SerovalBoxedNode, SerovalRequestNode, SerovalResponseNode, SerovalEventNode, SerovalCustomEventNode, SerovalDOMExceptionNode, SerovalPluginNode, SerovalPromiseConstructorNode, SerovalPromiseResolveNode, SerovalPromiseRejectNode, SerovalReadableStreamConstructorNode, SerovalReadableStreamEnqueueNode, SerovalReadableStreamErrorNode, SerovalReadableStreamCloseNode, SerovalMapSentinelNode, SerovalIteratorFactoryInstanceNode, SerovalIteratorFactoryNode, SerovalAsyncIteratorFactoryInstanceNode, SerovalAsyncIteratorFactoryNode, SerovalReadableStreamNode, SerovalReadableStreamFactoryNode } from '../types';
import type { SerovalArrayNode, SerovalNode, SerovalObjectRecordKey, SerovalObjectRecordNode, SerovalReferenceNode, SerovalObjectNode, SerovalNullConstructorNode, SerovalRegExpNode, SerovalDateNode, SerovalSetNode, SerovalMapNode, SerovalArrayBufferNode, SerovalTypedArrayNode, SerovalBigIntTypedArrayNode, SerovalDataViewNode, SerovalAggregateErrorNode, SerovalErrorNode, SerovalPromiseNode, SerovalWKSymbolNode, SerovalURLNode, SerovalURLSearchParamsNode, SerovalBlobNode, SerovalFileNode, SerovalHeadersNode, SerovalFormDataNode, SerovalBoxedNode, SerovalRequestNode, SerovalResponseNode, SerovalEventNode, SerovalCustomEventNode, SerovalDOMExceptionNode, SerovalPluginNode, SerovalPromiseConstructorNode, SerovalPromiseResolveNode, SerovalPromiseRejectNode, SerovalReadableStreamConstructorNode, SerovalReadableStreamEnqueueNode, SerovalReadableStreamErrorNode, SerovalReadableStreamCloseNode, SerovalIteratorFactoryInstanceNode, SerovalIteratorFactoryNode, SerovalAsyncIteratorFactoryInstanceNode, SerovalAsyncIteratorFactoryNode, SerovalReadableStreamNode, SerovalSpecialReferenceNode } from '../types';
interface IndexAssignment {

@@ -147,10 +147,12 @@ t: 'index';

protected serializePlugin(node: SerovalPluginNode): string;
protected abstract serializePromiseConstructor(node: SerovalPromiseConstructorNode): string;
protected abstract serializePromiseResolve(node: SerovalPromiseResolveNode): string;
protected abstract serializePromiseReject(node: SerovalPromiseRejectNode): string;
protected abstract serializeReadableStreamConstructor(node: SerovalReadableStreamConstructorNode): string;
protected abstract serializeReadableStreamEnqueue(node: SerovalReadableStreamEnqueueNode): string;
protected abstract serializeReadableStreamError(node: SerovalReadableStreamErrorNode): string;
protected abstract serializeReadableStreamClose(node: SerovalReadableStreamCloseNode): string;
protected serializeMapSentinel(node: SerovalMapSentinelNode): string;
private getConstructor;
protected serializePromiseConstructor(node: SerovalPromiseConstructorNode): string;
protected serializePromiseResolve(node: SerovalPromiseResolveNode): string;
protected serializePromiseReject(node: SerovalPromiseRejectNode): string;
protected serializeReadableStreamConstructor(node: SerovalReadableStreamConstructorNode): string;
protected serializeReadableStreamEnqueue(node: SerovalReadableStreamEnqueueNode): string;
protected serializeReadableStreamError(node: SerovalReadableStreamErrorNode): string;
protected serializeReadableStreamClose(node: SerovalReadableStreamCloseNode): string;
private serializeSpecialReferenceValue;
protected serializeSpecialReference(node: SerovalSpecialReferenceNode): string;
protected serializeIteratorFactory(node: SerovalIteratorFactoryNode): string;

@@ -163,3 +165,2 @@ protected serializeIteratorFactoryInstance(node: SerovalIteratorFactoryInstanceNode): string;

protected serializeReadableStream(node: SerovalReadableStreamNode): string;
protected serializeReadableStreamFactory(node: SerovalReadableStreamFactoryNode): string;
serialize(node: SerovalNode): string;

@@ -166,0 +167,0 @@ }

@@ -1,2 +0,2 @@

import type { SerovalPromiseConstructorNode, SerovalPromiseResolveNode, SerovalPromiseRejectNode, SerovalReadableStreamCloseNode, SerovalReadableStreamEnqueueNode, SerovalReadableStreamErrorNode, SerovalReadableStreamConstructorNode, SerovalNode } from '../types';
import type { SerovalNode } from '../types';
import type { BaseSerializerContextOptions } from '../context/serializer';

@@ -14,11 +14,4 @@ import BaseSerializerContext from '../context/serializer';

protected assignIndexedValue(index: number, value: string): string;
protected serializePromiseConstructor(node: SerovalPromiseConstructorNode): string;
protected serializePromiseResolve(node: SerovalPromiseResolveNode): string;
protected serializePromiseReject(node: SerovalPromiseRejectNode): string;
protected serializeReadableStreamConstructor(node: SerovalReadableStreamConstructorNode): string;
protected serializeReadableStreamEnqueue(node: SerovalReadableStreamEnqueueNode): string;
protected serializeReadableStreamError(node: SerovalReadableStreamErrorNode): string;
protected serializeReadableStreamClose(node: SerovalReadableStreamCloseNode): string;
serializeTop(tree: SerovalNode): string;
}
//# sourceMappingURL=serializer.d.ts.map
export declare const REFERENCES_KEY = "__SEROVAL_REFS__";
export declare const GLOBAL_CONTEXT_API = "_$";
export declare const GLOBAL_CONTEXT_REFERENCES = "$R";
export declare const LOCAL_CONTEXT_PROMISE_RESOLVE = "s";
export declare const LOCAL_CONTEXT_PROMISE_REJECT = "f";
export declare const GLOBAL_CONTEXT_PROMISE_CONSTRUCTOR = "P";
export declare const GLOBAL_CONTEXT_PROMISE_RESOLVE = "Ps";
export declare const GLOBAL_CONTEXT_PROMISE_REJECT = "Pf";
export declare const LOCAL_CONTEXT_STREAM_CONTROLLER = "c";
export declare const GLOBAL_CONTEXT_STREAM_CONSTRUCTOR = "S";
export declare const GLOBAL_CONTEXT_STREAM_ENQUEUE = "Se";
export declare const GLOBAL_CONTEXT_STREAM_ERROR = "St";
export declare const GLOBAL_CONTEXT_STREAM_CLOSE = "Sc";
export declare const GLOBAL_CONTEXT_API_SCRIPT: string;
export declare function getCrossReferenceHeader(id?: string): string;
//# sourceMappingURL=keys.d.ts.map

@@ -1,6 +0,16 @@

export declare const MAP_SENTINEL: {};
export declare const UNIVERSAL_SENTINEL: {};
export declare const ITERATOR: {};
export declare const ASYNC_ITERATOR: {};
export declare const READABLE_STREAM: {};
export declare const UNIVERSAL_SENTINEL: {};
export declare const enum SpecialReference {
MapSentinel = 0,
ReadableStream = 1,
PromiseConstructor = 2,
PromiseResolve = 3,
PromiseReject = 4,
ReadableStreamConstructor = 5,
ReadableStreamEnqueue = 6,
ReadableStreamError = 7,
ReadableStreamClose = 8
}
export declare const SPECIAL_REFS: Record<SpecialReference, unknown>;
//# sourceMappingURL=special-reference.d.ts.map
import type { SerovalNodeType, SerovalObjectFlags, SerovalConstant, Symbols, ErrorConstructorTag } from './constants';
import type { SpecialReference } from './special-reference';
export interface SerovalBaseNode {

@@ -96,3 +97,3 @@ t: SerovalNodeType;

e: SerovalMapRecordNode;
f: SerovalMapSentinelNode | SerovalIndexedValueNode;
f: SerovalNodeWithID;
}

@@ -196,2 +197,3 @@ export interface SerovalArrayNode extends SerovalBaseNode {

i: number;
f: SerovalNodeWithID;
}

@@ -201,3 +203,6 @@ export interface SerovalPromiseResolveNode extends SerovalBaseNode {

i: number;
f: SerovalNode;
a: [
resolver: SerovalNodeWithID,
resolved: SerovalNode
];
}

@@ -207,3 +212,6 @@ export interface SerovalPromiseRejectNode extends SerovalBaseNode {

i: number;
f: SerovalNode;
a: [
resolver: SerovalNodeWithID,
resolved: SerovalNode
];
}

@@ -213,2 +221,3 @@ export interface SerovalReadableStreamConstructorNode extends SerovalBaseNode {

i: number;
f: SerovalNodeWithID;
}

@@ -218,13 +227,20 @@ export interface SerovalReadableStreamEnqueueNode extends SerovalBaseNode {

i: number;
f: SerovalNode;
a: [
resolver: SerovalNodeWithID,
resolved: SerovalNode
];
}
export interface SerovalReadableStreamErrorNode extends SerovalBaseNode {
t: SerovalNodeType.ReadableStreamError;
i: number;
a: [
resolver: SerovalNodeWithID,
resolved: SerovalNode
];
}
export interface SerovalReadableStreamCloseNode extends SerovalBaseNode {
t: SerovalNodeType.ReadableStreamClose;
i: number;
f: SerovalNodeWithID;
}
export interface SerovalReadableStreamErrorNode extends SerovalBaseNode {
t: SerovalNodeType.ReadableStreamError;
i: number;
f: SerovalNode;
}
export interface SerovalRequestNode extends SerovalBaseNode {

@@ -265,5 +281,6 @@ t: SerovalNodeType.Request;

}
export interface SerovalMapSentinelNode extends SerovalBaseNode {
t: SerovalNodeType.MapSentinel;
export interface SerovalSpecialReferenceNode extends SerovalBaseNode {
t: SerovalNodeType.SpecialReference;
i: number;
s: SpecialReference;
}

@@ -278,3 +295,3 @@ export interface SerovalIteratorFactoryNode extends SerovalBaseNode {

a: [
instance: SerovalNode,
instance: SerovalNodeWithID,
sequence: SerovalNode

@@ -292,3 +309,3 @@ ];

a: [
instance: SerovalNode,
instance: SerovalNodeWithID,
sequence: SerovalNode

@@ -301,12 +318,8 @@ ];

a: [
instance: SerovalNode,
instance: SerovalNodeWithID,
sequence: SerovalNode
];
}
export interface SerovalReadableStreamFactoryNode extends SerovalBaseNode {
t: SerovalNodeType.ReadableStreamFactory;
i: number;
}
export type SerovalSyncNode = SerovalPrimitiveNode | SerovalIndexedValueNode | SerovalSemiPrimitiveNode | SerovalSetNode | SerovalMapNode | SerovalArrayNode | SerovalObjectNode | SerovalNullConstructorNode | SerovalPromiseNode | SerovalErrorNode | SerovalAggregateErrorNode | SerovalWKSymbolNode | SerovalURLNode | SerovalURLSearchParamsNode | SerovalReferenceNode | SerovalArrayBufferNode | SerovalDataViewNode | SerovalBlobNode | SerovalFileNode | SerovalHeadersNode | SerovalFormDataNode | SerovalBoxedNode | SerovalEventNode | SerovalCustomEventNode | SerovalDOMExceptionNode | SerovalPluginNode | SerovalMapSentinelNode | SerovalIteratorFactoryNode | SerovalIteratorFactoryInstanceNode | SerovalAsyncIteratorFactoryNode | SerovalAsyncIteratorFactoryInstanceNode;
export type SerovalAsyncNode = SerovalPromiseNode | SerovalBlobNode | SerovalFileNode | SerovalPromiseConstructorNode | SerovalPromiseResolveNode | SerovalPromiseRejectNode | SerovalReadableStreamConstructorNode | SerovalReadableStreamEnqueueNode | SerovalReadableStreamCloseNode | SerovalReadableStreamErrorNode | SerovalRequestNode | SerovalResponseNode | SerovalReadableStreamNode | SerovalReadableStreamFactoryNode;
export type SerovalSyncNode = SerovalPrimitiveNode | SerovalIndexedValueNode | SerovalSemiPrimitiveNode | SerovalSetNode | SerovalMapNode | SerovalArrayNode | SerovalObjectNode | SerovalNullConstructorNode | SerovalPromiseNode | SerovalErrorNode | SerovalAggregateErrorNode | SerovalWKSymbolNode | SerovalURLNode | SerovalURLSearchParamsNode | SerovalReferenceNode | SerovalArrayBufferNode | SerovalDataViewNode | SerovalBlobNode | SerovalFileNode | SerovalHeadersNode | SerovalFormDataNode | SerovalBoxedNode | SerovalEventNode | SerovalCustomEventNode | SerovalDOMExceptionNode | SerovalPluginNode | SerovalSpecialReferenceNode | SerovalIteratorFactoryNode | SerovalIteratorFactoryInstanceNode | SerovalAsyncIteratorFactoryNode | SerovalAsyncIteratorFactoryInstanceNode;
export type SerovalAsyncNode = SerovalPromiseNode | SerovalBlobNode | SerovalFileNode | SerovalPromiseConstructorNode | SerovalPromiseResolveNode | SerovalPromiseRejectNode | SerovalReadableStreamConstructorNode | SerovalReadableStreamEnqueueNode | SerovalReadableStreamCloseNode | SerovalReadableStreamErrorNode | SerovalRequestNode | SerovalResponseNode | SerovalReadableStreamNode;
export type SerovalNode = SerovalSyncNode | SerovalAsyncNode;

@@ -313,0 +326,0 @@ export type SerovalNodeWithID = Extract<SerovalNode, {

@@ -1,2 +0,2 @@

import type { SerovalCustomEventNode, SerovalDOMExceptionNode, SerovalEventNode, SerovalNode, SerovalReadableStreamNode, SerovalURLNode, SerovalURLSearchParamsNode } from './types';
import type { SerovalCustomEventNode, SerovalDOMExceptionNode, SerovalEventNode, SerovalNode, SerovalNodeWithID, SerovalReadableStreamNode, SerovalURLNode, SerovalURLSearchParamsNode } from './types';
export declare function createURLNode(id: number, current: URL): SerovalURLNode;

@@ -7,3 +7,3 @@ export declare function createURLSearchParamsNode(id: number, current: URLSearchParams): SerovalURLSearchParamsNode;

export declare function createCustomEventNode(id: number, type: string, options: SerovalNode): SerovalCustomEventNode;
export declare function createReadableStreamNode(id: number, factory: SerovalNode, items: SerovalNode): SerovalReadableStreamNode;
export declare function createReadableStreamNode(id: number, factory: SerovalNodeWithID, items: SerovalNode): SerovalReadableStreamNode;
//# sourceMappingURL=web-api.d.ts.map

@@ -7,3 +7,3 @@ import { serialize } from './core/tree';

export * from './core/cross';
export { GLOBAL_CONTEXT_API_SCRIPT, getCrossReferenceHeader } from './core/keys';
export { getCrossReferenceHeader } from './core/keys';
export { default as Serializer } from './core/Serializer';

@@ -10,0 +10,0 @@ export * from './core/plugin';

{
"name": "seroval",
"type": "module",
"version": "0.14.0",
"version": "0.14.1",
"files": [

@@ -69,3 +69,3 @@ "dist",

},
"gitHead": "0fb114d1b7cd06d9fb33e895c5bb143a73d9f457"
"gitHead": "6c22472b58ec0dc367bf91bde033da0e9d8706fa"
}

@@ -29,2 +29,3 @@ import type { BigIntTypedArrayValue, TypedArrayValue } from '../types';

SerovalNode,
SerovalNodeWithID,
SerovalNumberNode,

@@ -416,3 +417,3 @@ SerovalObjectRecordNode,

export function createIteratorFactoryInstanceNode(
factory: SerovalNode,
factory: SerovalNodeWithID,
items: SerovalNode,

@@ -440,3 +441,3 @@ ): SerovalIteratorFactoryInstanceNode {

export function createAsyncIteratorFactoryInstanceNode(
factory: SerovalNode,
factory: SerovalNodeWithID,
items: SerovalNode,

@@ -443,0 +444,0 @@ ): SerovalAsyncIteratorFactoryInstanceNode {

@@ -54,3 +54,3 @@ export const enum SerovalConstant {

Plugin = 40,
MapSentinel = 41,
SpecialReference = 41,
IteratorFactory = 42,

@@ -61,3 +61,2 @@ IteratorFactoryInstance = 43,

ReadableStream = 46,
ReadableStreamFactory = 47,
}

@@ -64,0 +63,0 @@

@@ -452,3 +452,3 @@ /* eslint-disable prefer-spread */

deferred.resolve(
this.deserialize(node.f),
this.deserialize(node.a[1]),
);

@@ -462,3 +462,3 @@ return undefined;

deferred.reject(
this.deserialize(node.f),
this.deserialize(node.a[1]),
);

@@ -481,3 +481,3 @@ return undefined;

deferred.enqueue(
this.deserialize(node.f),
this.deserialize(node.a[1]),
);

@@ -491,3 +491,3 @@ return undefined;

deferred.error(
this.deserialize(node.f),
this.deserialize(node.a[1]),
);

@@ -515,3 +515,3 @@ return undefined;

const source = this.deserialize(node.a[1]);
if ((source as object).constructor === ReadableStream) {
if (node.s) {
return readableStreamToAsyncIterator(

@@ -623,6 +623,5 @@ source as ReadableStream<SerializedAsyncIteratorResult<unknown>>,

return this.deserializeReadableStream(node);
case SerovalNodeType.MapSentinel:
case SerovalNodeType.SpecialReference:
case SerovalNodeType.IteratorFactory:
case SerovalNodeType.AsyncIteratorFactory:
case SerovalNodeType.ReadableStreamFactory:
default:

@@ -629,0 +628,0 @@ throw new Error('invariant');

@@ -17,6 +17,6 @@ import UnsupportedTypeError from '../UnsupportedTypeError';

import {
SpecialReference,
ASYNC_ITERATOR,
ITERATOR,
MAP_SENTINEL,
READABLE_STREAM,
SPECIAL_REFS,
} from '../special-reference';

@@ -28,3 +28,2 @@ import type {

SerovalMapNode,
SerovalMapSentinelNode,
SerovalNode,

@@ -34,4 +33,4 @@ SerovalNullConstructorNode,

SerovalObjectRecordNode,
SerovalReadableStreamFactoryNode,
SerovalReferenceNode,
SerovalSpecialReferenceNode,
SerovalWKSymbolNode,

@@ -121,4 +120,7 @@ } from '../types';

protected parseMapSentinel(): SerovalIndexedValueNode | SerovalMapSentinelNode {
const registeredID = this.refs.get(MAP_SENTINEL);
protected parseSpecialReference(
ref: SpecialReference,
): SerovalIndexedValueNode | SerovalSpecialReferenceNode {
const specialRef = SPECIAL_REFS[ref];
const registeredID = this.refs.get(specialRef);
if (registeredID != null) {

@@ -129,7 +131,7 @@ this.markRef(registeredID);

const id = this.refs.size;
this.refs.set(MAP_SENTINEL, id);
this.refs.set(specialRef, id);
return {
t: SerovalNodeType.MapSentinel,
t: SerovalNodeType.SpecialReference,
i: id,
s: undefined,
s: ref,
l: undefined,

@@ -235,3 +237,3 @@ c: undefined,

a: undefined,
f: this.parseMapSentinel(),
f: this.parseSpecialReference(SpecialReference.MapSentinel),
b: undefined,

@@ -241,28 +243,2 @@ o: undefined,

}
protected parseReadableStreamFactory(): (
SerovalIndexedValueNode | SerovalReadableStreamFactoryNode
) {
const registeredID = this.refs.get(READABLE_STREAM);
if (registeredID != null) {
this.markRef(registeredID);
return createIndexedValueNode(registeredID);
}
const id = this.refs.size;
this.refs.set(READABLE_STREAM, id);
return {
t: SerovalNodeType.ReadableStreamFactory,
i: id,
s: undefined,
l: undefined,
c: undefined,
m: undefined,
p: undefined,
e: undefined,
a: undefined,
f: undefined,
b: undefined,
o: undefined,
};
}
}

@@ -82,3 +82,3 @@ /* eslint-disable prefer-destructuring */

} from '../../web-api';
import { UNIVERSAL_SENTINEL } from '../../special-reference';
import { SpecialReference, UNIVERSAL_SENTINEL } from '../../special-reference';

@@ -493,3 +493,3 @@ type ObjectLikeNode =

id,
this.parseReadableStreamFactory(),
this.parseSpecialReference(SpecialReference.ReadableStream),
await this.parse(

@@ -496,0 +496,0 @@ await readableStreamToSequence(current),

@@ -31,3 +31,3 @@ import type { BigIntTypedArrayValue, TypedArrayValue } from '../../../types';

import { asyncIteratorToReadableStream, iteratorToSequence } from '../../utils/iterator-to-sequence';
import { UNIVERSAL_SENTINEL } from '../../special-reference';
import { SpecialReference, UNIVERSAL_SENTINEL } from '../../special-reference';

@@ -61,3 +61,7 @@ export interface BaseStreamParserContextOptions extends BaseSyncParserContextOptions {

private onParse(node: SerovalNode, initial: boolean): void {
this.onParseCallback(node, initial);
try {
this.onParseCallback(node, initial);
} catch (error) {
this.onError(error);
}
}

@@ -179,3 +183,3 @@

a: undefined,
f: undefined,
f: this.parseSpecialReference(SpecialReference.ReadableStreamClose),
b: undefined,

@@ -197,4 +201,7 @@ o: undefined,

e: undefined,
a: undefined,
f: parsed,
a: [
this.parseSpecialReference(SpecialReference.ReadableStreamEnqueue),
parsed,
],
f: undefined,
b: undefined,

@@ -221,4 +228,7 @@ o: undefined,

e: undefined,
a: undefined,
f: parsed,
a: [
this.parseSpecialReference(SpecialReference.ReadableStreamError),
parsed,
],
f: undefined,
b: undefined,

@@ -252,3 +262,3 @@ o: undefined,

a: undefined,
f: undefined,
f: this.parseSpecialReference(SpecialReference.ReadableStreamConstructor),
b: undefined,

@@ -323,4 +333,7 @@ o: undefined,

e: undefined,
a: undefined,
f: parsed,
a: [
this.parseSpecialReference(SpecialReference.PromiseResolve),
parsed,
],
f: undefined,
b: undefined,

@@ -345,4 +358,7 @@ o: undefined,

e: undefined,
a: undefined,
f: parsed,
a: [
this.parseSpecialReference(SpecialReference.PromiseReject),
parsed,
],
f: undefined,
b: undefined,

@@ -367,3 +383,3 @@ o: undefined,

a: undefined,
f: undefined,
f: this.parseSpecialReference(SpecialReference.PromiseConstructor),
b: undefined,

@@ -370,0 +386,0 @@ o: undefined,

@@ -11,2 +11,3 @@ import { Feature } from '../compat';

import type { Plugin, PluginAccessOptions, SerovalMode } from '../plugin';
import { SpecialReference } from '../special-reference';
import type {

@@ -53,3 +54,2 @@ SerovalArrayNode,

SerovalReadableStreamCloseNode,
SerovalMapSentinelNode,
SerovalIteratorFactoryInstanceNode,

@@ -60,3 +60,4 @@ SerovalIteratorFactoryNode,

SerovalReadableStreamNode,
SerovalReadableStreamFactoryNode,
SerovalSpecialReferenceNode,
SerovalNodeWithID,
} from '../types';

@@ -752,3 +753,3 @@ import { isValidIdentifier } from '../utils/is-valid-identifier';

}
if (sentinel.t === SerovalNodeType.MapSentinel) {
if (sentinel.t === SerovalNodeType.SpecialReference) {
this.markRef(sentinel.i);

@@ -993,34 +994,114 @@ serialized = '(' + this.serialize(sentinel) + ',' + serialized + ')';

protected abstract serializePromiseConstructor(
private getConstructor(node: SerovalNodeWithID): string {
const constructor = this.serialize(node);
return (constructor === this.getRefParam(node.i)) ? constructor : ('(' + constructor + ')');
}
protected serializePromiseConstructor(
node: SerovalPromiseConstructorNode,
): string;
): string {
return this.assignIndexedValue(
node.i,
this.getConstructor(node.f) + '()',
);
}
protected abstract serializePromiseResolve(
protected serializePromiseResolve(
node: SerovalPromiseResolveNode,
): string;
): string {
return this.getConstructor(node.a[0]) + '(' + this.getRefParam(node.i) + ',' + this.serialize(node.a[1]) + ')';
}
protected abstract serializePromiseReject(
protected serializePromiseReject(
node: SerovalPromiseRejectNode,
): string;
): string {
return this.getConstructor(node.a[0]) + '(' + this.getRefParam(node.i) + ',' + this.serialize(node.a[1]) + ')';
}
protected abstract serializeReadableStreamConstructor(
protected serializeReadableStreamConstructor(
node: SerovalReadableStreamConstructorNode,
): string;
): string {
return this.assignIndexedValue(
node.i,
this.getConstructor(node.f) + '()',
);
}
protected abstract serializeReadableStreamEnqueue(
protected serializeReadableStreamEnqueue(
node: SerovalReadableStreamEnqueueNode,
): string;
): string {
return this.getConstructor(node.a[0]) + '(' + this.getRefParam(node.i) + ',' + this.serialize(node.a[1]) + ')';
}
protected abstract serializeReadableStreamError(
protected serializeReadableStreamError(
node: SerovalReadableStreamErrorNode,
): string;
): string {
return this.getConstructor(node.a[0]) + '(' + this.getRefParam(node.i) + ',' + this.serialize(node.a[1]) + ')';
}
protected abstract serializeReadableStreamClose(
protected serializeReadableStreamClose(
node: SerovalReadableStreamCloseNode,
): string;
): string {
return this.getConstructor(node.f) + '(' + this.getRefParam(node.i) + ')';
}
protected serializeMapSentinel(node: SerovalMapSentinelNode): string {
private serializeSpecialReferenceValue(ref: SpecialReference): string {
switch (ref) {
case SpecialReference.MapSentinel:
return '[]';
case SpecialReference.ReadableStream:
return this.createFunction(
['s'],
'new ReadableStream({start:' + this.createFunction(
['c'],
'Promise.resolve().then(' + this.createEffectfulFunction(
['i', 'v'],
'for(i=0;i<s.d;i++)c.enqueue(s.v[i]);(s.t===-1)?c.close():c.error(s.v[i])',
) + ')',
) + '})',
);
case SpecialReference.PromiseConstructor:
return this.createFunction(
['s', 'f', 'p'],
'((p=new Promise(' + this.createEffectfulFunction(['a', 'b'], 's=a,f=b') + ')).s=s,p.f=f,p)',
);
case SpecialReference.PromiseResolve:
return this.createEffectfulFunction(
['p', 'd'],
'p.s(d),p.status="success",p.value=d;delete p.s;delete p.f',
);
case SpecialReference.PromiseReject:
return this.createEffectfulFunction(
['p', 'd'],
'p.f(d),p.status="failure",p.value=d;delete p.s;delete p.f',
);
case SpecialReference.ReadableStreamConstructor:
return this.createFunction(
['s', 'c'],
'((s=new ReadableStream({start:' + this.createEffectfulFunction(['x'], 'c=x') + '})).c=c,s)',
);
case SpecialReference.ReadableStreamEnqueue:
return this.createEffectfulFunction(
['s', 'd'],
's.c.enqueue(d)',
);
case SpecialReference.ReadableStreamError:
return this.createEffectfulFunction(
['s', 'd'],
's.c.error(d);delete s.c',
);
case SpecialReference.ReadableStreamClose:
return this.createEffectfulFunction(
['s'],
's.c.close();delete s.c',
);
default:
return '';
}
}
protected serializeSpecialReference(node: SerovalSpecialReferenceNode): string {
return this.assignIndexedValue(
node.i,
'[]',
this.serializeSpecialReferenceValue(node.s),
);

@@ -1046,3 +1127,3 @@ }

): string {
return '(' + this.serialize(node.a[0]) + ')(' + this.serialize(node.a[1]) + ')';
return this.getConstructor(node.a[0]) + '(' + this.serialize(node.a[1]) + ')';
}

@@ -1096,3 +1177,3 @@

): string {
return '(' + this.serialize(node.a[0]) + ')(' + this.serialize(node.a[1]) + ')';
return this.getConstructor(node.a[0]) + '(' + this.serialize(node.a[1]) + ')';
}

@@ -1104,3 +1185,3 @@

this.stack.push(node.i);
const result = '(' + this.serialize(node.a[0]) + ')(' + this.serialize(node.a[1]) + ')';
const result = this.getConstructor(node.a[0]) + '(' + this.serialize(node.a[1]) + ')';
this.stack.pop();

@@ -1113,20 +1194,2 @@ return this.assignIndexedValue(

protected serializeReadableStreamFactory(
node: SerovalReadableStreamFactoryNode,
): string {
return this.assignIndexedValue(
node.i,
this.createFunction(
['s'],
'new ReadableStream({start:' + this.createFunction(
['c'],
'Promise.resolve().then(' + this.createEffectfulFunction(
['i', 'v'],
'for(i=0;i<s.d;i++)c.enqueue(s.v[i]);(s.t===-1)?c.close():c.error(s.v[i])',
) + ')',
) + '})',
),
);
}
serialize(node: SerovalNode): string {

@@ -1215,4 +1278,4 @@ switch (node.t) {

return this.serializePlugin(node);
case SerovalNodeType.MapSentinel:
return this.serializeMapSentinel(node);
case SerovalNodeType.SpecialReference:
return this.serializeSpecialReference(node);
case SerovalNodeType.IteratorFactory:

@@ -1228,4 +1291,2 @@ return this.serializeIteratorFactory(node);

return this.serializeReadableStream(node);
case SerovalNodeType.ReadableStreamFactory:
return this.serializeReadableStreamFactory(node);
default:

@@ -1232,0 +1293,0 @@ throw new Error('invariant');

import type {
SerovalPromiseConstructorNode,
SerovalPromiseResolveNode,
SerovalPromiseRejectNode,
SerovalReadableStreamCloseNode,
SerovalReadableStreamEnqueueNode,
SerovalReadableStreamErrorNode,
SerovalReadableStreamConstructorNode,
SerovalNode,
} from '../types';
import {
GLOBAL_CONTEXT_PROMISE_REJECT,
GLOBAL_CONTEXT_PROMISE_RESOLVE,
GLOBAL_CONTEXT_PROMISE_CONSTRUCTOR,
GLOBAL_CONTEXT_REFERENCES,
GLOBAL_CONTEXT_STREAM_CONSTRUCTOR,
GLOBAL_CONTEXT_STREAM_ENQUEUE,
GLOBAL_CONTEXT_STREAM_CLOSE,
GLOBAL_CONTEXT_STREAM_ERROR,
GLOBAL_CONTEXT_API,
} from '../keys';

@@ -56,44 +41,2 @@ import type { BaseSerializerContextOptions } from '../context/serializer';

protected serializePromiseConstructor(
node: SerovalPromiseConstructorNode,
): string {
return this.assignIndexedValue(node.i, GLOBAL_CONTEXT_API + '.' + GLOBAL_CONTEXT_PROMISE_CONSTRUCTOR + '()');
}
protected serializePromiseResolve(
node: SerovalPromiseResolveNode,
): string {
return GLOBAL_CONTEXT_API + '.' + GLOBAL_CONTEXT_PROMISE_RESOLVE + '(' + this.getRefParam(node.i) + ',' + this.serialize(node.f) + ')';
}
protected serializePromiseReject(
node: SerovalPromiseRejectNode,
): string {
return GLOBAL_CONTEXT_API + '.' + GLOBAL_CONTEXT_PROMISE_REJECT + '(' + this.getRefParam(node.i) + ',' + this.serialize(node.f) + ')';
}
protected serializeReadableStreamConstructor(
node: SerovalReadableStreamConstructorNode,
): string {
return this.assignIndexedValue(node.i, GLOBAL_CONTEXT_API + '.' + GLOBAL_CONTEXT_STREAM_CONSTRUCTOR + '()');
}
protected serializeReadableStreamEnqueue(
node: SerovalReadableStreamEnqueueNode,
): string {
return GLOBAL_CONTEXT_API + '.' + GLOBAL_CONTEXT_STREAM_ENQUEUE + '(' + this.getRefParam(node.i) + ',' + this.serialize(node.f) + ')';
}
protected serializeReadableStreamError(
node: SerovalReadableStreamErrorNode,
): string {
return GLOBAL_CONTEXT_API + '.' + GLOBAL_CONTEXT_STREAM_ERROR + '(' + this.getRefParam(node.i) + ',' + this.serialize(node.f) + ')';
}
protected serializeReadableStreamClose(
node: SerovalReadableStreamCloseNode,
): string {
return GLOBAL_CONTEXT_API + '.' + GLOBAL_CONTEXT_STREAM_CLOSE + '(' + this.getRefParam(node.i) + ')';
}
serializeTop(tree: SerovalNode): string {

@@ -100,0 +43,0 @@ const result = this.serialize(tree);

@@ -6,40 +6,4 @@ import { serializeString } from './string';

export const GLOBAL_CONTEXT_API = '_$';
export const GLOBAL_CONTEXT_REFERENCES = '$R';
export const LOCAL_CONTEXT_PROMISE_RESOLVE = 's';
export const LOCAL_CONTEXT_PROMISE_REJECT = 'f';
export const GLOBAL_CONTEXT_PROMISE_CONSTRUCTOR = 'P';
export const GLOBAL_CONTEXT_PROMISE_RESOLVE = 'Ps';
export const GLOBAL_CONTEXT_PROMISE_REJECT = 'Pf';
export const LOCAL_CONTEXT_STREAM_CONTROLLER = 'c';
export const GLOBAL_CONTEXT_STREAM_CONSTRUCTOR = 'S';
export const GLOBAL_CONTEXT_STREAM_ENQUEUE = 'Se';
export const GLOBAL_CONTEXT_STREAM_ERROR = 'St';
export const GLOBAL_CONTEXT_STREAM_CLOSE = 'Sc';
const GLOBAL_CONTEXT_API_REF = `self.${GLOBAL_CONTEXT_API}`;
export const GLOBAL_CONTEXT_API_SCRIPT = `${GLOBAL_CONTEXT_API_REF}=${GLOBAL_CONTEXT_API_REF}||{`
+ `${GLOBAL_CONTEXT_PROMISE_CONSTRUCTOR}:function(s,f,p){return(p=new Promise(function(a,b){s=a,f=b})).${LOCAL_CONTEXT_PROMISE_RESOLVE}=s,p.${LOCAL_CONTEXT_PROMISE_REJECT}=f,p},`
+ `uP:function(p){delete p.${LOCAL_CONTEXT_PROMISE_RESOLVE};delete p.${LOCAL_CONTEXT_PROMISE_REJECT}},`
+ `${GLOBAL_CONTEXT_PROMISE_RESOLVE}:function(p,d){p.${LOCAL_CONTEXT_PROMISE_RESOLVE}(d),p.status="success",p.value=d,this.uP(p)},`
+ `${GLOBAL_CONTEXT_PROMISE_REJECT}:function(p,d){p.${LOCAL_CONTEXT_PROMISE_REJECT}(d),p.status="failure",p.value=d,this.uP(p)},`
+ `uS:function(s){delete s.${LOCAL_CONTEXT_STREAM_CONTROLLER}},`
+ `${GLOBAL_CONTEXT_STREAM_CLOSE}:function(s){s.${LOCAL_CONTEXT_STREAM_CONTROLLER}.close(),this.uS(s)},`
+ `${GLOBAL_CONTEXT_STREAM_ERROR}:function(s,e){s.${LOCAL_CONTEXT_STREAM_CONTROLLER}.error(e),this.uS(s)},`
+ `${GLOBAL_CONTEXT_STREAM_ENQUEUE}:function(s,d){s.${LOCAL_CONTEXT_STREAM_CONTROLLER}.enqueue(d)},`
+ `${GLOBAL_CONTEXT_STREAM_CONSTRUCTOR}:function(s,c){return(s=new ReadableStream({start:function(x){c=x}})).${LOCAL_CONTEXT_STREAM_CONTROLLER}=c,s}`
+ '}';
const GLOBAL_CONTEXT_R = `self.${GLOBAL_CONTEXT_REFERENCES}`;

@@ -46,0 +10,0 @@

@@ -1,2 +0,2 @@

export const MAP_SENTINEL = {};
export const UNIVERSAL_SENTINEL = {};

@@ -7,4 +7,24 @@ export const ITERATOR = {};

export const READABLE_STREAM = {};
export const enum SpecialReference {
MapSentinel = 0,
ReadableStream = 1,
PromiseConstructor = 2,
PromiseResolve = 3,
PromiseReject = 4,
ReadableStreamConstructor = 5,
ReadableStreamEnqueue = 6,
ReadableStreamError = 7,
ReadableStreamClose = 8,
}
export const UNIVERSAL_SENTINEL = {};
export const SPECIAL_REFS: Record<SpecialReference, unknown> = {
[SpecialReference.MapSentinel]: {},
[SpecialReference.ReadableStream]: {},
[SpecialReference.PromiseConstructor]: {},
[SpecialReference.PromiseResolve]: {},
[SpecialReference.PromiseReject]: {},
[SpecialReference.ReadableStreamConstructor]: {},
[SpecialReference.ReadableStreamEnqueue]: {},
[SpecialReference.ReadableStreamError]: {},
[SpecialReference.ReadableStreamClose]: {},
};

@@ -8,2 +8,3 @@ import type {

} from './constants';
import type { SpecialReference } from './special-reference';

@@ -166,3 +167,3 @@ export interface SerovalBaseNode {

e: SerovalMapRecordNode;
f: SerovalMapSentinelNode | SerovalIndexedValueNode;
f: SerovalNodeWithID;
}

@@ -305,2 +306,3 @@

i: number;
f: SerovalNodeWithID;
}

@@ -310,5 +312,7 @@

t: SerovalNodeType.PromiseResolve;
// reference to the resolver
i: number;
f: SerovalNode;
a: [
resolver: SerovalNodeWithID,
resolved: SerovalNode,
];
}

@@ -318,5 +322,7 @@

t: SerovalNodeType.PromiseReject;
// reference to the resolver
i: number;
f: SerovalNode;
a: [
resolver: SerovalNodeWithID,
resolved: SerovalNode,
];
}

@@ -327,2 +333,3 @@

i: number;
f: SerovalNodeWithID;
}

@@ -333,14 +340,21 @@

i: number;
f: SerovalNode;
a: [
resolver: SerovalNodeWithID,
resolved: SerovalNode,
];
}
export interface SerovalReadableStreamCloseNode extends SerovalBaseNode {
t: SerovalNodeType.ReadableStreamClose;
export interface SerovalReadableStreamErrorNode extends SerovalBaseNode {
t: SerovalNodeType.ReadableStreamError;
i: number;
a: [
resolver: SerovalNodeWithID,
resolved: SerovalNode,
];
}
export interface SerovalReadableStreamErrorNode extends SerovalBaseNode {
t: SerovalNodeType.ReadableStreamError;
export interface SerovalReadableStreamCloseNode extends SerovalBaseNode {
t: SerovalNodeType.ReadableStreamClose;
i: number;
f: SerovalNode;
f: SerovalNodeWithID;
}

@@ -399,5 +413,6 @@

export interface SerovalMapSentinelNode extends SerovalBaseNode {
t: SerovalNodeType.MapSentinel;
export interface SerovalSpecialReferenceNode extends SerovalBaseNode {
t: SerovalNodeType.SpecialReference;
i: number;
s: SpecialReference;
}

@@ -414,3 +429,3 @@

a: [
instance: SerovalNode,
instance: SerovalNodeWithID,
sequence: SerovalNode,

@@ -430,3 +445,3 @@ ];

a: [
instance: SerovalNode,
instance: SerovalNodeWithID,
sequence: SerovalNode,

@@ -440,3 +455,3 @@ ];

a: [
instance: SerovalNode,
instance: SerovalNodeWithID,
sequence: SerovalNode,

@@ -446,7 +461,2 @@ ];

export interface SerovalReadableStreamFactoryNode extends SerovalBaseNode {
t: SerovalNodeType.ReadableStreamFactory;
i: number;
}
export type SerovalSyncNode =

@@ -479,3 +489,3 @@ | SerovalPrimitiveNode

| SerovalPluginNode
| SerovalMapSentinelNode
| SerovalSpecialReferenceNode
| SerovalIteratorFactoryNode

@@ -499,4 +509,3 @@ | SerovalIteratorFactoryInstanceNode

| SerovalResponseNode
| SerovalReadableStreamNode
| SerovalReadableStreamFactoryNode;
| SerovalReadableStreamNode;

@@ -503,0 +512,0 @@ export type SerovalNode =

@@ -8,2 +8,3 @@ import { SerovalNodeType } from './constants';

SerovalNode,
SerovalNodeWithID,
SerovalReadableStreamNode,

@@ -118,3 +119,3 @@ SerovalURLNode,

id: number,
factory: SerovalNode,
factory: SerovalNodeWithID,
items: SerovalNode,

@@ -121,0 +122,0 @@ ): SerovalReadableStreamNode {

@@ -17,3 +17,3 @@ import { serialize } from './core/tree';

export { GLOBAL_CONTEXT_API_SCRIPT, getCrossReferenceHeader } from './core/keys';
export { getCrossReferenceHeader } from './core/keys';

@@ -20,0 +20,0 @@ export { default as Serializer } from './core/Serializer';

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc