@enbox/dwn-sdk-js 0.4.6 → 0.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/browser.mjs +19 -78
- package/dist/browser.mjs.map +4 -4
- package/dist/esm/generated/precompiled-validators.js +2324 -1525
- package/dist/esm/generated/precompiled-validators.js.map +1 -1
- package/dist/esm/src/core/constants.js +50 -0
- package/dist/esm/src/core/constants.js.map +1 -1
- package/dist/esm/src/core/dwn-error.js +29 -11
- package/dist/esm/src/core/dwn-error.js.map +1 -1
- package/dist/esm/src/core/encryption-control.js +785 -0
- package/dist/esm/src/core/encryption-control.js.map +1 -0
- package/dist/esm/src/core/message.js +6 -0
- package/dist/esm/src/core/message.js.map +1 -1
- package/dist/esm/src/core/messages-grant-authorization.js +36 -5
- package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
- package/dist/esm/src/core/protocol-authorization-action.js +3 -12
- package/dist/esm/src/core/protocol-authorization-action.js.map +1 -1
- package/dist/esm/src/core/protocol-authorization-validation.js +31 -30
- package/dist/esm/src/core/protocol-authorization-validation.js.map +1 -1
- package/dist/esm/src/core/protocol-authorization.js +6 -0
- package/dist/esm/src/core/protocol-authorization.js.map +1 -1
- package/dist/esm/src/core/recording-validation-state-reader.js +3 -3
- package/dist/esm/src/core/recording-validation-state-reader.js.map +1 -1
- package/dist/esm/src/core/replication-apply.js +62 -108
- package/dist/esm/src/core/replication-apply.js.map +1 -1
- package/dist/esm/src/core/validation-state-reader.js +5 -6
- package/dist/esm/src/core/validation-state-reader.js.map +1 -1
- package/dist/esm/src/dwn.js +1 -2
- package/dist/esm/src/dwn.js.map +1 -1
- package/dist/esm/src/event-stream/event-emitter-wake-publisher.js +11 -11
- package/dist/esm/src/event-stream/event-emitter-wake-publisher.js.map +1 -1
- package/dist/esm/src/handlers/messages-query.js +6 -16
- package/dist/esm/src/handlers/messages-query.js.map +1 -1
- package/dist/esm/src/handlers/messages-read.js +4 -3
- package/dist/esm/src/handlers/messages-read.js.map +1 -1
- package/dist/esm/src/handlers/messages-subscribe.js +26 -30
- package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
- package/dist/esm/src/handlers/protocols-configure.js +6 -4
- package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
- package/dist/esm/src/handlers/records-count.js +85 -10
- package/dist/esm/src/handlers/records-count.js.map +1 -1
- package/dist/esm/src/handlers/records-delete.js +11 -0
- package/dist/esm/src/handlers/records-delete.js.map +1 -1
- package/dist/esm/src/handlers/records-query.js +140 -18
- package/dist/esm/src/handlers/records-query.js.map +1 -1
- package/dist/esm/src/handlers/records-read.js +20 -4
- package/dist/esm/src/handlers/records-read.js.map +1 -1
- package/dist/esm/src/handlers/records-subscribe.js +127 -11
- package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
- package/dist/esm/src/handlers/records-write.js +15 -0
- package/dist/esm/src/handlers/records-write.js.map +1 -1
- package/dist/esm/src/index.js +8 -11
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/interfaces/protocols-configure.js +66 -9
- package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
- package/dist/esm/src/interfaces/records-write.js +43 -36
- package/dist/esm/src/interfaces/records-write.js.map +1 -1
- package/dist/esm/src/jose/algorithms/signing/ed25519.js +5 -5
- package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -1
- package/dist/esm/src/jose/jws/general/verifier.js +1 -1
- package/dist/esm/src/jose/jws/general/verifier.js.map +1 -1
- package/dist/esm/src/protocols/encryption.js +60 -270
- package/dist/esm/src/protocols/encryption.js.map +1 -1
- package/dist/esm/src/store/blockstore-level.js +14 -23
- package/dist/esm/src/store/blockstore-level.js.map +1 -1
- package/dist/esm/src/store/blockstore-mock.js +10 -27
- package/dist/esm/src/store/blockstore-mock.js.map +1 -1
- package/dist/esm/src/store/blockstore-utils.js +45 -0
- package/dist/esm/src/store/blockstore-utils.js.map +1 -0
- package/dist/esm/src/store/blockstore.js +2 -0
- package/dist/esm/src/store/blockstore.js.map +1 -0
- package/dist/esm/src/store/data-store-level.js +4 -12
- package/dist/esm/src/store/data-store-level.js.map +1 -1
- package/dist/esm/src/store/level.js +7 -0
- package/dist/esm/src/store/level.js.map +1 -0
- package/dist/esm/src/types/encryption-types.js +4 -1
- package/dist/esm/src/types/encryption-types.js.map +1 -1
- package/dist/esm/src/utils/data-stream.js +25 -0
- package/dist/esm/src/utils/data-stream.js.map +1 -1
- package/dist/esm/src/utils/encryption.js +107 -19
- package/dist/esm/src/utils/encryption.js.map +1 -1
- package/dist/esm/src/utils/grant-key-coverage.js +180 -0
- package/dist/esm/src/utils/grant-key-coverage.js.map +1 -0
- package/dist/esm/src/utils/hd-key.js +1 -2
- package/dist/esm/src/utils/hd-key.js.map +1 -1
- package/dist/esm/src/utils/jws.js +7 -1
- package/dist/esm/src/utils/jws.js.map +1 -1
- package/dist/esm/src/utils/memory-cache.js +29 -8
- package/dist/esm/src/utils/memory-cache.js.map +1 -1
- package/dist/esm/src/utils/protocols.js +27 -0
- package/dist/esm/src/utils/protocols.js.map +1 -1
- package/dist/esm/src/utils/record-limit-occupancy.js +23 -3
- package/dist/esm/src/utils/record-limit-occupancy.js.map +1 -1
- package/dist/esm/src/utils/records.js +29 -0
- package/dist/esm/src/utils/records.js.map +1 -1
- package/dist/esm/src/utils/secp256k1.js +12 -11
- package/dist/esm/src/utils/secp256k1.js.map +1 -1
- package/dist/esm/src/utils/secp256r1.js +12 -20
- package/dist/esm/src/utils/secp256r1.js.map +1 -1
- package/dist/esm/src/utils/time.js +103 -25
- package/dist/esm/src/utils/time.js.map +1 -1
- package/dist/esm/tests/core/constants.spec.js +35 -0
- package/dist/esm/tests/core/constants.spec.js.map +1 -0
- package/dist/esm/tests/core/encryption-control.spec.js +100 -0
- package/dist/esm/tests/core/encryption-control.spec.js.map +1 -0
- package/dist/esm/tests/core/message.spec.js +35 -0
- package/dist/esm/tests/core/message.spec.js.map +1 -1
- package/dist/esm/tests/core/protocol-authorization.spec.js +1 -1
- package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
- package/dist/esm/tests/core/replication-apply.spec.js +157 -74
- package/dist/esm/tests/core/replication-apply.spec.js.map +1 -1
- package/dist/esm/tests/core/replication-replay-property.spec.js +2 -1
- package/dist/esm/tests/core/replication-replay-property.spec.js.map +1 -1
- package/dist/esm/tests/core/validation-read-closure.spec.js +14 -28
- package/dist/esm/tests/core/validation-read-closure.spec.js.map +1 -1
- package/dist/esm/tests/core/validation-state-reader.spec.js +19 -23
- package/dist/esm/tests/core/validation-state-reader.spec.js.map +1 -1
- package/dist/esm/tests/dwn.spec.js +2 -1
- package/dist/esm/tests/dwn.spec.js.map +1 -1
- package/dist/esm/tests/event-emitter-wake-publisher.spec.js +51 -0
- package/dist/esm/tests/event-emitter-wake-publisher.spec.js.map +1 -0
- package/dist/esm/tests/features/protocol-composition.spec.js +1 -1
- package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -1
- package/dist/esm/tests/features/records-record-limit.spec.js +1 -1
- package/dist/esm/tests/features/records-record-limit.spec.js.map +1 -1
- package/dist/esm/tests/fuzz/encryption.fuzz.spec.js +9 -1
- package/dist/esm/tests/fuzz/encryption.fuzz.spec.js.map +1 -1
- package/dist/esm/tests/fuzz/process-message.fuzz.spec.js +1 -1
- package/dist/esm/tests/fuzz/process-message.fuzz.spec.js.map +1 -1
- package/dist/esm/tests/fuzz/protocols-utils.fuzz.spec.js +29 -1
- package/dist/esm/tests/fuzz/protocols-utils.fuzz.spec.js.map +1 -1
- package/dist/esm/tests/fuzz/secp256k1.fuzz.spec.js +2 -2
- package/dist/esm/tests/fuzz/secp256k1.fuzz.spec.js.map +1 -1
- package/dist/esm/tests/fuzz/time.fuzz.spec.js +7 -1
- package/dist/esm/tests/fuzz/time.fuzz.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-query.spec.js +123 -11
- package/dist/esm/tests/handlers/messages-query.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-read.spec.js +95 -0
- package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-subscribe.spec.js +90 -0
- package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/handlers/protocols-configure.spec.js +66 -0
- package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-count.spec.js +370 -0
- package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-delete.spec.js +70 -1
- package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-query.spec.js +562 -1
- package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-read.spec.js +140 -2
- package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-subscribe.spec.js +241 -1
- package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-write.spec.js +1187 -29
- package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/protocols-configure.spec.js +290 -2
- package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-write.spec.js +47 -5
- package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
- package/dist/esm/tests/protocols/encryption.spec.js +187 -452
- package/dist/esm/tests/protocols/encryption.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +13 -27
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
- package/dist/esm/tests/store/blockstore-level.spec.js +33 -10
- package/dist/esm/tests/store/blockstore-level.spec.js.map +1 -1
- package/dist/esm/tests/store/blockstore-mock.spec.js +31 -7
- package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -1
- package/dist/esm/tests/store/blockstore-utils.spec.js +115 -0
- package/dist/esm/tests/store/blockstore-utils.spec.js.map +1 -0
- package/dist/esm/tests/store/index-level.spec.js +3 -3
- package/dist/esm/tests/store/index-level.spec.js.map +1 -1
- package/dist/esm/tests/test-stores.js +2 -1
- package/dist/esm/tests/test-stores.js.map +1 -1
- package/dist/esm/tests/utils/cid.spec.js +15 -0
- package/dist/esm/tests/utils/cid.spec.js.map +1 -1
- package/dist/esm/tests/utils/data-stream.spec.js +30 -0
- package/dist/esm/tests/utils/data-stream.spec.js.map +1 -1
- package/dist/esm/tests/utils/encryption-control-test-utils.js +111 -0
- package/dist/esm/tests/utils/encryption-control-test-utils.js.map +1 -0
- package/dist/esm/tests/utils/encryption.spec.js +198 -5
- package/dist/esm/tests/utils/encryption.spec.js.map +1 -1
- package/dist/esm/tests/utils/grant-key-coverage.spec.js +262 -0
- package/dist/esm/tests/utils/grant-key-coverage.spec.js.map +1 -0
- package/dist/esm/tests/utils/memory-cache.spec.js +12 -0
- package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -1
- package/dist/esm/tests/utils/secp256r1.spec.js +2 -2
- package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -1
- package/dist/esm/tests/utils/test-data-generator.js +2 -1
- package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
- package/dist/esm/tests/utils/test-validation-state-reader.js +1 -1
- package/dist/esm/tests/utils/test-validation-state-reader.js.map +1 -1
- package/dist/esm/tests/utils/time.spec.js +26 -0
- package/dist/esm/tests/utils/time.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/encryption/audience.spec.js +45 -0
- package/dist/esm/tests/validation/json-schemas/encryption/audience.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/encryption/delivery.spec.js +47 -0
- package/dist/esm/tests/validation/json-schemas/encryption/delivery.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/encryption/wrapped-grant-key-envelope.spec.js +43 -0
- package/dist/esm/tests/validation/json-schemas/encryption/wrapped-grant-key-envelope.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +152 -0
- package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +46 -1
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -1
- package/dist/types/generated/precompiled-validators.d.ts +20 -4
- package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
- package/dist/types/src/core/constants.d.ts +39 -0
- package/dist/types/src/core/constants.d.ts.map +1 -1
- package/dist/types/src/core/dwn-error.d.ts +29 -11
- package/dist/types/src/core/dwn-error.d.ts.map +1 -1
- package/dist/types/src/core/encryption-control.d.ts +128 -0
- package/dist/types/src/core/encryption-control.d.ts.map +1 -0
- package/dist/types/src/core/message.d.ts +4 -0
- package/dist/types/src/core/message.d.ts.map +1 -1
- package/dist/types/src/core/messages-grant-authorization.d.ts +11 -0
- package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -1
- package/dist/types/src/core/protocol-authorization-action.d.ts.map +1 -1
- package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -1
- package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
- package/dist/types/src/core/recording-validation-state-reader.d.ts +2 -3
- package/dist/types/src/core/recording-validation-state-reader.d.ts.map +1 -1
- package/dist/types/src/core/replication-apply.d.ts +10 -1
- package/dist/types/src/core/replication-apply.d.ts.map +1 -1
- package/dist/types/src/core/validation-state-reader.d.ts +2 -3
- package/dist/types/src/core/validation-state-reader.d.ts.map +1 -1
- package/dist/types/src/dwn.d.ts.map +1 -1
- package/dist/types/src/event-stream/event-emitter-wake-publisher.d.ts +1 -1
- package/dist/types/src/event-stream/event-emitter-wake-publisher.d.ts.map +1 -1
- package/dist/types/src/handlers/messages-query.d.ts.map +1 -1
- package/dist/types/src/handlers/messages-read.d.ts.map +1 -1
- package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -1
- package/dist/types/src/handlers/protocols-configure.d.ts +1 -0
- package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
- package/dist/types/src/handlers/records-count.d.ts +2 -0
- package/dist/types/src/handlers/records-count.d.ts.map +1 -1
- package/dist/types/src/handlers/records-delete.d.ts.map +1 -1
- package/dist/types/src/handlers/records-query.d.ts +3 -0
- package/dist/types/src/handlers/records-query.d.ts.map +1 -1
- package/dist/types/src/handlers/records-read.d.ts.map +1 -1
- package/dist/types/src/handlers/records-subscribe.d.ts +2 -0
- package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
- package/dist/types/src/handlers/records-write.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +12 -18
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/interfaces/protocols-configure.d.ts +13 -1
- package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-write.d.ts +5 -1
- package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
- package/dist/types/src/jose/algorithms/signing/ed25519.d.ts.map +1 -1
- package/dist/types/src/protocols/encryption.d.ts +15 -19
- package/dist/types/src/protocols/encryption.d.ts.map +1 -1
- package/dist/types/src/store/blockstore-level.d.ts +11 -11
- package/dist/types/src/store/blockstore-level.d.ts.map +1 -1
- package/dist/types/src/store/blockstore-mock.d.ts +12 -12
- package/dist/types/src/store/blockstore-mock.d.ts.map +1 -1
- package/dist/types/src/store/blockstore-utils.d.ts +23 -0
- package/dist/types/src/store/blockstore-utils.d.ts.map +1 -0
- package/dist/types/src/store/blockstore.d.ts +3 -0
- package/dist/types/src/store/blockstore.d.ts.map +1 -0
- package/dist/types/src/store/data-store-level.d.ts.map +1 -1
- package/dist/types/src/store/level.d.ts +13 -0
- package/dist/types/src/store/level.d.ts.map +1 -0
- package/dist/types/src/types/cache.d.ts +2 -2
- package/dist/types/src/types/cache.d.ts.map +1 -1
- package/dist/types/src/types/encryption-types.d.ts +31 -2
- package/dist/types/src/types/encryption-types.d.ts.map +1 -1
- package/dist/types/src/types/validation-state-reader.d.ts +3 -5
- package/dist/types/src/types/validation-state-reader.d.ts.map +1 -1
- package/dist/types/src/utils/data-stream.d.ts +5 -0
- package/dist/types/src/utils/data-stream.d.ts.map +1 -1
- package/dist/types/src/utils/encryption.d.ts +53 -24
- package/dist/types/src/utils/encryption.d.ts.map +1 -1
- package/dist/types/src/utils/grant-key-coverage.d.ts +36 -0
- package/dist/types/src/utils/grant-key-coverage.d.ts.map +1 -0
- package/dist/types/src/utils/hd-key.d.ts.map +1 -1
- package/dist/types/src/utils/jws.d.ts.map +1 -1
- package/dist/types/src/utils/memory-cache.d.ts +4 -2
- package/dist/types/src/utils/memory-cache.d.ts.map +1 -1
- package/dist/types/src/utils/protocols.d.ts +11 -0
- package/dist/types/src/utils/protocols.d.ts.map +1 -1
- package/dist/types/src/utils/record-limit-occupancy.d.ts +7 -0
- package/dist/types/src/utils/record-limit-occupancy.d.ts.map +1 -1
- package/dist/types/src/utils/records.d.ts +2 -0
- package/dist/types/src/utils/records.d.ts.map +1 -1
- package/dist/types/src/utils/secp256k1.d.ts.map +1 -1
- package/dist/types/src/utils/secp256r1.d.ts.map +1 -1
- package/dist/types/src/utils/time.d.ts +21 -13
- package/dist/types/src/utils/time.d.ts.map +1 -1
- package/dist/types/tests/core/constants.spec.d.ts +2 -0
- package/dist/types/tests/core/constants.spec.d.ts.map +1 -0
- package/dist/types/tests/core/encryption-control.spec.d.ts +2 -0
- package/dist/types/tests/core/encryption-control.spec.d.ts.map +1 -0
- package/dist/types/tests/dwn.spec.d.ts.map +1 -1
- package/dist/types/tests/event-emitter-wake-publisher.spec.d.ts +2 -0
- package/dist/types/tests/event-emitter-wake-publisher.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/messages-query.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-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/end-to-end-tests.spec.d.ts.map +1 -1
- package/dist/types/tests/store/blockstore-utils.spec.d.ts +2 -0
- package/dist/types/tests/store/blockstore-utils.spec.d.ts.map +1 -0
- package/dist/types/tests/test-stores.d.ts.map +1 -1
- package/dist/types/tests/utils/encryption-control-test-utils.d.ts +46 -0
- package/dist/types/tests/utils/encryption-control-test-utils.d.ts.map +1 -0
- package/dist/types/tests/utils/grant-key-coverage.spec.d.ts +2 -0
- package/dist/types/tests/utils/grant-key-coverage.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
- package/dist/types/tests/validation/json-schemas/encryption/audience.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/encryption/audience.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/encryption/delivery.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/encryption/delivery.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/encryption/wrapped-grant-key-envelope.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/encryption/wrapped-grant-key-envelope.spec.d.ts.map +1 -0
- package/package.json +47 -28
- package/src/core/constants.ts +61 -0
- package/src/core/dwn-error.ts +29 -11
- package/src/core/encryption-control.ts +1249 -0
- package/src/core/message.ts +7 -0
- package/src/core/messages-grant-authorization.ts +60 -9
- package/src/core/protocol-authorization-action.ts +3 -13
- package/src/core/protocol-authorization-validation.ts +66 -46
- package/src/core/protocol-authorization.ts +7 -0
- package/src/core/recording-validation-state-reader.ts +4 -5
- package/src/core/replication-apply.ts +77 -133
- package/src/core/validation-state-reader.ts +6 -8
- package/src/dwn.ts +1 -2
- package/src/event-stream/event-emitter-wake-publisher.ts +10 -14
- package/src/handlers/messages-query.ts +6 -22
- package/src/handlers/messages-read.ts +4 -3
- package/src/handlers/messages-subscribe.ts +34 -30
- package/src/handlers/protocols-configure.ts +7 -4
- package/src/handlers/records-count.ts +111 -10
- package/src/handlers/records-delete.ts +15 -0
- package/src/handlers/records-query.ts +176 -20
- package/src/handlers/records-read.ts +19 -6
- package/src/handlers/records-subscribe.ts +158 -8
- package/src/handlers/records-write.ts +19 -0
- package/src/index.ts +50 -22
- package/src/interfaces/protocols-configure.ts +102 -11
- package/src/interfaces/records-write.ts +49 -43
- package/src/jose/algorithms/signing/ed25519.ts +7 -6
- package/src/jose/jws/general/verifier.ts +3 -3
- package/src/protocols/encryption.ts +94 -411
- package/src/store/blockstore-level.ts +33 -37
- package/src/store/blockstore-mock.ts +24 -38
- package/src/store/blockstore-utils.ts +85 -0
- package/src/store/blockstore.ts +8 -0
- package/src/store/data-store-level.ts +5 -12
- package/src/store/level.ts +19 -0
- package/src/types/cache.ts +3 -3
- package/src/types/encryption-types.ts +39 -2
- package/src/types/validation-state-reader.ts +3 -5
- package/src/utils/data-stream.ts +29 -1
- package/src/utils/encryption.ts +190 -60
- package/src/utils/grant-key-coverage.ts +303 -0
- package/src/utils/hd-key.ts +1 -2
- package/src/utils/jws.ts +8 -2
- package/src/utils/memory-cache.ts +42 -11
- package/src/utils/protocols.ts +32 -0
- package/src/utils/record-limit-occupancy.ts +34 -5
- package/src/utils/records.ts +36 -2
- package/src/utils/secp256k1.ts +12 -12
- package/src/utils/secp256r1.ts +12 -22
- package/src/utils/time.ts +145 -27
- package/dist/esm/tests/validation/json-schemas/encryption/audience-key.spec.js +0 -40
- package/dist/esm/tests/validation/json-schemas/encryption/audience-key.spec.js.map +0 -1
- package/dist/types/tests/validation/json-schemas/encryption/audience-key.spec.d.ts +0 -2
- package/dist/types/tests/validation/json-schemas/encryption/audience-key.spec.d.ts.map +0 -1
- package/src/types/mitt.d.ts +0 -28
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { bytesToNumberBE } from '@noble/curves/utils.js';
|
|
2
|
+
import { secp256k1 } from '@noble/curves/secp256k1.js';
|
|
2
3
|
import { Encoder } from '../utils/encoder.js';
|
|
3
4
|
import { sha256 } from 'multiformats/hashes/sha2';
|
|
4
5
|
import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
|
|
@@ -23,8 +24,8 @@ export class Secp256k1 {
|
|
|
23
24
|
let uncompressedPublicKeyBytes;
|
|
24
25
|
if (publicKeyBytes.byteLength === 33) {
|
|
25
26
|
// this means given key is compressed
|
|
26
|
-
const curvePoints = secp256k1.
|
|
27
|
-
uncompressedPublicKeyBytes = curvePoints.
|
|
27
|
+
const curvePoints = secp256k1.Point.fromBytes(publicKeyBytes);
|
|
28
|
+
uncompressedPublicKeyBytes = curvePoints.toBytes(false); // isCompressed = false
|
|
28
29
|
}
|
|
29
30
|
else {
|
|
30
31
|
uncompressedPublicKeyBytes = publicKeyBytes;
|
|
@@ -60,10 +61,10 @@ export class Secp256k1 {
|
|
|
60
61
|
const ecJwk = publicJwk;
|
|
61
62
|
const x = Encoder.base64UrlToBytes(ecJwk.x);
|
|
62
63
|
const y = Encoder.base64UrlToBytes(ecJwk.y);
|
|
63
|
-
return secp256k1.
|
|
64
|
-
x:
|
|
65
|
-
y:
|
|
66
|
-
}).
|
|
64
|
+
return secp256k1.Point.fromAffine({
|
|
65
|
+
x: bytesToNumberBE(x),
|
|
66
|
+
y: bytesToNumberBE(y)
|
|
67
|
+
}).toBytes(true);
|
|
67
68
|
}
|
|
68
69
|
/**
|
|
69
70
|
* Creates a private key in raw bytes from the given SECP256K1 JWK.
|
|
@@ -81,7 +82,7 @@ export class Secp256k1 {
|
|
|
81
82
|
// https://github.com/paulmillr/noble-secp256k1/blob/97aa518b9c12563544ea87eba471b32ecf179916/index.ts#L1160
|
|
82
83
|
const hashedContent = await sha256.encode(content);
|
|
83
84
|
const privateKeyBytes = Secp256k1.privateJwkToBytes(privateJwk);
|
|
84
|
-
return
|
|
85
|
+
return secp256k1.sign(hashedContent, privateKeyBytes, { prehash: false });
|
|
85
86
|
}
|
|
86
87
|
/**
|
|
87
88
|
* Verifies a signature against the provided payload hash and public key.
|
|
@@ -91,13 +92,13 @@ export class Secp256k1 {
|
|
|
91
92
|
Secp256k1.validateKey(publicJwk);
|
|
92
93
|
const publicKeyBytes = Secp256k1.publicJwkToBytes(publicJwk);
|
|
93
94
|
const hashedContent = await sha256.encode(content);
|
|
94
|
-
return secp256k1.verify(signature, hashedContent, publicKeyBytes, { lowS: false });
|
|
95
|
+
return secp256k1.verify(signature, hashedContent, publicKeyBytes, { lowS: false, prehash: false });
|
|
95
96
|
}
|
|
96
97
|
/**
|
|
97
98
|
* Generates a random key pair in JWK format.
|
|
98
99
|
*/
|
|
99
100
|
static async generateKeyPair() {
|
|
100
|
-
const privateKeyBytes = secp256k1.utils.
|
|
101
|
+
const privateKeyBytes = secp256k1.utils.randomSecretKey();
|
|
101
102
|
const publicKeyBytes = secp256k1.getPublicKey(privateKeyBytes, false); // `false` = uncompressed
|
|
102
103
|
const d = Encoder.bytesToBase64Url(privateKeyBytes);
|
|
103
104
|
const publicJwk = await Secp256k1.publicKeyToJwk(publicKeyBytes);
|
|
@@ -108,7 +109,7 @@ export class Secp256k1 {
|
|
|
108
109
|
* Generates key pair in raw bytes, where the `publicKey` is compressed.
|
|
109
110
|
*/
|
|
110
111
|
static async generateKeyPairRaw() {
|
|
111
|
-
const privateKey = secp256k1.utils.
|
|
112
|
+
const privateKey = secp256k1.utils.randomSecretKey();
|
|
112
113
|
const publicKey = secp256k1.getPublicKey(privateKey, true); // `true` = compressed
|
|
113
114
|
return { publicKey, privateKey };
|
|
114
115
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secp256k1.js","sourceRoot":"","sources":["../../../../src/utils/secp256k1.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"secp256k1.js","sourceRoot":"","sources":["../../../../src/utils/secp256k1.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { bytesToNumberBE } from '@noble/curves/utils.js';
|
|
2
|
+
import { p256 } from '@noble/curves/nist.js';
|
|
2
3
|
import { Encoder } from './encoder.js';
|
|
3
4
|
import { sha256 } from 'multiformats/hashes/sha2';
|
|
4
5
|
import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
|
|
5
|
-
import { fromString, toString } from 'uint8arrays';
|
|
6
|
-
const u8a = { toString, fromString };
|
|
7
6
|
/**
|
|
8
7
|
* Class containing SECP256R1 related utility methods.
|
|
9
8
|
*/
|
|
@@ -25,8 +24,8 @@ export class Secp256r1 {
|
|
|
25
24
|
let uncompressedPublicKeyBytes;
|
|
26
25
|
if (publicKeyBytes.byteLength === 33) {
|
|
27
26
|
// this means given key is compressed
|
|
28
|
-
const curvePoints = p256.
|
|
29
|
-
uncompressedPublicKeyBytes = curvePoints.
|
|
27
|
+
const curvePoints = p256.Point.fromBytes(publicKeyBytes);
|
|
28
|
+
uncompressedPublicKeyBytes = curvePoints.toBytes(false); // isCompressed = false
|
|
30
29
|
}
|
|
31
30
|
else {
|
|
32
31
|
uncompressedPublicKeyBytes = publicKeyBytes;
|
|
@@ -61,7 +60,7 @@ export class Secp256r1 {
|
|
|
61
60
|
Secp256r1.validateKey(privateJwk);
|
|
62
61
|
const hashedContent = await sha256.encode(content);
|
|
63
62
|
const privateKeyBytes = Secp256r1.privateJwkToBytes(privateJwk);
|
|
64
|
-
return Promise.resolve(p256.sign(hashedContent, privateKeyBytes)
|
|
63
|
+
return Promise.resolve(p256.sign(hashedContent, privateKeyBytes, { prehash: false }));
|
|
65
64
|
}
|
|
66
65
|
/**
|
|
67
66
|
* Verifies a signature against the provided payload hash and public key.
|
|
@@ -70,35 +69,28 @@ export class Secp256r1 {
|
|
|
70
69
|
*/
|
|
71
70
|
static async verify(content, signature, publicJwk) {
|
|
72
71
|
Secp256r1.validateKey(publicJwk);
|
|
73
|
-
|
|
74
|
-
let sig;
|
|
75
|
-
if (signature.length === 64) {
|
|
76
|
-
sig = p256.Signature.fromCompact(signature);
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
sig = p256.Signature.fromDER(signature);
|
|
80
|
-
}
|
|
72
|
+
const signatureFormat = signature.length === 64 ? 'compact' : 'der';
|
|
81
73
|
const hashedContent = await sha256.encode(content);
|
|
82
74
|
const ecJwk = publicJwk;
|
|
83
|
-
const keyBytes = p256.
|
|
75
|
+
const keyBytes = p256.Point.fromAffine({
|
|
84
76
|
x: Secp256r1.bytesToBigInt(Encoder.base64UrlToBytes(ecJwk.x)),
|
|
85
77
|
y: Secp256r1.bytesToBigInt(Encoder.base64UrlToBytes(ecJwk.y)),
|
|
86
|
-
}).
|
|
87
|
-
return p256.verify(
|
|
78
|
+
}).toBytes(false);
|
|
79
|
+
return p256.verify(signature, hashedContent, keyBytes, { format: signatureFormat, lowS: false, prehash: false });
|
|
88
80
|
}
|
|
89
81
|
/**
|
|
90
82
|
* Generates a random key pair in JWK format.
|
|
91
83
|
*/
|
|
92
84
|
static async generateKeyPair() {
|
|
93
|
-
const privateKeyBytes = p256.utils.
|
|
94
|
-
const publicKeyBytes =
|
|
85
|
+
const privateKeyBytes = p256.utils.randomSecretKey();
|
|
86
|
+
const publicKeyBytes = p256.getPublicKey(privateKeyBytes, false); // `false` = uncompressed
|
|
95
87
|
const d = Encoder.bytesToBase64Url(privateKeyBytes);
|
|
96
88
|
const publicJwk = await Secp256r1.publicKeyToJwk(publicKeyBytes);
|
|
97
89
|
const privateJwk = { ...publicJwk, d };
|
|
98
90
|
return { publicJwk, privateJwk };
|
|
99
91
|
}
|
|
100
92
|
static bytesToBigInt(b) {
|
|
101
|
-
return
|
|
93
|
+
return bytesToNumberBE(b);
|
|
102
94
|
}
|
|
103
95
|
}
|
|
104
96
|
//# sourceMappingURL=secp256r1.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secp256r1.js","sourceRoot":"","sources":["../../../../src/utils/secp256r1.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"secp256r1.js","sourceRoot":"","sources":["../../../../src/utils/secp256r1.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { sleep } from '@enbox/common';
|
|
2
|
-
import { Temporal } from '@js-temporal/polyfill';
|
|
3
2
|
import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
|
|
3
|
+
const timestampRegex = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})\.(\d{6})Z$/;
|
|
4
4
|
/**
|
|
5
5
|
* Time related utilities.
|
|
6
6
|
*/
|
|
@@ -17,10 +17,9 @@ export class Time {
|
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
19
|
* Returns an UTC ISO-8601 timestamp with microsecond precision accepted by DWN.
|
|
20
|
-
* using @js-temporal/polyfill
|
|
21
20
|
*/
|
|
22
21
|
static getCurrentTimestamp() {
|
|
23
|
-
return
|
|
22
|
+
return Time.formatUtcTimestamp(Date.now(), 0);
|
|
24
23
|
}
|
|
25
24
|
/**
|
|
26
25
|
* Creates a UTC ISO-8601 timestamp in microsecond precision accepted by DWN.
|
|
@@ -28,41 +27,120 @@ export class Time {
|
|
|
28
27
|
* @returns string
|
|
29
28
|
*/
|
|
30
29
|
static createTimestamp(options) {
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
30
|
+
const year = Time.constrainInteger(Time.requireTimestampField(options.year, 'year'), 0, 9999);
|
|
31
|
+
const month = Time.constrainInteger(Time.requireTimestampField(options.month, 'month'), 1, 12);
|
|
32
|
+
const day = Time.constrainInteger(Time.requireTimestampField(options.day, 'day'), 1, Time.daysInUtcMonth(year, month));
|
|
33
|
+
const hour = Time.constrainInteger(options.hour ?? 0, 0, 23);
|
|
34
|
+
const minute = Time.constrainInteger(options.minute ?? 0, 0, 59);
|
|
35
|
+
const second = Time.constrainInteger(options.second ?? 0, 0, 59);
|
|
36
|
+
const millisecond = Time.constrainInteger(options.millisecond ?? 0, 0, 999);
|
|
37
|
+
const microsecond = Time.constrainInteger(options.microsecond ?? 0, 0, 999);
|
|
38
|
+
const date = new Date(0);
|
|
39
|
+
date.setUTCHours(0, 0, 0, 0);
|
|
40
|
+
date.setUTCFullYear(year, month - 1, day);
|
|
41
|
+
date.setUTCHours(hour, minute, second, millisecond);
|
|
42
|
+
return Time.formatUtcTimestamp(date.getTime(), microsecond);
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
45
45
|
* Creates a UTC ISO-8601 timestamp offset from now or given timestamp accepted by DWN.
|
|
46
46
|
* @param offset Negative number means offset into the past.
|
|
47
47
|
*/
|
|
48
48
|
static createOffsetTimestamp(offset, timestamp) {
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
const parsedTimestamp = timestamp === undefined ? { epochMilliseconds: Date.now(), microsecond: 0 } : Time.parseTimestamp(timestamp);
|
|
50
|
+
if (parsedTimestamp === undefined) {
|
|
51
|
+
throw new DwnError(DwnErrorCode.TimestampInvalid, `Invalid timestamp: ${timestamp}`);
|
|
52
|
+
}
|
|
53
|
+
const offsetSeconds = Time.requireWholeNumber(offset.seconds, 'seconds');
|
|
54
|
+
return Time.formatUtcTimestamp(parsedTimestamp.epochMilliseconds + (offsetSeconds * 1000), parsedTimestamp.microsecond);
|
|
53
55
|
}
|
|
54
56
|
/**
|
|
55
|
-
* Validates that the provided timestamp is a
|
|
57
|
+
* Validates that the provided timestamp is a DWN-compatible UTC timestamp.
|
|
56
58
|
* @param timestamp the timestamp to validate
|
|
57
|
-
* @throws DwnError if timestamp is
|
|
59
|
+
* @throws DwnError if timestamp is invalid
|
|
58
60
|
*/
|
|
59
61
|
static validateTimestamp(timestamp) {
|
|
60
|
-
|
|
61
|
-
Temporal.Instant.from(timestamp);
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
62
|
+
if (Time.parseTimestamp(timestamp) === undefined) {
|
|
64
63
|
throw new DwnError(DwnErrorCode.TimestampInvalid, `Invalid timestamp: ${timestamp}`);
|
|
65
64
|
}
|
|
66
65
|
}
|
|
66
|
+
static constrainInteger(value, min, max) {
|
|
67
|
+
if (!Number.isFinite(value)) {
|
|
68
|
+
throw new RangeError('timestamp field must be finite');
|
|
69
|
+
}
|
|
70
|
+
const integer = Math.trunc(value);
|
|
71
|
+
return Math.min(Math.max(integer, min), max);
|
|
72
|
+
}
|
|
73
|
+
static daysInUtcMonth(year, month) {
|
|
74
|
+
const date = new Date(0);
|
|
75
|
+
date.setUTCHours(0, 0, 0, 0);
|
|
76
|
+
date.setUTCFullYear(year, month, 0);
|
|
77
|
+
return date.getUTCDate();
|
|
78
|
+
}
|
|
79
|
+
static formatUtcTimestamp(epochMilliseconds, microsecond) {
|
|
80
|
+
if (!Number.isFinite(epochMilliseconds)) {
|
|
81
|
+
throw new RangeError('timestamp is outside the supported Date range');
|
|
82
|
+
}
|
|
83
|
+
const date = new Date(epochMilliseconds);
|
|
84
|
+
const year = date.getUTCFullYear();
|
|
85
|
+
if (year < 0 || year > 9999) {
|
|
86
|
+
throw new RangeError('timestamp year must be between 0000 and 9999');
|
|
87
|
+
}
|
|
88
|
+
const fraction = String((date.getUTCMilliseconds() * 1000) + microsecond).padStart(6, '0');
|
|
89
|
+
return `${Time.pad(year, 4)}-${Time.pad(date.getUTCMonth() + 1, 2)}-${Time.pad(date.getUTCDate(), 2)}` +
|
|
90
|
+
`T${Time.pad(date.getUTCHours(), 2)}:${Time.pad(date.getUTCMinutes(), 2)}:${Time.pad(date.getUTCSeconds(), 2)}.${fraction}Z`;
|
|
91
|
+
}
|
|
92
|
+
static pad(value, length) {
|
|
93
|
+
return String(value).padStart(length, '0');
|
|
94
|
+
}
|
|
95
|
+
static parseTimestamp(timestamp) {
|
|
96
|
+
const match = timestampRegex.exec(timestamp);
|
|
97
|
+
if (match === null) {
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
const year = Number(match[1]);
|
|
101
|
+
const month = Number(match[2]);
|
|
102
|
+
const day = Number(match[3]);
|
|
103
|
+
const hour = Number(match[4]);
|
|
104
|
+
const minute = Number(match[5]);
|
|
105
|
+
const second = Number(match[6]);
|
|
106
|
+
const fraction = match[7];
|
|
107
|
+
const millisecond = Number(fraction.slice(0, 3));
|
|
108
|
+
const microsecond = Number(fraction.slice(3));
|
|
109
|
+
const isLeapSecond = hour === 23 && minute === 59 && second === 60;
|
|
110
|
+
if (month < 1 ||
|
|
111
|
+
month > 12 ||
|
|
112
|
+
day < 1 ||
|
|
113
|
+
day > Time.daysInUtcMonth(year, month) ||
|
|
114
|
+
hour > 23 ||
|
|
115
|
+
minute > 59 ||
|
|
116
|
+
(second > 59 && !isLeapSecond)) {
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
const date = new Date(0);
|
|
120
|
+
date.setUTCHours(0, 0, 0, 0);
|
|
121
|
+
date.setUTCFullYear(year, month - 1, day);
|
|
122
|
+
date.setUTCHours(hour, minute, isLeapSecond ? 59 : second, millisecond);
|
|
123
|
+
if (date.getUTCFullYear() !== year ||
|
|
124
|
+
date.getUTCMonth() !== month - 1 ||
|
|
125
|
+
date.getUTCDate() !== day ||
|
|
126
|
+
date.getUTCHours() !== hour ||
|
|
127
|
+
date.getUTCMinutes() !== minute ||
|
|
128
|
+
date.getUTCSeconds() !== (isLeapSecond ? 59 : second)) {
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
return { epochMilliseconds: date.getTime(), microsecond };
|
|
132
|
+
}
|
|
133
|
+
static requireTimestampField(value, fieldName) {
|
|
134
|
+
if (value === undefined) {
|
|
135
|
+
throw new TypeError(`required property '${fieldName}' missing or undefined`);
|
|
136
|
+
}
|
|
137
|
+
return value;
|
|
138
|
+
}
|
|
139
|
+
static requireWholeNumber(value, fieldName) {
|
|
140
|
+
if (!Number.isFinite(value) || !Number.isInteger(value)) {
|
|
141
|
+
throw new RangeError(`${fieldName} must be a finite integer`);
|
|
142
|
+
}
|
|
143
|
+
return value;
|
|
144
|
+
}
|
|
67
145
|
}
|
|
68
146
|
//# sourceMappingURL=time.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../../src/utils/time.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../../src/utils/time.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { describe, expect, it } from 'bun:test';
|
|
2
|
+
import { ENCRYPTION_CONTROL_AUDIENCE_PATH, ENCRYPTION_CONTROL_DELIVERY_PATH, ENCRYPTION_CONTROL_PATHS, ENCRYPTION_CONTROL_ROOT_PATH, ENCRYPTION_PROTOCOL_URI, EncryptionControlRecordType, getEncryptionControlRecordType, isEncryptionControlPath, isRecordsPrimaryProjectionExcludedProtocol, PERMISSIONS_PROTOCOL_URI, } from '../../src/core/constants.js';
|
|
3
|
+
describe('core constants', () => {
|
|
4
|
+
describe('encryption control paths', () => {
|
|
5
|
+
it('should identify exact reserved encryption control paths', () => {
|
|
6
|
+
expect(ENCRYPTION_CONTROL_ROOT_PATH).toBe('$encryption');
|
|
7
|
+
expect(ENCRYPTION_CONTROL_AUDIENCE_PATH).toBe('$encryption/audience');
|
|
8
|
+
expect(ENCRYPTION_CONTROL_DELIVERY_PATH).toBe('$encryption/delivery');
|
|
9
|
+
expect(ENCRYPTION_CONTROL_PATHS).toEqual([
|
|
10
|
+
ENCRYPTION_CONTROL_AUDIENCE_PATH,
|
|
11
|
+
ENCRYPTION_CONTROL_DELIVERY_PATH,
|
|
12
|
+
]);
|
|
13
|
+
expect(isEncryptionControlPath(ENCRYPTION_CONTROL_AUDIENCE_PATH)).toBe(true);
|
|
14
|
+
expect(isEncryptionControlPath(ENCRYPTION_CONTROL_DELIVERY_PATH)).toBe(true);
|
|
15
|
+
expect(getEncryptionControlRecordType(ENCRYPTION_CONTROL_AUDIENCE_PATH)).toBe(EncryptionControlRecordType.Audience);
|
|
16
|
+
expect(getEncryptionControlRecordType(ENCRYPTION_CONTROL_DELIVERY_PATH)).toBe(EncryptionControlRecordType.Delivery);
|
|
17
|
+
});
|
|
18
|
+
it('should reject undefined, root-only, and lookalike encryption control paths', () => {
|
|
19
|
+
expect(isEncryptionControlPath(undefined)).toBe(false);
|
|
20
|
+
expect(isEncryptionControlPath(ENCRYPTION_CONTROL_ROOT_PATH)).toBe(false);
|
|
21
|
+
expect(isEncryptionControlPath('$encryptionx/audience')).toBe(false);
|
|
22
|
+
expect(isEncryptionControlPath('$encryption/audience/child')).toBe(false);
|
|
23
|
+
expect(isEncryptionControlPath('$encryption/delivery/child')).toBe(false);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('primary projection exclusions', () => {
|
|
27
|
+
it('should exclude only infrastructure protocols from primary record projections', () => {
|
|
28
|
+
expect(isRecordsPrimaryProjectionExcludedProtocol(ENCRYPTION_PROTOCOL_URI)).toBe(true);
|
|
29
|
+
expect(isRecordsPrimaryProjectionExcludedProtocol(PERMISSIONS_PROTOCOL_URI)).toBe(true);
|
|
30
|
+
expect(isRecordsPrimaryProjectionExcludedProtocol(undefined)).toBe(false);
|
|
31
|
+
expect(isRecordsPrimaryProjectionExcludedProtocol('https://example.com/protocol')).toBe(false);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=constants.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.spec.js","sourceRoot":"","sources":["../../../../tests/core/constants.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEhD,OAAO,EACL,gCAAgC,EAChC,gCAAgC,EAChC,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,8BAA8B,EAC9B,uBAAuB,EACvB,0CAA0C,EAC1C,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AAErC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,MAAM,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACzD,MAAM,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACtE,MAAM,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACtE,MAAM,CAAC,wBAAwB,CAAC,CAAC,OAAO,CAAC;gBACvC,gCAAgC;gBAChC,gCAAgC;aACjC,CAAC,CAAC;YAEH,MAAM,CAAC,uBAAuB,CAAC,gCAAgC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7E,MAAM,CAAC,uBAAuB,CAAC,gCAAgC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7E,MAAM,CAAC,8BAA8B,CAAC,gCAAgC,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;YACpH,MAAM,CAAC,8BAA8B,CAAC,gCAAgC,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QACtH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;YACpF,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvD,MAAM,CAAC,uBAAuB,CAAC,4BAA4B,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1E,MAAM,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrE,MAAM,CAAC,uBAAuB,CAAC,4BAA4B,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1E,MAAM,CAAC,uBAAuB,CAAC,4BAA4B,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC7C,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE;YACtF,MAAM,CAAC,0CAA0C,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvF,MAAM,CAAC,0CAA0C,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxF,MAAM,CAAC,0CAA0C,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1E,MAAM,CAAC,0CAA0C,CAAC,8BAA8B,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjG,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { describe, expect, it } from 'bun:test';
|
|
2
|
+
import { ENCRYPTION_CONTROL_AUDIENCE_PATH } from '../../src/core/constants.js';
|
|
3
|
+
import { EncryptionControl } from '../../src/core/encryption-control.js';
|
|
4
|
+
import { DwnInterfaceName, DwnMethodName } from '../../src/index.js';
|
|
5
|
+
const tenant = 'did:example:tenant';
|
|
6
|
+
describe('EncryptionControl', () => {
|
|
7
|
+
describe('canRead()', () => {
|
|
8
|
+
it('returns true for non-control records', async () => {
|
|
9
|
+
const result = await EncryptionControl.canRead({
|
|
10
|
+
tenant,
|
|
11
|
+
incomingMessage: makeIncomingMessage(),
|
|
12
|
+
requester: 'did:example:alice',
|
|
13
|
+
recordsWriteMessage: makeRecordsWriteMessage({ protocolPath: 'thread/message' }),
|
|
14
|
+
validationStateReader: {},
|
|
15
|
+
});
|
|
16
|
+
expect(result).toBe(true);
|
|
17
|
+
});
|
|
18
|
+
it('returns true when the requester is the tenant', async () => {
|
|
19
|
+
const result = await EncryptionControl.canRead({
|
|
20
|
+
tenant,
|
|
21
|
+
incomingMessage: makeIncomingMessage(),
|
|
22
|
+
requester: tenant,
|
|
23
|
+
recordsWriteMessage: makeRecordsWriteMessage({ protocolPath: ENCRYPTION_CONTROL_AUDIENCE_PATH }),
|
|
24
|
+
validationStateReader: {},
|
|
25
|
+
});
|
|
26
|
+
expect(result).toBe(true);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
describe('projectCurrentAudienceRecords()', () => {
|
|
30
|
+
it('should reuse current audience resolution results from a caller-provided cache', async () => {
|
|
31
|
+
const current = makeAudienceRecordsWriteMessage({
|
|
32
|
+
dateCreated: '2026-01-01T00:00:00.000000Z',
|
|
33
|
+
keyId: 'current',
|
|
34
|
+
recordId: 'current-record',
|
|
35
|
+
});
|
|
36
|
+
const loser = makeAudienceRecordsWriteMessage({
|
|
37
|
+
dateCreated: '2026-01-01T00:00:01.000000Z',
|
|
38
|
+
keyId: 'loser',
|
|
39
|
+
recordId: 'loser-record',
|
|
40
|
+
});
|
|
41
|
+
let queryCount = 0;
|
|
42
|
+
const messageStore = {
|
|
43
|
+
query: async () => {
|
|
44
|
+
queryCount++;
|
|
45
|
+
return { messages: [current, loser] };
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
const currentAudienceRecordIdCache = new Map();
|
|
49
|
+
const loserProjection = await EncryptionControl.projectCurrentAudienceRecords({
|
|
50
|
+
currentAudienceRecordIdCache,
|
|
51
|
+
messageStore,
|
|
52
|
+
tenant,
|
|
53
|
+
recordsWriteMessages: [loser],
|
|
54
|
+
});
|
|
55
|
+
expect(loserProjection).toEqual([]);
|
|
56
|
+
const currentProjection = await EncryptionControl.projectCurrentAudienceRecords({
|
|
57
|
+
currentAudienceRecordIdCache,
|
|
58
|
+
messageStore,
|
|
59
|
+
tenant,
|
|
60
|
+
recordsWriteMessages: [current],
|
|
61
|
+
});
|
|
62
|
+
expect(currentProjection.map(record => record.recordId)).toEqual(['current-record']);
|
|
63
|
+
expect(queryCount).toBe(1);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
function makeIncomingMessage() {
|
|
68
|
+
return {
|
|
69
|
+
descriptor: {
|
|
70
|
+
interface: DwnInterfaceName.Records,
|
|
71
|
+
method: DwnMethodName.Read,
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function makeRecordsWriteMessage(options) {
|
|
76
|
+
return {
|
|
77
|
+
descriptor: {
|
|
78
|
+
protocolPath: options.protocolPath,
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function makeAudienceRecordsWriteMessage(options) {
|
|
83
|
+
return {
|
|
84
|
+
descriptor: {
|
|
85
|
+
interface: DwnInterfaceName.Records,
|
|
86
|
+
method: DwnMethodName.Write,
|
|
87
|
+
protocol: 'http://example.com/protocol',
|
|
88
|
+
protocolPath: ENCRYPTION_CONTROL_AUDIENCE_PATH,
|
|
89
|
+
dateCreated: options.dateCreated,
|
|
90
|
+
tags: {
|
|
91
|
+
contextId: '',
|
|
92
|
+
keyId: options.keyId,
|
|
93
|
+
protocol: 'http://example.com/protocol',
|
|
94
|
+
rolePath: 'member',
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
recordId: options.recordId,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=encryption-control.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encryption-control.spec.js","sourceRoot":"","sources":["../../../../tests/core/encryption-control.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -79,6 +79,41 @@ describe('Message', () => {
|
|
|
79
79
|
expect(author).toBeUndefined();
|
|
80
80
|
});
|
|
81
81
|
});
|
|
82
|
+
describe('getRequester()', () => {
|
|
83
|
+
it('should return the signer for delegated messages and author for direct messages', async () => {
|
|
84
|
+
const alice = await TestDataGenerator.generatePersona();
|
|
85
|
+
const deviceX = await TestDataGenerator.generatePersona();
|
|
86
|
+
const scope = {
|
|
87
|
+
interface: DwnInterfaceName.Records,
|
|
88
|
+
method: DwnMethodName.Write,
|
|
89
|
+
protocol: 'https://example.com/protocol/test',
|
|
90
|
+
};
|
|
91
|
+
const delegatedGrant = await PermissionsProtocol.createGrant({
|
|
92
|
+
delegated: true,
|
|
93
|
+
dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
|
|
94
|
+
grantedTo: deviceX.did,
|
|
95
|
+
scope,
|
|
96
|
+
signer: Jws.createSigner(alice),
|
|
97
|
+
});
|
|
98
|
+
const delegatedWrite = await RecordsWrite.create({
|
|
99
|
+
signer: Jws.createSigner(deviceX),
|
|
100
|
+
delegatedGrant: delegatedGrant.dataEncodedMessage,
|
|
101
|
+
protocol: 'https://example.com/protocol/test',
|
|
102
|
+
protocolPath: 'test/path',
|
|
103
|
+
dataFormat: 'application/json',
|
|
104
|
+
data: TestDataGenerator.randomBytes(32),
|
|
105
|
+
});
|
|
106
|
+
const directWrite = await TestDataGenerator.generateRecordsWrite({ author: alice });
|
|
107
|
+
const unsignedRead = await RecordsRead.create({
|
|
108
|
+
filter: {
|
|
109
|
+
recordId: await TestDataGenerator.randomCborSha256Cid()
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
expect(Message.getRequester(delegatedWrite.message)).toBe(deviceX.did);
|
|
113
|
+
expect(Message.getRequester(directWrite.message)).toBe(alice.did);
|
|
114
|
+
expect(Message.getRequester(unsignedRead.message)).toBeUndefined();
|
|
115
|
+
});
|
|
116
|
+
});
|
|
82
117
|
describe('toJSON()', () => {
|
|
83
118
|
it('should return the message passed in to the constructor', async () => {
|
|
84
119
|
// create a message without `authorization`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.spec.js","sourceRoot":"","sources":["../../../../tests/core/message.spec.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE1F,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,eAAe,EAAE,CAAC;YAEtD,0BAA0B;YAC1B,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,MAAM,iBAAiB,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACvG,MAAM,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YAClE,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEzC,0BAA0B;YAC1B,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,iBAAiB,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACzG,MAAM,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;YACpE,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAE1C,sCAAsC;YACtC,MAAM,EAAE,OAAO,EAAE,yBAAyB,EAAE,GAAG,MAAM,iBAAiB,CAAC,0BAA0B,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACnH,MAAM,wBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;YAC9E,MAAM,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,eAAe,EAAE,CAAC;YACxD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,eAAe,EAAE,CAAC;YAE1D,oFAAoF;YACpF,MAAM,KAAK,GAAmB;gBAC5B,SAAS,EAAG,gBAAgB,CAAC,OAAO;gBACpC,MAAM,EAAM,aAAa,CAAC,KAAK;gBAC/B,QAAQ,EAAI,mCAAmC;aAChD,CAAC;YAEF,qCAAqC;YACrC,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC;gBACrD,SAAS,EAAK,IAAI;gBAClB,WAAW,EAAG,IAAI,CAAC,qBAAqB,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;gBAC1D,SAAS,EAAK,OAAO,CAAC,GAAG;gBACzB,KAAK,EAAS,KAAK;gBACnB,MAAM,EAAQ,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC;aACtC,CAAC,CAAC;YAEH,0CAA0C;YAC1C,MAAM,SAAS,GAAG,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAEpD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC;gBAC5C,MAAM,EAAW,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC;gBAC1C,cAAc,EAAG,QAAQ,CAAC,kBAAkB;gBAC5C,QAAQ,EAAS,mCAAmC;gBACpD,YAAY,EAAK,WAAW;gBAC5B,UAAU,EAAO,kBAAkB;gBACnC,IAAI,EAAa,SAAS;aAC3B,CAAC,CAAC;YAEH,oCAAoC;YACpC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE/B,sCAAsC;YACtC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC;gBAC3C,MAAM,EAAE;oBACN,QAAQ,EAAE,MAAM,iBAAiB,CAAC,mBAAmB,EAAE;iBACxD;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC;gBAC3C,MAAM,EAAE;oBACN,QAAQ,EAAE,MAAM,iBAAiB,CAAC,mBAAmB,EAAE;iBACxD;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,2CAA2C;YAC3C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC;gBAC3C,MAAM,EAAE;oBACN,QAAQ,EAAE,MAAM,iBAAiB,CAAC,mBAAmB,EAAE;iBACxD;aACF,CAAC,CAAC;YAEH,6CAA6C;YAC7C,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,MAAM,iBAAiB,CAAC,oBAAoB,CAAC,EAAE,gBAAgB,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACrG,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B;YAErE,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,CAAC,GAAG,CAAC,MAAM,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC;YACnE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAC,MAAM,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC;YACnE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAC,MAAM,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,yCAAyC;YAE7G,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,CAAE,aAAqB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,CAAC,GAAG,CAAC,MAAM,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC;YACnE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAC,MAAM,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC;YACnE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAC,MAAM,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,yCAAyC;YAE7G,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,CAAE,aAAqB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,iBAAiB,CAAC,oBAAoB,EAAE,CAAC;YACnE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAE3C,MAAM,eAAe,GAA2B,OAAO,CAAC;YACxD,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAEjE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAEnD,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"message.spec.js","sourceRoot":"","sources":["../../../../tests/core/message.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createTestValidationStateReader } from '../utils/test-validation-state-reader.js';
|
|
2
2
|
import { DwnErrorCode } from '../../src/core/dwn-error.js';
|
|
3
3
|
import { getActionsSeekingARuleMatch } from '../../src/core/protocol-authorization-action.js';
|
|
4
|
-
import { MessageStoreLevel } from '../../src/
|
|
4
|
+
import { MessageStoreLevel } from '../../src/store/level.js';
|
|
5
5
|
import { ProtocolAuthorization } from '../../src/core/protocol-authorization.js';
|
|
6
6
|
import { TestDataGenerator } from '../utils/test-data-generator.js';
|
|
7
7
|
import { beforeEach, describe, expect, it } from 'bun:test';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-authorization.spec.js","sourceRoot":"","sources":["../../../../tests/core/protocol-authorization.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,iDAAiD,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"protocol-authorization.spec.js","sourceRoot":"","sources":["../../../../tests/core/protocol-authorization.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,iDAAiD,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAE5D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,UAAU,CAAC,GAAG,EAAE;QACd,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,qBAAqB,EAAE,CAAC;YAE9D,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,iBAAiB,CAAC,oBAAoB,CAAC;gBACpE,MAAM,EAAY,KAAK;gBACvB,eAAe,EAAG,mBAAmB;aACtC,CAAC,CAAC;YAEH,yBAAyB;YACzB,MAAM,gBAAgB,GAAG,KAAK,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;YACrE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,uCAAuC;YAC1F,MAAM,qBAAqB,GAAG,+BAA+B,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAElG,MAAM,MAAM,CAAC,qBAAqB,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAChH,YAAY,CAAC,0DAA0D,CACxE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC7C,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,qBAAqB,EAAE,CAAC;YAE9D,MAAM,iCAAiC,GAAG;gBACxC,OAAO,EAAE;oBACP,UAAU,EAAE;wBACV,MAAM,EAAE,gBAAgB;qBACzB;iBACF;aACK,CAAC;YAET,MAAM,gBAAgB,GAAG,KAAK,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;YACrE,MAAM,qBAAqB,GAAG,+BAA+B,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAClG,MAAM,CAAC,MAAM,2BAA2B,CAAC,KAAK,CAAC,GAAG,EAAE,iCAAiC,EAAE,qBAAqB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjI,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|