@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.
Files changed (234) hide show
  1. package/dist/browser.mjs +8 -8
  2. package/dist/browser.mjs.map +4 -4
  3. package/dist/esm/generated/precompiled-validators.js +2591 -1435
  4. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  5. package/dist/esm/src/core/constants.js +20 -0
  6. package/dist/esm/src/core/constants.js.map +1 -1
  7. package/dist/esm/src/core/dwn-error.js +24 -1
  8. package/dist/esm/src/core/dwn-error.js.map +1 -1
  9. package/dist/esm/src/core/grant-authorization.js +4 -4
  10. package/dist/esm/src/core/grant-authorization.js.map +1 -1
  11. package/dist/esm/src/core/message.js +89 -4
  12. package/dist/esm/src/core/message.js.map +1 -1
  13. package/dist/esm/src/core/messages-grant-authorization.js +147 -55
  14. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
  15. package/dist/esm/src/core/protocol-authorization.js +76 -0
  16. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  17. package/dist/esm/src/core/records-grant-authorization.js +40 -15
  18. package/dist/esm/src/core/records-grant-authorization.js.map +1 -1
  19. package/dist/esm/src/handlers/messages-read.js +5 -5
  20. package/dist/esm/src/handlers/messages-read.js.map +1 -1
  21. package/dist/esm/src/handlers/messages-subscribe.js +109 -7
  22. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
  23. package/dist/esm/src/handlers/messages-sync.js +341 -96
  24. package/dist/esm/src/handlers/messages-sync.js.map +1 -1
  25. package/dist/esm/src/handlers/protocols-configure.js +81 -2
  26. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  27. package/dist/esm/src/handlers/records-count.js +30 -0
  28. package/dist/esm/src/handlers/records-count.js.map +1 -1
  29. package/dist/esm/src/handlers/records-delete.js +3 -2
  30. package/dist/esm/src/handlers/records-delete.js.map +1 -1
  31. package/dist/esm/src/handlers/records-query.js +30 -0
  32. package/dist/esm/src/handlers/records-query.js.map +1 -1
  33. package/dist/esm/src/handlers/records-read.js +3 -2
  34. package/dist/esm/src/handlers/records-read.js.map +1 -1
  35. package/dist/esm/src/handlers/records-subscribe.js +31 -0
  36. package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
  37. package/dist/esm/src/handlers/records-write.js +36 -11
  38. package/dist/esm/src/handlers/records-write.js.map +1 -1
  39. package/dist/esm/src/index.js +2 -0
  40. package/dist/esm/src/index.js.map +1 -1
  41. package/dist/esm/src/interfaces/messages-read.js +6 -3
  42. package/dist/esm/src/interfaces/messages-read.js.map +1 -1
  43. package/dist/esm/src/interfaces/messages-subscribe.js +6 -3
  44. package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
  45. package/dist/esm/src/interfaces/messages-sync.js +17 -3
  46. package/dist/esm/src/interfaces/messages-sync.js.map +1 -1
  47. package/dist/esm/src/interfaces/protocols-configure.js +5 -2
  48. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  49. package/dist/esm/src/interfaces/protocols-query.js +8 -4
  50. package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
  51. package/dist/esm/src/interfaces/records-count.js +5 -0
  52. package/dist/esm/src/interfaces/records-count.js.map +1 -1
  53. package/dist/esm/src/interfaces/records-delete.js +6 -2
  54. package/dist/esm/src/interfaces/records-delete.js.map +1 -1
  55. package/dist/esm/src/interfaces/records-query.js +5 -0
  56. package/dist/esm/src/interfaces/records-query.js.map +1 -1
  57. package/dist/esm/src/interfaces/records-read.js +6 -3
  58. package/dist/esm/src/interfaces/records-read.js.map +1 -1
  59. package/dist/esm/src/interfaces/records-subscribe.js +5 -0
  60. package/dist/esm/src/interfaces/records-subscribe.js.map +1 -1
  61. package/dist/esm/src/interfaces/records-write.js +6 -3
  62. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  63. package/dist/esm/src/protocols/permissions.js +28 -7
  64. package/dist/esm/src/protocols/permissions.js.map +1 -1
  65. package/dist/esm/src/sync/records-projection.js +228 -0
  66. package/dist/esm/src/sync/records-projection.js.map +1 -0
  67. package/dist/esm/src/types/message-types.js.map +1 -1
  68. package/dist/esm/src/types/permission-types.js.map +1 -1
  69. package/dist/esm/src/utils/permission-scope.js +37 -0
  70. package/dist/esm/src/utils/permission-scope.js.map +1 -0
  71. package/dist/esm/tests/core/grant-authorization.spec.js +26 -3
  72. package/dist/esm/tests/core/grant-authorization.spec.js.map +1 -1
  73. package/dist/esm/tests/core/records-grant-authorization.spec.js +117 -0
  74. package/dist/esm/tests/core/records-grant-authorization.spec.js.map +1 -0
  75. package/dist/esm/tests/features/permissions.spec.js +126 -0
  76. package/dist/esm/tests/features/permissions.spec.js.map +1 -1
  77. package/dist/esm/tests/handlers/messages-read.spec.js +345 -12
  78. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
  79. package/dist/esm/tests/handlers/messages-subscribe.spec.js +326 -9
  80. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
  81. package/dist/esm/tests/handlers/messages-sync.spec.js +1053 -7
  82. package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -1
  83. package/dist/esm/tests/handlers/protocols-configure.spec.js +361 -0
  84. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
  85. package/dist/esm/tests/handlers/records-count.spec.js +75 -2
  86. package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
  87. package/dist/esm/tests/handlers/records-query.spec.js +73 -0
  88. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
  89. package/dist/esm/tests/handlers/records-subscribe.spec.js +75 -1
  90. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
  91. package/dist/esm/tests/handlers/records-write.spec.js +15 -0
  92. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  93. package/dist/esm/tests/interfaces/messages-get.spec.js +107 -5
  94. package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
  95. package/dist/esm/tests/interfaces/protocols-configure.spec.js +13 -0
  96. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
  97. package/dist/esm/tests/interfaces/records-delete.spec.js +12 -0
  98. package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
  99. package/dist/esm/tests/interfaces/records-query.spec.js +10 -0
  100. package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -1
  101. package/dist/esm/tests/interfaces/records-subscribe.spec.js +10 -0
  102. package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -1
  103. package/dist/esm/tests/interfaces/records-write.spec.js +33 -0
  104. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
  105. package/dist/esm/tests/sync/records-projection.spec.js +245 -0
  106. package/dist/esm/tests/sync/records-projection.spec.js.map +1 -0
  107. package/dist/esm/tests/test-suite.js +2 -0
  108. package/dist/esm/tests/test-suite.js.map +1 -1
  109. package/dist/esm/tests/utils/permission-scope.spec.js +66 -0
  110. package/dist/esm/tests/utils/permission-scope.spec.js.map +1 -0
  111. package/dist/esm/tests/utils/test-data-generator.js +5 -2
  112. package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
  113. package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
  114. package/dist/types/src/core/constants.d.ts +13 -0
  115. package/dist/types/src/core/constants.d.ts.map +1 -1
  116. package/dist/types/src/core/dwn-error.d.ts +24 -1
  117. package/dist/types/src/core/dwn-error.d.ts.map +1 -1
  118. package/dist/types/src/core/grant-authorization.d.ts +1 -2
  119. package/dist/types/src/core/grant-authorization.d.ts.map +1 -1
  120. package/dist/types/src/core/message.d.ts +41 -1
  121. package/dist/types/src/core/message.d.ts.map +1 -1
  122. package/dist/types/src/core/messages-grant-authorization.d.ts +36 -4
  123. package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -1
  124. package/dist/types/src/core/protocol-authorization.d.ts +12 -0
  125. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  126. package/dist/types/src/core/records-grant-authorization.d.ts +6 -0
  127. package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -1
  128. package/dist/types/src/handlers/messages-read.d.ts.map +1 -1
  129. package/dist/types/src/handlers/messages-subscribe.d.ts +2 -1
  130. package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -1
  131. package/dist/types/src/handlers/messages-sync.d.ts +31 -0
  132. package/dist/types/src/handlers/messages-sync.d.ts.map +1 -1
  133. package/dist/types/src/handlers/protocols-configure.d.ts +3 -0
  134. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
  135. package/dist/types/src/handlers/records-count.d.ts +4 -0
  136. package/dist/types/src/handlers/records-count.d.ts.map +1 -1
  137. package/dist/types/src/handlers/records-delete.d.ts.map +1 -1
  138. package/dist/types/src/handlers/records-query.d.ts +4 -0
  139. package/dist/types/src/handlers/records-query.d.ts.map +1 -1
  140. package/dist/types/src/handlers/records-read.d.ts.map +1 -1
  141. package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
  142. package/dist/types/src/handlers/records-write.d.ts +1 -0
  143. package/dist/types/src/handlers/records-write.d.ts.map +1 -1
  144. package/dist/types/src/index.d.ts +6 -2
  145. package/dist/types/src/index.d.ts.map +1 -1
  146. package/dist/types/src/interfaces/messages-read.d.ts +1 -1
  147. package/dist/types/src/interfaces/messages-read.d.ts.map +1 -1
  148. package/dist/types/src/interfaces/messages-subscribe.d.ts +1 -1
  149. package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -1
  150. package/dist/types/src/interfaces/messages-sync.d.ts +4 -1
  151. package/dist/types/src/interfaces/messages-sync.d.ts.map +1 -1
  152. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  153. package/dist/types/src/interfaces/protocols-query.d.ts.map +1 -1
  154. package/dist/types/src/interfaces/records-count.d.ts +1 -0
  155. package/dist/types/src/interfaces/records-count.d.ts.map +1 -1
  156. package/dist/types/src/interfaces/records-delete.d.ts.map +1 -1
  157. package/dist/types/src/interfaces/records-query.d.ts +1 -0
  158. package/dist/types/src/interfaces/records-query.d.ts.map +1 -1
  159. package/dist/types/src/interfaces/records-read.d.ts.map +1 -1
  160. package/dist/types/src/interfaces/records-subscribe.d.ts +1 -0
  161. package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -1
  162. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  163. package/dist/types/src/protocols/permissions.d.ts +2 -0
  164. package/dist/types/src/protocols/permissions.d.ts.map +1 -1
  165. package/dist/types/src/sync/records-projection.d.ts +98 -0
  166. package/dist/types/src/sync/records-projection.d.ts.map +1 -0
  167. package/dist/types/src/types/message-types.d.ts +1 -0
  168. package/dist/types/src/types/message-types.d.ts.map +1 -1
  169. package/dist/types/src/types/messages-types.d.ts +21 -3
  170. package/dist/types/src/types/messages-types.d.ts.map +1 -1
  171. package/dist/types/src/types/permission-types.d.ts +4 -0
  172. package/dist/types/src/types/permission-types.d.ts.map +1 -1
  173. package/dist/types/src/types/records-types.d.ts +4 -0
  174. package/dist/types/src/types/records-types.d.ts.map +1 -1
  175. package/dist/types/src/types/subscriptions.d.ts +18 -3
  176. package/dist/types/src/types/subscriptions.d.ts.map +1 -1
  177. package/dist/types/src/utils/permission-scope.d.ts +29 -0
  178. package/dist/types/src/utils/permission-scope.d.ts.map +1 -0
  179. package/dist/types/tests/core/records-grant-authorization.spec.d.ts +2 -0
  180. package/dist/types/tests/core/records-grant-authorization.spec.d.ts.map +1 -0
  181. package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
  182. package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -1
  183. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
  184. package/dist/types/tests/handlers/messages-sync.spec.d.ts.map +1 -1
  185. package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -1
  186. package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -1
  187. package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -1
  188. package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -1
  189. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
  190. package/dist/types/tests/sync/records-projection.spec.d.ts +2 -0
  191. package/dist/types/tests/sync/records-projection.spec.d.ts.map +1 -0
  192. package/dist/types/tests/test-suite.d.ts.map +1 -1
  193. package/dist/types/tests/utils/permission-scope.spec.d.ts +2 -0
  194. package/dist/types/tests/utils/permission-scope.spec.d.ts.map +1 -0
  195. package/dist/types/tests/utils/test-data-generator.d.ts +5 -2
  196. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
  197. package/package.json +1 -1
  198. package/src/core/constants.ts +24 -0
  199. package/src/core/dwn-error.ts +24 -1
  200. package/src/core/grant-authorization.ts +7 -5
  201. package/src/core/message.ts +153 -6
  202. package/src/core/messages-grant-authorization.ts +282 -70
  203. package/src/core/protocol-authorization.ts +130 -0
  204. package/src/core/records-grant-authorization.ts +64 -21
  205. package/src/handlers/messages-read.ts +7 -5
  206. package/src/handlers/messages-subscribe.ts +149 -9
  207. package/src/handlers/messages-sync.ts +593 -102
  208. package/src/handlers/protocols-configure.ts +103 -2
  209. package/src/handlers/records-count.ts +33 -0
  210. package/src/handlers/records-delete.ts +3 -2
  211. package/src/handlers/records-query.ts +33 -0
  212. package/src/handlers/records-read.ts +3 -2
  213. package/src/handlers/records-subscribe.ts +34 -0
  214. package/src/handlers/records-write.ts +62 -11
  215. package/src/index.ts +7 -3
  216. package/src/interfaces/messages-read.ts +8 -5
  217. package/src/interfaces/messages-subscribe.ts +12 -9
  218. package/src/interfaces/messages-sync.ts +33 -12
  219. package/src/interfaces/protocols-configure.ts +8 -4
  220. package/src/interfaces/protocols-query.ts +13 -9
  221. package/src/interfaces/records-count.ts +7 -0
  222. package/src/interfaces/records-delete.ts +9 -5
  223. package/src/interfaces/records-query.ts +7 -0
  224. package/src/interfaces/records-read.ts +6 -3
  225. package/src/interfaces/records-subscribe.ts +7 -0
  226. package/src/interfaces/records-write.ts +25 -17
  227. package/src/protocols/permissions.ts +47 -9
  228. package/src/sync/records-projection.ts +328 -0
  229. package/src/types/message-types.ts +1 -0
  230. package/src/types/messages-types.ts +23 -3
  231. package/src/types/permission-types.ts +5 -1
  232. package/src/types/records-types.ts +5 -1
  233. package/src/types/subscriptions.ts +19 -3
  234. package/src/utils/permission-scope.ts +55 -0
