@powerhousedao/reactor 5.1.0-dev.22 → 5.1.0-dev.24
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/src/cache/document-meta-cache-types.d.ts +114 -0
- package/dist/src/cache/document-meta-cache-types.d.ts.map +1 -0
- package/dist/src/cache/document-meta-cache-types.js +2 -0
- package/dist/src/cache/document-meta-cache-types.js.map +1 -0
- package/dist/src/cache/document-meta-cache.d.ts +30 -0
- package/dist/src/cache/document-meta-cache.d.ts.map +1 -0
- package/dist/src/cache/document-meta-cache.js +127 -0
- package/dist/src/cache/document-meta-cache.js.map +1 -0
- package/dist/src/client/reactor-client.d.ts +1 -2
- package/dist/src/client/reactor-client.d.ts.map +1 -1
- package/dist/src/client/reactor-client.js.map +1 -1
- package/dist/src/core/reactor-builder.d.ts.map +1 -1
- package/dist/src/core/reactor-builder.js +6 -1
- package/dist/src/core/reactor-builder.js.map +1 -1
- package/dist/src/core/reactor-client-builder.d.ts +2 -1
- package/dist/src/core/reactor-client-builder.d.ts.map +1 -1
- package/dist/src/core/reactor-client-builder.js.map +1 -1
- package/dist/src/core/reactor.d.ts +1 -2
- package/dist/src/core/reactor.d.ts.map +1 -1
- package/dist/src/core/reactor.js +3 -3
- package/dist/src/core/reactor.js.map +1 -1
- package/dist/src/core/types.d.ts +1 -2
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/utils.d.ts +1 -2
- package/dist/src/core/utils.d.ts.map +1 -1
- package/dist/src/core/utils.js +1 -1
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/executor/simple-job-executor.d.ts +13 -2
- package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor.js +156 -185
- package/dist/src/executor/simple-job-executor.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/signer/passthrough-signer.d.ts +9 -3
- package/dist/src/signer/passthrough-signer.d.ts.map +1 -1
- package/dist/src/signer/passthrough-signer.js +13 -0
- package/dist/src/signer/passthrough-signer.js.map +1 -1
- package/dist/src/signer/types.d.ts +2 -22
- package/dist/src/signer/types.d.ts.map +1 -1
- package/dist/src/sync/channels/gql-channel.d.ts +8 -0
- package/dist/src/sync/channels/gql-channel.d.ts.map +1 -1
- package/dist/src/sync/channels/gql-channel.js +35 -7
- package/dist/src/sync/channels/gql-channel.js.map +1 -1
- package/dist/src/sync/channels/utils.d.ts +4 -2
- package/dist/src/sync/channels/utils.d.ts.map +1 -1
- package/dist/src/sync/channels/utils.js +52 -6
- package/dist/src/sync/channels/utils.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,25 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
* Interface for signing actions before submission to the reactor.
|
|
4
|
-
*/
|
|
5
|
-
export interface ISigner {
|
|
6
|
-
/**
|
|
7
|
-
* Signs an action
|
|
8
|
-
*
|
|
9
|
-
* @param action - The action to sign
|
|
10
|
-
* @param abortSignal - Optional abort signal to cancel the signing
|
|
11
|
-
* @returns The signature
|
|
12
|
-
*/
|
|
13
|
-
sign(action: Action, abortSignal?: AbortSignal): Promise<Signature>;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Handler for verifying operation signatures.
|
|
17
|
-
*
|
|
18
|
-
* @param operation - The operation to verify
|
|
19
|
-
* @param publicKey - The public key to verify against (from signer.app.key)
|
|
20
|
-
* @returns Promise that resolves to true if signature is valid, false otherwise
|
|
21
|
-
*/
|
|
22
|
-
export type SignatureVerificationHandler = (operation: Operation, publicKey: string) => Promise<boolean>;
|
|
1
|
+
import type { ISigner, SignatureVerificationHandler } from "document-model";
|
|
2
|
+
export type { SignatureVerificationHandler };
|
|
23
3
|
/**
|
|
24
4
|
* Configuration for signing and verification.
|
|
25
5
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/signer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/signer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAE5E,YAAY,EAAE,4BAA4B,EAAE,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,EAAE,4BAA4B,CAAC;CACzC,CAAC"}
|
|
@@ -81,8 +81,16 @@ export declare class GqlChannel implements IChannel {
|
|
|
81
81
|
private pushSyncOperation;
|
|
82
82
|
/**
|
|
83
83
|
* Serializes a SyncEnvelope for GraphQL transport.
|
|
84
|
+
*
|
|
85
|
+
* Signatures are serialized as comma-separated strings since GraphQL schema
|
|
86
|
+
* defines them as [String!]!. Extra context fields (resultingState, ordinal)
|
|
87
|
+
* are stripped since they are not defined in OperationContextInput.
|
|
84
88
|
*/
|
|
85
89
|
private serializeEnvelope;
|
|
90
|
+
/**
|
|
91
|
+
* Serializes an action for GraphQL transport, converting signature tuples to strings.
|
|
92
|
+
*/
|
|
93
|
+
private serializeAction;
|
|
86
94
|
/**
|
|
87
95
|
* Executes a GraphQL query or mutation against the remote endpoint.
|
|
88
96
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gql-channel.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/gql-channel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gql-channel.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/gql-channel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAgB,YAAY,EAAgB,MAAM,aAAa,CAAC;AAI5E;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sFAAsF;IACtF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,qBAAa,UAAW,YAAW,QAAQ;IACzC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAE5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,OAAO,CAAC,gBAAgB,CAAC,CAAS;gBAGhC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,kBAAkB,EACjC,MAAM,EAAE,gBAAgB;IA4B1B;;OAEG;IACH,QAAQ,IAAI,IAAI;IAQhB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;YACW,IAAI;IAuClB;;OAEG;IACH,OAAO,CAAC,eAAe;IAmBvB;;OAEG;YACW,iBAAiB;IA2E/B;;OAEG;YACW,kBAAkB;IAuBhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;YACW,iBAAiB;IA6B/B;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAoBvB;;OAEG;YACW,cAAc;IA4D5B;;OAEG;IACG,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxD;;OAEG;IACH,SAAS,IAAI;QACX,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;QACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB;CAaF"}
|
|
@@ -66,11 +66,11 @@ export class GqlChannel {
|
|
|
66
66
|
if (this.isShutdown) {
|
|
67
67
|
return;
|
|
68
68
|
}
|
|
69
|
-
this.
|
|
70
|
-
|
|
69
|
+
void this.poll().then(() => {
|
|
70
|
+
this.pollTimer = setTimeout(() => {
|
|
71
71
|
this.startPolling(); // Schedule next poll
|
|
72
|
-
});
|
|
73
|
-
}
|
|
72
|
+
}, this.config.pollIntervalMs);
|
|
73
|
+
});
|
|
74
74
|
}
|
|
75
75
|
/**
|
|
76
76
|
* Polls the remote for new sync envelopes.
|
|
@@ -100,7 +100,7 @@ export class GqlChannel {
|
|
|
100
100
|
return;
|
|
101
101
|
}
|
|
102
102
|
for (const envelope of envelopes) {
|
|
103
|
-
if (envelope.type === "operations" && envelope.operations) {
|
|
103
|
+
if (envelope.type.toLowerCase() === "operations" && envelope.operations) {
|
|
104
104
|
const syncOp = envelopeToSyncOperation(envelope, this.remoteName);
|
|
105
105
|
syncOp.transported();
|
|
106
106
|
this.inbox.add(syncOp);
|
|
@@ -256,6 +256,10 @@ export class GqlChannel {
|
|
|
256
256
|
}
|
|
257
257
|
/**
|
|
258
258
|
* Serializes a SyncEnvelope for GraphQL transport.
|
|
259
|
+
*
|
|
260
|
+
* Signatures are serialized as comma-separated strings since GraphQL schema
|
|
261
|
+
* defines them as [String!]!. Extra context fields (resultingState, ordinal)
|
|
262
|
+
* are stripped since they are not defined in OperationContextInput.
|
|
259
263
|
*/
|
|
260
264
|
serializeEnvelope(envelope) {
|
|
261
265
|
return {
|
|
@@ -269,13 +273,37 @@ export class GqlChannel {
|
|
|
269
273
|
skip: opWithContext.operation.skip,
|
|
270
274
|
error: opWithContext.operation.error,
|
|
271
275
|
id: opWithContext.operation.id,
|
|
272
|
-
action: opWithContext.operation.action,
|
|
276
|
+
action: this.serializeAction(opWithContext.operation.action),
|
|
277
|
+
},
|
|
278
|
+
context: {
|
|
279
|
+
documentId: opWithContext.context.documentId,
|
|
280
|
+
documentType: opWithContext.context.documentType,
|
|
281
|
+
scope: opWithContext.context.scope,
|
|
282
|
+
branch: opWithContext.context.branch,
|
|
273
283
|
},
|
|
274
|
-
context: opWithContext.context,
|
|
275
284
|
})),
|
|
276
285
|
cursor: envelope.cursor,
|
|
277
286
|
};
|
|
278
287
|
}
|
|
288
|
+
/**
|
|
289
|
+
* Serializes an action for GraphQL transport, converting signature tuples to strings.
|
|
290
|
+
*/
|
|
291
|
+
serializeAction(action) {
|
|
292
|
+
const signer = action.context?.signer;
|
|
293
|
+
if (!signer?.signatures) {
|
|
294
|
+
return action;
|
|
295
|
+
}
|
|
296
|
+
return {
|
|
297
|
+
...action,
|
|
298
|
+
context: {
|
|
299
|
+
...action.context,
|
|
300
|
+
signer: {
|
|
301
|
+
...signer,
|
|
302
|
+
signatures: signer.signatures.map((sig) => Array.isArray(sig) ? sig.join(", ") : sig),
|
|
303
|
+
},
|
|
304
|
+
},
|
|
305
|
+
};
|
|
306
|
+
}
|
|
279
307
|
/**
|
|
280
308
|
* Executes a GraphQL query or mutation against the remote endpoint.
|
|
281
309
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gql-channel.js","sourceRoot":"","sources":["../../../../src/sync/channels/gql-channel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gql-channel.js","sourceRoot":"","sources":["../../../../src/sync/channels/gql-channel.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,13 @@ import type { SyncEnvelope } from "../types.js";
|
|
|
4
4
|
* Converts a SyncEnvelope containing operations into a SyncOperation.
|
|
5
5
|
*
|
|
6
6
|
* Extracts the necessary metadata from the envelope's operations to create
|
|
7
|
-
* a sync operation that can be processed by the receiving channel.
|
|
7
|
+
* a sync operation that can be processed by the receiving channel. Also
|
|
8
|
+
* deserializes any signatures from comma-separated strings back to tuples,
|
|
9
|
+
* as GraphQL transport serializes Signature tuples for compatibility.
|
|
8
10
|
*
|
|
9
11
|
* @param envelope - The sync envelope containing operations
|
|
10
12
|
* @param remoteName - The name of the remote this sync operation is associated with
|
|
11
|
-
* @returns A new SyncOperation containing the envelope's operations
|
|
13
|
+
* @returns A new SyncOperation containing the envelope's operations with deserialized signatures
|
|
12
14
|
* @throws Error if envelope has no operations or operations array is empty
|
|
13
15
|
*/
|
|
14
16
|
export declare function envelopeToSyncOperation(envelope: SyncEnvelope, remoteName: string): SyncOperation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAqDhD;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,aAAa,CA2Bf"}
|
|
@@ -1,26 +1,72 @@
|
|
|
1
1
|
import { SyncOperation } from "../sync-operation.js";
|
|
2
2
|
let syncOpCounter = 0;
|
|
3
|
+
/**
|
|
4
|
+
* Deserializes a signature from a comma-separated string back to a tuple.
|
|
5
|
+
*
|
|
6
|
+
* GraphQL serializes Signature tuples as comma-separated strings for transport.
|
|
7
|
+
* This function converts them back to the expected [string, string, string, string, string] format.
|
|
8
|
+
*/
|
|
9
|
+
function deserializeSignature(sig) {
|
|
10
|
+
if (Array.isArray(sig)) {
|
|
11
|
+
return sig;
|
|
12
|
+
}
|
|
13
|
+
return sig.split(", ");
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Deserializes signatures in an operation's signer context from strings back to tuples.
|
|
17
|
+
*
|
|
18
|
+
* When operations are transported via GraphQL, signatures are serialized as comma-separated
|
|
19
|
+
* strings. This function restores them to the Signature tuple format required for verification.
|
|
20
|
+
*/
|
|
21
|
+
function deserializeOperationSignatures(opWithContext) {
|
|
22
|
+
const signer = opWithContext.operation.action.context?.signer;
|
|
23
|
+
if (!signer?.signatures || signer.signatures.length === 0) {
|
|
24
|
+
return opWithContext;
|
|
25
|
+
}
|
|
26
|
+
const deserializedSignatures = signer.signatures.map(deserializeSignature);
|
|
27
|
+
const deserializedOperation = {
|
|
28
|
+
...opWithContext.operation,
|
|
29
|
+
action: {
|
|
30
|
+
...opWithContext.operation.action,
|
|
31
|
+
context: {
|
|
32
|
+
...opWithContext.operation.action.context,
|
|
33
|
+
signer: {
|
|
34
|
+
...signer,
|
|
35
|
+
signatures: deserializedSignatures,
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
return {
|
|
41
|
+
...opWithContext,
|
|
42
|
+
operation: deserializedOperation,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
3
45
|
/**
|
|
4
46
|
* Converts a SyncEnvelope containing operations into a SyncOperation.
|
|
5
47
|
*
|
|
6
48
|
* Extracts the necessary metadata from the envelope's operations to create
|
|
7
|
-
* a sync operation that can be processed by the receiving channel.
|
|
49
|
+
* a sync operation that can be processed by the receiving channel. Also
|
|
50
|
+
* deserializes any signatures from comma-separated strings back to tuples,
|
|
51
|
+
* as GraphQL transport serializes Signature tuples for compatibility.
|
|
8
52
|
*
|
|
9
53
|
* @param envelope - The sync envelope containing operations
|
|
10
54
|
* @param remoteName - The name of the remote this sync operation is associated with
|
|
11
|
-
* @returns A new SyncOperation containing the envelope's operations
|
|
55
|
+
* @returns A new SyncOperation containing the envelope's operations with deserialized signatures
|
|
12
56
|
* @throws Error if envelope has no operations or operations array is empty
|
|
13
57
|
*/
|
|
14
58
|
export function envelopeToSyncOperation(envelope, remoteName) {
|
|
15
59
|
if (!envelope.operations || envelope.operations.length === 0) {
|
|
16
60
|
throw new Error("Cannot create SyncOperation from envelope without operations");
|
|
17
61
|
}
|
|
18
|
-
const
|
|
19
|
-
const firstOp =
|
|
62
|
+
const deserializedOperations = envelope.operations.map(deserializeOperationSignatures);
|
|
63
|
+
const firstOp = deserializedOperations[0];
|
|
20
64
|
const documentId = firstOp.context.documentId;
|
|
21
65
|
const branch = firstOp.context.branch;
|
|
22
|
-
const scopes = [
|
|
66
|
+
const scopes = [
|
|
67
|
+
...new Set(deserializedOperations.map((op) => op.context.scope)),
|
|
68
|
+
];
|
|
23
69
|
const syncOpId = `syncop-${envelope.channelMeta.id}-${Date.now()}-${syncOpCounter++}`;
|
|
24
|
-
return new SyncOperation(syncOpId, remoteName, documentId, scopes, branch,
|
|
70
|
+
return new SyncOperation(syncOpId, remoteName, documentId, scopes, branch, deserializedOperations);
|
|
25
71
|
}
|
|
26
72
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/sync/channels/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/sync/channels/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD,IAAI,aAAa,GAAG,CAAC,CAAC;AAEtB;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,GAAuB;IACnD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAc,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,SAAS,8BAA8B,CACrC,aAAmC;IAEnC,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;IAC9D,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,sBAAsB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAE3E,MAAM,qBAAqB,GAAc;QACvC,GAAG,aAAa,CAAC,SAAS;QAC1B,MAAM,EAAE;YACN,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM;YACjC,OAAO,EAAE;gBACP,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO;gBACzC,MAAM,EAAE;oBACN,GAAG,MAAM;oBACT,UAAU,EAAE,sBAAsB;iBACnC;aACF;SACF;KACF,CAAC;IAEF,OAAO;QACL,GAAG,aAAa;QAChB,SAAS,EAAE,qBAAqB;KACjC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAsB,EACtB,UAAkB;IAElB,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;IACJ,CAAC;IAED,MAAM,sBAAsB,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CACpD,8BAA8B,CAC/B,CAAC;IACF,MAAM,OAAO,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;IAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;IACtC,MAAM,MAAM,GAAG;QACb,GAAG,IAAI,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACjE,CAAC;IAEF,MAAM,QAAQ,GAAG,UAAU,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,aAAa,EAAE,EAAE,CAAC;IAEtF,OAAO,IAAI,aAAa,CACtB,QAAQ,EACR,UAAU,EACV,UAAU,EACV,MAAM,EACN,MAAM,EACN,sBAAsB,CACvB,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powerhousedao/reactor",
|
|
3
|
-
"version": "5.1.0-dev.
|
|
3
|
+
"version": "5.1.0-dev.24",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "https://github.com/powerhouse-inc/powerhouse",
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"kysely": "^0.28.2",
|
|
29
29
|
"kysely-pglite-dialect": "^1.1.1",
|
|
30
30
|
"uuid": "^11.0.5",
|
|
31
|
-
"document-
|
|
32
|
-
"document-
|
|
31
|
+
"document-drive": "5.1.0-dev.24",
|
|
32
|
+
"document-model": "5.1.0-dev.24"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@vitest/coverage-v8": "^3.2.4",
|