@web_of_trust/core 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/README.md +357 -0
  2. package/dist/adapters/authorization/InMemoryAuthorizationAdapter.d.ts +30 -0
  3. package/dist/adapters/authorization/InMemoryAuthorizationAdapter.d.ts.map +1 -0
  4. package/dist/adapters/crypto/WebCryptoAdapter.d.ts +30 -0
  5. package/dist/adapters/crypto/WebCryptoAdapter.d.ts.map +1 -0
  6. package/dist/adapters/crypto/index.d.ts +2 -0
  7. package/dist/adapters/crypto/index.d.ts.map +1 -0
  8. package/dist/adapters/discovery/HttpDiscoveryAdapter.d.ts +25 -0
  9. package/dist/adapters/discovery/HttpDiscoveryAdapter.d.ts.map +1 -0
  10. package/dist/adapters/discovery/InMemoryGraphCacheStore.d.ts +29 -0
  11. package/dist/adapters/discovery/InMemoryGraphCacheStore.d.ts.map +1 -0
  12. package/dist/adapters/discovery/InMemoryPublishStateStore.d.ts +13 -0
  13. package/dist/adapters/discovery/InMemoryPublishStateStore.d.ts.map +1 -0
  14. package/dist/adapters/discovery/OfflineFirstDiscoveryAdapter.d.ts +62 -0
  15. package/dist/adapters/discovery/OfflineFirstDiscoveryAdapter.d.ts.map +1 -0
  16. package/dist/adapters/index.d.ts +5 -0
  17. package/dist/adapters/index.d.ts.map +1 -0
  18. package/dist/adapters/interfaces/AuthorizationAdapter.d.ts +52 -0
  19. package/dist/adapters/interfaces/AuthorizationAdapter.d.ts.map +1 -0
  20. package/dist/adapters/interfaces/CryptoAdapter.d.ts +43 -0
  21. package/dist/adapters/interfaces/CryptoAdapter.d.ts.map +1 -0
  22. package/dist/adapters/interfaces/DiscoveryAdapter.d.ts +71 -0
  23. package/dist/adapters/interfaces/DiscoveryAdapter.d.ts.map +1 -0
  24. package/dist/adapters/interfaces/GraphCacheStore.d.ts +66 -0
  25. package/dist/adapters/interfaces/GraphCacheStore.d.ts.map +1 -0
  26. package/dist/adapters/interfaces/MessagingAdapter.d.ts +23 -0
  27. package/dist/adapters/interfaces/MessagingAdapter.d.ts.map +1 -0
  28. package/dist/adapters/interfaces/OutboxStore.d.ts +35 -0
  29. package/dist/adapters/interfaces/OutboxStore.d.ts.map +1 -0
  30. package/dist/adapters/interfaces/PublishStateStore.d.ts +23 -0
  31. package/dist/adapters/interfaces/PublishStateStore.d.ts.map +1 -0
  32. package/dist/adapters/interfaces/ReactiveStorageAdapter.d.ts +23 -0
  33. package/dist/adapters/interfaces/ReactiveStorageAdapter.d.ts.map +1 -0
  34. package/dist/adapters/interfaces/ReplicationAdapter.d.ts +57 -0
  35. package/dist/adapters/interfaces/ReplicationAdapter.d.ts.map +1 -0
  36. package/dist/adapters/interfaces/SpaceMetadataStorage.d.ts +46 -0
  37. package/dist/adapters/interfaces/SpaceMetadataStorage.d.ts.map +1 -0
  38. package/dist/adapters/interfaces/StorageAdapter.d.ts +32 -0
  39. package/dist/adapters/interfaces/StorageAdapter.d.ts.map +1 -0
  40. package/dist/adapters/interfaces/Subscribable.d.ts +22 -0
  41. package/dist/adapters/interfaces/Subscribable.d.ts.map +1 -0
  42. package/dist/adapters/interfaces/index.d.ts +12 -0
  43. package/dist/adapters/interfaces/index.d.ts.map +1 -0
  44. package/dist/adapters/messaging/AutomergeOutboxStore.d.ts +24 -0
  45. package/dist/adapters/messaging/AutomergeOutboxStore.d.ts.map +1 -0
  46. package/dist/adapters/messaging/InMemoryMessagingAdapter.d.ts +36 -0
  47. package/dist/adapters/messaging/InMemoryMessagingAdapter.d.ts.map +1 -0
  48. package/dist/adapters/messaging/InMemoryOutboxStore.d.ts +12 -0
  49. package/dist/adapters/messaging/InMemoryOutboxStore.d.ts.map +1 -0
  50. package/dist/adapters/messaging/OutboxMessagingAdapter.d.ts +61 -0
  51. package/dist/adapters/messaging/OutboxMessagingAdapter.d.ts.map +1 -0
  52. package/dist/adapters/messaging/TracedOutboxMessagingAdapter.d.ts +20 -0
  53. package/dist/adapters/messaging/TracedOutboxMessagingAdapter.d.ts.map +1 -0
  54. package/dist/adapters/messaging/WebSocketMessagingAdapter.d.ts +63 -0
  55. package/dist/adapters/messaging/WebSocketMessagingAdapter.d.ts.map +1 -0
  56. package/dist/adapters/messaging/index.d.ts +3 -0
  57. package/dist/adapters/messaging/index.d.ts.map +1 -0
  58. package/dist/adapters/storage/AutomergeSpaceMetadataStorage.d.ts +22 -0
  59. package/dist/adapters/storage/AutomergeSpaceMetadataStorage.d.ts.map +1 -0
  60. package/dist/adapters/storage/InMemoryCompactStore.d.ts +18 -0
  61. package/dist/adapters/storage/InMemoryCompactStore.d.ts.map +1 -0
  62. package/dist/adapters/storage/InMemorySpaceMetadataStorage.d.ts +17 -0
  63. package/dist/adapters/storage/InMemorySpaceMetadataStorage.d.ts.map +1 -0
  64. package/dist/adapters/storage/IndexedDBSpaceMetadataStorage.d.ts +15 -0
  65. package/dist/adapters/storage/IndexedDBSpaceMetadataStorage.d.ts.map +1 -0
  66. package/dist/adapters/storage/LocalStorageAdapter.d.ts +26 -0
  67. package/dist/adapters/storage/LocalStorageAdapter.d.ts.map +1 -0
  68. package/dist/adapters/storage/index.d.ts +2 -0
  69. package/dist/adapters/storage/index.d.ts.map +1 -0
  70. package/dist/crypto/capabilities.d.ts +80 -0
  71. package/dist/crypto/capabilities.d.ts.map +1 -0
  72. package/dist/crypto/did.d.ts +19 -0
  73. package/dist/crypto/did.d.ts.map +1 -0
  74. package/dist/crypto/encoding.d.ts +7 -0
  75. package/dist/crypto/encoding.d.ts.map +1 -0
  76. package/dist/crypto/envelope-auth.d.ts +30 -0
  77. package/dist/crypto/envelope-auth.d.ts.map +1 -0
  78. package/dist/crypto/index.d.ts +4 -0
  79. package/dist/crypto/index.d.ts.map +1 -0
  80. package/dist/crypto/jws.d.ts +26 -0
  81. package/dist/crypto/jws.d.ts.map +1 -0
  82. package/dist/identity/SeedStorage.d.ts +64 -0
  83. package/dist/identity/SeedStorage.d.ts.map +1 -0
  84. package/dist/identity/WotIdentity.d.ts +134 -0
  85. package/dist/identity/WotIdentity.d.ts.map +1 -0
  86. package/dist/identity/index.d.ts +3 -0
  87. package/dist/identity/index.d.ts.map +1 -0
  88. package/dist/index.d.ts +69 -0
  89. package/dist/index.d.ts.map +1 -0
  90. package/dist/index.js +6840 -0
  91. package/dist/services/AttestationDeliveryService.d.ts +61 -0
  92. package/dist/services/AttestationDeliveryService.d.ts.map +1 -0
  93. package/dist/services/EncryptedSyncService.d.ts +26 -0
  94. package/dist/services/EncryptedSyncService.d.ts.map +1 -0
  95. package/dist/services/GraphCacheService.d.ts +56 -0
  96. package/dist/services/GraphCacheService.d.ts.map +1 -0
  97. package/dist/services/GroupKeyService.d.ts +43 -0
  98. package/dist/services/GroupKeyService.d.ts.map +1 -0
  99. package/dist/services/ProfileService.d.ts +19 -0
  100. package/dist/services/ProfileService.d.ts.map +1 -0
  101. package/dist/services/VaultClient.d.ts +53 -0
  102. package/dist/services/VaultClient.d.ts.map +1 -0
  103. package/dist/services/VaultPushScheduler.d.ts +49 -0
  104. package/dist/services/VaultPushScheduler.d.ts.map +1 -0
  105. package/dist/services/index.d.ts +2 -0
  106. package/dist/services/index.d.ts.map +1 -0
  107. package/dist/storage/CompactStorageManager.d.ts +22 -0
  108. package/dist/storage/CompactStorageManager.d.ts.map +1 -0
  109. package/dist/storage/PersistenceMetrics.d.ts +141 -0
  110. package/dist/storage/PersistenceMetrics.d.ts.map +1 -0
  111. package/dist/storage/TraceLog.d.ts +85 -0
  112. package/dist/storage/TraceLog.d.ts.map +1 -0
  113. package/dist/storage/TracedCompactStorageManager.d.ts +12 -0
  114. package/dist/storage/TracedCompactStorageManager.d.ts.map +1 -0
  115. package/dist/types/attestation.d.ts +33 -0
  116. package/dist/types/attestation.d.ts.map +1 -0
  117. package/dist/types/contact.d.ts +25 -0
  118. package/dist/types/contact.d.ts.map +1 -0
  119. package/dist/types/identity.d.ts +28 -0
  120. package/dist/types/identity.d.ts.map +1 -0
  121. package/dist/types/index.d.ts +9 -0
  122. package/dist/types/index.d.ts.map +1 -0
  123. package/dist/types/messaging.d.ts +33 -0
  124. package/dist/types/messaging.d.ts.map +1 -0
  125. package/dist/types/proof.d.ts +12 -0
  126. package/dist/types/proof.d.ts.map +1 -0
  127. package/dist/types/resource-ref.d.ts +25 -0
  128. package/dist/types/resource-ref.d.ts.map +1 -0
  129. package/dist/types/space.d.ts +25 -0
  130. package/dist/types/space.d.ts.map +1 -0
  131. package/dist/types/verification.d.ts +49 -0
  132. package/dist/types/verification.d.ts.map +1 -0
  133. package/dist/verification/VerificationHelper.d.ts +75 -0
  134. package/dist/verification/VerificationHelper.d.ts.map +1 -0
  135. package/dist/verification/index.d.ts +2 -0
  136. package/dist/verification/index.d.ts.map +1 -0
  137. package/dist/wordlists/german-positive.d.ts +21 -0
  138. package/dist/wordlists/german-positive.d.ts.map +1 -0
  139. package/dist/wordlists/index.d.ts +2 -0
  140. package/dist/wordlists/index.d.ts.map +1 -0
  141. package/package.json +56 -0
