@enbox/dwn-sdk-js 0.3.6 → 0.3.8
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/browser.mjs +8 -8
- package/dist/browser.mjs.map +4 -4
- package/dist/esm/generated/precompiled-validators.js +2591 -1435
- package/dist/esm/generated/precompiled-validators.js.map +1 -1
- package/dist/esm/src/core/constants.js +20 -0
- package/dist/esm/src/core/constants.js.map +1 -1
- package/dist/esm/src/core/dwn-error.js +24 -1
- package/dist/esm/src/core/dwn-error.js.map +1 -1
- package/dist/esm/src/core/grant-authorization.js +4 -4
- package/dist/esm/src/core/grant-authorization.js.map +1 -1
- package/dist/esm/src/core/message.js +89 -4
- package/dist/esm/src/core/message.js.map +1 -1
- package/dist/esm/src/core/messages-grant-authorization.js +147 -55
- package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
- package/dist/esm/src/core/protocol-authorization.js +76 -0
- package/dist/esm/src/core/protocol-authorization.js.map +1 -1
- package/dist/esm/src/core/records-grant-authorization.js +40 -15
- package/dist/esm/src/core/records-grant-authorization.js.map +1 -1
- package/dist/esm/src/handlers/messages-read.js +5 -5
- package/dist/esm/src/handlers/messages-read.js.map +1 -1
- package/dist/esm/src/handlers/messages-subscribe.js +109 -7
- package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
- package/dist/esm/src/handlers/messages-sync.js +341 -96
- package/dist/esm/src/handlers/messages-sync.js.map +1 -1
- package/dist/esm/src/handlers/protocols-configure.js +81 -2
- package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
- package/dist/esm/src/handlers/records-count.js +30 -0
- package/dist/esm/src/handlers/records-count.js.map +1 -1
- package/dist/esm/src/handlers/records-delete.js +3 -2
- package/dist/esm/src/handlers/records-delete.js.map +1 -1
- package/dist/esm/src/handlers/records-query.js +30 -0
- package/dist/esm/src/handlers/records-query.js.map +1 -1
- package/dist/esm/src/handlers/records-read.js +3 -2
- package/dist/esm/src/handlers/records-read.js.map +1 -1
- package/dist/esm/src/handlers/records-subscribe.js +31 -0
- package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
- package/dist/esm/src/handlers/records-write.js +36 -11
- package/dist/esm/src/handlers/records-write.js.map +1 -1
- package/dist/esm/src/index.js +2 -0
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/interfaces/messages-read.js +6 -3
- package/dist/esm/src/interfaces/messages-read.js.map +1 -1
- package/dist/esm/src/interfaces/messages-subscribe.js +6 -3
- package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
- package/dist/esm/src/interfaces/messages-sync.js +17 -3
- package/dist/esm/src/interfaces/messages-sync.js.map +1 -1
- package/dist/esm/src/interfaces/protocols-configure.js +5 -2
- package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
- package/dist/esm/src/interfaces/protocols-query.js +8 -4
- package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
- package/dist/esm/src/interfaces/records-count.js +5 -0
- package/dist/esm/src/interfaces/records-count.js.map +1 -1
- package/dist/esm/src/interfaces/records-delete.js +6 -2
- package/dist/esm/src/interfaces/records-delete.js.map +1 -1
- package/dist/esm/src/interfaces/records-query.js +5 -0
- package/dist/esm/src/interfaces/records-query.js.map +1 -1
- package/dist/esm/src/interfaces/records-read.js +6 -3
- package/dist/esm/src/interfaces/records-read.js.map +1 -1
- package/dist/esm/src/interfaces/records-subscribe.js +5 -0
- package/dist/esm/src/interfaces/records-subscribe.js.map +1 -1
- package/dist/esm/src/interfaces/records-write.js +6 -3
- package/dist/esm/src/interfaces/records-write.js.map +1 -1
- package/dist/esm/src/protocols/permissions.js +28 -7
- package/dist/esm/src/protocols/permissions.js.map +1 -1
- package/dist/esm/src/sync/records-projection.js +228 -0
- package/dist/esm/src/sync/records-projection.js.map +1 -0
- package/dist/esm/src/types/message-types.js.map +1 -1
- package/dist/esm/src/types/permission-types.js.map +1 -1
- package/dist/esm/src/utils/permission-scope.js +37 -0
- package/dist/esm/src/utils/permission-scope.js.map +1 -0
- package/dist/esm/tests/core/grant-authorization.spec.js +26 -3
- package/dist/esm/tests/core/grant-authorization.spec.js.map +1 -1
- package/dist/esm/tests/core/records-grant-authorization.spec.js +117 -0
- package/dist/esm/tests/core/records-grant-authorization.spec.js.map +1 -0
- package/dist/esm/tests/features/permissions.spec.js +126 -0
- package/dist/esm/tests/features/permissions.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-read.spec.js +345 -12
- package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-subscribe.spec.js +326 -9
- package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-sync.spec.js +1053 -7
- package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -1
- package/dist/esm/tests/handlers/protocols-configure.spec.js +361 -0
- package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-count.spec.js +75 -2
- package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-query.spec.js +73 -0
- package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-subscribe.spec.js +75 -1
- package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-write.spec.js +15 -0
- package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/messages-get.spec.js +107 -5
- package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/protocols-configure.spec.js +13 -0
- package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-delete.spec.js +12 -0
- package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-query.spec.js +10 -0
- package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-subscribe.spec.js +10 -0
- package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-write.spec.js +33 -0
- package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
- package/dist/esm/tests/sync/records-projection.spec.js +245 -0
- package/dist/esm/tests/sync/records-projection.spec.js.map +1 -0
- package/dist/esm/tests/test-suite.js +2 -0
- package/dist/esm/tests/test-suite.js.map +1 -1
- package/dist/esm/tests/utils/permission-scope.spec.js +66 -0
- package/dist/esm/tests/utils/permission-scope.spec.js.map +1 -0
- package/dist/esm/tests/utils/test-data-generator.js +5 -2
- package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
- package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
- package/dist/types/src/core/constants.d.ts +13 -0
- package/dist/types/src/core/constants.d.ts.map +1 -1
- package/dist/types/src/core/dwn-error.d.ts +24 -1
- package/dist/types/src/core/dwn-error.d.ts.map +1 -1
- package/dist/types/src/core/grant-authorization.d.ts +1 -2
- package/dist/types/src/core/grant-authorization.d.ts.map +1 -1
- package/dist/types/src/core/message.d.ts +41 -1
- package/dist/types/src/core/message.d.ts.map +1 -1
- package/dist/types/src/core/messages-grant-authorization.d.ts +36 -4
- package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -1
- package/dist/types/src/core/protocol-authorization.d.ts +12 -0
- package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
- package/dist/types/src/core/records-grant-authorization.d.ts +6 -0
- package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -1
- package/dist/types/src/handlers/messages-read.d.ts.map +1 -1
- package/dist/types/src/handlers/messages-subscribe.d.ts +2 -1
- package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -1
- package/dist/types/src/handlers/messages-sync.d.ts +31 -0
- package/dist/types/src/handlers/messages-sync.d.ts.map +1 -1
- package/dist/types/src/handlers/protocols-configure.d.ts +3 -0
- package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
- package/dist/types/src/handlers/records-count.d.ts +4 -0
- package/dist/types/src/handlers/records-count.d.ts.map +1 -1
- package/dist/types/src/handlers/records-delete.d.ts.map +1 -1
- package/dist/types/src/handlers/records-query.d.ts +4 -0
- package/dist/types/src/handlers/records-query.d.ts.map +1 -1
- package/dist/types/src/handlers/records-read.d.ts.map +1 -1
- package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
- package/dist/types/src/handlers/records-write.d.ts +1 -0
- package/dist/types/src/handlers/records-write.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +6 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/interfaces/messages-read.d.ts +1 -1
- package/dist/types/src/interfaces/messages-read.d.ts.map +1 -1
- package/dist/types/src/interfaces/messages-subscribe.d.ts +1 -1
- package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -1
- package/dist/types/src/interfaces/messages-sync.d.ts +4 -1
- package/dist/types/src/interfaces/messages-sync.d.ts.map +1 -1
- package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
- package/dist/types/src/interfaces/protocols-query.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-count.d.ts +1 -0
- package/dist/types/src/interfaces/records-count.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-delete.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-query.d.ts +1 -0
- package/dist/types/src/interfaces/records-query.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-read.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-subscribe.d.ts +1 -0
- package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
- package/dist/types/src/protocols/permissions.d.ts +2 -0
- package/dist/types/src/protocols/permissions.d.ts.map +1 -1
- package/dist/types/src/sync/records-projection.d.ts +98 -0
- package/dist/types/src/sync/records-projection.d.ts.map +1 -0
- package/dist/types/src/types/message-types.d.ts +1 -0
- package/dist/types/src/types/message-types.d.ts.map +1 -1
- package/dist/types/src/types/messages-types.d.ts +21 -3
- package/dist/types/src/types/messages-types.d.ts.map +1 -1
- package/dist/types/src/types/permission-types.d.ts +4 -0
- package/dist/types/src/types/permission-types.d.ts.map +1 -1
- package/dist/types/src/types/records-types.d.ts +4 -0
- package/dist/types/src/types/records-types.d.ts.map +1 -1
- package/dist/types/src/types/subscriptions.d.ts +18 -3
- package/dist/types/src/types/subscriptions.d.ts.map +1 -1
- package/dist/types/src/utils/permission-scope.d.ts +29 -0
- package/dist/types/src/utils/permission-scope.d.ts.map +1 -0
- package/dist/types/tests/core/records-grant-authorization.spec.d.ts +2 -0
- package/dist/types/tests/core/records-grant-authorization.spec.d.ts.map +1 -0
- package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/messages-sync.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
- package/dist/types/tests/sync/records-projection.spec.d.ts +2 -0
- package/dist/types/tests/sync/records-projection.spec.d.ts.map +1 -0
- package/dist/types/tests/test-suite.d.ts.map +1 -1
- package/dist/types/tests/utils/permission-scope.spec.d.ts +2 -0
- package/dist/types/tests/utils/permission-scope.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/test-data-generator.d.ts +5 -2
- package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/core/constants.ts +24 -0
- package/src/core/dwn-error.ts +24 -1
- package/src/core/grant-authorization.ts +7 -5
- package/src/core/message.ts +153 -6
- package/src/core/messages-grant-authorization.ts +282 -70
- package/src/core/protocol-authorization.ts +130 -0
- package/src/core/records-grant-authorization.ts +64 -21
- package/src/handlers/messages-read.ts +7 -5
- package/src/handlers/messages-subscribe.ts +149 -9
- package/src/handlers/messages-sync.ts +593 -102
- package/src/handlers/protocols-configure.ts +103 -2
- package/src/handlers/records-count.ts +33 -0
- package/src/handlers/records-delete.ts +3 -2
- package/src/handlers/records-query.ts +33 -0
- package/src/handlers/records-read.ts +3 -2
- package/src/handlers/records-subscribe.ts +34 -0
- package/src/handlers/records-write.ts +62 -11
- package/src/index.ts +7 -3
- package/src/interfaces/messages-read.ts +8 -5
- package/src/interfaces/messages-subscribe.ts +12 -9
- package/src/interfaces/messages-sync.ts +33 -12
- package/src/interfaces/protocols-configure.ts +8 -4
- package/src/interfaces/protocols-query.ts +13 -9
- package/src/interfaces/records-count.ts +7 -0
- package/src/interfaces/records-delete.ts +9 -5
- package/src/interfaces/records-query.ts +7 -0
- package/src/interfaces/records-read.ts +6 -3
- package/src/interfaces/records-subscribe.ts +7 -0
- package/src/interfaces/records-write.ts +25 -17
- package/src/protocols/permissions.ts +47 -9
- package/src/sync/records-projection.ts +328 -0
- package/src/types/message-types.ts +1 -0
- package/src/types/messages-types.ts +23 -3
- package/src/types/permission-types.ts +5 -1
- package/src/types/records-types.ts +5 -1
- package/src/types/subscriptions.ts +19 -3
- package/src/utils/permission-scope.ts +55 -0
|
@@ -2,11 +2,16 @@ import { authenticate } from '../core/auth.js';
|
|
|
2
2
|
import { DwnConstant } from '../core/dwn-constant.js';
|
|
3
3
|
import { Encoder } from '../utils/encoder.js';
|
|
4
4
|
import { hashToHex } from '../smt/smt-utils.js';
|
|
5
|
+
import { Message } from '../core/message.js';
|
|
5
6
|
import { messageReplyFromError } from '../core/message-reply.js';
|
|
6
7
|
import { MessagesGrantAuthorization } from '../core/messages-grant-authorization.js';
|
|
7
8
|
import { MessagesSync } from '../interfaces/messages-sync.js';
|
|
8
|
-
import {
|
|
9
|
+
import { Records } from '../utils/records.js';
|
|
10
|
+
import { RecordsProjection } from '../sync/records-projection.js';
|
|
11
|
+
import { RecordsWrite } from '../interfaces/records-write.js';
|
|
12
|
+
import { SortDirection } from '../types/query-types.js';
|
|
9
13
|
import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
|
|
14
|
+
import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
|
|
10
15
|
/**
|
|
11
16
|
* Maximum inline data size for diff responses — aligned with the
|
|
12
17
|
* {@link DwnConstant.maxDataSizeAllowedToBeEncoded} threshold (30 KB).
|
|
@@ -35,40 +40,21 @@ export class MessagesSyncHandler {
|
|
|
35
40
|
catch (e) {
|
|
36
41
|
return messageReplyFromError(e, 401);
|
|
37
42
|
}
|
|
38
|
-
const { action
|
|
43
|
+
const { action } = message.descriptor;
|
|
44
|
+
const projectionScopes = MessagesSyncHandler.getProjectionScopes(message);
|
|
39
45
|
try {
|
|
40
46
|
switch (action) {
|
|
41
47
|
case 'root': {
|
|
42
|
-
|
|
43
|
-
? await this.deps.stateIndex.getRoot(tenant)
|
|
44
|
-
: await this.deps.stateIndex.getProtocolRoot(tenant, protocol);
|
|
45
|
-
return {
|
|
46
|
-
status: { code: 200, detail: 'OK' },
|
|
47
|
-
root: hashToHex(rootHash),
|
|
48
|
-
};
|
|
48
|
+
return await this.handleRoot(tenant, message, projectionScopes);
|
|
49
49
|
}
|
|
50
50
|
case 'subtree': {
|
|
51
|
-
|
|
52
|
-
const hash = protocol === undefined
|
|
53
|
-
? await this.deps.stateIndex.getSubtreeHash(tenant, bitPath)
|
|
54
|
-
: await this.deps.stateIndex.getProtocolSubtreeHash(tenant, protocol, bitPath);
|
|
55
|
-
return {
|
|
56
|
-
status: { code: 200, detail: 'OK' },
|
|
57
|
-
hash: hashToHex(hash),
|
|
58
|
-
};
|
|
51
|
+
return await this.handleSubtree(tenant, message, projectionScopes);
|
|
59
52
|
}
|
|
60
53
|
case 'leaves': {
|
|
61
|
-
|
|
62
|
-
const leaves = protocol === undefined
|
|
63
|
-
? await this.deps.stateIndex.getLeaves(tenant, bitPath)
|
|
64
|
-
: await this.deps.stateIndex.getProtocolLeaves(tenant, protocol, bitPath);
|
|
65
|
-
return {
|
|
66
|
-
status: { code: 200, detail: 'OK' },
|
|
67
|
-
entries: leaves,
|
|
68
|
-
};
|
|
54
|
+
return await this.handleLeaves(tenant, message, projectionScopes);
|
|
69
55
|
}
|
|
70
56
|
case 'diff': {
|
|
71
|
-
return this.handleDiff(tenant, message);
|
|
57
|
+
return await this.handleDiff(tenant, message);
|
|
72
58
|
}
|
|
73
59
|
default: {
|
|
74
60
|
return {
|
|
@@ -81,6 +67,60 @@ export class MessagesSyncHandler {
|
|
|
81
67
|
return messageReplyFromError(e, 500);
|
|
82
68
|
}
|
|
83
69
|
}
|
|
70
|
+
async handleRoot(tenant, message, projectionScopes) {
|
|
71
|
+
const root = await this.getRootHex(tenant, message.descriptor.protocol, projectionScopes);
|
|
72
|
+
return {
|
|
73
|
+
status: { code: 200, detail: 'OK' },
|
|
74
|
+
root: root,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
async getRootHex(tenant, protocol, projectionScopes) {
|
|
78
|
+
if (projectionScopes === undefined) {
|
|
79
|
+
const rootHash = await this.getIndexedRootHash(tenant, protocol);
|
|
80
|
+
return hashToHex(rootHash);
|
|
81
|
+
}
|
|
82
|
+
return this.withProjectionSnapshot(tenant, projectionScopes, snapshot => snapshot.getRootHex());
|
|
83
|
+
}
|
|
84
|
+
async getIndexedRootHash(tenant, protocol) {
|
|
85
|
+
if (protocol === undefined) {
|
|
86
|
+
return this.deps.stateIndex.getRoot(tenant);
|
|
87
|
+
}
|
|
88
|
+
return this.deps.stateIndex.getProtocolRoot(tenant, protocol);
|
|
89
|
+
}
|
|
90
|
+
async handleSubtree(tenant, message, projectionScopes) {
|
|
91
|
+
const bitPath = MessagesSyncHandler.parseBitPrefix(message.descriptor.prefix);
|
|
92
|
+
const hash = await this.getSubtreeHash(tenant, message.descriptor.protocol, projectionScopes, bitPath);
|
|
93
|
+
return {
|
|
94
|
+
status: { code: 200, detail: 'OK' },
|
|
95
|
+
hash: hashToHex(hash),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
async handleLeaves(tenant, message, projectionScopes) {
|
|
99
|
+
const bitPath = MessagesSyncHandler.parseBitPrefix(message.descriptor.prefix);
|
|
100
|
+
const leaves = await this.getLeaves(tenant, message.descriptor.protocol, projectionScopes, bitPath);
|
|
101
|
+
return {
|
|
102
|
+
status: { code: 200, detail: 'OK' },
|
|
103
|
+
entries: leaves,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
async getSubtreeHash(tenant, protocol, projectionScopes, bitPath) {
|
|
107
|
+
if (projectionScopes === undefined) {
|
|
108
|
+
return this.getIndexedSubtreeHash(tenant, protocol, bitPath);
|
|
109
|
+
}
|
|
110
|
+
return this.withProjectionSnapshot(tenant, projectionScopes, snapshot => snapshot.getSubtreeHash(bitPath));
|
|
111
|
+
}
|
|
112
|
+
async getLeaves(tenant, protocol, projectionScopes, bitPath) {
|
|
113
|
+
if (projectionScopes === undefined) {
|
|
114
|
+
return this.getIndexedLeaves(tenant, protocol, bitPath);
|
|
115
|
+
}
|
|
116
|
+
return this.withProjectionSnapshot(tenant, projectionScopes, snapshot => snapshot.getLeaves(bitPath));
|
|
117
|
+
}
|
|
118
|
+
async getIndexedSubtreeHash(tenant, protocol, bitPath) {
|
|
119
|
+
return MessagesSyncHandler.getIndexedSubtreeHashFromStateIndex(this.deps.stateIndex, tenant, protocol, bitPath);
|
|
120
|
+
}
|
|
121
|
+
async getIndexedLeaves(tenant, protocol, bitPath) {
|
|
122
|
+
return MessagesSyncHandler.getIndexedLeavesFromStateIndex(this.deps.stateIndex, tenant, protocol, bitPath);
|
|
123
|
+
}
|
|
84
124
|
/**
|
|
85
125
|
* Handle the 'diff' action: the client sends its subtree hashes at a given
|
|
86
126
|
* depth, and the server compares them against its own tree to compute the
|
|
@@ -94,88 +134,86 @@ export class MessagesSyncHandler {
|
|
|
94
134
|
*/
|
|
95
135
|
async handleDiff(tenant, message) {
|
|
96
136
|
const { protocol, hashes: clientHashes, depth } = message.descriptor;
|
|
137
|
+
const projectionScopes = MessagesSyncHandler.getProjectionScopes(message);
|
|
97
138
|
if (!clientHashes || depth === undefined) {
|
|
98
139
|
return {
|
|
99
140
|
status: { code: 400, detail: 'diff action requires hashes and depth' },
|
|
100
141
|
};
|
|
101
142
|
}
|
|
102
143
|
const stateIndex = this.deps.stateIndex;
|
|
144
|
+
const projectionSnapshot = await this.createProjectionSnapshot(tenant, projectionScopes);
|
|
103
145
|
const onlyRemoteCids = [];
|
|
104
146
|
const onlyLocalPrefixes = [];
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
// Enumerate server-side non-empty prefixes by walking the server's
|
|
119
|
-
// tree to the given depth and collecting leaf prefixes.
|
|
120
|
-
const serverHashes = await this.collectSubtreeHashes(tenant, protocol, depth);
|
|
121
|
-
for (const prefix of Object.keys(serverHashes)) {
|
|
122
|
-
allPrefixes.add(prefix);
|
|
123
|
-
}
|
|
124
|
-
// Compare each prefix's hash between client and server.
|
|
125
|
-
for (const pfx of allPrefixes) {
|
|
126
|
-
const clientHash = clientHashes[pfx]; // undefined if client has empty subtree
|
|
127
|
-
const serverHash = serverHashes[pfx]; // undefined if server has empty subtree
|
|
128
|
-
if (clientHash === serverHash) {
|
|
129
|
-
// Identical subtree — skip.
|
|
130
|
-
continue;
|
|
147
|
+
try {
|
|
148
|
+
// Get the default (empty subtree) hash at the given depth so we can
|
|
149
|
+
// filter out client entries that represent empty subtrees.
|
|
150
|
+
const defaultHashHex = await this.getDefaultHashHex(depth);
|
|
151
|
+
// Build the set of all prefixes at the given depth that either side has.
|
|
152
|
+
// Filter out client prefixes whose hash equals the default (empty subtree)
|
|
153
|
+
// hash — these represent empty subtrees and should be treated the same as
|
|
154
|
+
// omitted prefixes.
|
|
155
|
+
const allPrefixes = new Set();
|
|
156
|
+
for (const [pfx, hash] of Object.entries(clientHashes)) {
|
|
157
|
+
if (hash !== defaultHashHex) {
|
|
158
|
+
allPrefixes.add(pfx);
|
|
159
|
+
}
|
|
131
160
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
161
|
+
// Enumerate server-side non-empty prefixes by walking the server's
|
|
162
|
+
// tree to the given depth and collecting leaf prefixes.
|
|
163
|
+
const serverHashes = await this.collectSubtreeHashes(tenant, protocol, projectionSnapshot, depth);
|
|
164
|
+
for (const prefix of Object.keys(serverHashes)) {
|
|
165
|
+
allPrefixes.add(prefix);
|
|
136
166
|
}
|
|
137
|
-
|
|
138
|
-
|
|
167
|
+
// Compare each prefix's hash between client and server.
|
|
168
|
+
for (const pfx of allPrefixes) {
|
|
169
|
+
const clientHash = clientHashes[pfx]; // undefined if client has empty subtree
|
|
170
|
+
const serverHash = serverHashes[pfx]; // undefined if server has empty subtree
|
|
171
|
+
if (clientHash === serverHash) {
|
|
172
|
+
// Identical subtree — skip.
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
if (serverHash === undefined) {
|
|
176
|
+
// Client has entries the server doesn't.
|
|
177
|
+
onlyLocalPrefixes.push(pfx);
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
139
180
|
const bitPath = MessagesSyncHandler.parseBitPrefix(pfx);
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
181
|
+
const serverLeaves = await MessagesSyncHandler.getServerLeaves(stateIndex, tenant, protocol, projectionSnapshot, bitPath);
|
|
182
|
+
onlyRemoteCids.push(...serverLeaves);
|
|
183
|
+
if (clientHash !== undefined) {
|
|
184
|
+
// Both sides have entries but they differ. The client will enumerate
|
|
185
|
+
// its own leaves for this prefix and de-duplicate server leaves.
|
|
186
|
+
onlyLocalPrefixes.push(pfx);
|
|
187
|
+
}
|
|
145
188
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
? await stateIndex.getLeaves(tenant, bitPath)
|
|
150
|
-
: await stateIndex.getProtocolLeaves(tenant, protocol, bitPath);
|
|
151
|
-
// We don't have the client's leaves, so we report all server leaves
|
|
152
|
-
// as onlyRemote (the client will de-duplicate locally). We also
|
|
153
|
-
// report this prefix as onlyLocal so the client can check its own leaves.
|
|
154
|
-
onlyRemoteCids.push(...serverLeaves);
|
|
155
|
-
onlyLocalPrefixes.push(pfx);
|
|
189
|
+
}
|
|
190
|
+
finally {
|
|
191
|
+
await projectionSnapshot?.close();
|
|
156
192
|
}
|
|
157
193
|
// Build response entries with inline message data where possible.
|
|
158
194
|
const onlyRemote = await this.buildDiffEntries(tenant, onlyRemoteCids);
|
|
195
|
+
const dependencies = projectionScopes === undefined
|
|
196
|
+
? []
|
|
197
|
+
: await this.buildProjectedDependencyEntries(tenant, onlyRemote);
|
|
159
198
|
return {
|
|
160
199
|
status: { code: 200, detail: 'OK' },
|
|
161
200
|
onlyRemote,
|
|
162
201
|
onlyLocal: onlyLocalPrefixes,
|
|
202
|
+
...(dependencies.length > 0 ? { dependencies } : {}),
|
|
163
203
|
};
|
|
164
204
|
}
|
|
165
205
|
/**
|
|
166
206
|
* Walk the server's SMT to the given depth and collect all non-empty
|
|
167
207
|
* subtree hashes as a `{ prefix: hexHash }` map.
|
|
168
208
|
*/
|
|
169
|
-
async collectSubtreeHashes(tenant, protocol, depth) {
|
|
209
|
+
async collectSubtreeHashes(tenant, protocol, projectionSnapshot, depth) {
|
|
170
210
|
const stateIndex = this.deps.stateIndex;
|
|
171
211
|
const result = {};
|
|
172
|
-
const defaultHashHex = await this.getDefaultHashHex(depth);
|
|
173
212
|
const walk = async (prefix, currentDepth) => {
|
|
174
213
|
const bitPath = MessagesSyncHandler.parseBitPrefix(prefix);
|
|
175
|
-
const hash = protocol
|
|
176
|
-
? await stateIndex.getSubtreeHash(tenant, bitPath)
|
|
177
|
-
: await stateIndex.getProtocolSubtreeHash(tenant, protocol, bitPath);
|
|
214
|
+
const hash = await MessagesSyncHandler.getServerSubtreeHash(stateIndex, tenant, protocol, projectionSnapshot, bitPath);
|
|
178
215
|
const hexHash = hashToHex(hash);
|
|
216
|
+
const defaultHashHex = await this.getDefaultHashHex(currentDepth);
|
|
179
217
|
if (hexHash === defaultHashHex) {
|
|
180
218
|
// Empty subtree — don't include in the result.
|
|
181
219
|
return;
|
|
@@ -194,6 +232,40 @@ export class MessagesSyncHandler {
|
|
|
194
232
|
await walk('', 0);
|
|
195
233
|
return result;
|
|
196
234
|
}
|
|
235
|
+
async createProjectionSnapshot(tenant, projectionScopes) {
|
|
236
|
+
if (projectionScopes === undefined) {
|
|
237
|
+
return undefined;
|
|
238
|
+
}
|
|
239
|
+
return RecordsProjection.createSnapshot({
|
|
240
|
+
tenant,
|
|
241
|
+
messageStore: this.deps.messageStore,
|
|
242
|
+
scopes: projectionScopes,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
static async getServerLeaves(stateIndex, tenant, protocol, projectionSnapshot, bitPath) {
|
|
246
|
+
if (projectionSnapshot === undefined) {
|
|
247
|
+
return MessagesSyncHandler.getIndexedLeavesFromStateIndex(stateIndex, tenant, protocol, bitPath);
|
|
248
|
+
}
|
|
249
|
+
return projectionSnapshot.getLeaves(bitPath);
|
|
250
|
+
}
|
|
251
|
+
static async getServerSubtreeHash(stateIndex, tenant, protocol, projectionSnapshot, bitPath) {
|
|
252
|
+
if (projectionSnapshot === undefined) {
|
|
253
|
+
return MessagesSyncHandler.getIndexedSubtreeHashFromStateIndex(stateIndex, tenant, protocol, bitPath);
|
|
254
|
+
}
|
|
255
|
+
return projectionSnapshot.getSubtreeHash(bitPath);
|
|
256
|
+
}
|
|
257
|
+
static async getIndexedLeavesFromStateIndex(stateIndex, tenant, protocol, bitPath) {
|
|
258
|
+
if (protocol === undefined) {
|
|
259
|
+
return stateIndex.getLeaves(tenant, bitPath);
|
|
260
|
+
}
|
|
261
|
+
return stateIndex.getProtocolLeaves(tenant, protocol, bitPath);
|
|
262
|
+
}
|
|
263
|
+
static async getIndexedSubtreeHashFromStateIndex(stateIndex, tenant, protocol, bitPath) {
|
|
264
|
+
if (protocol === undefined) {
|
|
265
|
+
return stateIndex.getSubtreeHash(tenant, bitPath);
|
|
266
|
+
}
|
|
267
|
+
return stateIndex.getProtocolSubtreeHash(tenant, protocol, bitPath);
|
|
268
|
+
}
|
|
197
269
|
/**
|
|
198
270
|
* Get the hex-encoded default hash for a given depth. Lazily cached.
|
|
199
271
|
*/
|
|
@@ -239,6 +311,159 @@ export class MessagesSyncHandler {
|
|
|
239
311
|
}
|
|
240
312
|
return entries;
|
|
241
313
|
}
|
|
314
|
+
async buildProjectedDependencyEntries(tenant, primaryEntries) {
|
|
315
|
+
const dependenciesByCid = new Map();
|
|
316
|
+
const configsByProtocol = new Map();
|
|
317
|
+
for (const primaryEntry of primaryEntries) {
|
|
318
|
+
const protocolMetadata = MessagesSyncHandler.recordsWriteProtocolMetadata(primaryEntry.message);
|
|
319
|
+
if (protocolMetadata !== undefined) {
|
|
320
|
+
await this.addProtocolConfigClosureDependencies(tenant, protocolMetadata.protocol, protocolMetadata.messageTimestamp, primaryEntry.messageCid, configsByProtocol, dependenciesByCid);
|
|
321
|
+
continue;
|
|
322
|
+
}
|
|
323
|
+
const initialWrite = await this.readRecordsDeleteInitialWrite(tenant, primaryEntry.message);
|
|
324
|
+
if (initialWrite === undefined) {
|
|
325
|
+
continue;
|
|
326
|
+
}
|
|
327
|
+
await MessagesSyncHandler.addRecordsInitialWriteDependency(primaryEntry.messageCid, initialWrite, dependenciesByCid);
|
|
328
|
+
const initialWriteMetadata = MessagesSyncHandler.recordsWriteProtocolMetadata(initialWrite);
|
|
329
|
+
if (initialWriteMetadata === undefined) {
|
|
330
|
+
continue;
|
|
331
|
+
}
|
|
332
|
+
await this.addProtocolConfigClosureDependencies(tenant, initialWriteMetadata.protocol, initialWriteMetadata.messageTimestamp, primaryEntry.messageCid, configsByProtocol, dependenciesByCid);
|
|
333
|
+
}
|
|
334
|
+
return [...dependenciesByCid.values()];
|
|
335
|
+
}
|
|
336
|
+
async readRecordsDeleteInitialWrite(tenant, message) {
|
|
337
|
+
const recordId = MessagesSyncHandler.recordsDeleteRecordId(message);
|
|
338
|
+
if (recordId === undefined) {
|
|
339
|
+
return undefined;
|
|
340
|
+
}
|
|
341
|
+
const { messages } = await this.deps.messageStore.query(tenant, [{
|
|
342
|
+
interface: DwnInterfaceName.Records,
|
|
343
|
+
method: DwnMethodName.Write,
|
|
344
|
+
recordId,
|
|
345
|
+
}]);
|
|
346
|
+
const initialWrite = await RecordsWrite.getInitialWrite(messages);
|
|
347
|
+
return initialWrite === undefined ? undefined : MessagesSyncHandler.toWireMessage(initialWrite);
|
|
348
|
+
}
|
|
349
|
+
static async addRecordsInitialWriteDependency(rootMessageCid, dependency, dependenciesByCid) {
|
|
350
|
+
const dependencyCid = await Message.getCid(dependency);
|
|
351
|
+
if (dependenciesByCid.has(dependencyCid)) {
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
dependenciesByCid.set(dependencyCid, {
|
|
355
|
+
dependencyClass: 'recordsInitialWrite',
|
|
356
|
+
messageCid: dependencyCid,
|
|
357
|
+
message: dependency,
|
|
358
|
+
rootMessageCid,
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
async addProtocolConfigClosureDependencies(tenant, rootProtocol, rootMessageTimestamp, rootMessageCid, configsByProtocol, dependenciesByCid) {
|
|
362
|
+
// Dependency hints are not part of the projected root; they are advisory
|
|
363
|
+
// bootstrap data for the receiver. Bound each closure to the primary
|
|
364
|
+
// RecordsWrite timestamp because protocol authorization uses the definition
|
|
365
|
+
// active when that record was created, not whatever config is newest today.
|
|
366
|
+
const visitedProtocols = new Set();
|
|
367
|
+
const pendingProtocols = [rootProtocol];
|
|
368
|
+
for (let protocol = MessagesSyncHandler.takeNextUnvisitedProtocol(pendingProtocols, visitedProtocols); protocol !== undefined; protocol = MessagesSyncHandler.takeNextUnvisitedProtocol(pendingProtocols, visitedProtocols)) {
|
|
369
|
+
const configs = await this.getCachedGoverningProtocolsConfigure(tenant, protocol, rootMessageTimestamp, configsByProtocol);
|
|
370
|
+
await MessagesSyncHandler.addProtocolConfigDependencies({
|
|
371
|
+
configs,
|
|
372
|
+
rootMessageCid,
|
|
373
|
+
visitedProtocols,
|
|
374
|
+
pendingProtocols,
|
|
375
|
+
dependenciesByCid,
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
async getCachedGoverningProtocolsConfigure(tenant, protocol, messageTimestamp, configsByProtocol) {
|
|
380
|
+
const configCacheKey = JSON.stringify([protocol, messageTimestamp]);
|
|
381
|
+
const cachedConfigs = configsByProtocol.get(configCacheKey);
|
|
382
|
+
if (cachedConfigs !== undefined) {
|
|
383
|
+
return cachedConfigs;
|
|
384
|
+
}
|
|
385
|
+
const configs = await this.readGoverningProtocolsConfigure(tenant, protocol, messageTimestamp);
|
|
386
|
+
configsByProtocol.set(configCacheKey, configs);
|
|
387
|
+
return configs;
|
|
388
|
+
}
|
|
389
|
+
static async addProtocolConfigDependencies({ configs, rootMessageCid, visitedProtocols, pendingProtocols, dependenciesByCid, }) {
|
|
390
|
+
for (const dependency of configs) {
|
|
391
|
+
await MessagesSyncHandler.addProtocolConfigDependency(rootMessageCid, dependency, dependenciesByCid);
|
|
392
|
+
MessagesSyncHandler.queueUnvisitedProtocols(MessagesSyncHandler.protocolsConfigureUses(dependency), visitedProtocols, pendingProtocols);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
static async addProtocolConfigDependency(rootMessageCid, dependency, dependenciesByCid) {
|
|
396
|
+
const dependencyCid = await Message.getCid(dependency);
|
|
397
|
+
if (dependenciesByCid.has(dependencyCid)) {
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
dependenciesByCid.set(dependencyCid, {
|
|
401
|
+
dependencyClass: 'protocolsConfigure',
|
|
402
|
+
messageCid: dependencyCid,
|
|
403
|
+
message: dependency,
|
|
404
|
+
rootMessageCid,
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
static takeNextUnvisitedProtocol(pendingProtocols, visitedProtocols) {
|
|
408
|
+
while (pendingProtocols.length > 0) {
|
|
409
|
+
const protocol = pendingProtocols.shift();
|
|
410
|
+
if (visitedProtocols.has(protocol)) {
|
|
411
|
+
continue;
|
|
412
|
+
}
|
|
413
|
+
visitedProtocols.add(protocol);
|
|
414
|
+
return protocol;
|
|
415
|
+
}
|
|
416
|
+
return undefined;
|
|
417
|
+
}
|
|
418
|
+
static queueUnvisitedProtocols(protocols, visitedProtocols, pendingProtocols) {
|
|
419
|
+
for (const protocol of protocols) {
|
|
420
|
+
if (!visitedProtocols.has(protocol)) {
|
|
421
|
+
pendingProtocols.push(protocol);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
static protocolsConfigureUses(message) {
|
|
426
|
+
if (message.descriptor.interface !== DwnInterfaceName.Protocols ||
|
|
427
|
+
message.descriptor.method !== DwnMethodName.Configure) {
|
|
428
|
+
return [];
|
|
429
|
+
}
|
|
430
|
+
const uses = message.descriptor.definition?.uses;
|
|
431
|
+
return uses === undefined
|
|
432
|
+
? []
|
|
433
|
+
: Object.values(uses).filter((protocol) => typeof protocol === 'string');
|
|
434
|
+
}
|
|
435
|
+
async readGoverningProtocolsConfigure(tenant, protocol, messageTimestamp) {
|
|
436
|
+
const { messages } = await this.deps.messageStore.query(tenant, [{
|
|
437
|
+
interface: DwnInterfaceName.Protocols,
|
|
438
|
+
method: DwnMethodName.Configure,
|
|
439
|
+
protocol,
|
|
440
|
+
messageTimestamp: { lte: messageTimestamp },
|
|
441
|
+
}], { messageTimestamp: SortDirection.Descending });
|
|
442
|
+
const governingMessage = await Message.getNewestMessage(messages);
|
|
443
|
+
return governingMessage === undefined ? [] : [governingMessage];
|
|
444
|
+
}
|
|
445
|
+
static recordsWriteProtocolMetadata(message) {
|
|
446
|
+
if (message?.descriptor.interface !== DwnInterfaceName.Records ||
|
|
447
|
+
message.descriptor.method !== DwnMethodName.Write) {
|
|
448
|
+
return undefined;
|
|
449
|
+
}
|
|
450
|
+
const protocol = message.descriptor.protocol;
|
|
451
|
+
return typeof protocol === 'string'
|
|
452
|
+
? { protocol, messageTimestamp: message.descriptor.messageTimestamp }
|
|
453
|
+
: undefined;
|
|
454
|
+
}
|
|
455
|
+
static recordsDeleteRecordId(message) {
|
|
456
|
+
if (message?.descriptor.interface !== DwnInterfaceName.Records ||
|
|
457
|
+
message.descriptor.method !== DwnMethodName.Delete) {
|
|
458
|
+
return undefined;
|
|
459
|
+
}
|
|
460
|
+
const recordId = message.descriptor.recordId;
|
|
461
|
+
return typeof recordId === 'string' ? recordId : undefined;
|
|
462
|
+
}
|
|
463
|
+
static toWireMessage(message) {
|
|
464
|
+
const { encodedData: _encodedData, initialWrite: _initialWrite, ...wireMessage } = message;
|
|
465
|
+
return wireMessage;
|
|
466
|
+
}
|
|
242
467
|
/**
|
|
243
468
|
* Read a message and its data from the MessageStore + DataStore by CID.
|
|
244
469
|
*/
|
|
@@ -253,32 +478,51 @@ export class MessagesSyncHandler {
|
|
|
253
478
|
// It must not be included in the wire-format message (the recipient's
|
|
254
479
|
// DWN would reject it as an unexpected top-level property).
|
|
255
480
|
let inlineEncodedData;
|
|
256
|
-
if (
|
|
481
|
+
if (MessagesSyncHandler.hasEncodedData(storedMessage)) {
|
|
257
482
|
inlineEncodedData = storedMessage.encodedData;
|
|
258
483
|
delete storedMessage.encodedData;
|
|
259
484
|
}
|
|
260
485
|
let data;
|
|
261
|
-
// Check if this is a RecordsWrite with data.
|
|
262
|
-
if (
|
|
263
|
-
storedMessage.descriptor
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
// Try DataStore first (for large payloads stored externally).
|
|
486
|
+
// Check if this is a RecordsWrite with data that is small enough to inline.
|
|
487
|
+
if (inlineEncodedData === undefined && Records.isRecordsWrite(storedMessage)) {
|
|
488
|
+
const { dataCid, dataSize } = storedMessage.descriptor;
|
|
489
|
+
if (dataSize <= DEFAULT_MAX_INLINE_DATA_SIZE) {
|
|
490
|
+
// Some stores may have small payload bytes in DataStore instead of encodedData.
|
|
267
491
|
if (this.deps.dataStore) {
|
|
268
|
-
// DataStore uses recordId, not messageCid. For RecordsWrite,
|
|
269
|
-
// recordId is
|
|
270
|
-
const
|
|
271
|
-
if (
|
|
272
|
-
|
|
273
|
-
if (dataResult?.dataStream) {
|
|
274
|
-
data = dataResult.dataStream;
|
|
275
|
-
}
|
|
492
|
+
// DataStore uses recordId, not messageCid. For RecordsWrite,
|
|
493
|
+
// recordId is a top-level message property.
|
|
494
|
+
const dataResult = await this.deps.dataStore.get(tenant, storedMessage.recordId, dataCid);
|
|
495
|
+
if (dataResult?.dataStream) {
|
|
496
|
+
data = dataResult.dataStream;
|
|
276
497
|
}
|
|
277
498
|
}
|
|
278
499
|
}
|
|
279
500
|
}
|
|
280
501
|
return { message: storedMessage, encodedData: inlineEncodedData, data };
|
|
281
502
|
}
|
|
503
|
+
static hasEncodedData(message) {
|
|
504
|
+
return 'encodedData' in message && typeof message.encodedData === 'string';
|
|
505
|
+
}
|
|
506
|
+
static getProjectionScopes(message) {
|
|
507
|
+
const { projectionScopes } = message.descriptor;
|
|
508
|
+
if (projectionScopes === undefined) {
|
|
509
|
+
return undefined;
|
|
510
|
+
}
|
|
511
|
+
return projectionScopes;
|
|
512
|
+
}
|
|
513
|
+
async withProjectionSnapshot(tenant, scopes, fn) {
|
|
514
|
+
const snapshot = await RecordsProjection.createSnapshot({
|
|
515
|
+
tenant: tenant,
|
|
516
|
+
messageStore: this.deps.messageStore,
|
|
517
|
+
scopes: scopes,
|
|
518
|
+
});
|
|
519
|
+
try {
|
|
520
|
+
return await fn(snapshot);
|
|
521
|
+
}
|
|
522
|
+
finally {
|
|
523
|
+
await snapshot.close();
|
|
524
|
+
}
|
|
525
|
+
}
|
|
282
526
|
/**
|
|
283
527
|
* Read a ReadableStream to completion and return the bytes.
|
|
284
528
|
*/
|
|
@@ -318,13 +562,14 @@ export class MessagesSyncHandler {
|
|
|
318
562
|
if (messagesSync.author === tenant) {
|
|
319
563
|
return;
|
|
320
564
|
}
|
|
321
|
-
|
|
322
|
-
|
|
565
|
+
const permissionGrantIds = Message.getPermissionGrantIds(messagesSync.signaturePayload);
|
|
566
|
+
if (messagesSync.author !== undefined && permissionGrantIds.length > 0) {
|
|
567
|
+
const permissionGrants = await MessagesGrantAuthorization.fetchPermissionGrants(tenant, messageStore, permissionGrantIds);
|
|
323
568
|
await MessagesGrantAuthorization.authorizeSubscribeOrSync({
|
|
324
569
|
incomingMessage: messagesSync.message,
|
|
325
570
|
expectedGrantor: tenant,
|
|
326
571
|
expectedGrantee: messagesSync.author,
|
|
327
|
-
|
|
572
|
+
permissionGrants,
|
|
328
573
|
messageStore
|
|
329
574
|
});
|
|
330
575
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages-sync.js","sourceRoot":"","sources":["../../../../src/handlers/messages-sync.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"messages-sync.js","sourceRoot":"","sources":["../../../../src/handlers/messages-sync.ts"],"names":[],"mappings":"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"}
|