keri 0.0.0-dev.fc3df9d → 0.0.4

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 (61) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +10 -0
  3. package/dist/cli/main.d.ts +2 -0
  4. package/dist/cli/main.js +175 -0
  5. package/dist/cli/main.js.map +1 -0
  6. package/dist/client.d.ts +21 -0
  7. package/dist/client.js +88 -0
  8. package/dist/client.js.map +1 -0
  9. package/dist/controller.d.ts +64 -0
  10. package/dist/controller.js +472 -0
  11. package/dist/controller.js.map +1 -0
  12. package/dist/db/storage-sqlite.d.ts +12 -0
  13. package/dist/db/storage-sqlite.js +53 -0
  14. package/dist/db/storage-sqlite.js.map +1 -0
  15. package/dist/db/storage.d.ts +18 -0
  16. package/dist/db/storage.js +29 -0
  17. package/dist/db/storage.js.map +1 -0
  18. package/dist/events/event-store.d.ts +126 -0
  19. package/dist/events/event-store.js +242 -0
  20. package/dist/events/event-store.js.map +1 -0
  21. package/dist/events/events.d.ts +248 -0
  22. package/dist/events/events.js +184 -0
  23. package/dist/events/events.js.map +1 -0
  24. package/dist/keystore/encrypt.d.ts +10 -2
  25. package/dist/keystore/encrypt.js +26 -25
  26. package/dist/keystore/encrypt.js.map +1 -0
  27. package/dist/keystore/key-manager.d.ts +26 -0
  28. package/dist/keystore/key-manager.js +70 -0
  29. package/dist/keystore/key-manager.js.map +1 -0
  30. package/dist/main.d.ts +6 -2
  31. package/dist/main.js +7 -2
  32. package/dist/main.js.map +1 -0
  33. package/package.json +27 -24
  34. package/dist/data-type.d.ts +0 -9
  35. package/dist/data-type.js +0 -1
  36. package/dist/db/sqlite-db.d.ts +0 -14
  37. package/dist/db/sqlite-db.js +0 -90
  38. package/dist/event.d.ts +0 -45
  39. package/dist/event.js +0 -44
  40. package/dist/keri.d.ts +0 -1
  41. package/dist/keri.js +0 -110
  42. package/dist/keystore/keystore-fs.d.ts +0 -13
  43. package/dist/keystore/keystore-fs.js +0 -50
  44. package/dist/keystore/keystore-web.d.ts +0 -12
  45. package/dist/keystore/keystore-web.js +0 -48
  46. package/dist/keystore/keystore.d.ts +0 -15
  47. package/dist/keystore/keystore.js +0 -1
  48. package/dist/main-common.d.ts +0 -7
  49. package/dist/main-common.js +0 -7
  50. package/dist/main-web.d.ts +0 -2
  51. package/dist/main-web.js +0 -2
  52. package/dist/parser/base64.d.ts +0 -6
  53. package/dist/parser/base64.js +0 -74
  54. package/dist/parser/cesr-encoding.d.ts +0 -34
  55. package/dist/parser/cesr-encoding.js +0 -158
  56. package/dist/parser/codes.d.ts +0 -143
  57. package/dist/parser/codes.js +0 -266
  58. package/dist/parser/parser.d.ts +0 -11
  59. package/dist/parser/parser.js +0 -150
  60. package/dist/parser/version.d.ts +0 -11
  61. package/dist/parser/version.js +0 -56
@@ -0,0 +1,126 @@
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 KeyEventSeal {
24
+ i: string;
25
+ s: string;
26
+ d: string;
27
+ }
28
+ export interface KeyEventReceipt {
29
+ backer: string;
30
+ signature: string;
31
+ }
32
+ export interface KeyValueStorage {
33
+ set(key: string, value: string): Promise<void>;
34
+ get(key: string): Promise<string | null>;
35
+ }
36
+ export declare class ControllerEventStore {
37
+ #private;
38
+ constructor(db: KeyValueStorage);
39
+ save(event: KeyEventMessageInput): Promise<void>;
40
+ iter(said: string, from?: number): AsyncIterable<KeyEventMessage>;
41
+ get(said: string): Promise<KeyEventMessage | null>;
42
+ state(said: string): Promise<KeyState>;
43
+ list(said: string, from?: number): Promise<KeyEventMessage[]>;
44
+ location(cid: string): Promise<LocationRecord | null>;
45
+ endrole(cid: string, role: string): Promise<EndRoleRecord | null>;
46
+ }
47
+ export interface KeyState {
48
+ vn: [number, number];
49
+ /**
50
+ * Key state identifier
51
+ */
52
+ i: string;
53
+ /**
54
+ * Sequence number of latest event in Key Event Log
55
+ */
56
+ s: string;
57
+ /**
58
+ * Digest of prior event
59
+ */
60
+ p: string;
61
+ /**
62
+ * Digest of latest event
63
+ */
64
+ d: string;
65
+ /**
66
+ * Ordinal number of latest event in KEL
67
+ */
68
+ f: string;
69
+ /**
70
+ * Datetime iso-8601 of when this key state was derived
71
+ */
72
+ dt: string;
73
+ /**
74
+ * Type of latest event
75
+ */
76
+ et: string;
77
+ /**
78
+ * Current key state threshold
79
+ */
80
+ kt: Threshold;
81
+ /**
82
+ * Current signing keys
83
+ */
84
+ k: string[];
85
+ /**
86
+ * Next key state threshold
87
+ */
88
+ nt: Threshold;
89
+ /**
90
+ * Digests of next signing keys
91
+ */
92
+ n: string[];
93
+ /**
94
+ * Backer threshold
95
+ */
96
+ bt: string;
97
+ /**
98
+ * Backers
99
+ */
100
+ b: string[];
101
+ c: string[];
102
+ /**
103
+ * Latest establishment event
104
+ */
105
+ ee: KeyStateEstablishmentRecord;
106
+ di: string;
107
+ }
108
+ export interface KeyStateEstablishmentRecord {
109
+ /**
110
+ * Sequence number of latest establishment event
111
+ */
112
+ s: string;
113
+ /**
114
+ * Digest of latest establishment event
115
+ */
116
+ d: string;
117
+ /**
118
+ * Backers removed in latest establishment event
119
+ */
120
+ br: string[];
121
+ /**
122
+ * Backers added in latest establishment event
123
+ */
124
+ ba: string[];
125
+ }
126
+ export declare function resolveKeyState(event: Iterable<KeyEventMessage> | AsyncIterable<KeyEventMessage>): Promise<KeyState>;
@@ -0,0 +1,242 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-store.js","sourceRoot":"","sources":["../../src/events/event-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,248 @@
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;