@enbox/dwn-sdk-js 0.0.1 → 0.0.3
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 +52 -301
- package/dist/bundles/dwn.js +19 -21
- package/dist/esm/generated/precompiled-validators.js +2764 -1773
- package/dist/esm/generated/precompiled-validators.js.map +1 -1
- package/dist/esm/src/core/dwn-error.js +27 -3
- package/dist/esm/src/core/dwn-error.js.map +1 -1
- package/dist/esm/src/core/message.js.map +1 -1
- package/dist/esm/src/core/messages-grant-authorization.js +17 -6
- package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
- package/dist/esm/src/core/protocol-authorization.js +245 -69
- package/dist/esm/src/core/protocol-authorization.js.map +1 -1
- package/dist/esm/src/core/resumable-task-manager.js +4 -4
- package/dist/esm/src/core/resumable-task-manager.js.map +1 -1
- package/dist/esm/src/dwn.js +10 -8
- package/dist/esm/src/dwn.js.map +1 -1
- package/dist/esm/src/enums/dwn-interface-method.js +4 -2
- package/dist/esm/src/enums/dwn-interface-method.js.map +1 -1
- package/dist/esm/src/event-stream/event-emitter-stream.js.map +1 -0
- package/dist/esm/src/handlers/messages-subscribe.js +1 -1
- package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
- package/dist/esm/src/handlers/messages-sync.js +116 -0
- package/dist/esm/src/handlers/messages-sync.js.map +1 -0
- package/dist/esm/src/handlers/protocols-configure.js +149 -16
- package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
- package/dist/esm/src/handlers/protocols-query.js +2 -2
- package/dist/esm/src/handlers/protocols-query.js.map +1 -1
- package/dist/esm/src/handlers/records-count.js +143 -0
- package/dist/esm/src/handlers/records-count.js.map +1 -0
- package/dist/esm/src/handlers/records-query.js +4 -0
- package/dist/esm/src/handlers/records-query.js.map +1 -1
- package/dist/esm/src/handlers/records-read.js +4 -6
- package/dist/esm/src/handlers/records-read.js.map +1 -1
- package/dist/esm/src/handlers/records-write.js +17 -18
- package/dist/esm/src/handlers/records-write.js.map +1 -1
- package/dist/esm/src/index.js +9 -5
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/interfaces/messages-read.js +2 -7
- package/dist/esm/src/interfaces/messages-read.js.map +1 -1
- package/dist/esm/src/interfaces/messages-subscribe.js +1 -0
- package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
- package/dist/esm/src/interfaces/{messages-query.js → messages-sync.js} +11 -12
- package/dist/esm/src/interfaces/messages-sync.js.map +1 -0
- package/dist/esm/src/interfaces/protocols-configure.js +153 -30
- package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
- package/dist/esm/src/interfaces/protocols-query.js +1 -0
- package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
- package/dist/esm/src/interfaces/records-count.js +91 -0
- package/dist/esm/src/interfaces/records-count.js.map +1 -0
- package/dist/esm/src/interfaces/records-read.js +15 -1
- package/dist/esm/src/interfaces/records-read.js.map +1 -1
- package/dist/esm/src/interfaces/records-write.js +64 -15
- package/dist/esm/src/interfaces/records-write.js.map +1 -1
- package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -1
- package/dist/esm/src/jose/algorithms/signing/signature-algorithms.js.map +1 -1
- package/dist/esm/src/jose/jws/general/builder.js.map +1 -1
- package/dist/esm/src/jose/jws/general/verifier.js.map +1 -1
- package/dist/esm/src/protocols/permission-grant.js +30 -0
- package/dist/esm/src/protocols/permission-grant.js.map +1 -1
- package/dist/esm/src/protocols/permission-request.js +24 -0
- package/dist/esm/src/protocols/permission-request.js.map +1 -1
- package/dist/esm/src/protocols/permissions.js +1 -1
- package/dist/esm/src/protocols/permissions.js.map +1 -1
- package/dist/esm/src/schema-validator.js +0 -1
- package/dist/esm/src/schema-validator.js.map +1 -1
- package/dist/esm/src/smt/smt-store-level.js +125 -0
- package/dist/esm/src/smt/smt-store-level.js.map +1 -0
- package/dist/esm/src/smt/smt-store-memory.js +67 -0
- package/dist/esm/src/smt/smt-store-memory.js.map +1 -0
- package/dist/esm/src/smt/smt-utils.js +146 -0
- package/dist/esm/src/smt/smt-utils.js.map +1 -0
- package/dist/esm/src/smt/sparse-merkle-tree.js +622 -0
- package/dist/esm/src/smt/sparse-merkle-tree.js.map +1 -0
- package/dist/esm/src/state-index/state-index-level.js +228 -0
- package/dist/esm/src/state-index/state-index-level.js.map +1 -0
- package/dist/esm/src/store/data-store-level.js +6 -6
- package/dist/esm/src/store/data-store-level.js.map +1 -1
- package/dist/esm/src/store/index-level.js +375 -17
- package/dist/esm/src/store/index-level.js.map +1 -1
- package/dist/esm/src/store/message-store-level.js +56 -0
- package/dist/esm/src/store/message-store-level.js.map +1 -1
- package/dist/esm/src/store/storage-controller.js +19 -16
- package/dist/esm/src/store/storage-controller.js.map +1 -1
- package/dist/esm/src/types/encryption-types.js +2 -0
- package/dist/esm/src/types/encryption-types.js.map +1 -0
- package/dist/esm/src/types/message-types.js.map +1 -1
- package/dist/esm/src/types/protocols-types.js +0 -2
- package/dist/esm/src/types/protocols-types.js.map +1 -1
- package/dist/esm/src/types/records-types.js +2 -0
- package/dist/esm/src/types/records-types.js.map +1 -1
- package/dist/esm/src/types/smt-types.js +5 -0
- package/dist/esm/src/types/smt-types.js.map +1 -0
- package/dist/esm/src/types/state-index.js +2 -0
- package/dist/esm/src/types/state-index.js.map +1 -0
- package/dist/esm/src/utils/cid.js +2 -1
- package/dist/esm/src/utils/cid.js.map +1 -1
- package/dist/esm/src/utils/data-stream.js +84 -29
- package/dist/esm/src/utils/data-stream.js.map +1 -1
- package/dist/esm/src/utils/encryption.js +22 -31
- package/dist/esm/src/utils/encryption.js.map +1 -1
- package/dist/esm/src/utils/hd-key.js +3 -3
- package/dist/esm/src/utils/hd-key.js.map +1 -1
- package/dist/esm/src/utils/jws.js +4 -4
- package/dist/esm/src/utils/jws.js.map +1 -1
- package/dist/esm/src/utils/private-key-signer.js +4 -3
- package/dist/esm/src/utils/private-key-signer.js.map +1 -1
- package/dist/esm/src/utils/protocols.js +82 -9
- package/dist/esm/src/utils/protocols.js.map +1 -1
- package/dist/esm/src/utils/records.js +82 -26
- package/dist/esm/src/utils/records.js.map +1 -1
- package/dist/esm/src/utils/secp256k1.js +4 -3
- package/dist/esm/src/utils/secp256k1.js.map +1 -1
- package/dist/esm/src/utils/secp256r1.js +3 -2
- package/dist/esm/src/utils/secp256r1.js.map +1 -1
- package/dist/esm/src/utils/time.js +1 -1
- package/dist/esm/src/utils/url.js +1 -1
- package/dist/esm/src/utils/url.js.map +1 -1
- package/dist/esm/tests/core/auth.spec.js +2 -2
- package/dist/esm/tests/core/auth.spec.js.map +1 -1
- package/dist/esm/tests/core/message-reply.spec.js +3 -3
- package/dist/esm/tests/core/message-reply.spec.js.map +1 -1
- package/dist/esm/tests/core/message.spec.js +13 -13
- package/dist/esm/tests/core/message.spec.js.map +1 -1
- package/dist/esm/tests/core/protocol-authorization.spec.js +3 -3
- package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
- package/dist/esm/tests/dwn.spec.js +27 -37
- package/dist/esm/tests/dwn.spec.js.map +1 -1
- package/dist/esm/tests/{event-log → event-stream}/event-emitter-stream.spec.js +14 -15
- package/dist/esm/tests/event-stream/event-emitter-stream.spec.js.map +1 -0
- package/dist/esm/tests/{event-log → event-stream}/event-stream.spec.js +13 -15
- package/dist/esm/tests/event-stream/event-stream.spec.js.map +1 -0
- package/dist/esm/tests/features/author-delegated-grant.spec.js +281 -135
- package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -1
- package/dist/esm/tests/features/owner-delegated-grant.spec.js +57 -59
- package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -1
- package/dist/esm/tests/features/owner-signature.spec.js +32 -34
- package/dist/esm/tests/features/owner-signature.spec.js.map +1 -1
- package/dist/esm/tests/features/permissions.spec.js +73 -95
- package/dist/esm/tests/features/permissions.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-composition.spec.js +1645 -0
- package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -0
- package/dist/esm/tests/features/protocol-create-action.spec.js +25 -27
- package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-delete-action.spec.js +42 -44
- package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-update-action.spec.js +53 -55
- package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -1
- package/dist/esm/tests/features/records-prune.spec.js +126 -100
- package/dist/esm/tests/features/records-prune.spec.js.map +1 -1
- package/dist/esm/tests/features/records-tags.spec.js +272 -272
- package/dist/esm/tests/features/records-tags.spec.js.map +1 -1
- package/dist/esm/tests/features/resumable-tasks.spec.js +35 -37
- package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-read.spec.js +112 -112
- package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-subscribe.spec.js +78 -76
- package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-sync.spec.js +528 -0
- package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -0
- package/dist/esm/tests/handlers/protocols-configure.spec.js +545 -152
- package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/handlers/protocols-query.spec.js +70 -72
- package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-count.spec.js +313 -0
- package/dist/esm/tests/handlers/records-count.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-delete.spec.js +106 -109
- package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-query.spec.js +863 -463
- package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-read.spec.js +439 -209
- package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-subscribe.spec.js +292 -97
- package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-write.spec.js +481 -483
- package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/messages-get.spec.js +31 -11
- package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/messages-subscribe.spec.js +5 -5
- package/dist/esm/tests/interfaces/messages-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/protocols-configure.spec.js +64 -134
- package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/protocols-query.spec.js +4 -6
- package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-delete.spec.js +3 -5
- package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-query.spec.js +9 -11
- package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-read.spec.js +76 -7
- package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-subscribe.spec.js +7 -9
- package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-write.spec.js +244 -48
- package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
- package/dist/esm/tests/jose/jws/general.spec.js +15 -18
- package/dist/esm/tests/jose/jws/general.spec.js.map +1 -1
- package/dist/esm/tests/protocols/permission-grant.spec.js +114 -0
- package/dist/esm/tests/protocols/permission-grant.spec.js.map +1 -0
- package/dist/esm/tests/protocols/permission-request.spec.js +43 -7
- package/dist/esm/tests/protocols/permission-request.spec.js.map +1 -1
- package/dist/esm/tests/protocols/permissions.spec.js +9 -11
- package/dist/esm/tests/protocols/permissions.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/aggregator.spec.js +90 -92
- package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/deleted-record.spec.js +17 -19
- package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +27 -29
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/nested-roles.spec.js +37 -39
- package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/subscriptions.spec.js +163 -163
- package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -1
- package/dist/esm/tests/smt/smt-store-level.spec.js +143 -0
- package/dist/esm/tests/smt/smt-store-level.spec.js.map +1 -0
- package/dist/esm/tests/smt/sparse-merkle-tree.spec.js +741 -0
- package/dist/esm/tests/smt/sparse-merkle-tree.spec.js.map +1 -0
- package/dist/esm/tests/state-index/state-index-level.spec.js +254 -0
- package/dist/esm/tests/state-index/state-index-level.spec.js.map +1 -0
- package/dist/esm/tests/store/blockstore-level.spec.js +136 -0
- package/dist/esm/tests/store/blockstore-level.spec.js.map +1 -0
- package/dist/esm/tests/store/blockstore-mock.spec.js +29 -28
- package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -1
- package/dist/esm/tests/store/data-store-level.spec.js +23 -25
- package/dist/esm/tests/store/data-store-level.spec.js.map +1 -1
- package/dist/esm/tests/store/index-level.spec.js +544 -194
- package/dist/esm/tests/store/index-level.spec.js.map +1 -1
- package/dist/esm/tests/store/message-store-level.spec.js +4 -4
- package/dist/esm/tests/store/message-store-level.spec.js.map +1 -1
- package/dist/esm/tests/store/message-store.spec.js +147 -73
- package/dist/esm/tests/store/message-store.spec.js.map +1 -1
- package/dist/esm/tests/store-dependent-tests.spec.js +1 -0
- package/dist/esm/tests/store-dependent-tests.spec.js.map +1 -1
- package/dist/esm/tests/test-stores.js +5 -5
- package/dist/esm/tests/test-stores.js.map +1 -1
- package/dist/esm/tests/test-suite.js +9 -8
- package/dist/esm/tests/test-suite.js.map +1 -1
- package/dist/esm/tests/utils/cid.spec.js +8 -11
- package/dist/esm/tests/utils/cid.spec.js.map +1 -1
- package/dist/esm/tests/utils/data-stream.spec.js +167 -13
- package/dist/esm/tests/utils/data-stream.spec.js.map +1 -1
- package/dist/esm/tests/utils/encryption-callbacks.spec.js +233 -0
- package/dist/esm/tests/utils/encryption-callbacks.spec.js.map +1 -0
- package/dist/esm/tests/utils/encryption.spec.js +34 -85
- package/dist/esm/tests/utils/encryption.spec.js.map +1 -1
- package/dist/esm/tests/utils/filters.spec.js +67 -69
- package/dist/esm/tests/utils/filters.spec.js.map +1 -1
- package/dist/esm/tests/utils/hd-key.spec.js +3 -3
- package/dist/esm/tests/utils/hd-key.spec.js.map +1 -1
- package/dist/esm/tests/utils/jws.spec.js +54 -3
- package/dist/esm/tests/utils/jws.spec.js.map +1 -1
- package/dist/esm/tests/utils/memory-cache.spec.js +6 -9
- package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -1
- package/dist/esm/tests/utils/messages.spec.js +63 -29
- package/dist/esm/tests/utils/messages.spec.js.map +1 -1
- package/dist/esm/tests/utils/object.spec.js +3 -3
- package/dist/esm/tests/utils/object.spec.js.map +1 -1
- package/dist/esm/tests/utils/poller.js +1 -1
- package/dist/esm/tests/utils/poller.js.map +1 -1
- package/dist/esm/tests/utils/private-key-signer.spec.js +6 -6
- package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -1
- package/dist/esm/tests/utils/records.spec.js +37 -5
- package/dist/esm/tests/utils/records.spec.js.map +1 -1
- package/dist/esm/tests/utils/secp256k1.spec.js +7 -7
- package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -1
- package/dist/esm/tests/utils/secp256r1.spec.js +7 -7
- package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -1
- package/dist/esm/tests/utils/test-data-generator.js +47 -28
- package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
- package/dist/esm/tests/utils/time.spec.js +7 -7
- package/dist/esm/tests/utils/time.spec.js.map +1 -1
- package/dist/esm/tests/utils/url.spec.js +25 -27
- package/dist/esm/tests/utils/url.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/definitions.spec.js +4 -4
- package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +15 -3
- package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +8 -8
- package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +8 -18
- package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +3 -3
- package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +9 -9
- package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js +106 -0
- package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +18 -18
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -1
- package/dist/esm/tests/vectors/protocol-definitions/email.json +1 -1
- package/dist/esm/tests/vectors/protocol-definitions/friend-role.json +2 -4
- package/dist/esm/tests/vectors/protocol-definitions/slack.json +2 -6
- package/dist/esm/tests/vectors/protocol-definitions/thread-role.json +2 -6
- package/dist/types/generated/precompiled-validators.d.ts +82 -64
- package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
- package/dist/types/src/core/dwn-error.d.ts +27 -3
- package/dist/types/src/core/dwn-error.d.ts.map +1 -1
- package/dist/types/src/core/message-reply.d.ts +1 -1
- package/dist/types/src/core/message.d.ts +3 -3
- package/dist/types/src/core/message.d.ts.map +1 -1
- package/dist/types/src/core/messages-grant-authorization.d.ts +4 -4
- package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -1
- package/dist/types/src/core/protocol-authorization.d.ts +43 -2
- package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
- package/dist/types/src/core/records-grant-authorization.d.ts +2 -2
- package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -1
- package/dist/types/src/core/resumable-task-manager.d.ts +1 -0
- package/dist/types/src/core/resumable-task-manager.d.ts.map +1 -1
- package/dist/types/src/dwn.d.ts +8 -8
- package/dist/types/src/dwn.d.ts.map +1 -1
- package/dist/types/src/enums/dwn-interface-method.d.ts +5 -3
- package/dist/types/src/enums/dwn-interface-method.d.ts.map +1 -1
- package/dist/types/src/event-stream/event-emitter-stream.d.ts.map +1 -0
- package/dist/types/src/handlers/messages-sync.d.ts +21 -0
- package/dist/types/src/handlers/messages-sync.d.ts.map +1 -0
- package/dist/types/src/handlers/protocols-configure.d.ts +24 -4
- package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
- package/dist/types/src/handlers/protocols-query.d.ts.map +1 -1
- package/dist/types/src/handlers/records-count.d.ts +43 -0
- package/dist/types/src/handlers/records-count.d.ts.map +1 -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-write.d.ts +5 -5
- package/dist/types/src/handlers/records-write.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +72 -37
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/interfaces/messages-read.d.ts +2 -2
- package/dist/types/src/interfaces/messages-read.d.ts.map +1 -1
- package/dist/types/src/interfaces/messages-subscribe.d.ts +2 -2
- package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -1
- package/dist/types/src/interfaces/messages-sync.d.ts +16 -0
- package/dist/types/src/interfaces/messages-sync.d.ts.map +1 -0
- package/dist/types/src/interfaces/protocols-configure.d.ts +22 -2
- 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 +27 -0
- package/dist/types/src/interfaces/records-count.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-delete.d.ts +2 -2
- package/dist/types/src/interfaces/records-delete.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-query.d.ts +2 -2
- package/dist/types/src/interfaces/records-query.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-read.d.ts +4 -2
- package/dist/types/src/interfaces/records-read.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-subscribe.d.ts +2 -2
- package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-write.d.ts +37 -15
- 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/jose/algorithms/signing/signature-algorithms.d.ts +5 -1
- package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts.map +1 -1
- package/dist/types/src/jose/jws/general/builder.d.ts +3 -3
- package/dist/types/src/jose/jws/general/builder.d.ts.map +1 -1
- package/dist/types/src/protocols/permission-grant.d.ts +11 -0
- package/dist/types/src/protocols/permission-grant.d.ts.map +1 -1
- package/dist/types/src/protocols/permission-request.d.ts +11 -0
- package/dist/types/src/protocols/permission-request.d.ts.map +1 -1
- package/dist/types/src/protocols/permissions.d.ts +4 -4
- package/dist/types/src/protocols/permissions.d.ts.map +1 -1
- package/dist/types/src/schema-validator.d.ts +1 -1
- package/dist/types/src/schema-validator.d.ts.map +1 -1
- package/dist/types/src/smt/smt-store-level.d.ts +32 -0
- package/dist/types/src/smt/smt-store-level.d.ts.map +1 -0
- package/dist/types/src/smt/smt-store-memory.d.ts +22 -0
- package/dist/types/src/smt/smt-store-memory.d.ts.map +1 -0
- package/dist/types/src/smt/smt-utils.d.ts +58 -0
- package/dist/types/src/smt/smt-utils.d.ts.map +1 -0
- package/dist/types/src/smt/sparse-merkle-tree.d.ts +124 -0
- package/dist/types/src/smt/sparse-merkle-tree.d.ts.map +1 -0
- package/dist/types/src/state-index/state-index-level.d.ts +83 -0
- package/dist/types/src/state-index/state-index-level.d.ts.map +1 -0
- package/dist/types/src/store/data-store-level.d.ts +1 -2
- package/dist/types/src/store/data-store-level.d.ts.map +1 -1
- package/dist/types/src/store/index-level.d.ts +98 -2
- package/dist/types/src/store/index-level.d.ts.map +1 -1
- package/dist/types/src/store/level-wrapper.d.ts.map +1 -1
- package/dist/types/src/store/message-store-level.d.ts +5 -0
- package/dist/types/src/store/message-store-level.d.ts.map +1 -1
- package/dist/types/src/store/storage-controller.d.ts +7 -7
- package/dist/types/src/store/storage-controller.d.ts.map +1 -1
- package/dist/types/src/types/data-store.d.ts +2 -3
- package/dist/types/src/types/data-store.d.ts.map +1 -1
- package/dist/types/src/types/encryption-types.d.ts +48 -0
- package/dist/types/src/types/encryption-types.d.ts.map +1 -0
- package/dist/types/src/types/jose-types.d.ts +9 -40
- package/dist/types/src/types/jose-types.d.ts.map +1 -1
- package/dist/types/src/types/message-store.d.ts +5 -0
- package/dist/types/src/types/message-store.d.ts.map +1 -1
- package/dist/types/src/types/message-types.d.ts +19 -0
- package/dist/types/src/types/message-types.d.ts.map +1 -1
- package/dist/types/src/types/messages-types.d.ts +16 -11
- package/dist/types/src/types/messages-types.d.ts.map +1 -1
- package/dist/types/src/types/method-handler.d.ts +1 -2
- package/dist/types/src/types/method-handler.d.ts.map +1 -1
- package/dist/types/src/types/permission-types.d.ts +2 -2
- package/dist/types/src/types/permission-types.d.ts.map +1 -1
- package/dist/types/src/types/protocols-types.d.ts +49 -5
- package/dist/types/src/types/protocols-types.d.ts.map +1 -1
- package/dist/types/src/types/records-types.d.ts +23 -7
- package/dist/types/src/types/records-types.d.ts.map +1 -1
- package/dist/types/src/types/signer.d.ts +1 -1
- package/dist/types/src/types/signer.d.ts.map +1 -1
- package/dist/types/src/types/smt-types.d.ts +81 -0
- package/dist/types/src/types/smt-types.d.ts.map +1 -0
- package/dist/types/src/types/state-index.d.ts +90 -0
- package/dist/types/src/types/state-index.d.ts.map +1 -0
- package/dist/types/src/utils/cid.d.ts +1 -2
- package/dist/types/src/utils/cid.d.ts.map +1 -1
- package/dist/types/src/utils/data-stream.d.ts +14 -7
- package/dist/types/src/utils/data-stream.d.ts.map +1 -1
- package/dist/types/src/utils/encryption.d.ts +2 -3
- package/dist/types/src/utils/encryption.d.ts.map +1 -1
- package/dist/types/src/utils/hd-key.d.ts +4 -4
- package/dist/types/src/utils/hd-key.d.ts.map +1 -1
- package/dist/types/src/utils/jws.d.ts +7 -7
- package/dist/types/src/utils/jws.d.ts.map +1 -1
- package/dist/types/src/utils/private-key-signer.d.ts +4 -4
- package/dist/types/src/utils/private-key-signer.d.ts.map +1 -1
- package/dist/types/src/utils/protocols.d.ts +46 -3
- package/dist/types/src/utils/protocols.d.ts.map +1 -1
- package/dist/types/src/utils/records.d.ts +33 -6
- package/dist/types/src/utils/records.d.ts.map +1 -1
- package/dist/types/src/utils/secp256k1.d.ts +11 -11
- package/dist/types/src/utils/secp256k1.d.ts.map +1 -1
- package/dist/types/src/utils/secp256r1.d.ts +8 -8
- package/dist/types/src/utils/secp256r1.d.ts.map +1 -1
- package/dist/types/src/utils/time.d.ts +1 -1
- package/dist/types/tests/dwn.spec.d.ts.map +1 -1
- package/dist/types/tests/event-stream/event-emitter-stream.spec.d.ts.map +1 -0
- package/dist/types/tests/event-stream/event-stream.spec.d.ts.map +1 -0
- 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 +5 -0
- package/dist/types/tests/features/protocol-composition.spec.d.ts.map +1 -0
- 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-prune.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-read.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/messages-sync.spec.d.ts +2 -0
- package/dist/types/tests/handlers/messages-sync.spec.d.ts.map +1 -0
- 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 +2 -0
- package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -0
- 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/protocols/permission-grant.spec.d.ts +2 -0
- package/dist/types/tests/protocols/permission-grant.spec.d.ts.map +1 -0
- 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/smt/smt-store-level.spec.d.ts +2 -0
- package/dist/types/tests/smt/smt-store-level.spec.d.ts.map +1 -0
- package/dist/types/tests/smt/sparse-merkle-tree.spec.d.ts +2 -0
- package/dist/types/tests/smt/sparse-merkle-tree.spec.d.ts.map +1 -0
- package/dist/types/tests/state-index/state-index-level.spec.d.ts +2 -0
- package/dist/types/tests/state-index/state-index-level.spec.d.ts.map +1 -0
- package/dist/types/tests/store/blockstore-level.spec.d.ts +2 -0
- package/dist/types/tests/store/blockstore-level.spec.d.ts.map +1 -0
- package/dist/types/tests/store/message-store.spec.d.ts.map +1 -1
- package/dist/types/tests/test-stores.d.ts +4 -4
- package/dist/types/tests/test-stores.d.ts.map +1 -1
- package/dist/types/tests/test-suite.d.ts +2 -2
- package/dist/types/tests/test-suite.d.ts.map +1 -1
- package/dist/types/tests/utils/encryption-callbacks.spec.d.ts +2 -0
- package/dist/types/tests/utils/encryption-callbacks.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/test-data-generator.d.ts +31 -28
- package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
- package/dist/types/tests/validation/json-schemas/records/records-read.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/records/records-read.spec.d.ts.map +1 -0
- package/package.json +26 -45
- package/src/core/dwn-error.ts +27 -3
- package/src/core/message-reply.ts +1 -1
- package/src/core/message.ts +5 -5
- package/src/core/messages-grant-authorization.ts +22 -8
- package/src/core/protocol-authorization.ts +345 -68
- package/src/core/records-grant-authorization.ts +2 -2
- package/src/core/resumable-task-manager.ts +4 -5
- package/src/dwn.ts +25 -20
- package/src/enums/dwn-interface-method.ts +5 -3
- package/src/handlers/messages-subscribe.ts +1 -1
- package/src/handlers/messages-sync.ts +129 -0
- package/src/handlers/protocols-configure.ts +195 -17
- package/src/handlers/protocols-query.ts +7 -5
- package/src/handlers/records-count.ts +184 -0
- package/src/handlers/records-query.ts +4 -0
- package/src/handlers/records-read.ts +4 -8
- package/src/handlers/records-write.ts +20 -21
- package/src/index.ts +74 -37
- package/src/interfaces/messages-read.ts +6 -5
- package/src/interfaces/messages-subscribe.ts +7 -6
- package/src/interfaces/messages-sync.ts +59 -0
- package/src/interfaces/protocols-configure.ts +211 -33
- package/src/interfaces/protocols-query.ts +7 -6
- package/src/interfaces/records-count.ts +106 -0
- package/src/interfaces/records-delete.ts +2 -2
- package/src/interfaces/records-query.ts +2 -2
- package/src/interfaces/records-read.ts +26 -3
- package/src/interfaces/records-subscribe.ts +2 -2
- package/src/interfaces/records-write.ts +115 -46
- package/src/jose/algorithms/signing/ed25519.ts +13 -12
- package/src/jose/algorithms/signing/signature-algorithms.ts +6 -1
- package/src/jose/jws/general/builder.ts +3 -3
- package/src/jose/jws/general/verifier.ts +3 -3
- package/src/protocols/permission-grant.ts +51 -0
- package/src/protocols/permission-request.ts +37 -0
- package/src/protocols/permissions.ts +5 -5
- package/src/schema-validator.ts +11 -3
- package/src/smt/smt-store-level.ts +143 -0
- package/src/smt/smt-store-memory.ts +53 -0
- package/src/smt/smt-utils.ts +149 -0
- package/src/smt/sparse-merkle-tree.ts +698 -0
- package/src/state-index/state-index-level.ts +241 -0
- package/src/store/data-store-level.ts +8 -7
- package/src/store/index-level.ts +415 -19
- package/src/store/level-wrapper.ts +1 -1
- package/src/store/message-store-level.ts +62 -0
- package/src/store/storage-controller.ts +21 -19
- package/src/types/data-store.ts +2 -4
- package/src/types/encryption-types.ts +52 -0
- package/src/types/jose-types.ts +10 -42
- package/src/types/message-store.ts +11 -0
- package/src/types/message-types.ts +21 -0
- package/src/types/messages-types.ts +21 -15
- package/src/types/method-handler.ts +1 -2
- package/src/types/permission-types.ts +2 -2
- package/src/types/protocols-types.ts +55 -6
- package/src/types/records-types.ts +26 -7
- package/src/types/signer.ts +1 -1
- package/src/types/smt-types.ts +95 -0
- package/src/types/state-index.ts +100 -0
- package/src/utils/cid.ts +3 -4
- package/src/utils/data-stream.ts +75 -38
- package/src/utils/encryption.ts +24 -39
- package/src/utils/hd-key.ts +6 -6
- package/src/utils/jws.ts +9 -9
- package/src/utils/private-key-signer.ts +9 -8
- package/src/utils/protocols.ts +132 -6
- package/src/utils/records.ts +118 -29
- package/src/utils/secp256k1.ts +23 -21
- package/src/utils/secp256r1.ts +17 -15
- package/src/utils/time.ts +1 -1
- package/src/utils/url.ts +1 -1
- package/dist/cjs/index.js +0 -36749
- package/dist/cjs/package.json +0 -1
- package/dist/esm/src/event-log/event-emitter-stream.js.map +0 -1
- package/dist/esm/src/event-log/event-log-level.js +0 -63
- package/dist/esm/src/event-log/event-log-level.js.map +0 -1
- package/dist/esm/src/handlers/messages-query.js +0 -71
- package/dist/esm/src/handlers/messages-query.js.map +0 -1
- package/dist/esm/src/interfaces/messages-query.js.map +0 -1
- package/dist/esm/src/types/event-log.js +0 -2
- package/dist/esm/src/types/event-log.js.map +0 -1
- package/dist/esm/tests/event-log/event-emitter-stream.spec.js.map +0 -1
- package/dist/esm/tests/event-log/event-log-level.spec.js +0 -44
- package/dist/esm/tests/event-log/event-log-level.spec.js.map +0 -1
- package/dist/esm/tests/event-log/event-log.spec.js +0 -236
- package/dist/esm/tests/event-log/event-log.spec.js.map +0 -1
- package/dist/esm/tests/event-log/event-stream.spec.js.map +0 -1
- package/dist/esm/tests/handlers/messages-query.spec.js +0 -349
- package/dist/esm/tests/handlers/messages-query.spec.js.map +0 -1
- package/dist/esm/tests/interfaces/messagess-query.spec.js +0 -127
- package/dist/esm/tests/interfaces/messagess-query.spec.js.map +0 -1
- package/dist/esm/tests/scenarios/messages-query.spec.js +0 -395
- package/dist/esm/tests/scenarios/messages-query.spec.js.map +0 -1
- package/dist/types/src/event-log/event-emitter-stream.d.ts.map +0 -1
- package/dist/types/src/event-log/event-log-level.d.ts +0 -35
- package/dist/types/src/event-log/event-log-level.d.ts.map +0 -1
- package/dist/types/src/handlers/messages-query.d.ts +0 -17
- package/dist/types/src/handlers/messages-query.d.ts.map +0 -1
- package/dist/types/src/interfaces/messages-query.d.ts +0 -16
- package/dist/types/src/interfaces/messages-query.d.ts.map +0 -1
- package/dist/types/src/types/event-log.d.ts +0 -52
- package/dist/types/src/types/event-log.d.ts.map +0 -1
- package/dist/types/tests/event-log/event-emitter-stream.spec.d.ts.map +0 -1
- package/dist/types/tests/event-log/event-log-level.spec.d.ts +0 -2
- package/dist/types/tests/event-log/event-log-level.spec.d.ts.map +0 -1
- package/dist/types/tests/event-log/event-log.spec.d.ts +0 -2
- package/dist/types/tests/event-log/event-log.spec.d.ts.map +0 -1
- package/dist/types/tests/event-log/event-stream.spec.d.ts.map +0 -1
- package/dist/types/tests/handlers/messages-query.spec.d.ts +0 -2
- package/dist/types/tests/handlers/messages-query.spec.d.ts.map +0 -1
- package/dist/types/tests/interfaces/messagess-query.spec.d.ts +0 -2
- package/dist/types/tests/interfaces/messagess-query.spec.d.ts.map +0 -1
- package/dist/types/tests/scenarios/messages-query.spec.d.ts +0 -2
- package/dist/types/tests/scenarios/messages-query.spec.d.ts.map +0 -1
- package/src/event-log/event-log-level.ts +0 -72
- package/src/handlers/messages-query.ts +0 -67
- package/src/interfaces/messages-query.ts +0 -60
- package/src/types/event-log.ts +0 -52
- /package/dist/esm/src/{event-log → event-stream}/event-emitter-stream.js +0 -0
- /package/dist/types/src/{event-log → event-stream}/event-emitter-stream.d.ts +0 -0
- /package/dist/types/tests/{event-log → event-stream}/event-emitter-stream.spec.d.ts +0 -0
- /package/dist/types/tests/{event-log → event-stream}/event-stream.spec.d.ts +0 -0
- /package/src/{event-log → event-stream}/event-emitter-stream.ts +0 -0
package/README.md
CHANGED
|
@@ -1,352 +1,103 @@
|
|
|
1
|
-
|
|
2
|
-
# Decentralized Web Node (DWN) SDK <!-- omit in toc -->
|
|
1
|
+
# Decentralized Web Node (DWN) SDK
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
[](https://codecov.io/github/enboxorg/enbox/dwn-sdk-js)
|
|
6
|
-
[](https://github.com/enboxorg/enbox/dwn-sdk-js/actions/workflows/npm-publish-unstable.yml)
|
|
7
|
-
[](https://github.com/enboxorg/enbox/dwn-sdk-js/blob/main/LICENSE)
|
|
8
|
-
[](https://discord.com/channels/937858703112155166/1068273971432280196)
|
|
3
|
+
> **Research Preview** — Enbox is under active development. APIs may change without notice.
|
|
9
4
|
|
|
5
|
+
[](https://github.com/enboxorg/enbox/actions/workflows/ci.yml)
|
|
10
6
|
|
|
11
|
-
|
|
12
|
-
- [Installation](#installation)
|
|
13
|
-
- [Additional Steps](#additional-steps)
|
|
14
|
-
- [Node.js \<= 18](#nodejs--18)
|
|
15
|
-
- [React Native](#react-native)
|
|
16
|
-
- [Usage in Browser:](#usage-in-browser)
|
|
17
|
-
- [Vanilla HTML / JS](#vanilla-html--js)
|
|
18
|
-
- [Webpack \>= 5](#webpack--5)
|
|
19
|
-
- [Vite](#vite)
|
|
20
|
-
- [esbuild](#esbuild)
|
|
21
|
-
- [Usage](#usage)
|
|
22
|
-
- [Release/Build Process](#releasebuild-process)
|
|
23
|
-
- [Stable Build](#stable-build)
|
|
24
|
-
- [Unstable Build](#unstable-build)
|
|
25
|
-
- [Some projects that use this library:](#some-projects-that-use-this-library)
|
|
26
|
-
- [Architecture](#architecture)
|
|
27
|
-
- [Project Resources](#project-resources)
|
|
7
|
+
A TypeScript implementation of [Decentralized Web Nodes](https://identity.foundation/decentralized-web-node/spec/) — protocol-driven personal datastores that users control.
|
|
28
8
|
|
|
29
|
-
##
|
|
9
|
+
## Overview
|
|
30
10
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
### To get started:
|
|
34
|
-
1. Read the [contributing guide](https://github.com/enboxorg/enbox/dwn-sdk-js/blob/main/CONTRIBUTING.md).
|
|
35
|
-
2. Read the [code of conduct](https://github.com/enboxorg/enbox/dwn-sdk-js/blob/main/CODE_OF_CONDUCT.md).
|
|
36
|
-
3. Choose a task from this project's Hacktoberfest issues in our [Project Hub](https://github.com/enboxorg/enbox/dwn-sdk-js/issues/806) and follow the instructions. Each issue has the 🏷️ `hacktoberfest` label.
|
|
37
|
-
|
|
38
|
-
Have questions? Connecting with us in our [Discord community](https://discord.gg/tbd) in the `#hacktoberfest` project channel.
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## Introduction
|
|
43
|
-
|
|
44
|
-
This repository contains a reference implementation of Decentralized Web Node (DWN) as per the [specification](https://identity.foundation/decentralized-web-node/spec/). This specification is in a draft state and very much so a WIP. For the foreseeable future, a lot of the work on DWN will be split across this repo and the [repo that houses the specification](https://github.com/decentralized-identity/decentralized-web-node). The current implementation does not include all interfaces described in the DWN spec, but is enough to begin building test applications.
|
|
45
|
-
|
|
46
|
-
This project is used as a dependency by several other projects.
|
|
47
|
-
|
|
48
|
-
Proposals and issues for the specification itself should be submitted as pull requests to the [spec repo](https://github.com/decentralized-identity/decentralized-web-node).
|
|
49
|
-
|
|
50
|
-
## Running online environment
|
|
51
|
-
|
|
52
|
-
Interested in contributing instantly? You can make your updates directly without cloning in the running CodeSandbox environment.
|
|
53
|
-
|
|
54
|
-
[](https://codesandbox.io/p/github/enboxorg/enbox/dwn-sdk-js/main)
|
|
11
|
+
This package is the core DWN engine used by the rest of the Enbox stack. It handles message processing, protocol authorization, record storage, and encryption. Most applications should use [`@enbox/api`](../api/) rather than this package directly.
|
|
55
12
|
|
|
56
13
|
## Installation
|
|
57
14
|
|
|
58
|
-
If you are interested in using DWNs and web5 in your web app, you probably want to look at enbox, instead of this repository. Head on over here: https://github.com/enboxorg/enbox/enbox.
|
|
59
|
-
|
|
60
|
-
For advanced users wishing to use this repo directly:
|
|
61
|
-
|
|
62
15
|
```bash
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
## Additional Steps
|
|
67
|
-
|
|
68
|
-
This package has dependency on [`@noble/ed25519`](https://github.com/paulmillr/noble-ed25519#usage) and [`@noble/secp256k1`](https://github.com/paulmillr/noble-secp256k1#usage) v2, additional steps are needed for some environments:
|
|
69
|
-
|
|
70
|
-
### Node.js <= 18
|
|
71
|
-
|
|
72
|
-
```js
|
|
73
|
-
// node.js 18 and earlier, needs globalThis.crypto polyfill
|
|
74
|
-
import { webcrypto } from "node:crypto";
|
|
75
|
-
// @ts-ignore
|
|
76
|
-
if (!globalThis.crypto) globalThis.crypto = webcrypto;
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### React Native
|
|
80
|
-
Usage of DWN SDK in react native requires a bit of set up at the moment. To simplify, we've [published an npm package](https://www.npmjs.com/package/@enbox/web5-react-native-polyfills) that can be used to set everything up. Follow the instructions to get started.
|
|
81
|
-
|
|
82
|
-
### Usage in Browser:
|
|
83
|
-
|
|
84
|
-
`dwn-sdk-js` requires 2 polyfills: `crypto` and `stream`. we recommend using `crypto-browserify` and `stream-browserify`. Both of these polyfills can be installed using npm. e.g. `npm install --save crypto-browserify stream-browserify`
|
|
85
|
-
|
|
86
|
-
#### Vanilla HTML / JS
|
|
87
|
-
|
|
88
|
-
DWN SDK includes a polyfilled distribution that can imported in a `module` script tag. e.g.
|
|
89
|
-
|
|
90
|
-
```html
|
|
91
|
-
<!DOCTYPE html>
|
|
92
|
-
<html lang="en">
|
|
93
|
-
<body>
|
|
94
|
-
<script type="module">
|
|
95
|
-
// Import necessary modules from external sources using ES6 modules.
|
|
96
|
-
import { Dwn, DataStream, DidKeyResolver, Jws, RecordsWrite } from 'https://cdn.jsdelivr.net/npm/@enbox/dwn-sdk-js@0.1.1/dist/bundles/dwn.js'
|
|
97
|
-
import { MessageStoreLevel, DataStoreLevel, EventLogLevel } from 'https://cdn.jsdelivr.net/npm/@enbox/dwn-sdk-js@0.1.1/dist/bundles/level-stores.js'
|
|
98
|
-
|
|
99
|
-
// Create instances of various components from the imported modules.
|
|
100
|
-
const messageStore = new MessageStoreLevel();
|
|
101
|
-
const dataStore = new DataStoreLevel();
|
|
102
|
-
const eventLog = new EventLogLevel();
|
|
103
|
-
const dwn = await Dwn.create({ messageStore, dataStore, eventLog });
|
|
104
|
-
|
|
105
|
-
// Generate a did:key DID (Decentralized Identifier).
|
|
106
|
-
const didKey = await TestDataGenerator.generateDidKeyPersona();
|
|
107
|
-
|
|
108
|
-
// Create some data to be stored.
|
|
109
|
-
const encoder = new TextEncoder();
|
|
110
|
-
const data = encoder.encode('Hello, World!');
|
|
111
|
-
|
|
112
|
-
// Create a RecordsWrite message to be stored in DWN.
|
|
113
|
-
const recordsWrite = await RecordsWrite.create({
|
|
114
|
-
data,
|
|
115
|
-
dataFormat: 'application/json',
|
|
116
|
-
published: true,
|
|
117
|
-
schema: 'yeeter/post', // Specify a schema for the data.
|
|
118
|
-
signer: Jws.createSigner(didKey) // Sign the data using the generated DID key.
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
// Create a readable stream from the data to be stored.
|
|
122
|
-
const dataStream = DataStream.fromBytes(data);
|
|
123
|
-
// Process the RecordsWrite message using the DWN instance.
|
|
124
|
-
const result = await dwn.processMessage(didKey.did, recordsWrite.message, { dataStream });
|
|
125
|
-
|
|
126
|
-
// Log the processing result status and perform an assertion.
|
|
127
|
-
console.log(result.status);
|
|
128
|
-
console.assert(result.status.code === 202)
|
|
129
|
-
|
|
130
|
-
// Close the DWN instance, freeing up resources.
|
|
131
|
-
await dwn.close()
|
|
132
|
-
|
|
133
|
-
</script>
|
|
134
|
-
</body>
|
|
135
|
-
|
|
136
|
-
</html>
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
#### Webpack >= 5
|
|
140
|
-
|
|
141
|
-
Add the following to the top level of your webpack config (`webpack.config.js`)
|
|
142
|
-
|
|
143
|
-
```js
|
|
144
|
-
resolve: {
|
|
145
|
-
fallback: {
|
|
146
|
-
stream: require.resolve("stream-browserify"),
|
|
147
|
-
crypto: require.resolve("crypto-browserify")
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
#### Vite
|
|
153
|
-
Add the following to the top level of your vite config (`vite.config.js`)
|
|
154
|
-
|
|
155
|
-
```js
|
|
156
|
-
define: {
|
|
157
|
-
global: 'globalThis'
|
|
158
|
-
},
|
|
159
|
-
resolve: {
|
|
160
|
-
alias: {
|
|
161
|
-
'crypto': 'crypto-browserify',
|
|
162
|
-
'stream': 'stream-browserify'
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
#### esbuild
|
|
168
|
-
We recommend using `node-stdlib-browser` instead of `crypto-browserify` and `stream-browserify` individually. Example usage:
|
|
169
|
-
|
|
170
|
-
```js
|
|
171
|
-
import esbuild from 'esbuild'
|
|
172
|
-
import stdLibBrowser from 'node-stdlib-browser'
|
|
173
|
-
import polyfillProviderPlugin from 'node-stdlib-browser/helpers/esbuild/plugin'
|
|
174
|
-
|
|
175
|
-
import { createRequire } from 'node:module';
|
|
176
|
-
|
|
177
|
-
const require = createRequire(import.meta.url);
|
|
178
|
-
|
|
179
|
-
// Build the project using esbuild.
|
|
180
|
-
esbuild.build({
|
|
181
|
-
entryPoints: ['dwn-sdk-test.js'],
|
|
182
|
-
platform: 'browser',
|
|
183
|
-
bundle: true,
|
|
184
|
-
format: 'esm',
|
|
185
|
-
outfile: 'dist/dwn-sdk-test.js',
|
|
186
|
-
|
|
187
|
-
// Inject the specified shim for Node.js standard library browser compatibility.
|
|
188
|
-
inject : [require.resolve('node-stdlib-browser/helpers/esbuild/shim')],
|
|
189
|
-
// Use the polyfillProviderPlugin to provide polyfills for Node.js standard library.
|
|
190
|
-
plugins : [polyfillProviderPlugin(stdLibBrowser)],
|
|
191
|
-
// Define 'global' as 'globalThis' to ensure compatibility with global objects.
|
|
192
|
-
define : {
|
|
193
|
-
'global': 'globalThis'
|
|
194
|
-
}
|
|
195
|
-
})
|
|
16
|
+
bun add @enbox/dwn-sdk-js
|
|
196
17
|
```
|
|
197
18
|
|
|
198
19
|
## Usage
|
|
199
20
|
|
|
200
|
-
[API docs](https://enboxorg/enbox.github.io/dwn-sdk-js/)
|
|
201
|
-
|
|
202
21
|
```ts
|
|
22
|
+
import { Dwn, DataStream, Jws, RecordsWrite } from '@enbox/dwn-sdk-js';
|
|
23
|
+
import { DataStoreLevel, MessageStoreLevel, StateIndexLevel } from '@enbox/dwn-sdk-js';
|
|
203
24
|
|
|
204
|
-
import { Dwn, DataStream, DidKeyResolver, Jws, RecordsWrite } from '@enbox/dwn-sdk-js';
|
|
205
|
-
import { DataStoreLevel, EventLogLevel, MessageStoreLevel } from '@enbox/dwn-sdk-js/stores';
|
|
206
|
-
|
|
207
|
-
// Initialize the required stores and components for the DWN SDK.
|
|
208
25
|
const messageStore = new MessageStoreLevel();
|
|
209
26
|
const dataStore = new DataStoreLevel();
|
|
210
|
-
const
|
|
211
|
-
const dwn = await Dwn.create({ messageStore, dataStore,
|
|
27
|
+
const stateIndex = new StateIndexLevel();
|
|
28
|
+
const dwn = await Dwn.create({ messageStore, dataStore, stateIndex });
|
|
212
29
|
|
|
213
|
-
//
|
|
214
|
-
const
|
|
215
|
-
|
|
216
|
-
// Create some data to be stored.
|
|
217
|
-
const encoder = new TextEncoder();
|
|
218
|
-
const data = encoder.encode('Hello, World!');
|
|
219
|
-
|
|
220
|
-
// Create a RecordsWrite message to be stored in the DWN.
|
|
30
|
+
// Create and process a RecordsWrite message
|
|
31
|
+
const data = new TextEncoder().encode('Hello, World!');
|
|
221
32
|
const recordsWrite = await RecordsWrite.create({
|
|
222
33
|
data,
|
|
223
|
-
dataFormat: 'application/json',
|
|
224
|
-
published: true,
|
|
225
|
-
schema: '
|
|
226
|
-
signer: Jws.createSigner(
|
|
34
|
+
dataFormat : 'application/json',
|
|
35
|
+
published : true,
|
|
36
|
+
schema : 'example/post',
|
|
37
|
+
signer : Jws.createSigner(persona),
|
|
227
38
|
});
|
|
228
39
|
|
|
229
|
-
// Create a readable stream from the data to be stored.
|
|
230
40
|
const dataStream = DataStream.fromBytes(data);
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
// Log the processing result status.
|
|
234
|
-
console.log(result.status);
|
|
41
|
+
const result = await dwn.processMessage(persona.did, recordsWrite.message, { dataStream });
|
|
42
|
+
console.log(result.status); // { code: 202, detail: 'Accepted' }
|
|
235
43
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
With a web wallet installed:
|
|
239
|
-
|
|
240
|
-
```javascript
|
|
241
|
-
const result = await window.web5.dwn.processMessage({
|
|
242
|
-
method: "RecordsQuery",
|
|
243
|
-
message: {
|
|
244
|
-
filter: {
|
|
245
|
-
schema: "http://some-schema-registry.org/todo",
|
|
246
|
-
},
|
|
247
|
-
dateSort: "createdAscending",
|
|
248
|
-
},
|
|
249
|
-
});
|
|
44
|
+
await dwn.close();
|
|
250
45
|
```
|
|
251
46
|
|
|
252
47
|
### Custom Tenant Gating
|
|
253
|
-
|
|
48
|
+
|
|
49
|
+
By default all DIDs are allowed as tenants. Provide a custom `TenantGate` to restrict access:
|
|
50
|
+
|
|
254
51
|
```ts
|
|
255
|
-
import { ActiveTenantCheckResult, Dwn, TenantGate
|
|
52
|
+
import { ActiveTenantCheckResult, Dwn, TenantGate } from '@enbox/dwn-sdk-js';
|
|
256
53
|
|
|
257
|
-
// Define a custom implementation of the TenantGate interface.
|
|
258
54
|
class CustomTenantGate implements TenantGate {
|
|
259
|
-
public async isActiveTenant(did): Promise<ActiveTenantCheckResult> {
|
|
260
|
-
//
|
|
55
|
+
public async isActiveTenant(did: string): Promise<ActiveTenantCheckResult> {
|
|
56
|
+
// custom logic
|
|
261
57
|
}
|
|
262
58
|
}
|
|
263
59
|
|
|
264
|
-
|
|
265
|
-
const messageStore = new MessageStoreLevel();
|
|
266
|
-
const dataStore = new DataStoreLevel();
|
|
267
|
-
const eventLog = new EventLogLevel();
|
|
268
|
-
// Create an instance of the custom TenantGate.
|
|
269
|
-
const tenantGate = new CustomTenantGate();
|
|
270
|
-
// Create a DWN instance with configured stores, logs, and the custom TenantGate.
|
|
271
|
-
const dwn = await Dwn.create({ messageStore, dataStore, eventLog, tenantGate });
|
|
60
|
+
const dwn = await Dwn.create({ messageStore, dataStore, stateIndex, tenantGate: new CustomTenantGate() });
|
|
272
61
|
```
|
|
273
62
|
|
|
274
|
-
### Custom
|
|
275
|
-
|
|
63
|
+
### Custom Signer
|
|
64
|
+
|
|
65
|
+
Use `PrivateKeySigner` if you have a key available, or implement the `Signer` interface to integrate with an external signing service, HSM, etc.:
|
|
276
66
|
|
|
277
67
|
```ts
|
|
278
|
-
|
|
68
|
+
import type { Signer } from '@enbox/dwn-sdk-js';
|
|
69
|
+
|
|
279
70
|
class CustomSigner implements Signer {
|
|
280
|
-
public keyId = 'did:example:alice#key1';
|
|
281
|
-
public algorithm = 'EdDSA';
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
... // custom signing logic
|
|
71
|
+
public keyId = 'did:example:alice#key1';
|
|
72
|
+
public algorithm = 'EdDSA';
|
|
73
|
+
public async sign(content: Uint8Array): Promise<Uint8Array> {
|
|
74
|
+
// custom signing logic
|
|
285
75
|
}
|
|
286
76
|
}
|
|
287
|
-
|
|
288
|
-
// Create an instance of the custom signer for authorization.
|
|
289
|
-
const signer = new CustomSigner();
|
|
290
|
-
|
|
291
|
-
// Define options for creating a RecordsWrite message.
|
|
292
|
-
const options: RecordsWriteOptions = {
|
|
293
|
-
...
|
|
294
|
-
signer // Use the custom signer for authorization.
|
|
295
|
-
};
|
|
296
|
-
|
|
297
|
-
// Create a RecordsWrite message with the specified options.
|
|
298
|
-
const recordsWrite = await RecordsWrite.create(options);
|
|
299
77
|
```
|
|
300
78
|
|
|
79
|
+
## Architecture
|
|
301
80
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
The DWN JS SDK releases builds to [npmjs.com](https://www.npmjs.com/package/@enbox/dwn-sdk-js). There are two build types: stable build and unstable build.
|
|
305
|
-
|
|
306
|
-
### Stable Build
|
|
307
|
-
|
|
308
|
-
This is triggered manually by:
|
|
309
|
-
|
|
310
|
-
1. Increment `version` in `package.json` in [Semantic Versioning (semver)](https://semver.org/) format.
|
|
311
|
-
2. Merge the change into `main` branch
|
|
312
|
-
3. Create a release from GitHub.
|
|
313
|
-
|
|
314
|
-
An official build with version matching the `package.json` will be published to [npmjs.com](https://www.npmjs.com/package/@enbox/dwn-sdk-js).
|
|
315
|
-
|
|
316
|
-
### Unstable Build
|
|
317
|
-
|
|
318
|
-
Every push to the `main` branch will automatically trigger an unstable build to [npmjs.com](https://www.npmjs.com/package/@enbox/dwn-sdk-js) for developers to experiment and test.
|
|
319
|
-
|
|
320
|
-
The version string contains the date as well as the commit hash of the last change.
|
|
321
|
-
|
|
322
|
-
An example version string:
|
|
323
|
-
|
|
324
|
-
`0.0.26-unstable-2023-03-16-36ec2ce`
|
|
81
|
+
<img src="./images/dwn-architecture.png" alt="DWN architecture diagram" width="700">
|
|
325
82
|
|
|
326
|
-
|
|
327
|
-
- `2023-03-16` indicates the date of March 16th 2023
|
|
328
|
-
- `36ec2ce` is the commit hash of the last change
|
|
83
|
+
> The diagram is a conceptual view; actual component names in source may differ.
|
|
329
84
|
|
|
330
|
-
##
|
|
85
|
+
## Development
|
|
331
86
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
- [Server side aggregator](https://github.com/enboxorg/enbox/dwn-server)
|
|
87
|
+
```bash
|
|
88
|
+
# Build
|
|
89
|
+
bun run build
|
|
336
90
|
|
|
337
|
-
|
|
91
|
+
# Test
|
|
92
|
+
bun run test:node
|
|
338
93
|
|
|
339
|
-
|
|
94
|
+
# Test with grep filter (from this package directory)
|
|
95
|
+
GREP="ProtocolsConfigure" bun run test:node-grep
|
|
340
96
|
|
|
341
|
-
|
|
97
|
+
# Lint
|
|
98
|
+
bun run lint
|
|
99
|
+
```
|
|
342
100
|
|
|
343
|
-
##
|
|
101
|
+
## License
|
|
344
102
|
|
|
345
|
-
|
|
346
|
-
| -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
|
|
347
|
-
| [CODEOWNERS](https://github.com/enboxorg/enbox/dwn-sdk-js/blob/main/CODEOWNERS) | Outlines the project lead(s) |
|
|
348
|
-
| [CODE_OF_CONDUCT.md](https://github.com/enboxorg/enbox/dwn-sdk-js/blob/main/CODE_OF_CONDUCT.md) | Expected behavior for project contributors, promoting a welcoming environment |
|
|
349
|
-
| [CONTRIBUTING.md](https://github.com/enboxorg/enbox/dwn-sdk-js/blob/main/CONTRIBUTING.md) | Developer guide to build, test, run, access CI, chat, discuss, file issues |
|
|
350
|
-
| [GOVERNANCE.md](https://github.com/enboxorg/enbox/dwn-sdk-js/blob/main/GOVERNANCE.md) | Project governance |
|
|
351
|
-
| [LICENSE](https://github.com/enboxorg/enbox/dwn-sdk-js/blob/main/LICENSE) | Apache License, Version 2.0 |
|
|
352
|
-
| [Q_AND_A.md](https://github.com/enboxorg/enbox/dwn-sdk-js/blob/main/Q_AND_A.md) | Questions and answers on DWN |
|
|
103
|
+
Apache-2.0
|