keri 0.0.8-dev.ffce734 → 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 (111) hide show
  1. package/dist/controller/controller.d.ts +109 -0
  2. package/dist/controller/controller.js +545 -0
  3. package/dist/controller/controller.js.map +1 -0
  4. package/dist/controller/encrypt.d.ts +45 -0
  5. package/dist/controller/encrypt.js +120 -0
  6. package/dist/controller/encrypt.js.map +1 -0
  7. package/dist/core/credential-event.d.ts +58 -0
  8. package/dist/core/credential-event.js +28 -0
  9. package/dist/core/credential-event.js.map +1 -0
  10. package/dist/core/credential.d.ts +79 -0
  11. package/dist/core/credential.js +25 -0
  12. package/dist/core/credential.js.map +1 -0
  13. package/dist/core/digest.d.ts +1 -0
  14. package/dist/core/digest.js +7 -0
  15. package/dist/core/digest.js.map +1 -0
  16. package/dist/core/endpoint-discovery.d.ts +20 -0
  17. package/dist/core/endpoint-discovery.js +60 -0
  18. package/dist/core/endpoint-discovery.js.map +1 -0
  19. package/dist/core/events.d.ts +12 -0
  20. package/dist/core/events.js +25 -0
  21. package/dist/core/events.js.map +1 -0
  22. package/dist/core/kawa.d.ts +17 -0
  23. package/dist/core/kawa.js +79 -0
  24. package/dist/core/kawa.js.map +1 -0
  25. package/dist/core/key-event-log.d.ts +13 -0
  26. package/dist/core/key-event-log.js +154 -0
  27. package/dist/core/key-event-log.js.map +1 -0
  28. package/dist/core/key-event.d.ts +96 -0
  29. package/dist/core/key-event.js +89 -0
  30. package/dist/core/key-event.js.map +1 -0
  31. package/dist/core/keys.d.ts +9 -0
  32. package/dist/core/keys.js +17 -0
  33. package/dist/core/keys.js.map +1 -0
  34. package/dist/core/mailbox-client.d.ts +17 -0
  35. package/dist/core/mailbox-client.js +57 -0
  36. package/dist/core/mailbox-client.js.map +1 -0
  37. package/dist/core/main.d.ts +47 -0
  38. package/dist/core/main.js +44 -0
  39. package/dist/core/main.js.map +1 -0
  40. package/dist/core/receipt-event.d.ts +15 -0
  41. package/dist/core/receipt-event.js +13 -0
  42. package/dist/core/receipt-event.js.map +1 -0
  43. package/dist/core/registry-event.d.ts +28 -0
  44. package/dist/core/registry-event.js +18 -0
  45. package/dist/core/registry-event.js.map +1 -0
  46. package/dist/core/routed-event.d.ts +73 -0
  47. package/dist/core/routed-event.js +53 -0
  48. package/dist/core/routed-event.js.map +1 -0
  49. package/dist/core/said.d.ts +4 -0
  50. package/dist/core/said.js +26 -0
  51. package/dist/core/said.js.map +1 -0
  52. package/dist/core/sign.d.ts +5 -0
  53. package/dist/core/sign.js +10 -0
  54. package/dist/core/sign.js.map +1 -0
  55. package/dist/core/threshold.d.ts +6 -0
  56. package/dist/core/threshold.js +58 -0
  57. package/dist/core/threshold.js.map +1 -0
  58. package/dist/core/verify.d.ts +14 -0
  59. package/dist/core/verify.js +43 -0
  60. package/dist/core/verify.js.map +1 -0
  61. package/dist/main.d.ts +2 -8
  62. package/dist/main.js +2 -8
  63. package/dist/main.js.map +1 -1
  64. package/dist/storage/sqlite/node-sqlite.d.ts +12 -0
  65. package/dist/storage/sqlite/node-sqlite.js +25 -0
  66. package/dist/storage/sqlite/node-sqlite.js.map +1 -0
  67. package/dist/storage/sqlite/schema.d.ts +2 -0
  68. package/dist/storage/sqlite/schema.js +49 -0
  69. package/dist/storage/sqlite/schema.js.map +1 -0
  70. package/dist/storage/sqlite/sqlite-database.d.ts +13 -0
  71. package/dist/storage/sqlite/sqlite-database.js +2 -0
  72. package/dist/storage/sqlite/sqlite-database.js.map +1 -0
  73. package/dist/storage/sqlite/storage-sqlite.d.ts +26 -0
  74. package/dist/storage/sqlite/storage-sqlite.js +213 -0
  75. package/dist/storage/sqlite/storage-sqlite.js.map +1 -0
  76. package/package.json +29 -21
  77. package/LICENSE +0 -201
  78. package/README.md +0 -10
  79. package/dist/cli/main.d.ts +0 -2
  80. package/dist/cli/main.js +0 -175
  81. package/dist/cli/main.js.map +0 -1
  82. package/dist/client.d.ts +0 -21
  83. package/dist/client.js +0 -88
  84. package/dist/client.js.map +0 -1
  85. package/dist/controller.d.ts +0 -63
  86. package/dist/controller.js +0 -392
  87. package/dist/controller.js.map +0 -1
  88. package/dist/db/storage-sqlite.d.ts +0 -12
  89. package/dist/db/storage-sqlite.js +0 -53
  90. package/dist/db/storage-sqlite.js.map +0 -1
  91. package/dist/db/storage.d.ts +0 -18
  92. package/dist/db/storage.js +0 -29
  93. package/dist/db/storage.js.map +0 -1
  94. package/dist/events/event-store.d.ts +0 -126
  95. package/dist/events/event-store.js +0 -242
  96. package/dist/events/event-store.js.map +0 -1
  97. package/dist/events/events.d.ts +0 -248
  98. package/dist/events/events.js +0 -184
  99. package/dist/events/events.js.map +0 -1
  100. package/dist/keystore/encrypt.d.ts +0 -10
  101. package/dist/keystore/encrypt.js +0 -39
  102. package/dist/keystore/encrypt.js.map +0 -1
  103. package/dist/keystore/key-manager.d.ts +0 -27
  104. package/dist/keystore/key-manager.js +0 -91
  105. package/dist/keystore/key-manager.js.map +0 -1
  106. package/dist/serializer.d.ts +0 -10
  107. package/dist/serializer.js +0 -83
  108. package/dist/serializer.js.map +0 -1
  109. package/dist/witness.d.ts +0 -17
  110. package/dist/witness.js +0 -99
  111. package/dist/witness.js.map +0 -1
