@opendaw/lib-box 0.0.13 → 0.0.14
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/README.md +39 -1
- package/dist/box.d.ts +1 -1
- package/dist/box.d.ts.map +1 -1
- package/dist/graph-edges.d.ts +3 -2
- package/dist/graph-edges.d.ts.map +1 -1
- package/dist/graph-edges.js +6 -6
- package/dist/graph.d.ts +0 -1
- package/dist/graph.d.ts.map +1 -1
- package/dist/graph.js +25 -27
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/indexed-box.d.ts +15 -0
- package/dist/indexed-box.d.ts.map +1 -0
- package/dist/indexed-box.js +29 -0
- package/dist/pointer-hub.d.ts +1 -2
- package/dist/pointer-hub.d.ts.map +1 -1
- package/dist/pointer-hub.js +22 -16
- package/dist/pointer.d.ts +1 -1
- package/dist/pointer.d.ts.map +1 -1
- package/dist/pointer.js +1 -8
- package/dist/sync-source.js +1 -1
- package/dist/updates.d.ts +3 -3
- package/dist/updates.d.ts.map +1 -1
- package/dist/updates.js +12 -12
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -1 +1,39 @@
|
|
|
1
|
-
|
|
1
|
+
_This package is part of the openDAW SDK_
|
|
2
|
+
|
|
3
|
+
# @opendaw/lib-box
|
|
4
|
+
|
|
5
|
+
Graph-based object modeling system with serialization, transactions, and pointer management for TypeScript projects.
|
|
6
|
+
|
|
7
|
+
## Core Architecture
|
|
8
|
+
|
|
9
|
+
* **box.ts** - Core Box class for graph nodes with field management
|
|
10
|
+
* **vertex.ts** - Vertex interface and visitor pattern definitions
|
|
11
|
+
* **graph.ts** - BoxGraph class for managing object relationships
|
|
12
|
+
* **field.ts** - Field abstraction for object properties
|
|
13
|
+
* **address.ts** - Addressing system for graph navigation
|
|
14
|
+
|
|
15
|
+
## Field Types
|
|
16
|
+
|
|
17
|
+
* **primitive.ts** - Primitive field types (boolean, number, string)
|
|
18
|
+
* **array.ts** - Array field implementations
|
|
19
|
+
* **object.ts** - Object field for nested structures
|
|
20
|
+
* **pointer.ts** - Pointer field for object references
|
|
21
|
+
|
|
22
|
+
## Graph Management
|
|
23
|
+
|
|
24
|
+
* **graph-edges.ts** - Edge management for graph relationships
|
|
25
|
+
* **pointer-hub.ts** - Hub for managing incoming pointer connections
|
|
26
|
+
* **dispatchers.ts** - Event dispatching system for updates
|
|
27
|
+
* **updates.ts** - Update event definitions and handling
|
|
28
|
+
|
|
29
|
+
## Serialization & Persistence
|
|
30
|
+
|
|
31
|
+
* **serializer.ts** - Serialization utilities for objects
|
|
32
|
+
* **sync.ts** - Synchronization utilities
|
|
33
|
+
* **sync-source.ts** - Source-side synchronization
|
|
34
|
+
* **sync-target.ts** - Target-side synchronization
|
|
35
|
+
|
|
36
|
+
## Editing & Transactions
|
|
37
|
+
|
|
38
|
+
* **editing.ts** - Undo/redo system for graph modifications
|
|
39
|
+
* **indexed-box.ts** - Indexed box implementation for efficient lookups
|
package/dist/box.d.ts
CHANGED
|
@@ -42,7 +42,7 @@ export declare abstract class Box<P extends PointerTypes = PointerTypes, F exten
|
|
|
42
42
|
serialize(): ArrayBufferLike;
|
|
43
43
|
toArrayBuffer(): ArrayBufferLike;
|
|
44
44
|
incomingEdges(): ReadonlyArray<PointerField>;
|
|
45
|
-
outgoingEdges(): ReadonlyArray<[PointerField,
|
|
45
|
+
outgoingEdges(): ReadonlyArray<[PointerField, Address]>;
|
|
46
46
|
mapFields<T>(map: Func<Field, T>, ...keys: FieldKey[]): ReadonlyArray<T>;
|
|
47
47
|
searchVertex(keys: FieldKeys): Option<Vertex>;
|
|
48
48
|
delete(): 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,EAEH,OAAO,EACP,MAAM,EACN,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,MAAM,CAAA;IACjB,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,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAEjI,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC;IACzB,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;IAMhC,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,QAAQ,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC;IAWxE,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/graph-edges.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Address } from "./address";
|
|
1
2
|
import { PointerField } from "./pointer";
|
|
2
3
|
import { Vertex } from "./vertex";
|
|
3
4
|
import { Box } from "./box";
|
|
@@ -6,9 +7,9 @@ export declare class GraphEdges {
|
|
|
6
7
|
constructor();
|
|
7
8
|
watchVertex(vertex: Vertex | PointerField): void;
|
|
8
9
|
unwatchVerticesOf(...boxes: ReadonlyArray<Box>): void;
|
|
9
|
-
connect(source: PointerField, target:
|
|
10
|
+
connect(source: PointerField, target: Address): void;
|
|
10
11
|
disconnect(source: PointerField): void;
|
|
11
|
-
outgoingEdgesOf(box: Box): ReadonlyArray<[PointerField,
|
|
12
|
+
outgoingEdgesOf(box: Box): ReadonlyArray<[PointerField, Address]>;
|
|
12
13
|
incomingEdgesOf(vertex: Box | Vertex): ReadonlyArray<PointerField>;
|
|
13
14
|
validateRequirements(): void;
|
|
14
15
|
verifyPointers(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-edges.d.ts","sourceRoot":"","sources":["../src/graph-edges.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph-edges.d.ts","sourceRoot":"","sources":["../src/graph-edges.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,YAAY,EAAC,MAAM,WAAW,CAAA;AACtC,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAA;AAEzB,qBAAa,UAAU;;;IAanB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAchD,iBAAiB,CAAC,GAAG,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI;IAoBrD,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAQpD,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAOtC,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAIjE,eAAe,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC;IASlE,oBAAoB,IAAI,IAAI;IAqB5B,cAAc,IAAI,IAAI;CAgBzB"}
|
package/dist/graph-edges.js
CHANGED
|
@@ -9,7 +9,7 @@ export class GraphEdges {
|
|
|
9
9
|
constructor() {
|
|
10
10
|
this.#requiresTarget = Address.newSet(source => source.address);
|
|
11
11
|
this.#requiresPointer = Address.newSet(vertex => vertex.address);
|
|
12
|
-
this.#incoming = Address.newSet(([
|
|
12
|
+
this.#incoming = Address.newSet(([address]) => address);
|
|
13
13
|
this.#outgoing = Address.newSet(([source]) => source.address);
|
|
14
14
|
}
|
|
15
15
|
watchVertex(vertex) {
|
|
@@ -45,17 +45,17 @@ export class GraphEdges {
|
|
|
45
45
|
}
|
|
46
46
|
connect(source, target) {
|
|
47
47
|
this.#outgoing.add([source, target]);
|
|
48
|
-
this.#incoming.opt(target
|
|
48
|
+
this.#incoming.opt(target).match({
|
|
49
49
|
none: () => this.#incoming.add([target, [source]]),
|
|
50
50
|
some: ([, sources]) => sources.push(source)
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
disconnect(source) {
|
|
54
54
|
const [, target] = this.#outgoing.removeByKey(source.address);
|
|
55
|
-
const [, sources] = this.#incoming.get(target
|
|
55
|
+
const [, sources] = this.#incoming.get(target);
|
|
56
56
|
Arrays.remove(sources, source);
|
|
57
57
|
if (sources.length === 0) {
|
|
58
|
-
this.#incoming.removeByKey(target
|
|
58
|
+
this.#incoming.removeByKey(target);
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
outgoingEdgesOf(box) {
|
|
@@ -63,7 +63,7 @@ export class GraphEdges {
|
|
|
63
63
|
}
|
|
64
64
|
incomingEdgesOf(vertex) {
|
|
65
65
|
if (vertex.isBox()) {
|
|
66
|
-
return this.#collectSameBox(this.#incoming, vertex.address.uuid, ([{
|
|
66
|
+
return this.#collectSameBox(this.#incoming, vertex.address.uuid, ([{ uuid }]) => uuid)
|
|
67
67
|
.flatMap(([_, pointers]) => pointers);
|
|
68
68
|
}
|
|
69
69
|
else {
|
|
@@ -94,7 +94,7 @@ export class GraphEdges {
|
|
|
94
94
|
}
|
|
95
95
|
verifyPointers() {
|
|
96
96
|
this.#requiresTarget.forEach(pointer => assert(pointer.isAttached(), `${pointer.address.toString()} is not attached`));
|
|
97
|
-
this.#requiresPointer.forEach(
|
|
97
|
+
this.#requiresPointer.forEach(vertex => assert(vertex.isAttached(), `${vertex.address.toString()} is not attached`));
|
|
98
98
|
}
|
|
99
99
|
#collectSameBox(set, id, map) {
|
|
100
100
|
const range = Address.boxRange(set, id, map);
|
package/dist/graph.d.ts
CHANGED
|
@@ -26,7 +26,6 @@ export declare class BoxGraph<BoxMap = any> {
|
|
|
26
26
|
endTransaction(): void;
|
|
27
27
|
inTransaction(): boolean;
|
|
28
28
|
constructingBox(): boolean;
|
|
29
|
-
resolvePointers(): void;
|
|
30
29
|
createBox(name: keyof BoxMap, uuid: UUID.Format, constructor: Procedure<Box>): void;
|
|
31
30
|
stageBox<B extends Box>(box: B, constructor?: Procedure<B>): B;
|
|
32
31
|
subscribeTransaction(listener: TransactionListener): Subscription;
|
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,EAKH,IAAI,EACJ,GAAG,
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"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"}
|
package/dist/graph.js
CHANGED
|
@@ -33,7 +33,10 @@ export class BoxGraph {
|
|
|
33
33
|
endTransaction() {
|
|
34
34
|
assert(this.#inTransaction, "No transaction in progress");
|
|
35
35
|
this.#inTransaction = false;
|
|
36
|
-
this.
|
|
36
|
+
if (this.#deferredPointerUpdates.length > 0) {
|
|
37
|
+
this.#deferredPointerUpdates.forEach(({ pointerField, update }) => this.#processPointerVertexUpdate(pointerField, update));
|
|
38
|
+
this.#deferredPointerUpdates.length = 0;
|
|
39
|
+
}
|
|
37
40
|
// it is possible that new observers will be added while executing
|
|
38
41
|
while (this.#finalizeTransactionObservers.length > 0) {
|
|
39
42
|
this.#finalizeTransactionObservers.splice(0).forEach(observer => observer());
|
|
@@ -45,13 +48,6 @@ export class BoxGraph {
|
|
|
45
48
|
}
|
|
46
49
|
inTransaction() { return this.#inTransaction; }
|
|
47
50
|
constructingBox() { return this.#constructingBox; }
|
|
48
|
-
resolvePointers() {
|
|
49
|
-
if (this.#deferredPointerUpdates.length === 0) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
this.#deferredPointerUpdates.forEach(({ pointerField, update }) => this.#processPointerValueUpdate(pointerField, update));
|
|
53
|
-
this.#deferredPointerUpdates.length = 0;
|
|
54
|
-
}
|
|
55
51
|
createBox(name, uuid, constructor) {
|
|
56
52
|
this.#boxFactory.unwrap("No box-factory installed")(name, this, uuid, constructor);
|
|
57
53
|
}
|
|
@@ -116,29 +112,29 @@ export class BoxGraph {
|
|
|
116
112
|
}
|
|
117
113
|
onPointerAddressUpdated(pointerField, oldValue, newValue) {
|
|
118
114
|
this.#assertTransaction();
|
|
115
|
+
if (oldValue.nonEmpty()) {
|
|
116
|
+
this.#edges.disconnect(pointerField);
|
|
117
|
+
}
|
|
118
|
+
if (newValue.nonEmpty()) {
|
|
119
|
+
this.#edges.connect(pointerField, newValue.unwrap());
|
|
120
|
+
}
|
|
119
121
|
const update = new PointerUpdate(pointerField.address, oldValue, newValue);
|
|
120
122
|
if (this.#constructingBox) {
|
|
121
123
|
this.#deferredPointerUpdates.push({ pointerField, update });
|
|
122
124
|
}
|
|
123
125
|
else {
|
|
124
|
-
this.#
|
|
126
|
+
this.#processPointerVertexUpdate(pointerField, update);
|
|
125
127
|
this.#immediateUpdateListeners.proxy.onUpdate(update);
|
|
126
128
|
}
|
|
127
129
|
}
|
|
128
|
-
#
|
|
129
|
-
const {
|
|
130
|
-
const oldVertex =
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
if (oldVertex
|
|
134
|
-
oldVertex
|
|
135
|
-
newVertex
|
|
136
|
-
if (oldVertex !== null) {
|
|
137
|
-
this.#edges.disconnect(pointerField);
|
|
138
|
-
}
|
|
139
|
-
if (newVertex !== null) {
|
|
140
|
-
this.#edges.connect(pointerField, newVertex);
|
|
141
|
-
}
|
|
130
|
+
#processPointerVertexUpdate(pointerField, update) {
|
|
131
|
+
const { oldAddress, newAddress } = update;
|
|
132
|
+
const oldVertex = oldAddress.flatMap(address => this.findVertex(address));
|
|
133
|
+
const newVertex = newAddress.flatMap(address => this.findVertex(address));
|
|
134
|
+
pointerField.resolvedTo(newVertex);
|
|
135
|
+
if (!oldVertex.equals(newVertex)) {
|
|
136
|
+
oldVertex.ifSome(vertex => vertex.pointerHub.onRemoved(pointerField));
|
|
137
|
+
newVertex.ifSome(vertex => vertex.pointerHub.onAdded(pointerField));
|
|
142
138
|
}
|
|
143
139
|
this.#dispatchers.dispatch(update);
|
|
144
140
|
this.#updateListeners.proxy.onUpdate(update);
|
|
@@ -153,11 +149,13 @@ export class BoxGraph {
|
|
|
153
149
|
boxes.add(box);
|
|
154
150
|
box.outgoingEdges()
|
|
155
151
|
.filter(([pointer]) => !pointers.has(pointer))
|
|
156
|
-
.forEach(([source,
|
|
152
|
+
.forEach(([source, targetAddress]) => {
|
|
153
|
+
const targetVertex = this.findVertex(targetAddress)
|
|
154
|
+
.unwrap(`Could not find target of ${source.toString()}`);
|
|
157
155
|
pointers.add(source);
|
|
158
|
-
if (
|
|
159
|
-
|
|
160
|
-
return trace(
|
|
156
|
+
if (targetVertex.pointerRules.mandatory &&
|
|
157
|
+
targetVertex.pointerHub.incoming().every(pointer => pointers.has(pointer))) {
|
|
158
|
+
return trace(targetVertex.box);
|
|
161
159
|
}
|
|
162
160
|
});
|
|
163
161
|
box.incomingEdges()
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AACrB,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AACrB,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Field } from "./field";
|
|
2
|
+
import { Class, int } from "@opendaw/lib-std";
|
|
3
|
+
import { Int32Field } from "./primitive";
|
|
4
|
+
import { Box } from "./box";
|
|
5
|
+
/**
|
|
6
|
+
* Utility functions for managing indexed box collections with automatic index adjustment.
|
|
7
|
+
*/
|
|
8
|
+
export type IndexedBox = Box & Record<"index", Int32Field>;
|
|
9
|
+
export declare namespace IndexedBox {
|
|
10
|
+
const insertOrder: (field: Field, insertIndex?: int) => int;
|
|
11
|
+
const removeOrder: (field: Field, removeIndex: int) => void;
|
|
12
|
+
const isIndexedBox: (box: Box) => box is IndexedBox;
|
|
13
|
+
const collectIndexedBoxes: <B extends IndexedBox>(field: Field, type?: Class<B>) => ReadonlyArray<B>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=indexed-box.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexed-box.d.ts","sourceRoot":"","sources":["../src/indexed-box.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAQ,KAAK,EAAE,GAAG,EAAQ,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAA;AACtC,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAA;AAEzB;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;AAE1D,yBAAiB,UAAU,CAAC;IACjB,MAAM,WAAW,GAAI,OAAO,KAAK,EAAE,cAAa,GAA6B,KAAG,GAStF,CAAA;IAEM,MAAM,WAAW,GAAI,OAAO,KAAK,EAAE,aAAa,GAAG,KAAG,IAO5D,CAAA;IAEM,MAAM,YAAY,GAAI,KAAK,GAAG,KAAG,GAAG,IAAI,UAA+D,CAAA;IAEvG,MAAM,mBAAmB,GAAI,CAAC,SAAS,UAAU,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAG,aAAa,CAAC,CAAC,CAKzC,CAAA;CACnE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { clamp, panic } from "@opendaw/lib-std";
|
|
2
|
+
import { Int32Field } from "./primitive";
|
|
3
|
+
export var IndexedBox;
|
|
4
|
+
(function (IndexedBox) {
|
|
5
|
+
IndexedBox.insertOrder = (field, insertIndex = Number.MAX_SAFE_INTEGER) => {
|
|
6
|
+
const boxes = IndexedBox.collectIndexedBoxes(field);
|
|
7
|
+
const newIndex = clamp(insertIndex, 0, boxes.length);
|
|
8
|
+
if (newIndex < boxes.length) {
|
|
9
|
+
for (let index = newIndex; index < boxes.length; index++) {
|
|
10
|
+
boxes[index].index.setValue(index + 1);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return newIndex;
|
|
14
|
+
};
|
|
15
|
+
IndexedBox.removeOrder = (field, removeIndex) => {
|
|
16
|
+
const boxes = IndexedBox.collectIndexedBoxes(field);
|
|
17
|
+
if (removeIndex < boxes.length) {
|
|
18
|
+
for (let index = removeIndex + 1; index < boxes.length; index++) {
|
|
19
|
+
boxes[index].index.setValue(index - 1);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
IndexedBox.isIndexedBox = (box) => "index" in box && box.index instanceof Int32Field;
|
|
24
|
+
IndexedBox.collectIndexedBoxes = (field, type) => field.pointerHub.incoming()
|
|
25
|
+
.map(({ box }) => IndexedBox.isIndexedBox(box) && (type === undefined || box instanceof type)
|
|
26
|
+
? box
|
|
27
|
+
: panic(`${box} has no index field`))
|
|
28
|
+
.sort((a, b) => a.index.getValue() - b.index.getValue());
|
|
29
|
+
})(IndexedBox || (IndexedBox = {}));
|
package/dist/pointer-hub.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export interface PointerListener {
|
|
|
5
5
|
onAdd(pointer: PointerField): void;
|
|
6
6
|
onRemove(pointer: PointerField): void;
|
|
7
7
|
}
|
|
8
|
-
export declare class PointerHub
|
|
8
|
+
export declare class PointerHub {
|
|
9
9
|
#private;
|
|
10
10
|
static validate(pointer: PointerField, target: Vertex): Option<string>;
|
|
11
11
|
constructor(vertex: Vertex);
|
|
@@ -20,7 +20,6 @@ export declare class PointerHub implements Iterable<PointerField> {
|
|
|
20
20
|
incoming(): ReadonlyArray<PointerField>;
|
|
21
21
|
onAdded(pointerField: PointerField): void;
|
|
22
22
|
onRemoved(pointerField: PointerField): void;
|
|
23
|
-
[Symbol.iterator](): Iterator<PointerField>;
|
|
24
23
|
toString(): string;
|
|
25
24
|
}
|
|
26
25
|
//# sourceMappingURL=pointer-hub.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointer-hub.d.ts","sourceRoot":"","sources":["../src/pointer-hub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,WAAW,CAAA;AACpD,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAO,GAAG,EAAwB,MAAM,EAAoB,YAAY,EAAC,MAAM,kBAAkB,CAAA;AAGxG,MAAM,WAAW,eAAe;IAC5B,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;CACxC;
|
|
1
|
+
{"version":3,"file":"pointer-hub.d.ts","sourceRoot":"","sources":["../src/pointer-hub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,WAAW,CAAA;AACpD,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAO,GAAG,EAAwB,MAAM,EAAoB,YAAY,EAAC,MAAM,kBAAkB,CAAA;AAGxG,MAAM,WAAW,eAAe;IAC5B,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;CACxC;AAID,qBAAa,UAAU;;IACnB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;gBAkB1D,MAAM,EAAE,MAAM;IAO1B,kBAAkB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,GAAG,YAAY;IAInG,oBAAoB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,GAAG,YAAY;IAIrG,8BAA8B,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,GAAG,YAAY;IAoB/G,MAAM,CAAC,CAAC,SAAS,YAAY,EAAE,GAAG,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAMlF,IAAI,IAAI,GAAG;IACX,OAAO,IAAI,OAAO;IAClB,QAAQ,IAAI,OAAO;IACnB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IACxC,QAAQ,IAAI,aAAa,CAAC,YAAY,CAAC;IAEvC,OAAO,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAYzC,SAAS,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAU3C,QAAQ,IAAI,MAAM;CAsCrB"}
|
package/dist/pointer-hub.js
CHANGED
|
@@ -30,9 +30,9 @@ export class PointerHub {
|
|
|
30
30
|
const added = Address.newSet(pointer => pointer.address);
|
|
31
31
|
added.addMany(this.filter(...filter));
|
|
32
32
|
added.forEach(pointer => listener.onAdd(pointer));
|
|
33
|
-
// This takes track of the
|
|
33
|
+
// This takes track of the listener notification state.
|
|
34
34
|
// It is possible that the pointer has been added, but it has not been notified yet.
|
|
35
|
-
// That would cause the listener.onAdd method to be
|
|
35
|
+
// That would cause the listener.onAdd method to be invoked twice.
|
|
36
36
|
return this.subscribeTransactual({
|
|
37
37
|
onAdd: (pointer) => {
|
|
38
38
|
if (added.add(pointer)) {
|
|
@@ -46,7 +46,7 @@ export class PointerHub {
|
|
|
46
46
|
}, ...filter);
|
|
47
47
|
}
|
|
48
48
|
filter(...types) {
|
|
49
|
-
return (types.length === 0 ? this.incoming() : Iterables.filter(this, (pointerField) => types.some((type) => type === pointerField.pointerType)));
|
|
49
|
+
return (types.length === 0 ? this.incoming() : Iterables.filter(this.incoming().values(), (pointerField) => types.some((type) => type === pointerField.pointerType)));
|
|
50
50
|
}
|
|
51
51
|
size() { return this.incoming().length; }
|
|
52
52
|
isEmpty() { return this.size() === 0; }
|
|
@@ -60,20 +60,25 @@ export class PointerHub {
|
|
|
60
60
|
}
|
|
61
61
|
if (this.#inTransaction.isEmpty()) {
|
|
62
62
|
this.#vertex.graph.subscribeEndTransaction(this.#onEndTransaction);
|
|
63
|
-
this.#inTransaction = Option.wrap(
|
|
63
|
+
this.#inTransaction = Option.wrap([{ type: "add", pointerField }]);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this.#inTransaction.unwrap().push({ type: "add", pointerField });
|
|
64
67
|
}
|
|
65
68
|
this.#immediateListeners.proxy.onAdd(pointerField);
|
|
66
69
|
}
|
|
67
70
|
onRemoved(pointerField) {
|
|
68
71
|
if (this.#inTransaction.isEmpty()) {
|
|
69
72
|
this.#vertex.graph.subscribeEndTransaction(this.#onEndTransaction);
|
|
70
|
-
this.#inTransaction = Option.wrap(
|
|
73
|
+
this.#inTransaction = Option.wrap([{ type: "remove", pointerField }]);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
this.#inTransaction.unwrap().push({ type: "remove", pointerField });
|
|
71
77
|
}
|
|
72
78
|
this.#immediateListeners.proxy.onRemove(pointerField);
|
|
73
79
|
}
|
|
74
|
-
[Symbol.iterator]() { return this.incoming().values(); }
|
|
75
80
|
toString() {
|
|
76
|
-
return `{Pointers ${this.#vertex.address}, pointers: ${
|
|
81
|
+
return `{Pointers ${this.#vertex.address}, pointers: ${this.incoming().values()
|
|
77
82
|
.map((pointerField) => pointerField.toString())}}`;
|
|
78
83
|
}
|
|
79
84
|
#addFilteredListener(listeners, listener, filter) {
|
|
@@ -92,18 +97,19 @@ export class PointerHub {
|
|
|
92
97
|
}
|
|
93
98
|
#onEndTransaction = () => {
|
|
94
99
|
if (this.#vertex.isAttached()) {
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
this.#transactualListeners.proxy.onRemove(pointer);
|
|
100
|
+
const log = this.#inTransaction.unwrap("Callback without ChangeLog");
|
|
101
|
+
log.forEach(({ type, pointerField }) => {
|
|
102
|
+
if (type === "add") {
|
|
103
|
+
this.#transactualListeners.proxy.onAdd(pointerField);
|
|
100
104
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
+
else if (type === "remove") {
|
|
106
|
+
this.#transactualListeners.proxy.onRemove(pointerField);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
panic(`Unknown type: ${type}`);
|
|
105
110
|
}
|
|
106
111
|
});
|
|
112
|
+
log.length = 0;
|
|
107
113
|
}
|
|
108
114
|
this.#inTransaction = Option.None;
|
|
109
115
|
};
|
package/dist/pointer.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export declare class PointerField<P extends PointerTypes = PointerTypes> extends
|
|
|
24
24
|
set targetAddress(newValue: Option<Address>);
|
|
25
25
|
isEmpty(): boolean;
|
|
26
26
|
nonEmpty(): boolean;
|
|
27
|
-
|
|
27
|
+
resolvedTo(newTarget: Option<Vertex>): void;
|
|
28
28
|
read(input: DataInput): void;
|
|
29
29
|
write(output: DataOutput): void;
|
|
30
30
|
}
|
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,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAsB,YAAY,EAAC,MAAM,kBAAkB,CAAA;AACnH,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,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;IAU1E,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,OAAO,CAAC,MAAM,CAAC;IAI/D,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,
|
|
1
|
+
{"version":3,"file":"pointer.d.ts","sourceRoot":"","sources":["../src/pointer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAsB,YAAY,EAAC,MAAM,kBAAkB,CAAA;AACnH,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,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;IAU1E,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,OAAO,CAAC,MAAM,CAAC;IAI/D,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;IAIrB,KAAK,CAAC,MAAM,EAAE,UAAU;CAS3B"}
|
package/dist/pointer.js
CHANGED
|
@@ -63,14 +63,7 @@ export class PointerField extends Field {
|
|
|
63
63
|
}
|
|
64
64
|
isEmpty() { return this.targetAddress.isEmpty(); }
|
|
65
65
|
nonEmpty() { return this.targetAddress.nonEmpty(); }
|
|
66
|
-
|
|
67
|
-
const targetAddress = this.targetAddress;
|
|
68
|
-
const target = targetAddress.flatMap((address) => this.graph.findVertex(address));
|
|
69
|
-
if (targetAddress.nonEmpty() && target.isEmpty()) {
|
|
70
|
-
return panic(`${targetAddress.unwrapOrNull()?.toString()} could not be resolved`);
|
|
71
|
-
}
|
|
72
|
-
this.#targetVertex = target;
|
|
73
|
-
}
|
|
66
|
+
resolvedTo(newTarget) { this.#targetVertex = newTarget; }
|
|
74
67
|
read(input) {
|
|
75
68
|
this.targetAddress = input.readBoolean() ? Option.wrap(Address.read(input)) : Option.None;
|
|
76
69
|
}
|
package/dist/sync-source.js
CHANGED
|
@@ -52,7 +52,7 @@ export class SyncSource {
|
|
|
52
52
|
updates.push({
|
|
53
53
|
type: "update-pointer",
|
|
54
54
|
address: update.address.decompose(),
|
|
55
|
-
target: update.
|
|
55
|
+
target: update.newAddress.unwrapOrNull()?.decompose()
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
58
|
else if (update.type === "delete") {
|
package/dist/updates.d.ts
CHANGED
|
@@ -43,10 +43,10 @@ export declare class PrimitiveUpdate<V extends PrimitiveValues = PrimitiveValues
|
|
|
43
43
|
export declare class PointerUpdate implements Modification {
|
|
44
44
|
#private;
|
|
45
45
|
readonly type = "pointer";
|
|
46
|
-
constructor(address: Address,
|
|
46
|
+
constructor(address: Address, oldAddress: Option<Address>, newAddress: Option<Address>);
|
|
47
47
|
get address(): Address;
|
|
48
|
-
get
|
|
49
|
-
get
|
|
48
|
+
get oldAddress(): Option<Address>;
|
|
49
|
+
get newAddress(): Option<Address>;
|
|
50
50
|
matches(field: PointerField): boolean;
|
|
51
51
|
inverse(graph: BoxGraph): void;
|
|
52
52
|
forward(graph: BoxGraph): void;
|
package/dist/updates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updates.d.ts","sourceRoot":"","sources":["../src/updates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAiB,eAAe,EAAE,kBAAkB,EAAC,MAAM,aAAa,CAAA;AAC9F,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,YAAY,EAAC,MAAM,WAAW,CAAA;AACtC,OAAO,EAAyB,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAC5F,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAA;AAEhC,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,eAAe,GAAG,aAAa,GAAG,YAAY,CAAA;AAE/E,yBAAiB,OAAO,CAAC;IACd,MAAM,MAAM,GAAI,OAAO,SAAS,KAAG,aAAa,CAAC,MAAM,CAmC7D,CAAA;CACJ;AAED,UAAU,YAAY;IAClB,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAA;IAC9B,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAA;IAC9B,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;CAClC;AAED,qBAAa,SAAU,YAAW,YAAY;;IAC1C,QAAQ,CAAC,IAAI,SAAQ;gBAMT,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe;IAMtE,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAoB;IAC3C,IAAI,IAAI,IAAI,MAAM,CAAoB;IACtC,IAAI,QAAQ,IAAI,eAAe,CAAwB;IAEvD,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI9B,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI9B,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAQ/B,QAAQ,IAAI,MAAM;IAIlB,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM;CAC1C;AAED,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,aAAa,CAAA;AAEzD,qBAAa,eAAe,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,CAAE,YAAW,YAAY;;IAC7F,QAAQ,CAAC,IAAI,eAAc;gBAOf,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;IAO5F,IAAI,OAAO,IAAI,OAAO,CAAuB;IAC7C,IAAI,QAAQ,IAAI,CAAC,CAAwB;IACzC,IAAI,QAAQ,IAAI,CAAC,CAAwB;IAEzC,OAAO,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO;IAEvC,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAC9B,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAE9B,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC;IAKzC,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAQ/B,QAAQ,IAAI,MAAM;CAGrB;AAED,qBAAa,aAAc,YAAW,YAAY;;IAC9C,QAAQ,CAAC,IAAI,aAAY;gBAMb,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"updates.d.ts","sourceRoot":"","sources":["../src/updates.ts"],"names":[],"mappings":"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"}
|
package/dist/updates.js
CHANGED
|
@@ -107,19 +107,19 @@ export class PrimitiveUpdate {
|
|
|
107
107
|
export class PointerUpdate {
|
|
108
108
|
type = "pointer";
|
|
109
109
|
#address;
|
|
110
|
-
#
|
|
111
|
-
#
|
|
112
|
-
constructor(address,
|
|
110
|
+
#oldAddress;
|
|
111
|
+
#newAddress;
|
|
112
|
+
constructor(address, oldAddress, newAddress) {
|
|
113
113
|
this.#address = address;
|
|
114
|
-
this.#
|
|
115
|
-
this.#
|
|
114
|
+
this.#oldAddress = oldAddress;
|
|
115
|
+
this.#newAddress = newAddress;
|
|
116
116
|
}
|
|
117
117
|
get address() { return this.#address; }
|
|
118
|
-
get
|
|
119
|
-
get
|
|
118
|
+
get oldAddress() { return this.#oldAddress; }
|
|
119
|
+
get newAddress() { return this.#newAddress; }
|
|
120
120
|
matches(field) { return field.address.equals(this.address); }
|
|
121
|
-
inverse(graph) { this.field(graph).targetAddress = this.#
|
|
122
|
-
forward(graph) { this.field(graph).targetAddress = this.#
|
|
121
|
+
inverse(graph) { this.field(graph).targetAddress = this.#oldAddress; }
|
|
122
|
+
forward(graph) { this.field(graph).targetAddress = this.#newAddress; }
|
|
123
123
|
field(graph) {
|
|
124
124
|
return graph.findVertex(this.#address)
|
|
125
125
|
.unwrap(() => `Could not find PointerField at ${this.#address}`);
|
|
@@ -127,14 +127,14 @@ export class PointerUpdate {
|
|
|
127
127
|
write(output) {
|
|
128
128
|
output.writeString(this.type);
|
|
129
129
|
this.#address.write(output);
|
|
130
|
-
this.#
|
|
130
|
+
this.#oldAddress.match({
|
|
131
131
|
none: () => output.writeBoolean(false),
|
|
132
132
|
some: address => {
|
|
133
133
|
output.writeBoolean(true);
|
|
134
134
|
address.write(output);
|
|
135
135
|
}
|
|
136
136
|
});
|
|
137
|
-
this.#
|
|
137
|
+
this.#newAddress.match({
|
|
138
138
|
none: () => output.writeBoolean(false),
|
|
139
139
|
some: address => {
|
|
140
140
|
output.writeBoolean(true);
|
|
@@ -143,7 +143,7 @@ export class PointerUpdate {
|
|
|
143
143
|
});
|
|
144
144
|
}
|
|
145
145
|
toString() {
|
|
146
|
-
return `{PointerUpdate oldValue: ${this.#
|
|
146
|
+
return `{PointerUpdate oldValue: ${this.#oldAddress.unwrapOrNull()}, newValue: ${this.#newAddress.unwrapOrNull()}`;
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
149
|
export class DeleteUpdate {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opendaw/lib-box",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.14",
|
|
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.14",
|
|
26
|
+
"@opendaw/lib-std": "^0.0.14"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@opendaw/eslint-config": "^0.0.
|
|
30
|
-
"@opendaw/typescript-config": "^0.0.
|
|
29
|
+
"@opendaw/eslint-config": "^0.0.14",
|
|
30
|
+
"@opendaw/typescript-config": "^0.0.14"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "fddd4acd15f24bb565b6c11a5f8521284da203d0"
|
|
33
33
|
}
|