@@ -0,0 +1,61 @@
1
+ import { MessagingAdapter } from '../interfaces/MessagingAdapter';
2
+ import { OutboxStore } from '../interfaces/OutboxStore';
3
+ import { MessageEnvelope, DeliveryReceipt, MessagingState, MessageType } from '../../types/messaging';
4
+ /**
5
+ * Offline-first wrapper for any MessagingAdapter.
6
+ *
7
+ * Decorator pattern (like OfflineFirstDiscoveryAdapter):
8
+ * - Wraps an inner MessagingAdapter
9
+ * - Persists unsent messages in an OutboxStore
10
+ * - Retries on reconnect via flushOutbox()
11
+ * - send() never throws for queued message types
12
+ *
13
+ * Usage:
14
+ * const ws = new WebSocketMessagingAdapter(url)
15
+ * const outboxStore = new EvoluOutboxStore(evolu)
16
+ * const messaging = new OutboxMessagingAdapter(ws, outboxStore)
17
+ */
18
+ export declare class OutboxMessagingAdapter implements MessagingAdapter {
19
+ private inner;
20
+ private outbox;
21
+ private flushing;
22
+ private skipTypes;
23
+ private sendTimeoutMs;
24
+ private reconnectIntervalMs;
25
+ private maxRetries;
26
+ private isOnline;
27
+ private reconnectTimer;
28
+ private myDid;
29
+ private unsubscribeStateChange;
30
+ constructor(inner: MessagingAdapter, outbox: OutboxStore, options?: {
31
+ skipTypes?: MessageType[];
32
+ sendTimeoutMs?: number;
33
+ /** Auto-reconnect interval in ms. Set to 0 to disable. Default: 10000 (10s). */
34
+ reconnectIntervalMs?: number;
35
+ /** Max retries before dropping a message. Default: 50. */
36
+ maxRetries?: number;
37
+ /** Optional online check. Default: always true. */
38
+ isOnline?: () => boolean;
39
+ });
40
+ connect(myDid: string): Promise<void>;
41
+ disconnect(): Promise<void>;
42
+ getState(): MessagingState;
43
+ send(envelope: MessageEnvelope): Promise<DeliveryReceipt>;
44
+ onMessage(callback: (envelope: MessageEnvelope) => void | Promise<void>): () => void;
45
+ onReceipt(callback: (receipt: DeliveryReceipt) => void): () => void;
46
+ registerTransport(did: string, transportAddress: string): Promise<void>;
47
+ resolveTransport(did: string): Promise<string | null>;
48
+ onStateChange(callback: (state: MessagingState) => void): () => void;
49
+ /**
50
+ * Retry all pending outbox messages.
51
+ * Called automatically on connect(). Can also be called manually.
52
+ * FIFO order. Individual failures don't abort the flush.
53
+ */
54
+ flushOutbox(): Promise<void>;
55
+ /** Expose outbox store for UI (pending count badge). */
56
+ getOutboxStore(): OutboxStore;
57
+ private _startAutoReconnect;
58
+ private _stopAutoReconnect;
59
+ private sendWithTimeout;
60
+ }
61
+ //# sourceMappingURL=OutboxMessagingAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutboxMessagingAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/messaging/OutboxMessagingAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACd,WAAW,EACZ,MAAM,uBAAuB,CAAA;AAE9B;;;;;;;;;;;;;GAaG;AACH,qBAAa,sBAAuB,YAAW,gBAAgB;IAY3D,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IAZhB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,sBAAsB,CAA4B;gBAGhD,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,WAAW,EAC3B,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,WAAW,EAAE,CAAA;QACzB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,gFAAgF;QAChF,mBAAmB,CAAC,EAAE,MAAM,CAAA;QAC5B,0DAA0D;QAC1D,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,mDAAmD;QACnD,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAA;KACzB;IAWG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,QAAQ,IAAI,cAAc;IAMpB,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAkC/D,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI;IAIpF,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI;IAM7D,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAM3D,aAAa,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI;IASpE;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BlC,wDAAwD;IACxD,cAAc,IAAI,WAAW;IAM7B,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,eAAe;CAgBxB"}
@@ -0,0 +1,20 @@
1
+ import { MessagingAdapter } from '../interfaces/MessagingAdapter';
2
+ import { MessageEnvelope, DeliveryReceipt, MessagingState } from '../../types/messaging';
3
+ import { OutboxStore } from '../interfaces/OutboxStore';
4
+ import { OutboxMessagingAdapter } from './OutboxMessagingAdapter';
5
+ export declare class TracedOutboxMessagingAdapter implements MessagingAdapter {
6
+ private inner;
7
+ constructor(inner: OutboxMessagingAdapter);
8
+ connect(myDid: string): Promise<void>;
9
+ disconnect(): Promise<void>;
10
+ getState(): MessagingState;
11
+ onStateChange(callback: (state: MessagingState) => void): () => void;
12
+ send(envelope: MessageEnvelope): Promise<DeliveryReceipt>;
13
+ onMessage(callback: (envelope: MessageEnvelope) => void | Promise<void>): () => void;
14
+ onReceipt(callback: (receipt: DeliveryReceipt) => void): () => void;
15
+ registerTransport(did: string, transportAddress: string): Promise<void>;
16
+ resolveTransport(did: string): Promise<string | null>;
17
+ flushOutbox(): Promise<void>;
18
+ getOutboxStore(): OutboxStore;
19
+ }
20
+ //# sourceMappingURL=TracedOutboxMessagingAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TracedOutboxMessagingAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/messaging/TracedOutboxMessagingAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAkBtE,qBAAa,4BAA6B,YAAW,gBAAgB;IACvD,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,sBAAsB;IAE3C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC,QAAQ,IAAI,cAAc;IAI1B,aAAa,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI;IAoB9D,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAgC/D,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI;IAcpF,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI;IAI7D,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMrD,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BlC,cAAc,IAAI,WAAW;CAG9B"}
@@ -0,0 +1,63 @@
1
+ import { MessagingAdapter } from '../interfaces/MessagingAdapter';
2
+ import { MessageEnvelope, DeliveryReceipt, MessagingState } from '../../types/messaging';
3
+ /**
4
+ * Function that signs a challenge nonce to prove DID ownership.
5
+ * Returns base64url-encoded Ed25519 signature.
6
+ */
7
+ export type SignChallengeFn = (nonce: string) => Promise<string>;
8
+ /**
9
+ * WebSocket-based messaging adapter that connects to a relay server.
10
+ *
11
+ * Uses the browser-native WebSocket API (no `ws` dependency needed).
12
+ * The relay is blind — it only forwards envelopes without inspecting payloads.
13
+ *
14
+ * Protocol (with challenge-response auth):
15
+ * 1. Client → { type: 'register', did }
16
+ * 2. Relay → { type: 'challenge', nonce }
17
+ * 3. Client → { type: 'challenge-response', did, nonce, signature }
18
+ * 4. Relay → { type: 'registered', did, peers }
19
+ */
20
+ export declare class WebSocketMessagingAdapter implements MessagingAdapter {
21
+ private relayUrl;
22
+ private ws;
23
+ private state;
24
+ private messageCallbacks;
25
+ private receiptCallbacks;
26
+ private stateCallbacks;
27
+ private transportMap;
28
+ private pendingReceipts;
29
+ /** Buffer for messages that arrive before any onMessage handler is registered */
30
+ private earlyMessageBuffer;
31
+ private heartbeatInterval;
32
+ private heartbeatTimeout;
33
+ private readonly HEARTBEAT_INTERVAL_MS;
34
+ private readonly HEARTBEAT_TIMEOUT_MS;
35
+ private readonly SEND_TIMEOUT_MS;
36
+ private signChallenge;
37
+ constructor(relayUrl: string, options?: {
38
+ sendTimeoutMs?: number;
39
+ signChallenge?: SignChallengeFn;
40
+ });
41
+ private setState;
42
+ onStateChange(callback: (state: MessagingState) => void): () => void;
43
+ private connectedDid;
44
+ private peerCount;
45
+ connect(myDid: string): Promise<void>;
46
+ disconnect(): Promise<void>;
47
+ getState(): MessagingState;
48
+ getPeerCount(): number;
49
+ private startHeartbeat;
50
+ private stopHeartbeat;
51
+ /**
52
+ * Process incoming message: await all callbacks, then ACK.
53
+ * If no handlers are registered yet, buffer the message for later delivery.
54
+ */
55
+ private handleIncomingMessage;
56
+ private handlePong;
57
+ send(envelope: MessageEnvelope): Promise<DeliveryReceipt>;
58
+ onMessage(callback: (envelope: MessageEnvelope) => void | Promise<void>): () => void;
59
+ onReceipt(callback: (receipt: DeliveryReceipt) => void): () => void;
60
+ registerTransport(did: string, transportAddress: string): Promise<void>;
61
+ resolveTransport(did: string): Promise<string | null>;
62
+ }
63
+ //# sourceMappingURL=WebSocketMessagingAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSocketMessagingAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/messaging/WebSocketMessagingAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAA;AAE9B;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAEhE;;;;;;;;;;;GAWG;AACH,qBAAa,yBAA0B,YAAW,gBAAgB;IAkBpD,OAAO,CAAC,QAAQ;IAjB5B,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,gBAAgB,CAAiE;IACzF,OAAO,CAAC,gBAAgB,CAAgD;IACxE,OAAO,CAAC,cAAc,CAA6C;IACnE,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,eAAe,CAAwD;IAC/E,iFAAiF;IACjF,OAAO,CAAC,kBAAkB,CAAwB;IAClD,OAAO,CAAC,iBAAiB,CAA8C;IACvE,OAAO,CAAC,gBAAgB,CAA6C;IACrE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IAExC,OAAO,CAAC,aAAa,CAAwB;gBAEzB,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,eAAe,CAAA;KAAE;IAK3G,OAAO,CAAC,QAAQ;IAOhB,aAAa,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI;IAKpE,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,SAAS,CAAI;IAEf,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqHrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAWjC,QAAQ,IAAI,cAAc;IAI1B,YAAY,IAAI,MAAM;IAItB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,aAAa;IAWrB;;;OAGG;YACW,qBAAqB;IAsBnC,OAAO,CAAC,UAAU;IAQZ,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IA8B/D,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI;IAgBpF,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI;IAO7D,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAG5D"}
@@ -0,0 +1,3 @@
1
+ export { InMemoryMessagingAdapter } from './InMemoryMessagingAdapter';
2
+ export { WebSocketMessagingAdapter } from './WebSocketMessagingAdapter';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/messaging/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { SpaceMetadataStorage, PersistedSpaceMetadata, PersistedGroupKey } from '../interfaces/SpaceMetadataStorage';
2
+ export interface SpaceMetadataDocFunctions {
3
+ getPersonalDoc: () => any;
4
+ changePersonalDoc: (fn: (doc: any) => void, options?: {
5
+ background?: boolean;
6
+ }) => any;
7
+ }
8
+ export declare class PersonalDocSpaceMetadataStorage implements SpaceMetadataStorage {
9
+ private getPersonalDoc;
10
+ private changePersonalDoc;
11
+ constructor(fns: SpaceMetadataDocFunctions);
12
+ saveSpaceMetadata(meta: PersistedSpaceMetadata): Promise<void>;
13
+ loadSpaceMetadata(spaceId: string): Promise<PersistedSpaceMetadata | null>;
14
+ loadAllSpaceMetadata(): Promise<PersistedSpaceMetadata[]>;
15
+ deleteSpaceMetadata(spaceId: string): Promise<void>;
16
+ saveGroupKey(key: PersistedGroupKey): Promise<void>;
17
+ loadGroupKeys(spaceId: string): Promise<PersistedGroupKey[]>;
18
+ deleteGroupKeys(spaceId: string): Promise<void>;
19
+ clearAll(): Promise<void>;
20
+ private deserialize;
21
+ }
22
+ //# sourceMappingURL=AutomergeSpaceMetadataStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutomergeSpaceMetadataStorage.d.ts","sourceRoot":"","sources":["../../../src/adapters/storage/AutomergeSpaceMetadataStorage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,oCAAoC,CAAA;AAE3C,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,MAAM,GAAG,CAAA;IACzB,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,GAAG,CAAA;CACvF;AAMD,qBAAa,+BAAgC,YAAW,oBAAoB;IAC1E,OAAO,CAAC,cAAc,CAAW;IACjC,OAAO,CAAC,iBAAiB,CAAqE;gBAElF,GAAG,EAAE,yBAAyB;IAKpC,iBAAiB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB9D,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAO1E,oBAAoB,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAKzD,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,YAAY,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAW5D,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B,OAAO,CAAC,WAAW;CAyBpB"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * In-memory implementation of CompactStorageManager for testing.
3
+ * Same interface as CompactStorageManager but without IndexedDB.
4
+ */
5
+ export declare class InMemoryCompactStore {
6
+ private data;
7
+ open(): Promise<void>;
8
+ save(docId: string, binary: Uint8Array): Promise<void>;
9
+ load(docId: string): Promise<Uint8Array | null>;
10
+ delete(docId: string): Promise<void>;
11
+ list(): Promise<string[]>;
12
+ close(): void;
13
+ /** Test helper: check if a snapshot exists */
14
+ has(docId: string): boolean;
15
+ /** Test helper: get snapshot size */
16
+ size(docId: string): number;
17
+ }
18
+ //# sourceMappingURL=InMemoryCompactStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryCompactStore.d.ts","sourceRoot":"","sources":["../../../src/adapters/storage/InMemoryCompactStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,IAAI,CAAgC;IAEtC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAErB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAI/C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI/B,KAAK,IAAI,IAAI;IAIb,8CAA8C;IAC9C,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI3B,qCAAqC;IACrC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAG5B"}
@@ -0,0 +1,17 @@
1
+ import { SpaceMetadataStorage, PersistedSpaceMetadata, PersistedGroupKey } from '../interfaces/SpaceMetadataStorage';
2
+ /**
3
+ * In-memory implementation of SpaceMetadataStorage for testing.
4
+ */
5
+ export declare class InMemorySpaceMetadataStorage implements SpaceMetadataStorage {
6
+ private spaces;
7
+ private groupKeys;
8
+ saveSpaceMetadata(meta: PersistedSpaceMetadata): Promise<void>;
9
+ loadSpaceMetadata(spaceId: string): Promise<PersistedSpaceMetadata | null>;
10
+ loadAllSpaceMetadata(): Promise<PersistedSpaceMetadata[]>;
11
+ deleteSpaceMetadata(spaceId: string): Promise<void>;
12
+ saveGroupKey(key: PersistedGroupKey): Promise<void>;
13
+ loadGroupKeys(spaceId: string): Promise<PersistedGroupKey[]>;
14
+ deleteGroupKeys(spaceId: string): Promise<void>;
15
+ clearAll(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=InMemorySpaceMetadataStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemorySpaceMetadataStorage.d.ts","sourceRoot":"","sources":["../../../src/adapters/storage/InMemorySpaceMetadataStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,oCAAoC,CAAA;AAE3C;;GAEG;AACH,qBAAa,4BAA6B,YAAW,oBAAoB;IACvE,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,SAAS,CAAyC;IAEpD,iBAAiB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAI1E,oBAAoB,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAIzD,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,YAAY,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI5D,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAIhC"}
@@ -0,0 +1,15 @@
1
+ import { SpaceMetadataStorage, PersistedSpaceMetadata, PersistedGroupKey } from '../interfaces/SpaceMetadataStorage';
2
+ export declare class IndexedDBSpaceMetadataStorage implements SpaceMetadataStorage {
3
+ private dbPromise;
4
+ constructor(dbName?: string);
5
+ saveSpaceMetadata(meta: PersistedSpaceMetadata): Promise<void>;
6
+ loadSpaceMetadata(spaceId: string): Promise<PersistedSpaceMetadata | null>;
7
+ loadAllSpaceMetadata(): Promise<PersistedSpaceMetadata[]>;
8
+ deleteSpaceMetadata(spaceId: string): Promise<void>;
9
+ saveGroupKey(key: PersistedGroupKey): Promise<void>;
10
+ loadGroupKeys(spaceId: string): Promise<PersistedGroupKey[]>;
11
+ deleteGroupKeys(spaceId: string): Promise<void>;
12
+ clearAll(): Promise<void>;
13
+ private deserialize;
14
+ }
15
+ //# sourceMappingURL=IndexedDBSpaceMetadataStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexedDBSpaceMetadataStorage.d.ts","sourceRoot":"","sources":["../../../src/adapters/storage/IndexedDBSpaceMetadataStorage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,oCAAoC,CAAA;AA2B3C,qBAAa,6BAA8B,YAAW,oBAAoB;IACxE,OAAO,CAAC,SAAS,CAAuB;gBAE5B,MAAM,GAAE,MAAgB;IAc9B,iBAAiB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAe9D,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAO1E,oBAAoB,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAMzD,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD,YAAY,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAU5D,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ/B,OAAO,CAAC,WAAW;CAYpB"}
@@ -0,0 +1,26 @@
1
+ import { StorageAdapter } from '../interfaces/StorageAdapter';
2
+ import { Identity, Profile, Contact, Verification, Attestation, AttestationMetadata } from '../../types';
3
+ export declare class LocalStorageAdapter implements StorageAdapter {
4
+ private db;
5
+ init(): Promise<void>;
6
+ private ensureDb;
7
+ createIdentity(did: string, profile: Profile): Promise<Identity>;
8
+ getIdentity(): Promise<Identity | null>;
9
+ updateIdentity(identity: Identity): Promise<void>;
10
+ addContact(contact: Contact): Promise<void>;
11
+ getContacts(): Promise<Contact[]>;
12
+ getContact(did: string): Promise<Contact | null>;
13
+ updateContact(contact: Contact): Promise<void>;
14
+ removeContact(did: string): Promise<void>;
15
+ saveVerification(verification: Verification): Promise<void>;
16
+ getReceivedVerifications(): Promise<Verification[]>;
17
+ getAllVerifications(): Promise<Verification[]>;
18
+ getVerification(id: string): Promise<Verification | null>;
19
+ saveAttestation(attestation: Attestation): Promise<void>;
20
+ getReceivedAttestations(): Promise<Attestation[]>;
21
+ getAttestation(id: string): Promise<Attestation | null>;
22
+ getAttestationMetadata(attestationId: string): Promise<AttestationMetadata | null>;
23
+ setAttestationAccepted(attestationId: string, accepted: boolean): Promise<void>;
24
+ clear(): Promise<void>;
25
+ }
26
+ //# sourceMappingURL=LocalStorageAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalStorageAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/storage/LocalStorageAdapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AA+B7G,qBAAa,mBAAoB,YAAW,cAAc;IACxD,OAAO,CAAC,EAAE,CAAmC;IAEvC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC3B,OAAO,CAAC,QAAQ;IAQV,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAahE,WAAW,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAMvC,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjD,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAKjC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAKhD,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzC,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3D,wBAAwB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAKnD,mBAAmB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAK9C,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAMzD,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxD,uBAAuB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAKjD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAMvD,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAKlF,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAU7B"}
@@ -0,0 +1,2 @@
1
+ export * from './LocalStorageAdapter';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1,80 @@
1
+ import { ResourceRef } from '../types/resource-ref';
2
+ export type Permission = 'read' | 'write' | 'delete' | 'delegate';
3
+ export interface Capability {
4
+ id: string;
5
+ issuer: string;
6
+ audience: string;
7
+ resource: ResourceRef;
8
+ permissions: Permission[];
9
+ expiration: string;
10
+ proof?: string;
11
+ }
12
+ /** A capability encoded as JWS (signed by the issuer) */
13
+ export type CapabilityJws = string;
14
+ export interface VerifiedCapability {
15
+ valid: true;
16
+ capability: Capability;
17
+ chain: Capability[];
18
+ }
19
+ export interface CapabilityError {
20
+ valid: false;
21
+ error: string;
22
+ }
23
+ export type CapabilityVerificationResult = VerifiedCapability | CapabilityError;
24
+ /**
25
+ * Sign function — signs a payload and returns JWS compact serialization.
26
+ * Typically provided by WotIdentity.signJws.bind(identity).
27
+ */
28
+ export type SignFn = (payload: unknown) => Promise<string>;
29
+ /**
30
+ * Create and sign a capability token.
31
+ *
32
+ * @param params - Capability parameters
33
+ * @param sign - Sign function (e.g. identity.signJws.bind(identity))
34
+ * @returns Signed capability as JWS string
35
+ */
36
+ export declare function createCapability(params: {
37
+ issuer: string;
38
+ audience: string;
39
+ resource: ResourceRef;
40
+ permissions: Permission[];
41
+ expiration: string;
42
+ }, sign: SignFn): Promise<CapabilityJws>;
43
+ /**
44
+ * Verify a capability JWS: signature, expiration, and delegation chain.
45
+ *
46
+ * Verification checks:
47
+ * 1. JWS signature is valid (issuer's Ed25519 key from did:key)
48
+ * 2. Capability has not expired
49
+ * 3. If delegated (has proof): parent chain is valid and permissions are attenuated
50
+ *
51
+ * @param capabilityJws - The signed capability token
52
+ * @param now - Current time for expiration check (default: new Date())
53
+ * @returns Verification result with decoded capability or error
54
+ */
55
+ export declare function verifyCapability(capabilityJws: CapabilityJws, now?: Date): Promise<CapabilityVerificationResult>;
56
+ /**
57
+ * Extract a capability from a JWS without verifying the signature.
58
+ * Useful for inspecting tokens or debugging.
59
+ */
60
+ export declare function extractCapability(capabilityJws: CapabilityJws): Capability | null;
61
+ /**
62
+ * Create a delegated capability with attenuated permissions.
63
+ *
64
+ * The new capability:
65
+ * - Has the delegator as issuer (= audience of parent)
66
+ * - Can only have a subset of the parent's permissions
67
+ * - Cannot expire later than the parent
68
+ * - Carries the parent JWS as proof
69
+ *
70
+ * @param parentCapabilityJws - The parent capability (must include 'delegate' permission)
71
+ * @param params - Delegation parameters
72
+ * @param sign - Sign function of the delegator (audience of parent)
73
+ * @returns Signed delegated capability as JWS
74
+ */
75
+ export declare function delegateCapability(parentCapabilityJws: CapabilityJws, params: {
76
+ audience: string;
77
+ permissions: Permission[];
78
+ expiration: string;
79
+ }, sign: SignFn): Promise<CapabilityJws>;
80
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/crypto/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAIxD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAA;AAEjE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,WAAW,CAAA;IACrB,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,yDAAyD;AACzD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAA;AAElC,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,IAAI,CAAA;IACX,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,4BAA4B,GAAG,kBAAkB,GAAG,eAAe,CAAA;AAE/E;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAI1D;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE;IACN,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,WAAW,CAAA;IACrB,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;CACnB,EACD,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,CAAC,CAWxB;AAID;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,aAAa,EAC5B,GAAG,CAAC,EAAE,IAAI,GACT,OAAO,CAAC,4BAA4B,CAAC,CAwGvC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,aAAa,GAAG,UAAU,GAAG,IAAI,CAIjF;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAsB,kBAAkB,CACtC,mBAAmB,EAAE,aAAa,EAClC,MAAM,EAAE;IACN,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;CACnB,EACD,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,CAAC,CAsCxB"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Create a did:key from Ed25519 public key bytes
3
+ * Format: did:key:z<base58btc-encoded-multicodec-pubkey>
4
+ */
5
+ export declare function createDid(publicKeyBytes: Uint8Array): string;
6
+ /**
7
+ * Extract Ed25519 public key bytes from did:key
8
+ */
9
+ export declare function didToPublicKeyBytes(did: string): Uint8Array;
10
+ /**
11
+ * Validate did:key format
12
+ */
13
+ export declare function isValidDid(did: string): boolean;
14
+ /**
15
+ * Generate a short display name from a DID
16
+ * Format: "User-{6chars}" from the end of the DID
17
+ */
18
+ export declare function getDefaultDisplayName(did: string): string;
19
+ //# sourceMappingURL=did.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"did.d.ts","sourceRoot":"","sources":["../../src/crypto/did.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,CAU5D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAc3D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQ/C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIzD"}
@@ -0,0 +1,7 @@
1
+ export declare function encodeBase58(bytes: Uint8Array): string;
2
+ export declare function decodeBase58(str: string): Uint8Array;
3
+ export declare function encodeBase64Url(bytes: Uint8Array): string;
4
+ export declare function decodeBase64Url(str: string): Uint8Array;
5
+ /** Convert Uint8Array to ArrayBuffer slice (workaround for TypeScript strict mode with Web Crypto). */
6
+ export declare function toBuffer(arr: Uint8Array): ArrayBuffer;
7
+ //# sourceMappingURL=encoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/crypto/encoding.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAyBtD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAsBpD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAQzD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAMvD;AAED,uGAAuG;AACvG,wBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,WAAW,CAErD"}
@@ -0,0 +1,30 @@
1
+ import { MessageEnvelope } from '../types/messaging';
2
+ /**
3
+ * Create the canonical string to sign for a MessageEnvelope.
4
+ * Fields are pipe-separated in a fixed order — deterministic and unambiguous.
5
+ */
6
+ export declare function canonicalSigningInput(envelope: MessageEnvelope): string;
7
+ /**
8
+ * Sign function type — matches WotIdentity.sign() signature.
9
+ * Takes a string, returns base64url-encoded Ed25519 signature.
10
+ */
11
+ export type EnvelopeSignFn = (data: string) => Promise<string>;
12
+ /**
13
+ * Sign a MessageEnvelope.
14
+ * Mutates the envelope's `signature` field in-place and returns it.
15
+ *
16
+ * @param envelope - The envelope to sign
17
+ * @param sign - Signing function (e.g., identity.sign.bind(identity))
18
+ */
19
+ export declare function signEnvelope(envelope: MessageEnvelope, sign: EnvelopeSignFn): Promise<MessageEnvelope>;
20
+ /**
21
+ * Verify a MessageEnvelope's signature against fromDid.
22
+ *
23
+ * Extracts the Ed25519 public key from envelope.fromDid (did:key),
24
+ * then verifies the signature over the canonical fields.
25
+ *
26
+ * Returns true if signature is valid, false otherwise.
27
+ * Never throws — returns false on any error.
28
+ */
29
+ export declare function verifyEnvelope(envelope: MessageEnvelope): Promise<boolean>;
30
+ //# sourceMappingURL=envelope-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope-auth.d.ts","sourceRoot":"","sources":["../../src/crypto/envelope-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAIzD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAEvE;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAE9D;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,eAAe,EACzB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,eAAe,CAAC,CAI1B;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAiChF"}
@@ -0,0 +1,4 @@
1
+ export * from './encoding';
2
+ export * from './did';
3
+ export * from './jws';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,OAAO,CAAA;AACrB,cAAc,OAAO,CAAA"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Sign data and return JWS compact serialization
3
+ *
4
+ * @param payload - The data to sign (will be JSON stringified)
5
+ * @param privateKey - CryptoKey for signing (Ed25519)
6
+ * @returns JWS compact serialization string (header.payload.signature)
7
+ */
8
+ export declare function signJws(payload: unknown, privateKey: CryptoKey): Promise<string>;
9
+ /**
10
+ * Verify a JWS signature
11
+ *
12
+ * @param jws - JWS compact serialization string
13
+ * @param publicKey - CryptoKey for verification (Ed25519)
14
+ * @returns Object with verification result and decoded payload
15
+ */
16
+ export declare function verifyJws(jws: string, publicKey: CryptoKey): Promise<{
17
+ valid: boolean;
18
+ payload?: unknown;
19
+ error?: string;
20
+ }>;
21
+ /**
22
+ * Extract payload from JWS without verifying signature
23
+ * Useful for debugging or when signature verification happens separately
24
+ */
25
+ export declare function extractJwsPayload(jws: string): unknown | null;
26
+ //# sourceMappingURL=jws.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jws.d.ts","sourceRoot":"","sources":["../../src/crypto/jws.ts"],"names":[],"mappings":"AAsBA;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,SAAS,GACpB,OAAO,CAAC,MAAM,CAAC,CAgCjB;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA6ChE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAU7D"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * SeedStorage - Encrypted storage for master seed
3
+ *
4
+ * Security:
5
+ * - Master seed encrypted with PBKDF2(passphrase) + AES-GCM
6
+ * - Stored in IndexedDB
7
+ * - Never stored unencrypted
8
+ * - Session cache: non-extractable CryptoKey in IndexedDB with TTL
9
+ */
10
+ export declare class SeedStorage {
11
+ private static readonly DB_NAME;
12
+ private static readonly STORE_NAME;
13
+ private static readonly SESSION_STORE_NAME;
14
+ private static readonly PBKDF2_ITERATIONS;
15
+ private static readonly DEFAULT_SESSION_TTL;
16
+ private db;
17
+ /**
18
+ * Initialize IndexedDB
19
+ */
20
+ init(): Promise<void>;
21
+ /**
22
+ * Store encrypted seed
23
+ *
24
+ * @param seed - Master seed (32 bytes)
25
+ * @param passphrase - User's passphrase
26
+ */
27
+ storeSeed(seed: Uint8Array, passphrase: string): Promise<void>;
28
+ /**
29
+ * Load and decrypt seed using passphrase.
30
+ * On success, caches the derived CryptoKey as session key.
31
+ *
32
+ * @param passphrase - User's passphrase
33
+ * @returns Decrypted seed or null if not found
34
+ */
35
+ loadSeed(passphrase: string): Promise<Uint8Array | null>;
36
+ /**
37
+ * Load and decrypt seed using cached session key (no passphrase needed).
38
+ * Returns null if no session key, session expired, or decryption fails.
39
+ */
40
+ loadSeedWithSessionKey(): Promise<Uint8Array | null>;
41
+ /**
42
+ * Check if a valid (non-expired) session key exists
43
+ */
44
+ hasActiveSession(): Promise<boolean>;
45
+ /**
46
+ * Check if seed exists in storage
47
+ */
48
+ hasSeed(): Promise<boolean>;
49
+ /**
50
+ * Delete stored seed and session key
51
+ */
52
+ deleteSeed(): Promise<void>;
53
+ /**
54
+ * Clear the cached session key
55
+ */
56
+ clearSessionKey(): Promise<void>;
57
+ private storeSessionKey;
58
+ private getSessionEntry;
59
+ private getEncryptedSeed;
60
+ private deriveEncryptionKey;
61
+ private arrayBufferToBase64Url;
62
+ private base64UrlToArrayBuffer;
63
+ }
64
+ //# sourceMappingURL=SeedStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SeedStorage.d.ts","sourceRoot":"","sources":["../../src/identity/SeedStorage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAU;IAC5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAY;IACtD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAiB;IAC5D,OAAO,CAAC,EAAE,CAA2B;IAErC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB3B;;;;;OAKG;IACG,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCpE;;;;;;OAMG;IACG,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAoC9D;;;OAGG;IACG,sBAAsB,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IA4C1D;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAkB1C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAQjC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBjC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;YAiBxB,eAAe;YAmBf,eAAe;YAWf,gBAAgB;YAWhB,mBAAmB;IA8BjC,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,sBAAsB;CAQ/B"}