signify-ts 0.2.0 → 0.3.0-dev.e31e78d

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 (129) hide show
  1. package/README.md +104 -34
  2. package/dist/exports.d.ts +40 -40
  3. package/dist/exports.js +40 -0
  4. package/dist/index.d.ts +2 -3
  5. package/dist/index.js +3 -8
  6. package/dist/keri/app/aiding.d.ts +54 -18
  7. package/{src/keri/app/aiding.ts → dist/keri/app/aiding.js} +130 -236
  8. package/dist/keri/app/clienting.d.ts +59 -22
  9. package/{src/keri/app/clienting.ts → dist/keri/app/clienting.js} +146 -235
  10. package/dist/keri/app/contacting.d.ts +30 -23
  11. package/{src/keri/app/contacting.ts → dist/keri/app/contacting.js} +26 -63
  12. package/dist/keri/app/controller.d.ts +49 -6
  13. package/{src/keri/app/controller.ts → dist/keri/app/controller.js} +80 -186
  14. package/dist/keri/app/coring.d.ts +134 -25
  15. package/{src/keri/app/coring.ts → dist/keri/app/coring.js} +83 -56
  16. package/dist/keri/app/credentialing.d.ts +191 -67
  17. package/dist/keri/app/credentialing.js +540 -0
  18. package/dist/keri/app/delegating.d.ts +18 -0
  19. package/dist/keri/app/delegating.js +24 -0
  20. package/dist/keri/app/escrowing.d.ts +5 -3
  21. package/{src/keri/app/escrowing.ts → dist/keri/app/escrowing.js} +3 -9
  22. package/dist/keri/app/exchanging.d.ts +243 -11
  23. package/dist/keri/app/exchanging.js +242 -0
  24. package/dist/keri/app/grouping.d.ts +11 -9
  25. package/{src/keri/app/grouping.ts → dist/keri/app/grouping.js} +10 -29
  26. package/dist/keri/app/habery.d.ts +2 -2
  27. package/dist/keri/app/habery.js +117 -0
  28. package/dist/keri/app/notifying.d.ts +2 -2
  29. package/{src/keri/app/notifying.ts → dist/keri/app/notifying.js} +7 -17
  30. package/dist/keri/core/authing.d.ts +2 -2
  31. package/{src/keri/core/authing.ts → dist/keri/core/authing.js} +26 -42
  32. package/dist/keri/core/base64.d.ts +2 -0
  33. package/dist/keri/core/base64.js +16 -0
  34. package/dist/keri/core/bexter.d.ts +1 -1
  35. package/{src/keri/core/bexter.ts → dist/keri/core/bexter.js} +18 -32
  36. package/dist/keri/core/cigar.d.ts +2 -2
  37. package/dist/keri/core/cigar.js +13 -0
  38. package/dist/keri/core/cipher.d.ts +1 -1
  39. package/{src/keri/core/cipher.ts → dist/keri/core/cipher.js} +10 -19
  40. package/dist/keri/core/core.d.ts +117 -9
  41. package/dist/keri/core/core.js +385 -0
  42. package/dist/keri/core/counter.d.ts +2 -2
  43. package/dist/keri/core/counter.js +221 -0
  44. package/dist/keri/core/decrypter.d.ts +4 -4
  45. package/{src/keri/core/decrypter.ts → dist/keri/core/decrypter.js} +23 -40
  46. package/dist/keri/core/diger.d.ts +3 -3
  47. package/{src/keri/core/diger.ts → dist/keri/core/diger.js} +18 -33
  48. package/dist/keri/core/encrypter.d.ts +2 -2
  49. package/{src/keri/core/encrypter.ts → dist/keri/core/encrypter.js} +18 -38
  50. package/dist/keri/core/eventing.d.ts +6 -6
  51. package/dist/keri/core/eventing.js +383 -0
  52. package/dist/keri/core/httping.d.ts +11 -4
  53. package/{src/keri/core/httping.ts → dist/keri/core/httping.js} +36 -101
  54. package/dist/keri/core/indexer.d.ts +1 -1
  55. package/dist/keri/core/indexer.js +407 -0
  56. package/dist/keri/core/keeping.d.ts +113 -46
  57. package/dist/keri/core/keeping.js +347 -0
  58. package/{src/keri/core/kering.ts → dist/keri/core/kering.js} +1 -3
  59. package/dist/keri/core/keyState.d.ts +98 -0
  60. package/dist/keri/core/manager.d.ts +147 -12
  61. package/dist/keri/core/manager.js +880 -0
  62. package/dist/keri/core/matter.d.ts +1 -1
  63. package/dist/keri/core/matter.js +460 -0
  64. package/dist/keri/core/number.d.ts +2 -2
  65. package/{src/keri/core/number.ts → dist/keri/core/number.js} +26 -32
  66. package/dist/keri/core/pather.d.ts +2 -2
  67. package/{src/keri/core/pather.ts → dist/keri/core/pather.js} +12 -27
  68. package/dist/keri/core/prefixer.d.ts +10 -10
  69. package/dist/keri/core/prefixer.js +182 -0
  70. package/dist/keri/core/saider.d.ts +2 -12
  71. package/dist/keri/core/saider.js +107 -0
  72. package/dist/keri/core/salter.d.ts +44 -9
  73. package/dist/keri/core/salter.js +110 -0
  74. package/dist/keri/core/seqner.d.ts +1 -1
  75. package/{src/keri/core/seqner.ts → dist/keri/core/seqner.js} +20 -21
  76. package/dist/keri/core/serder.d.ts +25 -12
  77. package/dist/keri/core/serder.js +133 -0
  78. package/dist/keri/core/siger.d.ts +2 -2
  79. package/{src/keri/core/siger.ts → dist/keri/core/siger.js} +4 -14
  80. package/dist/keri/core/signer.d.ts +4 -4
  81. package/dist/keri/core/signer.js +84 -0
  82. package/{src/keri/core/tholder.ts → dist/keri/core/tholder.js} +69 -94
  83. package/dist/keri/core/utils.d.ts +1 -1
  84. package/{src/keri/core/utils.ts → dist/keri/core/utils.js} +30 -60
  85. package/dist/keri/core/vdring.d.ts +2 -2
  86. package/dist/keri/core/vdring.js +61 -0
  87. package/dist/keri/core/verfer.d.ts +2 -6
  88. package/dist/keri/core/verfer.js +37 -0
  89. package/dist/keri/end/ending.d.ts +10 -8
  90. package/dist/keri/end/ending.js +136 -0
  91. package/{src/ready.ts → dist/ready.js} +1 -2
  92. package/dist/types/keria-api-schema.d.ts +1158 -0
  93. package/dist/types/keria-api-schema.js +34 -0
  94. package/package.json +53 -52
  95. package/dist/math.d.ts +0 -1
  96. package/dist/signify-ts.cjs +0 -7835
  97. package/dist/signify-ts.cjs.development.js +0 -9501
  98. package/dist/signify-ts.cjs.development.js.map +0 -1
  99. package/dist/signify-ts.cjs.map +0 -7
  100. package/dist/signify-ts.cjs.production.min.js +0 -2
  101. package/dist/signify-ts.cjs.production.min.js.map +0 -1
  102. package/dist/signify-ts.esm.js +0 -9345
  103. package/dist/signify-ts.esm.js.map +0 -1
  104. package/dist/signify-ts.mjs +0 -7811
  105. package/dist/signify-ts.mjs.map +0 -7
  106. package/src/buffer-polyfill.ts +0 -5
  107. package/src/exports.ts +0 -44
  108. package/src/index.ts +0 -4
  109. package/src/keri/app/credentialing.ts +0 -820
  110. package/src/keri/app/exchanging.ts +0 -220
  111. package/src/keri/app/habery.ts +0 -185
  112. package/src/keri/core/cigar.ts +0 -18
  113. package/src/keri/core/core.ts +0 -326
  114. package/src/keri/core/counter.ts +0 -273
  115. package/src/keri/core/eventing.ts +0 -581
  116. package/src/keri/core/indexer.ts +0 -509
  117. package/src/keri/core/keeping.ts +0 -684
  118. package/src/keri/core/manager.ts +0 -1183
  119. package/src/keri/core/matter.ts +0 -521
  120. package/src/keri/core/prefixer.ts +0 -233
  121. package/src/keri/core/saider.ts +0 -186
  122. package/src/keri/core/salter.ts +0 -120
  123. package/src/keri/core/serder.ts +0 -163
  124. package/src/keri/core/signer.ts +0 -133
  125. package/src/keri/core/vdring.ts +0 -94
  126. package/src/keri/core/verfer.ts +0 -47
  127. package/src/keri/end/ending.ts +0 -170
  128. package/src/math.ts +0 -3
  129. /package/dist/{buffer-polyfill.d.ts → keri/core/keyState.js} +0 -0
