@enbox/api 0.0.8 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/browser.mjs +46 -53
  2. package/dist/browser.mjs.map +4 -4
  3. package/dist/esm/define-protocol.js +37 -0
  4. package/dist/esm/define-protocol.js.map +1 -0
  5. package/dist/esm/dwn-api.js +54 -26
  6. package/dist/esm/dwn-api.js.map +1 -1
  7. package/dist/esm/index.js +4 -0
  8. package/dist/esm/index.js.map +1 -1
  9. package/dist/esm/live-query.js +153 -0
  10. package/dist/esm/live-query.js.map +1 -0
  11. package/dist/esm/protocol-types.js +8 -0
  12. package/dist/esm/protocol-types.js.map +1 -0
  13. package/dist/esm/record.js.map +1 -1
  14. package/dist/esm/typed-dwn-api.js +182 -0
  15. package/dist/esm/typed-dwn-api.js.map +1 -0
  16. package/dist/esm/web5.js +3 -2
  17. package/dist/esm/web5.js.map +1 -1
  18. package/dist/types/define-protocol.d.ts +37 -0
  19. package/dist/types/define-protocol.d.ts.map +1 -0
  20. package/dist/types/dwn-api.d.ts +32 -17
  21. package/dist/types/dwn-api.d.ts.map +1 -1
  22. package/dist/types/index.d.ts +4 -0
  23. package/dist/types/index.d.ts.map +1 -1
  24. package/dist/types/live-query.d.ts +136 -0
  25. package/dist/types/live-query.d.ts.map +1 -0
  26. package/dist/types/protocol-types.d.ts +95 -0
  27. package/dist/types/protocol-types.d.ts.map +1 -0
  28. package/dist/types/record.d.ts +1 -1
  29. package/dist/types/record.d.ts.map +1 -1
  30. package/dist/types/typed-dwn-api.d.ts +193 -0
  31. package/dist/types/typed-dwn-api.d.ts.map +1 -0
  32. package/dist/types/web5.d.ts.map +1 -1
  33. package/package.json +14 -17
  34. package/src/define-protocol.ts +48 -0
  35. package/src/dwn-api.ts +87 -49
  36. package/src/index.ts +4 -0
  37. package/src/live-query.ts +245 -0
  38. package/src/protocol-types.ts +171 -0
  39. package/src/record.ts +3 -3
  40. package/src/typed-dwn-api.ts +370 -0
  41. package/src/web5.ts +3 -2
  42. package/dist/browser.js +0 -2224
  43. package/dist/browser.js.map +0 -7
  44. package/dist/esm/subscription-util.js +0 -35
  45. package/dist/esm/subscription-util.js.map +0 -1
  46. package/dist/types/subscription-util.d.ts +0 -19
  47. package/dist/types/subscription-util.d.ts.map +0 -1
  48. package/src/subscription-util.ts +0 -44
