signify-ts 0.2.1 → 0.3.0-rc2
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.
- package/README.md +104 -34
- package/dist/exports.d.ts +40 -40
- package/dist/exports.js +40 -0
- package/dist/index.d.ts +2 -3
- package/dist/index.js +3 -8
- package/dist/keri/app/aiding.d.ts +34 -14
- package/{src/keri/app/aiding.ts → dist/keri/app/aiding.js} +104 -235
- package/dist/keri/app/clienting.d.ts +57 -22
- package/{src/keri/app/clienting.ts → dist/keri/app/clienting.js} +145 -234
- package/dist/keri/app/contacting.d.ts +33 -21
- package/{src/keri/app/contacting.ts → dist/keri/app/contacting.js} +25 -62
- package/dist/keri/app/controller.d.ts +49 -6
- package/{src/keri/app/controller.ts → dist/keri/app/controller.js} +79 -185
- package/dist/keri/app/coring.d.ts +30 -8
- package/{src/keri/app/coring.ts → dist/keri/app/coring.js} +62 -51
- package/dist/keri/app/credentialing.d.ts +183 -65
- package/dist/keri/app/credentialing.js +540 -0
- package/dist/keri/app/delegating.d.ts +18 -0
- package/dist/keri/app/delegating.js +24 -0
- package/dist/keri/app/escrowing.d.ts +1 -1
- package/{src/keri/app/escrowing.ts → dist/keri/app/escrowing.js} +2 -8
- package/dist/keri/app/exchanging.d.ts +7 -6
- package/{src/keri/app/exchanging.ts → dist/keri/app/exchanging.js} +33 -110
- package/dist/keri/app/grouping.d.ts +2 -2
- package/{src/keri/app/grouping.ts → dist/keri/app/grouping.js} +6 -25
- package/dist/keri/app/habery.d.ts +2 -2
- package/dist/keri/app/habery.js +117 -0
- package/dist/keri/app/notifying.d.ts +2 -2
- package/{src/keri/app/notifying.ts → dist/keri/app/notifying.js} +7 -17
- package/dist/keri/core/authing.d.ts +2 -2
- package/{src/keri/core/authing.ts → dist/keri/core/authing.js} +26 -42
- package/dist/keri/core/base64.d.ts +2 -0
- package/dist/keri/core/base64.js +16 -0
- package/dist/keri/core/bexter.d.ts +1 -1
- package/{src/keri/core/bexter.ts → dist/keri/core/bexter.js} +18 -32
- package/dist/keri/core/cigar.d.ts +2 -2
- package/dist/keri/core/cigar.js +13 -0
- package/dist/keri/core/cipher.d.ts +1 -1
- package/{src/keri/core/cipher.ts → dist/keri/core/cipher.js} +10 -19
- package/dist/keri/core/core.d.ts +117 -9
- package/dist/keri/core/core.js +385 -0
- package/dist/keri/core/counter.d.ts +2 -2
- package/dist/keri/core/counter.js +221 -0
- package/dist/keri/core/decrypter.d.ts +4 -4
- package/{src/keri/core/decrypter.ts → dist/keri/core/decrypter.js} +23 -40
- package/dist/keri/core/diger.d.ts +3 -3
- package/{src/keri/core/diger.ts → dist/keri/core/diger.js} +18 -33
- package/dist/keri/core/encrypter.d.ts +2 -2
- package/{src/keri/core/encrypter.ts → dist/keri/core/encrypter.js} +18 -38
- package/dist/keri/core/eventing.d.ts +4 -4
- package/{src/keri/core/eventing.ts → dist/keri/core/eventing.js} +134 -321
- package/dist/keri/core/httping.d.ts +11 -4
- package/{src/keri/core/httping.ts → dist/keri/core/httping.js} +36 -101
- package/dist/keri/core/indexer.d.ts +1 -1
- package/dist/keri/core/indexer.js +407 -0
- package/dist/keri/core/keeping.d.ts +98 -46
- package/dist/keri/core/keeping.js +365 -0
- package/{src/keri/core/kering.ts → dist/keri/core/kering.js} +1 -3
- package/dist/keri/core/keyState.d.ts +85 -0
- package/dist/keri/core/keyState.js +1 -0
- package/dist/keri/core/manager.d.ts +147 -12
- package/dist/keri/core/manager.js +880 -0
- package/dist/keri/core/matter.d.ts +1 -1
- package/dist/keri/core/matter.js +460 -0
- package/dist/keri/core/number.d.ts +1 -1
- package/{src/keri/core/number.ts → dist/keri/core/number.js} +21 -30
- package/dist/keri/core/pather.d.ts +2 -2
- package/{src/keri/core/pather.ts → dist/keri/core/pather.js} +12 -27
- package/dist/keri/core/prefixer.d.ts +10 -10
- package/dist/keri/core/prefixer.js +182 -0
- package/dist/keri/core/saider.d.ts +2 -12
- package/dist/keri/core/saider.js +107 -0
- package/dist/keri/core/salter.d.ts +45 -3
- package/dist/keri/core/salter.js +117 -0
- package/dist/keri/core/seqner.d.ts +1 -1
- package/{src/keri/core/seqner.ts → dist/keri/core/seqner.js} +20 -21
- package/dist/keri/core/serder.d.ts +25 -12
- package/dist/keri/core/serder.js +133 -0
- package/dist/keri/core/siger.d.ts +2 -2
- package/{src/keri/core/siger.ts → dist/keri/core/siger.js} +4 -14
- package/dist/keri/core/signer.d.ts +4 -4
- package/dist/keri/core/signer.js +84 -0
- package/{src/keri/core/tholder.ts → dist/keri/core/tholder.js} +69 -94
- package/dist/keri/core/utils.d.ts +1 -1
- package/{src/keri/core/utils.ts → dist/keri/core/utils.js} +30 -60
- package/dist/keri/core/vdring.d.ts +2 -2
- package/dist/keri/core/vdring.js +61 -0
- package/dist/keri/core/verfer.d.ts +2 -6
- package/dist/keri/core/verfer.js +37 -0
- package/dist/keri/end/ending.d.ts +10 -8
- package/dist/keri/end/ending.js +136 -0
- package/{src/ready.ts → dist/ready.js} +1 -2
- package/dist/types/keria-api-schema.d.ts +304 -0
- package/dist/types/keria-api-schema.js +2 -0
- package/package.json +53 -50
- package/dist/buffer-polyfill.d.ts +0 -1
- package/dist/math.d.ts +0 -1
- package/dist/signify-ts.cjs +0 -7842
- package/dist/signify-ts.cjs.development.js +0 -9501
- package/dist/signify-ts.cjs.development.js.map +0 -1
- package/dist/signify-ts.cjs.map +0 -7
- package/dist/signify-ts.cjs.production.min.js +0 -2
- package/dist/signify-ts.cjs.production.min.js.map +0 -1
- package/dist/signify-ts.esm.js +0 -9345
- package/dist/signify-ts.esm.js.map +0 -1
- package/dist/signify-ts.mjs +0 -7818
- package/dist/signify-ts.mjs.map +0 -7
- package/src/buffer-polyfill.ts +0 -5
- package/src/exports.ts +0 -44
- package/src/index.ts +0 -4
- package/src/keri/app/credentialing.ts +0 -841
- package/src/keri/app/habery.ts +0 -185
- package/src/keri/core/cigar.ts +0 -18
- package/src/keri/core/core.ts +0 -326
- package/src/keri/core/counter.ts +0 -273
- package/src/keri/core/indexer.ts +0 -509
- package/src/keri/core/keeping.ts +0 -684
- package/src/keri/core/manager.ts +0 -1183
- package/src/keri/core/matter.ts +0 -521
- package/src/keri/core/prefixer.ts +0 -233
- package/src/keri/core/saider.ts +0 -186
- package/src/keri/core/salter.ts +0 -120
- package/src/keri/core/serder.ts +0 -163
- package/src/keri/core/signer.ts +0 -133
- package/src/keri/core/vdring.ts +0 -94
- package/src/keri/core/verfer.ts +0 -47
- package/src/keri/end/ending.ts +0 -170
- package/src/math.ts +0 -3
package/src/keri/app/habery.ts
DELETED
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import { Algos, Manager } from '../core/manager';
|
|
2
|
-
import { MtrDex } from '../core/matter';
|
|
3
|
-
import { Salter } from '../core/salter';
|
|
4
|
-
import { Verfer } from '../core/verfer';
|
|
5
|
-
import { Diger } from '../core/diger';
|
|
6
|
-
import { incept } from '../core/eventing';
|
|
7
|
-
import { Serder } from '../core/serder';
|
|
8
|
-
|
|
9
|
-
export class TraitCodex {
|
|
10
|
-
EstOnly: string = 'EO'; // Only allow establishment events
|
|
11
|
-
DoNotDelegate: string = 'DND'; // Dot not allow delegated identifiers
|
|
12
|
-
NoBackers: string = 'NB'; // Do not allow backers
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export const TraitDex = new TraitCodex();
|
|
16
|
-
|
|
17
|
-
export interface HaberyArgs {
|
|
18
|
-
name: string;
|
|
19
|
-
passcode?: string;
|
|
20
|
-
seed?: string | undefined;
|
|
21
|
-
aeid?: string | undefined;
|
|
22
|
-
pidx?: number | undefined;
|
|
23
|
-
salt?: string | undefined;
|
|
24
|
-
tier?: string | undefined;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface MakeHabArgs {
|
|
28
|
-
code?: string;
|
|
29
|
-
transferable?: boolean;
|
|
30
|
-
isith?: string;
|
|
31
|
-
icount?: number;
|
|
32
|
-
nsith?: string;
|
|
33
|
-
ncount?: number;
|
|
34
|
-
toad?: string | number;
|
|
35
|
-
wits?: Array<string>;
|
|
36
|
-
delpre?: string;
|
|
37
|
-
estOnly?: boolean;
|
|
38
|
-
DnD?: boolean;
|
|
39
|
-
data?: any;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export class Hab {
|
|
43
|
-
public name: string;
|
|
44
|
-
public serder: Serder;
|
|
45
|
-
|
|
46
|
-
constructor(name: string, icp: Serder) {
|
|
47
|
-
this.name = name;
|
|
48
|
-
this.serder = icp;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
get pre(): string {
|
|
52
|
-
return this.serder.ked['i'];
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export class Habery {
|
|
57
|
-
private readonly _name: string;
|
|
58
|
-
private readonly _mgr: Manager;
|
|
59
|
-
private readonly _habs: Map<string, Hab> = new Map<string, Hab>();
|
|
60
|
-
|
|
61
|
-
constructor({ name, passcode, seed, aeid, pidx, salt }: HaberyArgs) {
|
|
62
|
-
this._name = name;
|
|
63
|
-
if (passcode != undefined && seed == undefined) {
|
|
64
|
-
if (passcode.length < 21) {
|
|
65
|
-
throw new Error('Bran (passcode seed material) too short.');
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
const bran = MtrDex.Salt_128 + 'A' + passcode.substring(0, 21); // qb64 salt for seed
|
|
69
|
-
const signer = new Salter({ qb64: bran }).signer(
|
|
70
|
-
MtrDex.Ed25519_Seed,
|
|
71
|
-
false
|
|
72
|
-
);
|
|
73
|
-
seed = signer.qb64;
|
|
74
|
-
if (aeid == undefined) {
|
|
75
|
-
aeid = signer.verfer.qb64; // lest it remove encryption
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
let algo;
|
|
79
|
-
const salter =
|
|
80
|
-
salt != undefined ? new Salter({ qb64: salt }) : undefined;
|
|
81
|
-
if (salt != undefined) {
|
|
82
|
-
algo = Algos.salty;
|
|
83
|
-
} else {
|
|
84
|
-
algo = Algos.randy;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
this._mgr = new Manager({
|
|
88
|
-
seed: seed,
|
|
89
|
-
aeid: aeid,
|
|
90
|
-
pidx: pidx,
|
|
91
|
-
algo: algo,
|
|
92
|
-
salter: salter,
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
get mgr(): Manager {
|
|
97
|
-
return this._mgr;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
get habs(): Array<Hab> {
|
|
101
|
-
return Array.from(this._habs.values());
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
habByName(name: string): Hab | undefined {
|
|
105
|
-
return this._habs.get(name);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
makeHab(
|
|
109
|
-
name: string,
|
|
110
|
-
{
|
|
111
|
-
code = MtrDex.Blake3_256,
|
|
112
|
-
transferable = true,
|
|
113
|
-
isith = undefined,
|
|
114
|
-
icount = 1,
|
|
115
|
-
nsith = undefined,
|
|
116
|
-
ncount = undefined,
|
|
117
|
-
toad = undefined,
|
|
118
|
-
wits = undefined,
|
|
119
|
-
delpre = undefined,
|
|
120
|
-
estOnly = false,
|
|
121
|
-
DnD = false,
|
|
122
|
-
data = undefined,
|
|
123
|
-
}: MakeHabArgs
|
|
124
|
-
): Hab {
|
|
125
|
-
if (nsith == undefined) {
|
|
126
|
-
nsith = isith;
|
|
127
|
-
}
|
|
128
|
-
if (ncount == undefined) {
|
|
129
|
-
ncount = icount;
|
|
130
|
-
}
|
|
131
|
-
if (!transferable) {
|
|
132
|
-
ncount = 0;
|
|
133
|
-
nsith = '0';
|
|
134
|
-
code = MtrDex.Ed25519N;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
const [verfers, digers] = this._mgr.incept({
|
|
138
|
-
icount: icount,
|
|
139
|
-
ncount: ncount,
|
|
140
|
-
stem: this.name,
|
|
141
|
-
transferable: transferable,
|
|
142
|
-
temp: false,
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
icount = verfers.length;
|
|
146
|
-
ncount = digers != undefined ? digers.length : 0;
|
|
147
|
-
if (isith == undefined) {
|
|
148
|
-
isith = `${Math.max(1, Math.ceil(icount / 2)).toString(16)}`;
|
|
149
|
-
}
|
|
150
|
-
if (nsith == undefined) {
|
|
151
|
-
nsith = `${Math.max(1, Math.ceil(ncount / 2)).toString(16)}`;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
const cnfg = new Array<string>();
|
|
155
|
-
if (estOnly) {
|
|
156
|
-
cnfg.push(TraitDex.EstOnly);
|
|
157
|
-
}
|
|
158
|
-
if (DnD) {
|
|
159
|
-
cnfg.push(TraitDex.DoNotDelegate);
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
const keys = Array.from(verfers, (verfer: Verfer) => verfer.qb64);
|
|
163
|
-
const ndigs = Array.from(digers, (diger: Diger) => diger.qb64);
|
|
164
|
-
|
|
165
|
-
const icp = incept({
|
|
166
|
-
keys,
|
|
167
|
-
isith,
|
|
168
|
-
ndigs,
|
|
169
|
-
nsith,
|
|
170
|
-
toad,
|
|
171
|
-
wits,
|
|
172
|
-
cnfg,
|
|
173
|
-
data,
|
|
174
|
-
code,
|
|
175
|
-
delpre,
|
|
176
|
-
});
|
|
177
|
-
const hab = new Hab(name, icp);
|
|
178
|
-
this._habs.set(name, hab);
|
|
179
|
-
return hab;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
get name(): string {
|
|
183
|
-
return this._name;
|
|
184
|
-
}
|
|
185
|
-
}
|
package/src/keri/core/cigar.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Verfer } from './verfer';
|
|
2
|
-
import { Matter, MatterArgs } from './matter';
|
|
3
|
-
|
|
4
|
-
export class Cigar extends Matter {
|
|
5
|
-
private _verfer: Verfer | undefined;
|
|
6
|
-
constructor({ raw, code, qb64, qb64b, qb2 }: MatterArgs, verfer?: Verfer) {
|
|
7
|
-
super({ raw, code, qb64, qb64b, qb2 });
|
|
8
|
-
this._verfer = verfer;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
get verfer(): Verfer | undefined {
|
|
12
|
-
return this._verfer;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
set verfer(verfer: Verfer | undefined) {
|
|
16
|
-
this._verfer = verfer;
|
|
17
|
-
}
|
|
18
|
-
}
|
package/src/keri/core/core.ts
DELETED
|
@@ -1,326 +0,0 @@
|
|
|
1
|
-
export enum Serials {
|
|
2
|
-
JSON = 'JSON',
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
export enum Ident {
|
|
6
|
-
KERI = 'KERI',
|
|
7
|
-
ACDC = 'ACDC',
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export class Version {
|
|
11
|
-
public major: number;
|
|
12
|
-
public minor: number;
|
|
13
|
-
|
|
14
|
-
constructor(major: number = 1, minor: number = 0) {
|
|
15
|
-
this.major = major;
|
|
16
|
-
this.minor = minor;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export const Versionage = new Version();
|
|
21
|
-
|
|
22
|
-
export const Ilks = {
|
|
23
|
-
icp: 'icp',
|
|
24
|
-
rot: 'rot',
|
|
25
|
-
ixn: 'ixn',
|
|
26
|
-
dip: 'dip',
|
|
27
|
-
drt: 'drt',
|
|
28
|
-
rct: 'rct',
|
|
29
|
-
vrc: 'vrc',
|
|
30
|
-
rpy: 'rpy',
|
|
31
|
-
exn: 'exn',
|
|
32
|
-
vcp: 'vcp',
|
|
33
|
-
iss: 'iss',
|
|
34
|
-
rev: 'rev',
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
export const IcpLabels = [
|
|
38
|
-
'v',
|
|
39
|
-
'i',
|
|
40
|
-
's',
|
|
41
|
-
't',
|
|
42
|
-
'kt',
|
|
43
|
-
'k',
|
|
44
|
-
'n',
|
|
45
|
-
'bt',
|
|
46
|
-
'b',
|
|
47
|
-
'c',
|
|
48
|
-
'a',
|
|
49
|
-
];
|
|
50
|
-
|
|
51
|
-
export const DipLabels = [
|
|
52
|
-
'v',
|
|
53
|
-
'i',
|
|
54
|
-
's',
|
|
55
|
-
't',
|
|
56
|
-
'kt',
|
|
57
|
-
'k',
|
|
58
|
-
'n',
|
|
59
|
-
'bt',
|
|
60
|
-
'b',
|
|
61
|
-
'c',
|
|
62
|
-
'a',
|
|
63
|
-
'di',
|
|
64
|
-
];
|
|
65
|
-
|
|
66
|
-
export const RotLabels = [
|
|
67
|
-
'v',
|
|
68
|
-
'i',
|
|
69
|
-
's',
|
|
70
|
-
't',
|
|
71
|
-
'p',
|
|
72
|
-
'kt',
|
|
73
|
-
'k',
|
|
74
|
-
'n',
|
|
75
|
-
'bt',
|
|
76
|
-
'br',
|
|
77
|
-
'ba',
|
|
78
|
-
'a',
|
|
79
|
-
];
|
|
80
|
-
export const DrtLabels = [
|
|
81
|
-
'v',
|
|
82
|
-
'i',
|
|
83
|
-
's',
|
|
84
|
-
't',
|
|
85
|
-
'p',
|
|
86
|
-
'kt',
|
|
87
|
-
'k',
|
|
88
|
-
'n',
|
|
89
|
-
'bt',
|
|
90
|
-
'br',
|
|
91
|
-
'ba',
|
|
92
|
-
'a',
|
|
93
|
-
];
|
|
94
|
-
export const IxnLabels = ['v', 'i', 's', 't', 'p', 'a'];
|
|
95
|
-
|
|
96
|
-
export const KsnLabels = [
|
|
97
|
-
'v',
|
|
98
|
-
'i',
|
|
99
|
-
's',
|
|
100
|
-
't',
|
|
101
|
-
'p',
|
|
102
|
-
'd',
|
|
103
|
-
'f',
|
|
104
|
-
'dt',
|
|
105
|
-
'et',
|
|
106
|
-
'kt',
|
|
107
|
-
'k',
|
|
108
|
-
'n',
|
|
109
|
-
'bt',
|
|
110
|
-
'b',
|
|
111
|
-
'c',
|
|
112
|
-
'ee',
|
|
113
|
-
'di',
|
|
114
|
-
'r',
|
|
115
|
-
];
|
|
116
|
-
|
|
117
|
-
export const RpyLabels = ['v', 't', 'd', 'dt', 'r', 'a'];
|
|
118
|
-
|
|
119
|
-
const encoder = new TextEncoder();
|
|
120
|
-
const decoder = new TextDecoder();
|
|
121
|
-
|
|
122
|
-
export const VERFULLSIZE = 17;
|
|
123
|
-
export const MINSNIFFSIZE = 12 + VERFULLSIZE;
|
|
124
|
-
export const MINSIGSIZE = 4;
|
|
125
|
-
|
|
126
|
-
// const version_pattern = 'KERI(?P<major>[0-9a-f])(?P<minor>[0-9a-f])
|
|
127
|
-
// (?P<kind>[A-Z]{4})(?P<size>[0-9a-f]{6})'
|
|
128
|
-
// const version_pattern1 = `KERI\(\?P<major>\[0\-9a\-f\]\)\(\?P<minor>\[0\-9a\-f\]\)\
|
|
129
|
-
// (\?P<kind>\[A\-Z\]\{4\}\)\(\?P<size>\[0\-9a\-f\]\{6\}\)_`
|
|
130
|
-
|
|
131
|
-
export const VEREX = '(KERI|ACDC)([0-9a-f])([0-9a-f])([A-Z]{4})([0-9a-f]{6})_';
|
|
132
|
-
|
|
133
|
-
export interface Dict<TValue> {
|
|
134
|
-
[id: string]: TValue;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
// Regex pattern matching
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* @description This function is use to deversify the version
|
|
141
|
-
* Here we will use regex to to validate and extract serialization kind,size and version
|
|
142
|
-
* @param {string} versionString version string
|
|
143
|
-
* @return {Object} contaning prototol (KERI or ACDC), kind of serialization like cbor,json,mgpk
|
|
144
|
-
* version = version of object ,size = raw size integer
|
|
145
|
-
*/
|
|
146
|
-
export function deversify(
|
|
147
|
-
versionString: string
|
|
148
|
-
): [Ident, Serials, Version, string] {
|
|
149
|
-
let kind;
|
|
150
|
-
let size;
|
|
151
|
-
let proto;
|
|
152
|
-
const version = Versionage;
|
|
153
|
-
|
|
154
|
-
// we need to identify how to match the buffers pattern ,like we do regex matching for strings
|
|
155
|
-
const re = new RegExp(VEREX);
|
|
156
|
-
|
|
157
|
-
const match = re.exec(versionString);
|
|
158
|
-
|
|
159
|
-
if (match) {
|
|
160
|
-
[proto, version.major, version.minor, kind, size] = [
|
|
161
|
-
match[1],
|
|
162
|
-
+match[2],
|
|
163
|
-
+match[3],
|
|
164
|
-
match[4],
|
|
165
|
-
match[5],
|
|
166
|
-
];
|
|
167
|
-
if (!Object.values(Serials).includes(kind as Serials)) {
|
|
168
|
-
throw new Error(`Invalid serialization kind = ${kind}`);
|
|
169
|
-
}
|
|
170
|
-
if (!Object.values(Ident).includes(proto as Ident)) {
|
|
171
|
-
throw new Error(`Invalid serialization kind = ${kind}`);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
const ta = kind as keyof typeof Serials;
|
|
175
|
-
kind = Serials[ta];
|
|
176
|
-
const pa = proto as keyof typeof Ident;
|
|
177
|
-
proto = Ident[pa];
|
|
178
|
-
|
|
179
|
-
return [proto, kind, version, size];
|
|
180
|
-
}
|
|
181
|
-
throw new Error(`Invalid version string = ${versionString}`);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
export function versify(
|
|
185
|
-
ident: Ident = Ident.KERI,
|
|
186
|
-
version?: Version,
|
|
187
|
-
kind: Serials = Serials.JSON,
|
|
188
|
-
size: number = 0
|
|
189
|
-
) {
|
|
190
|
-
version = version == undefined ? Versionage : version;
|
|
191
|
-
|
|
192
|
-
return `${ident}${version.major.toString(
|
|
193
|
-
16
|
|
194
|
-
)}${version.minor.toString()}${kind}${size.toString(16).padStart(6, '0')}_`;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
export const B64ChrByIdx = new Map<number, string>([
|
|
198
|
-
[0, 'A'],
|
|
199
|
-
[1, 'B'],
|
|
200
|
-
[2, 'C'],
|
|
201
|
-
[3, 'D'],
|
|
202
|
-
[4, 'E'],
|
|
203
|
-
[5, 'F'],
|
|
204
|
-
[6, 'G'],
|
|
205
|
-
[7, 'H'],
|
|
206
|
-
[8, 'I'],
|
|
207
|
-
[9, 'J'],
|
|
208
|
-
[10, 'K'],
|
|
209
|
-
[11, 'L'],
|
|
210
|
-
[12, 'M'],
|
|
211
|
-
[13, 'N'],
|
|
212
|
-
[14, 'O'],
|
|
213
|
-
[15, 'P'],
|
|
214
|
-
[16, 'Q'],
|
|
215
|
-
[17, 'R'],
|
|
216
|
-
[18, 'S'],
|
|
217
|
-
[19, 'T'],
|
|
218
|
-
[20, 'U'],
|
|
219
|
-
[21, 'V'],
|
|
220
|
-
[22, 'W'],
|
|
221
|
-
[23, 'X'],
|
|
222
|
-
[24, 'Y'],
|
|
223
|
-
[25, 'Z'],
|
|
224
|
-
[26, 'a'],
|
|
225
|
-
[27, 'b'],
|
|
226
|
-
[28, 'c'],
|
|
227
|
-
[29, 'd'],
|
|
228
|
-
[30, 'e'],
|
|
229
|
-
[31, 'f'],
|
|
230
|
-
[32, 'g'],
|
|
231
|
-
[33, 'h'],
|
|
232
|
-
[34, 'i'],
|
|
233
|
-
[35, 'j'],
|
|
234
|
-
[36, 'k'],
|
|
235
|
-
[37, 'l'],
|
|
236
|
-
[38, 'm'],
|
|
237
|
-
[39, 'n'],
|
|
238
|
-
[40, 'o'],
|
|
239
|
-
[41, 'p'],
|
|
240
|
-
[42, 'q'],
|
|
241
|
-
[43, 'r'],
|
|
242
|
-
[44, 's'],
|
|
243
|
-
[45, 't'],
|
|
244
|
-
[46, 'u'],
|
|
245
|
-
[47, 'v'],
|
|
246
|
-
[48, 'w'],
|
|
247
|
-
[49, 'x'],
|
|
248
|
-
[50, 'y'],
|
|
249
|
-
[51, 'z'],
|
|
250
|
-
[52, '0'],
|
|
251
|
-
[53, '1'],
|
|
252
|
-
[54, '2'],
|
|
253
|
-
[55, '3'],
|
|
254
|
-
[56, '4'],
|
|
255
|
-
[57, '5'],
|
|
256
|
-
[58, '6'],
|
|
257
|
-
[59, '7'],
|
|
258
|
-
[60, '8'],
|
|
259
|
-
[61, '9'],
|
|
260
|
-
[62, '-'],
|
|
261
|
-
[63, '_'],
|
|
262
|
-
]);
|
|
263
|
-
|
|
264
|
-
export const B64IdxByChr = new Map<string, number>(
|
|
265
|
-
Array.from(B64ChrByIdx, (entry) => [entry[1], entry[0]])
|
|
266
|
-
);
|
|
267
|
-
|
|
268
|
-
export function intToB64(i: number, l = 1): string {
|
|
269
|
-
let out = '';
|
|
270
|
-
while (l != 0) {
|
|
271
|
-
out = B64ChrByIdx.get(i % 64) + out;
|
|
272
|
-
i = Math.floor(i / 64);
|
|
273
|
-
if (i == 0) {
|
|
274
|
-
break;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
const x = l - out.length;
|
|
279
|
-
for (let i = 0; i < x; i++) {
|
|
280
|
-
out = 'A' + out;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
return out;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
export function intToB64b(n: number, l: number = 1): Uint8Array {
|
|
287
|
-
const s = intToB64(n, l);
|
|
288
|
-
return b(s);
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
export function b64ToInt(s: string): number {
|
|
292
|
-
if (s.length == 0) {
|
|
293
|
-
throw new Error('Empty string, conversion undefined.');
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
let i = 0;
|
|
297
|
-
const rev = s.split('').reverse();
|
|
298
|
-
rev.forEach((c: string, e: number) => {
|
|
299
|
-
i |= B64IdxByChr.get(c)! << (e * 6);
|
|
300
|
-
});
|
|
301
|
-
|
|
302
|
-
return i;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
export function b(s?: string): Uint8Array {
|
|
306
|
-
return encoder.encode(s);
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
export function d(u?: Uint8Array): string {
|
|
310
|
-
return decoder.decode(u);
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
export function concat(one: Uint8Array, two: Uint8Array): Uint8Array {
|
|
314
|
-
const out = new Uint8Array(one.length + two.length);
|
|
315
|
-
out.set(one);
|
|
316
|
-
out.set(two, one.length);
|
|
317
|
-
return out;
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
export function readInt(array: Uint8Array) {
|
|
321
|
-
let value = 0;
|
|
322
|
-
for (let i = 0; i < array.length; i++) {
|
|
323
|
-
value = value * 256 + array[i];
|
|
324
|
-
}
|
|
325
|
-
return value;
|
|
326
|
-
}
|