keri 0.0.0-dev.0ddd65e → 0.0.0-dev.7be936b

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 (73) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +3 -0
  3. package/dist/cli/main.d.ts +1 -1
  4. package/dist/cli/main.js +159 -56
  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 +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/keystore.d.ts +16 -2
  28. package/dist/keystore/keystore.js +70 -1
  29. package/dist/keystore/keystore.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/event-store.d.ts +0 -20
  37. package/dist/db/event-store.js +0 -1
  38. package/dist/db/sqlite-db.d.ts +0 -13
  39. package/dist/db/sqlite-db.js +0 -123
  40. package/dist/events/common.d.ts +0 -6
  41. package/dist/events/common.js +0 -1
  42. package/dist/events/incept.d.ts +0 -26
  43. package/dist/events/incept.js +0 -28
  44. package/dist/events/interact.d.ts +0 -17
  45. package/dist/events/interact.js +0 -21
  46. package/dist/events/main.d.ts +0 -4
  47. package/dist/events/main.js +0 -4
  48. package/dist/events/reply.d.ts +0 -15
  49. package/dist/events/reply.js +0 -20
  50. package/dist/keri/habitat.d.ts +0 -20
  51. package/dist/keri/habitat.js +0 -130
  52. package/dist/keri/keri.d.ts +0 -26
  53. package/dist/keri/keri.js +0 -43
  54. package/dist/keystore/keystore-fs.d.ts +0 -13
  55. package/dist/keystore/keystore-fs.js +0 -50
  56. package/dist/keystore/keystore-web.d.ts +0 -12
  57. package/dist/keystore/keystore-web.js +0 -48
  58. package/dist/main-common.d.ts +0 -9
  59. package/dist/main-common.js +0 -8
  60. package/dist/main-web.d.ts +0 -2
  61. package/dist/main-web.js +0 -2
  62. package/dist/parser/base64.d.ts +0 -6
  63. package/dist/parser/base64.js +0 -74
  64. package/dist/parser/buffered-reader.d.ts +0 -5
  65. package/dist/parser/buffered-reader.js +0 -47
  66. package/dist/parser/cesr-encoding.d.ts +0 -34
  67. package/dist/parser/cesr-encoding.js +0 -158
  68. package/dist/parser/codes.d.ts +0 -143
  69. package/dist/parser/codes.js +0 -266
  70. package/dist/parser/parser.d.ts +0 -16
  71. package/dist/parser/parser.js +0 -161
  72. package/dist/parser/version.d.ts +0 -11
  73. package/dist/parser/version.js +0 -56
