@opendaw/lib-box 0.0.26 → 0.0.28
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/dist/array.d.ts +5 -3
- package/dist/array.d.ts.map +1 -1
- package/dist/array.js +16 -2
- package/dist/box.d.ts +6 -3
- package/dist/box.d.ts.map +1 -1
- package/dist/box.js +24 -1
- package/dist/editing.d.ts +1 -0
- package/dist/editing.d.ts.map +1 -1
- package/dist/editing.js +10 -0
- package/dist/field.d.ts +5 -2
- package/dist/field.d.ts.map +1 -1
- package/dist/field.js +5 -2
- package/dist/graph.d.ts +2 -1
- package/dist/graph.d.ts.map +1 -1
- package/dist/graph.js +8 -1
- package/dist/object.d.ts +5 -3
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +21 -2
- package/dist/pointer.d.ts +3 -1
- package/dist/pointer.d.ts.map +1 -1
- package/dist/pointer.js +22 -1
- package/dist/primitive.d.ts +9 -1
- package/dist/primitive.d.ts.map +1 -1
- package/dist/primitive.js +48 -1
- package/dist/serializer.js +1 -1
- package/dist/vertex.d.ts +5 -2
- package/dist/vertex.d.ts.map +1 -1
- package/package.json +6 -6
package/dist/array.d.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { Field, FieldConstruct } from "./field";
|
2
2
|
import { UnreferenceableType } from "./pointer";
|
3
|
-
import { DataInput, DataOutput, int, Maybe, Option } from "@opendaw/lib-std";
|
3
|
+
import { DataInput, DataOutput, int, JSONValue, Maybe, Option, Optional } from "@opendaw/lib-std";
|
4
4
|
import { VertexVisitor } from "./vertex";
|
5
5
|
export type ArrayFieldFactory<FIELD extends Field> = (construct: FieldConstruct<UnreferenceableType>) => FIELD;
|
6
6
|
export declare class ArrayField<FIELD extends Field = Field> extends Field<UnreferenceableType, Record<int, FIELD>> {
|
@@ -8,12 +8,14 @@ export declare class ArrayField<FIELD extends Field = Field> extends Field<Unref
|
|
8
8
|
static create<FIELD extends Field>(construct: FieldConstruct<UnreferenceableType>, factory: ArrayFieldFactory<FIELD>, length: int): ArrayField<FIELD>;
|
9
9
|
private constructor();
|
10
10
|
accept<RETURN>(visitor: VertexVisitor<RETURN>): Maybe<RETURN>;
|
11
|
-
fields():
|
11
|
+
fields(): ReadonlyArray<FIELD>;
|
12
|
+
record(): Readonly<Record<string, Field>>;
|
12
13
|
getField(key: keyof Record<int, FIELD>): Record<int, FIELD>[keyof Record<int, FIELD>];
|
13
14
|
optField(key: keyof Record<int, FIELD>): Option<Record<int, FIELD>[keyof Record<int, FIELD>]>;
|
14
15
|
read(input: DataInput): void;
|
15
16
|
write(output: DataOutput): void;
|
16
17
|
size(): int;
|
17
|
-
toJSON():
|
18
|
+
toJSON(): Optional<JSONValue>;
|
19
|
+
fromJSON(values: JSONValue): void;
|
18
20
|
}
|
19
21
|
//# sourceMappingURL=array.d.ts.map
|
package/dist/array.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,cAAc,EAAC,MAAM,SAAS,CAAA;AAC7C,OAAO,EAAC,mBAAmB,EAAC,MAAM,WAAW,CAAA;AAC7C,OAAO,
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,cAAc,EAAC,MAAM,SAAS,CAAA;AAC7C,OAAO,EAAC,mBAAmB,EAAC,MAAM,WAAW,CAAA;AAC7C,OAAO,EAGH,SAAS,EACT,UAAU,EACV,GAAG,EACH,SAAS,EACT,KAAK,EACL,MAAM,EACN,QAAQ,EAGX,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAa,aAAa,EAAC,MAAM,UAAU,CAAA;AAElD,MAAM,MAAM,iBAAiB,CAAC,KAAK,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,mBAAmB,CAAC,KAAK,KAAK,CAAA;AAE9G,qBAAa,UAAU,CAAC,KAAK,SAAS,KAAK,GAAG,KAAK,CAC/C,SAAQ,KAAK,CAAC,mBAAmB,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;;IACtD,MAAM,CAAC,MAAM,CAAC,KAAK,SAAS,KAAK,EAC7B,SAAS,EAAE,cAAc,CAAC,mBAAmB,CAAC,EAC9C,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,EACjC,MAAM,EAAE,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC;IAKnC,OAAO;IAWP,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAI7D,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC;IAC9B,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAOzC,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAIrF,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAI7F,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAC5B,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAE/B,IAAI,IAAI,GAAG;IAEX,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;CAOpC"}
|
package/dist/array.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import { Field } from "./field";
|
2
|
-
import { Arrays, asDefined, Option, safeExecute } from "@opendaw/lib-std";
|
2
|
+
import { Arrays, asDefined, Option, panic, safeExecute } from "@opendaw/lib-std";
|
3
3
|
import { NoPointers } from "./vertex";
|
4
4
|
export class ArrayField extends Field {
|
5
5
|
static create(construct, factory, length) {
|
@@ -19,6 +19,12 @@ export class ArrayField extends Field {
|
|
19
19
|
return safeExecute(visitor.visitArrayField, this);
|
20
20
|
}
|
21
21
|
fields() { return this.#fields; }
|
22
|
+
record() {
|
23
|
+
return this.#fields.reduce((record, field) => {
|
24
|
+
record[String(field.fieldKey)] = field;
|
25
|
+
return record;
|
26
|
+
}, {});
|
27
|
+
}
|
22
28
|
getField(key) {
|
23
29
|
return asDefined(this.#fields[key]);
|
24
30
|
}
|
@@ -28,5 +34,13 @@ export class ArrayField extends Field {
|
|
28
34
|
read(input) { this.#fields.forEach(field => field.read(input)); }
|
29
35
|
write(output) { this.#fields.forEach(field => field.write(output)); }
|
30
36
|
size() { return this.#fields.length; }
|
31
|
-
toJSON() { return this.#fields; }
|
37
|
+
toJSON() { return Object.values(this.#fields).map((field) => field.toJSON() ?? null); }
|
38
|
+
fromJSON(values) {
|
39
|
+
if (Array.isArray(values)) {
|
40
|
+
values.forEach((value, index) => this.#fields[index].fromJSON(value));
|
41
|
+
}
|
42
|
+
else {
|
43
|
+
return panic("Type mismatch");
|
44
|
+
}
|
45
|
+
}
|
32
46
|
}
|
package/dist/box.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import { Address } from "./address";
|
2
|
-
import { Class, DataInput, DataOutput, Func, int, Maybe, Option, Procedure, Subscription, UUID } from "@opendaw/lib-std";
|
2
|
+
import { Class, DataInput, DataOutput, Func, int, JSONValue, Maybe, Option, Optional, Procedure, Subscription, UUID } from "@opendaw/lib-std";
|
3
3
|
import { PointerRules, Vertex, VertexVisitor } from "./vertex";
|
4
4
|
import { Field, FieldKey, FieldKeys, Fields } from "./field";
|
5
5
|
import { PointerField, PointerTypes } from "./pointer";
|
@@ -20,7 +20,8 @@ export declare abstract class Box<P extends PointerTypes = PointerTypes, F exten
|
|
20
20
|
protected constructor({ uuid, graph, name, pointerRules }: BoxConstruct<P>);
|
21
21
|
protected abstract initializeFields(): F;
|
22
22
|
abstract accept<VISITOR extends VertexVisitor<any>>(visitor: VISITOR): VISITOR extends VertexVisitor<infer R> ? Maybe<R> : void;
|
23
|
-
fields():
|
23
|
+
fields(): ReadonlyArray<Field>;
|
24
|
+
record(): Readonly<Record<string, Field>>;
|
24
25
|
getField<K extends keyof F>(key: K): F[K];
|
25
26
|
optField<K extends keyof F>(key: K): Option<F[K]>;
|
26
27
|
subscribe(propagation: Propagation, procedure: Procedure<Update>): Subscription;
|
@@ -41,9 +42,11 @@ export declare abstract class Box<P extends PointerTypes = PointerTypes, F exten
|
|
41
42
|
write(output: DataOutput): void;
|
42
43
|
serialize(): ArrayBufferLike;
|
43
44
|
toArrayBuffer(): ArrayBufferLike;
|
45
|
+
toJSON(): Optional<JSONValue>;
|
46
|
+
fromJSON(record: JSONValue): void;
|
44
47
|
incomingEdges(): ReadonlyArray<PointerField>;
|
45
48
|
outgoingEdges(): ReadonlyArray<[PointerField, Address]>;
|
46
|
-
mapFields<T>(map: Func<Field, T>, ...keys: FieldKey
|
49
|
+
mapFields<T>(map: Func<Field, T>, ...keys: ReadonlyArray<FieldKey>): ReadonlyArray<T>;
|
47
50
|
searchVertex(keys: FieldKeys): Option<Vertex>;
|
48
51
|
delete(): void;
|
49
52
|
unstage(): void;
|
package/dist/box.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"box.d.ts","sourceRoot":"","sources":["../src/box.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAMH,KAAK,EACL,SAAS,EACT,UAAU,EACV,IAAI,EACJ,GAAG,
|
1
|
+
{"version":3,"file":"box.d.ts","sourceRoot":"","sources":["../src/box.ts"],"names":[],"mappings":"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"}
|
package/dist/box.js
CHANGED
@@ -8,7 +8,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
9
9
|
};
|
10
10
|
import { Address } from "./address";
|
11
|
-
import { Arrays, asDefined, asInstanceOf, ByteArrayOutput, ByteCounter, Lazy, Option } from "@opendaw/lib-std";
|
11
|
+
import { Arrays, asDefined, asInstanceOf, ByteArrayOutput, ByteCounter, isDefined, isRecord, Lazy, Option, panic } from "@opendaw/lib-std";
|
12
12
|
import { PointerHub } from "./pointer-hub";
|
13
13
|
import { Serializer } from "./serializer";
|
14
14
|
export class Box {
|
@@ -31,6 +31,7 @@ export class Box {
|
|
31
31
|
}
|
32
32
|
}
|
33
33
|
fields() { return Object.values(this.#fields); }
|
34
|
+
record() { return this.#fields; }
|
34
35
|
getField(key) { return asDefined(this.#fields[key]); }
|
35
36
|
optField(key) { return Option.wrap(this.#fields[key]); }
|
36
37
|
subscribe(propagation, procedure) {
|
@@ -68,6 +69,28 @@ export class Box {
|
|
68
69
|
this.write(output);
|
69
70
|
return output.toArrayBuffer();
|
70
71
|
}
|
72
|
+
toJSON() {
|
73
|
+
return Object.entries(this.#fields).reduce((result, [key, field]) => {
|
74
|
+
const value = field.toJSON();
|
75
|
+
if (isDefined(value)) {
|
76
|
+
result[key] = value;
|
77
|
+
}
|
78
|
+
return result;
|
79
|
+
}, {});
|
80
|
+
}
|
81
|
+
fromJSON(record) {
|
82
|
+
if (isRecord(record)) {
|
83
|
+
Object.entries(record).forEach(([key, value]) => {
|
84
|
+
const field = this.#fields[parseInt(key)];
|
85
|
+
if (isDefined(value)) {
|
86
|
+
field.fromJSON(value);
|
87
|
+
}
|
88
|
+
});
|
89
|
+
}
|
90
|
+
else {
|
91
|
+
return panic("Type mismatch");
|
92
|
+
}
|
93
|
+
}
|
71
94
|
incomingEdges() { return this.graph.edges().incomingEdgesOf(this); }
|
72
95
|
outgoingEdges() { return this.graph.edges().outgoingEdgesOf(this); }
|
73
96
|
mapFields(map, ...keys) {
|
package/dist/editing.d.ts
CHANGED
package/dist/editing.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"editing.d.ts","sourceRoot":"","sources":["../src/editing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAA;AAChC,OAAO,EAAsB,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AAqB7E,MAAM,WAAW,mBAAmB;IAChC,OAAO,IAAI,IAAI,CAAA;IACf,MAAM,IAAI,IAAI,CAAA;CACjB;AAED,qBAAa,OAAO;;
|
1
|
+
{"version":3,"file":"editing.d.ts","sourceRoot":"","sources":["../src/editing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAA;AAChC,OAAO,EAAsB,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AAqB7E,MAAM,WAAW,mBAAmB;IAChC,OAAO,IAAI,IAAI,CAAA;IACf,MAAM,IAAI,IAAI,CAAA;CACjB;AAED,qBAAa,OAAO;;gBAUJ,KAAK,EAAE,QAAQ;IAI3B,IAAI,KAAK,IAAI,QAAQ,CAAqB;IAE1C,OAAO,IAAI,OAAO;IAElB,KAAK,IAAI,IAAI;IAOb,IAAI,IAAI,OAAO;IAUf,IAAI,IAAI,OAAO;IAcf,SAAS,IAAI,OAAO;IAEpB,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAE,OAAc,GAAG,MAAM,CAAC,CAAC,CAAC;IAWxE,iBAAiB,IAAI,mBAAmB;IAkCxC,IAAI,IAAI,IAAI;IAOZ,YAAY,IAAI,IAAI;IAMpB,OAAO,IAAI,IAAI;CAGlB"}
|
package/dist/editing.js
CHANGED
@@ -18,6 +18,7 @@ export class Editing {
|
|
18
18
|
#pending = [];
|
19
19
|
#marked = [];
|
20
20
|
#modifying = false;
|
21
|
+
#disabled = false;
|
21
22
|
#historyIndex = 0;
|
22
23
|
constructor(graph) {
|
23
24
|
this.#graph = graph;
|
@@ -31,6 +32,9 @@ export class Editing {
|
|
31
32
|
this.#historyIndex = 0;
|
32
33
|
}
|
33
34
|
undo() {
|
35
|
+
if (this.#disabled) {
|
36
|
+
return false;
|
37
|
+
}
|
34
38
|
if (this.#pending.length > 0) {
|
35
39
|
this.mark();
|
36
40
|
}
|
@@ -43,6 +47,9 @@ export class Editing {
|
|
43
47
|
return true;
|
44
48
|
}
|
45
49
|
redo() {
|
50
|
+
if (this.#disabled) {
|
51
|
+
return false;
|
52
|
+
}
|
46
53
|
if (this.#historyIndex === this.#marked.length) {
|
47
54
|
return false;
|
48
55
|
}
|
@@ -120,4 +127,7 @@ export class Editing {
|
|
120
127
|
this.#pending.reverse().forEach(modification => modification.inverse(this.#graph));
|
121
128
|
this.#pending.length = 0;
|
122
129
|
}
|
130
|
+
disable() {
|
131
|
+
this.#disabled = true;
|
132
|
+
}
|
123
133
|
}
|
package/dist/field.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { DataInput, DataOutput, Maybe, Option, short } from "@opendaw/lib-std";
|
1
|
+
import { DataInput, DataOutput, JSONValue, Maybe, Option, Optional, short } from "@opendaw/lib-std";
|
2
2
|
import { Address } from "./address";
|
3
3
|
import { Box } from "./box";
|
4
4
|
import { PointerRules, Vertex, VertexVisitor } from "./vertex";
|
@@ -31,11 +31,14 @@ export declare class Field<P extends PointerTypes = PointerTypes, F extends Fiel
|
|
31
31
|
isBox(): this is Box;
|
32
32
|
isField(): this is Field;
|
33
33
|
isAttached(): boolean;
|
34
|
-
fields():
|
34
|
+
fields(): ReadonlyArray<Field>;
|
35
|
+
record(): Record<string, Field>;
|
35
36
|
getField(_key: keyof F): F[keyof F];
|
36
37
|
optField(_key: keyof F): Option<F[keyof F]>;
|
37
38
|
read(_input: DataInput): void;
|
38
39
|
write(_output: DataOutput): void;
|
40
|
+
toJSON(): Optional<JSONValue>;
|
41
|
+
fromJSON(_value: JSONValue): void;
|
39
42
|
disconnect(): void;
|
40
43
|
toString(): string;
|
41
44
|
}
|
package/dist/field.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../src/field.ts"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../src/field.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,SAAS,EACT,UAAU,EACV,SAAS,EAET,KAAK,EAEL,MAAM,EACN,QAAQ,EAGR,KAAK,EACR,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAA;AACzB,OAAO,EAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAC,MAAM,UAAU,CAAA;AAC5D,OAAO,EAAC,YAAY,EAAC,MAAM,WAAW,CAAA;AACtC,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAA;AAEhC,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAA;AAC7B,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAA;AAC5C,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AAC5C,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,YAAY,IAAI;IACjD,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;CAChC,CAAA;AAED,qBAAa,KAAK,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,YAAW,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;;IACxG,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,YAAY,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;IAShE,SAAS,aAAa,EAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IASpF,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAI7D,IAAI,GAAG,IAAI,GAAG,CAA0B;IACxC,IAAI,KAAK,IAAI,QAAQ,CAA4B;IACjD,IAAI,MAAM,IAAI,MAAM,CAAsB;IAC1C,IAAI,QAAQ,IAAI,KAAK,CAAwB;IAC7C,IAAI,SAAS,IAAI,MAAM,CAAyB;IAChD,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAA4B;IAE/D,IACI,UAAU,IAAI,UAAU,CAA8B;IAE1D,IACI,OAAO,IAAI,OAAO,CAAqD;IAE3E,IACI,SAAS,IAAI,MAAM,CAEtB;IAED,KAAK,IAAI,IAAI,IAAI,GAAG;IACpB,OAAO,IAAI,IAAI,IAAI,KAAK;IACxB,UAAU,IAAI,OAAO;IACrB,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC;IAC9B,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAC7B,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAChC,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IACjC,UAAU,IAAI,IAAI;IAUlB,QAAQ,IAAI,MAAM;CACrB"}
|
package/dist/field.js
CHANGED
@@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
9
9
|
};
|
10
|
-
import {
|
10
|
+
import { Arrays, Lazy, Objects, Option, panic, safeExecute } from "@opendaw/lib-std";
|
11
11
|
import { Address } from "./address";
|
12
12
|
import { PointerHub } from "./pointer-hub";
|
13
13
|
export class Field {
|
@@ -44,11 +44,14 @@ export class Field {
|
|
44
44
|
isBox() { return false; }
|
45
45
|
isField() { return true; }
|
46
46
|
isAttached() { return this.graph.findBox(this.address.uuid).nonEmpty(); }
|
47
|
-
fields() { return
|
47
|
+
fields() { return Arrays.empty(); }
|
48
|
+
record() { return Objects.empty(); }
|
48
49
|
getField(_key) { return panic(); }
|
49
50
|
optField(_key) { return Option.None; }
|
50
51
|
read(_input) { }
|
51
52
|
write(_output) { }
|
53
|
+
toJSON() { return undefined; }
|
54
|
+
fromJSON(_value) { return panic("fromJSON should never be called on a field"); }
|
52
55
|
disconnect() {
|
53
56
|
if (this.pointerHub.isEmpty()) {
|
54
57
|
return;
|
package/dist/graph.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Exec, int, Option, Procedure, Subscription, UUID } from "@opendaw/lib-std";
|
1
|
+
import { Exec, int, JSONValue, Option, Optional, Procedure, Subscription, UUID } from "@opendaw/lib-std";
|
2
2
|
import { Address } from "./address";
|
3
3
|
import { Vertex } from "./vertex";
|
4
4
|
import { PointerField } from "./pointer";
|
@@ -50,5 +50,6 @@ export declare class BoxGraph<BoxMap = any> {
|
|
50
50
|
addressToDebugPath(address: Option<Address>): Option<string>;
|
51
51
|
toArrayBuffer(): ArrayBufferLike;
|
52
52
|
fromArrayBuffer(arrayBuffer: ArrayBuffer): void;
|
53
|
+
toJSON(): Optional<JSONValue>;
|
53
54
|
}
|
54
55
|
//# sourceMappingURL=graph.d.ts.map
|
package/dist/graph.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"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"}
|
package/dist/graph.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { assert, ByteArrayInput, ByteArrayOutput, Checksum, isDefined, Listeners, Option, panic, UUID } from "@opendaw/lib-std";
|
1
|
+
import { asDefined, assert, ByteArrayInput, ByteArrayOutput, Checksum, isDefined, Listeners, Option, panic, UUID } from "@opendaw/lib-std";
|
2
2
|
import { DeleteUpdate, NewUpdate, PointerUpdate, PrimitiveUpdate } from "./updates";
|
3
3
|
import { Dispatchers } from "./dispatchers";
|
4
4
|
import { GraphEdges } from "./graph-edges";
|
@@ -252,6 +252,13 @@ export class BoxGraph {
|
|
252
252
|
.forEach(({ name, uuid, boxStream }) => this.createBox(name, uuid, box => box.read(boxStream)));
|
253
253
|
this.endTransaction();
|
254
254
|
}
|
255
|
+
toJSON() {
|
256
|
+
return this.#boxes.values().map(box => ({
|
257
|
+
name: box.name,
|
258
|
+
uuid: box.address.toString(),
|
259
|
+
fields: asDefined(box.toJSON())
|
260
|
+
}));
|
261
|
+
}
|
255
262
|
#assertTransaction() {
|
256
263
|
assert(this.#inTransaction, () => "Modification only prohibited in transaction mode.");
|
257
264
|
}
|
package/dist/object.d.ts
CHANGED
@@ -1,17 +1,19 @@
|
|
1
1
|
import { Field, FieldConstruct, Fields } from "./field";
|
2
2
|
import { UnreferenceableType } from "./pointer";
|
3
|
-
import { DataInput, DataOutput, Maybe, Option } from "@opendaw/lib-std";
|
3
|
+
import { DataInput, DataOutput, JSONValue, Maybe, Option, Optional } from "@opendaw/lib-std";
|
4
4
|
import { VertexVisitor } from "./vertex";
|
5
5
|
export declare abstract class ObjectField<FIELDS extends Fields> extends Field<UnreferenceableType, FIELDS> {
|
6
6
|
#private;
|
7
7
|
protected constructor(construct: FieldConstruct<UnreferenceableType>);
|
8
8
|
protected abstract initializeFields(): FIELDS;
|
9
9
|
accept<RETURN>(visitor: VertexVisitor<RETURN>): Maybe<RETURN>;
|
10
|
-
fields():
|
10
|
+
fields(): ReadonlyArray<Field>;
|
11
|
+
record(): Readonly<Record<string, Field>>;
|
11
12
|
getField<K extends keyof FIELDS>(key: K): FIELDS[K];
|
12
13
|
optField<K extends keyof FIELDS>(key: K): Option<FIELDS[K]>;
|
13
14
|
read(input: DataInput): void;
|
14
15
|
write(output: DataOutput): void;
|
15
|
-
toJSON():
|
16
|
+
toJSON(): Optional<JSONValue>;
|
17
|
+
fromJSON(record: JSONValue): void;
|
16
18
|
}
|
17
19
|
//# sourceMappingURL=object.d.ts.map
|
package/dist/object.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,cAAc,
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,cAAc,EAAY,MAAM,EAAC,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAC,mBAAmB,EAAC,MAAM,WAAW,CAAA;AAC7C,OAAO,EAEH,SAAS,EACT,UAAU,EAGV,SAAS,EACT,KAAK,EACL,MAAM,EACN,QAAQ,EAGX,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAA;AAEtC,8BAAsB,WAAW,CAAC,MAAM,SAAS,MAAM,CAAE,SAAQ,KAAK,CAAC,mBAAmB,EAAE,MAAM,CAAC;;IAG/F,SAAS,aAAa,SAAS,EAAE,cAAc,CAAC,mBAAmB,CAAC;IAMpE,SAAS,CAAC,QAAQ,CAAC,gBAAgB,IAAI,MAAM;IAE7C,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAI7D,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC;IAC9B,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACzC,QAAQ,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAE3D,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAC5B,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAE/B,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC;IAO7B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;CAYpC"}
|
package/dist/object.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import { Field } from "./field";
|
2
|
-
import { asDefined, Option, safeExecute } from "@opendaw/lib-std";
|
2
|
+
import { asDefined, isDefined, isRecord, Option, panic, safeExecute } from "@opendaw/lib-std";
|
3
3
|
import { Serializer } from "./serializer";
|
4
4
|
export class ObjectField extends Field {
|
5
5
|
#fields;
|
@@ -11,9 +11,28 @@ export class ObjectField extends Field {
|
|
11
11
|
return safeExecute(visitor.visitObjectField, this);
|
12
12
|
}
|
13
13
|
fields() { return Object.values(this.#fields); }
|
14
|
+
record() { return this.#fields; }
|
14
15
|
getField(key) { return asDefined(this.#fields[key]); }
|
15
16
|
optField(key) { return Option.wrap(this.#fields[key]); }
|
16
17
|
read(input) { Serializer.readFields(input, this.#fields); }
|
17
18
|
write(output) { Serializer.writeFields(output, this.#fields); }
|
18
|
-
toJSON() {
|
19
|
+
toJSON() {
|
20
|
+
return Object.entries(this.#fields).reduce((result, [key, field]) => {
|
21
|
+
result[key] = field.toJSON();
|
22
|
+
return result;
|
23
|
+
}, {});
|
24
|
+
}
|
25
|
+
fromJSON(record) {
|
26
|
+
if (isRecord(record)) {
|
27
|
+
Object.entries(record).forEach(([key, value]) => {
|
28
|
+
const field = this.#fields[parseInt(key)];
|
29
|
+
if (isDefined(value)) {
|
30
|
+
field.fromJSON(value);
|
31
|
+
}
|
32
|
+
});
|
33
|
+
}
|
34
|
+
else {
|
35
|
+
return panic("Type mismatch");
|
36
|
+
}
|
37
|
+
}
|
19
38
|
}
|
package/dist/pointer.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { DataInput, DataOutput, Maybe, Observer, Option, Provider, Subscription } from "@opendaw/lib-std";
|
1
|
+
import { DataInput, DataOutput, JSONValue, Maybe, Observer, Option, Optional, Provider, Subscription } from "@opendaw/lib-std";
|
2
2
|
import { Vertex, VertexVisitor } from "./vertex";
|
3
3
|
import { Address } from "./address";
|
4
4
|
import { PointerHub } from "./pointer-hub";
|
@@ -35,6 +35,8 @@ export declare class PointerField<P extends PointerTypes = PointerTypes> extends
|
|
35
35
|
resolvedTo(newTarget: Option<Vertex>): void;
|
36
36
|
read(input: DataInput): void;
|
37
37
|
write(output: DataOutput): void;
|
38
|
+
toJSON(): Optional<JSONValue>;
|
39
|
+
fromJSON(value: JSONValue): void;
|
38
40
|
}
|
39
41
|
export {};
|
40
42
|
//# sourceMappingURL=pointer.d.ts.map
|
package/dist/pointer.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pointer.d.ts","sourceRoot":"","sources":["../src/pointer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,SAAS,EACT,UAAU,
|
1
|
+
{"version":3,"file":"pointer.d.ts","sourceRoot":"","sources":["../src/pointer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,SAAS,EACT,UAAU,EAEV,SAAS,EACT,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EAER,QAAQ,EAER,YAAY,EAEf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,KAAK,EAAE,cAAc,EAAC,MAAM,SAAS,CAAA;AAG7C,QAAA,MAAM,gBAAgB,eAA4B,CAAA;AAElD,MAAM,MAAM,mBAAmB,GAAG,OAAO,gBAAgB,CAAA;AAEzD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,mBAAmB,CAAA;AAEhE,MAAM,WAAW,cAAc;IAAE,GAAG,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;CAAC;AAE7E,MAAM,WAAW,cAAc;IAAE,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;CAAC;AAE1G,qBAAa,YAAY,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,CAAE,SAAQ,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC;;IACtG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,YAAY,EAAE,SAAS,EAAE,cAAc,CAAC,mBAAmB,CAAC,EAC9C,WAAW,EAAE,CAAC,EACd,SAAS,EAAE,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC;IAI1E,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;IAWnE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;IAoBnE,OAAO;IASP,IAAI,UAAU,IAAI,UAAU,CAA+C;IAE3E,IAAI,WAAW,IAAI,CAAC,CAA2B;IAC/C,IAAI,SAAS,IAAI,OAAO,CAAyB;IAEjD,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAI7D,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY;IAIjD,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY;IAM3D,KAAK,CAAC,MAAM,SAAS,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,SAAS,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI;IAInG,KAAK,IAAI,IAAI;IAEb,IAAI,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,CAIjC;IACD,IAAI,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAQtC;IAED,IAAI,aAAa,IAAI,MAAM,CAAC,OAAO,CAAC,CAA6B;IACjE,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,EAM1C;IAED,OAAO,IAAI,OAAO;IAClB,QAAQ,IAAI,OAAO;IAEnB,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI;IAE3C,IAAI,CAAC,KAAK,EAAE,SAAS;IAUrB,KAAK,CAAC,MAAM,EAAE,UAAU;IAaxB,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC;IAU7B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAWnC"}
|
package/dist/pointer.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { assert, Option, panic, safeExecute, tryCatch } from "@opendaw/lib-std";
|
1
|
+
import { assert, isNull, Option, panic, safeExecute, tryCatch } from "@opendaw/lib-std";
|
2
2
|
import { Address } from "./address";
|
3
3
|
import { PointerHub } from "./pointer-hub";
|
4
4
|
import { Field } from "./field";
|
@@ -107,4 +107,25 @@ export class PointerField extends Field {
|
|
107
107
|
}
|
108
108
|
});
|
109
109
|
}
|
110
|
+
toJSON() {
|
111
|
+
return PointerField.#encoder.match({
|
112
|
+
none: () => this.#targetAddress,
|
113
|
+
some: encoder => encoder.map(this)
|
114
|
+
}).match({
|
115
|
+
none: () => null,
|
116
|
+
some: address => address.toString()
|
117
|
+
});
|
118
|
+
}
|
119
|
+
fromJSON(value) {
|
120
|
+
if (isNull(value) || typeof value === "string") {
|
121
|
+
const address = Option.wrap(isNull(value) ? null : Address.decode(value));
|
122
|
+
this.targetAddress = PointerField.#decoder.match({
|
123
|
+
none: () => address,
|
124
|
+
some: decoder => decoder.map(this, address)
|
125
|
+
});
|
126
|
+
}
|
127
|
+
else {
|
128
|
+
return panic(`Pointer: Type mismatch. value (${typeof value}) must be a string.`);
|
129
|
+
}
|
130
|
+
}
|
110
131
|
}
|
package/dist/primitive.d.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { Field, FieldConstruct } from "./field";
|
2
2
|
import { PointerTypes, UnreferenceableType } from "./pointer";
|
3
|
-
import { ByteArrayInput, ByteArrayOutput, DataInput, DataOutput, float, int,
|
3
|
+
import { ByteArrayInput, ByteArrayOutput, DataInput, DataOutput, float, int, JSONValue, Maybe, MutableObservableValue, ObservableValue, Observer, Optional, Subscription } from "@opendaw/lib-std";
|
4
4
|
import { VertexVisitor } from "./vertex";
|
5
5
|
export type PrimitiveValues = float | int | string | boolean | Readonly<Int8Array>;
|
6
6
|
export declare enum PrimitiveType {
|
@@ -58,6 +58,8 @@ export declare abstract class PrimitiveField<V extends PrimitiveValues = Primiti
|
|
58
58
|
setValue(value: V): void;
|
59
59
|
writeValue(output: ByteArrayOutput, value: V): void;
|
60
60
|
readValue(input: ByteArrayInput): V;
|
61
|
+
toJSON(): Optional<JSONValue>;
|
62
|
+
fromJSON(_value: JSONValue): void;
|
61
63
|
reset(): void;
|
62
64
|
}
|
63
65
|
export declare class BooleanField<E extends PointerTypes = UnreferenceableType> extends PrimitiveField<boolean, E> {
|
@@ -69,6 +71,7 @@ export declare class BooleanField<E extends PointerTypes = UnreferenceableType>
|
|
69
71
|
clamp(value: boolean): boolean;
|
70
72
|
read(input: DataInput): void;
|
71
73
|
write(output: DataOutput): void;
|
74
|
+
fromJSON(value: JSONValue): void;
|
72
75
|
}
|
73
76
|
export declare class Float32Field<E extends PointerTypes = UnreferenceableType> extends PrimitiveField<float, E> {
|
74
77
|
static create<E extends PointerTypes = UnreferenceableType>(construct: FieldConstruct<E>, value?: float): Float32Field<E>;
|
@@ -78,6 +81,7 @@ export declare class Float32Field<E extends PointerTypes = UnreferenceableType>
|
|
78
81
|
clamp(value: float): float;
|
79
82
|
read(input: DataInput): void;
|
80
83
|
write(output: DataOutput): void;
|
84
|
+
fromJSON(value: JSONValue): void;
|
81
85
|
}
|
82
86
|
export declare class Int32Field<E extends PointerTypes = UnreferenceableType> extends PrimitiveField<int, E> {
|
83
87
|
static create<E extends PointerTypes = UnreferenceableType>(construct: FieldConstruct<E>, value?: int): Int32Field<E>;
|
@@ -87,6 +91,7 @@ export declare class Int32Field<E extends PointerTypes = UnreferenceableType> ex
|
|
87
91
|
clamp(value: int): int;
|
88
92
|
read(input: DataInput): void;
|
89
93
|
write(output: DataOutput): void;
|
94
|
+
fromJSON(value: JSONValue): void;
|
90
95
|
}
|
91
96
|
export declare class StringField<E extends PointerTypes = UnreferenceableType> extends PrimitiveField<string, E> {
|
92
97
|
static create<E extends PointerTypes = UnreferenceableType>(construct: FieldConstruct<E>, value?: string): StringField<E>;
|
@@ -96,6 +101,7 @@ export declare class StringField<E extends PointerTypes = UnreferenceableType> e
|
|
96
101
|
clamp(value: string): string;
|
97
102
|
read(input: DataInput): void;
|
98
103
|
write(output: DataOutput): void;
|
104
|
+
fromJSON(value: JSONValue): void;
|
99
105
|
}
|
100
106
|
export declare class ByteArrayField<E extends PointerTypes = UnreferenceableType> extends PrimitiveField<Readonly<Int8Array>, E> {
|
101
107
|
#private;
|
@@ -106,5 +112,7 @@ export declare class ByteArrayField<E extends PointerTypes = UnreferenceableType
|
|
106
112
|
clamp(value: Readonly<Int8Array>): Readonly<Int8Array>;
|
107
113
|
read(input: DataInput): void;
|
108
114
|
write(output: DataOutput): void;
|
115
|
+
toJSON(): Optional<JSONValue>;
|
116
|
+
fromJSON(value: JSONValue): void;
|
109
117
|
}
|
110
118
|
//# sourceMappingURL=primitive.d.ts.map
|
package/dist/primitive.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"primitive.d.ts","sourceRoot":"","sources":["../src/primitive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,cAAc,EAAC,MAAM,SAAS,CAAA;AAC7C,OAAO,EAAC,YAAY,EAAE,mBAAmB,EAAC,MAAM,WAAW,CAAA;AAC3D,OAAO,EAEH,cAAc,EACd,eAAe,EACf,SAAS,EACT,UAAU,EAEV,KAAK,EACL,GAAG,EAEH,
|
1
|
+
{"version":3,"file":"primitive.d.ts","sourceRoot":"","sources":["../src/primitive.ts"],"names":[],"mappings":"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"}
|
package/dist/primitive.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import { Field } from "./field";
|
2
|
-
import { assert, Float, Integer, safeExecute } from "@opendaw/lib-std";
|
2
|
+
import { assert, Float, Integer, panic, safeExecute } from "@opendaw/lib-std";
|
3
3
|
import { Propagation } from "./dispatchers";
|
4
4
|
export var PrimitiveType;
|
5
5
|
(function (PrimitiveType) {
|
@@ -81,6 +81,11 @@ export class PrimitiveField extends Field {
|
|
81
81
|
}
|
82
82
|
writeValue(output, value) { this.serialization().encode(output, value); }
|
83
83
|
readValue(input) { return this.serialization().decode(input); }
|
84
|
+
toJSON() {
|
85
|
+
const value = this.getValue();
|
86
|
+
return ArrayBuffer.isView(value) ? panic("not implemented") : value;
|
87
|
+
}
|
88
|
+
fromJSON(_value) { return panic("Type mismatch"); }
|
84
89
|
reset() { this.setValue(this.#initValue); }
|
85
90
|
}
|
86
91
|
export class BooleanField extends PrimitiveField {
|
@@ -94,6 +99,14 @@ export class BooleanField extends PrimitiveField {
|
|
94
99
|
clamp(value) { return value; }
|
95
100
|
read(input) { this.setValue(input.readBoolean()); }
|
96
101
|
write(output) { output.writeBoolean(this.getValue()); }
|
102
|
+
fromJSON(value) {
|
103
|
+
if (typeof value === "boolean") {
|
104
|
+
this.setValue(value);
|
105
|
+
}
|
106
|
+
else {
|
107
|
+
console.warn("BooleanField Type mismatch", value, this.address.toString());
|
108
|
+
}
|
109
|
+
}
|
97
110
|
}
|
98
111
|
export class Float32Field extends PrimitiveField {
|
99
112
|
static create(construct, value = 0.0) {
|
@@ -105,6 +118,14 @@ export class Float32Field extends PrimitiveField {
|
|
105
118
|
clamp(value) { return Float.toFloat32(value); }
|
106
119
|
read(input) { this.setValue(input.readFloat()); }
|
107
120
|
write(output) { output.writeFloat(this.getValue()); }
|
121
|
+
fromJSON(value) {
|
122
|
+
if (typeof value === "number") {
|
123
|
+
this.setValue(value);
|
124
|
+
}
|
125
|
+
else {
|
126
|
+
console.warn("Float32Field Type mismatch", value, this.address.toString());
|
127
|
+
}
|
128
|
+
}
|
108
129
|
}
|
109
130
|
export class Int32Field extends PrimitiveField {
|
110
131
|
static create(construct, value = 0) {
|
@@ -116,6 +137,15 @@ export class Int32Field extends PrimitiveField {
|
|
116
137
|
clamp(value) { return Integer.toInt(value); }
|
117
138
|
read(input) { this.setValue(input.readInt()); }
|
118
139
|
write(output) { output.writeInt(this.getValue()); }
|
140
|
+
fromJSON(value) {
|
141
|
+
if (typeof value === "number" && value === Math.floor(value)
|
142
|
+
&& value >= Integer.MIN_VALUE && value <= Integer.MAX_VALUE) {
|
143
|
+
this.setValue(value);
|
144
|
+
}
|
145
|
+
else {
|
146
|
+
console.warn("Int32Field Type mismatch", value, this.address.toString());
|
147
|
+
}
|
148
|
+
}
|
119
149
|
}
|
120
150
|
export class StringField extends PrimitiveField {
|
121
151
|
static create(construct, value = "") {
|
@@ -127,6 +157,14 @@ export class StringField extends PrimitiveField {
|
|
127
157
|
clamp(value) { return value; }
|
128
158
|
read(input) { this.setValue(input.readString()); }
|
129
159
|
write(output) { output.writeString(this.getValue()); }
|
160
|
+
fromJSON(value) {
|
161
|
+
if (typeof value === "string") {
|
162
|
+
this.setValue(value);
|
163
|
+
}
|
164
|
+
else {
|
165
|
+
console.warn("StringField Type mismatch", value, this.address.toString());
|
166
|
+
}
|
167
|
+
}
|
130
168
|
}
|
131
169
|
export class ByteArrayField extends PrimitiveField {
|
132
170
|
static create(construct, value = this.#empty) {
|
@@ -149,4 +187,13 @@ export class ByteArrayField extends PrimitiveField {
|
|
149
187
|
output.writeInt(bytes.length);
|
150
188
|
output.writeBytes(bytes);
|
151
189
|
}
|
190
|
+
toJSON() { return Array.from(this.getValue().values()); }
|
191
|
+
fromJSON(value) {
|
192
|
+
if (Array.isArray(value) && value.every(number => typeof number === "number")) {
|
193
|
+
this.setValue(new Int8Array(value));
|
194
|
+
}
|
195
|
+
else {
|
196
|
+
console.warn("ByteArrayField Type mismatch", value, this.address.toString());
|
197
|
+
}
|
198
|
+
}
|
152
199
|
}
|
package/dist/serializer.js
CHANGED
@@ -18,7 +18,7 @@ export var Serializer;
|
|
18
18
|
Serializer.readFields = (input, fields) => {
|
19
19
|
assert(input.readInt() === MAGIC_HEADER, "Serializer header is corrupt");
|
20
20
|
const numFields = input.readShort();
|
21
|
-
for (let
|
21
|
+
for (let i = 0; i < numFields; i++) {
|
22
22
|
const key = input.readShort();
|
23
23
|
if (isUndefined(fields[key])) {
|
24
24
|
continue;
|
package/dist/vertex.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { DataInput, DataOutput, Maybe, Option } from "@opendaw/lib-std";
|
1
|
+
import { DataInput, DataOutput, JSONValue, Maybe, Option, Optional } from "@opendaw/lib-std";
|
2
2
|
import { Addressable } from "./address";
|
3
3
|
import { Box } from "./box";
|
4
4
|
import { Field, Fields } from "./field";
|
@@ -32,10 +32,13 @@ export interface Vertex<P extends PointerTypes = PointerTypes, F extends Fields
|
|
32
32
|
isBox(): this is Box;
|
33
33
|
isField(): this is Field;
|
34
34
|
isAttached(): boolean;
|
35
|
-
fields():
|
35
|
+
fields(): ReadonlyArray<Field>;
|
36
|
+
record(): Readonly<Record<string, Field>>;
|
36
37
|
getField(key: keyof F): F[keyof F];
|
37
38
|
optField(key: keyof F): Option<F[keyof F]>;
|
38
39
|
read(input: DataInput): void;
|
39
40
|
write(output: DataOutput): void;
|
41
|
+
toJSON(): Optional<JSONValue>;
|
42
|
+
fromJSON(value: JSONValue): void;
|
40
43
|
}
|
41
44
|
//# sourceMappingURL=vertex.d.ts.map
|
package/dist/vertex.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"vertex.d.ts","sourceRoot":"","sources":["../src/vertex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAC,MAAM,kBAAkB,CAAA;
|
1
|
+
{"version":3,"file":"vertex.d.ts","sourceRoot":"","sources":["../src/vertex.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@opendaw/lib-box",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.28",
|
4
4
|
"main": "./dist/index.js",
|
5
5
|
"types": "./dist/index.d.ts",
|
6
6
|
"license": "LGPL-3.0-or-later",
|
@@ -22,12 +22,12 @@
|
|
22
22
|
"test": "vitest run"
|
23
23
|
},
|
24
24
|
"dependencies": {
|
25
|
-
"@opendaw/lib-runtime": "^0.0.
|
26
|
-
"@opendaw/lib-std": "^0.0.
|
25
|
+
"@opendaw/lib-runtime": "^0.0.28",
|
26
|
+
"@opendaw/lib-std": "^0.0.28"
|
27
27
|
},
|
28
28
|
"devDependencies": {
|
29
|
-
"@opendaw/eslint-config": "^0.0.
|
30
|
-
"@opendaw/typescript-config": "^0.0.
|
29
|
+
"@opendaw/eslint-config": "^0.0.19",
|
30
|
+
"@opendaw/typescript-config": "^0.0.20"
|
31
31
|
},
|
32
|
-
"gitHead": "
|
32
|
+
"gitHead": "ef80742a992e09362277ff87ec1b79ded515f9e5"
|
33
33
|
}
|