@enbox/dwn-sdk-js 0.4.0 → 0.4.1
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 +8 -8
- 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 +30 -68
- 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 +7 -3
- 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/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/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 +13 -16
- 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/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/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 +39 -96
- 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 +12 -4
- 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/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
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A `ValidationStateReader` decorator that records every read before delegating to the wrapped
|
|
3
|
+
* reader. Used by the replay-basis closure tests (and harnesses) to assert that admission
|
|
4
|
+
* performs no validation read outside the reader surface, and to keep recorded read-traces as a
|
|
5
|
+
* regression artifact when validation reads change.
|
|
6
|
+
*
|
|
7
|
+
* Inject via `DwnConfig.instrumentValidationStateReader`.
|
|
8
|
+
*/
|
|
9
|
+
export class RecordingValidationStateReader {
|
|
10
|
+
inner;
|
|
11
|
+
recordedReads = [];
|
|
12
|
+
constructor(inner) {
|
|
13
|
+
this.inner = inner;
|
|
14
|
+
}
|
|
15
|
+
/** All reads recorded since construction or the last `clearRecordedReads()`. */
|
|
16
|
+
get reads() {
|
|
17
|
+
return [...this.recordedReads];
|
|
18
|
+
}
|
|
19
|
+
/** Clears the recorded reads, e.g. between closure-test scenarios. */
|
|
20
|
+
clearRecordedReads() {
|
|
21
|
+
this.recordedReads.length = 0;
|
|
22
|
+
}
|
|
23
|
+
/** @inheritdoc */
|
|
24
|
+
async fetchInitialRecordsWrite(tenant, recordId) {
|
|
25
|
+
this.recordedReads.push({ method: 'fetchInitialRecordsWrite' });
|
|
26
|
+
return this.inner.fetchInitialRecordsWrite(tenant, recordId);
|
|
27
|
+
}
|
|
28
|
+
/** @inheritdoc */
|
|
29
|
+
async fetchInitialWrite(tenant, recordId) {
|
|
30
|
+
this.recordedReads.push({ method: 'fetchInitialWrite' });
|
|
31
|
+
return this.inner.fetchInitialWrite(tenant, recordId);
|
|
32
|
+
}
|
|
33
|
+
/** @inheritdoc */
|
|
34
|
+
async constructRecordChain(tenant, descendantRecordId) {
|
|
35
|
+
this.recordedReads.push({ method: 'constructRecordChain' });
|
|
36
|
+
return this.inner.constructRecordChain(tenant, descendantRecordId);
|
|
37
|
+
}
|
|
38
|
+
/** @inheritdoc */
|
|
39
|
+
async fetchParentRecord(input) {
|
|
40
|
+
this.recordedReads.push({ method: 'fetchParentRecord' });
|
|
41
|
+
return this.inner.fetchParentRecord(input);
|
|
42
|
+
}
|
|
43
|
+
/** @inheritdoc */
|
|
44
|
+
async hasMatchingRoleRecord(input) {
|
|
45
|
+
this.recordedReads.push({ method: 'hasMatchingRoleRecord' });
|
|
46
|
+
return this.inner.hasMatchingRoleRecord(input);
|
|
47
|
+
}
|
|
48
|
+
/** @inheritdoc */
|
|
49
|
+
async queryLatestRoleRecords(input) {
|
|
50
|
+
this.recordedReads.push({ method: 'queryLatestRoleRecords' });
|
|
51
|
+
return this.inner.queryLatestRoleRecords(input);
|
|
52
|
+
}
|
|
53
|
+
/** @inheritdoc */
|
|
54
|
+
async fetchGrant(tenant, permissionGrantId) {
|
|
55
|
+
this.recordedReads.push({ method: 'fetchGrant' });
|
|
56
|
+
return this.inner.fetchGrant(tenant, permissionGrantId);
|
|
57
|
+
}
|
|
58
|
+
/** @inheritdoc */
|
|
59
|
+
async fetchOldestGrantRevocation(tenant, permissionGrantId) {
|
|
60
|
+
this.recordedReads.push({ method: 'fetchOldestGrantRevocation' });
|
|
61
|
+
return this.inner.fetchOldestGrantRevocation(tenant, permissionGrantId);
|
|
62
|
+
}
|
|
63
|
+
/** @inheritdoc */
|
|
64
|
+
async fetchNewestRecordsWrite(tenant, recordId) {
|
|
65
|
+
this.recordedReads.push({ method: 'fetchNewestRecordsWrite' });
|
|
66
|
+
return this.inner.fetchNewestRecordsWrite(tenant, recordId);
|
|
67
|
+
}
|
|
68
|
+
/** @inheritdoc */
|
|
69
|
+
async fetchProtocolDefinition(tenant, protocolUri, messageTimestamp) {
|
|
70
|
+
this.recordedReads.push({ method: 'fetchProtocolDefinition' });
|
|
71
|
+
return this.inner.fetchProtocolDefinition(tenant, protocolUri, messageTimestamp);
|
|
72
|
+
}
|
|
73
|
+
/** @inheritdoc */
|
|
74
|
+
async fetchLatestSquashRecordAtScope(input) {
|
|
75
|
+
this.recordedReads.push({ method: 'fetchLatestSquashRecordAtScope' });
|
|
76
|
+
return this.inner.fetchLatestSquashRecordAtScope(input);
|
|
77
|
+
}
|
|
78
|
+
/** @inheritdoc */
|
|
79
|
+
async hasStoredData(tenant, recordId, dataCid) {
|
|
80
|
+
this.recordedReads.push({ method: 'hasStoredData' });
|
|
81
|
+
return this.inner.hasStoredData(tenant, recordId, dataCid);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=recording-validation-state-reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recording-validation-state-reader.js","sourceRoot":"","sources":["../../../../src/core/recording-validation-state-reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,13 +7,13 @@ export class RecordsGrantAuthorization {
|
|
|
7
7
|
* Authorizes the given RecordsWrite in the scope of the DID given.
|
|
8
8
|
*/
|
|
9
9
|
static async authorizeWrite(input) {
|
|
10
|
-
const { recordsWriteMessage, expectedGrantor, expectedGrantee, permissionGrant,
|
|
10
|
+
const { recordsWriteMessage, expectedGrantor, expectedGrantee, permissionGrant, validationStateReader } = input;
|
|
11
11
|
await GrantAuthorization.performBaseValidation({
|
|
12
12
|
incomingMessage: recordsWriteMessage,
|
|
13
13
|
expectedGrantor,
|
|
14
14
|
expectedGrantee,
|
|
15
15
|
permissionGrant,
|
|
16
|
-
|
|
16
|
+
validationStateReader
|
|
17
17
|
});
|
|
18
18
|
// NOTE: validated the invoked permission is for Records in GrantAuthorization.performBaseValidation()
|
|
19
19
|
RecordsGrantAuthorization.verifyScope(recordsWriteMessage, permissionGrant.scope);
|
|
@@ -21,32 +21,32 @@ export class RecordsGrantAuthorization {
|
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
* Authorizes a RecordsReadMessage using the given permission grant.
|
|
24
|
-
* @param
|
|
24
|
+
* @param validationStateReader Used to check if the given grant has been revoked.
|
|
25
25
|
*/
|
|
26
26
|
static async authorizeRead(input) {
|
|
27
|
-
const { recordsReadMessage, recordsWriteMessageToBeRead, expectedGrantor, expectedGrantee, permissionGrant,
|
|
27
|
+
const { recordsReadMessage, recordsWriteMessageToBeRead, expectedGrantor, expectedGrantee, permissionGrant, validationStateReader } = input;
|
|
28
28
|
await GrantAuthorization.performBaseValidation({
|
|
29
29
|
incomingMessage: recordsReadMessage,
|
|
30
30
|
expectedGrantor,
|
|
31
31
|
expectedGrantee,
|
|
32
32
|
permissionGrant,
|
|
33
|
-
|
|
33
|
+
validationStateReader
|
|
34
34
|
});
|
|
35
35
|
// NOTE: validated the invoked permission is for Records in GrantAuthorization.performBaseValidation()
|
|
36
36
|
RecordsGrantAuthorization.verifyScope(recordsWriteMessageToBeRead, permissionGrant.scope);
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
* Authorizes the scope of a permission grant for RecordsQuery or RecordsSubscribe.
|
|
40
|
-
* @param
|
|
40
|
+
* @param validationStateReader Used to check if the grant has been revoked.
|
|
41
41
|
*/
|
|
42
42
|
static async authorizeQueryOrSubscribe(input) {
|
|
43
|
-
const { incomingMessage, expectedGrantor, expectedGrantee, permissionGrant,
|
|
43
|
+
const { incomingMessage, expectedGrantor, expectedGrantee, permissionGrant, validationStateReader } = input;
|
|
44
44
|
await GrantAuthorization.performBaseValidation({
|
|
45
45
|
incomingMessage,
|
|
46
46
|
expectedGrantor,
|
|
47
47
|
expectedGrantee,
|
|
48
48
|
permissionGrant,
|
|
49
|
-
|
|
49
|
+
validationStateReader
|
|
50
50
|
});
|
|
51
51
|
// The grant's protocol must match the query/subscribe filter's protocol.
|
|
52
52
|
// NOTE: validated the invoked permission is for Records in GrantAuthorization.performBaseValidation()
|
|
@@ -62,16 +62,16 @@ export class RecordsGrantAuthorization {
|
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
64
|
* Authorizes the scope of a permission grant for RecordsDelete.
|
|
65
|
-
* @param
|
|
65
|
+
* @param validationStateReader Used to check if the grant has been revoked.
|
|
66
66
|
*/
|
|
67
67
|
static async authorizeDelete(input) {
|
|
68
|
-
const { recordsDeleteMessage, recordsWriteToDelete, expectedGrantor, expectedGrantee, permissionGrant,
|
|
68
|
+
const { recordsDeleteMessage, recordsWriteToDelete, expectedGrantor, expectedGrantee, permissionGrant, validationStateReader } = input;
|
|
69
69
|
await GrantAuthorization.performBaseValidation({
|
|
70
70
|
incomingMessage: recordsDeleteMessage,
|
|
71
71
|
expectedGrantor,
|
|
72
72
|
expectedGrantee,
|
|
73
73
|
permissionGrant,
|
|
74
|
-
|
|
74
|
+
validationStateReader
|
|
75
75
|
});
|
|
76
76
|
// NOTE: validated the invoked permission is for Records in GrantAuthorization.performBaseValidation()
|
|
77
77
|
RecordsGrantAuthorization.verifyDeleteScope(recordsWriteToDelete, permissionGrant.scope);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records-grant-authorization.js","sourceRoot":"","sources":["../../../../src/core/records-grant-authorization.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,OAAO,yBAAyB;IACpC;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAMlC;QACC,MAAM,EACJ,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"records-grant-authorization.js","sourceRoot":"","sources":["../../../../src/core/records-grant-authorization.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,OAAO,yBAAyB;IACpC;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAMlC;QACC,MAAM,EACJ,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAC9F,GAAG,KAAK,CAAC;QAEV,MAAM,kBAAkB,CAAC,qBAAqB,CAAC;YAC7C,eAAe,EAAE,mBAAmB;YACpC,eAAe;YACf,eAAe;YACf,eAAe;YACf,qBAAqB;SACtB,CAAC,CAAC;QAEH,sGAAsG;QACtG,yBAAyB,CAAC,WAAW,CAAC,mBAAmB,EAAE,eAAe,CAAC,KAA+B,CAAC,CAAC;QAE5G,yBAAyB,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IAC9F,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAOjC;QACC,MAAM,EACJ,kBAAkB,EAAE,2BAA2B,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAC1H,GAAG,KAAK,CAAC;QAEV,MAAM,kBAAkB,CAAC,qBAAqB,CAAC;YAC7C,eAAe,EAAE,kBAAkB;YACnC,eAAe;YACf,eAAe;YACf,eAAe;YACf,qBAAqB;SACtB,CAAC,CAAC;QAEH,sGAAsG;QACtG,yBAAyB,CAAC,WAAW,CAAC,2BAA2B,EAAE,eAAe,CAAC,KAA+B,CAAC,CAAC;IACtH,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,KAM7C;QACC,MAAM,EACJ,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAC1F,GAAG,KAAK,CAAC;QAEV,MAAM,kBAAkB,CAAC,qBAAqB,CAAC;YAC7C,eAAe;YACf,eAAe;YACf,eAAe;YACf,eAAe;YACf,qBAAqB;SACtB,CAAC,CAAC;QAEH,yEAAyE;QACzE,sGAAsG;QACtG,MAAM,eAAe,GAAG,eAAe,CAAC,KAA+B,CAAC;QACxE,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC;QACxD,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,eAAe,EAAE;YACnD,QAAQ,EAAO,aAAa,CAAC,QAAQ;YACrC,YAAY,EAAG,aAAa,CAAC,YAAY;YACzC,SAAS,EAAM,aAAa,CAAC,SAAS;SACvC,CAAC,EAAE,CAAC;YACH,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,8DAA8D,EAC3E,sCAAsC,eAAe,CAAC,UAAU,CAAC,MAAM,SAAS,CACjF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,KAOnC;QACC,MAAM,EACJ,oBAAoB,EAAE,oBAAoB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EACrH,GAAG,KAAK,CAAC;QAEV,MAAM,kBAAkB,CAAC,qBAAqB,CAAC;YAC7C,eAAe,EAAE,oBAAoB;YACrC,eAAe;YACf,eAAe;YACf,eAAe;YACf,qBAAqB;SACtB,CAAC,CAAC;QAEH,sGAAsG;QACtG,yBAAyB,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,eAAe,CAAC,KAA+B,CAAC,CAAC;IACrH,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,WAAW,CACxB,mBAAwC,EACxC,UAAkC;QAElC,MAAM,MAAM,GAAG,yBAAyB,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;QAErF,IAAI,sBAAsB,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC;YACvD,OAAO;QACT,CAAC;QAED,IAAI,UAAU,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,8CAA8C,EAC3D,0EAA0E,CAC3E,CAAC;QACJ,CAAC;QAED,yBAAyB,CAAC,oCAAoC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,iBAAiB,CAC9B,mBAAwC,EACxC,UAAkC;QAElC,MAAM,MAAM,GAAG,yBAAyB,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;QAErF,IAAI,sBAAsB,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC;YACvD,OAAO;QACT,CAAC;QAED,IAAI,UAAU,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,oDAAoD,EACjE,wBAAwB,UAAU,CAAC,QAAQ,gDAAgD,MAAM,CAAC,QAAQ,EAAE,CAC7G,CAAC;QACJ,CAAC;QAED,yBAAyB,CAAC,oCAAoC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC;IAEO,MAAM,CAAC,sBAAsB,CAAC,mBAAwC;QAC5E,OAAO;YACL,QAAQ,EAAO,mBAAmB,CAAC,UAAU,CAAC,QAAQ;YACtD,YAAY,EAAG,mBAAmB,CAAC,UAAU,CAAC,YAAY;YAC1D,SAAS,EAAM,mBAAmB,CAAC,SAAS;SAC7C,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,oCAAoC,CACjD,UAAkC,EAClC,MAAqB;QAErB,+EAA+E;QAC/E,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,+CAA+C,EAC5D,2EAA2E,CAC5E,CAAC;QACJ,CAAC;QAED,6EAA6E;QAC7E,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,IAAI,UAAU,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7F,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,kDAAkD,EAC/D,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,sCAAsC,EACnD,uCAAuC,CACxC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,gBAAgB,CAAC,mBAAwC,EAAE,UAA4C;QAEpH,iFAAiF;QACjF,IAAI,UAAU,EAAE,WAAW,KAAK,8BAA8B,CAAC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YACrH,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,qDAAqD,EAClE,mDAAmD,CACpD,CAAC;QACJ,CAAC;QAED,8FAA8F;QAC9F,IAAI,UAAU,EAAE,WAAW,KAAK,8BAA8B,CAAC,UAAU,IAAI,mBAAmB,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YACtH,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,uDAAuD,EACpE,yDAAyD,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -12,7 +12,11 @@ import { isCrossProtocolRef, parseCrossProtocolRef } from '../utils/protocols.js
|
|
|
12
12
|
export function replicationApplyResultFromReply(message, reply, context = {}) {
|
|
13
13
|
const { code, detail = '' } = reply.status;
|
|
14
14
|
if (code === 202 || code === 204) {
|
|
15
|
-
return {
|
|
15
|
+
return {
|
|
16
|
+
kind: 'Applied',
|
|
17
|
+
...(code === 204 ? { ancestryOnly: true } : {}),
|
|
18
|
+
...(reply.position === undefined ? {} : { position: reply.position }),
|
|
19
|
+
};
|
|
16
20
|
}
|
|
17
21
|
if (code === 409) {
|
|
18
22
|
return { kind: 'Superseded' };
|
|
@@ -23,42 +27,99 @@ export function replicationApplyResultFromReply(message, reply, context = {}) {
|
|
|
23
27
|
if (isResolverFailure(detail)) {
|
|
24
28
|
return { kind: 'Deferred', reason: 'resolver-unavailable' };
|
|
25
29
|
}
|
|
26
|
-
const missing =
|
|
27
|
-
if (missing
|
|
28
|
-
return { kind: 'Incomplete', missing
|
|
30
|
+
const missing = dependencyRefsFromStatus(message, code, detail, context);
|
|
31
|
+
if (missing.length > 0) {
|
|
32
|
+
return { kind: 'Incomplete', missing };
|
|
29
33
|
}
|
|
30
34
|
if (code >= 500) {
|
|
31
35
|
return { kind: 'Deferred', reason: 'storage' };
|
|
32
36
|
}
|
|
33
37
|
return { kind: 'Invalid', reason: detail || `replicated message rejected with status ${code}` };
|
|
34
38
|
}
|
|
35
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Computes the complete set of locally-missing ancestor recordIds for a replicated message that
|
|
41
|
+
* failed on a missing ancestor — either the immediate parent referential check
|
|
42
|
+
* (`ProtocolAuthorizationParentRecordNotFound`) or record-chain construction
|
|
43
|
+
* (`ProtocolAuthorizationParentNotFoundConstructingRecordChain`).
|
|
44
|
+
*
|
|
45
|
+
* Both failures name a single ancestor, but the message's `contextId` names the full ancestor
|
|
46
|
+
* recordId chain, so every segment the failed check could not reach is presence-checked here and
|
|
47
|
+
* all absent segments are returned in one batch (ordered root-first, named ancestor last).
|
|
48
|
+
* Feeding the result to `replicationApplyResultFromReply()` via `ReplicationApplyResultContext`
|
|
49
|
+
* lets sync fetch the entire ancestry in a single pass instead of one level per retry.
|
|
50
|
+
*
|
|
51
|
+
* @returns the missing ancestor recordIds, or `undefined` when the reply is not a
|
|
52
|
+
* missing-ancestor failure or the chain cannot be determined from the message (callers
|
|
53
|
+
* then fall back to emitting the single ancestor named by the failure).
|
|
54
|
+
*/
|
|
55
|
+
export async function missingAncestorRecordIdsFromReply(tenant, message, reply, validationStateReader) {
|
|
56
|
+
const detail = reply.status.detail ?? '';
|
|
57
|
+
const errorCode = getDwnErrorCode(detail);
|
|
58
|
+
let namedRecordId;
|
|
59
|
+
if (errorCode === DwnErrorCode.ProtocolAuthorizationParentRecordNotFound) {
|
|
60
|
+
namedRecordId = parentRecordIdFromMessage(message, detail);
|
|
61
|
+
}
|
|
62
|
+
else if (errorCode === DwnErrorCode.ProtocolAuthorizationParentNotFoundConstructingRecordChain) {
|
|
63
|
+
namedRecordId = ancestorRecordIdFromDetail(detail);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
const contextId = message.contextId;
|
|
69
|
+
if (namedRecordId === undefined || typeof contextId !== 'string') {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
// `contextId` is the ancestor recordId chain ending with the record's own recordId. The failed
|
|
73
|
+
// check stopped at `namedRecordId`, so every segment below it is locally present; only the
|
|
74
|
+
// segments above it (closer to the root) still need a presence check. Presence means an initial
|
|
75
|
+
// write exists — exactly what record-chain construction reads for the segments above the
|
|
76
|
+
// immediate parent.
|
|
77
|
+
const ancestorRecordIds = contextId.split('/').slice(0, -1);
|
|
78
|
+
const namedIndex = ancestorRecordIds.indexOf(namedRecordId);
|
|
79
|
+
if (namedIndex === -1) {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
const missingRecordIds = [];
|
|
83
|
+
for (const ancestorRecordId of ancestorRecordIds.slice(0, namedIndex)) {
|
|
84
|
+
const initialWrite = await validationStateReader.fetchInitialWrite(tenant, ancestorRecordId);
|
|
85
|
+
if (initialWrite === undefined) {
|
|
86
|
+
missingRecordIds.push(ancestorRecordId);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
missingRecordIds.push(namedRecordId);
|
|
90
|
+
return missingRecordIds;
|
|
91
|
+
}
|
|
92
|
+
function dependencyRefsFromStatus(message, code, detail, context) {
|
|
36
93
|
const errorCode = getDwnErrorCode(detail);
|
|
37
94
|
switch (errorCode) {
|
|
38
95
|
case DwnErrorCode.ProtocolAuthorizationProtocolNotFound:
|
|
39
96
|
case DwnErrorCode.ProtocolsConfigureComposedProtocolNotInstalled:
|
|
40
|
-
return protocolDependencyFromMessage(message, detail);
|
|
97
|
+
return toRefList(protocolDependencyFromMessage(message, detail));
|
|
41
98
|
case DwnErrorCode.ProtocolAuthorizationParentRecordNotFound:
|
|
99
|
+
return parentDependenciesFromMessage(message, detail, context);
|
|
42
100
|
case DwnErrorCode.ProtocolAuthorizationCrossProtocolParentNotFound:
|
|
43
|
-
return parentDependencyFromMessage(message, detail);
|
|
101
|
+
return toRefList(parentDependencyFromMessage(message, detail));
|
|
44
102
|
case DwnErrorCode.ProtocolAuthorizationParentNotFoundConstructingRecordChain:
|
|
45
|
-
return
|
|
103
|
+
return ancestorDependenciesFromMessage(message, detail, context);
|
|
46
104
|
case DwnErrorCode.RecordsWriteGetInitialWriteNotFound:
|
|
47
|
-
return initialWriteDependencyFromMessage(message);
|
|
105
|
+
return toRefList(initialWriteDependencyFromMessage(message));
|
|
48
106
|
case DwnErrorCode.GrantAuthorizationGrantMissing:
|
|
49
|
-
return grantDependencyFromMessage(message);
|
|
107
|
+
return toRefList(grantDependencyFromMessage(message));
|
|
50
108
|
case DwnErrorCode.ProtocolAuthorizationMatchingRoleRecordNotFound:
|
|
51
|
-
return roleDependencyFromMessage(message, context);
|
|
109
|
+
return toRefList(roleDependencyFromMessage(message, context));
|
|
52
110
|
case DwnErrorCode.RecordsWriteMissingDataInPrevious:
|
|
53
111
|
case DwnErrorCode.RecordsWriteMissingEncodedDataInPrevious:
|
|
54
|
-
return recordDataDependencyFromMessage(message);
|
|
112
|
+
return toRefList(recordDataDependencyFromMessage(message));
|
|
55
113
|
default:
|
|
56
114
|
break;
|
|
57
115
|
}
|
|
58
116
|
if (code === 404 && isRecordsDelete(message)) {
|
|
59
|
-
return { type: 'InitialWrite', recordId: getRecordsDeleteRecordId(message) };
|
|
117
|
+
return [{ type: 'InitialWrite', recordId: getRecordsDeleteRecordId(message) }];
|
|
60
118
|
}
|
|
61
|
-
return
|
|
119
|
+
return [];
|
|
120
|
+
}
|
|
121
|
+
function toRefList(ref) {
|
|
122
|
+
return ref === undefined ? [] : [ref];
|
|
62
123
|
}
|
|
63
124
|
function getDwnErrorCode(detail) {
|
|
64
125
|
const delimiter = detail.indexOf(':');
|
|
@@ -75,28 +136,62 @@ function protocolDependencyFromMessage(message, detail) {
|
|
|
75
136
|
const protocol = message.descriptor.protocol;
|
|
76
137
|
return typeof protocol === 'string' ? { type: 'Protocol', protocol } : undefined;
|
|
77
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Emits the refs for an immediate-parent referential failure. The missing parent keeps its
|
|
141
|
+
* existing `Parent` ref; when the apply context carries the layer-batched missing-ancestor set
|
|
142
|
+
* (see `missingAncestorRecordIdsFromReply()`), an `Ancestor` ref is additionally emitted for
|
|
143
|
+
* every locally-absent segment above the parent, so the entire ancestry resolves in a single
|
|
144
|
+
* fetch pass instead of one level per retry.
|
|
145
|
+
*/
|
|
146
|
+
function parentDependenciesFromMessage(message, detail, context) {
|
|
147
|
+
const parentRef = parentDependencyFromMessage(message, detail);
|
|
148
|
+
if (parentRef === undefined) {
|
|
149
|
+
return [];
|
|
150
|
+
}
|
|
151
|
+
const protocol = message.descriptor.protocol;
|
|
152
|
+
const protocolProperty = typeof protocol === 'string' ? { protocol } : {};
|
|
153
|
+
const ancestorRefs = (context.missingAncestorRecordIds ?? [])
|
|
154
|
+
.filter((recordId) => recordId !== parentRef.recordId)
|
|
155
|
+
.map((recordId) => ({ type: 'Ancestor', recordId, ...protocolProperty }));
|
|
156
|
+
return [...ancestorRefs, parentRef];
|
|
157
|
+
}
|
|
78
158
|
function parentDependencyFromMessage(message, detail) {
|
|
79
159
|
const descriptor = message.descriptor;
|
|
80
|
-
const parentId =
|
|
81
|
-
? descriptor.parentId
|
|
82
|
-
: /parent record '([^']+)'/.exec(detail)?.[1];
|
|
160
|
+
const parentId = parentRecordIdFromMessage(message, detail);
|
|
83
161
|
const protocol = /in protocol '([^']+)'/.exec(detail)?.[1] ?? descriptor.protocol;
|
|
84
|
-
if (
|
|
162
|
+
if (parentId === undefined || typeof protocol !== 'string') {
|
|
85
163
|
return undefined;
|
|
86
164
|
}
|
|
87
165
|
return { type: 'Parent', recordId: parentId, protocol };
|
|
88
166
|
}
|
|
89
|
-
function
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
167
|
+
function parentRecordIdFromMessage(message, detail) {
|
|
168
|
+
const descriptor = message.descriptor;
|
|
169
|
+
return typeof descriptor.parentId === 'string'
|
|
170
|
+
? descriptor.parentId
|
|
171
|
+
: /parent record '([^']+)'/.exec(detail)?.[1];
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Emits `Ancestor` refs for a record-chain construction failure. When the apply context carries
|
|
175
|
+
* the layer-batched missing-ancestor set (see `missingAncestorRecordIdsFromReply()`), one ref is
|
|
176
|
+
* emitted per missing segment so the entire ancestry resolves in a single fetch pass; otherwise
|
|
177
|
+
* falls back to the single ancestor named by the failure detail (e.g. for messages that carry no
|
|
178
|
+
* `contextId` chain).
|
|
179
|
+
*/
|
|
180
|
+
function ancestorDependenciesFromMessage(message, detail, context) {
|
|
94
181
|
const protocol = message.descriptor.protocol;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
182
|
+
const protocolProperty = typeof protocol === 'string' ? { protocol } : {};
|
|
183
|
+
const batchedRecordIds = context.missingAncestorRecordIds;
|
|
184
|
+
if (batchedRecordIds !== undefined && batchedRecordIds.length > 0) {
|
|
185
|
+
return batchedRecordIds.map((recordId) => ({ type: 'Ancestor', recordId, ...protocolProperty }));
|
|
186
|
+
}
|
|
187
|
+
const namedRecordId = ancestorRecordIdFromDetail(detail);
|
|
188
|
+
if (namedRecordId === undefined) {
|
|
189
|
+
return [];
|
|
190
|
+
}
|
|
191
|
+
return [{ type: 'Ancestor', recordId: namedRecordId, ...protocolProperty }];
|
|
192
|
+
}
|
|
193
|
+
function ancestorRecordIdFromDetail(detail) {
|
|
194
|
+
return /ID ([^ ]+)/.exec(detail)?.[1];
|
|
100
195
|
}
|
|
101
196
|
function initialWriteDependencyFromMessage(message) {
|
|
102
197
|
if (!isRecordsWrite(message)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replication-apply.js","sourceRoot":"","sources":["../../../../src/core/replication-apply.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"replication-apply.js","sourceRoot":"","sources":["../../../../src/core/replication-apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,8 +17,8 @@ export class ResumableTaskManager {
|
|
|
17
17
|
this.resumableTaskHandlers = {
|
|
18
18
|
// NOTE: The arrow function is IMPORTANT here, else the `this` context will be lost within the invoked method.
|
|
19
19
|
// e.g. code within performRecordsDelete() won't know `this` refers to the `storageController` instance.
|
|
20
|
-
[ResumableTaskName.RecordsDelete]: async (task) =>
|
|
21
|
-
[ResumableTaskName.RecordsSquash]: async (task) =>
|
|
20
|
+
[ResumableTaskName.RecordsDelete]: async (task) => storageController.performRecordsDelete(task),
|
|
21
|
+
[ResumableTaskName.RecordsSquash]: async (task) => storageController.performRecordsSquash(task),
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
@@ -28,7 +28,7 @@ export class ResumableTaskManager {
|
|
|
28
28
|
const timeoutInSeconds = ResumableTaskManager.timeoutExtensionFrequencyInSeconds * 2; // give ample time for extension to take place
|
|
29
29
|
// register the new resumable task before running it so that it can be resumed if it times out for any reason
|
|
30
30
|
const managedResumableTask = await this.resumableTaskStore.register(task, timeoutInSeconds);
|
|
31
|
-
|
|
31
|
+
return this.runWithAutomaticTimeoutExtension(managedResumableTask);
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* Runs a resumable task with automatic timeout extension.
|
|
@@ -43,8 +43,9 @@ export class ResumableTaskManager {
|
|
|
43
43
|
this.resumableTaskStore.extend(managedTask.id, timeoutInSeconds);
|
|
44
44
|
}, ResumableTaskManager.timeoutExtensionFrequencyInSeconds * 1000);
|
|
45
45
|
const handler = this.resumableTaskHandlers[managedTask.task.name];
|
|
46
|
-
await handler(managedTask.task.data);
|
|
46
|
+
const result = await handler(managedTask.task.data);
|
|
47
47
|
await this.resumableTaskStore.delete(managedTask.id);
|
|
48
|
+
return result;
|
|
48
49
|
}
|
|
49
50
|
finally {
|
|
50
51
|
ResumableTaskManager.clearTimeoutExtensionTimer(timer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resumable-task-manager.js","sourceRoot":"","sources":["../../../../src/core/resumable-task-manager.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,oDAA+B,CAAA;IAC/B,oDAA+B,CAAA;AACjC,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,QAG5B;
|
|
1
|
+
{"version":3,"file":"resumable-task-manager.js","sourceRoot":"","sources":["../../../../src/core/resumable-task-manager.ts"],"names":[],"mappings":"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"}
|