keri 0.0.0-dev.8b0703e → 0.0.0-dev.bf75350

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 (67) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +3 -0
  3. package/dist/cli/main.d.ts +2 -0
  4. package/dist/cli/main.js +177 -0
  5. package/dist/cli/main.js.map +1 -0
  6. package/dist/client.d.ts +21 -0
  7. package/dist/client.js +72 -0
  8. package/dist/client.js.map +1 -0
  9. package/dist/controller.d.ts +65 -0
  10. package/dist/controller.js +475 -0
  11. package/dist/controller.js.map +1 -0
  12. package/dist/data-type.js +1 -0
  13. package/dist/data-type.js.map +1 -0
  14. package/dist/db/storage-sqlite.d.ts +12 -0
  15. package/dist/db/storage-sqlite.js +57 -0
  16. package/dist/db/storage-sqlite.js.map +1 -0
  17. package/dist/db/storage.d.ts +18 -0
  18. package/dist/db/storage.js +37 -0
  19. package/dist/db/storage.js.map +1 -0
  20. package/dist/events/event-store.d.ts +133 -0
  21. package/dist/events/event-store.js +215 -0
  22. package/dist/events/event-store.js.map +1 -0
  23. package/dist/events/events.d.ts +251 -0
  24. package/dist/events/events.js +184 -0
  25. package/dist/events/events.js.map +1 -0
  26. package/dist/keystore/encrypt.d.ts +10 -2
  27. package/dist/keystore/encrypt.js +26 -25
  28. package/dist/keystore/encrypt.js.map +1 -0
  29. package/dist/keystore/keystore.d.ts +16 -2
  30. package/dist/keystore/keystore.js +72 -1
  31. package/dist/keystore/keystore.js.map +1 -0
  32. package/dist/main.d.ts +6 -2
  33. package/dist/main.js +7 -2
  34. package/dist/main.js.map +1 -0
  35. package/package.json +27 -24
  36. package/dist/db/sqlite-db.d.ts +0 -14
  37. package/dist/db/sqlite-db.js +0 -90
  38. package/dist/events/common.d.ts +0 -6
  39. package/dist/events/common.js +0 -1
  40. package/dist/events/incept.d.ts +0 -26
  41. package/dist/events/incept.js +0 -28
  42. package/dist/events/interact.d.ts +0 -14
  43. package/dist/events/interact.js +0 -20
  44. package/dist/events/main.d.ts +0 -4
  45. package/dist/events/main.js +0 -4
  46. package/dist/events/reply.d.ts +0 -15
  47. package/dist/events/reply.js +0 -20
  48. package/dist/keri.d.ts +0 -1
  49. package/dist/keri.js +0 -110
  50. package/dist/keystore/keystore-fs.d.ts +0 -13
  51. package/dist/keystore/keystore-fs.js +0 -50
  52. package/dist/keystore/keystore-web.d.ts +0 -12
  53. package/dist/keystore/keystore-web.js +0 -48
  54. package/dist/main-common.d.ts +0 -7
  55. package/dist/main-common.js +0 -7
  56. package/dist/main-web.d.ts +0 -2
  57. package/dist/main-web.js +0 -2
  58. package/dist/parser/base64.d.ts +0 -6
  59. package/dist/parser/base64.js +0 -74
  60. package/dist/parser/cesr-encoding.d.ts +0 -34
  61. package/dist/parser/cesr-encoding.js +0 -158
  62. package/dist/parser/codes.d.ts +0 -143
  63. package/dist/parser/codes.js +0 -266
  64. package/dist/parser/parser.d.ts +0 -11
  65. package/dist/parser/parser.js +0 -150
  66. package/dist/parser/version.d.ts +0 -11
  67. package/dist/parser/version.js +0 -56