@@ -1,581 +0,0 @@
1
- import {
2
- b,
3
- concat,
4
- Dict,
5
- Ident,
6
- Ilks,
7
- Serials,
8
- versify,
9
- Version,
10
- Versionage,
11
- } from './core';
12
- import { Tholder } from './tholder';
13
- import { CesrNumber } from './number';
14
- import { Prefixer } from './prefixer';
15
- import { Serder } from './serder';
16
- import { MtrDex, NonTransDex } from './matter';
17
- import { Saider } from './saider';
18
- import { Siger } from './siger';
19
- import { Cigar } from './cigar';
20
- import { Counter, CtrDex } from './counter';
21
- import { Seqner } from './seqner';
22
-
23
- const MaxIntThold = 2 ** 32 - 1;
24
-
25
- export interface RotateArgs {
26
- pre?: string;
27
- keys: Array<string>;
28
- dig?: string;
29
- ilk?: string;
30
- sn?: number;
31
- isith?: number | string | Array<string>;
32
- ndigs?: Array<string>;
33
- nsith?: number | string | Array<string>;
34
- toad?: number;
35
- wits?: Array<string>;
36
- cuts?: Array<string>;
37
- adds?: Array<string>;
38
- cnfg?: Array<string>;
39
- data?: Array<object>;
40
- version?: Version;
41
- kind?: Serials;
42
- size?: number;
43
- intive?: boolean;
44
- }
45
-
46
- export function rotate({
47
- pre = undefined,
48
- keys,
49
- dig = undefined,
50
- ilk = Ilks.rot,
51
- sn = 1,
52
- isith = undefined,
53
- ndigs = undefined,
54
- nsith = undefined,
55
- wits = undefined,
56
- cuts = undefined,
57
- adds = undefined,
58
- toad = undefined,
59
- data = undefined,
60
- version = undefined,
61
- kind = undefined,
62
- intive = true,
63
- }: RotateArgs) {
64
- const vs = versify(Ident.KERI, version, kind, 0);
65
- const _ilk = ilk;
66
- if (_ilk != Ilks.rot && _ilk != Ilks.drt) {
67
- throw new Error(`Invalid ilk = ${ilk} for rot or drt.`);
68
- }
69
-
70
- const sner = Number(sn);
71
- if (sner < 1) {
72
- throw new Error(`Invalid sn = 0x${sner.toString()} for rot or drt.`);
73
- }
74
- let _isit: number;
75
-
76
- if (isith == undefined) {
77
- _isit = Math.max(1, Math.ceil(keys.length / 2));
78
- } else {
79
- _isit = isith as number;
80
- }
81
-
82
- const tholder = new Tholder({ sith: _isit });
83
- if (tholder.num != undefined && tholder.num < 1) {
84
- throw new Error(`Invalid sith = ${tholder.num} less than 1.`);
85
- }
86
- if (tholder.size > keys.length) {
87
- throw new Error(`Invalid sith = ${tholder.num} for keys = ${keys}`);
88
- }
89
-
90
- let _ndigs: Array<string>;
91
-
92
- if (ndigs === undefined) {
93
- _ndigs = [];
94
- } else {
95
- _ndigs = ndigs;
96
- }
97
-
98
- let _nsith;
99
- if (nsith === undefined) {
100
- _nsith = Math.max(1, Math.ceil(_ndigs.length / 2));
101
- } else {
102
- _nsith = nsith;
103
- }
104
-
105
- const ntholder = new Tholder({ sith: _nsith });
106
- if (ntholder.num != undefined && ntholder.num < 1) {
107
- throw new Error(`Invalid sith = ${ntholder.num} less than 1.`);
108
- }
109
- if (ntholder.size > _ndigs.length) {
110
- throw new Error(`Invalid sith = ${ntholder.num} for ndigs = ${ndigs}`);
111
- }
112
-
113
- let _wits: Array<string>;
114
- if (wits === undefined) {
115
- _wits = [];
116
- } else {
117
- _wits = wits;
118
- }
119
- const witset = new Set(_wits);
120
- if (witset.size != _wits.length) {
121
- throw new Error(`Invalid wits = ${wits}, has duplicates.`);
122
- }
123
-
124
- let _cuts: Array<string>;
125
- if (cuts === undefined) {
126
- _cuts = [];
127
- } else {
128
- _cuts = cuts;
129
- }
130
- const cutset = new Set(_cuts);
131
- if (cutset.size != _cuts.length) {
132
- throw new Error(`Invalid cuts = ${cuts}, has duplicates.`);
133
- }
134
-
135
- let _adds: Array<string>;
136
- if (adds === undefined) {
137
- _adds = [];
138
- } else {
139
- _adds = adds;
140
- }
141
- const addset = new Set(_adds);
142
-
143
- //non empty intersection of witset and addset
144
- const witaddset = new Set([...witset].filter((x) => addset.has(x)));
145
- if (witaddset.size > 0) {
146
- throw new Error(
147
- `Invalid member combination among wits = ${wits}, and adds = ${adds}.`
148
- );
149
- }
150
-
151
- // non empty intersection of cutset and addset
152
- const cutaddset = new Set([...cutset].filter((x) => addset.has(x)));
153
- if (cutaddset.size > 0) {
154
- throw new Error(
155
- `Invalid member combination among cuts = ${cuts}, and adds = ${adds}.`
156
- );
157
- }
158
-
159
- const newitsetdiff = new Set(_wits);
160
- _cuts.forEach(function (v) {
161
- newitsetdiff.delete(v);
162
- });
163
- const newitset = new Set(
164
- (function* () {
165
- yield* newitsetdiff;
166
- yield* addset;
167
- })()
168
- );
169
-
170
- if (newitset.size != witset.size - cutset.size + addset.size) {
171
- throw new Error(
172
- `Invalid member combination among wits = ${wits}, cuts = ${cuts}, and adds = ${adds}.`
173
- );
174
- }
175
-
176
- let _toad: number;
177
-
178
- if (toad === undefined) {
179
- if (newitset.size == 0) {
180
- _toad = 0;
181
- } else {
182
- _toad = ample(newitset.size);
183
- }
184
- } else {
185
- _toad = toad;
186
- }
187
-
188
- if (newitset.size > 0) {
189
- if (_toad < 1 || _toad > newitset.size) {
190
- throw new Error(`Invalid toad = ${_toad} for wit = ${wits}`);
191
- }
192
- } else {
193
- if (_toad != 0) {
194
- throw new Error(`Invalid toad = ${_toad} for wit = ${wits}`);
195
- }
196
- }
197
- const _ked = {
198
- v: vs,
199
- t: _ilk,
200
- d: '',
201
- i: pre,
202
- s: sner.toString(16),
203
- p: dig,
204
- kt:
205
- tholder.num &&
206
- intive &&
207
- tholder.num !== undefined &&
208
- tholder.num <= MaxIntThold
209
- ? tholder.num.toString(16)
210
- : tholder.sith,
211
- k: keys,
212
- nt:
213
- ntholder.num &&
214
- intive &&
215
- ntholder.num !== undefined &&
216
- ntholder.num <= MaxIntThold
217
- ? ntholder.num.toString(16)
218
- : ntholder.sith,
219
- n: _ndigs,
220
- bt:
221
- _toad && intive && _toad !== undefined && _toad <= MaxIntThold
222
- ? _toad
223
- : _toad.toString(16),
224
- br: cuts,
225
- ba: adds,
226
- a: data != undefined ? data : [],
227
- };
228
- const [, ked] = Saider.saidify(_ked);
229
- return new Serder(ked);
230
- }
231
-
232
- export function ample(n: number, f?: number, weak = true) {
233
- n = Math.max(0, n); // no negatives
234
- let f1;
235
- if (f == undefined) {
236
- f1 = Math.max(1, Math.floor(Math.max(0, n - 1) / 3)); // least floor f subject to n >= 3*f+1
237
-
238
- const f2 = Math.max(1, Math.ceil(Math.max(0, n - 1) / 3)); // most Math.ceil f subject to n >= 3*f+1
239
- if (weak) {
240
- // try both fs to see which one has lowest m
241
- return Math.min(
242
- n,
243
- Math.ceil((n + f1 + 1) / 2),
244
- Math.ceil((n + f2 + 1) / 2)
245
- );
246
- } else {
247
- return Math.min(
248
- n,
249
- Math.max(0, n - f1, Math.ceil((n + f1 + 1) / 2))
250
- );
251
- }
252
- } else {
253
- f = Math.max(0, f);
254
- const m1 = Math.ceil((n + f + 1) / 2);
255
- const m2 = Math.max(0, n - f);
256
- if (m2 < m1 && n > 0) {
257
- throw new Error(`Invalid f=${f} is too big for n=${n}.`);
258
- }
259
- if (weak) {
260
- return Math.min(n, m1, m2);
261
- } else {
262
- return Math.min(n, Math.max(m1, m2));
263
- }
264
- }
265
- }
266
-
267
- export interface InceptArgs {
268
- keys: Array<string>;
269
- isith?: number | string | Array<string>;
270
- ndigs?: Array<string>;
271
- nsith?: number | string | Array<string>;
272
- toad?: number | string;
273
- wits?: Array<string>;
274
- cnfg?: Array<string>;
275
- data?: Array<object>;
276
- version?: Version;
277
- kind?: Serials;
278
- code?: string;
279
- intive?: boolean;
280
- delpre?: string;
281
- }
282
-
283
- export function incept({
284
- keys,
285
- isith,
286
- ndigs,
287
- nsith,
288
- toad,
289
- wits,
290
- cnfg,
291
- data,
292
- version = Versionage,
293
- kind = Serials.JSON,
294
- code,
295
- intive = false,
296
- delpre,
297
- }: InceptArgs) {
298
- const vs = versify(Ident.KERI, version, kind, 0);
299
- const ilk = delpre == undefined ? Ilks.icp : Ilks.dip;
300
- const sner = new CesrNumber({}, 0);
301
-
302
- if (isith == undefined) {
303
- isith = Math.max(1, Math.ceil(keys.length / 2));
304
- }
305
-
306
- const tholder = new Tholder({ sith: isith });
307
- if (tholder.num != undefined && tholder.num < 1) {
308
- throw new Error(`Invalid sith = ${tholder.num} less than 1.`);
309
- }
310
- if (tholder.size > keys.length) {
311
- throw new Error(`Invalid sith = ${tholder.num} for keys ${keys}`);
312
- }
313
-
314
- if (ndigs == undefined) {
315
- ndigs = new Array<string>();
316
- }
317
-
318
- if (nsith == undefined) {
319
- nsith = Math.max(0, Math.ceil(ndigs.length / 2));
320
- }
321
-
322
- const ntholder = new Tholder({ sith: nsith });
323
- if (ntholder.num != undefined && ntholder.num < 0) {
324
- throw new Error(`Invalid nsith = ${ntholder.num} less than 0.`);
325
- }
326
- if (ntholder.size > keys.length) {
327
- throw new Error(`Invalid nsith = ${ntholder.num} for keys ${ndigs}`);
328
- }
329
-
330
- wits = wits == undefined ? [] : wits;
331
- if (new Set(wits).size != wits.length) {
332
- throw new Error(`Invalid wits = ${wits}, has duplicates.`);
333
- }
334
-
335
- if (toad == undefined) {
336
- if (wits.length == 0) {
337
- toad = 0;
338
- } else {
339
- toad = ample(wits.length);
340
- }
341
- }
342
-
343
- const toader = new CesrNumber({}, toad);
344
- if (wits.length > 0) {
345
- if (toader.num < 1 || toader.num > wits.length) {
346
- throw new Error(`Invalid toad = ${toader.num} for wits = ${wits}`);
347
- }
348
- } else {
349
- if (toader.num != 0) {
350
- throw new Error(`Invalid toad = ${toader.num} for wits = ${wits}`);
351
- }
352
- }
353
-
354
- cnfg = cnfg == undefined ? new Array<string>() : cnfg;
355
- data = data == undefined ? new Array<object>() : data;
356
-
357
- let ked = {
358
- v: vs,
359
- t: ilk,
360
- d: '',
361
- i: '',
362
- s: sner.numh,
363
- kt: intive && tholder.num != undefined ? tholder.num : tholder.sith,
364
- k: keys,
365
- nt: intive && tholder.num != undefined ? ntholder.num : ntholder.sith,
366
- n: ndigs,
367
- bt: intive ? toader.num : toader.numh,
368
- b: wits,
369
- c: cnfg,
370
- a: data,
371
- } as Dict<any>;
372
-
373
- if (delpre != undefined) {
374
- ked['di'] = delpre;
375
- if (code == undefined) {
376
- code = MtrDex.Blake3_256;
377
- }
378
- }
379
-
380
- let prefixer;
381
- if (delpre == undefined && code == undefined && keys.length == 1) {
382
- prefixer = new Prefixer({ qb64: keys[0] });
383
- if (prefixer.digestive) {
384
- throw new Error(
385
- `Invalid code, digestive=${prefixer.code}, must be derived from ked.`
386
- );
387
- }
388
- } else {
389
- prefixer = new Prefixer({ code: code }, ked);
390
- if (delpre != undefined) {
391
- if (!prefixer.digestive) {
392
- throw new Error(
393
- `Invalid derivation code = ${prefixer.code} for delegation. Must be digestive`
394
- );
395
- }
396
- }
397
- }
398
-
399
- ked['i'] = prefixer.qb64;
400
- if (prefixer.digestive) {
401
- ked['d'] = prefixer.qb64;
402
- } else {
403
- [, ked] = Saider.saidify(ked);
404
- }
405
-
406
- return new Serder(ked);
407
- }
408
-
409
- export function messagize(
410
- serder: Serder,
411
- sigers?: Array<Siger>,
412
- seal?: any,
413
- wigers?: Array<Cigar>,
414
- cigars?: Array<Cigar>,
415
- pipelined: boolean = false
416
- ): Uint8Array {
417
- let msg = new Uint8Array(b(serder.raw));
418
- let atc = new Uint8Array();
419
-
420
- if (sigers == undefined && wigers == undefined && cigars == undefined) {
421
- throw new Error(
422
- `Missing attached signatures on message = ${serder.ked}.`
423
- );
424
- }
425
-
426
- if (sigers != undefined) {
427
- if (seal != undefined) {
428
- if (seal[0] == 'SealEvent') {
429
- atc = concat(
430
- atc,
431
- new Counter({ code: CtrDex.TransIdxSigGroups, count: 1 })
432
- .qb64b
433
- );
434
- atc = concat(atc, new TextEncoder().encode(seal[1].i));
435
- atc = concat(
436
- atc,
437
- new Seqner({ sn: parseInt(seal[1].s) }).qb64b
438
- );
439
- atc = concat(atc, new TextEncoder().encode(seal[1].d));
440
- } else if (seal[0] == 'SealLast') {
441
- atc = concat(
442
- atc,
443
- new Counter({
444
- code: CtrDex.TransLastIdxSigGroups,
445
- count: 1,
446
- }).qb64b
447
- );
448
- atc = concat(atc, new TextEncoder().encode(seal[1].i));
449
- }
450
- }
451
-
452
- atc = concat(
453
- atc,
454
- new Counter({
455
- code: CtrDex.ControllerIdxSigs,
456
- count: sigers.length,
457
- }).qb64b
458
- );
459
- sigers.forEach((siger) => {
460
- atc = concat(atc, siger.qb64b);
461
- });
462
- }
463
-
464
- if (wigers != undefined) {
465
- atc = concat(
466
- atc,
467
- new Counter({
468
- code: CtrDex.ControllerIdxSigs,
469
- count: wigers.length,
470
- }).qb64b
471
- );
472
-
473
- wigers.forEach((wiger) => {
474
- if (wiger.verfer && !(wiger.verfer.code in NonTransDex)) {
475
- throw new Error(
476
- `Attempt to use tranferable prefix=${wiger.verfer.qb64} for receipt.`
477
- );
478
- }
479
- atc = concat(atc, wiger.qb64b);
480
- });
481
- }
482
-
483
- if (cigars != undefined) {
484
- atc = concat(
485
- atc,
486
- new Counter({
487
- code: CtrDex.ControllerIdxSigs,
488
- count: cigars.length,
489
- }).qb64b
490
- );
491
-
492
- cigars.forEach((cigar) => {
493
- if (cigar.verfer && !(cigar.verfer.code in NonTransDex)) {
494
- throw new Error(
495
- `Attempt to use tranferable prefix=${cigar.verfer.qb64} for receipt.`
496
- );
497
- }
498
- atc = concat(atc, cigar.qb64b);
499
- });
500
- }
501
-
502
- if (pipelined) {
503
- if (atc.length % 4 != 0) {
504
- throw new Error(
505
- `Invalid attachments size=${atc.length}, nonintegral quadlets.`
506
- );
507
- }
508
- msg = concat(
509
- msg,
510
- new Counter({
511
- code: CtrDex.AttachedMaterialQuadlets,
512
- count: Math.floor(atc.length / 4),
513
- }).qb64b
514
- );
515
- }
516
- msg = concat(msg, atc);
517
- return msg;
518
- }
519
-
520
- interface InteractArgs {
521
- pre: string;
522
- dig: string;
523
- sn: number;
524
- data: Array<any>;
525
- version: Version | undefined;
526
- kind: Serials | undefined;
527
- }
528
-
529
- export function interact(args: InteractArgs): Serder {
530
- let { pre, dig, sn, data, version, kind } = args;
531
- const vs = versify(Ident.KERI, version, kind, 0);
532
- const ilk = Ilks.ixn;
533
- const sner = new CesrNumber({}, sn);
534
-
535
- if (sner.num < 1) {
536
- throw new Error(`Invalid sn = 0x${sner.numh} for ixn.`);
537
- }
538
-
539
- data = data == undefined ? new Array<any>() : data;
540
-
541
- let ked = {
542
- v: vs,
543
- t: ilk,
544
- d: '',
545
- i: pre,
546
- s: sner.numh,
547
- p: dig,
548
- a: data,
549
- } as Dict<any>;
550
-
551
- [, ked] = Saider.saidify(ked);
552
-
553
- return new Serder(ked);
554
- }
555
-
556
- export function reply(
557
- route: string = '',
558
- data: any | undefined,
559
- stamp: string | undefined,
560
- version: Version | undefined,
561
- kind: Serials = Serials.JSON
562
- ) {
563
- const vs = versify(Ident.KERI, version, kind, 0);
564
- if (data == undefined) {
565
- data = {};
566
- }
567
- const _sad = {
568
- v: vs,
569
- t: Ilks.rpy,
570
- d: '',
571
- dt: stamp ?? new Date().toISOString().replace('Z', '000+00:00'),
572
- r: route,
573
- a: data,
574
- };
575
- const [, sad] = Saider.saidify(_sad);
576
- const saider = new Saider({ qb64: sad['d'] });
577
-
578
- if (!saider.verify(sad, true, true, kind, 'd'))
579
- throw new Error(`Invalid said = ${saider.qb64} for reply msg=${sad}.`);
580
- return new Serder(sad);
581
- }