@@ -143,6 +143,7 @@ export type GenerateRecordsQueryInput = {
143
143
  filter?: RecordsFilter;
144
144
  dateSort?: DateSort;
145
145
  pagination?: Pagination;
146
+ permissionGrantId?: string;
146
147
  protocolRole?: string;
147
148
  };
148
149
  export type GenerateRecordsQueryOutput = {
@@ -159,6 +160,7 @@ export type GenerateRecordsSubscribeInput = {
159
160
  filter?: RecordsFilter;
160
161
  dateSort?: DateSort;
161
162
  pagination?: Pagination;
163
+ permissionGrantId?: string;
162
164
  protocolRole?: string;
163
165
  /** Progress token for catch-up + EOSE subscribe. */
164
166
  cursor?: ProgressToken;
@@ -175,6 +177,7 @@ export type GenerateRecordsCountInput = {
175
177
  author?: Persona;
176
178
  messageTimestamp?: string;
177
179
  filter?: RecordsFilter;
180
+ permissionGrantId?: string;
178
181
  protocolRole?: string;
179
182
  };
180
183
  export type GenerateRecordsCountOutput = {
@@ -195,7 +198,7 @@ export type GenerateMessagesSubscribeInput = {
195
198
  author: Persona;
196
199
  filters?: MessagesFilter[];
197
200
  messageTimestamp?: string;
198
- permissionGrantId?: string;
201
+ permissionGrantIds?: string[];
199
202
  /** Progress token for catch-up + EOSE subscribe. */
200
203
  cursor?: ProgressToken;
201
204
  };
@@ -207,7 +210,7 @@ export type GenerateMessagesSubscribeOutput = {
207
210
  export type GenerateMessagesReadInput = {
208
211
  author?: Persona;
209
212
  messageCid: string;
210
- permissionGrantId?: string;
213
+ permissionGrantIds?: string[];
211
214
  };
212
215
  export type GenerateMessagesReadOutput = {
213
216
  author: Persona;
@@ -1 +1 @@
1
- {"version":3,"file":"test-data-generator.d.ts","sourceRoot":"","sources":["../../../../tests/utils/test-data-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-data-generator.d.ts","sourceRoot":"","sources":["../../../../tests/utils/test-data-generator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enbox/dwn-sdk-js",
3
- "version": "0.3.6",
3
+ "version": "0.3.8",
4
4
  "description": "A reference implementation of https://identity.foundation/decentralized-web-node/spec/",
5
5
  "repository": {
6
6
  "type": "git",
@@ -9,3 +9,27 @@
9
9
  * dependencies between `grant-authorization.ts` and `protocols/permissions.ts`.
10
10
  */
11
11
  export const PERMISSIONS_REVOCATION_PATH = 'grant/revocation';
12
+
13
+ /**
14
+ * The DWN Permissions protocol URI.
15
+ */
16
+ export const PERMISSIONS_PROTOCOL_URI = 'https://identity.foundation/dwn/permissions';
17
+
18
+ /**
19
+ * Well-known key-delivery protocol URI used for encrypted context-key records.
20
+ */
21
+ export const KEY_DELIVERY_PROTOCOL_URI = 'https://identity.foundation/protocols/key-delivery';
22
+
23
+ const RECORDS_PRIMARY_PROJECTION_EXCLUDED_PROTOCOLS = new Set<string>([
24
+ KEY_DELIVERY_PROTOCOL_URI,
25
+ PERMISSIONS_PROTOCOL_URI,
26
+ ]);
27
+
28
+ /**
29
+ * Returns true for infrastructure protocols whose records are dependencies or
30
+ * authorization metadata, not primary application records for projection roots.
31
+ */
32
+ export function isRecordsPrimaryProjectionExcludedProtocol(protocol: string | undefined): boolean {
33
+ return protocol !== undefined &&
34
+ RECORDS_PRIMARY_PROJECTION_EXCLUDED_PROTOCOLS.has(protocol);
35
+ }
@@ -22,8 +22,14 @@ export enum DwnErrorCode {
22
22
  Ed25519InvalidJwk = 'Ed25519InvalidJwk',
23
23
  EventLogNotOpenError = 'EventLogNotOpenError',
24
24
  EventLogProgressGap = 'EventLogProgressGap',
25
- MessagesGrantAuthorizationMismatchedProtocol = 'EventsGrantAuthorizationMismatchedProtocol',
25
+ MessagesGrantAuthorizationMismatchedProtocol = 'MessagesGrantAuthorizationMismatchedProtocol',
26
+ MessagesGrantAuthorizationProjectionInfrastructureProtocol = 'MessagesGrantAuthorizationProjectionInfrastructureProtocol',
27
+ MessagesGrantAuthorizationProjectionScopeMismatch = 'MessagesGrantAuthorizationProjectionScopeMismatch',
28
+ MessagesGrantAuthorizationProtocolSyncInfrastructureProtocol = 'MessagesGrantAuthorizationProtocolSyncInfrastructureProtocol',
29
+ MessagesGrantAuthorizationSubscribeProtocolMismatch = 'MessagesGrantAuthorizationSubscribeProtocolMismatch',
30
+ MessagesGrantAuthorizationUnfilteredSubscribeProtocolScope = 'MessagesGrantAuthorizationUnfilteredSubscribeProtocolScope',
26
31
  MessagesSubscribeAuthorizationFailed = 'MessagesSubscribeAuthorizationFailed',
32
+ MessagesSubscribeDeliveryAuthorizationFailed = 'MessagesSubscribeDeliveryAuthorizationFailed',
27
33
  MessagesSubscribeEventLogUnimplemented = 'MessagesSubscribeEventLogUnimplemented',
28
34
  GeneralJwsVerifierGetPublicKeyNotFound = 'GeneralJwsVerifierGetPublicKeyNotFound',
29
35
  GeneralJwsVerifierInvalidSignature = 'GeneralJwsVerifierInvalidSignature',
@@ -44,19 +50,31 @@ export enum DwnErrorCode {
44
50
  IndexInvalidSortPropertyInMemory = 'IndexInvalidSortPropertyInMemory',
45
51
  IndexMissingIndexableProperty = 'IndexMissingIndexableProperty',
46
52
  JwsDecodePlainObjectPayloadInvalid = 'JwsDecodePlainObjectPayloadInvalid',
53
+ MessagePermissionGrantCreateInvocationAmbiguous = 'MessagePermissionGrantCreateInvocationAmbiguous',
54
+ MessagePermissionGrantDescriptorPayloadMismatch = 'MessagePermissionGrantDescriptorPayloadMismatch',
55
+ MessagePermissionGrantIdsDescriptorPayloadMismatch = 'MessagePermissionGrantIdsDescriptorPayloadMismatch',
56
+ MessagePermissionGrantIdsEmpty = 'MessagePermissionGrantIdsEmpty',
57
+ MessagePermissionGrantIdsNotCanonical = 'MessagePermissionGrantIdsNotCanonical',
58
+ MessagePermissionGrantValidateInvocationAmbiguous = 'MessagePermissionGrantValidateInvocationAmbiguous',
47
59
  MessagesReadInvalidCid = 'MessagesReadInvalidCid',
48
60
  MessagesReadAuthorizationFailed = 'MessagesReadAuthorizationFailed',
49
61
  MessageGetInvalidCid = 'MessageGetInvalidCid',
50
62
  MessagesReadVerifyScopeFailed = 'MessagesReadVerifyScopeFailed',
51
63
  MessagesSyncAuthorizationFailed = 'MessagesSyncAuthorizationFailed',
52
64
  MessagesSyncInvalidPrefix = 'MessagesSyncInvalidPrefix',
65
+ MessagesSyncUnsupportedProjectionRootVersion = 'MessagesSyncUnsupportedProjectionRootVersion',
53
66
  ParseCidCodecNotSupported = 'ParseCidCodecNotSupported',
54
67
  ParseCidMultihashNotSupported = 'ParseCidMultihashNotSupported',
68
+ PermissionsProtocolCreateGrantScopeContextIdProtocolPathConflict = 'PermissionsProtocolCreateGrantScopeContextIdProtocolPathConflict',
55
69
  PermissionsProtocolCreateGrantRecordsScopeMissingProtocol = 'PermissionsProtocolCreateGrantRecordsScopeMissingProtocol',
70
+ PermissionsProtocolCreateGrantSubtreeScopeMissingProtocol = 'PermissionsProtocolCreateGrantSubtreeScopeMissingProtocol',
71
+ PermissionsProtocolCreateRequestScopeContextIdProtocolPathConflict = 'PermissionsProtocolCreateRequestScopeContextIdProtocolPathConflict',
56
72
  PermissionsProtocolCreateRequestRecordsScopeMissingProtocol = 'PermissionsProtocolCreateRequestRecordsScopeMissingProtocol',
73
+ PermissionsProtocolCreateRequestSubtreeScopeMissingProtocol = 'PermissionsProtocolCreateRequestSubtreeScopeMissingProtocol',
57
74
  PermissionsProtocolGetScopeInvalidProtocol = 'PermissionsProtocolGetScopeInvalidProtocol',
58
75
  PermissionsProtocolValidateSchemaUnexpectedRecord = 'PermissionsProtocolValidateSchemaUnexpectedRecord',
59
76
  PermissionsProtocolValidateScopeContextIdProhibitedProperties = 'PermissionsProtocolValidateScopeContextIdProhibitedProperties',
77
+ PermissionsProtocolValidateScopeSubtreeScopeMissingProtocol = 'PermissionsProtocolValidateScopeSubtreeScopeMissingProtocol',
60
78
  PermissionsProtocolValidateScopeProtocolMismatch = 'PermissionsProtocolValidateScopeProtocolMismatch',
61
79
  PermissionsProtocolValidateScopeMissingProtocolTag = 'PermissionsProtocolValidateScopeMissingProtocolTag',
62
80
  PermissionsProtocolValidateRevocationProtocolTagMismatch = 'PermissionsProtocolValidateRevocationProtocolTagMismatch',
@@ -77,6 +95,7 @@ export enum DwnErrorCode {
77
95
  ProtocolAuthorizationIncorrectDataFormat = 'ProtocolAuthorizationIncorrectDataFormat',
78
96
  ProtocolAuthorizationIncorrectContextId = 'ProtocolAuthorizationIncorrectContextId',
79
97
  ProtocolAuthorizationIncorrectProtocolPath = 'ProtocolAuthorizationIncorrectProtocolPath',
98
+ ProtocolAuthorizationInitialWriteRevalidationNotInitial = 'ProtocolAuthorizationInitialWriteRevalidationNotInitial',
80
99
  ProtocolAuthorizationDuplicateRoleRecipient = 'ProtocolAuthorizationDuplicateRoleRecipient',
81
100
  ProtocolAuthorizationEncryptionRequired = 'ProtocolAuthorizationEncryptionRequired',
82
101
  ProtocolAuthorizationImmutableRecord = 'ProtocolAuthorizationImmutableRecord',
@@ -90,6 +109,9 @@ export enum DwnErrorCode {
90
109
  ProtocolAuthorizationSquashNotEnabled = 'ProtocolAuthorizationSquashNotEnabled',
91
110
  ProtocolAuthorizationSquashNotInitialWrite = 'ProtocolAuthorizationSquashNotInitialWrite',
92
111
  ProtocolAuthorizationSquashBackstop = 'ProtocolAuthorizationSquashBackstop',
112
+ ProtocolAuthorizationStoredInitialWriteActionNotAllowed = 'ProtocolAuthorizationStoredInitialWriteActionNotAllowed',
113
+ ProtocolAuthorizationStoredInitialWriteActionRulesNotFound = 'ProtocolAuthorizationStoredInitialWriteActionRulesNotFound',
114
+ ProtocolAuthorizationStoredInitialWriteRoleMissingRecipient = 'ProtocolAuthorizationStoredInitialWriteRoleMissingRecipient',
93
115
  ProtocolAuthorizationMissingContextId = 'ProtocolAuthorizationMissingContextId',
94
116
  ProtocolAuthorizationMissingRuleSet = 'ProtocolAuthorizationMissingRuleSet',
95
117
  ProtocolAuthorizationParentlessIncorrectProtocolPath = 'ProtocolAuthorizationParentlessIncorrectProtocolPath',
@@ -142,6 +164,7 @@ export enum DwnErrorCode {
142
164
  RecordsGrantAuthorizationDeleteProtocolScopeMismatch = 'RecordsGrantAuthorizationDeleteProtocolScopeMismatch',
143
165
  RecordsGrantAuthorizationQueryOrSubscribeProtocolScopeMismatch = 'RecordsGrantAuthorizationQueryOrSubscribeProtocolScopeMismatch',
144
166
  RecordsGrantAuthorizationScopeContextIdMismatch = 'RecordsGrantAuthorizationScopeContextIdMismatch',
167
+ RecordsGrantAuthorizationScopeMismatch = 'RecordsGrantAuthorizationScopeMismatch',
145
168
  RecordsGrantAuthorizationScopeProtocolMismatch = 'RecordsGrantAuthorizationScopeProtocolMismatch',
146
169
  RecordsGrantAuthorizationScopeProtocolPathMismatch = 'RecordsGrantAuthorizationScopeProtocolPathMismatch',
147
170
  RecordsDerivePrivateKeyUnSupportedCurve = 'RecordsDerivePrivateKeyUnSupportedCurve',
@@ -128,8 +128,7 @@ export class GrantAuthorization {
128
128
  * Verify that the `interface` and `method` grant scopes match the incoming message.
129
129
  *
130
130
  * For the Messages interface, a `Read` scope is treated as a unified scope that also authorizes
131
- * `Subscribe` and `Sync` operations. This mirrors how protocol `$actions` treats `read` as a
132
- * unified action covering read, query, subscribe, and count.
131
+ * `Subscribe` and `Sync` operations.
133
132
  *
134
133
  * @throws {DwnError} if the `interface` and `method` of the incoming message do not match the scope of the permission grant.
135
134
  */
@@ -147,7 +146,7 @@ export class GrantAuthorization {
147
146
  }
148
147
 
149
148
  // Messages.Read is the only valid Messages scope and covers Read, Subscribe, and Sync operations.
150
- // Reject any Messages grant with method !== Read (malformed or legacy stored data).
149
+ // Reject any Messages grant with method !== Read.
151
150
  if (dwnInterface === DwnInterfaceName.Messages) {
152
151
  if (permissionGrant.scope.method !== DwnMethodName.Read) {
153
152
  throw new DwnError(
@@ -162,11 +161,14 @@ export class GrantAuthorization {
162
161
  `DWN Method of incoming message is outside the scope of permission grant with ID ${permissionGrant.id}`
163
162
  );
164
163
  }
165
- } else if (dwnMethod !== permissionGrant.scope.method) {
164
+ return;
165
+ }
166
+
167
+ if (dwnMethod !== permissionGrant.scope.method) {
166
168
  throw new DwnError(
167
169
  DwnErrorCode.GrantAuthorizationMethodMismatch,
168
170
  `DWN Method of incoming message is outside the scope of permission grant with ID ${permissionGrant.id}`
169
171
  );
170
172
  }
171
173
  }
172
- }
174
+ }
@@ -12,6 +12,20 @@ import { removeUndefinedProperties } from '@enbox/common';
12
12
  import { validateJsonSchema } from '../schema-validator.js';
13
13
  import { DwnError, DwnErrorCode } from './dwn-error.js';
14
14
 
15
+ type PermissionGrantInvocation = {
16
+ permissionGrantId?: string;
17
+ permissionGrantIds?: string[];
18
+ };
19
+
20
+ type ValidateSignatureStructureOptions = {
21
+ /**
22
+ * Permission grant invocations are bound to the author signature payload.
23
+ * Owner signatures only prove owner retention/consent and do not repeat
24
+ * the author's grant invocation fields.
25
+ */
26
+ validatePermissionGrantInvocation?: boolean;
27
+ };
28
+
15
29
  /**
16
30
  * A class containing utility methods for working with DWN messages.
17
31
  */
@@ -100,16 +114,17 @@ export class Message {
100
114
  signer: MessageSigner,
101
115
  delegatedGrant?: DataEncodedRecordsWriteMessage,
102
116
  permissionGrantId?: string,
117
+ permissionGrantIds?: string[],
103
118
  protocolRole?: string
104
119
  }): Promise<AuthorizationModel> {
105
- const { descriptor, signer, delegatedGrant, permissionGrantId, protocolRole } = input;
120
+ const { descriptor, signer, delegatedGrant, permissionGrantId, permissionGrantIds, protocolRole } = input;
106
121
 
107
122
  let delegatedGrantId;
108
123
  if (delegatedGrant !== undefined) {
109
124
  delegatedGrantId = await Message.getCid(delegatedGrant);
110
125
  }
111
126
 
112
- const signature = await Message.createSignature(descriptor, signer, { delegatedGrantId, permissionGrantId, protocolRole });
127
+ const signature = await Message.createSignature(descriptor, signer, { delegatedGrantId, permissionGrantId, permissionGrantIds, protocolRole });
113
128
 
114
129
  const authorization: AuthorizationModel = {
115
130
  signature
@@ -129,11 +144,23 @@ export class Message {
129
144
  public static async createSignature(
130
145
  descriptor: Descriptor,
131
146
  signer: MessageSigner,
132
- additionalPayloadProperties?: { delegatedGrantId?: string, permissionGrantId?: string, protocolRole?: string }
147
+ additionalPayloadProperties?: { delegatedGrantId?: string, permissionGrantId?: string, permissionGrantIds?: string[], protocolRole?: string }
133
148
  ): Promise<GeneralJws> {
134
149
  const descriptorCid = await Cid.computeCid(descriptor);
135
-
136
- const signaturePayload: GenericSignaturePayload = { descriptorCid, ...additionalPayloadProperties };
150
+ const {
151
+ delegatedGrantId,
152
+ permissionGrantId,
153
+ permissionGrantIds,
154
+ protocolRole
155
+ } = additionalPayloadProperties ?? {};
156
+ const permissionGrantInvocation = Message.normalizePermissionGrantInvocation({ permissionGrantId, permissionGrantIds });
157
+
158
+ const signaturePayload: GenericSignaturePayload = {
159
+ descriptorCid,
160
+ delegatedGrantId,
161
+ protocolRole,
162
+ ...permissionGrantInvocation
163
+ };
137
164
  removeUndefinedProperties(signaturePayload);
138
165
 
139
166
  const signaturePayloadBytes = Encoder.objectToBytes(signaturePayload);
@@ -144,6 +171,55 @@ export class Message {
144
171
  return signature;
145
172
  }
146
173
 
174
+ /**
175
+ * Normalizes permission grant invocation before it is written into a descriptor
176
+ * and signed payload.
177
+ *
178
+ * Direct operation messages use `permissionGrantId`; Messages operations use
179
+ * canonicalized `permissionGrantIds` so a request can invoke a grant set.
180
+ */
181
+ public static normalizePermissionGrantInvocation(input: PermissionGrantInvocation): PermissionGrantInvocation {
182
+ if (input.permissionGrantId !== undefined && input.permissionGrantIds !== undefined) {
183
+ throw new DwnError(
184
+ DwnErrorCode.MessagePermissionGrantCreateInvocationAmbiguous,
185
+ 'permission grant invocation must use either `permissionGrantId` or `permissionGrantIds`, not both'
186
+ );
187
+ }
188
+
189
+ if (input.permissionGrantId !== undefined) {
190
+ return { permissionGrantId: input.permissionGrantId };
191
+ }
192
+
193
+ if (input.permissionGrantIds === undefined) {
194
+ return {};
195
+ }
196
+
197
+ const permissionGrantIds = Message.normalizePermissionGrantIds(input);
198
+ return { permissionGrantIds };
199
+ }
200
+
201
+ /**
202
+ * Returns the permission grant ID carried by a direct operation signature payload.
203
+ */
204
+ public static getPermissionGrantId(signaturePayload: GenericSignaturePayload): string | undefined {
205
+ return signaturePayload.permissionGrantId;
206
+ }
207
+
208
+ /**
209
+ * Returns all permission grant IDs invoked by a signature payload.
210
+ *
211
+ * Direct Records/Protocols operations carry a single `permissionGrantId`.
212
+ * Messages operations carry `permissionGrantIds`. Generic cleanup and
213
+ * revocation code uses this helper across both wire shapes.
214
+ */
215
+ public static getPermissionGrantIds(signaturePayload: GenericSignaturePayload): string[] {
216
+ if (signaturePayload.permissionGrantId !== undefined) {
217
+ return [signaturePayload.permissionGrantId];
218
+ }
219
+
220
+ return signaturePayload.permissionGrantIds ?? [];
221
+ }
222
+
147
223
  /**
148
224
  * @returns newest message in the array. `undefined` if given array is empty.
149
225
  */
@@ -227,12 +303,14 @@ export class Message {
227
303
  * 3. The `descriptorCid` property matches the CID of the message descriptor
228
304
  * NOTE: signature is NOT verified.
229
305
  * @param payloadJsonSchemaKey The key to look up the JSON schema referenced in `compile-validators.js` and perform payload schema validation on.
306
+ * @param options Additional structural validation controls.
230
307
  * @returns the parsed JSON payload object if validation succeeds.
231
308
  */
232
309
  public static async validateSignatureStructure(
233
310
  messageSignature: GeneralJws,
234
311
  messageDescriptor: Descriptor,
235
312
  payloadJsonSchemaKey: string = 'GenericSignaturePayload',
313
+ options: ValidateSignatureStructureOptions = {},
236
314
  ): Promise<GenericSignaturePayload> {
237
315
 
238
316
  if (messageSignature.signatures.length !== 1) {
@@ -254,6 +332,75 @@ export class Message {
254
332
  );
255
333
  }
256
334
 
335
+ if (options.validatePermissionGrantInvocation !== false) {
336
+ Message.validatePermissionGrantInvocationMatchesPayload(messageDescriptor, payloadJson);
337
+ }
338
+
257
339
  return payloadJson;
258
340
  }
259
- }
341
+
342
+ private static normalizePermissionGrantIds(input: PermissionGrantInvocation): string[] {
343
+ if (input.permissionGrantIds === undefined) {
344
+ return [];
345
+ }
346
+
347
+ if (input.permissionGrantIds.length === 0) {
348
+ throw new DwnError(
349
+ DwnErrorCode.MessagePermissionGrantIdsEmpty,
350
+ '`permissionGrantIds` must contain at least one grant ID'
351
+ );
352
+ }
353
+
354
+ return [...new Set(input.permissionGrantIds)].sort(lexicographicalCompare);
355
+ }
356
+
357
+ private static validatePermissionGrantInvocationCanonical(input: PermissionGrantInvocation): string[] {
358
+ if (input.permissionGrantId !== undefined && input.permissionGrantIds !== undefined) {
359
+ throw new DwnError(
360
+ DwnErrorCode.MessagePermissionGrantValidateInvocationAmbiguous,
361
+ 'permission grant invocation must use either `permissionGrantId` or `permissionGrantIds`, not both'
362
+ );
363
+ }
364
+
365
+ if (input.permissionGrantId !== undefined) {
366
+ return [input.permissionGrantId];
367
+ }
368
+
369
+ const normalizedPermissionGrantIds = Message.normalizePermissionGrantIds(input);
370
+
371
+ if (input.permissionGrantIds !== undefined && !Message.areStringArraysEqual(input.permissionGrantIds, normalizedPermissionGrantIds)) {
372
+ throw new DwnError(
373
+ DwnErrorCode.MessagePermissionGrantIdsNotCanonical,
374
+ '`permissionGrantIds` must be sorted and deduplicated'
375
+ );
376
+ }
377
+
378
+ return normalizedPermissionGrantIds;
379
+ }
380
+
381
+ private static validatePermissionGrantInvocationMatchesPayload(
382
+ descriptor: Descriptor & PermissionGrantInvocation,
383
+ signaturePayload: GenericSignaturePayload
384
+ ): void {
385
+ if (descriptor.permissionGrantId !== signaturePayload.permissionGrantId) {
386
+ throw new DwnError(
387
+ DwnErrorCode.MessagePermissionGrantDescriptorPayloadMismatch,
388
+ 'permission grant invocation in descriptor does not match signature payload'
389
+ );
390
+ }
391
+
392
+ const descriptorPermissionGrantIds = Message.validatePermissionGrantInvocationCanonical(descriptor);
393
+ const payloadPermissionGrantIds = Message.validatePermissionGrantInvocationCanonical(signaturePayload);
394
+
395
+ if (!Message.areStringArraysEqual(descriptorPermissionGrantIds, payloadPermissionGrantIds)) {
396
+ throw new DwnError(
397
+ DwnErrorCode.MessagePermissionGrantIdsDescriptorPayloadMismatch,
398
+ 'permission grant invocation in descriptor does not match signature payload'
399
+ );
400
+ }
401
+ }
402
+
403
+ private static areStringArraysEqual(a: string[], b: string[]): boolean {
404
+ return a.length === b.length && a.every((value, index) => value === b[index]);
405
+ }
406
+ }