keri 0.0.0-dev.0ddd65e → 0.0.0-dev.1dab5a8

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 (234) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +3 -0
  3. package/dist/cesr/__main__.d.ts +9 -0
  4. package/dist/cesr/__main__.js +10 -0
  5. package/dist/cesr/__main__.js.map +1 -0
  6. package/dist/cesr/array-utils.d.ts +3 -0
  7. package/dist/cesr/array-utils.js +29 -0
  8. package/dist/cesr/array-utils.js.map +1 -0
  9. package/dist/cesr/attachments-reader.d.ts +10 -0
  10. package/dist/cesr/attachments-reader.js +281 -0
  11. package/dist/cesr/attachments-reader.js.map +1 -0
  12. package/dist/cesr/attachments.d.ts +66 -0
  13. package/dist/cesr/attachments.js +108 -0
  14. package/dist/cesr/attachments.js.map +1 -0
  15. package/dist/cesr/codes.d.ts +1208 -0
  16. package/dist/cesr/codes.js +309 -0
  17. package/dist/cesr/codes.js.map +1 -0
  18. package/dist/cesr/counter.d.ts +114 -0
  19. package/dist/cesr/counter.js +78 -0
  20. package/dist/cesr/counter.js.map +1 -0
  21. package/dist/cesr/frame.d.ts +31 -0
  22. package/dist/cesr/frame.js +99 -0
  23. package/dist/cesr/frame.js.map +1 -0
  24. package/dist/cesr/genus.d.ts +18 -0
  25. package/dist/cesr/genus.js +57 -0
  26. package/dist/cesr/genus.js.map +1 -0
  27. package/dist/cesr/groups/generic-map.d.ts +11 -0
  28. package/dist/cesr/groups/generic-map.js +51 -0
  29. package/dist/cesr/groups/generic-map.js.map +1 -0
  30. package/dist/cesr/indexer.d.ts +68 -0
  31. package/dist/cesr/indexer.js +171 -0
  32. package/dist/cesr/indexer.js.map +1 -0
  33. package/dist/cesr/matter.d.ts +160 -0
  34. package/dist/cesr/matter.js +301 -0
  35. package/dist/cesr/matter.js.map +1 -0
  36. package/dist/cesr/message.d.ts +17 -0
  37. package/dist/cesr/message.js +81 -0
  38. package/dist/cesr/message.js.map +1 -0
  39. package/dist/cesr/parse.d.ts +37 -0
  40. package/dist/cesr/parse.js +138 -0
  41. package/dist/cesr/parse.js.map +1 -0
  42. package/dist/cesr/shifting.d.ts +7 -0
  43. package/dist/cesr/shifting.js +10 -0
  44. package/dist/cesr/shifting.js.map +1 -0
  45. package/dist/cesr/version-string.d.ts +35 -0
  46. package/dist/cesr/version-string.js +146 -0
  47. package/dist/cesr/version-string.js.map +1 -0
  48. package/dist/cli/cli.d.ts +5 -0
  49. package/dist/cli/cli.js +73 -0
  50. package/dist/cli/cli.js.map +1 -0
  51. package/dist/cli/input.d.ts +1 -0
  52. package/dist/cli/input.js +22 -0
  53. package/dist/cli/input.js.map +1 -0
  54. package/dist/cli/node-cli.js +19 -0
  55. package/dist/cli/node-cli.js.map +1 -0
  56. package/dist/controller/controller.d.ts +97 -0
  57. package/dist/controller/controller.js +601 -0
  58. package/dist/controller/controller.js.map +1 -0
  59. package/dist/controller/encrypt.d.ts +45 -0
  60. package/dist/controller/encrypt.js +120 -0
  61. package/dist/controller/encrypt.js.map +1 -0
  62. package/dist/core/credential-event.d.ts +54 -0
  63. package/dist/core/credential-event.js +28 -0
  64. package/dist/core/credential-event.js.map +1 -0
  65. package/dist/core/credential.d.ts +79 -0
  66. package/dist/core/credential.js +25 -0
  67. package/dist/core/credential.js.map +1 -0
  68. package/dist/core/digest.d.ts +1 -0
  69. package/dist/core/digest.js +7 -0
  70. package/dist/core/digest.js.map +1 -0
  71. package/dist/core/endpoint-discovery.d.ts +20 -0
  72. package/dist/core/endpoint-discovery.js +60 -0
  73. package/dist/core/endpoint-discovery.js.map +1 -0
  74. package/dist/core/events.d.ts +12 -0
  75. package/dist/core/events.js +25 -0
  76. package/dist/core/events.js.map +1 -0
  77. package/dist/core/kawa.d.ts +17 -0
  78. package/dist/core/kawa.js +48 -0
  79. package/dist/core/kawa.js.map +1 -0
  80. package/dist/core/key-event-log.d.ts +19 -0
  81. package/dist/core/key-event-log.js +155 -0
  82. package/dist/core/key-event-log.js.map +1 -0
  83. package/dist/core/key-event.d.ts +94 -0
  84. package/dist/core/key-event.js +88 -0
  85. package/dist/core/key-event.js.map +1 -0
  86. package/dist/core/keys.d.ts +10 -0
  87. package/dist/core/keys.js +17 -0
  88. package/dist/core/keys.js.map +1 -0
  89. package/dist/core/mailbox-client.d.ts +23 -0
  90. package/dist/core/mailbox-client.js +75 -0
  91. package/dist/core/mailbox-client.js.map +1 -0
  92. package/dist/core/main.d.ts +53 -0
  93. package/dist/core/main.js +45 -0
  94. package/dist/core/main.js.map +1 -0
  95. package/dist/core/receipt-event.d.ts +15 -0
  96. package/dist/core/receipt-event.js +13 -0
  97. package/dist/core/receipt-event.js.map +1 -0
  98. package/dist/core/registry-event.d.ts +26 -0
  99. package/dist/core/registry-event.js +18 -0
  100. package/dist/core/registry-event.js.map +1 -0
  101. package/dist/core/routed-event.d.ts +67 -0
  102. package/dist/core/routed-event.js +53 -0
  103. package/dist/core/routed-event.js.map +1 -0
  104. package/dist/core/said.d.ts +4 -0
  105. package/dist/core/said.js +29 -0
  106. package/dist/core/said.js.map +1 -0
  107. package/dist/core/sign.d.ts +5 -0
  108. package/dist/core/sign.js +10 -0
  109. package/dist/core/sign.js.map +1 -0
  110. package/dist/core/threshold.d.ts +6 -0
  111. package/dist/core/threshold.js +58 -0
  112. package/dist/core/threshold.js.map +1 -0
  113. package/dist/core/verify.d.ts +23 -0
  114. package/dist/core/verify.js +62 -0
  115. package/dist/core/verify.js.map +1 -0
  116. package/dist/core/witness-client.d.ts +8 -0
  117. package/dist/core/witness-client.js +39 -0
  118. package/dist/core/witness-client.js.map +1 -0
  119. package/dist/encoding/base64.d.ts +4 -0
  120. package/dist/encoding/base64.js +82 -0
  121. package/dist/encoding/base64.js.map +1 -0
  122. package/dist/encoding/main.d.ts +2 -0
  123. package/dist/encoding/main.js +3 -0
  124. package/dist/encoding/main.js.map +1 -0
  125. package/dist/encoding/utf8.d.ts +2 -0
  126. package/dist/encoding/utf8.js +9 -0
  127. package/dist/encoding/utf8.js.map +1 -0
  128. package/dist/logging/main.d.ts +15 -0
  129. package/dist/logging/main.js +25 -0
  130. package/dist/logging/main.js.map +1 -0
  131. package/dist/mailbox/mailbox-router.d.ts +6 -0
  132. package/dist/mailbox/mailbox-router.js +88 -0
  133. package/dist/mailbox/mailbox-router.js.map +1 -0
  134. package/dist/mailbox/mailbox.d.ts +27 -0
  135. package/dist/mailbox/mailbox.js +101 -0
  136. package/dist/mailbox/mailbox.js.map +1 -0
  137. package/dist/mailbox/main.d.ts +3 -0
  138. package/dist/mailbox/main.js +3 -0
  139. package/dist/mailbox/main.js.map +1 -0
  140. package/dist/main.d.ts +3 -2
  141. package/dist/main.js +3 -2
  142. package/dist/main.js.map +1 -0
  143. package/dist/nodejs-utils/main.d.ts +2 -0
  144. package/dist/nodejs-utils/main.js +2 -0
  145. package/dist/nodejs-utils/main.js.map +1 -0
  146. package/dist/nodejs-utils/serve.d.ts +6 -0
  147. package/dist/nodejs-utils/serve.js +68 -0
  148. package/dist/nodejs-utils/serve.js.map +1 -0
  149. package/dist/storage/credential-storage.d.ts +8 -0
  150. package/dist/storage/credential-storage.js +2 -0
  151. package/dist/storage/credential-storage.js.map +1 -0
  152. package/dist/storage/key-event-storage.d.ts +10 -0
  153. package/dist/storage/key-event-storage.js +2 -0
  154. package/dist/storage/key-event-storage.js.map +1 -0
  155. package/dist/storage/mailbox-server-storage.d.ts +9 -0
  156. package/dist/storage/mailbox-server-storage.js +2 -0
  157. package/dist/storage/mailbox-server-storage.js.map +1 -0
  158. package/dist/storage/mailbox-storage.d.ts +4 -0
  159. package/dist/storage/mailbox-storage.js +2 -0
  160. package/dist/storage/mailbox-storage.js.map +1 -0
  161. package/dist/storage/main.d.ts +5 -0
  162. package/dist/storage/main.js +2 -0
  163. package/dist/storage/main.js.map +1 -0
  164. package/dist/storage/private-key-storage.d.ts +5 -0
  165. package/dist/storage/private-key-storage.js +2 -0
  166. package/dist/storage/private-key-storage.js.map +1 -0
  167. package/dist/storage/sqlite/node-sqlite.d.ts +12 -0
  168. package/dist/storage/sqlite/node-sqlite.js +25 -0
  169. package/dist/storage/sqlite/node-sqlite.js.map +1 -0
  170. package/dist/storage/sqlite/schema.d.ts +2 -0
  171. package/dist/storage/sqlite/schema.js +67 -0
  172. package/dist/storage/sqlite/schema.js.map +1 -0
  173. package/dist/storage/sqlite/sqlite-database.d.ts +13 -0
  174. package/dist/storage/sqlite/sqlite-database.js +2 -0
  175. package/dist/storage/sqlite/sqlite-database.js.map +1 -0
  176. package/dist/storage/sqlite/storage-sqlite.d.ts +32 -0
  177. package/dist/storage/sqlite/storage-sqlite.js +237 -0
  178. package/dist/storage/sqlite/storage-sqlite.js.map +1 -0
  179. package/dist/witness/main.d.ts +3 -0
  180. package/dist/witness/main.js +3 -0
  181. package/dist/witness/main.js.map +1 -0
  182. package/dist/witness/witness-router.d.ts +6 -0
  183. package/dist/witness/witness-router.js +120 -0
  184. package/dist/witness/witness-router.js.map +1 -0
  185. package/dist/witness/witness.d.ts +26 -0
  186. package/dist/witness/witness.js +156 -0
  187. package/dist/witness/witness.js.map +1 -0
  188. package/package.json +84 -26
  189. package/dist/cli/main.js +0 -72
  190. package/dist/data-type.d.ts +0 -9
  191. package/dist/data-type.js +0 -1
  192. package/dist/db/event-store.d.ts +0 -20
  193. package/dist/db/event-store.js +0 -1
  194. package/dist/db/sqlite-db.d.ts +0 -13
  195. package/dist/db/sqlite-db.js +0 -123
  196. package/dist/events/common.d.ts +0 -6
  197. package/dist/events/common.js +0 -1
  198. package/dist/events/incept.d.ts +0 -26
  199. package/dist/events/incept.js +0 -28
  200. package/dist/events/interact.d.ts +0 -17
  201. package/dist/events/interact.js +0 -21
  202. package/dist/events/main.d.ts +0 -4
  203. package/dist/events/main.js +0 -4
  204. package/dist/events/reply.d.ts +0 -15
  205. package/dist/events/reply.js +0 -20
  206. package/dist/keri/habitat.d.ts +0 -20
  207. package/dist/keri/habitat.js +0 -130
  208. package/dist/keri/keri.d.ts +0 -26
  209. package/dist/keri/keri.js +0 -43
  210. package/dist/keystore/encrypt.d.ts +0 -2
  211. package/dist/keystore/encrypt.js +0 -38
  212. package/dist/keystore/keystore-fs.d.ts +0 -13
  213. package/dist/keystore/keystore-fs.js +0 -50
  214. package/dist/keystore/keystore-web.d.ts +0 -12
  215. package/dist/keystore/keystore-web.js +0 -48
  216. package/dist/keystore/keystore.d.ts +0 -15
  217. package/dist/keystore/keystore.js +0 -1
  218. package/dist/main-common.d.ts +0 -9
  219. package/dist/main-common.js +0 -8
  220. package/dist/main-web.d.ts +0 -2
  221. package/dist/main-web.js +0 -2
  222. package/dist/parser/base64.d.ts +0 -6
  223. package/dist/parser/base64.js +0 -74
  224. package/dist/parser/buffered-reader.d.ts +0 -5
  225. package/dist/parser/buffered-reader.js +0 -47
  226. package/dist/parser/cesr-encoding.d.ts +0 -34
  227. package/dist/parser/cesr-encoding.js +0 -158
  228. package/dist/parser/codes.d.ts +0 -143
  229. package/dist/parser/codes.js +0 -266
  230. package/dist/parser/parser.d.ts +0 -16
  231. package/dist/parser/parser.js +0 -161
  232. package/dist/parser/version.d.ts +0 -11
  233. package/dist/parser/version.js +0 -56
  234. /package/dist/cli/{main.d.ts → node-cli.d.ts} +0 -0
