@enbox/dwn-sdk-js 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/browser.mjs +3 -10
- package/dist/browser.mjs.map +4 -4
- package/dist/esm/generated/precompiled-validators.js +799 -885
- package/dist/esm/generated/precompiled-validators.js.map +1 -1
- package/dist/esm/src/core/dwn-constant.js +5 -0
- package/dist/esm/src/core/dwn-constant.js.map +1 -1
- package/dist/esm/src/core/dwn-error.js +12 -4
- package/dist/esm/src/core/dwn-error.js.map +1 -1
- package/dist/esm/src/core/grant-authorization.js +9 -18
- package/dist/esm/src/core/grant-authorization.js.map +1 -1
- package/dist/esm/src/core/message-reply.js.map +1 -1
- package/dist/esm/src/core/messages-grant-authorization.js +28 -45
- package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
- package/dist/esm/src/core/protocol-authorization-action.js +25 -27
- package/dist/esm/src/core/protocol-authorization-action.js.map +1 -1
- package/dist/esm/src/core/protocol-authorization-validation.js +34 -89
- package/dist/esm/src/core/protocol-authorization-validation.js.map +1 -1
- package/dist/esm/src/core/protocol-authorization.js +44 -118
- package/dist/esm/src/core/protocol-authorization.js.map +1 -1
- package/dist/esm/src/core/protocols-grant-authorization.js +5 -5
- package/dist/esm/src/core/protocols-grant-authorization.js.map +1 -1
- package/dist/esm/src/core/recording-validation-state-reader.js +84 -0
- package/dist/esm/src/core/recording-validation-state-reader.js.map +1 -0
- package/dist/esm/src/core/records-grant-authorization.js +11 -11
- package/dist/esm/src/core/records-grant-authorization.js.map +1 -1
- package/dist/esm/src/core/replication-apply.js +123 -28
- package/dist/esm/src/core/replication-apply.js.map +1 -1
- package/dist/esm/src/core/resumable-task-manager.js +5 -4
- package/dist/esm/src/core/resumable-task-manager.js.map +1 -1
- package/dist/esm/src/core/validation-state-reader.js +237 -0
- package/dist/esm/src/core/validation-state-reader.js.map +1 -0
- package/dist/esm/src/dwn.js +165 -132
- package/dist/esm/src/dwn.js.map +1 -1
- package/dist/esm/src/enums/dwn-interface-method.js +0 -1
- package/dist/esm/src/enums/dwn-interface-method.js.map +1 -1
- package/dist/esm/src/event-stream/durable-event-log.js +365 -0
- package/dist/esm/src/event-stream/durable-event-log.js.map +1 -0
- package/dist/esm/src/event-stream/event-emitter-wake-publisher.js +25 -0
- package/dist/esm/src/event-stream/event-emitter-wake-publisher.js.map +1 -0
- package/dist/esm/src/handlers/messages-query.js +159 -0
- package/dist/esm/src/handlers/messages-query.js.map +1 -0
- 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 +8 -8
- package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
- package/dist/esm/src/handlers/protocols-configure.js +30 -49
- package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
- package/dist/esm/src/handlers/protocols-query.js +1 -1
- package/dist/esm/src/handlers/protocols-query.js.map +1 -1
- package/dist/esm/src/handlers/records-count.js +20 -11
- package/dist/esm/src/handlers/records-count.js.map +1 -1
- package/dist/esm/src/handlers/records-delete.js +20 -16
- package/dist/esm/src/handlers/records-delete.js.map +1 -1
- package/dist/esm/src/handlers/records-query.js +35 -11
- package/dist/esm/src/handlers/records-query.js.map +1 -1
- package/dist/esm/src/handlers/records-read.js +52 -42
- package/dist/esm/src/handlers/records-read.js.map +1 -1
- package/dist/esm/src/handlers/records-subscribe.js +107 -11
- package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
- package/dist/esm/src/handlers/records-write.js +62 -116
- package/dist/esm/src/handlers/records-write.js.map +1 -1
- package/dist/esm/src/index.js +6 -7
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/interfaces/{messages-sync.js → messages-query.js} +21 -15
- package/dist/esm/src/interfaces/messages-query.js.map +1 -0
- package/dist/esm/src/interfaces/protocols-configure.js +12 -9
- package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
- package/dist/esm/src/interfaces/protocols-query.js +3 -4
- package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
- package/dist/esm/src/interfaces/records-count.js +4 -3
- package/dist/esm/src/interfaces/records-count.js.map +1 -1
- package/dist/esm/src/interfaces/records-delete.js +21 -4
- package/dist/esm/src/interfaces/records-delete.js.map +1 -1
- package/dist/esm/src/interfaces/records-query.js +4 -3
- package/dist/esm/src/interfaces/records-query.js.map +1 -1
- package/dist/esm/src/interfaces/records-read.js +3 -3
- package/dist/esm/src/interfaces/records-read.js.map +1 -1
- package/dist/esm/src/interfaces/records-subscribe.js +4 -3
- package/dist/esm/src/interfaces/records-subscribe.js.map +1 -1
- package/dist/esm/src/interfaces/records-write.js +27 -13
- package/dist/esm/src/interfaces/records-write.js.map +1 -1
- package/dist/esm/src/protocols/permissions.js +27 -34
- package/dist/esm/src/protocols/permissions.js.map +1 -1
- package/dist/esm/src/store/index-level.js +24 -9
- package/dist/esm/src/store/index-level.js.map +1 -1
- package/dist/esm/src/store/level-wrapper.js +7 -0
- package/dist/esm/src/store/level-wrapper.js.map +1 -1
- package/dist/esm/src/store/message-store-level.js +536 -42
- package/dist/esm/src/store/message-store-level.js.map +1 -1
- package/dist/esm/src/store/storage-controller.js +58 -49
- package/dist/esm/src/store/storage-controller.js.map +1 -1
- package/dist/esm/src/types/message-types.js.map +1 -1
- package/dist/esm/src/types/validation-state-reader.js +2 -0
- package/dist/esm/src/types/validation-state-reader.js.map +1 -0
- package/dist/esm/src/utils/messages.js +17 -0
- package/dist/esm/src/utils/messages.js.map +1 -1
- package/dist/esm/src/utils/protocol-tags.js +262 -0
- package/dist/esm/src/utils/protocol-tags.js.map +1 -0
- package/dist/esm/src/utils/record-limit-occupancy.js +244 -0
- package/dist/esm/src/utils/record-limit-occupancy.js.map +1 -0
- package/dist/esm/src/utils/records.js +50 -14
- package/dist/esm/src/utils/records.js.map +1 -1
- package/dist/esm/src/utils/replication.js +85 -0
- package/dist/esm/src/utils/replication.js.map +1 -0
- package/dist/esm/tests/core/grant-authorization.spec.js +4 -4
- package/dist/esm/tests/core/grant-authorization.spec.js.map +1 -1
- package/dist/esm/tests/core/process-message-parity.spec.js +222 -0
- package/dist/esm/tests/core/process-message-parity.spec.js.map +1 -0
- package/dist/esm/tests/core/protocol-authorization.spec.js +5 -2
- package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
- package/dist/esm/tests/core/records-grant-authorization.spec.js +5 -5
- package/dist/esm/tests/core/records-grant-authorization.spec.js.map +1 -1
- package/dist/esm/tests/core/replication-apply.spec.js +55 -1
- package/dist/esm/tests/core/replication-apply.spec.js.map +1 -1
- package/dist/esm/tests/core/replication-replay-property.spec.js +350 -0
- package/dist/esm/tests/core/replication-replay-property.spec.js.map +1 -0
- package/dist/esm/tests/core/validation-read-closure.spec.js +469 -0
- package/dist/esm/tests/core/validation-read-closure.spec.js.map +1 -0
- package/dist/esm/tests/core/validation-state-reader.spec.js +716 -0
- package/dist/esm/tests/core/validation-state-reader.spec.js.map +1 -0
- package/dist/esm/tests/durable-event-log.spec.js +373 -0
- package/dist/esm/tests/durable-event-log.spec.js.map +1 -0
- package/dist/esm/tests/dwn.spec.js +504 -35
- package/dist/esm/tests/dwn.spec.js.map +1 -1
- package/dist/esm/tests/features/author-delegated-grant.spec.js +9 -6
- package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -1
- package/dist/esm/tests/features/owner-delegated-grant.spec.js +1 -4
- package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -1
- package/dist/esm/tests/features/owner-signature.spec.js +1 -4
- package/dist/esm/tests/features/owner-signature.spec.js.map +1 -1
- package/dist/esm/tests/features/permissions.spec.js +165 -4
- package/dist/esm/tests/features/permissions.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-composition.spec.js +8 -11
- package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-create-action.spec.js +1 -4
- package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-delete-action.spec.js +3 -5
- package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-update-action.spec.js +3 -6
- package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -1
- package/dist/esm/tests/features/records-delivery.spec.js +1 -4
- package/dist/esm/tests/features/records-delivery.spec.js.map +1 -1
- package/dist/esm/tests/features/records-immutable.spec.js +1 -4
- package/dist/esm/tests/features/records-immutable.spec.js.map +1 -1
- package/dist/esm/tests/features/records-nested-query-scope.spec.js +281 -0
- package/dist/esm/tests/features/records-nested-query-scope.spec.js.map +1 -0
- package/dist/esm/tests/features/records-prune-cross-protocol.spec.js +3 -7
- package/dist/esm/tests/features/records-prune-cross-protocol.spec.js.map +1 -1
- package/dist/esm/tests/features/records-prune.spec.js +11 -22
- package/dist/esm/tests/features/records-prune.spec.js.map +1 -1
- package/dist/esm/tests/features/records-record-limit.spec.js +441 -231
- package/dist/esm/tests/features/records-record-limit.spec.js.map +1 -1
- package/dist/esm/tests/features/records-squash.spec.js +6 -4
- package/dist/esm/tests/features/records-squash.spec.js.map +1 -1
- package/dist/esm/tests/features/records-tags.spec.js +1 -4
- package/dist/esm/tests/features/records-tags.spec.js.map +1 -1
- package/dist/esm/tests/features/resumable-tasks.spec.js +3 -5
- package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -1
- package/dist/esm/tests/fuzz/message-store.fuzz.spec.js +1 -2
- package/dist/esm/tests/fuzz/message-store.fuzz.spec.js.map +1 -1
- package/dist/esm/tests/fuzz/process-message.fuzz.spec.js +2 -4
- package/dist/esm/tests/fuzz/process-message.fuzz.spec.js.map +1 -1
- package/dist/esm/tests/fuzz/schema-validation.fuzz.spec.js +1 -1
- package/dist/esm/tests/fuzz/schema-validation.fuzz.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-query.spec.js +246 -0
- package/dist/esm/tests/handlers/messages-query.spec.js.map +1 -0
- package/dist/esm/tests/handlers/messages-read.spec.js +2 -5
- package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-subscribe.spec.js +3 -14
- package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/handlers/protocols-configure.spec.js +27 -26
- package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/handlers/protocols-query.spec.js +1 -4
- package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-count.spec.js +1 -4
- package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-delete.spec.js +312 -30
- package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-query.spec.js +32 -9
- package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-read.spec.js +4 -4
- package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-subscribe.spec.js +33 -14
- package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-write.spec.js +82 -36
- package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-delete.spec.js +69 -2
- package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-write.spec.js +4 -3
- package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
- package/dist/esm/tests/protocols/permissions.spec.js +55 -6
- package/dist/esm/tests/protocols/permissions.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/aggregator.spec.js +1 -4
- package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/deleted-record.spec.js +1 -4
- package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +1 -4
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/nested-roles.spec.js +1 -4
- package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/subscriptions.spec.js +1 -4
- package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -1
- package/dist/esm/tests/store/message-store-level.spec.js +361 -5
- package/dist/esm/tests/store/message-store-level.spec.js.map +1 -1
- package/dist/esm/tests/store/message-store.spec.js +60 -0
- package/dist/esm/tests/store/message-store.spec.js.map +1 -1
- package/dist/esm/tests/test-event-stream.js +7 -3
- package/dist/esm/tests/test-event-stream.js.map +1 -1
- package/dist/esm/tests/test-stores.js +19 -9
- package/dist/esm/tests/test-stores.js.map +1 -1
- package/dist/esm/tests/test-suite.js +4 -2
- package/dist/esm/tests/test-suite.js.map +1 -1
- package/dist/esm/tests/utils/protocol-tags.spec.js +96 -0
- package/dist/esm/tests/utils/protocol-tags.spec.js.map +1 -0
- package/dist/esm/tests/utils/test-data-generator.js +25 -0
- package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
- package/dist/esm/tests/utils/test-stub-generator.js.map +1 -1
- package/dist/esm/tests/utils/test-validation-state-reader.js +16 -0
- package/dist/esm/tests/utils/test-validation-state-reader.js.map +1 -0
- package/dist/types/generated/precompiled-validators.d.ts +6 -6
- package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
- package/dist/types/src/core/core-protocol.d.ts +3 -3
- package/dist/types/src/core/core-protocol.d.ts.map +1 -1
- package/dist/types/src/core/dwn-constant.d.ts +5 -0
- package/dist/types/src/core/dwn-constant.d.ts.map +1 -1
- package/dist/types/src/core/dwn-error.d.ts +12 -4
- package/dist/types/src/core/dwn-error.d.ts.map +1 -1
- package/dist/types/src/core/grant-authorization.d.ts +5 -5
- package/dist/types/src/core/grant-authorization.d.ts.map +1 -1
- package/dist/types/src/core/message-reply.d.ts +5 -4
- package/dist/types/src/core/message-reply.d.ts.map +1 -1
- package/dist/types/src/core/messages-grant-authorization.d.ts +12 -14
- package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -1
- package/dist/types/src/core/protocol-authorization-action.d.ts +4 -5
- package/dist/types/src/core/protocol-authorization-action.d.ts.map +1 -1
- package/dist/types/src/core/protocol-authorization-validation.d.ts +14 -17
- package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -1
- package/dist/types/src/core/protocol-authorization.d.ts +8 -33
- package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
- package/dist/types/src/core/protocols-grant-authorization.d.ts +4 -4
- package/dist/types/src/core/protocols-grant-authorization.d.ts.map +1 -1
- package/dist/types/src/core/recording-validation-state-reader.d.ts +75 -0
- package/dist/types/src/core/recording-validation-state-reader.d.ts.map +1 -0
- package/dist/types/src/core/records-grant-authorization.d.ts +8 -8
- package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -1
- package/dist/types/src/core/replication-apply.d.ts +36 -0
- package/dist/types/src/core/replication-apply.d.ts.map +1 -1
- package/dist/types/src/core/resumable-task-manager.d.ts +1 -1
- package/dist/types/src/core/resumable-task-manager.d.ts.map +1 -1
- package/dist/types/src/core/validation-state-reader.d.ts +79 -0
- package/dist/types/src/core/validation-state-reader.d.ts.map +1 -0
- package/dist/types/src/dwn.d.ts +33 -20
- package/dist/types/src/dwn.d.ts.map +1 -1
- package/dist/types/src/enums/dwn-interface-method.d.ts +0 -1
- package/dist/types/src/enums/dwn-interface-method.d.ts.map +1 -1
- package/dist/types/src/event-stream/durable-event-log.d.ts +69 -0
- package/dist/types/src/event-stream/durable-event-log.d.ts.map +1 -0
- package/dist/types/src/event-stream/event-emitter-wake-publisher.d.ts +13 -0
- package/dist/types/src/event-stream/event-emitter-wake-publisher.d.ts.map +1 -0
- package/dist/types/src/handlers/messages-query.d.ts +20 -0
- package/dist/types/src/handlers/messages-query.d.ts.map +1 -0
- package/dist/types/src/handlers/messages-read.d.ts +1 -1
- package/dist/types/src/handlers/messages-read.d.ts.map +1 -1
- package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -1
- package/dist/types/src/handlers/protocols-configure.d.ts +0 -5
- package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
- package/dist/types/src/handlers/records-count.d.ts +2 -1
- package/dist/types/src/handlers/records-count.d.ts.map +1 -1
- package/dist/types/src/handlers/records-delete.d.ts +2 -2
- package/dist/types/src/handlers/records-delete.d.ts.map +1 -1
- package/dist/types/src/handlers/records-query.d.ts +1 -1
- package/dist/types/src/handlers/records-query.d.ts.map +1 -1
- package/dist/types/src/handlers/records-read.d.ts +2 -1
- package/dist/types/src/handlers/records-read.d.ts.map +1 -1
- package/dist/types/src/handlers/records-subscribe.d.ts +4 -5
- package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
- package/dist/types/src/handlers/records-write.d.ts +3 -11
- package/dist/types/src/handlers/records-write.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +14 -16
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/interfaces/messages-query.d.ts +23 -0
- package/dist/types/src/interfaces/messages-query.d.ts.map +1 -0
- package/dist/types/src/interfaces/protocols-configure.d.ts +3 -3
- package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
- package/dist/types/src/interfaces/protocols-query.d.ts +2 -2
- package/dist/types/src/interfaces/protocols-query.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-count.d.ts +3 -3
- package/dist/types/src/interfaces/records-count.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-delete.d.ts +11 -3
- package/dist/types/src/interfaces/records-delete.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-query.d.ts +3 -3
- package/dist/types/src/interfaces/records-query.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-read.d.ts +3 -3
- package/dist/types/src/interfaces/records-read.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-subscribe.d.ts +3 -3
- package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-write.d.ts +15 -7
- package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
- package/dist/types/src/protocols/permissions.d.ts +9 -12
- package/dist/types/src/protocols/permissions.d.ts.map +1 -1
- package/dist/types/src/store/index-level.d.ts +10 -1
- package/dist/types/src/store/index-level.d.ts.map +1 -1
- package/dist/types/src/store/level-wrapper.d.ts +5 -0
- package/dist/types/src/store/level-wrapper.d.ts.map +1 -1
- package/dist/types/src/store/message-store-level.d.ts +94 -14
- package/dist/types/src/store/message-store-level.d.ts.map +1 -1
- package/dist/types/src/store/storage-controller.d.ts +17 -14
- package/dist/types/src/store/storage-controller.d.ts.map +1 -1
- package/dist/types/src/types/message-store.d.ts +29 -1
- package/dist/types/src/types/message-store.d.ts.map +1 -1
- package/dist/types/src/types/message-types.d.ts +2 -0
- package/dist/types/src/types/message-types.d.ts.map +1 -1
- package/dist/types/src/types/messages-types.d.ts +21 -37
- package/dist/types/src/types/messages-types.d.ts.map +1 -1
- package/dist/types/src/types/method-handler.d.ts +2 -2
- package/dist/types/src/types/method-handler.d.ts.map +1 -1
- package/dist/types/src/types/permission-types.d.ts +1 -1
- package/dist/types/src/types/subscriptions.d.ts +50 -39
- package/dist/types/src/types/subscriptions.d.ts.map +1 -1
- package/dist/types/src/types/validation-state-reader.d.ts +116 -0
- package/dist/types/src/types/validation-state-reader.d.ts.map +1 -0
- package/dist/types/src/utils/messages.d.ts +10 -0
- package/dist/types/src/utils/messages.d.ts.map +1 -1
- package/dist/types/src/utils/protocol-tags.d.ts +15 -0
- package/dist/types/src/utils/protocol-tags.d.ts.map +1 -0
- package/dist/types/src/utils/record-limit-occupancy.d.ts +40 -0
- package/dist/types/src/utils/record-limit-occupancy.d.ts.map +1 -0
- package/dist/types/src/utils/records.d.ts +25 -3
- package/dist/types/src/utils/records.d.ts.map +1 -1
- package/dist/types/src/utils/replication.d.ts +22 -0
- package/dist/types/src/utils/replication.d.ts.map +1 -0
- package/dist/types/tests/core/process-message-parity.spec.d.ts +2 -0
- package/dist/types/tests/core/process-message-parity.spec.d.ts.map +1 -0
- package/dist/types/tests/core/replication-replay-property.spec.d.ts +2 -0
- package/dist/types/tests/core/replication-replay-property.spec.d.ts.map +1 -0
- package/dist/types/tests/core/validation-read-closure.spec.d.ts +2 -0
- package/dist/types/tests/core/validation-read-closure.spec.d.ts.map +1 -0
- package/dist/types/tests/core/validation-state-reader.spec.d.ts +2 -0
- package/dist/types/tests/core/validation-state-reader.spec.d.ts.map +1 -0
- package/dist/types/tests/durable-event-log.spec.d.ts +2 -0
- package/dist/types/tests/durable-event-log.spec.d.ts.map +1 -0
- package/dist/types/tests/dwn.spec.d.ts.map +1 -1
- package/dist/types/tests/features/author-delegated-grant.spec.d.ts.map +1 -1
- package/dist/types/tests/features/owner-delegated-grant.spec.d.ts.map +1 -1
- package/dist/types/tests/features/owner-signature.spec.d.ts.map +1 -1
- package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
- package/dist/types/tests/features/protocol-composition.spec.d.ts.map +1 -1
- package/dist/types/tests/features/protocol-create-action.spec.d.ts.map +1 -1
- package/dist/types/tests/features/protocol-delete-action.spec.d.ts.map +1 -1
- package/dist/types/tests/features/protocol-update-action.spec.d.ts.map +1 -1
- package/dist/types/tests/features/records-delivery.spec.d.ts.map +1 -1
- package/dist/types/tests/features/records-immutable.spec.d.ts.map +1 -1
- package/dist/types/tests/features/records-nested-query-scope.spec.d.ts +2 -0
- package/dist/types/tests/features/records-nested-query-scope.spec.d.ts.map +1 -0
- package/dist/types/tests/features/records-prune-cross-protocol.spec.d.ts.map +1 -1
- package/dist/types/tests/features/records-prune.spec.d.ts.map +1 -1
- package/dist/types/tests/features/records-record-limit.spec.d.ts.map +1 -1
- package/dist/types/tests/features/records-squash.spec.d.ts.map +1 -1
- package/dist/types/tests/features/records-tags.spec.d.ts.map +1 -1
- package/dist/types/tests/features/resumable-tasks.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/messages-query.spec.d.ts +2 -0
- package/dist/types/tests/handlers/messages-query.spec.d.ts.map +1 -0
- 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/protocols-configure.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/protocols-query.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-delete.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-read.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/scenarios/deleted-record.spec.d.ts.map +1 -1
- package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts.map +1 -1
- package/dist/types/tests/scenarios/nested-roles.spec.d.ts.map +1 -1
- package/dist/types/tests/scenarios/subscriptions.spec.d.ts.map +1 -1
- package/dist/types/tests/store/message-store.spec.d.ts.map +1 -1
- package/dist/types/tests/test-event-stream.d.ts +1 -1
- package/dist/types/tests/test-event-stream.d.ts.map +1 -1
- package/dist/types/tests/test-stores.d.ts +5 -4
- package/dist/types/tests/test-stores.d.ts.map +1 -1
- package/dist/types/tests/test-suite.d.ts +1 -2
- package/dist/types/tests/test-suite.d.ts.map +1 -1
- package/dist/types/tests/utils/protocol-tags.spec.d.ts +2 -0
- package/dist/types/tests/utils/protocol-tags.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/test-data-generator.d.ts +20 -1
- package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
- package/dist/types/tests/utils/test-validation-state-reader.d.ts +15 -0
- package/dist/types/tests/utils/test-validation-state-reader.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/core/core-protocol.ts +3 -3
- package/src/core/dwn-constant.ts +7 -1
- package/src/core/dwn-error.ts +12 -4
- package/src/core/grant-authorization.ts +11 -20
- package/src/core/message-reply.ts +6 -5
- package/src/core/messages-grant-authorization.ts +37 -70
- package/src/core/protocol-authorization-action.ts +29 -38
- package/src/core/protocol-authorization-validation.ts +47 -121
- package/src/core/protocol-authorization.ts +56 -202
- package/src/core/protocols-grant-authorization.ts +9 -9
- package/src/core/recording-validation-state-reader.ts +130 -0
- package/src/core/records-grant-authorization.ts +16 -16
- package/src/core/replication-apply.ts +172 -32
- package/src/core/resumable-task-manager.ts +10 -8
- package/src/core/validation-state-reader.ts +350 -0
- package/src/dwn.ts +285 -192
- package/src/enums/dwn-interface-method.ts +0 -1
- package/src/event-stream/durable-event-log.ts +509 -0
- package/src/event-stream/event-emitter-wake-publisher.ts +34 -0
- package/src/handlers/messages-query.ts +203 -0
- package/src/handlers/messages-read.ts +9 -10
- package/src/handlers/messages-subscribe.ts +12 -13
- package/src/handlers/protocols-configure.ts +37 -58
- package/src/handlers/protocols-query.ts +1 -1
- package/src/handlers/records-count.ts +24 -17
- package/src/handlers/records-delete.ts +29 -27
- package/src/handlers/records-query.ts +38 -17
- package/src/handlers/records-read.ts +63 -50
- package/src/handlers/records-subscribe.ts +132 -19
- package/src/handlers/records-write.ts +77 -168
- package/src/index.ts +14 -17
- package/src/interfaces/messages-query.ts +70 -0
- package/src/interfaces/protocols-configure.ts +20 -10
- package/src/interfaces/protocols-query.ts +4 -5
- package/src/interfaces/records-count.ts +9 -4
- package/src/interfaces/records-delete.ts +25 -5
- package/src/interfaces/records-query.ts +9 -4
- package/src/interfaces/records-read.ts +4 -4
- package/src/interfaces/records-subscribe.ts +9 -4
- package/src/interfaces/records-write.ts +41 -13
- package/src/protocols/permissions.ts +32 -52
- package/src/store/index-level.ts +30 -9
- package/src/store/level-wrapper.ts +9 -1
- package/src/store/message-store-level.ts +757 -47
- package/src/store/storage-controller.ts +74 -63
- package/src/types/message-store.ts +45 -2
- package/src/types/message-types.ts +3 -1
- package/src/types/messages-types.ts +26 -45
- package/src/types/method-handler.ts +3 -3
- package/src/types/permission-types.ts +1 -1
- package/src/types/subscriptions.ts +53 -42
- package/src/types/validation-state-reader.ts +127 -0
- package/src/utils/messages.ts +25 -1
- package/src/utils/protocol-tags.ts +366 -0
- package/src/utils/record-limit-occupancy.ts +377 -0
- package/src/utils/records.ts +69 -13
- package/src/utils/replication.ts +122 -0
- package/dist/esm/src/core/record-chain.js +0 -64
- package/dist/esm/src/core/record-chain.js.map +0 -1
- package/dist/esm/src/event-stream/event-emitter-event-log.js +0 -334
- package/dist/esm/src/event-stream/event-emitter-event-log.js.map +0 -1
- package/dist/esm/src/handlers/messages-sync.js +0 -278
- package/dist/esm/src/handlers/messages-sync.js.map +0 -1
- package/dist/esm/src/interfaces/messages-sync.js.map +0 -1
- package/dist/esm/src/smt/smt-store-level.js +0 -103
- package/dist/esm/src/smt/smt-store-level.js.map +0 -1
- package/dist/esm/src/smt/smt-store-memory.js +0 -41
- package/dist/esm/src/smt/smt-store-memory.js.map +0 -1
- package/dist/esm/src/smt/smt-utils.js +0 -129
- package/dist/esm/src/smt/smt-utils.js.map +0 -1
- package/dist/esm/src/smt/sparse-merkle-tree.js +0 -577
- package/dist/esm/src/smt/sparse-merkle-tree.js.map +0 -1
- package/dist/esm/src/state-index/state-index-level.js +0 -191
- package/dist/esm/src/state-index/state-index-level.js.map +0 -1
- package/dist/esm/src/types/smt-types.js +0 -5
- package/dist/esm/src/types/smt-types.js.map +0 -1
- package/dist/esm/src/types/state-index.js +0 -2
- package/dist/esm/src/types/state-index.js.map +0 -1
- package/dist/esm/tests/event-emitter-event-log.spec.js +0 -499
- package/dist/esm/tests/event-emitter-event-log.spec.js.map +0 -1
- package/dist/esm/tests/handlers/messages-sync.spec.js +0 -1088
- package/dist/esm/tests/handlers/messages-sync.spec.js.map +0 -1
- package/dist/esm/tests/smt/smt-store-level.spec.js +0 -132
- package/dist/esm/tests/smt/smt-store-level.spec.js.map +0 -1
- package/dist/esm/tests/smt/sparse-merkle-tree.spec.js +0 -732
- package/dist/esm/tests/smt/sparse-merkle-tree.spec.js.map +0 -1
- package/dist/esm/tests/state-index/state-index-level.spec.js +0 -245
- package/dist/esm/tests/state-index/state-index-level.spec.js.map +0 -1
- package/dist/types/src/core/record-chain.d.ts +0 -24
- package/dist/types/src/core/record-chain.d.ts.map +0 -1
- package/dist/types/src/event-stream/event-emitter-event-log.d.ts +0 -80
- package/dist/types/src/event-stream/event-emitter-event-log.d.ts.map +0 -1
- package/dist/types/src/handlers/messages-sync.d.ts +0 -39
- package/dist/types/src/handlers/messages-sync.d.ts.map +0 -1
- package/dist/types/src/interfaces/messages-sync.d.ts +0 -20
- package/dist/types/src/interfaces/messages-sync.d.ts.map +0 -1
- package/dist/types/src/smt/smt-store-level.d.ts +0 -32
- package/dist/types/src/smt/smt-store-level.d.ts.map +0 -1
- package/dist/types/src/smt/smt-store-memory.d.ts +0 -22
- package/dist/types/src/smt/smt-store-memory.d.ts.map +0 -1
- package/dist/types/src/smt/smt-utils.d.ts +0 -58
- package/dist/types/src/smt/smt-utils.d.ts.map +0 -1
- package/dist/types/src/smt/sparse-merkle-tree.d.ts +0 -124
- package/dist/types/src/smt/sparse-merkle-tree.d.ts.map +0 -1
- package/dist/types/src/state-index/state-index-level.d.ts +0 -83
- package/dist/types/src/state-index/state-index-level.d.ts.map +0 -1
- package/dist/types/src/types/smt-types.d.ts +0 -81
- package/dist/types/src/types/smt-types.d.ts.map +0 -1
- package/dist/types/src/types/state-index.d.ts +0 -90
- package/dist/types/src/types/state-index.d.ts.map +0 -1
- package/dist/types/tests/event-emitter-event-log.spec.d.ts +0 -2
- package/dist/types/tests/event-emitter-event-log.spec.d.ts.map +0 -1
- package/dist/types/tests/handlers/messages-sync.spec.d.ts +0 -2
- package/dist/types/tests/handlers/messages-sync.spec.d.ts.map +0 -1
- package/dist/types/tests/smt/smt-store-level.spec.d.ts +0 -2
- package/dist/types/tests/smt/smt-store-level.spec.d.ts.map +0 -1
- package/dist/types/tests/smt/sparse-merkle-tree.spec.d.ts +0 -2
- package/dist/types/tests/smt/sparse-merkle-tree.spec.d.ts.map +0 -1
- package/dist/types/tests/state-index/state-index-level.spec.d.ts +0 -2
- package/dist/types/tests/state-index/state-index-level.spec.d.ts.map +0 -1
- package/src/core/record-chain.ts +0 -99
- package/src/event-stream/event-emitter-event-log.ts +0 -430
- package/src/handlers/messages-sync.ts +0 -403
- package/src/interfaces/messages-sync.ts +0 -69
- package/src/smt/smt-store-level.ts +0 -143
- package/src/smt/smt-store-memory.ts +0 -53
- package/src/smt/smt-utils.ts +0 -149
- package/src/smt/sparse-merkle-tree.ts +0 -698
- package/src/state-index/state-index-level.ts +0 -239
- package/src/types/smt-types.ts +0 -95
- package/src/types/state-index.ts +0 -100
|
@@ -3,16 +3,13 @@ import { Cid } from '../utils/cid.js';
|
|
|
3
3
|
import { DataStream } from '../utils/data-stream.js';
|
|
4
4
|
import { DwnConstant } from '../core/dwn-constant.js';
|
|
5
5
|
import { Encoder } from '../utils/encoder.js';
|
|
6
|
-
import { FilterUtility } from '../utils/filter.js';
|
|
7
6
|
import { Message } from '../core/message.js';
|
|
8
7
|
import { messageReplyFromError } from '../core/message-reply.js';
|
|
9
|
-
import { PermissionsProtocol } from '../protocols/permissions.js';
|
|
10
8
|
import { ProtocolAuthorization } from '../core/protocol-authorization.js';
|
|
11
9
|
import { Records } from '../utils/records.js';
|
|
12
10
|
import { RecordsGrantAuthorization } from '../core/records-grant-authorization.js';
|
|
13
11
|
import { RecordsWrite } from '../interfaces/records-write.js';
|
|
14
12
|
import { ResumableTaskName } from '../core/resumable-task-manager.js';
|
|
15
|
-
import { SortDirection } from '../types/query-types.js';
|
|
16
13
|
import { StorageController } from '../store/storage-controller.js';
|
|
17
14
|
import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
|
|
18
15
|
import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
|
|
@@ -21,7 +18,7 @@ export class RecordsWriteHandler {
|
|
|
21
18
|
constructor(deps) {
|
|
22
19
|
this.deps = deps;
|
|
23
20
|
}
|
|
24
|
-
async handle({ tenant, message, dataStream }) {
|
|
21
|
+
async handle({ tenant, message, dataStream, }) {
|
|
25
22
|
let recordsWrite;
|
|
26
23
|
try {
|
|
27
24
|
recordsWrite = await RecordsWrite.parse(message);
|
|
@@ -39,22 +36,23 @@ export class RecordsWriteHandler {
|
|
|
39
36
|
// mutable validation. An already-stored message has already passed
|
|
40
37
|
// admission; replay should not be reinterpreted against current protocol,
|
|
41
38
|
// parent, role, grant, or record-limit state.
|
|
42
|
-
//
|
|
43
|
-
// Exception: an initial write may have been stored earlier without data
|
|
44
|
-
// (204). A later delivery of the same message with data must be allowed
|
|
45
|
-
// to complete the record.
|
|
46
39
|
const incomingCid = await Message.getCid(message);
|
|
47
40
|
for (const existingMessage of existingMessages) {
|
|
48
41
|
if (await Message.getCid(existingMessage) !== incomingCid) {
|
|
49
42
|
continue;
|
|
50
43
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
44
|
+
return { status: { code: 409, detail: 'Conflict' } };
|
|
45
|
+
}
|
|
46
|
+
const newMessageIsInitialWrite = await recordsWrite.isInitialWrite();
|
|
47
|
+
let initialWrite;
|
|
48
|
+
try {
|
|
49
|
+
initialWrite = await this.getInitialWrite(existingMessages, newMessageIsInitialWrite);
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
return messageReplyFromError(e, 400);
|
|
55
53
|
}
|
|
56
54
|
try {
|
|
57
|
-
await ProtocolAuthorization.validateReferentialIntegrity(tenant, recordsWrite, this.deps.
|
|
55
|
+
await ProtocolAuthorization.validateReferentialIntegrity(tenant, recordsWrite, this.deps.validationStateReader);
|
|
58
56
|
}
|
|
59
57
|
catch (e) {
|
|
60
58
|
return messageReplyFromError(e, 400);
|
|
@@ -62,18 +60,14 @@ export class RecordsWriteHandler {
|
|
|
62
60
|
// authentication & authorization
|
|
63
61
|
try {
|
|
64
62
|
await authenticate(message.authorization, this.deps.didResolver, message.attestation);
|
|
65
|
-
await this.authorizeRecordsWrite(tenant, recordsWrite
|
|
63
|
+
await this.authorizeRecordsWrite(tenant, recordsWrite);
|
|
66
64
|
}
|
|
67
65
|
catch (e) {
|
|
68
66
|
return messageReplyFromError(e, 401);
|
|
69
67
|
}
|
|
70
|
-
|
|
71
|
-
const newMessageIsInitialWrite = await recordsWrite.isInitialWrite();
|
|
72
|
-
let initialWrite;
|
|
73
|
-
if (!newMessageIsInitialWrite) {
|
|
68
|
+
if (initialWrite !== undefined) {
|
|
74
69
|
try {
|
|
75
|
-
initialWrite
|
|
76
|
-
RecordsWrite.verifyEqualityOfImmutableProperties(initialWrite, message);
|
|
70
|
+
this.verifyImmutableProperties(initialWrite, message);
|
|
77
71
|
}
|
|
78
72
|
catch (e) {
|
|
79
73
|
return messageReplyFromError(e, 400);
|
|
@@ -99,30 +93,16 @@ export class RecordsWriteHandler {
|
|
|
99
93
|
newestMessage = newestExistingMessage;
|
|
100
94
|
}
|
|
101
95
|
if (!incomingMessageIsNewest) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
// sync when a live pull initially stores the message without data
|
|
106
|
-
// and a subsequent poll or retry delivers the same message with data.
|
|
107
|
-
//
|
|
108
|
-
// We detect the incomplete state by checking whether the existing
|
|
109
|
-
// message is an initial write that lacks both inline encodedData and
|
|
110
|
-
// DataStore data — indicating it was stored without data.
|
|
111
|
-
let existingLacksData = false;
|
|
112
|
-
if (newestExistingMessage) {
|
|
113
|
-
existingLacksData = await this.existingInitialWriteLacksData(tenant, newestExistingMessage, message, dataStream !== undefined);
|
|
114
|
-
}
|
|
115
|
-
if (!existingLacksData) {
|
|
116
|
-
return {
|
|
117
|
-
status: { code: 409, detail: 'Conflict' }
|
|
118
|
-
};
|
|
119
|
-
}
|
|
96
|
+
return {
|
|
97
|
+
status: { code: 409, detail: 'Conflict' }
|
|
98
|
+
};
|
|
120
99
|
}
|
|
121
100
|
// Look up the core protocol (if any) for the incoming message so that lifecycle hooks
|
|
122
101
|
// can be dispatched generically rather than checking for specific protocol URIs.
|
|
123
102
|
const coreProtocol = message.descriptor.protocol === undefined
|
|
124
103
|
? undefined
|
|
125
104
|
: this.deps.coreProtocols?.get(message.descriptor.protocol);
|
|
105
|
+
let position;
|
|
126
106
|
try {
|
|
127
107
|
if (newestExistingMessage?.descriptor.method === DwnMethodName.Delete) {
|
|
128
108
|
throw new DwnError(DwnErrorCode.RecordsWriteNotAllowedAfterDelete, 'RecordsWrite is not allowed after a RecordsDelete.');
|
|
@@ -131,7 +111,7 @@ export class RecordsWriteHandler {
|
|
|
131
111
|
// This allows core protocols to perform cross-record validation before storage
|
|
132
112
|
// (e.g. ensuring revocation tag consistency with the parent grant's scoped protocol).
|
|
133
113
|
if (coreProtocol?.preProcessWrite !== undefined) {
|
|
134
|
-
await coreProtocol.preProcessWrite(tenant, message, this.deps.
|
|
114
|
+
await coreProtocol.preProcessWrite(tenant, message, this.deps.validationStateReader);
|
|
135
115
|
}
|
|
136
116
|
// NOTE: We allow isLatestBaseState to be true ONLY if the incoming message comes with data, or if the incoming message is NOT an initial write
|
|
137
117
|
// This would allow an initial write to be written to the DB without data, but having it not queryable,
|
|
@@ -155,20 +135,8 @@ export class RecordsWriteHandler {
|
|
|
155
135
|
isLatestBaseState = true;
|
|
156
136
|
}
|
|
157
137
|
const indexes = await recordsWrite.constructIndexes(isLatestBaseState);
|
|
158
|
-
await this.deps.messageStore.put(tenant, messageWithOptionalEncodedData, indexes);
|
|
159
|
-
|
|
160
|
-
await this.deps.stateIndex.insert(tenant, messageCid, indexes);
|
|
161
|
-
// NOTE: We only emit a `RecordsWrite` when the message is the latest base state.
|
|
162
|
-
// Because we allow a `RecordsWrite` which is not the latest state to be written, but not queried, we shouldn't emit it either.
|
|
163
|
-
// It will be emitted as a part of a subsequent next write, if it is the latest base state.
|
|
164
|
-
//
|
|
165
|
-
// We emit `messageWithOptionalEncodedData` (not the raw `message`) so
|
|
166
|
-
// that WebSocket subscribers receive inline `encodedData` for small
|
|
167
|
-
// records (<= 30 KB). This allows live sync to store the record
|
|
168
|
-
// immediately without a separate MessagesRead round-trip.
|
|
169
|
-
if (this.deps.eventLog !== undefined && isLatestBaseState) {
|
|
170
|
-
await this.deps.eventLog.emit(tenant, { message: messageWithOptionalEncodedData, initialWrite }, indexes, messageCid);
|
|
171
|
-
}
|
|
138
|
+
const putResult = await this.deps.messageStore.put(tenant, messageWithOptionalEncodedData, indexes);
|
|
139
|
+
position = putResult.position;
|
|
172
140
|
}
|
|
173
141
|
catch (error) {
|
|
174
142
|
if (error instanceof DwnError) {
|
|
@@ -191,10 +159,11 @@ export class RecordsWriteHandler {
|
|
|
191
159
|
// for more details.
|
|
192
160
|
status: (newMessageIsInitialWrite && dataStream === undefined) ?
|
|
193
161
|
{ code: 204, detail: 'No Content' } :
|
|
194
|
-
{ code: 202, detail: 'Accepted' }
|
|
162
|
+
{ code: 202, detail: 'Accepted' },
|
|
163
|
+
position,
|
|
195
164
|
};
|
|
196
|
-
//
|
|
197
|
-
await StorageController.
|
|
165
|
+
// displace every other message for this record, retaining only the initial write as non-latest state
|
|
166
|
+
await StorageController.deleteDisplacedMessagesAndRetainWrites(tenant, existingMessages, newestMessage, this.deps.messageStore, this.deps.dataStore, []);
|
|
198
167
|
// Squash processing: if the incoming write is a squash, delete all older sibling records
|
|
199
168
|
// at the same protocol path and parent context. Uses the resumable task system for crash safety.
|
|
200
169
|
if (message.descriptor.squash === true) {
|
|
@@ -210,7 +179,6 @@ export class RecordsWriteHandler {
|
|
|
210
179
|
await coreProtocol.postProcessWrite(tenant, recordsWrite, {
|
|
211
180
|
messageStore: this.deps.messageStore,
|
|
212
181
|
dataStore: this.deps.dataStore,
|
|
213
|
-
stateIndex: this.deps.stateIndex,
|
|
214
182
|
});
|
|
215
183
|
}
|
|
216
184
|
return messageReply;
|
|
@@ -231,7 +199,7 @@ export class RecordsWriteHandler {
|
|
|
231
199
|
// validate data integrity before setting.
|
|
232
200
|
const dataBytes = await DataStream.toBytes(dataStream);
|
|
233
201
|
const dataCid = await Cid.computeDagPbCidFromBytes(dataBytes);
|
|
234
|
-
|
|
202
|
+
RecordsWrite.validateDataIntegrity(message.descriptor.dataCid, message.descriptor.dataSize, dataCid, dataBytes.length);
|
|
235
203
|
// Dispatch schema validation to the core protocol, if applicable.
|
|
236
204
|
const coreProtocol = message.descriptor.protocol === undefined
|
|
237
205
|
? undefined
|
|
@@ -250,7 +218,7 @@ export class RecordsWriteHandler {
|
|
|
250
218
|
Cid.computeDagPbCidFromStream(dataStreamCopy1),
|
|
251
219
|
this.deps.dataStore.put(tenant, message.recordId, message.descriptor.dataCid, dataStreamCopy2)
|
|
252
220
|
]);
|
|
253
|
-
|
|
221
|
+
RecordsWrite.validateDataIntegrity(message.descriptor.dataCid, message.descriptor.dataSize, dataCid, DataStorePutResult.dataSize);
|
|
254
222
|
}
|
|
255
223
|
catch (error) {
|
|
256
224
|
// unwind/delete data if we have issue with storage or the data failed integrity validation
|
|
@@ -260,19 +228,22 @@ export class RecordsWriteHandler {
|
|
|
260
228
|
}
|
|
261
229
|
return messageWithOptionalEncodedData;
|
|
262
230
|
}
|
|
263
|
-
async
|
|
264
|
-
if (
|
|
265
|
-
return
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
231
|
+
async getInitialWrite(existingMessages, newMessageIsInitialWrite) {
|
|
232
|
+
if (newMessageIsInitialWrite) {
|
|
233
|
+
return undefined;
|
|
234
|
+
}
|
|
235
|
+
return RecordsWrite.getInitialWrite(existingMessages);
|
|
236
|
+
}
|
|
237
|
+
verifyImmutableProperties(initialWrite, message) {
|
|
238
|
+
try {
|
|
239
|
+
RecordsWrite.verifyEqualityOfImmutableProperties(initialWrite, message);
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
if (error instanceof DwnError && error.code === DwnErrorCode.RecordsWriteImmutablePropertyChanged) {
|
|
243
|
+
throw new DwnError(DwnErrorCode.RecordsWriteImmutablePropertyChanged, 'immutable RecordsWrite properties cannot be changed.');
|
|
244
|
+
}
|
|
245
|
+
throw error;
|
|
246
|
+
}
|
|
276
247
|
}
|
|
277
248
|
async processMessageWithoutDataStream(tenant, message, newestExistingWrite) {
|
|
278
249
|
const messageWithOptionalEncodedData = { ...message }; // clone
|
|
@@ -281,7 +252,7 @@ export class RecordsWriteHandler {
|
|
|
281
252
|
// we preform the dataCid check in case a user attempts to gain access to data by referencing a different known dataCid,
|
|
282
253
|
// so we insure that the data is already associated with the existing newest message
|
|
283
254
|
// See: https://github.com/enboxorg/enbox/issues/359 for more info
|
|
284
|
-
|
|
255
|
+
RecordsWrite.validateDataIntegrity(dataCid, dataSize, newestExistingWrite.descriptor.dataCid, newestExistingWrite.descriptor.dataSize);
|
|
285
256
|
if (dataSize <= DwnConstant.maxDataSizeAllowedToBeEncoded) {
|
|
286
257
|
// we encode the data from the original write if it is smaller than the data-store threshold
|
|
287
258
|
if (newestExistingWrite.encodedData === undefined) {
|
|
@@ -294,29 +265,13 @@ export class RecordsWriteHandler {
|
|
|
294
265
|
else {
|
|
295
266
|
// else just make sure the data is in the data store
|
|
296
267
|
// attempt to retrieve the data from the previous message
|
|
297
|
-
const
|
|
298
|
-
if (
|
|
268
|
+
const priorDataExists = await this.deps.validationStateReader.hasStoredData(tenant, newestExistingWrite.recordId, message.descriptor.dataCid);
|
|
269
|
+
if (!priorDataExists) {
|
|
299
270
|
throw new DwnError(DwnErrorCode.RecordsWriteMissingDataInPrevious, `No dataStream was provided and unable to get data from previous message`);
|
|
300
271
|
}
|
|
301
272
|
}
|
|
302
273
|
return messageWithOptionalEncodedData;
|
|
303
274
|
}
|
|
304
|
-
/**
|
|
305
|
-
* Validates the expected `dataCid` and `dataSize` in the descriptor vs the received data.
|
|
306
|
-
*
|
|
307
|
-
* @throws {DwnError} with `DwnErrorCode.RecordsWriteDataCidMismatch`
|
|
308
|
-
* if the data stream resulted in a data CID that mismatches with `dataCid` in the given message
|
|
309
|
-
* @throws {DwnError} with `DwnErrorCode.RecordsWriteDataSizeMismatch`
|
|
310
|
-
* if `dataSize` in `descriptor` given mismatches the actual data size
|
|
311
|
-
*/
|
|
312
|
-
static validateDataIntegrity(expectedDataCid, expectedDataSize, actualDataCid, actualDataSize) {
|
|
313
|
-
if (expectedDataCid !== actualDataCid) {
|
|
314
|
-
throw new DwnError(DwnErrorCode.RecordsWriteDataCidMismatch, `actual data CID ${actualDataCid} does not match dataCid in descriptor: ${expectedDataCid}`);
|
|
315
|
-
}
|
|
316
|
-
if (expectedDataSize !== actualDataSize) {
|
|
317
|
-
throw new DwnError(DwnErrorCode.RecordsWriteDataSizeMismatch, `actual data size ${actualDataSize} bytes does not match dataSize in descriptor: ${expectedDataSize}`);
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
275
|
/**
|
|
321
276
|
* Enforces the squash backstop: if the incoming message is at a protocol path with `$squash: true`,
|
|
322
277
|
* and there exists a squash record at the same protocol path and parent context whose
|
|
@@ -329,11 +284,11 @@ export class RecordsWriteHandler {
|
|
|
329
284
|
if (message.descriptor.protocol === undefined || message.descriptor.protocolPath === undefined) {
|
|
330
285
|
return;
|
|
331
286
|
}
|
|
332
|
-
// Fetch the protocol definition to check if $squash is enabled at this path.
|
|
333
|
-
//
|
|
287
|
+
// Fetch the protocol definition active at the incoming message timestamp to check if $squash is enabled at this path.
|
|
288
|
+
// The reader resolves core protocols (e.g. permissions) from the registry.
|
|
334
289
|
let protocolDefinition;
|
|
335
290
|
try {
|
|
336
|
-
protocolDefinition = await
|
|
291
|
+
protocolDefinition = await this.deps.validationStateReader.fetchProtocolDefinition(tenant, message.descriptor.protocol, message.descriptor.messageTimestamp);
|
|
337
292
|
}
|
|
338
293
|
catch (error) {
|
|
339
294
|
// If the protocol definition can't be found, skip the backstop check.
|
|
@@ -350,26 +305,17 @@ export class RecordsWriteHandler {
|
|
|
350
305
|
if (ruleSet?.$squash !== true) {
|
|
351
306
|
return;
|
|
352
307
|
}
|
|
353
|
-
|
|
354
|
-
const
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
isLatestBaseState: true,
|
|
308
|
+
const parentContextId = Records.getParentContextFromOfContextId(message.contextId);
|
|
309
|
+
const contextIdPrefix = parentContextId !== undefined && parentContextId !== '' ? parentContextId : undefined;
|
|
310
|
+
const newestSquash = await this.deps.validationStateReader.fetchLatestSquashRecordAtScope({
|
|
311
|
+
tenant,
|
|
358
312
|
protocol: message.descriptor.protocol,
|
|
359
313
|
protocolPath: message.descriptor.protocolPath,
|
|
360
|
-
|
|
361
|
-
};
|
|
362
|
-
|
|
363
|
-
const parentContextId = Records.getParentContextFromOfContextId(message.contextId);
|
|
364
|
-
if (parentContextId !== undefined && parentContextId !== '') {
|
|
365
|
-
const prefixFilter = FilterUtility.constructPrefixFilterAsRangeFilter(parentContextId);
|
|
366
|
-
filter.contextId = prefixFilter;
|
|
367
|
-
}
|
|
368
|
-
const { messages: squashMessages } = await this.deps.messageStore.query(tenant, [filter], { messageTimestamp: SortDirection.Descending }, { limit: 1 });
|
|
369
|
-
if (squashMessages.length === 0) {
|
|
314
|
+
contextIdPrefix,
|
|
315
|
+
});
|
|
316
|
+
if (newestSquash === undefined) {
|
|
370
317
|
return;
|
|
371
318
|
}
|
|
372
|
-
const newestSquash = squashMessages[0];
|
|
373
319
|
// Reject if the incoming message's timestamp is <= the squash record's timestamp
|
|
374
320
|
if (message.descriptor.messageTimestamp <= newestSquash.descriptor.messageTimestamp) {
|
|
375
321
|
throw new DwnError(DwnErrorCode.ProtocolAuthorizationSquashBackstop, `incoming message timestamp '${message.descriptor.messageTimestamp}' is not newer than ` +
|
|
@@ -377,16 +323,16 @@ export class RecordsWriteHandler {
|
|
|
377
323
|
`at protocol path '${message.descriptor.protocolPath}'.`);
|
|
378
324
|
}
|
|
379
325
|
}
|
|
380
|
-
async authorizeRecordsWrite(tenant, recordsWrite
|
|
326
|
+
async authorizeRecordsWrite(tenant, recordsWrite) {
|
|
381
327
|
// if owner signature is given (`owner` is not `undefined`), it must be the same as the tenant DID
|
|
382
328
|
if (recordsWrite.owner !== undefined && recordsWrite.owner !== tenant) {
|
|
383
329
|
throw new DwnError(DwnErrorCode.RecordsWriteOwnerAndTenantMismatch, `Owner ${recordsWrite.owner} must be the same as tenant ${tenant} when specified.`);
|
|
384
330
|
}
|
|
385
331
|
if (recordsWrite.isSignedByAuthorDelegate) {
|
|
386
|
-
await recordsWrite.authorizeAuthorDelegate(
|
|
332
|
+
await recordsWrite.authorizeAuthorDelegate(this.deps.validationStateReader);
|
|
387
333
|
}
|
|
388
334
|
if (recordsWrite.isSignedByOwnerDelegate) {
|
|
389
|
-
await recordsWrite.authorizeOwnerDelegate(
|
|
335
|
+
await recordsWrite.authorizeOwnerDelegate(this.deps.validationStateReader);
|
|
390
336
|
}
|
|
391
337
|
if (recordsWrite.owner !== undefined) {
|
|
392
338
|
// if incoming message is a write retained by this tenant, we by-design always allow
|
|
@@ -399,17 +345,17 @@ export class RecordsWriteHandler {
|
|
|
399
345
|
}
|
|
400
346
|
else if (recordsWrite.author !== undefined && Message.getPermissionGrantId(recordsWrite.signaturePayload) !== undefined) {
|
|
401
347
|
const permissionGrantId = Message.getPermissionGrantId(recordsWrite.signaturePayload);
|
|
402
|
-
const permissionGrant = await
|
|
348
|
+
const permissionGrant = await this.deps.validationStateReader.fetchGrant(tenant, permissionGrantId);
|
|
403
349
|
await RecordsGrantAuthorization.authorizeWrite({
|
|
404
350
|
recordsWriteMessage: recordsWrite.message,
|
|
405
351
|
expectedGrantor: tenant,
|
|
406
352
|
expectedGrantee: recordsWrite.author,
|
|
407
353
|
permissionGrant,
|
|
408
|
-
|
|
354
|
+
validationStateReader: this.deps.validationStateReader
|
|
409
355
|
});
|
|
410
356
|
}
|
|
411
357
|
else {
|
|
412
|
-
await ProtocolAuthorization.authorizeWrite(tenant, recordsWrite,
|
|
358
|
+
await ProtocolAuthorization.authorizeWrite(tenant, recordsWrite, this.deps.validationStateReader);
|
|
413
359
|
}
|
|
414
360
|
}
|
|
415
361
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records-write.js","sourceRoot":"","sources":["../../../../src/handlers/records-write.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"records-write.js","sourceRoot":"","sources":["../../../../src/handlers/records-write.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/src/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { replicationApplyResultFromReply } from './core/replication-apply.js';
|
|
2
|
+
export { StoreValidationStateReader } from './core/validation-state-reader.js';
|
|
3
|
+
export { RecordingValidationStateReader } from './core/recording-validation-state-reader.js';
|
|
2
4
|
export { ProtocolRecordLimitStrategy } from './types/protocols-types.js';
|
|
3
5
|
export { authenticate } from './core/auth.js';
|
|
4
6
|
export { CoreProtocolRegistry } from './core/core-protocol.js';
|
|
@@ -21,7 +23,8 @@ export { executeUnlessAborted } from './utils/abort.js';
|
|
|
21
23
|
export { Jws } from './utils/jws.js';
|
|
22
24
|
export { Message } from './core/message.js';
|
|
23
25
|
export { MessagesRead } from './interfaces/messages-read.js';
|
|
24
|
-
export {
|
|
26
|
+
export { MessagesQuery } from './interfaces/messages-query.js';
|
|
27
|
+
export { Replication } from './utils/replication.js';
|
|
25
28
|
export { PermissionGrant } from './protocols/permission-grant.js';
|
|
26
29
|
export { PermissionRequest } from './protocols/permission-request.js';
|
|
27
30
|
export { PermissionsProtocol } from './protocols/permissions.js';
|
|
@@ -47,12 +50,8 @@ export { IndexLevel } from './store/index-level.js';
|
|
|
47
50
|
export { createLevelDatabase, LevelWrapper } from './store/level-wrapper.js';
|
|
48
51
|
export { MessageStoreLevel } from './store/message-store-level.js';
|
|
49
52
|
export { ResumableTaskStoreLevel } from './store/resumable-task-store-level.js';
|
|
50
|
-
export {
|
|
51
|
-
export {
|
|
52
|
-
export { SparseMerkleTree } from './smt/sparse-merkle-tree.js';
|
|
53
|
-
export { SMTStoreLevel } from './smt/smt-store-level.js';
|
|
54
|
-
export { SMTStoreMemory } from './smt/smt-store-memory.js';
|
|
55
|
-
export { hashChildren, hashEquals, hashKey, hashLeaf, hashToHex, hexToHash, getBit, initDefaultHashes, getDefaultHashes, SMT_DEPTH, ZERO_HASH } from './smt/smt-utils.js';
|
|
53
|
+
export { EventEmitterWakePublisher } from './event-stream/event-emitter-wake-publisher.js';
|
|
54
|
+
export { DurableEventLog } from './event-stream/durable-event-log.js';
|
|
56
55
|
export { TestDataGenerator } from '../tests/utils/test-data-generator.js';
|
|
57
56
|
export { Poller } from '../tests/utils/poller.js';
|
|
58
57
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,40 +4,46 @@ import { removeUndefinedProperties } from '@enbox/common';
|
|
|
4
4
|
import { Time } from '../utils/time.js';
|
|
5
5
|
import { validateProtocolUrlNormalized } from '../utils/url.js';
|
|
6
6
|
import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
|
|
7
|
-
export class
|
|
7
|
+
export class MessagesQuery extends AbstractMessage {
|
|
8
8
|
static async parse(message) {
|
|
9
9
|
Message.validateJsonSchema(message);
|
|
10
10
|
await Message.validateSignatureStructure(message.authorization.signature, message.descriptor);
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
for (const filter of message.descriptor.filters) {
|
|
12
|
+
if ('protocol' in filter && filter.protocol !== undefined) {
|
|
13
|
+
validateProtocolUrlNormalized(filter.protocol);
|
|
14
|
+
}
|
|
13
15
|
}
|
|
14
|
-
|
|
16
|
+
Time.validateTimestamp(message.descriptor.messageTimestamp);
|
|
17
|
+
return new MessagesQuery(message);
|
|
15
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Creates a MessagesQuery message.
|
|
21
|
+
*
|
|
22
|
+
* @throws {DwnError} if json schema validation fails.
|
|
23
|
+
*/
|
|
16
24
|
static async create(options) {
|
|
17
25
|
const permissionGrantInvocation = Message.normalizePermissionGrantInvocation({
|
|
18
26
|
permissionGrantIds: options.permissionGrantIds
|
|
19
27
|
});
|
|
20
28
|
const descriptor = {
|
|
21
29
|
interface: DwnInterfaceName.Messages,
|
|
22
|
-
method: DwnMethodName.
|
|
30
|
+
method: DwnMethodName.Query,
|
|
31
|
+
filters: options.filters ?? [],
|
|
23
32
|
messageTimestamp: options.messageTimestamp ?? Time.getCurrentTimestamp(),
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
hashes: options.hashes,
|
|
28
|
-
depth: options.depth,
|
|
33
|
+
cursor: options.cursor,
|
|
34
|
+
limit: options.limit,
|
|
35
|
+
cidsOnly: options.cidsOnly,
|
|
29
36
|
...permissionGrantInvocation,
|
|
30
37
|
};
|
|
31
38
|
removeUndefinedProperties(descriptor);
|
|
32
|
-
const { signer } = options;
|
|
33
39
|
const authorization = await Message.createAuthorization({
|
|
34
40
|
descriptor,
|
|
35
|
-
signer,
|
|
36
|
-
...permissionGrantInvocation
|
|
41
|
+
signer: options.signer,
|
|
42
|
+
...permissionGrantInvocation,
|
|
37
43
|
});
|
|
38
44
|
const message = { descriptor, authorization };
|
|
39
45
|
Message.validateJsonSchema(message);
|
|
40
|
-
return new
|
|
46
|
+
return new MessagesQuery(message);
|
|
41
47
|
}
|
|
42
48
|
}
|
|
43
|
-
//# sourceMappingURL=messages-
|
|
49
|
+
//# sourceMappingURL=messages-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages-query.js","sourceRoot":"","sources":["../../../../src/interfaces/messages-query.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAYnF,MAAM,OAAO,aAAc,SAAQ,eAAqC;IAC/D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAA6B;QACrD,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,OAAO,CAAC,0BAA0B,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAE9F,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAChD,IAAI,UAAU,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC1D,6BAA6B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAC5D,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAA6B;QACtD,MAAM,yBAAyB,GAAG,OAAO,CAAC,kCAAkC,CAAC;YAC3E,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;SAC/C,CAAC,CAAC;QAEH,MAAM,UAAU,GAA4B;YAC1C,SAAS,EAAU,gBAAgB,CAAC,QAAQ;YAC5C,MAAM,EAAa,aAAa,CAAC,KAAK;YACtC,OAAO,EAAY,OAAO,CAAC,OAAO,IAAI,EAAE;YACxC,gBAAgB,EAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,mBAAmB,EAAE;YACzE,MAAM,EAAa,OAAO,CAAC,MAAM;YACjC,KAAK,EAAc,OAAO,CAAC,KAAK;YAChC,QAAQ,EAAW,OAAO,CAAC,QAAQ;YACnC,GAAG,yBAAyB;SAC7B,CAAC;QAEF,yBAAyB,CAAC,UAAU,CAAC,CAAC;QAEtC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC;YACtD,UAAU;YACV,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,yBAAyB;SAC7B,CAAC,CAAC;QAEH,MAAM,OAAO,GAAyB,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;QACpE,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { AbstractMessage } from '../core/abstract-message.js';
|
|
2
|
-
import
|
|
2
|
+
import { DwnConstant } from '../core/dwn-constant.js';
|
|
3
3
|
import { Message } from '../core/message.js';
|
|
4
4
|
import { PermissionGrant } from '../protocols/permission-grant.js';
|
|
5
5
|
import { ProtocolsGrantAuthorization } from '../core/protocols-grant-authorization.js';
|
|
6
6
|
import { Time } from '../utils/time.js';
|
|
7
|
+
import { validateProtocolTagSchemaDefinition } from '../utils/protocol-tags.js';
|
|
7
8
|
import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
|
|
8
9
|
import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
|
|
9
10
|
import { isCrossProtocolRef, parseCrossProtocolRef } from '../utils/protocols.js';
|
|
@@ -42,16 +43,16 @@ export class ProtocolsConfigure extends AbstractMessage {
|
|
|
42
43
|
}
|
|
43
44
|
/**
|
|
44
45
|
* Authorizes the author-delegate who signed this message.
|
|
45
|
-
* @param
|
|
46
|
+
* @param validationStateReader Used to check if the grant has been revoked.
|
|
46
47
|
*/
|
|
47
|
-
async authorizeAuthorDelegate(
|
|
48
|
+
async authorizeAuthorDelegate(validationStateReader) {
|
|
48
49
|
const delegatedGrant = PermissionGrant.parse(this.message.authorization.authorDelegatedGrant);
|
|
49
50
|
await ProtocolsGrantAuthorization.authorizeConfigure({
|
|
50
51
|
protocolsConfigureMessage: this.message,
|
|
51
52
|
expectedGrantor: this.author,
|
|
52
53
|
expectedGrantee: this.signer,
|
|
53
54
|
permissionGrant: delegatedGrant,
|
|
54
|
-
|
|
55
|
+
validationStateReader
|
|
55
56
|
});
|
|
56
57
|
}
|
|
57
58
|
/**
|
|
@@ -173,20 +174,22 @@ export class ProtocolsConfigure extends AbstractMessage {
|
|
|
173
174
|
if (!Number.isInteger(max) || max < 1) {
|
|
174
175
|
throw new DwnError(DwnErrorCode.ProtocolsConfigureInvalidRecordLimit, `Invalid $recordLimit.max value ${max} at protocol path '${ruleSetProtocolPath}': must be an integer >= 1.`);
|
|
175
176
|
}
|
|
177
|
+
if (max > DwnConstant.maxRecordLimit) {
|
|
178
|
+
throw new DwnError(DwnErrorCode.ProtocolsConfigureInvalidRecordLimit, `Invalid $recordLimit.max value ${max} at protocol path '${ruleSetProtocolPath}': must be <= ${DwnConstant.maxRecordLimit}.`);
|
|
179
|
+
}
|
|
176
180
|
const validStrategies = Object.values(ProtocolRecordLimitStrategy);
|
|
177
181
|
if (!validStrategies.includes(strategy)) {
|
|
178
182
|
throw new DwnError(DwnErrorCode.ProtocolsConfigureInvalidRecordLimit, `Invalid $recordLimit.strategy '${strategy}' at protocol path '${ruleSetProtocolPath}': ` +
|
|
179
183
|
`must be one of ${validStrategies.join(', ')}.`);
|
|
180
184
|
}
|
|
181
185
|
}
|
|
182
|
-
if (ruleSet.$tags) {
|
|
183
|
-
const ajv = new Ajv.default();
|
|
186
|
+
if (ruleSet.$tags !== undefined) {
|
|
184
187
|
const { $allowUndefinedTags, $requiredTags, ...tagProperties } = ruleSet.$tags;
|
|
185
|
-
//
|
|
188
|
+
// validate each tag's schema against the DWN-supported tag schema subset
|
|
186
189
|
for (const tag in tagProperties) {
|
|
187
190
|
const tagSchemaDefinition = tagProperties[tag];
|
|
188
|
-
|
|
189
|
-
|
|
191
|
+
const schemaError = validateProtocolTagSchemaDefinition(tagSchemaDefinition, `${ruleSetProtocolPath}/$tags/${tag}`);
|
|
192
|
+
if (schemaError !== undefined) {
|
|
190
193
|
throw new DwnError(DwnErrorCode.ProtocolsConfigureInvalidTagSchema, `tags schema validation error: ${schemaError}`);
|
|
191
194
|
}
|
|
192
195
|
}
|