@@ -0,0 +1,184 @@
1
+ import { blake3 } from "@noble/hashes/blake3";
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events/events.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,10 @@
1
- export declare function encrypt(passphrase: string, data: Uint8Array): Promise<Uint8Array<ArrayBuffer>>;
2
- export declare function decrypt(passphrase: string, ciphertext: Uint8Array): Promise<Uint8Array>;
1
+ export interface Encrypter {
2
+ encrypt(data: Uint8Array): Promise<Uint8Array>;
3
+ decrypt(data: Uint8Array): Promise<Uint8Array>;
4
+ }
5
+ export declare class PassphraseEncrypter implements Encrypter {
6
+ #private;
7
+ constructor(passphrase: string);
8
+ encrypt(data: Uint8Array): Promise<Uint8Array<ArrayBuffer>>;
9
+ decrypt(ciphertext: Uint8Array): Promise<Uint8Array>;
10
+ }
@@ -1,38 +1,39 @@
1
- export async function encrypt(passphrase, data) {
1
+ async function deriveKey(passphrase, salt) {
2
2
  const encoder = new TextEncoder();
3
3
  const encryptionKey = await crypto.subtle.importKey("raw", encoder.encode(passphrase), "PBKDF2", false, [
4
4
  "deriveBits",
5
5
  "deriveKey",
6
6
  ]);
7
- const salt = crypto.getRandomValues(new Uint8Array(16));
8
- const iv = crypto.getRandomValues(new Uint8Array(16));
9
7
  const key = await crypto.subtle.deriveKey({
10
8
  name: "PBKDF2",
11
9
  salt,
12
10
  iterations: 100000,
13
11
  hash: "SHA-256",
14
12
  }, encryptionKey, { name: "AES-GCM", length: 256 }, true, ["encrypt", "decrypt"]);
15
- const encrypted = await crypto.subtle.encrypt({ name: "AES-GCM", iv }, key, data);
16
- const result = new Uint8Array(salt.byteLength + iv.byteLength + encrypted.byteLength);
17
- result.set(salt, 0);
18
- result.set(iv, salt.byteLength);
19
- result.set(new Uint8Array(encrypted), salt.byteLength + iv.byteLength);
20
- return result;
13
+ return key;
21
14
  }
22
- export async function decrypt(passphrase, ciphertext) {
23
- const encoder = new TextEncoder();
24
- const keyMaterial = await crypto.subtle.importKey("raw", encoder.encode(passphrase), "PBKDF2", false, [
25
- "deriveBits",
26
- "deriveKey",
27
- ]);
28
- const salt = ciphertext.slice(0, 16);
29
- const iv = ciphertext.slice(16, 32);
30
- const encrypted = ciphertext.slice(32);
31
- const key = await crypto.subtle.deriveKey({
32
- name: "PBKDF2",
33
- salt,
34
- iterations: 100000,
35
- hash: "SHA-256",
36
- }, keyMaterial, { name: "AES-GCM", length: 256 }, true, ["encrypt", "decrypt"]);
37
- return new Uint8Array(await crypto.subtle.decrypt({ name: "AES-GCM", iv }, key, encrypted));
15
+ export class PassphraseEncrypter {
16
+ #passphrase;
17
+ constructor(passphrase) {
18
+ this.#passphrase = passphrase;
19
+ }
20
+ async encrypt(data) {
21
+ const salt = crypto.getRandomValues(new Uint8Array(16));
22
+ const iv = crypto.getRandomValues(new Uint8Array(16));
23
+ const key = await deriveKey(this.#passphrase, salt);
24
+ const encrypted = await crypto.subtle.encrypt({ name: "AES-GCM", iv }, key, data);
25
+ const result = new Uint8Array(salt.byteLength + iv.byteLength + encrypted.byteLength);
26
+ result.set(salt, 0);
27
+ result.set(iv, salt.byteLength);
28
+ result.set(new Uint8Array(encrypted), salt.byteLength + iv.byteLength);
29
+ return result;
30
+ }
31
+ async decrypt(ciphertext) {
32
+ const salt = ciphertext.slice(0, 16);
33
+ const key = await deriveKey(this.#passphrase, salt);
34
+ const iv = ciphertext.slice(16, 32);
35
+ const encrypted = ciphertext.slice(32);
36
+ return new Uint8Array(await crypto.subtle.decrypt({ name: "AES-GCM", iv }, key, encrypted));
37
+ }
38
38
  }
39
+ //# sourceMappingURL=encrypt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encrypt.js","sourceRoot":"","sources":["../../src/keystore/encrypt.ts"],"names":[],"mappings":"AAKA,KAAK,UAAU,SAAS,CAAC,UAAkB,EAAE,IAAgB;IAC3D,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE;QACtG,YAAY;QACZ,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CACvC;QACE,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,UAAU,EAAE,MAAM;QAClB,IAAI,EAAE,SAAS;KAChB,EACD,aAAa,EACb,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,EAChC,IAAI,EACJ,CAAC,SAAS,EAAE,SAAS,CAAC,CACvB,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,OAAO,mBAAmB;IAC9B,WAAW,CAAS;IAEpB,YAAY,UAAkB;QAC5B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAgB;QAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAElF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;QACtF,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;QAEvE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAsB;QAClC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEvC,OAAO,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9F,CAAC;CACF"}
@@ -1,3 +1,5 @@
1
+ import type { Encrypter } from "./encrypt.ts";
2
+ import { type KeyValueStorage } from "../events/event-store.ts";
1
3
  export interface Key {
2
4
  /**
3
5
  * The public key of the tranferable key.
@@ -8,8 +10,20 @@ export interface Key {
8
10
  */
9
11
  next: string;
10
12
  }
11
- export interface KeyStore {
13
+ export interface FileSystemKeyStoreOptions {
14
+ encrypter: Encrypter;
15
+ storage: KeyValueStorage;
16
+ }
17
+ export declare class KeyStore {
18
+ storage: KeyValueStorage;
19
+ encrypter: Encrypter;
20
+ constructor(options: FileSystemKeyStoreOptions);
21
+ private load;
22
+ import(key0: Uint8Array, key1: Uint8Array): Promise<{
23
+ current: string;
24
+ next: string;
25
+ }>;
12
26
  incept(): Promise<Key>;
13
27
  rotate(currentKey: string): Promise<Key>;
14
- sign(publicKey: string, message: Uint8Array): Promise<string>;
28
+ sign(publicKey: string, message: Uint8Array, index?: number): Promise<string>;
15
29
  }
@@ -1 +1,70 @@
1
- export {};
1
+ import { ed25519 } from "@noble/curves/ed25519";
2
+ import { blake3 } from "@noble/hashes/blake3";
3
+ import { decodeBase64Url, encodeBase64Url, encodeIndexer, encodeMatter, IndexCode, MatterCode, } from "cesr/__unstable__";
4
+ export class KeyStore {
5
+ storage;
6
+ encrypter;
7
+ constructor(options) {
8
+ this.encrypter = options.encrypter;
9
+ this.storage = options.storage;
10
+ }
11
+ async load(publicKey) {
12
+ const value = await this.storage.get(publicKey);
13
+ if (!value) {
14
+ throw new Error(`Key ${publicKey} not found`);
15
+ }
16
+ const [key0, key1] = value.split("\n");
17
+ return [await this.encrypter.decrypt(decodeBase64Url(key0)), await this.encrypter.decrypt(decodeBase64Url(key1))];
18
+ }
19
+ async import(key0, key1) {
20
+ const current = encodeMatter({
21
+ code: MatterCode.Ed25519,
22
+ raw: ed25519.getPublicKey(key0),
23
+ });
24
+ const next = encodeMatter({
25
+ code: MatterCode.Blake3_256,
26
+ raw: blake3.create({ dkLen: 32 }).update(current).digest(),
27
+ });
28
+ await this.storage.set(current, [
29
+ encodeBase64Url(await this.encrypter.encrypt(key0)),
30
+ encodeBase64Url(await this.encrypter.encrypt(key1)),
31
+ "\n",
32
+ ].join("\n"));
33
+ return { current, next };
34
+ }
35
+ async incept() {
36
+ const key0 = ed25519.utils.randomPrivateKey();
37
+ const key1 = ed25519.utils.randomPrivateKey();
38
+ return await this.import(key0, key1);
39
+ }
40
+ async rotate(currentKey) {
41
+ const [, key0] = await this.load(currentKey);
42
+ const key1 = ed25519.utils.randomPrivateKey();
43
+ const current = encodeMatter({
44
+ code: MatterCode.Ed25519,
45
+ raw: ed25519.getPublicKey(key0),
46
+ });
47
+ const next = encodeMatter({
48
+ code: MatterCode.Blake3_256,
49
+ raw: blake3.create({ dkLen: 32 }).update(current).digest(),
50
+ });
51
+ await this.import(key0, key1);
52
+ return { current, next };
53
+ }
54
+ async sign(publicKey, message, index) {
55
+ const [key] = await this.load(publicKey);
56
+ const signature = ed25519.sign(message, key);
57
+ if (index !== undefined) {
58
+ return encodeIndexer({
59
+ code: IndexCode.Ed25519_Sig,
60
+ raw: signature,
61
+ index,
62
+ });
63
+ }
64
+ return encodeMatter({
65
+ code: MatterCode.Ed25519_Sig,
66
+ raw: signature,
67
+ });
68
+ }
69
+ }
70
+ //# sourceMappingURL=keystore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystore.js","sourceRoot":"","sources":["../../src/keystore/keystore.ts"],"names":[],"mappings":"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"}
package/dist/main.d.ts CHANGED
@@ -1,2 +1,6 @@
1
- export * from "./keystore/keystore-fs.ts";
2
- export * from "./main-common.ts";
1
+ export * from "./events/events.ts";
2
+ export * from "./events/event-store.ts";
3
+ export * from "./db/storage.ts";
4
+ export * from "./keystore/keystore.ts";
5
+ export * from "./keystore/encrypt.ts";
6
+ export * from "./controller.ts";
package/dist/main.js CHANGED
@@ -1,2 +1,7 @@
1
- export * from "./keystore/keystore-fs.js";
2
- export * from "./main-common.js";
1
+ export * from "./events/events.js";
2
+ export * from "./events/event-store.js";
3
+ export * from "./db/storage.js";
4
+ export * from "./keystore/keystore.js";
5
+ export * from "./keystore/encrypt.js";
6
+ export * from "./controller.js";
7
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,45 +1,48 @@
1
1
  {
2
2
  "name": "keri",
3
- "version": "0.0.0-dev.0ddd65e",
3
+ "version": "0.0.0-dev.7be936b",
4
4
  "scripts": {
5
- "lint": "eslint && prettier --check . && tsc --noEmit",
6
- "lint:fix": "eslint --fix && prettier --write .",
7
5
  "build": "tsc -p tsconfig.build.json",
8
- "test": "node --no-warnings --experimental-strip-types --experimental-sqlite scripts/run-test.ts",
9
- "clean": "node scripts/clean.js"
6
+ "dev": "tsc -p tsconfig.build.json --watch",
7
+ "test": "node --test --test-reporter=spec --no-warnings --experimental-strip-types",
8
+ "test:integration": "npm test -- 'test_integration/**/*.ts'",
9
+ "test:scripts": "node --no-warnings --experimental-strip-types scripts/run-scripts.ts",
10
+ "lint": "eslint",
11
+ "clean": "node --experimental-strip-types --no-warnings scripts/clean.ts"
10
12
  },
11
13
  "bin": {
12
- "keri": "./dist/cli/main.js"
14
+ "keri": "dist/cli/main.js"
13
15
  },
14
16
  "exports": {
15
17
  ".": "./dist/main.js",
16
- "./web": "./dist/main-web.js"
18
+ "./storage-sqlite": "./dist/db/storage-sqlite.js"
17
19
  },
18
20
  "files": [
19
21
  "dist"
20
22
  ],
21
23
  "type": "module",
22
- "author": "",
23
- "license": "ISC",
24
- "description": "",
24
+ "author": "Daniel Lenksjö",
25
+ "license": "Apache-2.0",
26
+ "description": "KERI for JavaScript",
25
27
  "engines": {
26
28
  "node": ">=22"
27
29
  },
30
+ "dependencies": {
31
+ "@noble/curves": "^1.9.2",
32
+ "@noble/ed25519": "^2.2.3",
33
+ "@noble/hashes": "^1.8.0",
34
+ "@noble/secp256k1": "^2.2.3",
35
+ "cesr": "^0.0.12",
36
+ "commander": "^14.0.0"
37
+ },
28
38
  "devDependencies": {
29
- "@eslint/js": "^9.17.0",
30
- "@types/node": "^22.9.1",
31
- "commander": "^12.1.0",
32
- "eslint": "^9.17.0",
39
+ "@eslint/js": "^9.28.0",
40
+ "@types/node": "^22.15.30",
41
+ "eslint": "^9.28.0",
33
42
  "eslint-config-prettier": "^9.1.0",
34
- "globals": "^15.12.0",
35
- "prettier": "^3.3.3",
36
- "typescript": "^5.7.3",
37
- "typescript-eslint": "^8.19.0"
38
- },
39
- "dependencies": {
40
- "@noble/curves": "^1.6.0",
41
- "@noble/ed25519": "^2.2.2",
42
- "@noble/hashes": "^1.5.0",
43
- "@noble/secp256k1": "^2.2.2"
43
+ "globals": "^15.15.0",
44
+ "prettier": "^3.5.3",
45
+ "typescript": "^5.8.3",
46
+ "typescript-eslint": "^8.33.1"
44
47
  }
45
48
  }
@@ -1,9 +0,0 @@
1
- export type DataValue = string | number | boolean | DataObject | DataArray;
2
- export type DataArray = DataValue[];
3
- /**
4
- * Defines a data object that can be serialized to JSON.
5
- * E.g. key events and acdc objects
6
- */
7
- export interface DataObject {
8
- [x: string]: DataValue;
9
- }
package/dist/data-type.js DELETED
@@ -1 +0,0 @@
1
- export {};
@@ -1,20 +0,0 @@
1
- import type { KeyEvent } from "../events/main.ts";
2
- export interface KeyEventMessage<T extends KeyEvent = KeyEvent> {
3
- event: T;
4
- attachments: KeyEventAttachment[];
5
- }
6
- export interface ListArgs {
7
- i?: string;
8
- d?: string;
9
- t?: string;
10
- r?: string;
11
- }
12
- export interface KeyEventAttachment {
13
- code: string;
14
- value: string;
15
- }
16
- export interface EventStore {
17
- list(args?: ListArgs): Promise<KeyEventMessage[]>;
18
- saveEvent(event: KeyEvent): Promise<void>;
19
- saveAttachment(eventId: string, attachment: KeyEventAttachment): Promise<void>;
20
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,13 +0,0 @@
1
- import type { KeyEvent } from "../events/main.ts";
2
- import type { EventStore, KeyEventAttachment, KeyEventMessage, ListArgs } from "./event-store.ts";
3
- export interface SqliteEventStoreOptions {
4
- filename?: string;
5
- }
6
- export declare class SqliteEventStore implements EventStore {
7
- #private;
8
- constructor(options?: SqliteEventStoreOptions);
9
- init(): void;
10
- saveEvent(event: KeyEvent): Promise<void>;
11
- saveAttachment(id: string, attachment: KeyEventAttachment): Promise<void>;
12
- list(args?: ListArgs): Promise<KeyEventMessage[]>;
13
- }