@opendaw/lib-box 0.0.27 → 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 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(): Iterable<FIELD>;
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(): readonly FIELD[];
18
+ toJSON(): Optional<JSONValue>;
19
+ fromJSON(values: JSONValue): void;
18
20
  }
19
21
  //# sourceMappingURL=array.d.ts.map
@@ -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,EAAoB,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAc,MAAM,kBAAkB,CAAA;AAC1G,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,QAAQ,CAAC,KAAK,CAAC;IAEzB,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;CACT"}
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(): Iterable<Field>;
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[]): ReadonlyArray<T>;
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":"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"}
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,EAGH,SAAS,EAET,KAAK,EACL,MAAM,EACN,QAAQ,EAER,SAAS,EACT,YAAY,EACZ,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAC,MAAM,UAAU,CAAA;AAC5D,OAAO,EAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAC,MAAM,SAAS,CAAA;AAC1D,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,WAAW,CAAA;AACpD,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AAExC,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAA;AAChC,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAA;AAChC,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAA;AAEzC,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,YAAY,IAAI;IAC/C,IAAI,EAAE,IAAI,CAAC,KAAK,CAAA;IAChB,KAAK,EAAE,QAAQ,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;CAChC,CAAA;AAED,8BAAsB,GAAG,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,EAAE,CAAC,SAAS,MAAM,GAAG,GAAG,CAAE,YAAW,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;;IAC5G,MAAM,CAAC,QAAQ,CAAC,cAAc,SAAQ;IAEtC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAQ;IAUzB,SAAS,aAAa,EAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAC,EAAE,YAAY,CAAC,CAAC,CAAC;IAWxE,SAAS,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC;IAExC,QAAQ,CAAC,MAAM,CAAC,OAAO,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;IAE/H,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC;IAC9B,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACzC,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,YAAY;IAI/E,IAAI,GAAG,IAAI,GAAG,CAAc;IAC5B,IAAI,IAAI,IAAI,MAAM,CAAoB;IACtC,IAAI,KAAK,IAAI,QAAQ,CAAqB;IAC1C,IAAI,MAAM,IAAI,MAAM,CAAc;IAClC,IAAI,OAAO,IAAI,OAAO,CAAuB;IAC7C,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAA4B;IAC/D,IAAI,aAAa,IAAI,MAAM,CAA6B;IAExD,IACI,UAAU,IAAI,UAAU,CAA8B;IAE1D,cAAc,IAAI,GAAG;IAMrB,KAAK,IAAI,IAAI,IAAI,GAAG;IACpB,KAAK,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IACvC,OAAO,IAAI,IAAI,IAAI,KAAK;IACxB,UAAU,IAAI,OAAO;IACrB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAC5B,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAC/B,SAAS,IAAI,eAAe;IAQ5B,aAAa,IAAI,eAAe;IAKhC,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC;IAS7B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAajC,aAAa,IAAI,aAAa,CAAC,YAAY,CAAC;IAC5C,aAAa,IAAI,aAAa,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEvD,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;IAWrF,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IAW7C,MAAM,IAAI,IAAI;IAYd,OAAO,IAAI,IAAI;IAEf,QAAQ,IAAI,MAAM;CACrB"}
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
@@ -17,5 +17,6 @@ export declare class Editing {
17
17
  beginModification(): ModificationProcess;
18
18
  mark(): void;
19
19
  clearPending(): void;
20
+ disable(): void;
20
21
  }
21
22
  //# sourceMappingURL=editing.d.ts.map
@@ -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;;gBASJ,KAAK,EAAE,QAAQ;IAI3B,IAAI,KAAK,IAAI,QAAQ,CAAqB;IAE1C,OAAO,IAAI,OAAO;IAElB,KAAK,IAAI,IAAI;IAOb,IAAI,IAAI,OAAO;IASf,IAAI,IAAI,OAAO;IAaf,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;CAKvB"}
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(): Iterable<Field>;
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../src/field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,UAAU,EAAmB,KAAK,EAAE,MAAM,EAAsB,KAAK,EAAC,MAAM,kBAAkB,CAAA;AACjH,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,QAAQ,CAAC,KAAK,CAAC;IACzB,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,UAAU,IAAI,IAAI;IAUlB,QAAQ,IAAI,MAAM;CACrB"}
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 { Iterables, Lazy, Option, panic, safeExecute } from "@opendaw/lib-std";
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 Iterables.empty(); }
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
@@ -1 +1 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"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"}
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(): Iterable<Field>;
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(): FIELDS;
16
+ toJSON(): Optional<JSONValue>;
17
+ fromJSON(record: JSONValue): void;
16
18
  }