@@ -1,242 +0,0 @@
1
- import { formatDate, } from "./events.js";
2
- function assertKeyEvent(event) {
3
- if (typeof event !== "object") {
4
- throw new Error(`Expected event to be an object. Got ${typeof event}`);
5
- }
6
- }
7
- export class ControllerEventStore {
8
- #db;
9
- constructor(db) {
10
- this.#db = db;
11
- }
12
- async save(event) {
13
- switch (event.event.t) {
14
- case "icp":
15
- case "ixn":
16
- case "iss":
17
- case "vcp":
18
- case "rot": {
19
- if (!event.event.s) {
20
- throw new Error(`Event sequence number (s) is required for key event ${event.event.t}(${event.event.d})`);
21
- }
22
- const sn = event.event.s.padStart(24, "0");
23
- await this.#db.set(`key_event.${event.event.d}`, JSON.stringify({
24
- event: event.event,
25
- timestamp: new Date().toISOString(),
26
- seal: event.seal || null,
27
- sigs: event.signatures || [],
28
- }));
29
- await this.#db.set(`key_event_log.${event.event.i}.${sn}`, event.event.d);
30
- break;
31
- }
32
- case "rct": {
33
- await this.#db.set(`key_event_receipts.${event.event.d}`, JSON.stringify(event.receipts));
34
- break;
35
- }
36
- case "rpy":
37
- switch (event.event.r) {
38
- case "/end/role/add": {
39
- const record = event.event.a;
40
- if (record &&
41
- typeof record === "object" &&
42
- "eid" in record &&
43
- typeof record.eid === "string" &&
44
- "cid" in record &&
45
- typeof record.cid === "string" &&
46
- "role" in record &&
47
- typeof record.role === "string") {
48
- await this.#db.set(`end_role.${record.cid}.${record.role}`, JSON.stringify({
49
- cid: record.cid,
50
- role: record.role,
51
- eid: record.eid,
52
- }));
53
- }
54
- else {
55
- throw new Error("Damn");
56
- }
57
- break;
58
- }
59
- case "/loc/scheme": {
60
- const record = event.event.a;
61
- if (record &&
62
- typeof record === "object" &&
63
- "eid" in record &&
64
- typeof record.eid === "string" &&
65
- "scheme" in record &&
66
- typeof record.scheme === "string" &&
67
- "url" in record &&
68
- typeof record.url === "string" &&
69
- ["http", "https"].includes(record.scheme)) {
70
- await this.#db.set(`location.${record.eid}`, JSON.stringify({
71
- scheme: record.scheme,
72
- url: record.url,
73
- eid: record.eid,
74
- }));
75
- }
76
- break;
77
- }
78
- }
79
- }
80
- if (event.event.v.startsWith("ACDC")) {
81
- await this.#db.set(`key_event.${event.event.d}`, JSON.stringify({
82
- event: event.event,
83
- timestamp: new Date().toISOString(),
84
- seal: event.seal || null,
85
- }));
86
- }
87
- }
88
- async *iter(said, from = 0) {
89
- for (let start = from; start < Number.MAX_SAFE_INTEGER; start++) {
90
- const digest = await this.#db.get(`key_event_log.${said}.${start.toString(16).padStart(24, "0")}`);
91
- if (digest) {
92
- const result = await this.get(digest);
93
- assertKeyEvent(result?.event);
94
- yield result;
95
- }
96
- else {
97
- return;
98
- }
99
- }
100
- }
101
- async get(said) {
102
- const item = JSON.parse((await this.#db.get(`key_event.${said}`)) ?? JSON.stringify(null));
103
- if (!item) {
104
- return null;
105
- }
106
- assertKeyEvent(item.event);
107
- const receipts = JSON.parse((await this.#db.get(`key_event_receipts.${said}`)) ?? "[]");
108
- return {
109
- event: item.event,
110
- signatures: item.sigs,
111
- receipts: receipts,
112
- timestamp: new Date(Date.parse(item.timestamp)),
113
- seal: item.seal,
114
- };
115
- }
116
- async state(said) {
117
- let state = INITIAL_STATE;
118
- for await (const message of this.iter(said)) {
119
- state = reduce(state, message);
120
- }
121
- return state;
122
- }
123
- async list(said, from = 0) {
124
- const messages = [];
125
- for await (const message of this.iter(said, from)) {
126
- messages.push(message);
127
- }
128
- return messages;
129
- }
130
- async location(cid) {
131
- const result = JSON.parse((await this.#db.get(`location.${cid}`)) ?? JSON.stringify(null));
132
- return result;
133
- }
134
- async endrole(cid, role) {
135
- const result = JSON.parse((await this.#db.get(`end_role.${cid}.${role}`)) ?? JSON.stringify(null));
136
- return result;
137
- }
138
- }
139
- function assertDefined(obj) {
140
- if (obj === null) {
141
- throw new Error("Object is null");
142
- }
143
- }
144
- function merge(a, b) {
145
- return {
146
- vn: [1, 0],
147
- i: b.i ?? a.i,
148
- s: b.s ?? a.s,
149
- p: b.p ?? a.p,
150
- d: b.d ?? a.d,
151
- f: b.f ?? a.f,
152
- dt: b.dt ?? a.dt ?? formatDate(new Date()),
153
- et: b.et ?? a.et,
154
- kt: b.kt ?? a.kt,
155
- k: b.k ?? a.k,
156
- nt: b.nt ?? a.nt,
157
- n: b.n ?? a.n,
158
- bt: b.bt ?? a.bt,
159
- b: b.b ?? a.b,
160
- c: b.c ?? a.c,
161
- ee: b.ee ?? a.ee,
162
- di: b.di ?? a.di,
163
- };
164
- }
165
- export async function resolveKeyState(event) {
166
- let state = INITIAL_STATE;
167
- for await (const message of event) {
168
- state = reduce(state, message);
169
- }
170
- return state;
171
- }
172
- const INITIAL_STATE = {
173
- vn: [1, 0],
174
- i: "",
175
- s: "",
176
- p: "",
177
- d: "",
178
- f: "0",
179
- dt: formatDate(new Date()),
180
- et: "",
181
- kt: "0",
182
- k: [],
183
- nt: "0",
184
- n: [],
185
- bt: "",
186
- b: [],
187
- c: [],
188
- ee: { s: "", d: "", br: [], ba: [] },
189
- di: "",
190
- };
191
- function reduce(state, message) {
192
- if (!message.event.v.startsWith("KERI")) {
193
- return state;
194
- }
195
- switch (message.event.t) {
196
- case "icp":
197
- case "dip": {
198
- const icp = message.event;
199
- return {
200
- vn: [1, 0],
201
- i: icp.i,
202
- s: icp.s,
203
- p: "",
204
- d: icp.d,
205
- f: "0",
206
- dt: formatDate(new Date()),
207
- et: icp.t,
208
- kt: icp.kt,
209
- k: icp.k,
210
- nt: icp.nt,
211
- n: icp.n,
212
- bt: icp.bt,
213
- b: icp.b,
214
- c: icp.c,
215
- ee: {
216
- s: icp.s,
217
- d: icp.d,
218
- br: [],
219
- ba: icp.b,
220
- },
221
- di: "di" in icp && typeof icp.di === "string" ? icp.di : "",
222
- };
223
- }
224
- case "ixn": {
225
- assertDefined(state);
226
- const ixn = message.event;
227
- if (!state.d) {
228
- throw new Error("state.d is undefined");
229
- }
230
- return merge(state, {
231
- p: state.d,
232
- s: ixn.s,
233
- d: ixn.d,
234
- et: ixn.t,
235
- dt: formatDate(new Date()),
236
- });
237
- }
238
- default:
239
- throw new Error(`Unsupported event type: ${message.event.t}`);
240
- }
241
- }
242
- //# sourceMappingURL=event-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-store.js","sourceRoot":"","sources":["../../src/events/event-store.ts"],"names":[],"mappings":"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"}
@@ -1,248 +0,0 @@
1
- export type KeyEvent<T = Record<string, unknown>> = {
2
- v: string;
3
- t?: string;
4
- d: string;
5
- i?: string;
6
- s?: string;
7
- } & T;
8
- export type Threshold = string | string[];
9
- export interface InceptEventInit {
10
- k: string[];
11
- kt?: Threshold;
12
- n?: string[];
13
- nt?: Threshold;
14
- b?: string[];
15
- bt?: string;
16
- }
17
- export type DelegatedInceptEvent = KeyEvent<InceptEvent & {
18
- t: "dip";
19
- di: string;
20
- }>;
21
- export type InceptEvent = KeyEvent<{
22
- v: string;
23
- t: "icp";
24
- d: string;
25
- i: string;
26
- s: string;
27
- kt: Threshold;
28
- k: string[];
29
- nt: Threshold;
30
- n: string[];
31
- bt: string;
32
- b: string[];
33
- c: string[];
34
- a: Record<string, unknown>[];
35
- }>;
36
- export interface ExchangeEventInit {
37
- i: string;
38
- rp?: string;
39
- p?: string;
40
- dt?: string;
41
- r: string;
42
- q?: Record<string, unknown>;
43
- a?: Record<string, unknown>;
44
- e?: Record<string, unknown>;
45
- }
46
- export type ExchangeEvent = KeyEvent<{
47
- v: string;
48
- t: "exn";
49
- d: string;
50
- i: string;
51
- rp: string;
52
- p: string;
53
- r: string;
54
- q: Record<string, unknown>;
55
- a: Record<string, unknown>;
56
- e: Record<string, string | Record<string, unknown>>;
57
- }>;
58
- export interface InteractEventInit {
59
- i: string;
60
- s: string;
61
- p: string;
62
- a?: Record<string, unknown>[];
63
- }
64
- export type InteractEvent = KeyEvent<{
65
- v: string;
66
- t: "ixn";
67
- d: string;
68
- i: string;
69
- s: string;
70
- p: string;
71
- a: Record<string, unknown>[];
72
- }>;
73
- export interface QueryEventInit {
74
- dt?: Date;
75
- r?: string;
76
- rr?: string;
77
- q: Record<string, unknown>;
78
- }
79
- export type QueryEvent = KeyEvent<{
80
- v: string;
81
- t: "qry";
82
- d: string;
83
- dt: string;
84
- r: string;
85
- rr: string;
86
- q: Record<string, unknown>;
87
- }>;
88
- export interface ReceiptEventInit {
89
- d: string;
90
- i: string;
91
- s: string;
92
- }
93
- export type ReceiptEvent = KeyEvent<{
94
- v: string;
95
- t: "rct";
96
- d: string;
97
- i: string;
98
- s: string;
99
- }>;
100
- export interface ReplyEventInit {
101
- dt?: string;
102
- r: string;
103
- a: Record<string, unknown>;
104
- }
105
- export type ReplyEvent = KeyEvent<{
106
- v: string;
107
- t: "rpy";
108
- d: string;
109
- dt: string;
110
- r: string;
111
- a: Record<string, unknown>;
112
- }>;
113
- export interface RegistryInceptEventInit {
114
- ii: string;
115
- n?: string;
116
- }
117
- export type RegistryInceptEvent = KeyEvent<{
118
- t: "vcp";
119
- d: string;
120
- i: string;
121
- ii: string;
122
- s: string;
123
- c: string[];
124
- bt: string;
125
- b: string[];
126
- n: string;
127
- }>;
128
- export interface IssueEventInit {
129
- /**
130
- * Credential said
131
- */
132
- i: string;
133
- /**
134
- * Registry said
135
- */
136
- ri: string;
137
- dt?: string;
138
- }
139
- export type IssueEvent = KeyEvent<{
140
- t: "iss";
141
- d: string;
142
- /**
143
- * Credential said
144
- */
145
- i: string;
146
- s: string;
147
- /**
148
- * Registry said
149
- */
150
- ri: string;
151
- dt: string;
152
- }>;
153
- export interface CredentialInit {
154
- /**
155
- * Salty nonce
156
- */
157
- u?: string;
158
- i: string;
159
- ri: string;
160
- s: string;
161
- a: {
162
- i?: string;
163
- dt?: string;
164
- [key: string]: string | Record<string, unknown> | undefined;
165
- };
166
- r?: Record<string, unknown>;
167
- e?: Record<string, unknown>;
168
- }
169
- export interface CredentialSubject {
170
- /**
171
- * Subject SAID
172
- */
173
- d: string;
174
- /**
175
- * Issuee AID
176
- */
177
- i?: string;
178
- /**
179
- * Issuance timestamp
180
- */
181
- dt: string;
182
- [key: string]: string | undefined;
183
- }
184
- export interface CredentialRules {
185
- /**
186
- * Rules SAID
187
- */
188
- d: string;
189
- [key: string]: string | Record<string, unknown> | undefined;
190
- }
191
- export interface CredentialEdges {
192
- /**
193
- * Rules SAID
194
- */
195
- d: string;
196
- [key: string]: string | Record<string, unknown> | undefined;
197
- }
198
- export type CredentialEvent = {
199
- v: string;
200
- /**
201
- * Credential SAID
202
- */
203
- d: string;
204
- /**
205
- * Issuer AID
206
- */
207
- i: string;
208
- /**
209
- * Registry AID
210
- */
211
- ri: string;
212
- /**
213
- * Schema SAID
214
- */
215
- s: string;
216
- /**
217
- * Credential subject (claims)
218
- */
219
- a: CredentialSubject;
220
- /**
221
- * Credential rules
222
- */
223
- r: CredentialRules;
224
- /**
225
- * Credential edges
226
- */
227
- e?: CredentialEdges;
228
- };
229
- export declare function formatDate(date: Date): string;
230
- export declare function randomNonce(): string;
231
- export declare function saidify<T extends Record<string, unknown>>(event: T, labels?: string[]): T;
232
- export interface KeriEventCreatorOptions {
233
- version: number;
234
- }
235
- export declare class KeriEventCreator {
236
- #private;
237
- constructor(options: KeriEventCreatorOptions);
238
- registry(args: RegistryInceptEventInit): RegistryInceptEvent;
239
- issue(args: IssueEventInit): IssueEvent;
240
- incept(data: InceptEventInit): InceptEvent;
241
- exchange(data: ExchangeEventInit): ExchangeEvent;
242
- interact(data: InteractEventInit): InteractEvent;
243
- query(args: QueryEventInit): QueryEvent;
244
- receipt(data: ReceiptEventInit): ReceiptEvent;
245
- reply(data: ReplyEventInit): ReplyEvent;
246
- credential(data: CredentialInit): CredentialEvent;
247
- }
248
- export declare const keri: KeriEventCreator;
@@ -1,184 +0,0 @@
1
- import { blake3 } from "@noble/hashes/blake3.js";
2
- import { cesr, MatterCode } from "cesr/__unstable__";
3
- export function formatDate(date) {
4
- return date.toISOString().replace("Z", "000+00:00");
5
- }
6
- export function randomNonce() {
7
- return cesr.encodeMatter({ code: MatterCode.Salt_128, raw: crypto.getRandomValues(new Uint8Array(16)) });
8
- }
9
- function calculateSaid(event) {
10
- const encoder = new TextEncoder();
11
- const digest = cesr.encodeMatter({
12
- code: MatterCode.Blake3_256,
13
- raw: blake3
14
- .create({ dkLen: 32 })
15
- .update(encoder.encode(JSON.stringify(event)))
16
- .digest(),
17
- });
18
- return digest;
19
- }
20
- export function saidify(event, labels) {
21
- if (!labels?.length) {
22
- return event;
23
- }
24
- const digest = calculateSaid(event);
25
- for (const label of labels ?? []) {
26
- event[label] = digest;
27
- }
28
- return event;
29
- }
30
- function isTransferable(key) {
31
- const raw = cesr.decodeMatter(key);
32
- switch (raw.code) {
33
- case MatterCode.ECDSA_256k1N:
34
- case MatterCode.Ed25519N:
35
- case MatterCode.Ed448N:
36
- return false;
37
- default:
38
- return true;
39
- }
40
- }
41
- function resolveBackerThreshold(data) {
42
- if (data.bt) {
43
- return data.bt;
44
- }
45
- if (!data.b || data.b.length === 0) {
46
- return 0;
47
- }
48
- if (data.b.length === 1) {
49
- return 1;
50
- }
51
- return data.b.length - 1;
52
- }
53
- export class KeriEventCreator {
54
- #version;
55
- constructor(options) {
56
- this.#version = options.version;
57
- }
58
- #encode(data, labels = ["d"]) {
59
- for (const label of labels) {
60
- if (!(label in data)) {
61
- throw new Error(`Input missing label '${label}'`);
62
- }
63
- data[label] = "#".repeat(44);
64
- }
65
- const event = JSON.parse(cesr.encodeMessage(data, { legacy: this.#version === 1 }));
66
- return saidify(event, labels);
67
- }
68
- registry(args) {
69
- return this.#encode({
70
- t: "vcp",
71
- d: "",
72
- i: "",
73
- ii: args.ii,
74
- s: "0",
75
- c: ["NB"],
76
- bt: "0",
77
- b: [],
78
- n: args.n ?? randomNonce(),
79
- }, ["d", "i"]);
80
- }
81
- issue(args) {
82
- return this.#encode({
83
- t: "iss",
84
- d: "",
85
- i: args.i,
86
- s: "0",
87
- ri: args.ri,
88
- dt: args.dt ?? formatDate(new Date()),
89
- });
90
- }
91
- incept(data) {
92
- if (data.k.length === 0) {
93
- throw new Error("No keys provided in inception event");
94
- }
95
- const transferable = data.k.length > 1 || isTransferable(data.k[0]);
96
- const labels = ["d"];
97
- if (transferable) {
98
- labels.push("i");
99
- }
100
- return this.#encode({
101
- t: "icp",
102
- d: "",
103
- i: transferable ? "" : data.k[0],
104
- s: "0",
105
- kt: data.kt ?? data.k.length.toString(),
106
- k: data.k,
107
- nt: data.nt ?? data.n?.length.toString() ?? "0",
108
- n: data.n ?? [],
109
- bt: resolveBackerThreshold(data).toString(),
110
- b: data.b ?? [],
111
- c: [],
112
- a: [],
113
- }, labels);
114
- }
115
- exchange(data) {
116
- return this.#encode({
117
- t: "exn",
118
- d: "",
119
- i: data.i,
120
- rp: data.rp || "",
121
- p: data.p || "",
122
- dt: data.dt || formatDate(new Date()),
123
- r: data.r,
124
- q: data.q || {},
125
- a: data.a || {},
126
- e: data.e ? saidify({ ...(data.e ?? {}), d: "" }, ["d"]) : {},
127
- });
128
- }
129
- interact(data) {
130
- return this.#encode({
131
- t: "ixn",
132
- d: "",
133
- i: data.i,
134
- s: data.s,
135
- p: data.p,
136
- a: data.a ?? [],
137
- });
138
- }
139
- query(args) {
140
- return this.#encode({
141
- t: "qry",
142
- d: "",
143
- dt: formatDate(args.dt ?? new Date()),
144
- r: args.r ?? "",
145
- rr: args.rr ?? "",
146
- q: args.q,
147
- });
148
- }
149
- receipt(data) {
150
- return this.#encode({
151
- t: "rct",
152
- d: data.d,
153
- i: data.i,
154
- s: data.s,
155
- }, []);
156
- }
157
- reply(data) {
158
- return this.#encode({
159
- t: "rpy",
160
- d: "",
161
- dt: data.dt ?? formatDate(new Date()),
162
- r: data.r,
163
- a: data.a,
164
- });
165
- }
166
- credential(data) {
167
- const event = JSON.parse(cesr.encodeMessage({
168
- d: "#".repeat(44),
169
- ...(data.u && { u: data.u }),
170
- i: data.i,
171
- ri: data.ri,
172
- s: data.s,
173
- a: saidify({
174
- d: "#".repeat(44),
175
- ...data.a,
176
- }, ["d"]),
177
- ...(data.e && { e: saidify({ d: "#".repeat(44), ...data.e }, ["d"]) }),
178
- r: saidify({ d: "#".repeat(44), ...data.r }, ["d"]),
179
- }, { legacy: this.#version === 1, protocol: "ACDC" }));
180
- return saidify(event, ["d"]);
181
- }
182
- }
183
- export const keri = new KeriEventCreator({ version: 1 });
184
- //# sourceMappingURL=events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events/events.ts"],"names":[],"mappings":"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"}