@@ -0,0 +1,146 @@
1
+ import { decodeBase64Int, decodeUtf8, encodeBase64Int } from "#keri/encoding";
2
+ const REGEX_VERSION_STRING_PROTOCOL = /^[A-Z]{4}$/;
3
+ const REGEX_VERSION_JSON = /^\{"v":"(.*?)".*$/;
4
+ const Kind = {
5
+ JSON: "JSON",
6
+ CBOR: "CBOR",
7
+ MSGPACK: "MGPK",
8
+ CESR: "CESR",
9
+ };
10
+ const KIND_VALUES = new Set(Object.values(Kind));
11
+ function encodeHexInt(value, length) {
12
+ if (value >= 16 ** length) {
13
+ throw new Error(`Value exceeds maximum for hex encoding. Expected value < ${16 ** length} for length ${length}, got ${value}`);
14
+ }
15
+ return value.toString(16).padStart(length, "0");
16
+ }
17
+ export class VersionString {
18
+ protocol;
19
+ major;
20
+ minor;
21
+ kind;
22
+ legacy;
23
+ size;
24
+ constructor(init) {
25
+ if (!REGEX_VERSION_STRING_PROTOCOL.test(init.protocol)) {
26
+ throw new Error(`Protocol must be 4 uppercase characters. Expected format: /^[A-Z]{4}$/, got "${init.protocol}"`);
27
+ }
28
+ const kind = init.kind ?? "JSON";
29
+ if (!KIND_VALUES.has(kind)) {
30
+ throw new Error(`Encoding kind must be one of ${Array.from(KIND_VALUES).join(", ")}, got "${kind}"`);
31
+ }
32
+ // TODO: Remove when other kinds are supported
33
+ if (kind !== "JSON") {
34
+ throw new Error(`Unsupported encoding kind "${kind}", only JSON format is supported for now`);
35
+ }
36
+ if (init.size !== undefined && init.size < 0) {
37
+ throw new Error(`Size must be non-negative. Expected size >= 0, got ${init.size}`);
38
+ }
39
+ this.protocol = init.protocol;
40
+ this.major = init.major ?? 1;
41
+ this.minor = init.minor ?? 0;
42
+ this.kind = kind;
43
+ this.legacy = init.legacy ?? true;
44
+ this.size = init.size ?? 0;
45
+ }
46
+ get text() {
47
+ return VersionString.encode(this);
48
+ }
49
+ /**
50
+ * Extrats and parses the version string from a message payload
51
+ * @param input
52
+ */
53
+ static extract(input) {
54
+ if (typeof input !== "string") {
55
+ input = decodeUtf8(input.slice(0, 24));
56
+ }
57
+ const match = input.match(REGEX_VERSION_JSON);
58
+ if (!match) {
59
+ const preview = typeof input === "string" ? input.slice(0, 50) : String(input).slice(0, 50);
60
+ throw new Error(`Unable to extract "v" field. Expected JSON object with "v" property at start (format: {"v":"..."}), got "${preview}${input.length > 50 ? "..." : ""}"`);
61
+ }
62
+ return VersionString.parse(match[1]);
63
+ }
64
+ /**
65
+ * Parses a version string into a {@link VersionString} object
66
+ *
67
+ * @param input The version string
68
+ * @returns The parsed {@link VersionString} object
69
+ */
70
+ static parse(input) {
71
+ if (input.endsWith(".") && input.length === 16) {
72
+ const protocol = input.slice(0, 4);
73
+ const major = decodeBase64Int(input.slice(4, 5));
74
+ const minor = decodeBase64Int(input.slice(5, 7));
75
+ const kind = input.slice(7, 11);
76
+ const size = decodeBase64Int(input.slice(12, 15));
77
+ return new VersionString({
78
+ protocol,
79
+ major,
80
+ minor,
81
+ legacy: false,
82
+ kind,
83
+ size,
84
+ });
85
+ }
86
+ if (input.endsWith("_") && input.length === 17) {
87
+ const protocol = input.slice(0, 4);
88
+ const major = parseInt(input.slice(4, 5), 16);
89
+ const minor = parseInt(input.slice(5, 6), 16);
90
+ const format = input.slice(6, 10);
91
+ const size = parseInt(input.slice(10, 16), 16);
92
+ return new VersionString({
93
+ protocol,
94
+ major,
95
+ minor,
96
+ kind: format,
97
+ size,
98
+ legacy: true,
99
+ });
100
+ }
101
+ throw new Error(`Invalid version string format. Expected 17-char legacy format (ending with "_") or 16-char modern format (ending with "."), got "${input}"`);
102
+ }
103
+ static encode(init) {
104
+ const protocol = init.protocol;
105
+ const major = init.major ?? 1;
106
+ const minor = init.minor ?? 0;
107
+ const format = init.kind ?? "JSON";
108
+ if (init.legacy) {
109
+ const version = `${encodeHexInt(major, 1)}${encodeHexInt(minor, 1)}`;
110
+ const size = encodeHexInt(init.size ?? 0, 6);
111
+ return `${protocol}${version}${format}${size}_`;
112
+ }
113
+ const version = `${encodeBase64Int(major, 1)}${encodeBase64Int(minor, 2)}`;
114
+ const size = encodeBase64Int(init.size ?? 0, 4);
115
+ return `${protocol}${version}${format}${size}.`;
116
+ }
117
+ static KERI_LEGACY = new VersionString({
118
+ protocol: "KERI",
119
+ major: 1,
120
+ minor: 0,
121
+ kind: "JSON",
122
+ legacy: true,
123
+ }).text;
124
+ static KERI = new VersionString({
125
+ protocol: "KERI",
126
+ major: 2,
127
+ minor: 0,
128
+ kind: "JSON",
129
+ legacy: false,
130
+ }).text;
131
+ static ACDC_LEGACY = new VersionString({
132
+ protocol: "ACDC",
133
+ major: 1,
134
+ minor: 0,
135
+ kind: "JSON",
136
+ legacy: true,
137
+ }).text;
138
+ static ACDC = new VersionString({
139
+ protocol: "ACDC",
140
+ major: 1,
141
+ minor: 0,
142
+ kind: "JSON",
143
+ legacy: false,
144
+ }).text;
145
+ }
146
+ //# sourceMappingURL=version-string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-string.js","sourceRoot":"","sources":["../../src/cesr/version-string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE9E,MAAM,6BAA6B,GAAG,YAAY,CAAC;AACnD,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAE/C,MAAM,IAAI,GAAG;IACX,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,MAAM;CACJ,CAAC;AAEX,MAAM,WAAW,GAAG,IAAI,GAAG,CAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAEvD,SAAS,YAAY,CAAC,KAAa,EAAE,MAAc;IACjD,IAAI,KAAK,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,4DAA4D,EAAE,IAAI,MAAM,eAAe,MAAM,SAAS,KAAK,EAAE,CAC9G,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAClD,CAAC;AAWD,MAAM,OAAO,aAAa;IACf,QAAQ,CAAS;IACjB,KAAK,CAAS;IACd,KAAK,CAAS;IACd,IAAI,CAAS;IACb,MAAM,CAAU;IAChB,IAAI,CAAS;IAEtB,YAAY,IAAuB;QACjC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,gFAAgF,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpH,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAY,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;QACvG,CAAC;QAED,8CAA8C;QAC9C,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,0CAA0C,CAAC,CAAC;QAChG,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,sDAAsD,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,KAA0B;QACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5F,MAAM,IAAI,KAAK,CACb,4GAA4G,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CACxJ,CAAC;QACJ,CAAC;QAED,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,KAAa;QACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAElD,OAAO,IAAI,aAAa,CAAC;gBACvB,QAAQ;gBACR,KAAK;gBACL,KAAK;gBACL,MAAM,EAAE,KAAK;gBACb,IAAI;gBACJ,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAE/C,OAAO,IAAI,aAAa,CAAC;gBACvB,QAAQ;gBACR,KAAK;gBACL,KAAK;gBACL,IAAI,EAAE,MAAM;gBACZ,IAAI;gBACJ,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,KAAK,CACb,oIAAoI,KAAK,GAAG,CAC7I,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAAuB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;QAEnC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7C,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,CAAC;QAClD,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,CAAC;IAClD,CAAC;IAED,MAAM,CAAU,WAAW,GAAW,IAAI,aAAa,CAAC;QACtD,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,IAAI;KACb,CAAC,CAAC,IAAI,CAAC;IAER,MAAM,CAAU,IAAI,GAAW,IAAI,aAAa,CAAC;QAC/C,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,KAAK;KACd,CAAC,CAAC,IAAI,CAAC;IAER,MAAM,CAAU,WAAW,GAAW,IAAI,aAAa,CAAC;QACtD,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,IAAI;KACb,CAAC,CAAC,IAAI,CAAC;IAER,MAAM,CAAU,IAAI,GAAW,IAAI,aAAa,CAAC;QAC/C,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,KAAK;KACd,CAAC,CAAC,IAAI,CAAC"}
@@ -0,0 +1,5 @@
1
+ export interface CommandLineInterface {
2
+ args: string[];
3
+ read(input: string): AsyncIterableIterator<Uint8Array>;
4
+ }
5
+ export declare function execute(cli: CommandLineInterface): Promise<void>;
@@ -0,0 +1,73 @@
1
+ /** biome-ignore-all lint/suspicious/noConsole: CLI */
2
+ import { encodeText, parse } from "#keri/cesr";
3
+ function parseArgs(inputArgs, opts) {
4
+ const helpText = [
5
+ `Usage: cesr [options] <input>`,
6
+ "",
7
+ "Parses an input CESR stream.",
8
+ "",
9
+ "Arguments:",
10
+ " <input> The input file to parse. Use '-' for stdin. Can also be a URL.",
11
+ "",
12
+ "Options:",
13
+ ...Object.entries(opts).map(([key, value]) => {
14
+ return ` ${key} ${value.description}`;
15
+ }),
16
+ ].join("\n");
17
+ const args = [];
18
+ const options = {};
19
+ inputArgs.forEach((arg) => {
20
+ if (!arg.startsWith("--")) {
21
+ args.push(arg);
22
+ return;
23
+ }
24
+ if (arg.includes("=")) {
25
+ const [key, value] = arg.split("=");
26
+ options[key] = value;
27
+ return;
28
+ }
29
+ options[arg] = true;
30
+ });
31
+ return {
32
+ _: args,
33
+ options,
34
+ helpText,
35
+ };
36
+ }
37
+ function formatError(message, help) {
38
+ return `Error: ${message}\n\n${help}`;
39
+ }
40
+ export async function execute(cli) {
41
+ const app = parseArgs(cli.args, {
42
+ "--help": {
43
+ description: "Show help",
44
+ },
45
+ "--pretty": {
46
+ description: "Pretty print the output",
47
+ },
48
+ });
49
+ const input = app.options["--input"] || app._[0];
50
+ if (app.options["--help"]) {
51
+ console.log(app.helpText);
52
+ return;
53
+ }
54
+ if (typeof input !== "string" || input.length === 0) {
55
+ throw new Error(formatError("No input file specified.", app.helpText));
56
+ }
57
+ const stream = cli.read(input);
58
+ for await (const message of parse(stream)) {
59
+ if (app.options["--pretty"]) {
60
+ console.dir({
61
+ payload: message.body,
62
+ attachments: message.attachments.frames().map(encodeText),
63
+ }, { depth: 100, colors: true });
64
+ }
65
+ else {
66
+ console.log(JSON.stringify({
67
+ payload: message.body,
68
+ attachments: message.attachments.frames().map(encodeText),
69
+ }));
70
+ }
71
+ }
72
+ }
73
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function resolveInputStream(input: string): AsyncIterableIterator<Uint8Array>;
@@ -0,0 +1,22 @@
1
+ import { createReadStream } from "node:fs";
2
+ export async function* resolveInputStream(input) {
3
+ if (input === "-") {
4
+ yield* process.stdin;
5
+ return;
6
+ }
7
+ if (input.startsWith("http") || input.startsWith("https")) {
8
+ const response = await fetch(input);
9
+ if (response.body) {
10
+ for await (const chunk of response.body) {
11
+ yield chunk;
12
+ }
13
+ }
14
+ return;
15
+ }
16
+ const stream = createReadStream(input);
17
+ for await (const chunk of stream) {
18
+ yield chunk;
19
+ }
20
+ stream.close();
21
+ }
22
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/cli/input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,kBAAkB,CAAC,KAAa;IACrD,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QAClB,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,KAAK,CAAC;IACd,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC"}
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+ import process from "node:process";
3
+ import { execute } from "./cli.js";
4
+ import { resolveInputStream } from "./input.js";
5
+ try {
6
+ await execute({
7
+ args: process.argv.slice(2),
8
+ read: resolveInputStream,
9
+ });
10
+ }
11
+ catch (error) {
12
+ if (error instanceof Error) {
13
+ process.stderr.write("Error: ");
14
+ process.stderr.write(error.message);
15
+ process.stderr.write("\n");
16
+ }
17
+ process.exit(1);
18
+ }
19
+ //# sourceMappingURL=node-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-cli.js","sourceRoot":"","sources":["../../src/cli/node-cli.ts"],"names":[],"mappings":";AACA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,IAAI,CAAC;IACH,MAAM,OAAO,CAAC;QACZ,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3B,IAAI,EAAE,kBAAkB;KACzB,CAAC,CAAC;AACL,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,97 @@
1
+ import { type CredentialBody, type Endpoint, type InceptEventBody, type InteractEventBody, type KeyEvent, KeyEventLog, type KeyState, Message, type RegistryInceptEventBody, type RotateEventBody } from "#keri/core";
2
+ import { type Logger } from "#keri/logging";
3
+ import type { CredentialStorage, KeyEventStorage, MailboxStorage, PrivateKeyStorage } from "#keri/storage";
4
+ import { type Encrypter } from "./encrypt.ts";
5
+ export type { CredentialStorage, KeyEventStorage, MailboxStorage, PrivateKeyStorage } from "#keri/storage";
6
+ export type { Encrypter } from "./encrypt.ts";
7
+ export type ControllerStorage = KeyEventStorage & PrivateKeyStorage & CredentialStorage & MailboxStorage;
8
+ export interface ForwardArgs {
9
+ sender: string;
10
+ recipient: string;
11
+ topic: string;
12
+ message: Message;
13
+ timestamp?: string;
14
+ }
15
+ export interface ControllerDeps {
16
+ storage: ControllerStorage;
17
+ encrypter?: Encrypter;
18
+ passphrase?: string;
19
+ fetch?: typeof globalThis.fetch;
20
+ logger?: Logger;
21
+ }
22
+ export interface ReplyArgs {
23
+ id: string;
24
+ route: string;
25
+ record: Record<string, unknown>;
26
+ }
27
+ export interface ControllerInceptArgs {
28
+ wits?: string[];
29
+ toad?: number;
30
+ }
31
+ export interface InceptResult {
32
+ id: string;
33
+ event: InceptEventBody;
34
+ }
35
+ export interface AnchorResult {
36
+ id: string;
37
+ event: InteractEventBody;
38
+ }
39
+ export interface RotateResult {
40
+ id: string;
41
+ event: RotateEventBody;
42
+ }
43
+ export interface ControllerRotateArgs {
44
+ data?: Record<string, unknown>;
45
+ }
46
+ export interface AnchorArgs {
47
+ data?: Record<string, unknown>;
48
+ }
49
+ export interface CreateCredentialArgs {
50
+ registryId: string;
51
+ schemaId: string;
52
+ holder: string;
53
+ salt?: string;
54
+ timestamp?: Date;
55
+ data?: Record<string, unknown>;
56
+ rules?: Record<string, unknown>;
57
+ edges?: Record<string, unknown>;
58
+ }
59
+ export interface IpexGrantArgs {
60
+ credential: CredentialBody;
61
+ recipient?: string;
62
+ timestamp?: string;
63
+ }
64
+ export declare class Controller {
65
+ #private;
66
+ constructor(deps: ControllerDeps);
67
+ private generateKey;
68
+ private signWithKey;
69
+ introduce(oobi: string): Promise<KeyState>;
70
+ loadEventLog(id: string): Promise<KeyEventLog>;
71
+ resolveEndpoint(aid: string, role?: string): Endpoint;
72
+ sign(raw: Uint8Array, keys: string[]): Promise<string[]>;
73
+ incept(args?: ControllerInceptArgs): Promise<InceptResult>;
74
+ processMessage(message: Message): Promise<void>;
75
+ commit(log: KeyEventLog, event: KeyEvent): Promise<void>;
76
+ anchor(id: string, anchor: AnchorArgs): Promise<AnchorResult>;
77
+ rotate(id: string, args: ControllerRotateArgs): Promise<RotateResult>;
78
+ /**
79
+ * Creates and stores a signed reply message and submits to all witnesses.
80
+ */
81
+ reply(args: ReplyArgs): Promise<void>;
82
+ forward(args: ForwardArgs): Promise<void>;
83
+ createRegistry(owner: string): Promise<RegistryInceptEventBody>;
84
+ listRegistries(owner: string): Promise<RegistryInceptEventBody[]>;
85
+ createCredential(args: CreateCredentialArgs): Promise<CredentialBody>;
86
+ getCredential(id: string): Promise<CredentialBody | null>;
87
+ listCredentials(registryId: string): Promise<CredentialBody[]>;
88
+ issueCredential(credential: CredentialBody): Promise<void>;
89
+ private getIssueEvent;
90
+ private getAnchorFromSeal;
91
+ private buildCredentialMessage;
92
+ sendCredentialArtifacts(credential: CredentialBody, recipient: string): Promise<void>;
93
+ grant(args: IpexGrantArgs): Promise<void>;
94
+ query(id: string, topic: string): Promise<Message[]>;
95
+ receiveGrants(holderId: string): Promise<CredentialBody[]>;
96
+ export(id: string): Promise<Message[]>;
97
+ }