17
19
  //# sourceMappingURL=object.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAC,MAAM,SAAS,CAAA;AACrD,OAAO,EAAC,mBAAmB,EAAC,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAY,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAc,MAAM,kBAAkB,CAAA;AAE7F,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,QAAQ,CAAC,KAAK,CAAC;IACzB,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;CACT"}
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() { return this.#fields; }
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
@@ -1 +1 @@
1
- {"version":3,"file":"pointer.d.ts","sourceRoot":"","sources":["../src/pointer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,SAAS,EACT,UAAU,EACV,KAAK,EACL,QAAQ,EACR,MAAM,EAEN,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;CAY3B"}
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
  }
@@ -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, MutableObservableValue, Maybe, ObservableValue, Observer, Subscription } from "@opendaw/lib-std";
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
@@ -1 +1 @@
1
- {"version":3,"file":"primitive.d.ts","sourceRoot":"","sources":["../src/primitive.ts"],"names":[],"mappings":"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"}
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
  }
@@ -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 fieldIndex = 0; fieldIndex < numFields; fieldIndex++) {
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(): Iterable<Field>;
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
@@ -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;AACrE,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAA;AACrC,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAA;AACzB,OAAO,EAAC,KAAK,EAAE,MAAM,EAAC,MAAM,SAAS,CAAA;AACrC,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,WAAW,CAAA;AACpD,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAA;AAClC,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAA;AAChC,OAAO,EAAC,WAAW,EAAC,MAAM,UAAU,CAAA;AAEpC,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,YAAY;IAChD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC9B;AAED,eAAO,MAAM,UAAU,EAAE,YAAY,CAAC,KAAK,CAAkD,CAAA;AAE7F,MAAM,WAAW,aAAa,CAAC,MAAM,GAAG,IAAI;IACxC,eAAe,CAAC,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAA;IAC3C,gBAAgB,CAAC,CAAC,MAAM,SAAS,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;IAC5E,iBAAiB,CAAC,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAA;IAC/C,mBAAmB,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAAA;IACnD,UAAU,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAA;CACpC;AAED,MAAM,WAAW,SAAS;IACtB,MAAM,CAAC,OAAO,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;CACzH;AAED,MAAM,WAAW,MAAM,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,EAAE,CAAC,SAAS,MAAM,GAAG,GAAG,CAAE,SAAQ,WAAW,EAAE,SAAS;IACjH,IAAI,GAAG,IAAI,GAAG,CAAA;IACd,IAAI,KAAK,IAAI,QAAQ,CAAA;IACrB,IAAI,MAAM,IAAI,MAAM,CAAA;IACpB,IAAI,UAAU,IAAI,UAAU,CAAA;IAC5B,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAAA;IAEnC,KAAK,IAAI,IAAI,IAAI,GAAG,CAAA;IACpB,OAAO,IAAI,IAAI,IAAI,KAAK,CAAA;IACxB,UAAU,IAAI,OAAO,CAAA;IACrB,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC1C,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;IAC5B,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;CAClC"}
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.27",
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.27",
26
- "@opendaw/lib-std": "^0.0.27"
25
+ "@opendaw/lib-runtime": "^0.0.28",
26
+ "@opendaw/lib-std": "^0.0.28"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@opendaw/eslint-config": "^0.0.19",
30
30
  "@opendaw/typescript-config": "^0.0.20"
31
31
  },
32
- "gitHead": "e94fe3bfdfa1c24ba8d16a695ebf7345286f3a32"
32
+ "gitHead": "ef80742a992e09362277ff87ec1b79ded515f9e5"
33
33
  }