@@ -0,0 +1,182 @@
1
+ /**
2
+ * A type-safe wrapper around {@link DwnApi} scoped to a single protocol.
3
+ *
4
+ * `TypedDwnApi` is created via `dwn.using(typedProtocol)` and provides
5
+ * autocompletion for protocol paths, typed data payloads, and tag shapes.
6
+ *
7
+ * Every method delegates to the corresponding `dwn.records.*` method,
8
+ * injecting the protocol URI, protocolPath, and schema automatically.
9
+ */
10
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
+ return new (P || (P = Promise))(function (resolve, reject) {
13
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
17
+ });
18
+ };
19
+ // ---------------------------------------------------------------------------
20
+ // TypedDwnApi class
21
+ // ---------------------------------------------------------------------------
22
+ /**
23
+ * A protocol-scoped wrapper around `DwnApi` that automatically injects
24
+ * the `protocol` URI, `protocolPath`, and `schema` into every DWN operation.
25
+ *
26
+ * Obtain an instance via `dwn.using(typedProtocol)`.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * const social = dwn.using(SocialGraphProtocol);
31
+ *
32
+ * // Write — path and data type are checked at compile time
33
+ * const { record } = await social.write('friend', {
34
+ * data: { did: 'did:example:alice', alias: 'Alice' },
35
+ * });
36
+ *
37
+ * // Query — protocol and protocolPath are auto-injected
38
+ * const { records } = await social.query('friend', {
39
+ * filter: { tags: { did: 'did:example:alice' } },
40
+ * });
41
+ * ```
42
+ */
43
+ export class TypedDwnApi {
44
+ constructor(dwn, protocol) {
45
+ this._dwn = dwn;
46
+ this._definition = protocol.definition;
47
+ }
48
+ /** The protocol URI. */
49
+ get protocol() {
50
+ return this._definition.protocol;
51
+ }
52
+ /** The raw protocol definition. */
53
+ get definition() {
54
+ return this._definition;
55
+ }
56
+ /**
57
+ * Configures (installs) this protocol on the local DWN.
58
+ *
59
+ * @param options - Optional overrides like `encryption`.
60
+ */
61
+ configure(options) {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ return this._dwn.protocols.configure({
64
+ message: { definition: this._definition },
65
+ encryption: options === null || options === void 0 ? void 0 : options.encryption,
66
+ });
67
+ });
68
+ }
69
+ /**
70
+ * Write a record at the given protocol path.
71
+ *
72
+ * @param path - The protocol path (e.g. `'friend'`, `'group/member'`).
73
+ * @param request - Write options including typed `data`.
74
+ */
75
+ write(path, request) {
76
+ return __awaiter(this, void 0, void 0, function* () {
77
+ var _a, _b, _c;
78
+ const typeName = lastSegment(path);
79
+ const typeEntry = this._definition.types[typeName];
80
+ return this._dwn.records.write({
81
+ data: request.data,
82
+ store: request.store,
83
+ encryption: request.encryption,
84
+ message: Object.assign(Object.assign({}, request.message), { protocol: this._definition.protocol, protocolPath: path, schema: typeEntry === null || typeEntry === void 0 ? void 0 : typeEntry.schema, dataFormat: (_b = (_a = request.message) === null || _a === void 0 ? void 0 : _a.dataFormat) !== null && _b !== void 0 ? _b : (_c = typeEntry === null || typeEntry === void 0 ? void 0 : typeEntry.dataFormats) === null || _c === void 0 ? void 0 : _c[0] }),
85
+ });
86
+ });
87
+ }
88
+ /**
89
+ * Query records at the given protocol path.
90
+ *
91
+ * @param path - The protocol path to query.
92
+ * @param request - Query options including optional filter, sort, and pagination.
93
+ */
94
+ query(path, request) {
95
+ return __awaiter(this, void 0, void 0, function* () {
96
+ const typeName = lastSegment(path);
97
+ const typeEntry = this._definition.types[typeName];
98
+ return this._dwn.records.query({
99
+ from: request === null || request === void 0 ? void 0 : request.from,
100
+ protocol: this._definition.protocol,
101
+ encryption: request === null || request === void 0 ? void 0 : request.encryption,
102
+ message: {
103
+ filter: Object.assign(Object.assign({}, request === null || request === void 0 ? void 0 : request.filter), { protocol: this._definition.protocol, protocolPath: path, schema: typeEntry === null || typeEntry === void 0 ? void 0 : typeEntry.schema }),
104
+ dateSort: request === null || request === void 0 ? void 0 : request.dateSort,
105
+ pagination: request === null || request === void 0 ? void 0 : request.pagination,
106
+ protocolRole: request === null || request === void 0 ? void 0 : request.protocolRole,
107
+ },
108
+ });
109
+ });
110
+ }
111
+ /**
112
+ * Read a single record at the given protocol path.
113
+ *
114
+ * @param path - The protocol path to read from.
115
+ * @param request - Read options including a filter to identify the record.
116
+ */
117
+ read(path, request) {
118
+ return __awaiter(this, void 0, void 0, function* () {
119
+ const typeName = lastSegment(path);
120
+ const typeEntry = this._definition.types[typeName];
121
+ return this._dwn.records.read({
122
+ from: request.from,
123
+ protocol: this._definition.protocol,
124
+ encryption: request.encryption,
125
+ message: {
126
+ filter: Object.assign(Object.assign({}, request.filter), { protocol: this._definition.protocol, protocolPath: path, schema: typeEntry === null || typeEntry === void 0 ? void 0 : typeEntry.schema }),
127
+ },
128
+ });
129
+ });
130
+ }
131
+ /**
132
+ * Delete a record at the given protocol path.
133
+ *
134
+ * @param path - The protocol path (used for permission scoping).
135
+ * @param request - Delete options including the `recordId`.
136
+ */
137
+ delete(_path, request) {
138
+ return __awaiter(this, void 0, void 0, function* () {
139
+ return this._dwn.records.delete({
140
+ from: request.from,
141
+ protocol: this._definition.protocol,
142
+ message: {
143
+ recordId: request.recordId,
144
+ },
145
+ });
146
+ });
147
+ }
148
+ /**
149
+ * Subscribe to records at the given protocol path.
150
+ *
151
+ * Returns a {@link LiveQuery} that atomically provides an initial snapshot
152
+ * and a real-time stream of deduplicated change events.
153
+ *
154
+ * @param path - The protocol path to subscribe to.
155
+ * @param request - Subscribe options including optional filter and role.
156
+ */
157
+ subscribe(path, request) {
158
+ return __awaiter(this, void 0, void 0, function* () {
159
+ const typeName = lastSegment(path);
160
+ const typeEntry = this._definition.types[typeName];
161
+ return this._dwn.records.subscribe({
162
+ from: request === null || request === void 0 ? void 0 : request.from,
163
+ protocol: this._definition.protocol,
164
+ message: {
165
+ filter: Object.assign(Object.assign({}, request === null || request === void 0 ? void 0 : request.filter), { protocol: this._definition.protocol, protocolPath: path, schema: typeEntry === null || typeEntry === void 0 ? void 0 : typeEntry.schema }),
166
+ protocolRole: request === null || request === void 0 ? void 0 : request.protocolRole,
167
+ },
168
+ });
169
+ });
170
+ }
171
+ }
172
+ // ---------------------------------------------------------------------------
173
+ // Helpers
174
+ // ---------------------------------------------------------------------------
175
+ /**
176
+ * Returns the last segment of a slash-delimited path.
177
+ */
178
+ function lastSegment(path) {
179
+ const parts = path.split('/');
180
+ return parts[parts.length - 1];
181
+ }
182
+ //# sourceMappingURL=typed-dwn-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-dwn-api.js","sourceRoot":"","sources":["../../src/typed-dwn-api.ts"],"names":[],"mappings":"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"}
package/dist/esm/web5.js CHANGED
@@ -23,7 +23,8 @@ var __rest = (this && this.__rest) || function (s, e) {
23
23
  }
