gremlin 4.0.0-beta.2 → 4.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/driver/auth.cjs +11 -4
- package/build/cjs/driver/auth.d.cts +1 -1
- package/build/cjs/driver/client.cjs +82 -38
- package/build/cjs/driver/client.d.cts +30 -27
- package/build/cjs/driver/connection.cjs +173 -60
- package/build/cjs/driver/connection.d.cts +69 -26
- package/build/cjs/driver/dispatcher.browser.cjs +57 -0
- package/build/cjs/driver/dispatcher.browser.d.cts +35 -0
- package/build/cjs/driver/dispatcher.cjs +101 -0
- package/build/cjs/driver/dispatcher.d.cts +48 -0
- package/build/cjs/driver/driver-remote-connection.cjs +27 -15
- package/build/cjs/driver/driver-remote-connection.d.cts +10 -4
- package/build/cjs/driver/http-request.cjs +64 -0
- package/build/cjs/driver/http-request.d.cts +28 -0
- package/build/cjs/driver/logger.cjs +45 -0
- package/build/cjs/driver/logger.d.cts +29 -0
- package/build/cjs/driver/remote-connection.cjs +5 -8
- package/build/cjs/driver/remote-connection.d.cts +6 -21
- package/build/cjs/driver/request-message.cjs +110 -21
- package/build/cjs/driver/request-message.d.cts +38 -8
- package/build/cjs/driver/response-error.cjs +3 -3
- package/build/cjs/driver/response-error.d.cts +2 -2
- package/build/cjs/index.cjs +21 -0
- package/build/cjs/index.d.cts +47 -0
- package/build/cjs/language/grammar/GremlinLexer.cjs +1669 -1615
- package/build/cjs/language/grammar/GremlinLexer.d.cts +325 -316
- package/build/cjs/language/grammar/GremlinListener.cjs +322 -8
- package/build/cjs/language/grammar/GremlinListener.d.cts +351 -10
- package/build/cjs/language/grammar/GremlinParser.cjs +8700 -5798
- package/build/cjs/language/grammar/GremlinParser.d.cts +998 -619
- package/build/cjs/language/translator/AnonymizedTranslateVisitor.cjs +9 -0
- package/build/cjs/language/translator/AnonymizedTranslateVisitor.d.cts +3 -0
- package/build/cjs/language/translator/DotNetTranslateVisitor.cjs +113 -4
- package/build/cjs/language/translator/DotNetTranslateVisitor.d.cts +13 -2
- package/build/cjs/language/translator/GoTranslateVisitor.cjs +82 -0
- package/build/cjs/language/translator/GoTranslateVisitor.d.cts +9 -0
- package/build/cjs/language/translator/GroovyTranslateVisitor.cjs +23 -0
- package/build/cjs/language/translator/GroovyTranslateVisitor.d.cts +3 -0
- package/build/cjs/language/translator/JavaTranslateVisitor.cjs +23 -0
- package/build/cjs/language/translator/JavaTranslateVisitor.d.cts +3 -0
- package/build/cjs/language/translator/JavascriptTranslateVisitor.cjs +11 -0
- package/build/cjs/language/translator/JavascriptTranslateVisitor.d.cts +3 -0
- package/build/cjs/language/translator/PythonTranslateVisitor.cjs +39 -3
- package/build/cjs/language/translator/PythonTranslateVisitor.d.cts +3 -0
- package/build/cjs/language/translator/TranslateVisitor.cjs +9 -0
- package/build/cjs/language/translator/TranslateVisitor.d.cts +3 -0
- package/build/cjs/process/anonymous-traversal.cjs +5 -1
- package/build/cjs/process/graph-traversal.cjs +139 -8
- package/build/cjs/process/graph-traversal.d.cts +84 -3
- package/build/cjs/process/gremlin-lang.cjs +119 -7
- package/build/cjs/process/gremlin-lang.d.cts +6 -1
- package/build/cjs/process/gvalue.cjs +42 -0
- package/build/cjs/process/gvalue.d.cts +7 -0
- package/build/cjs/process/transaction.cjs +125 -23
- package/build/cjs/process/transaction.d.cts +50 -14
- package/build/cjs/process/traversal.cjs +105 -48
- package/build/cjs/process/traversal.d.cts +36 -10
- package/build/cjs/structure/PDTRegistry.cjs +116 -0
- package/build/cjs/structure/PDTRegistry.d.cts +34 -0
- package/build/cjs/structure/graph.cjs +351 -8
- package/build/cjs/structure/graph.d.cts +122 -3
- package/build/cjs/structure/io/binary/GraphBinary.cjs +68 -39
- package/build/cjs/structure/io/binary/GraphBinary.d.cts +15 -1
- package/build/cjs/structure/io/binary/internals/AnySerializer.cjs +34 -17
- package/build/cjs/structure/io/binary/internals/AnySerializer.d.cts +12 -2
- package/build/cjs/structure/io/binary/internals/ArraySerializer.cjs +41 -72
- package/build/cjs/structure/io/binary/internals/ArraySerializer.d.cts +14 -7
- package/build/cjs/structure/io/binary/internals/BigIntegerSerializer.cjs +34 -54
- package/build/cjs/structure/io/binary/internals/BigIntegerSerializer.d.cts +12 -7
- package/build/cjs/structure/io/binary/internals/BinarySerializer.cjs +31 -51
- package/build/cjs/structure/io/binary/internals/BinarySerializer.d.cts +12 -4
- package/build/cjs/structure/io/binary/internals/BooleanSerializer.cjs +28 -42
- package/build/cjs/structure/io/binary/internals/BooleanSerializer.d.cts +12 -4
- package/build/cjs/structure/io/binary/internals/ByteSerializer.cjs +24 -38
- package/build/cjs/structure/io/binary/internals/ByteSerializer.d.cts +12 -4
- package/build/cjs/structure/io/binary/internals/CompositePDTSerializer.cjs +81 -0
- package/build/cjs/structure/io/binary/internals/CompositePDTSerializer.d.cts +10 -0
- package/build/cjs/structure/io/binary/internals/DateTimeSerializer.cjs +52 -69
- package/build/cjs/structure/io/binary/internals/DateTimeSerializer.d.cts +12 -7
- package/build/cjs/structure/io/binary/internals/DoubleSerializer.cjs +24 -38
- package/build/cjs/structure/io/binary/internals/DoubleSerializer.d.cts +12 -4
- package/build/cjs/structure/io/binary/internals/EdgeSerializer.cjs +69 -124
- package/build/cjs/structure/io/binary/internals/EdgeSerializer.d.cts +14 -12
- package/build/cjs/structure/io/binary/internals/EnumSerializer.cjs +47 -59
- package/build/cjs/structure/io/binary/internals/EnumSerializer.d.cts +19 -4
- package/build/cjs/structure/io/binary/internals/FloatSerializer.cjs +24 -38
- package/build/cjs/structure/io/binary/internals/FloatSerializer.d.cts +12 -4
- package/build/cjs/structure/io/binary/internals/GraphBinaryReader.cjs +111 -37
- package/build/cjs/structure/io/binary/internals/GraphBinaryReader.d.cts +26 -2
- package/build/cjs/structure/io/binary/internals/GraphBinaryWriter.cjs +6 -6
- package/build/cjs/structure/io/binary/internals/GraphSerializer.cjs +184 -0
- package/build/cjs/structure/io/binary/internals/GraphSerializer.d.cts +22 -0
- package/build/cjs/structure/io/binary/internals/IntSerializer.cjs +33 -38
- package/build/cjs/structure/io/binary/internals/IntSerializer.d.cts +19 -4
- package/build/cjs/structure/io/binary/internals/LongSerializer.cjs +29 -42
- package/build/cjs/structure/io/binary/internals/LongSerializer.d.cts +13 -4
- package/build/cjs/structure/io/binary/internals/MapSerializer.cjs +36 -70
- package/build/cjs/structure/io/binary/internals/MapSerializer.d.cts +14 -7
- package/build/cjs/structure/io/binary/internals/MarkerSerializer.cjs +30 -33
- package/build/cjs/structure/io/binary/internals/MarkerSerializer.d.cts +13 -4
- package/build/cjs/structure/io/binary/internals/NumberSerializationStrategy.cjs +28 -2
- package/build/cjs/structure/io/binary/internals/NumberSerializationStrategy.d.cts +0 -3
- package/build/cjs/structure/io/binary/internals/PathSerializer.cjs +30 -55
- package/build/cjs/structure/io/binary/internals/PathSerializer.d.cts +14 -7
- package/build/cjs/structure/io/binary/internals/PrimitivePDTSerializer.cjs +80 -0
- package/build/cjs/structure/io/binary/internals/PrimitivePDTSerializer.d.cts +10 -0
- package/build/cjs/structure/io/binary/internals/PropertySerializer.cjs +32 -69
- package/build/cjs/structure/io/binary/internals/PropertySerializer.d.cts +14 -7
- package/build/cjs/structure/io/binary/internals/SetSerializer.cjs +39 -73
- package/build/cjs/structure/io/binary/internals/SetSerializer.d.cts +14 -7
- package/build/cjs/structure/io/binary/internals/ShortSerializer.cjs +24 -38
- package/build/cjs/structure/io/binary/internals/ShortSerializer.d.cts +12 -4
- package/build/cjs/structure/io/binary/internals/StreamReader.cjs +184 -0
- package/build/cjs/structure/io/binary/internals/StreamReader.d.cts +69 -0
- package/build/cjs/structure/io/binary/internals/StringSerializer.cjs +34 -53
- package/build/cjs/structure/io/binary/internals/StringSerializer.d.cts +14 -4
- package/build/cjs/structure/io/binary/internals/StubSerializer.cjs +2 -1
- package/build/cjs/structure/io/binary/internals/StubSerializer.d.cts +1 -1
- package/build/cjs/structure/io/binary/internals/TreeSerializer.cjs +139 -0
- package/build/cjs/structure/io/binary/internals/TreeSerializer.d.cts +54 -0
- package/build/cjs/structure/io/binary/internals/UnspecifiedNullSerializer.cjs +8 -31
- package/build/cjs/structure/io/binary/internals/UnspecifiedNullSerializer.d.cts +6 -4
- package/build/cjs/structure/io/binary/internals/UuidSerializer.cjs +33 -49
- package/build/cjs/structure/io/binary/internals/UuidSerializer.d.cts +12 -7
- package/build/cjs/structure/io/binary/internals/VertexPropertySerializer.cjs +37 -95
- package/build/cjs/structure/io/binary/internals/VertexPropertySerializer.d.cts +14 -7
- package/build/cjs/structure/io/binary/internals/VertexSerializer.cjs +41 -68
- package/build/cjs/structure/io/binary/internals/VertexSerializer.d.cts +14 -9
- package/build/cjs/utils.cjs +157 -40
- package/build/cjs/utils.d.cts +62 -4
- package/build/esm/driver/auth.d.ts +1 -1
- package/build/esm/driver/auth.js +11 -4
- package/build/esm/driver/client.d.ts +30 -27
- package/build/esm/driver/client.js +82 -38
- package/build/esm/driver/connection.d.ts +69 -26
- package/build/esm/driver/connection.js +172 -60
- package/build/esm/driver/dispatcher.browser.d.ts +35 -0
- package/build/esm/driver/dispatcher.browser.js +53 -0
- package/build/esm/driver/dispatcher.d.ts +48 -0
- package/build/esm/driver/dispatcher.js +94 -0
- package/build/esm/driver/driver-remote-connection.d.ts +10 -4
- package/build/esm/driver/driver-remote-connection.js +27 -15
- package/build/esm/driver/http-request.d.ts +28 -0
- package/build/esm/driver/http-request.js +60 -0
- package/build/esm/driver/logger.d.ts +29 -0
- package/build/esm/driver/logger.js +42 -0
- package/build/esm/driver/remote-connection.d.ts +6 -21
- package/build/esm/driver/remote-connection.js +5 -8
- package/build/esm/driver/request-message.d.ts +38 -8
- package/build/esm/driver/request-message.js +107 -21
- package/build/esm/driver/response-error.d.ts +2 -2
- package/build/esm/driver/response-error.js +3 -3
- package/build/esm/index.d.ts +47 -0
- package/build/esm/index.js +21 -0
- package/build/esm/language/grammar/GremlinLexer.d.ts +325 -316
- package/build/esm/language/grammar/GremlinLexer.js +1669 -1615
- package/build/esm/language/grammar/GremlinListener.d.ts +351 -10
- package/build/esm/language/grammar/GremlinListener.js +322 -8
- package/build/esm/language/grammar/GremlinParser.d.ts +998 -619
- package/build/esm/language/grammar/GremlinParser.js +8646 -5778
- package/build/esm/language/translator/AnonymizedTranslateVisitor.d.ts +3 -0
- package/build/esm/language/translator/AnonymizedTranslateVisitor.js +9 -0
- package/build/esm/language/translator/DotNetTranslateVisitor.d.ts +13 -2
- package/build/esm/language/translator/DotNetTranslateVisitor.js +113 -4
- package/build/esm/language/translator/GoTranslateVisitor.d.ts +9 -0
- package/build/esm/language/translator/GoTranslateVisitor.js +82 -0
- package/build/esm/language/translator/GroovyTranslateVisitor.d.ts +3 -0
- package/build/esm/language/translator/GroovyTranslateVisitor.js +23 -0
- package/build/esm/language/translator/JavaTranslateVisitor.d.ts +3 -0
- package/build/esm/language/translator/JavaTranslateVisitor.js +23 -0
- package/build/esm/language/translator/JavascriptTranslateVisitor.d.ts +3 -0
- package/build/esm/language/translator/JavascriptTranslateVisitor.js +11 -0
- package/build/esm/language/translator/PythonTranslateVisitor.d.ts +3 -0
- package/build/esm/language/translator/PythonTranslateVisitor.js +39 -3
- package/build/esm/language/translator/TranslateVisitor.d.ts +3 -0
- package/build/esm/language/translator/TranslateVisitor.js +9 -0
- package/build/esm/process/anonymous-traversal.js +5 -1
- package/build/esm/process/graph-traversal.d.ts +84 -3
- package/build/esm/process/graph-traversal.js +139 -8
- package/build/esm/process/gremlin-lang.d.ts +6 -1
- package/build/esm/process/gremlin-lang.js +121 -9
- package/build/esm/process/gvalue.d.ts +7 -0
- package/build/esm/process/gvalue.js +38 -0
- package/build/esm/process/transaction.d.ts +50 -14
- package/build/esm/process/transaction.js +122 -23
- package/build/esm/process/traversal.d.ts +36 -10
- package/build/esm/process/traversal.js +104 -47
- package/build/esm/structure/PDTRegistry.d.ts +34 -0
- package/build/esm/structure/PDTRegistry.js +112 -0
- package/build/esm/structure/graph.d.ts +122 -3
- package/build/esm/structure/graph.js +347 -7
- package/build/esm/structure/io/binary/GraphBinary.d.ts +15 -1
- package/build/esm/structure/io/binary/GraphBinary.js +66 -38
- package/build/esm/structure/io/binary/internals/AnySerializer.d.ts +12 -2
- package/build/esm/structure/io/binary/internals/AnySerializer.js +34 -17
- package/build/esm/structure/io/binary/internals/ArraySerializer.d.ts +14 -7
- package/build/esm/structure/io/binary/internals/ArraySerializer.js +41 -72
- package/build/esm/structure/io/binary/internals/BigIntegerSerializer.d.ts +12 -7
- package/build/esm/structure/io/binary/internals/BigIntegerSerializer.js +34 -54
- package/build/esm/structure/io/binary/internals/BinarySerializer.d.ts +12 -4
- package/build/esm/structure/io/binary/internals/BinarySerializer.js +31 -51
- package/build/esm/structure/io/binary/internals/BooleanSerializer.d.ts +12 -4
- package/build/esm/structure/io/binary/internals/BooleanSerializer.js +28 -42
- package/build/esm/structure/io/binary/internals/ByteSerializer.d.ts +12 -4
- package/build/esm/structure/io/binary/internals/ByteSerializer.js +24 -38
- package/build/esm/structure/io/binary/internals/CompositePDTSerializer.d.ts +10 -0
- package/build/esm/structure/io/binary/internals/CompositePDTSerializer.js +78 -0
- package/build/esm/structure/io/binary/internals/DateTimeSerializer.d.ts +12 -7
- package/build/esm/structure/io/binary/internals/DateTimeSerializer.js +52 -69
- package/build/esm/structure/io/binary/internals/DoubleSerializer.d.ts +12 -4
- package/build/esm/structure/io/binary/internals/DoubleSerializer.js +24 -38
- package/build/esm/structure/io/binary/internals/EdgeSerializer.d.ts +14 -12
- package/build/esm/structure/io/binary/internals/EdgeSerializer.js +69 -124
- package/build/esm/structure/io/binary/internals/EnumSerializer.d.ts +19 -4
- package/build/esm/structure/io/binary/internals/EnumSerializer.js +47 -59
- package/build/esm/structure/io/binary/internals/FloatSerializer.d.ts +12 -4
- package/build/esm/structure/io/binary/internals/FloatSerializer.js +24 -38
- package/build/esm/structure/io/binary/internals/GraphBinaryReader.d.ts +26 -2
- package/build/esm/structure/io/binary/internals/GraphBinaryReader.js +108 -37
- package/build/esm/structure/io/binary/internals/GraphBinaryWriter.js +6 -6
- package/build/esm/structure/io/binary/internals/GraphSerializer.d.ts +22 -0
- package/build/esm/structure/io/binary/internals/GraphSerializer.js +181 -0
- package/build/esm/structure/io/binary/internals/IntSerializer.d.ts +19 -4
- package/build/esm/structure/io/binary/internals/IntSerializer.js +33 -38
- package/build/esm/structure/io/binary/internals/LongSerializer.d.ts +13 -4
- package/build/esm/structure/io/binary/internals/LongSerializer.js +29 -42
- package/build/esm/structure/io/binary/internals/MapSerializer.d.ts +14 -7
- package/build/esm/structure/io/binary/internals/MapSerializer.js +36 -70
- package/build/esm/structure/io/binary/internals/MarkerSerializer.d.ts +13 -4
- package/build/esm/structure/io/binary/internals/MarkerSerializer.js +29 -33
- package/build/esm/structure/io/binary/internals/NumberSerializationStrategy.d.ts +0 -3
- package/build/esm/structure/io/binary/internals/NumberSerializationStrategy.js +28 -2
- package/build/esm/structure/io/binary/internals/PathSerializer.d.ts +14 -7
- package/build/esm/structure/io/binary/internals/PathSerializer.js +30 -55
- package/build/esm/structure/io/binary/internals/PrimitivePDTSerializer.d.ts +10 -0
- package/build/esm/structure/io/binary/internals/PrimitivePDTSerializer.js +77 -0
- package/build/esm/structure/io/binary/internals/PropertySerializer.d.ts +14 -7
- package/build/esm/structure/io/binary/internals/PropertySerializer.js +32 -69
- package/build/esm/structure/io/binary/internals/SetSerializer.d.ts +14 -7
- package/build/esm/structure/io/binary/internals/SetSerializer.js +39 -73
- package/build/esm/structure/io/binary/internals/ShortSerializer.d.ts +12 -4
- package/build/esm/structure/io/binary/internals/ShortSerializer.js +24 -38
- package/build/esm/structure/io/binary/internals/StreamReader.d.ts +69 -0
- package/build/esm/structure/io/binary/internals/StreamReader.js +181 -0
- package/build/esm/structure/io/binary/internals/StringSerializer.d.ts +14 -4
- package/build/esm/structure/io/binary/internals/StringSerializer.js +34 -53
- package/build/esm/structure/io/binary/internals/StubSerializer.d.ts +1 -1
- package/build/esm/structure/io/binary/internals/StubSerializer.js +2 -1
- package/build/esm/structure/io/binary/internals/TreeSerializer.d.ts +54 -0
- package/build/esm/structure/io/binary/internals/TreeSerializer.js +136 -0
- package/build/esm/structure/io/binary/internals/UnspecifiedNullSerializer.d.ts +6 -4
- package/build/esm/structure/io/binary/internals/UnspecifiedNullSerializer.js +8 -31
- package/build/esm/structure/io/binary/internals/UuidSerializer.d.ts +12 -7
- package/build/esm/structure/io/binary/internals/UuidSerializer.js +33 -49
- package/build/esm/structure/io/binary/internals/VertexPropertySerializer.d.ts +14 -7
- package/build/esm/structure/io/binary/internals/VertexPropertySerializer.js +37 -95
- package/build/esm/structure/io/binary/internals/VertexSerializer.d.ts +14 -9
- package/build/esm/structure/io/binary/internals/VertexSerializer.js +41 -68
- package/build/esm/utils.d.ts +62 -4
- package/build/esm/utils.js +145 -6
- package/package.json +27 -18
|
@@ -3,8 +3,14 @@
|
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
5
|
* An "empty" graph object to server only as a reference.
|
|
6
|
+
*
|
|
7
|
+
* Holds in-memory collections of vertices and edges so that GraphBinary
|
|
8
|
+
* Graph (0x10) deserialization can return a usable data container.
|
|
6
9
|
*/
|
|
7
10
|
export declare class Graph {
|
|
11
|
+
readonly vertices: Map<any, Vertex>;
|
|
12
|
+
readonly edges: Map<any, Edge>;
|
|
13
|
+
constructor();
|
|
8
14
|
toString(): string;
|
|
9
15
|
}
|
|
10
16
|
declare class Element<TLabel extends string = string, TId = any> {
|
|
@@ -20,14 +26,15 @@ declare class Element<TLabel extends string = string, TId = any> {
|
|
|
20
26
|
export declare class Vertex<TLabel extends string = string, TProperties extends Record<string, any> = Record<string, any>, TId = number, TVertexProperties = {
|
|
21
27
|
[P in keyof TProperties]: P extends string ? VertexProperties<P, TProperties[P]> : never;
|
|
22
28
|
}> extends Element<TLabel, TId> {
|
|
23
|
-
|
|
29
|
+
readonly labels: Set<string>;
|
|
30
|
+
constructor(id: TId, label: TLabel | string[], properties?: Property[] | null, labels?: string[]);
|
|
24
31
|
toString(): string;
|
|
25
32
|
}
|
|
26
33
|
export declare class Edge<TOutVertex extends Vertex = Vertex, TLabel extends string = string, TInVertex extends Vertex = Vertex, TProperties extends Record<string, any> = Record<string, any>, TId = number> extends Element<TLabel, TId> {
|
|
27
34
|
readonly outV: TOutVertex;
|
|
28
|
-
readonly label: TLabel;
|
|
29
35
|
readonly inV: TInVertex;
|
|
30
|
-
|
|
36
|
+
readonly labels: Set<string>;
|
|
37
|
+
constructor(id: TId, outV: TOutVertex, label: TLabel | string[], inV: TInVertex, properties?: Property[] | null, labels?: string[]);
|
|
31
38
|
toString(): string;
|
|
32
39
|
}
|
|
33
40
|
export declare class VertexProperty<TLabel extends string = string, TValue = any, TProperties extends Record<string, any> | null | undefined = Record<string, any>, TId = any> extends Element<TLabel, TId> {
|
|
@@ -44,6 +51,100 @@ export declare class Property<T = any> {
|
|
|
44
51
|
toString(): string;
|
|
45
52
|
equals(other: any): boolean;
|
|
46
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* A tree data structure with a tree-shaped public API.
|
|
56
|
+
*
|
|
57
|
+
* Children are kept in a private, ordered array of {key, value} entries (not a
|
|
58
|
+
* native {@link Map}, whose reference-identity keys would break value-equality).
|
|
59
|
+
* Access is only through the read API; lookups use {@link treeKeysEqual}, which
|
|
60
|
+
* compares keys by value and treats null/undefined as a distinct key.
|
|
61
|
+
*/
|
|
62
|
+
export declare class Tree {
|
|
63
|
+
#private;
|
|
64
|
+
constructor(...rootValues: any[]);
|
|
65
|
+
/**
|
|
66
|
+
* Locates the entry whose key is structurally equal to the given key.
|
|
67
|
+
* @returns the matching entry, or undefined if none exists.
|
|
68
|
+
*/
|
|
69
|
+
private _findEntry;
|
|
70
|
+
/**
|
|
71
|
+
* Returns the keys at the root of this tree.
|
|
72
|
+
*/
|
|
73
|
+
rootNodes(): any[];
|
|
74
|
+
/**
|
|
75
|
+
* Returns the child subtree for the given key.
|
|
76
|
+
* @throws {Error} if no child exists for the given key.
|
|
77
|
+
*/
|
|
78
|
+
childAt(key: any): Tree;
|
|
79
|
+
/**
|
|
80
|
+
* Returns true if the given key is an immediate child of this tree.
|
|
81
|
+
*/
|
|
82
|
+
hasChild(key: any): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Returns true if the given value appears as a key anywhere in this tree (recursive).
|
|
85
|
+
*/
|
|
86
|
+
contains(value: any): boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Recursively searches the tree for the first subtree rooted at key.
|
|
89
|
+
* @returns the matching subtree, or undefined if absent.
|
|
90
|
+
*/
|
|
91
|
+
findSubtree(key: any): Tree | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Returns the existing child for key, or inserts and returns a new empty Tree if absent.
|
|
94
|
+
*/
|
|
95
|
+
getOrCreateChild(key: any): Tree;
|
|
96
|
+
/**
|
|
97
|
+
* Returns true if this tree has no children. An empty tree is considered a leaf.
|
|
98
|
+
*/
|
|
99
|
+
isLeaf(): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Returns the total number of nodes (keys) in the tree, counted recursively.
|
|
102
|
+
*/
|
|
103
|
+
nodeCount(): number;
|
|
104
|
+
/**
|
|
105
|
+
* Returns the keys at the given depth. Depth 0 returns the root keys.
|
|
106
|
+
* Negative depths or depths beyond the tree's height return an empty array.
|
|
107
|
+
*/
|
|
108
|
+
getNodesAtDepth(depth: number): any[];
|
|
109
|
+
/**
|
|
110
|
+
* Returns the trees at the given depth. Depth 0 returns a singleton list containing this tree.
|
|
111
|
+
* Negative depths or depths beyond the tree's height return an empty array.
|
|
112
|
+
*/
|
|
113
|
+
getTreesAtDepth(depth: number): Tree[];
|
|
114
|
+
/**
|
|
115
|
+
* Returns all keys whose subtrees are leaves.
|
|
116
|
+
*/
|
|
117
|
+
getLeafNodes(): any[];
|
|
118
|
+
private _collectLeafKeys;
|
|
119
|
+
/**
|
|
120
|
+
* Returns single-key trees representing each leaf key in this tree, preserving the original
|
|
121
|
+
* key-to-empty-subtree mapping.
|
|
122
|
+
*/
|
|
123
|
+
getLeafTrees(): Tree[];
|
|
124
|
+
private _collectLeafTrees;
|
|
125
|
+
/**
|
|
126
|
+
* Recursively merges other into this tree. For overlapping keys, child subtrees are merged in turn.
|
|
127
|
+
* For keys present only in other, the corresponding subtree reference is adopted directly.
|
|
128
|
+
*/
|
|
129
|
+
addTree(other: Tree): void;
|
|
130
|
+
/**
|
|
131
|
+
* Splits this tree into one tree per root key. If the tree has a single root, returns a singleton list
|
|
132
|
+
* containing this tree.
|
|
133
|
+
*/
|
|
134
|
+
splitParents(): Tree[];
|
|
135
|
+
/**
|
|
136
|
+
* Produces a formatted string representation of the tree structure using a |-- ASCII style,
|
|
137
|
+
* Uses a |-- ASCII style with a 3-space indent per level and no trailing newline.
|
|
138
|
+
*/
|
|
139
|
+
prettyPrint(): string;
|
|
140
|
+
private _prettyPrint;
|
|
141
|
+
/**
|
|
142
|
+
* Structural recursive equality. Order across siblings is irrelevant; two trees are equal if they have the
|
|
143
|
+
* same set of keys and each key's subtree is recursively equal.
|
|
144
|
+
*/
|
|
145
|
+
equals(other: any): boolean;
|
|
146
|
+
toString(): string;
|
|
147
|
+
}
|
|
47
148
|
/**
|
|
48
149
|
* Represents a walk through a graph as defined by a traversal.
|
|
49
150
|
*/
|
|
@@ -54,4 +155,22 @@ export declare class Path {
|
|
|
54
155
|
toString(): string;
|
|
55
156
|
equals(other: any): any;
|
|
56
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Represents a composite Provider Defined Type (PDT).
|
|
160
|
+
*/
|
|
161
|
+
export declare class CompositePDT {
|
|
162
|
+
readonly name: string;
|
|
163
|
+
readonly fields: Readonly<Record<string, any>>;
|
|
164
|
+
constructor(name: string, fields?: Record<string, any>);
|
|
165
|
+
toString(): string;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Represents a primitive Provider Defined Type (PDT).
|
|
169
|
+
*/
|
|
170
|
+
export declare class PrimitivePDT {
|
|
171
|
+
readonly name: string;
|
|
172
|
+
readonly value: string;
|
|
173
|
+
constructor(name: string, value: string);
|
|
174
|
+
toString(): string;
|
|
175
|
+
}
|
|
57
176
|
export {};
|
|
@@ -54,7 +54,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
54
54
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
55
55
|
};
|
|
56
56
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
57
|
-
exports.graphBinaryWriter = exports.graphBinaryReader = exports.anySerializer = exports.numberSerializationStrategy = exports.enumSerializer = exports.unspecifiedNullSerializer = exports.markerSerializer = exports.booleanSerializer = exports.shortSerializer = exports.binarySerializer = exports.byteSerializer = exports.bigIntegerSerializer = exports.vertexPropertySerializer = exports.vertexSerializer = exports.propertySerializer = exports.pathSerializer = exports.edgeSerializer = exports.uuidSerializer = exports.setSerializer = exports.mapSerializer = exports.listSerializer = exports.floatSerializer = exports.doubleSerializer = exports.dateTimeSerializer = exports.stringSerializer = exports.longSerializer = exports.intSerializer = exports.serializers = exports.DataType = void 0;
|
|
57
|
+
exports.graphBinaryWriter = exports.graphBinaryReader = exports.anySerializer = exports.numberSerializationStrategy = exports.treeSerializer = exports.primitivePDTSerializer = exports.compositePDTSerializer = exports.enumSerializer = exports.unspecifiedNullSerializer = exports.markerSerializer = exports.booleanSerializer = exports.shortSerializer = exports.binarySerializer = exports.byteSerializer = exports.bigIntegerSerializer = exports.graphSerializer = exports.vertexPropertySerializer = exports.vertexSerializer = exports.propertySerializer = exports.pathSerializer = exports.edgeSerializer = exports.uuidSerializer = exports.setSerializer = exports.mapSerializer = exports.listSerializer = exports.floatSerializer = exports.doubleSerializer = exports.dateTimeSerializer = exports.stringSerializer = exports.longSerializer = exports.intSerializer = exports.serializers = exports.DataType = void 0;
|
|
58
|
+
exports.createPreciseReader = createPreciseReader;
|
|
58
59
|
/**
|
|
59
60
|
* GraphBinary 4.0 support implementation.
|
|
60
61
|
*
|
|
@@ -68,7 +69,6 @@ exports.graphBinaryWriter = exports.graphBinaryReader = exports.anySerializer =
|
|
|
68
69
|
* TODO: it has the following open topics:
|
|
69
70
|
* Core Data Types support:
|
|
70
71
|
* - [] 0x22: BigDecimal
|
|
71
|
-
* - [] 0x2b: Tree
|
|
72
72
|
* Extended Types support:
|
|
73
73
|
* - [] 0x80: Char
|
|
74
74
|
* - [] 0x81: Duration
|
|
@@ -90,9 +90,11 @@ const SetSerializer_js_1 = __importDefault(require("./internals/SetSerializer.cj
|
|
|
90
90
|
const UuidSerializer_js_1 = __importDefault(require("./internals/UuidSerializer.cjs"));
|
|
91
91
|
const EdgeSerializer_js_1 = __importDefault(require("./internals/EdgeSerializer.cjs"));
|
|
92
92
|
const PathSerializer_js_1 = __importDefault(require("./internals/PathSerializer.cjs"));
|
|
93
|
+
const TreeSerializer_js_1 = __importDefault(require("./internals/TreeSerializer.cjs"));
|
|
93
94
|
const PropertySerializer_js_1 = __importDefault(require("./internals/PropertySerializer.cjs"));
|
|
94
95
|
const VertexSerializer_js_1 = __importDefault(require("./internals/VertexSerializer.cjs"));
|
|
95
96
|
const VertexPropertySerializer_js_1 = __importDefault(require("./internals/VertexPropertySerializer.cjs"));
|
|
97
|
+
const GraphSerializer_js_1 = __importDefault(require("./internals/GraphSerializer.cjs"));
|
|
96
98
|
const BigIntegerSerializer_js_1 = __importDefault(require("./internals/BigIntegerSerializer.cjs"));
|
|
97
99
|
const ByteSerializer_js_1 = __importDefault(require("./internals/ByteSerializer.cjs"));
|
|
98
100
|
const BinarySerializer_js_1 = __importDefault(require("./internals/BinarySerializer.cjs"));
|
|
@@ -102,47 +104,74 @@ const MarkerSerializer_js_1 = __importDefault(require("./internals/MarkerSeriali
|
|
|
102
104
|
const UnspecifiedNullSerializer_js_1 = __importDefault(require("./internals/UnspecifiedNullSerializer.cjs"));
|
|
103
105
|
const EnumSerializer_js_1 = __importDefault(require("./internals/EnumSerializer.cjs"));
|
|
104
106
|
const StubSerializer_js_1 = __importDefault(require("./internals/StubSerializer.cjs"));
|
|
107
|
+
const CompositePDTSerializer_js_1 = __importDefault(require("./internals/CompositePDTSerializer.cjs"));
|
|
108
|
+
const PrimitivePDTSerializer_js_1 = __importDefault(require("./internals/PrimitivePDTSerializer.cjs"));
|
|
105
109
|
const NumberSerializationStrategy_js_1 = __importDefault(require("./internals/NumberSerializationStrategy.cjs"));
|
|
106
110
|
const AnySerializer_js_1 = __importDefault(require("./internals/AnySerializer.cjs"));
|
|
107
111
|
const GraphBinaryReader_js_1 = __importDefault(require("./internals/GraphBinaryReader.cjs"));
|
|
108
112
|
const GraphBinaryWriter_js_1 = __importDefault(require("./internals/GraphBinaryWriter.cjs"));
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
ioc
|
|
112
|
-
ioc.
|
|
113
|
-
ioc.
|
|
114
|
-
ioc.
|
|
115
|
-
ioc.
|
|
116
|
-
ioc.
|
|
117
|
-
ioc.
|
|
118
|
-
ioc.
|
|
119
|
-
ioc.
|
|
120
|
-
ioc.
|
|
121
|
-
ioc.
|
|
122
|
-
ioc.
|
|
123
|
-
ioc.
|
|
124
|
-
ioc.
|
|
125
|
-
ioc.
|
|
126
|
-
ioc.
|
|
127
|
-
ioc.
|
|
128
|
-
ioc.
|
|
129
|
-
ioc.
|
|
130
|
-
ioc.
|
|
131
|
-
ioc.
|
|
132
|
-
ioc.
|
|
133
|
-
ioc.
|
|
134
|
-
ioc.
|
|
135
|
-
ioc.
|
|
136
|
-
|
|
137
|
-
new
|
|
138
|
-
new
|
|
139
|
-
new
|
|
140
|
-
new
|
|
141
|
-
ioc.
|
|
142
|
-
ioc.
|
|
143
|
-
ioc.
|
|
144
|
-
ioc.
|
|
113
|
+
const utils_js_1 = require("../../../utils.cjs");
|
|
114
|
+
function createIoc(anySerializerOptions) {
|
|
115
|
+
const ioc = {};
|
|
116
|
+
ioc.DataType = DataType_js_1.default;
|
|
117
|
+
ioc.utils = utils;
|
|
118
|
+
ioc.serializers = {};
|
|
119
|
+
ioc.intSerializer = new IntSerializer_js_1.default(ioc);
|
|
120
|
+
ioc.longSerializer = new LongSerializer_js_1.default(ioc);
|
|
121
|
+
ioc.stringSerializer = new StringSerializer_js_1.default(ioc, ioc.DataType.STRING);
|
|
122
|
+
ioc.dateTimeSerializer = new DateTimeSerializer_js_1.default(ioc);
|
|
123
|
+
ioc.doubleSerializer = new DoubleSerializer_js_1.default(ioc);
|
|
124
|
+
ioc.floatSerializer = new FloatSerializer_js_1.default(ioc);
|
|
125
|
+
ioc.listSerializer = new ArraySerializer_js_1.default(ioc, ioc.DataType.LIST);
|
|
126
|
+
ioc.mapSerializer = new MapSerializer_js_1.default(ioc);
|
|
127
|
+
ioc.setSerializer = new SetSerializer_js_1.default(ioc, ioc.DataType.SET);
|
|
128
|
+
ioc.uuidSerializer = new UuidSerializer_js_1.default(ioc);
|
|
129
|
+
ioc.edgeSerializer = new EdgeSerializer_js_1.default(ioc);
|
|
130
|
+
ioc.pathSerializer = new PathSerializer_js_1.default(ioc);
|
|
131
|
+
ioc.propertySerializer = new PropertySerializer_js_1.default(ioc);
|
|
132
|
+
ioc.vertexSerializer = new VertexSerializer_js_1.default(ioc);
|
|
133
|
+
ioc.vertexPropertySerializer = new VertexPropertySerializer_js_1.default(ioc);
|
|
134
|
+
ioc.graphSerializer = new GraphSerializer_js_1.default(ioc);
|
|
135
|
+
ioc.bigIntegerSerializer = new BigIntegerSerializer_js_1.default(ioc);
|
|
136
|
+
ioc.byteSerializer = new ByteSerializer_js_1.default(ioc);
|
|
137
|
+
ioc.binarySerializer = new BinarySerializer_js_1.default(ioc);
|
|
138
|
+
ioc.shortSerializer = new ShortSerializer_js_1.default(ioc);
|
|
139
|
+
ioc.booleanSerializer = new BooleanSerializer_js_1.default(ioc);
|
|
140
|
+
ioc.markerSerializer = new MarkerSerializer_js_1.default(ioc);
|
|
141
|
+
ioc.unspecifiedNullSerializer = new UnspecifiedNullSerializer_js_1.default(ioc);
|
|
142
|
+
ioc.enumSerializer = new EnumSerializer_js_1.default(ioc);
|
|
143
|
+
ioc.compositePDTSerializer = new CompositePDTSerializer_js_1.default(ioc);
|
|
144
|
+
ioc.primitivePDTSerializer = new PrimitivePDTSerializer_js_1.default(ioc);
|
|
145
|
+
ioc.treeSerializer = new TreeSerializer_js_1.default(ioc);
|
|
146
|
+
ioc.pdtRegistry = null;
|
|
147
|
+
ioc.numberSerializationStrategy = new NumberSerializationStrategy_js_1.default(ioc);
|
|
148
|
+
ioc.anySerializer = new AnySerializer_js_1.default(ioc, anySerializerOptions);
|
|
149
|
+
ioc.graphBinaryReader = new GraphBinaryReader_js_1.default(ioc);
|
|
150
|
+
ioc.graphBinaryWriter = new GraphBinaryWriter_js_1.default(ioc);
|
|
151
|
+
return ioc;
|
|
152
|
+
}
|
|
153
|
+
function createPreciseReader() {
|
|
154
|
+
const wrapperMap = new Map([
|
|
155
|
+
[DataType_js_1.default.INT, utils_js_1.Int],
|
|
156
|
+
[DataType_js_1.default.LONG, utils_js_1.Long],
|
|
157
|
+
[DataType_js_1.default.FLOAT, utils_js_1.Float],
|
|
158
|
+
[DataType_js_1.default.DOUBLE, utils_js_1.Double],
|
|
159
|
+
[DataType_js_1.default.SHORT, utils_js_1.Short],
|
|
160
|
+
[DataType_js_1.default.BYTE, utils_js_1.Byte],
|
|
161
|
+
]);
|
|
162
|
+
const preciseIoc = createIoc({
|
|
163
|
+
postDeserialize(result, typeCode) {
|
|
164
|
+
const Wrapper = wrapperMap.get(typeCode);
|
|
165
|
+
if (Wrapper && result !== null && result !== undefined) {
|
|
166
|
+
return new Wrapper(result);
|
|
167
|
+
}
|
|
168
|
+
return result;
|
|
169
|
+
},
|
|
170
|
+
});
|
|
171
|
+
return preciseIoc.graphBinaryReader;
|
|
172
|
+
}
|
|
173
|
+
const ioc = createIoc();
|
|
145
174
|
var DataType_js_2 = require("./internals/DataType.cjs");
|
|
146
175
|
Object.defineProperty(exports, "DataType", { enumerable: true, get: function () { return __importDefault(DataType_js_2).default; } });
|
|
147
|
-
exports.serializers = ioc.serializers, exports.intSerializer = ioc.intSerializer, exports.longSerializer = ioc.longSerializer, exports.stringSerializer = ioc.stringSerializer, exports.dateTimeSerializer = ioc.dateTimeSerializer, exports.doubleSerializer = ioc.doubleSerializer, exports.floatSerializer = ioc.floatSerializer, exports.listSerializer = ioc.listSerializer, exports.mapSerializer = ioc.mapSerializer, exports.setSerializer = ioc.setSerializer, exports.uuidSerializer = ioc.uuidSerializer, exports.edgeSerializer = ioc.edgeSerializer, exports.pathSerializer = ioc.pathSerializer, exports.propertySerializer = ioc.propertySerializer, exports.vertexSerializer = ioc.vertexSerializer, exports.vertexPropertySerializer = ioc.vertexPropertySerializer, exports.bigIntegerSerializer = ioc.bigIntegerSerializer, exports.byteSerializer = ioc.byteSerializer, exports.binarySerializer = ioc.binarySerializer, exports.shortSerializer = ioc.shortSerializer, exports.booleanSerializer = ioc.booleanSerializer, exports.markerSerializer = ioc.markerSerializer, exports.unspecifiedNullSerializer = ioc.unspecifiedNullSerializer, exports.enumSerializer = ioc.enumSerializer, exports.numberSerializationStrategy = ioc.numberSerializationStrategy, exports.anySerializer = ioc.anySerializer, exports.graphBinaryReader = ioc.graphBinaryReader, exports.graphBinaryWriter = ioc.graphBinaryWriter;
|
|
176
|
+
exports.serializers = ioc.serializers, exports.intSerializer = ioc.intSerializer, exports.longSerializer = ioc.longSerializer, exports.stringSerializer = ioc.stringSerializer, exports.dateTimeSerializer = ioc.dateTimeSerializer, exports.doubleSerializer = ioc.doubleSerializer, exports.floatSerializer = ioc.floatSerializer, exports.listSerializer = ioc.listSerializer, exports.mapSerializer = ioc.mapSerializer, exports.setSerializer = ioc.setSerializer, exports.uuidSerializer = ioc.uuidSerializer, exports.edgeSerializer = ioc.edgeSerializer, exports.pathSerializer = ioc.pathSerializer, exports.propertySerializer = ioc.propertySerializer, exports.vertexSerializer = ioc.vertexSerializer, exports.vertexPropertySerializer = ioc.vertexPropertySerializer, exports.graphSerializer = ioc.graphSerializer, exports.bigIntegerSerializer = ioc.bigIntegerSerializer, exports.byteSerializer = ioc.byteSerializer, exports.binarySerializer = ioc.binarySerializer, exports.shortSerializer = ioc.shortSerializer, exports.booleanSerializer = ioc.booleanSerializer, exports.markerSerializer = ioc.markerSerializer, exports.unspecifiedNullSerializer = ioc.unspecifiedNullSerializer, exports.enumSerializer = ioc.enumSerializer, exports.compositePDTSerializer = ioc.compositePDTSerializer, exports.primitivePDTSerializer = ioc.primitivePDTSerializer, exports.treeSerializer = ioc.treeSerializer, exports.numberSerializationStrategy = ioc.numberSerializationStrategy, exports.anySerializer = ioc.anySerializer, exports.graphBinaryReader = ioc.graphBinaryReader, exports.graphBinaryWriter = ioc.graphBinaryWriter;
|
|
148
177
|
exports.default = ioc;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export function createPreciseReader(): GraphBinaryReader;
|
|
1
2
|
export { default as DataType } from "./internals/DataType.cjs";
|
|
2
3
|
export const serializers: {};
|
|
3
4
|
export const intSerializer: IntSerializer;
|
|
@@ -15,6 +16,7 @@ export const pathSerializer: PathSerializer;
|
|
|
15
16
|
export const propertySerializer: PropertySerializer;
|
|
16
17
|
export const vertexSerializer: VertexSerializer;
|
|
17
18
|
export const vertexPropertySerializer: VertexPropertySerializer;
|
|
19
|
+
export const graphSerializer: GraphSerializer;
|
|
18
20
|
export const bigIntegerSerializer: BigIntegerSerializer;
|
|
19
21
|
export const byteSerializer: ByteSerializer;
|
|
20
22
|
export const binarySerializer: BinarySerializer;
|
|
@@ -23,11 +25,15 @@ export const booleanSerializer: BooleanSerializer;
|
|
|
23
25
|
export const markerSerializer: MarkerSerializer;
|
|
24
26
|
export const unspecifiedNullSerializer: UnspecifiedNullSerializer;
|
|
25
27
|
export const enumSerializer: EnumSerializer;
|
|
28
|
+
export const compositePDTSerializer: CompositePDTSerializer;
|
|
29
|
+
export const primitivePDTSerializer: PrimitivePDTSerializer;
|
|
30
|
+
export const treeSerializer: TreeSerializer;
|
|
26
31
|
export const numberSerializationStrategy: NumberSerializationStrategy;
|
|
27
32
|
export const anySerializer: AnySerializer;
|
|
28
33
|
export const graphBinaryReader: GraphBinaryReader;
|
|
29
34
|
export const graphBinaryWriter: GraphBinaryWriter;
|
|
30
35
|
export default ioc;
|
|
36
|
+
import GraphBinaryReader from './internals/GraphBinaryReader.cjs';
|
|
31
37
|
import IntSerializer from './internals/IntSerializer.cjs';
|
|
32
38
|
import LongSerializer from './internals/LongSerializer.cjs';
|
|
33
39
|
import StringSerializer from './internals/StringSerializer.cjs';
|
|
@@ -43,6 +49,7 @@ import PathSerializer from './internals/PathSerializer.cjs';
|
|
|
43
49
|
import PropertySerializer from './internals/PropertySerializer.cjs';
|
|
44
50
|
import VertexSerializer from './internals/VertexSerializer.cjs';
|
|
45
51
|
import VertexPropertySerializer from './internals/VertexPropertySerializer.cjs';
|
|
52
|
+
import GraphSerializer from './internals/GraphSerializer.cjs';
|
|
46
53
|
import BigIntegerSerializer from './internals/BigIntegerSerializer.cjs';
|
|
47
54
|
import ByteSerializer from './internals/ByteSerializer.cjs';
|
|
48
55
|
import BinarySerializer from './internals/BinarySerializer.cjs';
|
|
@@ -51,9 +58,11 @@ import BooleanSerializer from './internals/BooleanSerializer.cjs';
|
|
|
51
58
|
import MarkerSerializer from './internals/MarkerSerializer.cjs';
|
|
52
59
|
import UnspecifiedNullSerializer from './internals/UnspecifiedNullSerializer.cjs';
|
|
53
60
|
import EnumSerializer from './internals/EnumSerializer.cjs';
|
|
61
|
+
import CompositePDTSerializer from './internals/CompositePDTSerializer.cjs';
|
|
62
|
+
import PrimitivePDTSerializer from './internals/PrimitivePDTSerializer.cjs';
|
|
63
|
+
import TreeSerializer from './internals/TreeSerializer.cjs';
|
|
54
64
|
import NumberSerializationStrategy from './internals/NumberSerializationStrategy.cjs';
|
|
55
65
|
import AnySerializer from './internals/AnySerializer.cjs';
|
|
56
|
-
import GraphBinaryReader from './internals/GraphBinaryReader.cjs';
|
|
57
66
|
import GraphBinaryWriter from './internals/GraphBinaryWriter.cjs';
|
|
58
67
|
declare namespace ioc {
|
|
59
68
|
export { DataType };
|
|
@@ -74,6 +83,7 @@ declare namespace ioc {
|
|
|
74
83
|
export let propertySerializer: PropertySerializer;
|
|
75
84
|
export let vertexSerializer: VertexSerializer;
|
|
76
85
|
export let vertexPropertySerializer: VertexPropertySerializer;
|
|
86
|
+
export let graphSerializer: GraphSerializer;
|
|
77
87
|
export let bigIntegerSerializer: BigIntegerSerializer;
|
|
78
88
|
export let byteSerializer: ByteSerializer;
|
|
79
89
|
export let binarySerializer: BinarySerializer;
|
|
@@ -82,6 +92,10 @@ declare namespace ioc {
|
|
|
82
92
|
export let markerSerializer: MarkerSerializer;
|
|
83
93
|
export let unspecifiedNullSerializer: UnspecifiedNullSerializer;
|
|
84
94
|
export let enumSerializer: EnumSerializer;
|
|
95
|
+
export let compositePDTSerializer: CompositePDTSerializer;
|
|
96
|
+
export let primitivePDTSerializer: PrimitivePDTSerializer;
|
|
97
|
+
export let treeSerializer: TreeSerializer;
|
|
98
|
+
export let pdtRegistry: any;
|
|
85
99
|
export let numberSerializationStrategy: NumberSerializationStrategy;
|
|
86
100
|
export let anySerializer: AnySerializer;
|
|
87
101
|
export let graphBinaryReader: GraphBinaryReader;
|
|
@@ -21,10 +21,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
21
21
|
/**
|
|
22
22
|
* @author Igor Ostapenko
|
|
23
23
|
*/
|
|
24
|
-
const buffer_1 = require("node:buffer");
|
|
25
24
|
class AnySerializer {
|
|
26
|
-
constructor(ioc) {
|
|
25
|
+
constructor(ioc, { postDeserialize } = {}) {
|
|
27
26
|
this.ioc = ioc;
|
|
27
|
+
this._postDeserialize = postDeserialize || null;
|
|
28
28
|
// specifically ordered, the first canBeUsedFor=true wins
|
|
29
29
|
this.serializers = [
|
|
30
30
|
ioc.unspecifiedNullSerializer,
|
|
@@ -39,9 +39,13 @@ class AnySerializer {
|
|
|
39
39
|
ioc.propertySerializer,
|
|
40
40
|
ioc.vertexSerializer,
|
|
41
41
|
ioc.vertexPropertySerializer,
|
|
42
|
+
ioc.graphSerializer,
|
|
42
43
|
ioc.enumSerializer,
|
|
43
44
|
ioc.stringSerializer,
|
|
44
45
|
ioc.binarySerializer,
|
|
46
|
+
ioc.primitivePDTSerializer,
|
|
47
|
+
ioc.compositePDTSerializer,
|
|
48
|
+
ioc.treeSerializer,
|
|
45
49
|
ioc.mapSerializer,
|
|
46
50
|
];
|
|
47
51
|
}
|
|
@@ -56,25 +60,38 @@ class AnySerializer {
|
|
|
56
60
|
serialize(item, fullyQualifiedFormat = true) {
|
|
57
61
|
return this.getSerializerCanBeUsedFor(item).serialize(item, fullyQualifiedFormat);
|
|
58
62
|
}
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Async deserialization from a StreamReader.
|
|
65
|
+
* Reads type_code + value_flag, then dispatches to the appropriate serializer's deserializeValue().
|
|
66
|
+
* @param {StreamReader} reader
|
|
67
|
+
* @returns {Promise<any>}
|
|
68
|
+
*/
|
|
69
|
+
async deserialize(reader) {
|
|
70
|
+
const pos = reader.position;
|
|
71
|
+
const type_code = await reader.readUInt8();
|
|
72
|
+
const serializer = this.ioc.serializers[type_code];
|
|
73
|
+
if (!serializer) {
|
|
74
|
+
throw new Error(`AnySerializer: unknown {type_code}=0x${type_code.toString(16)} at position ${pos}`);
|
|
75
|
+
}
|
|
76
|
+
const value_flag = await reader.readUInt8();
|
|
77
|
+
if (value_flag === 0x01) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
if (value_flag !== 0x00 && value_flag !== 0x02) {
|
|
81
|
+
throw new Error(`AnySerializer: unexpected {value_flag}=0x${value_flag.toString(16)} at position ${pos}`);
|
|
82
|
+
}
|
|
83
|
+
let result;
|
|
61
84
|
try {
|
|
62
|
-
|
|
63
|
-
throw new Error('buffer is missing');
|
|
64
|
-
}
|
|
65
|
-
if (buffer.length < 1) {
|
|
66
|
-
throw new Error('buffer is empty');
|
|
67
|
-
}
|
|
68
|
-
const type_code = buffer.readUInt8();
|
|
69
|
-
const serializer = this.ioc.serializers[type_code];
|
|
70
|
-
if (!serializer) {
|
|
71
|
-
throw new Error('unknown {type_code}');
|
|
72
|
-
}
|
|
73
|
-
return serializer.deserialize(buffer);
|
|
85
|
+
result = await serializer.deserializeValue(reader, value_flag, type_code);
|
|
74
86
|
}
|
|
75
87
|
catch (err) {
|
|
76
|
-
|
|
88
|
+
err.message = `${serializer.constructor.name}.deserializeValue() at position ${pos}: ${err.message}`;
|
|
89
|
+
throw err;
|
|
90
|
+
}
|
|
91
|
+
if (this._postDeserialize) {
|
|
92
|
+
return this._postDeserialize(result, type_code);
|
|
77
93
|
}
|
|
94
|
+
return result;
|
|
78
95
|
}
|
|
79
96
|
}
|
|
80
97
|
exports.default = AnySerializer;
|
|
@@ -1,8 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Igor Ostapenko
|
|
3
|
+
*/
|
|
1
4
|
export default class AnySerializer {
|
|
2
|
-
constructor(ioc: any);
|
|
5
|
+
constructor(ioc: any, { postDeserialize }?: {});
|
|
3
6
|
ioc: any;
|
|
7
|
+
_postDeserialize: any;
|
|
4
8
|
serializers: any[];
|
|
5
9
|
getSerializerCanBeUsedFor(item: any): any;
|
|
6
10
|
serialize(item: any, fullyQualifiedFormat?: boolean): any;
|
|
7
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Async deserialization from a StreamReader.
|
|
13
|
+
* Reads type_code + value_flag, then dispatches to the appropriate serializer's deserializeValue().
|
|
14
|
+
* @param {StreamReader} reader
|
|
15
|
+
* @returns {Promise<any>}
|
|
16
|
+
*/
|
|
17
|
+
deserialize(reader: StreamReader): Promise<any>;
|
|
8
18
|
}
|
|
@@ -57,83 +57,52 @@ class ArraySerializer {
|
|
|
57
57
|
}
|
|
58
58
|
return buffer_1.Buffer.concat(bufs);
|
|
59
59
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
throw new Error('{value_flag} is missing');
|
|
80
|
-
}
|
|
81
|
-
const value_flag = cursor.readUInt8();
|
|
82
|
-
len++;
|
|
83
|
-
if (value_flag === 1) {
|
|
84
|
-
return { v: null, len };
|
|
85
|
-
}
|
|
86
|
-
if (value_flag !== 0 && value_flag !== 2) {
|
|
87
|
-
throw new Error('unexpected {value_flag}');
|
|
88
|
-
}
|
|
89
|
-
isBulked = value_flag === 2;
|
|
90
|
-
cursor = cursor.slice(1);
|
|
91
|
-
}
|
|
92
|
-
let length, length_len;
|
|
93
|
-
try {
|
|
94
|
-
({ v: length, len: length_len } = this.ioc.intSerializer.deserialize(cursor, false));
|
|
95
|
-
len += length_len;
|
|
96
|
-
}
|
|
97
|
-
catch (err) {
|
|
98
|
-
err.message = '{length}: ' + err.message;
|
|
99
|
-
throw err;
|
|
100
|
-
}
|
|
101
|
-
if (length < 0) {
|
|
102
|
-
throw new Error('{length} is less than zero');
|
|
103
|
-
}
|
|
104
|
-
cursor = cursor.slice(length_len);
|
|
105
|
-
const v = [];
|
|
106
|
-
for (let i = 0; i < length; i++) {
|
|
107
|
-
let value, value_len;
|
|
108
|
-
try {
|
|
109
|
-
({ v: value, len: value_len } = this.ioc.anySerializer.deserialize(cursor));
|
|
110
|
-
len += value_len;
|
|
111
|
-
}
|
|
112
|
-
catch (err) {
|
|
113
|
-
err.message = `{item_${i}}: ` + err.message;
|
|
114
|
-
throw err;
|
|
115
|
-
}
|
|
116
|
-
cursor = cursor.slice(value_len);
|
|
117
|
-
if (isBulked) {
|
|
118
|
-
if (cursor.length < 8) {
|
|
119
|
-
throw new Error(`{item_${i}}: bulk count is missing`);
|
|
120
|
-
}
|
|
121
|
-
const bulkCount = cursor.readBigInt64BE();
|
|
122
|
-
len += 8;
|
|
123
|
-
cursor = cursor.slice(8);
|
|
124
|
-
for (let j = 0n; j < bulkCount; j++) {
|
|
125
|
-
v.push(value);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
60
|
+
/**
|
|
61
|
+
* Async deserialization of array value bytes from a StreamReader.
|
|
62
|
+
* @param {StreamReader} reader
|
|
63
|
+
* @param {number} valueFlag - 0x00 for normal, 0x02 for bulked
|
|
64
|
+
* @param {number} typeCode
|
|
65
|
+
* @returns {Promise<Array>}
|
|
66
|
+
*/
|
|
67
|
+
async deserializeValue(reader, valueFlag, typeCode) {
|
|
68
|
+
const isBulked = valueFlag === 0x02;
|
|
69
|
+
const length = await this.ioc.intSerializer.deserializeBare(reader);
|
|
70
|
+
if (length < 0) {
|
|
71
|
+
throw new Error(`ArraySerializer: {length}=${length} is less than zero`);
|
|
72
|
+
}
|
|
73
|
+
const v = [];
|
|
74
|
+
for (let i = 0; i < length; i++) {
|
|
75
|
+
const value = await this.ioc.anySerializer.deserialize(reader);
|
|
76
|
+
if (isBulked) {
|
|
77
|
+
const bulkCount = await reader.readBigInt64BE();
|
|
78
|
+
for (let j = 0n; j < bulkCount; j++) {
|
|
129
79
|
v.push(value);
|
|
130
80
|
}
|
|
131
81
|
}
|
|
132
|
-
|
|
82
|
+
else {
|
|
83
|
+
v.push(value);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return v;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Async fully-qualified deserialization from a StreamReader.
|
|
90
|
+
* @param {StreamReader} reader
|
|
91
|
+
* @returns {Promise<Array|null>}
|
|
92
|
+
*/
|
|
93
|
+
async deserialize(reader) {
|
|
94
|
+
const type_code = await reader.readUInt8();
|
|
95
|
+
if (type_code !== this.ID) {
|
|
96
|
+
throw new Error(`ArraySerializer: unexpected {type_code}=0x${type_code.toString(16)}`);
|
|
97
|
+
}
|
|
98
|
+
const value_flag = await reader.readUInt8();
|
|
99
|
+
if (value_flag === 0x01) {
|
|
100
|
+
return null;
|
|
133
101
|
}
|
|
134
|
-
|
|
135
|
-
throw
|
|
102
|
+
if (value_flag !== 0x00 && value_flag !== 0x02) {
|
|
103
|
+
throw new Error(`ArraySerializer: unexpected {value_flag}=0x${value_flag.toString(16)}`);
|
|
136
104
|
}
|
|
105
|
+
return this.deserializeValue(reader, value_flag, type_code);
|
|
137
106
|
}
|
|
138
107
|
}
|
|
139
108
|
exports.default = ArraySerializer;
|
|
@@ -4,12 +4,19 @@ export default class ArraySerializer {
|
|
|
4
4
|
ID: any;
|
|
5
5
|
canBeUsedFor(value: any): value is any[];
|
|
6
6
|
serialize(item: any, fullyQualifiedFormat?: boolean): Buffer<ArrayBuffer>;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Async deserialization of array value bytes from a StreamReader.
|
|
9
|
+
* @param {StreamReader} reader
|
|
10
|
+
* @param {number} valueFlag - 0x00 for normal, 0x02 for bulked
|
|
11
|
+
* @param {number} typeCode
|
|
12
|
+
* @returns {Promise<Array>}
|
|
13
|
+
*/
|
|
14
|
+
deserializeValue(reader: StreamReader, valueFlag: number, typeCode: number): Promise<any[]>;
|
|
15
|
+
/**
|
|
16
|
+
* Async fully-qualified deserialization from a StreamReader.
|
|
17
|
+
* @param {StreamReader} reader
|
|
18
|
+
* @returns {Promise<Array|null>}
|
|
19
|
+
*/
|
|
20
|
+
deserialize(reader: StreamReader): Promise<any[] | null>;
|
|
14
21
|
}
|
|
15
22
|
import { Buffer } from 'buffer';
|