@@ -0,0 +1,133 @@
1
+ import { type KeyEvent, type Threshold } from "./events.ts";
2
+ export interface KeyEventMessageInput<T extends KeyEvent = KeyEvent> {
3
+ event: T;
4
+ seal?: KeyEventSeal;
5
+ signatures?: string[];
6
+ receipts?: KeyEventReceipt[];
7
+ }
8
+ export interface KeyEventMessage<T extends KeyEvent = KeyEvent> extends KeyEventMessageInput<T> {
9
+ timestamp: Date;
10
+ signatures: string[];
11
+ receipts: KeyEventReceipt[];
12
+ }
13
+ export interface LocationRecord {
14
+ url: string;
15
+ scheme: string;
16
+ eid: string;
17
+ }
18
+ export interface EndRoleRecord {
19
+ cid: string;
20
+ role: string;
21
+ eid: string;
22
+ }
23
+ export interface ListArgs {
24
+ i?: string;
25
+ d?: string;
26
+ t?: string;
27
+ r?: string;
28
+ a?: Partial<EndRoleRecord> | Partial<LocationRecord> | KeyEventSeal[];
29
+ }
30
+ export interface KeyEventSeal {
31
+ i: string;
32
+ s: string;
33
+ d: string;
34
+ }
35
+ export interface KeyEventReceipt {
36
+ backer: string;
37
+ signature: string;
38
+ }
39
+ export interface KeyValueStorage {
40
+ set(records: Record<string, string>): Promise<void>;
41
+ get(key: string): Promise<string | null>;
42
+ }
43
+ export declare class ControllerEventStore {
44
+ #private;
45
+ constructor(db: KeyValueStorage);
46
+ save(event: KeyEventMessageInput): Promise<void>;
47
+ iter(said: string, from?: number): AsyncIterable<KeyEventMessage>;
48
+ get(said: string): Promise<KeyEventMessage | null>;
49
+ state(said: string): Promise<KeyState>;
50
+ list(said: string, from?: number): Promise<KeyEventMessage[]>;
51
+ location(cid: string): Promise<LocationRecord | null>;
52
+ endrole(cid: string, role: string): Promise<EndRoleRecord | null>;
53
+ }
54
+ export interface KeyState {
55
+ vn: [number, number];
56
+ /**
57
+ * Key state identifier
58
+ */
59
+ i: string;
60
+ /**
61
+ * Sequence number of latest event in Key Event Log
62
+ */
63
+ s: string;
64
+ /**
65
+ * Digest of prior event
66
+ */
67
+ p: string;
68
+ /**
69
+ * Digest of latest event
70
+ */
71
+ d: string;
72
+ /**
73
+ * Ordinal number of latest event in KEL
74
+ */
75
+ f: string;
76
+ /**
77
+ * Datetime iso-8601 of when this key state was derived
78
+ */
79
+ dt: string;
80
+ /**
81
+ * Type of latest event
82
+ */
83
+ et: string;
84
+ /**
85
+ * Current key state threshold
86
+ */
87
+ kt: Threshold;
88
+ /**
89
+ * Current signing keys
90
+ */
91
+ k: string[];
92
+ /**
93
+ * Next key state threshold
94
+ */
95
+ nt: Threshold;
96
+ /**
97
+ * Digests of next signing keys
98
+ */
99
+ n: string[];
100
+ /**
101
+ * Backer threshold
102
+ */
103
+ bt: string;
104
+ /**
105
+ * Backers
106
+ */
107
+ b: string[];
108
+ c: string[];
109
+ /**
110
+ * Latest establishment event
111
+ */
112
+ ee: KeyStateEstablishmentRecord;
113
+ di: string;
114
+ }
115
+ export interface KeyStateEstablishmentRecord {
116
+ /**
117
+ * Sequence number of latest establishment event
118
+ */
119
+ s: string;
120
+ /**
121
+ * Digest of latest establishment event
122
+ */
123
+ d: string;
124
+ /**
125
+ * Backers removed in latest establishment event
126
+ */
127
+ br: string[];
128
+ /**
129
+ * Backers added in latest establishment event
130
+ */
131
+ ba: string[];
132
+ }
133
+ export declare function resolveKeyState(event: Iterable<KeyEventMessage> | AsyncIterable<KeyEventMessage>): Promise<KeyState>;
@@ -0,0 +1,215 @@
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
+ const records = {};
14
+ switch (event.event.t) {
15
+ case "icp":
16
+ case "ixn":
17
+ case "iss":
18
+ case "vcp":
19
+ case "rot":
20
+ records[`key_event_log.${event.event.i}.${event.event.s?.padStart(24, "0")}`] = event.event.d;
21
+ break;
22
+ case "rpy":
23
+ switch (event.event.r) {
24
+ case "/end/role/add": {
25
+ if (event.event.a &&
26
+ typeof event.event.a === "object" &&
27
+ "eid" in event.event.a &&
28
+ typeof event.event.a.cid === "string") {
29
+ records[`end_role.${event.event.a.cid}.${event.event.a.role}`] = JSON.stringify(event.event.a);
30
+ }
31
+ break;
32
+ }
33
+ case "/loc/scheme": {
34
+ if (event.event.a &&
35
+ typeof event.event.a === "object" &&
36
+ "eid" in event.event.a &&
37
+ typeof event.event.a.eid === "string" &&
38
+ typeof event.event.a.scheme === "string" &&
39
+ ["http", "https"].includes(event.event.a.scheme)) {
40
+ records[`location.${event.event.a.eid}`] = JSON.stringify(event.event.a);
41
+ }
42
+ }
43
+ }
44
+ }
45
+ records[`key_event.${event.event.d}`] = JSON.stringify(event.event);
46
+ records[`key_event_timestamp.${event.event.d}`] = new Date().toISOString();
47
+ if (event.seal) {
48
+ records[`key_event_seal.${event.event.d}`] = JSON.stringify(event.seal);
49
+ }
50
+ if (event.signatures) {
51
+ records[`key_event_sigs.${event.event.d}`] = JSON.stringify(event.signatures);
52
+ }
53
+ if (event.receipts) {
54
+ records[`key_event_receipts.${event.event.d}`] = JSON.stringify(event.receipts);
55
+ }
56
+ await this.#db.set(records);
57
+ }
58
+ async *iter(said, from = 0) {
59
+ for (let start = from; start < Number.MAX_SAFE_INTEGER; start++) {
60
+ const digest = await this.#db.get(`key_event_log.${said}.${start.toString(16).padStart(24, "0")}`);
61
+ if (digest) {
62
+ const result = await this.get(digest);
63
+ assertKeyEvent(result?.event);
64
+ yield result;
65
+ }
66
+ else {
67
+ return;
68
+ }
69
+ }
70
+ }
71
+ async get(said) {
72
+ const item = JSON.parse((await this.#db.get(`key_event.${said}`)) ?? JSON.stringify(null));
73
+ if (!item) {
74
+ return null;
75
+ }
76
+ assertKeyEvent(item);
77
+ const sigs = JSON.parse((await this.#db.get(`key_event_sigs.${said}`)) ?? "[]");
78
+ const receipts = JSON.parse((await this.#db.get(`key_event_receipts.${said}`)) ?? "[]");
79
+ const seal = JSON.parse((await this.#db.get(`key_event_seal.${said}`)) ?? JSON.stringify(null));
80
+ const timestamp = new Date(Date.parse((await this.#db.get(`key_event_timestamp.${said}`)) ?? "0"));
81
+ return {
82
+ event: item,
83
+ signatures: sigs,
84
+ receipts: receipts,
85
+ timestamp,
86
+ seal: (seal || undefined),
87
+ };
88
+ }
89
+ async state(said) {
90
+ let state = INITIAL_STATE;
91
+ for await (const message of this.iter(said)) {
92
+ state = reduce(state, message);
93
+ }
94
+ return state;
95
+ }
96
+ async list(said, from = 0) {
97
+ const messages = [];
98
+ for await (const message of this.iter(said, from)) {
99
+ messages.push(message);
100
+ }
101
+ return messages;
102
+ }
103
+ async location(cid) {
104
+ const result = JSON.parse((await this.#db.get(`location.${cid}`)) ?? JSON.stringify(null));
105
+ return result;
106
+ }
107
+ async endrole(cid, role) {
108
+ const result = JSON.parse((await this.#db.get(`end_role.${cid}.${role}`)) ?? JSON.stringify(null));
109
+ return result;
110
+ }
111
+ }
112
+ function assertDefined(obj) {
113
+ if (obj === null) {
114
+ throw new Error("Object is null");
115
+ }
116
+ }
117
+ function merge(a, b) {
118
+ return {
119
+ vn: [1, 0],
120
+ i: b.i ?? a.i,
121
+ s: b.s ?? a.s,
122
+ p: b.p ?? a.p,
123
+ d: b.d ?? a.d,
124
+ f: b.f ?? a.f,
125
+ dt: b.dt ?? a.dt ?? formatDate(new Date()),
126
+ et: b.et ?? a.et,
127
+ kt: b.kt ?? a.kt,
128
+ k: b.k ?? a.k,
129
+ nt: b.nt ?? a.nt,
130
+ n: b.n ?? a.n,
131
+ bt: b.bt ?? a.bt,
132
+ b: b.b ?? a.b,
133
+ c: b.c ?? a.c,
134
+ ee: b.ee ?? a.ee,
135
+ di: b.di ?? a.di,
136
+ };
137
+ }
138
+ export async function resolveKeyState(event) {
139
+ let state = INITIAL_STATE;
140
+ for await (const message of event) {
141
+ state = reduce(state, message);
142
+ }
143
+ return state;
144
+ }
145
+ const INITIAL_STATE = {
146
+ vn: [1, 0],
147
+ i: "",
148
+ s: "",
149
+ p: "",
150
+ d: "",
151
+ f: "0",
152
+ dt: formatDate(new Date()),
153
+ et: "",
154
+ kt: "0",
155
+ k: [],
156
+ nt: "0",
157
+ n: [],
158
+ bt: "",
159
+ b: [],
160
+ c: [],
161
+ ee: { s: "", d: "", br: [], ba: [] },
162
+ di: "",
163
+ };
164
+ function reduce(state, message) {
165
+ if (!message.event.v.startsWith("KERI")) {
166
+ return state;
167
+ }
168
+ switch (message.event.t) {
169
+ case "icp":
170
+ case "dip": {
171
+ const icp = message.event;
172
+ return {
173
+ vn: [1, 0],
174
+ i: icp.i,
175
+ s: icp.s,
176
+ p: "",
177
+ d: icp.d,
178
+ f: "0",
179
+ dt: formatDate(new Date()),
180
+ et: icp.t,
181
+ kt: icp.kt,
182
+ k: icp.k,
183
+ nt: icp.nt,
184
+ n: icp.n,
185
+ bt: icp.bt,
186
+ b: icp.b,
187
+ c: icp.c,
188
+ ee: {
189
+ s: icp.s,
190
+ d: icp.d,
191
+ br: [],
192
+ ba: icp.b,
193
+ },
194
+ di: "di" in icp && typeof icp.di === "string" ? icp.di : "",
195
+ };
196
+ }
197
+ case "ixn": {
198
+ assertDefined(state);
199
+ const ixn = message.event;
200
+ if (!state.d) {
201
+ throw new Error("state.d is undefined");
202
+ }
203
+ return merge(state, {
204
+ p: state.d,
205
+ s: ixn.s,
206
+ d: ixn.d,
207
+ et: ixn.t,
208
+ dt: formatDate(new Date()),
209
+ });
210
+ }
211
+ default:
212
+ throw new Error(`Unsupported event type: ${message.event.t}`);
213
+ }
214
+ }
215
+ //# sourceMappingURL=event-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-store.js","sourceRoot":"","sources":["../../src/events/event-store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,GAMX,MAAM,aAAa,CAAC;AAmDrB,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,uCAAuC,OAAO,KAAK,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED,MAAM,OAAO,oBAAoB;IAC/B,GAAG,CAAkB;IAErB,YAAY,EAAmB;QAC7B,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAA2B;QACpC,MAAM,OAAO,GAA2B,EAAE,CAAC;QAE3C,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,KAAK,KAAK,CAAC;YACX,KAAK,KAAK,CAAC;YACX,KAAK,KAAK,CAAC;YACX,KAAK,KAAK,CAAC;YACX,KAAK,KAAK;gBACR,OAAO,CAAC,iBAAiB,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9F,MAAM;YACR,KAAK,KAAK;gBACR,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBACtB,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,IACE,KAAK,CAAC,KAAK,CAAC,CAAC;4BACb,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,QAAQ;4BACjC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;4BACtB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,EACrC,CAAC;4BACD,OAAO,CAAC,YAAY,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACjG,CAAC;wBAED,MAAM;oBACR,CAAC;oBACD,KAAK,aAAa,CAAC,CAAC,CAAC;wBACnB,IACE,KAAK,CAAC,KAAK,CAAC,CAAC;4BACb,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,QAAQ;4BACjC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;4BACtB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ;4BACrC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ;4BACxC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAChD,CAAC;4BACD,OAAO,CAAC,YAAY,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC3E,CAAC;oBACH,CAAC;gBACH,CAAC;QACL,CAAC;QAED,OAAO,CAAC,aAAa,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpE,OAAO,CAAC,uBAAuB,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE3E,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,kBAAkB,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,CAAC,kBAAkB,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,CAAC,sBAAsB,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,CAAC,IAAI,CAAC,IAAY,EAAE,IAAI,GAAG,CAAC;QAChC,KAAK,IAAI,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,CAAC;YAChE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAEnG,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACtC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC9B,MAAM,MAAM,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3F,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QAED,cAAc,CAAC,IAAI,CAAC,CAAC;QAErB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QACxF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAChG,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QAEnG,OAAO;YACL,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAgB;YAC5B,QAAQ,EAAE,QAAwC;YAClD,SAAS;YACT,IAAI,EAAE,CAAC,IAAI,IAAI,SAAS,CAA4B;SACrD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,IAAI,KAAK,GAAa,aAAa,CAAC;QAEpC,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,IAAI,GAAG,CAAC;QAC/B,MAAM,QAAQ,GAAsB,EAAE,CAAC;QAEvC,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YAClD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAW;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3F,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,IAAY;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACnG,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,SAAS,aAAa,CAAI,GAAa;IACrC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAqGD,SAAS,KAAK,CAAC,CAAW,EAAE,CAAoB;IAC9C,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACV,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACb,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACb,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACb,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACb,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACb,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1C,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;QAChB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;QAChB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACb,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;QAChB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACb,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;QAChB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACb,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACb,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;QAChB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAiE;IAEjE,IAAI,KAAK,GAAa,aAAa,CAAC;IAEpC,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAClC,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,aAAa,GAAa;IAC9B,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACV,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,GAAG;IACN,EAAE,EAAE,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;IAC1B,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,GAAG;IACP,CAAC,EAAE,EAAE;IACL,EAAE,EAAE,GAAG;IACP,CAAC,EAAE,EAAE;IACL,EAAE,EAAE,EAAE;IACN,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpC,EAAE,EAAE,EAAE;CACP,CAAC;AAEF,SAAS,MAAM,CAAC,KAAe,EAAE,OAAwB;IACvD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACxB,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,GAAG,GAAG,OAAO,CAAC,KAA2C,CAAC;YAEhE,OAAO;gBACL,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBACV,CAAC,EAAE,GAAG,CAAC,CAAC;gBACR,CAAC,EAAE,GAAG,CAAC,CAAC;gBACR,CAAC,EAAE,EAAE;gBACL,CAAC,EAAE,GAAG,CAAC,CAAC;gBACR,CAAC,EAAE,GAAG;gBACN,EAAE,EAAE,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC1B,EAAE,EAAE,GAAG,CAAC,CAAC;gBACT,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,CAAC,EAAE,GAAG,CAAC,CAAC;gBACR,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,CAAC,EAAE,GAAG,CAAC,CAAC;gBACR,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,CAAC,EAAE,GAAG,CAAC,CAAC;gBACR,CAAC,EAAE,GAAG,CAAC,CAAC;gBACR,EAAE,EAAE;oBACF,CAAC,EAAE,GAAG,CAAC,CAAC;oBACR,CAAC,EAAE,GAAG,CAAC,CAAC;oBACR,EAAE,EAAE,EAAE;oBACN,EAAE,EAAE,GAAG,CAAC,CAAC;iBACV;gBACD,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;aAC5D,CAAC;QACJ,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAsB,CAAC;YAE3C,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAC1C,CAAC;YAED,OAAO,KAAK,CAAC,KAAK,EAAE;gBAClB,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,CAAC,EAAE,GAAG,CAAC,CAAC;gBACR,CAAC,EAAE,GAAG,CAAC,CAAC;gBACR,EAAE,EAAE,GAAG,CAAC,CAAC;gBACT,EAAE,EAAE,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;aAC3B,CAAC,CAAC;QACL,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
@@ -0,0 +1,251 @@
1
+ import type { DataArray, DataObject, DataValue } from "../data-type.ts";
2
+ export type KeyEvent<T = Record<string, DataValue>> = {
3
+ v: string;
4
+ t?: string;
5
+ d: string;
6
+ i?: string;
7
+ s?: string;
8
+ } & T;
9
+ export type Threshold = string | string[];
10
+ export interface InceptEventInit {
11
+ k: string[];
12
+ kt?: Threshold;
13
+ n?: string[];
14
+ nt?: Threshold;
15
+ b?: string[];
16
+ bt?: string;
17
+ }
18
+ export type DelegatedInceptEvent = KeyEvent<InceptEvent & {
19
+ t: "dip";
20
+ di: string;
21
+ }>;
22
+ export type InceptEvent = KeyEvent<{
23
+ v: string;
24
+ t: "icp";
25
+ d: string;
26
+ i: string;
27
+ s: string;
28
+ kt: Threshold;
29
+ k: string[];
30
+ nt: Threshold;
31
+ n: string[];
32
+ bt: string;
33
+ b: string[];
34
+ c: string[];
35
+ a: DataArray;
36
+ }>;
37
+ export interface ExchangeEventInit {
38
+ i: string;
39
+ rp?: string;
40
+ p?: string;
41
+ dt?: string;
42
+ r: string;
43
+ q?: DataObject;
44
+ a?: DataObject;
45
+ e?: DataObject;
46
+ }
47
+ export type ExchangeEvent = KeyEvent<{
48
+ v: string;
49
+ t: "exn";
50
+ d: string;
51
+ i: string;
52
+ rp: string;
53
+ p: string;
54
+ r: string;
55
+ q: DataObject;
56
+ a: DataObject;
57
+ e: DataObject;
58
+ }>;
59
+ export interface InteractEventInit {
60
+ i: string;
61
+ s: string;
62
+ p: string;
63
+ a?: DataArray;
64
+ }
65
+ export type InteractEvent = KeyEvent<{
66
+ v: string;
67
+ t: "ixn";
68
+ d: string;
69
+ i: string;
70
+ s: string;
71
+ p: string;
72
+ a: DataArray;
73
+ }>;
74
+ export interface QueryEventInit {
75
+ dt?: Date;
76
+ r?: string;
77
+ rr?: string;
78
+ q: DataObject;
79
+ }
80
+ export type QueryEvent = KeyEvent<{
81
+ v: string;
82
+ t: "qry";
83
+ d: string;
84
+ dt: string;
85
+ r: string;
86
+ rr: string;
87
+ q: DataObject;
88
+ }>;
89
+ export interface ReceiptEventInit {
90
+ d: string;
91
+ i: string;
92
+ s: string;
93
+ }
94
+ export type ReceiptEvent = KeyEvent<{
95
+ v: string;
96
+ t: "rct";
97
+ d: string;
98
+ i: string;
99
+ s: string;
100
+ }>;
101
+ export interface ReplyEventInit {
102
+ dt?: string;
103
+ r: string;
104
+ a: DataObject;
105
+ }
106
+ export type ReplyEvent = KeyEvent<{
107
+ v: string;
108
+ t: "rpy";
109
+ d: string;
110
+ dt: string;
111
+ r: string;
112
+ a: DataObject;
113
+ }>;
114
+ export interface RegistryInceptEventInit {
115
+ ii: string;
116
+ n?: string;
117
+ }
118
+ export type RegistryInceptEvent = KeyEvent<{
119
+ t: "vcp";
120
+ d: string;
121
+ i: string;
122
+ ii: string;
123
+ s: string;
124
+ c: string[];
125
+ bt: string;
126
+ b: string[];
127
+ n: string;
128
+ }>;
129
+ export interface IssueEventInit {
130
+ /**
131
+ * Credential said
132
+ */
133
+ i: string;
134
+ /**
135
+ * Registry said
136
+ */
137
+ ri: string;
138
+ dt?: string;
139
+ }
140
+ export type IssueEvent = KeyEvent<{
141
+ t: "iss";
142
+ d: string;
143
+ /**
144
+ * Credential said
145
+ */
146
+ i: string;
147
+ s: string;
148
+ /**
149
+ * Registry said
150
+ */
151
+ ri: string;
152
+ dt: string;
153
+ }>;
154
+ export interface CredentialInit {
155
+ /**
156
+ * Salty nonce
157
+ */
158
+ u?: string;
159
+ i: string;
160
+ ri: string;
161
+ s: string;
162
+ a: {
163
+ i?: string;
164
+ dt?: string;
165
+ [key: string]: DataValue | undefined;
166
+ };
167
+ r?: Record<string, DataValue>;
168
+ e?: Record<string, DataValue>;
169
+ }
170
+ export interface CredentialSubject {
171
+ /**
172
+ * Subject SAID
173
+ */
174
+ d: string;
175
+ /**
176
+ * Issuee AID
177
+ */
178
+ i?: string;
179
+ /**
180
+ * Issuance timestamp
181
+ */
182
+ dt: string;
183
+ [key: string]: DataValue | undefined;
184
+ }
185
+ export interface CredentialRules {
186
+ /**
187
+ * Rules SAID
188
+ */
189
+ d: string;
190
+ [key: string]: DataValue | undefined;
191
+ }
192
+ export interface CredentialEdges {
193
+ /**
194
+ * Rules SAID
195
+ */
196
+ d: string;
197
+ [key: string]: DataValue | undefined;
198
+ }
199
+ export type CredentialEvent = {
200
+ v: string;
201
+ /**
202
+ * Credential SAID
203
+ */
204
+ d: string;
205
+ /**
206
+ * Issuer AID
207
+ */
208
+ i: string;
209
+ /**
210
+ * Registry AID
211
+ */
212
+ ri: string;
213
+ /**
214
+ * Schema SAID
215
+ */
216
+ s: string;
217
+ /**
218
+ * Credential subject (claims)
219
+ */
220
+ a: CredentialSubject;
221
+ /**
222
+ * Credential rules
223
+ */
224
+ r: CredentialRules;
225
+ /**
226
+ * Credential edges
227
+ */
228
+ e?: CredentialEdges;
229
+ };
230
+ export declare function formatDate(date: Date): string;
231
+ export declare function randomNonce(): string;
232
+ export declare function saidify<T extends DataObject & {
233
+ d: string;
234
+ }>(event: T, labels?: string[]): T;
235
+ export interface KeriEventCreatorOptions {
236
+ version: number;
237
+ }
238
+ export declare class KeriEventCreator {
239
+ #private;
240
+ constructor(options: KeriEventCreatorOptions);
241
+ registry(args: RegistryInceptEventInit): RegistryInceptEvent;
242
+ issue(args: IssueEventInit): IssueEvent;
243
+ incept(data: InceptEventInit): InceptEvent;
244
+ exchange(data: ExchangeEventInit): ExchangeEvent;
245
+ interact(data: InteractEventInit): InteractEvent;
246
+ query(args: QueryEventInit): QueryEvent;
247
+ receipt(data: ReceiptEventInit): ReceiptEvent;
248
+ reply(data: ReplyEventInit): ReplyEvent;
249
+ credential(data: CredentialInit): CredentialEvent;
250
+ }
251
+ export declare const keri: KeriEventCreator;