24
24
  return t;
25
25
  };
26
- import { DwnRegistrar, WalletConnect, Web5UserAgent } from '@enbox/agent';
26
+ import { DwnRegistrar } from '@enbox/dwn-clients';
27
+ import { WalletConnect, Web5UserAgent } from '@enbox/agent';
27
28
  import { DidApi } from './did-api.js';
28
29
  import { DwnApi } from './dwn-api.js';
29
30
  import { PermissionGrant } from './permission-grant.js';
@@ -154,7 +155,7 @@ export class Web5 {
154
155
  purposes: ['assertionMethod', 'authentication']
155
156
  },
156
157
  {
157
- algorithm: 'secp256k1',
158
+ algorithm: 'X25519',
158
159
  id: 'enc',
159
160
  purposes: ['keyAgreement']
160
161
  }
@@ -1 +1 @@
1
- {"version":3,"file":"web5.js","sourceRoot":"","sources":["../../src/web5.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web5.js","sourceRoot":"","sources":["../../src/web5.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Factory function for creating typed protocol definitions.
3
+ *
4
+ * `defineProtocol()` wraps a standard {@link ProtocolDefinition} with
5
+ * compile-time type metadata so that {@link TypedDwnApi} can provide
6
+ * path autocompletion, data-shape inference, and tag type safety.
7
+ */
8
+ import type { ProtocolDefinition } from '@enbox/dwn-sdk-js';
9
+ import type { SchemaMap, TypedProtocol } from './protocol-types.js';
10
+ /**
11
+ * Creates a {@link TypedProtocol} from a plain DWN protocol definition and
12
+ * an optional schema map that associates TypeScript types with protocol type
13
+ * names.
14
+ *
15
+ * The `definition` argument is returned as-is (no cloning). The schema map
16
+ * is a phantom type parameter — it exists only at compile time to thread
17
+ * type information through to `TypedDwnApi`.
18
+ *
19
+ * @param definition - A standard `ProtocolDefinition` object.
20
+ * @param _schemaMap - A phantom value (e.g. `{} as MySchemaMap`) that carries
21
+ * the TypeScript type mapping. The runtime value is ignored.
22
+ * @returns A `TypedProtocol` containing the definition and inferred types.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * const socialGraph = defineProtocol(SocialGraphDefinition, {} as {
27
+ * friend : { did: string; alias?: string };
28
+ * block : { did: string; reason?: string };
29
+ * });
30
+ *
31
+ * // socialGraph.definition is the raw ProtocolDefinition
32
+ * // TypedDwnApi infers paths like 'friend' | 'friend/message' and
33
+ * // data types from the schema map.
34
+ * ```
35
+ */
36
+ export declare function defineProtocol<D extends ProtocolDefinition, M extends SchemaMap = SchemaMap>(definition: D, _schemaMap?: M): TypedProtocol<D, M>;
37
+ //# sourceMappingURL=define-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-protocol.d.ts","sourceRoot":"","sources":["../../src/define-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAC5B,CAAC,SAAS,kBAAkB,EAC5B,CAAC,SAAS,SAAS,GAAG,SAAS,EAE/B,UAAU,EAAG,CAAC,EAEd,UAAU,CAAC,EAAE,CAAC,GACb,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAErB"}
@@ -2,12 +2,16 @@
2
2
  * NOTE: Added reference types here to avoid a `pnpm` bug during build.
3
3
  * https://github.com/enboxorg/enbox/pull/507
4
4
  */
5
- import type { CreateGrantParams, CreateRequestParams, DwnMessageParams, DwnMessageSubscription, DwnPaginationCursor, DwnResponseStatus, FetchPermissionRequestParams, FetchPermissionsParams, Web5Agent } from '@enbox/agent';
5
+ import type { CreateGrantParams, CreateRequestParams, DwnMessageParams, DwnPaginationCursor, DwnResponseStatus, FetchPermissionRequestParams, FetchPermissionsParams, Web5Agent } from '@enbox/agent';
6
6
  import { DwnInterface } from '@enbox/agent';
7
+ import type { ProtocolDefinition } from '@enbox/dwn-sdk-js';
8
+ import type { SchemaMap, TypedProtocol } from './protocol-types.js';
9
+ import { LiveQuery } from './live-query.js';
7
10
  import { PermissionGrant } from './permission-grant.js';
8
11
  import { PermissionRequest } from './permission-request.js';
9
12
  import { Protocol } from './protocol.js';
10
13
  import { Record } from './record.js';
14
+ import { TypedDwnApi } from './typed-dwn-api.js';
11
15
  /**
12
16
  * Represents the request payload for fetching permission requests from a Decentralized Web Node (DWN).
13
17
  *
@@ -172,33 +176,25 @@ export type RecordsReadResponse = DwnResponseStatus & {
172
176
  /** The record retrieved by the read operation. */
173
177
  record: Record;
174
178
  };
175
- /** Subscription handler for Records */
176
- export type RecordsSubscriptionHandler = (record: Record) => void;
177
179
  /**
178
180
  * Represents a request to subscribe to records from a Decentralized Web Node (DWN).
179
181
  *
180
- * This request type is used to specify the target DWN from which records matching the subscription
181
- * criteria should be emitted. It's useful for being notified in real time when records are written, deleted or modified.
182
+ * Returns a {@link LiveQuery} that atomically provides an initial snapshot of
183
+ * matching records alongside a real-time stream of deduplicated, semantically-
184
+ * typed change events (`create`, `update`, `delete`).
182
185
  */
183
186
  export type RecordsSubscribeRequest = {
184
187
  /** Optional DID specifying the remote target DWN tenant to subscribe from. */
185
188
  from?: string;
186
- /** Records must be scoped to a specific protocol */
189
+ /** Records must be scoped to a specific protocol. */
187
190
  protocol?: string;
188
- /** The parameters for the subscription operation, detailing the criteria for the subscription filter */
191
+ /** The parameters for the subscription operation, detailing the criteria for the subscription filter. */
189
192
  message: Omit<DwnMessageParams[DwnInterface.RecordsSubscribe], 'signer'>;
190
- /** The handler to process the subscription events */
191
- subscriptionHandler: RecordsSubscriptionHandler;
192
- /** When true, indicates encryption is active (decryption happens on subsequent reads). */
193
- encryption?: boolean;
194
193
  };
195
- /** Encapsulates the response from a DWN RecordsSubscriptionRequest */
194
+ /** Encapsulates the response from a DWN RecordsSubscribeRequest. */
196
195
  export type RecordsSubscribeResponse = DwnResponseStatus & {
197
- /**
198
- * Represents the subscription that was created. Includes an ID and the close method to stop the subscription.
199
- *
200
- * */
201
- subscription?: DwnMessageSubscription;
196
+ /** The live query instance, or `undefined` if the request failed. */
197
+ liveQuery?: LiveQuery;
202
198
  };
203
199
  /**
204
200
  * Defines a request to write (create) a record to a Decentralized Web Node (DWN).
@@ -264,6 +260,25 @@ export declare class DwnApi {
264
260
  connectedDid: string;
265
261
  delegateDid?: string;
266
262
  });
263
+ /**
264
+ * Returns a {@link TypedDwnApi} scoped to the given typed protocol.
265
+ *
266
+ * The returned API provides path autocompletion, typed data payloads,
267
+ * and automatically injects the protocol URI and protocolPath into every
268
+ * DWN operation.
269
+ *
270
+ * @param protocol - A typed protocol created via `defineProtocol()`.
271
+ * @returns A `TypedDwnApi` instance bound to the given protocol.
272
+ *
273
+ * @example
274
+ * ```ts
275
+ * const social = dwn.using(SocialGraphProtocol);
276
+ * const { record } = await social.write('friend', {
277
+ * data: { did: 'did:example:alice' },
278
+ * });
279
+ * ```
280
+ */
281
+ using<D extends ProtocolDefinition, M extends SchemaMap>(protocol: TypedProtocol<D, M>): TypedDwnApi<D, M>;
267
282
  /**
268
283
  * API to interact with Grants
269
284
  *
@@ -1 +1 @@
1
- {"version":3,"file":"dwn-api.d.ts","sourceRoot":"","sources":["../../src/dwn-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dwn-api.d.ts","sourceRoot":"","sources":["../../src/dwn-api.ts"],"names":[],"mappings":"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"}
@@ -20,13 +20,17 @@
20
20
  *
21
21
  * @packageDocumentation
22
22
  */
23
+ export * from './define-protocol.js';
23
24
  export * from './did-api.js';
24
25
  export * from './dwn-api.js';
25
26
  export * from './grant-revocation.js';
27
+ export * from './live-query.js';
26
28
  export * from './permission-grant.js';
27
29
  export * from './permission-request.js';
28
30
  export * from './protocol.js';
31
+ export * from './protocol-types.js';
29
32
  export * from './record.js';
33
+ export * from './typed-dwn-api.js';
30
34
  export * from './vc-api.js';
31
35
  export * from './web5.js';
32
36
  import * as utils from './utils.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAE1B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAE1B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,136 @@
1
+ import type { RecordsQueryReplyEntry } from '@enbox/dwn-sdk-js';
2
+ import type { DwnMessageSubscription, PermissionsApi, Web5Agent } from '@enbox/agent';
3
+ import { Record } from './record.js';
4
+ /**
5
+ * The type of change that occurred to a record.
6
+ */
7
+ export type RecordChangeType = 'create' | 'update' | 'delete';
8
+ /**
9
+ * Describes a change to a record in a {@link LiveQuery}.
10
+ */
11
+ export type RecordChange = {
12
+ /** Whether the record was created, updated, or deleted. */
13
+ type: RecordChangeType;
14
+ /** The record affected by the change. */
15
+ record: Record;
16
+ };
17
+ /**
18
+ * A `CustomEvent` subclass carrying a {@link RecordChange} as its `detail`.
19
+ *
20
+ * Dispatched on the {@link LiveQuery} `EventTarget` for both the specific
21
+ * change-type event (`create`, `update`, `delete`) and the catch-all `change`
22
+ * event.
23
+ */
24
+ export declare class RecordChangeEvent extends CustomEvent<RecordChange> {
25
+ constructor(change: RecordChange);
26
+ }
27
+ /**
28
+ * Options for creating a {@link LiveQuery}.
29
+ * @internal — Constructed by `DwnApi.records.subscribe()`, not by end users.
30
+ */
31
+ export type LiveQueryOptions = {
32
+ /** The agent instance used to construct Record objects. */
33
+ agent: Web5Agent;
34
+ /** The DID of the connected user. */
35
+ connectedDid: string;
36
+ /** Optional delegate DID for permission-delegated access. */
37
+ delegateDid?: string;
38
+ /** Optional protocol role for role-authorized access. */
39
+ protocolRole?: string;
40
+ /** Optional remote DWN origin if subscribing to a remote DWN. */
41
+ remoteOrigin?: string;
42
+ /** The permissions API instance for constructing Record objects. */
43
+ permissionsApi?: PermissionsApi;
44
+ /** The initial snapshot entries from the subscribe reply. */
45
+ initialEntries: RecordsQueryReplyEntry[];
46
+ /** The underlying DWN subscription handle. */
47
+ subscription: DwnMessageSubscription;
48
+ };
49
+ /**
50
+ * A live query that combines an initial snapshot of matching records with a
51
+ * real-time stream of deduplicated, semantically-typed change events.
52
+ *
53
+ * `LiveQuery` extends `EventTarget` so that standard `addEventListener` /
54
+ * `removeEventListener` work out of the box. For convenience, the typed
55
+ * {@link LiveQuery.on | `.on()`} method provides a cleaner API that returns an
56
+ * unsubscribe function.
57
+ *
58
+ * ### Events
59
+ *
60
+ * | Event name | `detail` type | Description |
61
+ * |---|---|---|
62
+ * | `create` | {@link RecordChange} | A new record was written |
63
+ * | `update` | {@link RecordChange} | An existing record was updated |
64
+ * | `delete` | {@link RecordChange} | A record was deleted |
65
+ * | `change` | {@link RecordChange} | Catch-all for any of the above |
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * const { liveQuery } = await dwn.records.subscribe({
70
+ * message: {
71
+ * filter: {
72
+ * protocol : chatProtocol.protocol,
73
+ * protocolPath : 'thread/message',
74
+ * }
75
+ * }
76
+ * });
77
+ *
78
+ * // Initial state
79
+ * for (const record of liveQuery.records) {
80
+ * renderMessage(record);
81
+ * }
82
+ *
83
+ * // Real-time changes
84
+ * liveQuery.on('create', (record) => appendMessage(record));
85
+ * liveQuery.on('update', (record) => refreshMessage(record));
86
+ * liveQuery.on('delete', (record) => removeMessage(record));
87
+ *
88
+ * // Or use the catch-all
89
+ * liveQuery.on('change', ({ type, record }) => {
90
+ * console.log(`${type}: ${record.id}`);
91
+ * });
92
+ *
93
+ * // Cleanup
94
+ * await liveQuery.close();
95
+ * ```
96
+ */
97
+ export declare class LiveQuery extends EventTarget {
98
+ /** The initial snapshot of matching records. */
99
+ readonly records: Record[];
100
+ /** The underlying DWN subscription handle. */
101
+ private _subscription;
102
+ /** Tracks known record states for dedup and change-type classification. */
103
+ private _knownRecords;
104
+ /** Whether the live query has been closed. */
105
+ private _closed;
106
+ constructor(options: LiveQueryOptions);
107
+ /**
108
+ * Process an incoming live event from the DWN subscription.
109
+ * Deduplicates against the initial snapshot and classifies the change type.
110
+ *
111
+ * @internal — Called by `DwnApi.records.subscribe()` when wiring up the subscription handler.
112
+ */
113
+ handleEvent(record: Record): void;
114
+ /**
115
+ * Register a typed event handler. Returns an unsubscribe function.
116
+ *
117
+ * @param event - The event type to listen for.
118
+ * @param handler - The handler function.
119
+ * @returns A function that removes the handler when called.
120
+ *
121
+ * @example
122
+ * ```ts
123
+ * const off = live.on('create', (record) => console.log(record.id));
124
+ * off(); // stop listening
125
+ * ```
126
+ */
127
+ on(event: 'change', handler: (change: RecordChange) => void): () => void;
128
+ on(event: 'create', handler: (record: Record) => void): () => void;
129
+ on(event: 'update', handler: (record: Record) => void): () => void;
130
+ on(event: 'delete', handler: (record: Record) => void): () => void;
131
+ /**
132
+ * Close the underlying subscription and stop dispatching events.
133
+ */
134
+ close(): Promise<void>;
135
+ }
136
+ //# sourceMappingURL=live-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-query.d.ts","sourceRoot":"","sources":["../../src/live-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAItF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,2DAA2D;IAC3D,IAAI,EAAE,gBAAgB,CAAC;IAEvB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,WAAW,CAAC,YAAY,CAAC;gBAClD,MAAM,EAAE,YAAY;CAGjC;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,2DAA2D;IAC3D,KAAK,EAAE,SAAS,CAAC;IAEjB,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;IAErB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,oEAAoE;IACpE,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,6DAA6D;IAC7D,cAAc,EAAE,sBAAsB,EAAE,CAAC;IAEzC,8CAA8C;IAC9C,YAAY,EAAE,sBAAsB,CAAC;CACtC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,qBAAa,SAAU,SAAQ,WAAW;IACxC,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAE3B,8CAA8C;IAC9C,OAAO,CAAC,aAAa,CAAyB;IAE9C,2EAA2E;IAC3E,OAAO,CAAC,aAAa,CAAsB;IAE3C,8CAA8C;IAC9C,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,gBAAgB;IAiCrC;;;;;OAKG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAqCxC;;;;;;;;;;;;OAYG;IACH,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI;IACxE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI;IAClE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI;IAClE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI;IAelE;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B"}