@interop/wallet-core 0.52.1 → 0.54.0
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/dist/clientAnnex/credentialAnchoredGenesis.d.ts +24 -10
- package/dist/clientAnnex/credentialAnchoredGenesis.d.ts.map +1 -1
- package/dist/clientAnnex/credentialAnchoredGenesis.js +42 -13
- package/dist/clientAnnex/credentialAnchoredGenesis.js.map +1 -1
- package/dist/clientAnnex/forgetLast.d.ts +18 -10
- package/dist/clientAnnex/forgetLast.d.ts.map +1 -1
- package/dist/clientAnnex/forgetLast.js +29 -9
- package/dist/clientAnnex/forgetLast.js.map +1 -1
- package/dist/clientAnnex/index.d.ts +1 -1
- package/dist/clientAnnex/index.d.ts.map +1 -1
- package/dist/clientAnnex/index.js +1 -1
- package/dist/clientAnnex/index.js.map +1 -1
- package/dist/clientAnnex/ladderAnchored.d.ts +125 -5
- package/dist/clientAnnex/ladderAnchored.d.ts.map +1 -1
- package/dist/clientAnnex/ladderAnchored.js +180 -12
- package/dist/clientAnnex/ladderAnchored.js.map +1 -1
- package/dist/clientAnnex/recoveryLadderAnchored.d.ts +11 -0
- package/dist/clientAnnex/recoveryLadderAnchored.d.ts.map +1 -1
- package/dist/clientAnnex/recoveryLadderAnchored.js +45 -5
- package/dist/clientAnnex/recoveryLadderAnchored.js.map +1 -1
- package/dist/clientAnnex/selfEnroll.d.ts +61 -2
- package/dist/clientAnnex/selfEnroll.d.ts.map +1 -1
- package/dist/clientAnnex/selfEnroll.js +72 -8
- package/dist/clientAnnex/selfEnroll.js.map +1 -1
- package/dist/clients/rosterPolicy.d.ts.map +1 -1
- package/dist/clients/rosterPolicy.js +10 -7
- package/dist/clients/rosterPolicy.js.map +1 -1
- package/dist/descriptors/logSource.d.ts +5 -2
- package/dist/descriptors/logSource.d.ts.map +1 -1
- package/dist/descriptors/logSource.js +5 -2
- package/dist/descriptors/logSource.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/keys/clientKeyRecord.d.ts +68 -1
- package/dist/keys/clientKeyRecord.d.ts.map +1 -1
- package/dist/keys/clientKeyRecord.js +155 -20
- package/dist/keys/clientKeyRecord.js.map +1 -1
- package/dist/keys/index.d.ts +2 -2
- package/dist/keys/index.d.ts.map +1 -1
- package/dist/keys/index.js +1 -1
- package/dist/keys/index.js.map +1 -1
- package/dist/keys/rosterLogStore.d.ts.map +1 -1
- package/dist/keys/rosterLogStore.js +15 -0
- package/dist/keys/rosterLogStore.js.map +1 -1
- package/dist/log.d.ts +49 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +53 -0
- package/dist/log.js.map +1 -0
- package/dist/recovery/recoveryDelegation.d.ts +6 -2
- package/dist/recovery/recoveryDelegation.d.ts.map +1 -1
- package/dist/recovery/recoveryDelegation.js +31 -5
- package/dist/recovery/recoveryDelegation.js.map +1 -1
- package/dist/recovery/recoveryWebvh.d.ts +75 -6
- package/dist/recovery/recoveryWebvh.d.ts.map +1 -1
- package/dist/recovery/recoveryWebvh.js +121 -16
- package/dist/recovery/recoveryWebvh.js.map +1 -1
- package/dist/request/capabilityRequest.d.ts +9 -1
- package/dist/request/capabilityRequest.d.ts.map +1 -1
- package/dist/request/capabilityRequest.js +13 -2
- package/dist/request/capabilityRequest.js.map +1 -1
- package/dist/request/classify.d.ts +37 -1
- package/dist/request/classify.d.ts.map +1 -1
- package/dist/request/classify.js +61 -2
- package/dist/request/classify.js.map +1 -1
- package/dist/request/ephemeralExchange.d.ts +0 -18
- package/dist/request/ephemeralExchange.d.ts.map +1 -1
- package/dist/request/ephemeralExchange.js +3 -2
- package/dist/request/ephemeralExchange.js.map +1 -1
- package/dist/request/interactionUrl.d.ts.map +1 -1
- package/dist/request/interactionUrl.js +4 -2
- package/dist/request/interactionUrl.js.map +1 -1
- package/dist/request/parse.d.ts +0 -10
- package/dist/request/parse.d.ts.map +1 -1
- package/dist/request/parse.js +15 -1
- package/dist/request/parse.js.map +1 -1
- package/dist/request/processRequest.d.ts.map +1 -1
- package/dist/request/processRequest.js +2 -1
- package/dist/request/processRequest.js.map +1 -1
- package/dist/request/types.d.ts +23 -2
- package/dist/request/types.d.ts.map +1 -1
- package/dist/resourceLog/controller.d.ts.map +1 -1
- package/dist/resourceLog/controller.js +3 -2
- package/dist/resourceLog/controller.js.map +1 -1
- package/dist/resourceLog/license.d.ts +17 -3
- package/dist/resourceLog/license.d.ts.map +1 -1
- package/dist/resourceLog/license.js +24 -2
- package/dist/resourceLog/license.js.map +1 -1
- package/dist/space/activity.d.ts +48 -1
- package/dist/space/activity.d.ts.map +1 -1
- package/dist/space/activity.js +52 -4
- package/dist/space/activity.js.map +1 -1
- package/dist/space/index.d.ts +1 -1
- package/dist/space/index.d.ts.map +1 -1
- package/dist/space/index.js +1 -1
- package/dist/space/index.js.map +1 -1
- package/dist/sync/pull.d.ts +0 -22
- package/dist/sync/pull.d.ts.map +1 -1
- package/dist/sync/pull.js +30 -2
- package/dist/sync/pull.js.map +1 -1
- package/dist/unlock/index.d.ts +1 -1
- package/dist/unlock/index.d.ts.map +1 -1
- package/dist/unlock/index.js +1 -1
- package/dist/unlock/index.js.map +1 -1
- package/dist/unlock/standingWebvh.d.ts +10 -0
- package/dist/unlock/standingWebvh.d.ts.map +1 -1
- package/dist/unlock/standingWebvh.js +10 -2
- package/dist/unlock/standingWebvh.js.map +1 -1
- package/dist/unlock/unlockRecord.d.ts +37 -0
- package/dist/unlock/unlockRecord.d.ts.map +1 -1
- package/dist/unlock/unlockRecord.js +53 -0
- package/dist/unlock/unlockRecord.js.map +1 -1
- package/dist/webvh/didWebvh.d.ts +53 -2
- package/dist/webvh/didWebvh.d.ts.map +1 -1
- package/dist/webvh/didWebvh.js +72 -20
- package/dist/webvh/didWebvh.js.map +1 -1
- package/dist/webvh/index.d.ts +1 -1
- package/dist/webvh/index.d.ts.map +1 -1
- package/dist/webvh/index.js +1 -1
- package/dist/webvh/index.js.map +1 -1
- package/package.json +7 -5
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
import type { ClientWebvhUpdateKeys } from '../webvh/didWebvh.js';
|
|
2
2
|
import type { UserKey } from './userKey.js';
|
|
3
|
+
/**
|
|
4
|
+
* A ceremony's local pending state, decoded: written by a self-enrollment or
|
|
5
|
+
* recovery-spend ceremony's required persist hook between its reveal-and-commit
|
|
6
|
+
* entry and its pivot (add / add-and-retire) entry. See the module doc.
|
|
7
|
+
*
|
|
8
|
+
* `ceremony` says which ceremony wrote the pending record, so a spend-written
|
|
9
|
+
* record is never mistaken for a seeded self-enrollment. `builtOnHead` is the
|
|
10
|
+
* account-log head (SCID plus versionId) the ceremony's pivot entry was built
|
|
11
|
+
* on, so a resume refuses to rebuild over a served log that has not reached
|
|
12
|
+
* that head, or that swapped genesis. `unwrapKey` and `replacementCode` belong
|
|
13
|
+
* to the recovery spend alone: `unwrapKey` carries the spent recovery code's
|
|
14
|
+
* key-agreement secret so the first post-pivot roster escrow stays
|
|
15
|
+
* re-derivable, and `replacementCode` carries the once-per-ceremony
|
|
16
|
+
* replacement recovery code's bytes so a re-run reuses the same unlock Space
|
|
17
|
+
* address.
|
|
18
|
+
*/
|
|
19
|
+
export interface ClientKeyRecordPending {
|
|
20
|
+
ceremony: 'recovery-spend' | 'self-enrollment';
|
|
21
|
+
builtOnHead: {
|
|
22
|
+
scid: string;
|
|
23
|
+
versionId: string;
|
|
24
|
+
};
|
|
25
|
+
unwrapKey?: Uint8Array;
|
|
26
|
+
replacementCode?: Uint8Array;
|
|
27
|
+
}
|
|
3
28
|
/**
|
|
4
29
|
* A client-key record's contents, decoded.
|
|
5
30
|
*
|
|
@@ -14,6 +39,7 @@ export interface ClientKeyRecord {
|
|
|
14
39
|
webvhUpdateKeys?: ClientWebvhUpdateKeys;
|
|
15
40
|
controller?: string;
|
|
16
41
|
pointerDid?: string;
|
|
42
|
+
pending?: ClientKeyRecordPending;
|
|
17
43
|
}
|
|
18
44
|
/**
|
|
19
45
|
* A client-key record's contents as they are stored: plain JSON, every byte
|
|
@@ -34,6 +60,15 @@ export interface ClientKeyRecordJson {
|
|
|
34
60
|
};
|
|
35
61
|
controller?: string;
|
|
36
62
|
pointerDid?: string;
|
|
63
|
+
pending?: {
|
|
64
|
+
ceremony: 'recovery-spend' | 'self-enrollment';
|
|
65
|
+
builtOnHead: {
|
|
66
|
+
scid: string;
|
|
67
|
+
versionId: string;
|
|
68
|
+
};
|
|
69
|
+
unwrapKey?: string;
|
|
70
|
+
replacementCode?: string;
|
|
71
|
+
};
|
|
37
72
|
createdAt?: string;
|
|
38
73
|
}
|
|
39
74
|
/**
|
|
@@ -70,6 +105,19 @@ export declare function parseClientRecordUserKey(value: unknown): UserKey | unde
|
|
|
70
105
|
* @returns {ClientWebvhUpdateKeys | undefined}
|
|
71
106
|
*/
|
|
72
107
|
export declare function parseClientRecordWebvhKeys(value: unknown): ClientWebvhUpdateKeys | undefined;
|
|
108
|
+
/**
|
|
109
|
+
* Parses and validates the optional `pending` member: a self-enrollment or
|
|
110
|
+
* recovery-spend ceremony's local pending state. An absent member resolves to
|
|
111
|
+
* `undefined` (an enrolled record, or a completed ceremony); a
|
|
112
|
+
* present-but-malformed one throws.
|
|
113
|
+
*
|
|
114
|
+
* `unwrapKey` and `replacementCode` belong to the recovery spend alone --
|
|
115
|
+
* present under `ceremony: 'self-enrollment'`, either throws.
|
|
116
|
+
*
|
|
117
|
+
* @param value {unknown} the record's `pending` member
|
|
118
|
+
* @returns {ClientKeyRecordPending | undefined}
|
|
119
|
+
*/
|
|
120
|
+
export declare function parseClientRecordPending(value: unknown): ClientKeyRecordPending | undefined;
|
|
73
121
|
/**
|
|
74
122
|
* Encodes a client-key record's contents for storage: base64url byte fields,
|
|
75
123
|
* optional members omitted rather than written as null. Every secret is
|
|
@@ -85,16 +133,19 @@ export declare function parseClientRecordWebvhKeys(value: unknown): ClientWebvhU
|
|
|
85
133
|
* was bound for -- on an enrolled (non-first) client it differs from the
|
|
86
134
|
* client's own did:key
|
|
87
135
|
* @param [options.pointerDid] {string} the account's did:webvh
|
|
136
|
+
* @param [options.pending] {ClientKeyRecordPending} a self-enrollment or
|
|
137
|
+
* recovery-spend ceremony's local pending state
|
|
88
138
|
* @param [options.createdAt] {string} when the record was written; defaults
|
|
89
139
|
* to now
|
|
90
140
|
* @returns {ClientKeyRecordJson}
|
|
91
141
|
*/
|
|
92
|
-
export declare function encodeClientKeyRecord({ clientSeed, userKey, webvhUpdateKeys, controller, pointerDid, createdAt }: {
|
|
142
|
+
export declare function encodeClientKeyRecord({ clientSeed, userKey, webvhUpdateKeys, controller, pointerDid, pending, createdAt }: {
|
|
93
143
|
clientSeed: Uint8Array;
|
|
94
144
|
userKey?: UserKey;
|
|
95
145
|
webvhUpdateKeys?: ClientWebvhUpdateKeys;
|
|
96
146
|
controller?: string;
|
|
97
147
|
pointerDid?: string;
|
|
148
|
+
pending?: ClientKeyRecordPending;
|
|
98
149
|
createdAt?: string;
|
|
99
150
|
}): ClientKeyRecordJson;
|
|
100
151
|
/**
|
|
@@ -123,4 +174,20 @@ export declare function decodeClientKeyRecord({ contents }: {
|
|
|
123
174
|
export declare function assertEnrolledClientKeyRecord({ record }: {
|
|
124
175
|
record: ClientKeyRecord;
|
|
125
176
|
}): EnrolledClientKeyRecord;
|
|
177
|
+
/**
|
|
178
|
+
* The non-throwing twin of {@link assertEnrolledClientKeyRecord}: the same
|
|
179
|
+
* four-member test (userKey, webvhUpdateKeys, controller, pointerDid all
|
|
180
|
+
* present), deliberately only those four -- a `pending` member does not affect
|
|
181
|
+
* the result, since the pending discriminator apps route on stays the absence
|
|
182
|
+
* of `userKey`. Where the assert is a checked boundary that throws naming the
|
|
183
|
+
* missing member, this guard is for an app that needs to ROUTE on the record's
|
|
184
|
+
* shape (enrolled / pending / absent) rather than fail on it.
|
|
185
|
+
*
|
|
186
|
+
* Takes the record bare (like the per-member parsers above) so the predicate
|
|
187
|
+
* narrows the caller's own variable.
|
|
188
|
+
*
|
|
189
|
+
* @param record {ClientKeyRecord}
|
|
190
|
+
* @returns {boolean}
|
|
191
|
+
*/
|
|
192
|
+
export declare function isEnrolledClientKeyRecord(record: ClientKeyRecord): record is EnrolledClientKeyRecord;
|
|
126
193
|
//# sourceMappingURL=clientKeyRecord.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientKeyRecord.d.ts","sourceRoot":"","sources":["../../src/keys/clientKeyRecord.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clientKeyRecord.d.ts","sourceRoot":"","sources":["../../src/keys/clientKeyRecord.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
* 32-byte client seed behind its Ed25519 signing key and X25519 twin, the
|
|
8
8
|
* cached user key delivered through the wrap-set roster, this
|
|
9
9
|
* client's own did:webvh update-key seeds, the account controller the record
|
|
10
|
-
* was bound for,
|
|
11
|
-
* did:webvh pointer
|
|
10
|
+
* was bound for, (when the app stores it beside the keys) the account's
|
|
11
|
+
* did:webvh pointer, and (while a self-enrollment or recovery-spend ceremony
|
|
12
|
+
* is mid-flight) its pending-state group.
|
|
12
13
|
*
|
|
13
14
|
* Only the CONTENTS live here. Where the record is stored, and what wraps it,
|
|
14
15
|
* stay with the app: a browser wallet wraps it under its unlock layer and puts
|
|
@@ -16,14 +17,21 @@
|
|
|
16
17
|
* database column. Both encode and validate identically, so a record one
|
|
17
18
|
* wallet writes is a record the other accepts.
|
|
18
19
|
*
|
|
19
|
-
* Byte fields travel as base64url without padding;
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* that
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
20
|
+
* Byte fields travel as base64url without padding; most are 32-byte secrets,
|
|
21
|
+
* length-checked on the way back in (the pending group's `replacementCode` is
|
|
22
|
+
* the one 16-byte exception, a recovery code's own length). Validation is
|
|
23
|
+
* strict on purpose: an absent optional member is a record written before
|
|
24
|
+
* that member existed, but a present-and-malformed one throws, because the
|
|
25
|
+
* members that can be malformed are load-bearing -- the account's encrypted
|
|
26
|
+
* collections are keyed on the user key, and the account's identity log can
|
|
27
|
+
* only be extended with the update-key seeds, so proceeding without either
|
|
28
|
+
* would silently orphan data or strand update authority.
|
|
29
|
+
*
|
|
30
|
+
* The optional `pending` member holds a self-enrollment or recovery-spend
|
|
31
|
+
* ceremony's local pending state: written by the ceremony's required persist
|
|
32
|
+
* hook after the reveal-and-commit entry and before the pivot (add /
|
|
33
|
+
* add-and-retire) entry, sealed under the app's unlock layer with the rest of
|
|
34
|
+
* the record, absent on enrolled records, and cleared at ceremony completion.
|
|
27
35
|
*
|
|
28
36
|
* Two ordering invariants govern how an app persists what this codec encodes.
|
|
29
37
|
* Neither is enforceable here (the writes are the app's), and both are
|
|
@@ -50,18 +58,28 @@
|
|
|
50
58
|
*/
|
|
51
59
|
import { base64urlnopad } from '@scure/base';
|
|
52
60
|
/**
|
|
53
|
-
* The number of bytes every secret in the record carries
|
|
61
|
+
* The number of bytes every secret in the record carries, with one exception
|
|
62
|
+
* (`pending.replacementCode`, a recovery code's own length -- see
|
|
63
|
+
* `RECOVERY_CODE_BYTES`).
|
|
54
64
|
*/
|
|
55
65
|
const SECRET_BYTES = 32;
|
|
66
|
+
/**
|
|
67
|
+
* The number of bytes a recovery code carries, per the recovery-code member's
|
|
68
|
+
* own definition. Restated here (rather than imported) because this module is
|
|
69
|
+
* a dependency-light leaf and must not import from `recovery/`.
|
|
70
|
+
*/
|
|
71
|
+
const RECOVERY_CODE_BYTES = 16;
|
|
56
72
|
/**
|
|
57
73
|
* Decodes one base64url byte field, checking its length.
|
|
58
74
|
*
|
|
59
75
|
* @param options {object}
|
|
60
76
|
* @param options.value {unknown} the encoded member
|
|
61
77
|
* @param options.name {string} the member's name, for the error message
|
|
78
|
+
* @param [options.length] {number} the required decoded length; defaults to
|
|
79
|
+
* `SECRET_BYTES`
|
|
62
80
|
* @returns {Uint8Array}
|
|
63
81
|
*/
|
|
64
|
-
function decodeSecret({ value, name }) {
|
|
82
|
+
function decodeSecret({ value, name, length = SECRET_BYTES }) {
|
|
65
83
|
if (typeof value !== 'string') {
|
|
66
84
|
throw new Error(`Client-key record ${name} is missing.`);
|
|
67
85
|
}
|
|
@@ -74,8 +92,8 @@ function decodeSecret({ value, name }) {
|
|
|
74
92
|
cause: err
|
|
75
93
|
});
|
|
76
94
|
}
|
|
77
|
-
if (bytes.length !==
|
|
78
|
-
throw new Error(`Client-key record ${name} is not ${
|
|
95
|
+
if (bytes.length !== length) {
|
|
96
|
+
throw new Error(`Client-key record ${name} is not ${length} bytes.`);
|
|
79
97
|
}
|
|
80
98
|
return bytes;
|
|
81
99
|
}
|
|
@@ -154,6 +172,67 @@ export function parseClientRecordWebvhKeys(value) {
|
|
|
154
172
|
: {})
|
|
155
173
|
};
|
|
156
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Parses and validates the optional `pending` member: a self-enrollment or
|
|
177
|
+
* recovery-spend ceremony's local pending state. An absent member resolves to
|
|
178
|
+
* `undefined` (an enrolled record, or a completed ceremony); a
|
|
179
|
+
* present-but-malformed one throws.
|
|
180
|
+
*
|
|
181
|
+
* `unwrapKey` and `replacementCode` belong to the recovery spend alone --
|
|
182
|
+
* present under `ceremony: 'self-enrollment'`, either throws.
|
|
183
|
+
*
|
|
184
|
+
* @param value {unknown} the record's `pending` member
|
|
185
|
+
* @returns {ClientKeyRecordPending | undefined}
|
|
186
|
+
*/
|
|
187
|
+
export function parseClientRecordPending(value) {
|
|
188
|
+
if (value === undefined) {
|
|
189
|
+
return undefined;
|
|
190
|
+
}
|
|
191
|
+
if (value === null || typeof value !== 'object') {
|
|
192
|
+
throw new Error('Client-key record pending state is malformed.');
|
|
193
|
+
}
|
|
194
|
+
const { ceremony, builtOnHead, unwrapKey, replacementCode } = value;
|
|
195
|
+
if (ceremony !== 'recovery-spend' && ceremony !== 'self-enrollment') {
|
|
196
|
+
throw new Error('Client-key record pending state has an unknown ceremony.');
|
|
197
|
+
}
|
|
198
|
+
if (builtOnHead === null || typeof builtOnHead !== 'object') {
|
|
199
|
+
throw new Error('Client-key record pending state has a malformed built-on head.');
|
|
200
|
+
}
|
|
201
|
+
const { scid, versionId } = builtOnHead;
|
|
202
|
+
if (typeof scid !== 'string' || !scid) {
|
|
203
|
+
throw new Error('Client-key record pending state has a malformed built-on head.');
|
|
204
|
+
}
|
|
205
|
+
if (typeof versionId !== 'string' || !versionId) {
|
|
206
|
+
throw new Error('Client-key record pending state has a malformed built-on head.');
|
|
207
|
+
}
|
|
208
|
+
if (ceremony === 'self-enrollment') {
|
|
209
|
+
if (unwrapKey !== undefined || replacementCode !== undefined) {
|
|
210
|
+
throw new Error('Client-key record pending state carries recovery-spend members under self-enrollment.');
|
|
211
|
+
}
|
|
212
|
+
return { ceremony, builtOnHead: { scid, versionId } };
|
|
213
|
+
}
|
|
214
|
+
return {
|
|
215
|
+
ceremony,
|
|
216
|
+
builtOnHead: { scid, versionId },
|
|
217
|
+
...(unwrapKey !== undefined
|
|
218
|
+
? {
|
|
219
|
+
unwrapKey: decodeSecret({
|
|
220
|
+
value: unwrapKey,
|
|
221
|
+
name: 'pending unwrap key'
|
|
222
|
+
})
|
|
223
|
+
}
|
|
224
|
+
: {}),
|
|
225
|
+
...(replacementCode !== undefined
|
|
226
|
+
? {
|
|
227
|
+
replacementCode: decodeSecret({
|
|
228
|
+
value: replacementCode,
|
|
229
|
+
name: 'pending replacement code',
|
|
230
|
+
length: RECOVERY_CODE_BYTES
|
|
231
|
+
})
|
|
232
|
+
}
|
|
233
|
+
: {})
|
|
234
|
+
};
|
|
235
|
+
}
|
|
157
236
|
/**
|
|
158
237
|
* Encodes one byte field, checking its length -- the encode-side twin of
|
|
159
238
|
* {@link decodeSecret}, so a record this codec writes is always a record it
|
|
@@ -162,11 +241,13 @@ export function parseClientRecordWebvhKeys(value) {
|
|
|
162
241
|
* @param options {object}
|
|
163
242
|
* @param options.value {Uint8Array} the secret
|
|
164
243
|
* @param options.name {string} the member's name, for the error message
|
|
244
|
+
* @param [options.length] {number} the required length; defaults to
|
|
245
|
+
* `SECRET_BYTES`
|
|
165
246
|
* @returns {string}
|
|
166
247
|
*/
|
|
167
|
-
function encodeSecret({ value, name }) {
|
|
168
|
-
if (value.length !==
|
|
169
|
-
throw new Error(`Client-key record ${name} is not ${
|
|
248
|
+
function encodeSecret({ value, name, length = SECRET_BYTES }) {
|
|
249
|
+
if (value.length !== length) {
|
|
250
|
+
throw new Error(`Client-key record ${name} is not ${length} bytes.`);
|
|
170
251
|
}
|
|
171
252
|
return base64urlnopad.encode(value);
|
|
172
253
|
}
|
|
@@ -185,11 +266,17 @@ function encodeSecret({ value, name }) {
|
|
|
185
266
|
* was bound for -- on an enrolled (non-first) client it differs from the
|
|
186
267
|
* client's own did:key
|
|
187
268
|
* @param [options.pointerDid] {string} the account's did:webvh
|
|
269
|
+
* @param [options.pending] {ClientKeyRecordPending} a self-enrollment or
|
|
270
|
+
* recovery-spend ceremony's local pending state
|
|
188
271
|
* @param [options.createdAt] {string} when the record was written; defaults
|
|
189
272
|
* to now
|
|
190
273
|
* @returns {ClientKeyRecordJson}
|
|
191
274
|
*/
|
|
192
|
-
export function encodeClientKeyRecord({ clientSeed, userKey, webvhUpdateKeys, controller, pointerDid, createdAt = new Date().toISOString() }) {
|
|
275
|
+
export function encodeClientKeyRecord({ clientSeed, userKey, webvhUpdateKeys, controller, pointerDid, pending, createdAt = new Date().toISOString() }) {
|
|
276
|
+
if (pending?.ceremony === 'self-enrollment' &&
|
|
277
|
+
(pending.unwrapKey !== undefined || pending.replacementCode !== undefined)) {
|
|
278
|
+
throw new Error('Client-key record pending state carries recovery-spend members under self-enrollment.');
|
|
279
|
+
}
|
|
193
280
|
return {
|
|
194
281
|
clientSeed: encodeSecret({ value: clientSeed, name: 'client seed' }),
|
|
195
282
|
...(userKey
|
|
@@ -235,6 +322,31 @@ export function encodeClientKeyRecord({ clientSeed, userKey, webvhUpdateKeys, co
|
|
|
235
322
|
: {}),
|
|
236
323
|
...(controller ? { controller } : {}),
|
|
237
324
|
...(pointerDid ? { pointerDid } : {}),
|
|
325
|
+
...(pending
|
|
326
|
+
? {
|
|
327
|
+
pending: {
|
|
328
|
+
ceremony: pending.ceremony,
|
|
329
|
+
builtOnHead: { ...pending.builtOnHead },
|
|
330
|
+
...(pending.unwrapKey !== undefined
|
|
331
|
+
? {
|
|
332
|
+
unwrapKey: encodeSecret({
|
|
333
|
+
value: pending.unwrapKey,
|
|
334
|
+
name: 'pending unwrap key'
|
|
335
|
+
})
|
|
336
|
+
}
|
|
337
|
+
: {}),
|
|
338
|
+
...(pending.replacementCode !== undefined
|
|
339
|
+
? {
|
|
340
|
+
replacementCode: encodeSecret({
|
|
341
|
+
value: pending.replacementCode,
|
|
342
|
+
name: 'pending replacement code',
|
|
343
|
+
length: RECOVERY_CODE_BYTES
|
|
344
|
+
})
|
|
345
|
+
}
|
|
346
|
+
: {})
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
: {}),
|
|
238
350
|
createdAt
|
|
239
351
|
};
|
|
240
352
|
}
|
|
@@ -252,7 +364,7 @@ export function decodeClientKeyRecord({ contents }) {
|
|
|
252
364
|
if (contents === null || typeof contents !== 'object') {
|
|
253
365
|
throw new Error('Malformed client-key record.');
|
|
254
366
|
}
|
|
255
|
-
const { clientSeed, userKey, webvh, controller, pointerDid } = contents;
|
|
367
|
+
const { clientSeed, userKey, webvh, controller, pointerDid, pending } = contents;
|
|
256
368
|
const seed = decodeSecret({ value: clientSeed, name: 'client seed' });
|
|
257
369
|
if (controller !== undefined &&
|
|
258
370
|
(typeof controller !== 'string' || !controller)) {
|
|
@@ -264,12 +376,14 @@ export function decodeClientKeyRecord({ contents }) {
|
|
|
264
376
|
}
|
|
265
377
|
const parsedUserKey = parseClientRecordUserKey(userKey);
|
|
266
378
|
const webvhUpdateKeys = parseClientRecordWebvhKeys(webvh);
|
|
379
|
+
const parsedPending = parseClientRecordPending(pending);
|
|
267
380
|
return {
|
|
268
381
|
clientSeed: seed,
|
|
269
382
|
...(parsedUserKey ? { userKey: parsedUserKey } : {}),
|
|
270
383
|
...(webvhUpdateKeys ? { webvhUpdateKeys } : {}),
|
|
271
384
|
...(controller ? { controller } : {}),
|
|
272
|
-
...(pointerDid ? { pointerDid } : {})
|
|
385
|
+
...(pointerDid ? { pointerDid } : {}),
|
|
386
|
+
...(parsedPending ? { pending: parsedPending } : {})
|
|
273
387
|
};
|
|
274
388
|
}
|
|
275
389
|
/**
|
|
@@ -298,4 +412,25 @@ export function assertEnrolledClientKeyRecord({ record }) {
|
|
|
298
412
|
}
|
|
299
413
|
return { ...record, userKey, webvhUpdateKeys, controller, pointerDid };
|
|
300
414
|
}
|
|
415
|
+
/**
|
|
416
|
+
* The non-throwing twin of {@link assertEnrolledClientKeyRecord}: the same
|
|
417
|
+
* four-member test (userKey, webvhUpdateKeys, controller, pointerDid all
|
|
418
|
+
* present), deliberately only those four -- a `pending` member does not affect
|
|
419
|
+
* the result, since the pending discriminator apps route on stays the absence
|
|
420
|
+
* of `userKey`. Where the assert is a checked boundary that throws naming the
|
|
421
|
+
* missing member, this guard is for an app that needs to ROUTE on the record's
|
|
422
|
+
* shape (enrolled / pending / absent) rather than fail on it.
|
|
423
|
+
*
|
|
424
|
+
* Takes the record bare (like the per-member parsers above) so the predicate
|
|
425
|
+
* narrows the caller's own variable.
|
|
426
|
+
*
|
|
427
|
+
* @param record {ClientKeyRecord}
|
|
428
|
+
* @returns {boolean}
|
|
429
|
+
*/
|
|
430
|
+
export function isEnrolledClientKeyRecord(record) {
|
|
431
|
+
return Boolean(record.userKey &&
|
|
432
|
+
record.webvhUpdateKeys &&
|
|
433
|
+
record.controller &&
|
|
434
|
+
record.pointerDid);
|
|
435
|
+
}
|
|
301
436
|
//# sourceMappingURL=clientKeyRecord.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientKeyRecord.js","sourceRoot":"","sources":["../../src/keys/clientKeyRecord.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH
|
|
1
|
+
{"version":3,"file":"clientKeyRecord.js","sourceRoot":"","sources":["../../src/keys/clientKeyRecord.ts"],"names":[],"mappings":"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"}
|
package/dist/keys/index.d.ts
CHANGED
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
*/
|
|
56
56
|
export { mintUserKey, userKeyVaultKeys } from './userKey.js';
|
|
57
57
|
export type { UserKey } from './userKey.js';
|
|
58
|
-
export { assertEnrolledClientKeyRecord, decodeClientKeyRecord, encodeClientKeyRecord, parseClientRecordUserKey, parseClientRecordWebvhKeys } from './clientKeyRecord.js';
|
|
59
|
-
export type { ClientKeyRecord, ClientKeyRecordJson, EnrolledClientKeyRecord } from './clientKeyRecord.js';
|
|
58
|
+
export { assertEnrolledClientKeyRecord, decodeClientKeyRecord, encodeClientKeyRecord, isEnrolledClientKeyRecord, parseClientRecordPending, parseClientRecordUserKey, parseClientRecordWebvhKeys } from './clientKeyRecord.js';
|
|
59
|
+
export type { ClientKeyRecord, ClientKeyRecordJson, ClientKeyRecordPending, EnrolledClientKeyRecord } from './clientKeyRecord.js';
|
|
60
60
|
export { addUserKeyRosterRecipient, convergeUserKeyRosterToDocument, ensureUserKeyRoster, UserKeyRosterContinuityError, UserKeyRosterIntegrityError, UserKeyRosterUnwrapError, userKeyRosterLogSigner, userKeyRosterRecipientResolver, readUserKeyRoster, replaceUserKeyRosterRecipients, rosterRecipientKid, rotateUserKeyRoster } from './userKeyRoster.js';
|
|
61
61
|
export { cascadeCollectionsToUserKey, userKeyAsRecipient, rotateCollectionEpochsToUserKey, unwrapUserKeyGenerations } from './userKeyCascade.js';
|
|
62
62
|
export type { CollectionUserKeyRotationOutcome, UserKeyCascadeResult } from './userKeyCascade.js';
|
package/dist/keys/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/keys/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC5D,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE3C,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,mBAAmB,EACnB,4BAA4B,EAC5B,2BAA2B,EAC3B,wBAAwB,EACxB,sBAAsB,EACtB,8BAA8B,EAC9B,iBAAiB,EACjB,8BAA8B,EAC9B,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,+BAA+B,EAC/B,wBAAwB,EACzB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,gCAAgC,EAChC,oBAAoB,EACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAA;AAC5E,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,2BAA2B,CAAA;AAClC,YAAY,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AACjE,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAEpE,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EACnB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAA;AAE5E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAE/D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACf,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/keys/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC5D,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE3C,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,mBAAmB,EACnB,4BAA4B,EAC5B,2BAA2B,EAC3B,wBAAwB,EACxB,sBAAsB,EACtB,8BAA8B,EAC9B,iBAAiB,EACjB,8BAA8B,EAC9B,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,+BAA+B,EAC/B,wBAAwB,EACzB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,gCAAgC,EAChC,oBAAoB,EACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAA;AAC5E,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,2BAA2B,CAAA;AAClC,YAAY,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AACjE,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAEpE,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EACnB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAA;AAE5E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAE/D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACf,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA"}
|
package/dist/keys/index.js
CHANGED
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
* blinded-index HMAC key, adopting a pre-blind-index roster as-is.
|
|
55
55
|
*/
|
|
56
56
|
export { mintUserKey, userKeyVaultKeys } from './userKey.js';
|
|
57
|
-
export { assertEnrolledClientKeyRecord, decodeClientKeyRecord, encodeClientKeyRecord, parseClientRecordUserKey, parseClientRecordWebvhKeys } from './clientKeyRecord.js';
|
|
57
|
+
export { assertEnrolledClientKeyRecord, decodeClientKeyRecord, encodeClientKeyRecord, isEnrolledClientKeyRecord, parseClientRecordPending, parseClientRecordUserKey, parseClientRecordWebvhKeys } from './clientKeyRecord.js';
|
|
58
58
|
export { addUserKeyRosterRecipient, convergeUserKeyRosterToDocument, ensureUserKeyRoster, UserKeyRosterContinuityError, UserKeyRosterIntegrityError, UserKeyRosterUnwrapError, userKeyRosterLogSigner, userKeyRosterRecipientResolver, readUserKeyRoster, replaceUserKeyRosterRecipients, rosterRecipientKid, rotateUserKeyRoster } from './userKeyRoster.js';
|
|
59
59
|
export { cascadeCollectionsToUserKey, userKeyAsRecipient, rotateCollectionEpochsToUserKey, unwrapUserKeyGenerations } from './userKeyCascade.js';
|
|
60
60
|
export { rotateRosterToDocumentAndCascade } from './userKeyRosterCascade.js';
|
package/dist/keys/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/keys/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAG5D,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/keys/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAG5D,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAA;AAQ7B,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,mBAAmB,EACnB,4BAA4B,EAC5B,2BAA2B,EAC3B,wBAAwB,EACxB,sBAAsB,EACtB,8BAA8B,EAC9B,iBAAiB,EACjB,8BAA8B,EAC9B,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,+BAA+B,EAC/B,wBAAwB,EACzB,MAAM,qBAAqB,CAAA;AAK5B,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAA;AAS5E,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EACnB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACf,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rosterLogStore.d.ts","sourceRoot":"","sources":["../../src/keys/rosterLogStore.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AAExE,OAAO,EASL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAEtB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,EACL,8BAA8B,EAE/B,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,8BAA8B,EAAE,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,iCAAkC,SAAQ,yBAAyB;IAClF,IAAI,IAAI,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAA;IAClC,kBAAkB,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,0BAA0B,CAAA;KAAE,GAAG,IAAI,CAAA;CAC9E;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,yBAAyB,GAC/B,KAAK,IAAI,iCAAiC,CAK5C;AAuBD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,GAAG,EACH,iBAAiB,EACjB,QAAQ,EACR,KAAK,EACL,MAAM,EACP,EAAE;IACD,GAAG,EAAE,gBAAgB,CAAA;IACrB,iBAAiB,EAAE,MAAM,OAAO,CAAC,0BAA0B,CAAC,CAAA;IAC5D,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,iBAAiB,CAAA;CAC1B,GAAG,iCAAiC,
|
|
1
|
+
{"version":3,"file":"rosterLogStore.d.ts","sourceRoot":"","sources":["../../src/keys/rosterLogStore.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AAExE,OAAO,EASL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAEtB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,EACL,8BAA8B,EAE/B,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,8BAA8B,EAAE,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,iCAAkC,SAAQ,yBAAyB;IAClF,IAAI,IAAI,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAA;IAClC,kBAAkB,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,0BAA0B,CAAA;KAAE,GAAG,IAAI,CAAA;CAC9E;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,yBAAyB,GAC/B,KAAK,IAAI,iCAAiC,CAK5C;AAuBD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,GAAG,EACH,iBAAiB,EACjB,QAAQ,EACR,KAAK,EACL,MAAM,EACP,EAAE;IACD,GAAG,EAAE,gBAAgB,CAAA;IACrB,iBAAiB,EAAE,MAAM,OAAO,CAAC,0BAA0B,CAAC,CAAA;IAC5D,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,iBAAiB,CAAA;CAC1B,GAAG,iCAAiC,CAoPpC"}
|
|
@@ -216,6 +216,21 @@ export function logGovernedDescriptorStore({ log, resolveController, pinStore, l
|
|
|
216
216
|
await settle({ entry, controller });
|
|
217
217
|
},
|
|
218
218
|
async create(descriptor) {
|
|
219
|
+
// A held pin means this client has already verified a roster log in
|
|
220
|
+
// this slot, so there is nothing to create. The pinned read refuses an
|
|
221
|
+
// absent log as a rollback (a host hiding the pinned log must not be
|
|
222
|
+
// answered with a fresh genesis over it); a served one is the lost
|
|
223
|
+
// create race, translated so the edv machinery re-reads and adopts it.
|
|
224
|
+
if ((await pinStore.read({ logId })) !== null) {
|
|
225
|
+
await readGovernedEpochConfiguration({
|
|
226
|
+
store: log,
|
|
227
|
+
resolveController: currentController,
|
|
228
|
+
pinStore,
|
|
229
|
+
logId
|
|
230
|
+
});
|
|
231
|
+
throw new PreconditionFailedError('The resource log create lost its guarded-create race: a log is ' +
|
|
232
|
+
'already pinned and served; re-read and adopt it.', { status: 412 });
|
|
233
|
+
}
|
|
219
234
|
const controller = await currentController();
|
|
220
235
|
const genesis = await buildResourceLogGenesis({
|
|
221
236
|
state: toState(descriptor),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rosterLogStore.js","sourceRoot":"","sources":["../../src/keys/rosterLogStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rosterLogStore.js","sourceRoot":"","sources":["../../src/keys/rosterLogStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EACL,uBAAuB,EAExB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,aAAa,EACb,0BAA0B,EAC1B,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EAKxB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,8BAA8B,EAAE,CAAA;AA2BzC;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAgC;IAEhC,OAAO,CACL,OAAQ,KAAoD,CAAC,IAAI;QACjE,UAAU,CACX,CAAA;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,yBAAyB,CAAC,GAAY;IAC7C,IAAI,0BAA0B,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,uBAAuB,CAAE,GAAa,CAAC,OAAO,EAAE;YACzD,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,GAAG;SACX,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,0BAA0B,CAAC,EACzC,GAAG,EACH,iBAAiB,EACjB,QAAQ,EACR,KAAK,EACL,MAAM,EAOP;IACC,4EAA4E;IAC5E,2EAA2E;IAC3E,oDAAoD;IACpD,IAAI,YAAY,GAA+B,IAAI,CAAA;IACnD,uEAAuE;IACvE,sEAAsE;IACtE,wEAAwE;IACxE,2BAA2B;IAC3B,IAAI,gBAAgB,GAAsC,IAAI,CAAA;IAE9D,wEAAwE;IACxE,IAAI,eAAe,GAAsC,IAAI,CAAA;IAE7D,KAAK,UAAU,iBAAiB;QAC9B,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAA;QAC1C,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;YAC7B,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,MAAM,SAAS,GACb,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACnE,sEAAsE;QACtE,uEAAuE;QACvE,uDAAuD;QACvD,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACxE,OAAO,eAAe,CAAA;QACxB,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,SAAS,OAAO,CACd,UAAgC;QAEhC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,UAAU,CAAA;QACjD,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAA;IAC1D,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,EACpB,KAAK,EACL,UAAU,EAIX;QACC,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;QAC3D,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC;YACxC,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,UAAU;YACV,cAAc,EAAE,mBAAmB;YACnC,GAAG,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;SACpC,CAAC,CAAA;QACF,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAA;QACnD,YAAY,GAAG,SAAS,CAAA;QACxB,gBAAgB,GAAG,UAAU,CAAA;IAC/B,CAAC;IAED,OAAO;QACL,KAAK,CAAC,IAAI;YACR,IAAI,IAAI,GAAsC,IAAI,CAAA;YAClD,MAAM,OAAO,GAAG,MAAM,8BAA8B,CAAC;gBACnD,KAAK,EAAE,GAAG;gBACV,iBAAiB,EAAE,KAAK,IAAI,EAAE;oBAC5B,IAAI,GAAG,MAAM,iBAAiB,EAAE,CAAA;oBAChC,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,QAAQ;gBACR,KAAK;aACN,CAAC,CAAA;YACF,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,YAAY,GAAG,IAAI,CAAA;gBACnB,gBAAgB,GAAG,IAAI,CAAA;gBACvB,OAAO,IAAI,CAAA;YACb,CAAC;YACD,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAA;YAC/B,gBAAgB,GAAG,IAAI,CAAA;YACvB,OAAO;gBACL,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;aACnB,CAAA;QACH,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE;YACnC,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CACb,gEAAgE;oBAC9D,kCAAkC,CACrC,CAAA;YACH,CAAC;YACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CACb,kEAAkE;oBAChE,4DAA4D,CAC/D,CAAA;YACH,CAAC;YACD,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;gBAC1B,MAAM,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;YACtE,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,iBAAiB,EAAE,CAAA;YAC5C,uEAAuE;YACvE,sEAAsE;YACtE,uEAAuE;YACvE,sEAAsE;YACtE,mEAAmE;YACnE,qEAAqE;YACrE,MAAM,YAAY,GAChB,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YACtE,IACE,YAAY,KAAK,SAAS;gBAC1B,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC7C,CAAC;gBACD,MAAM,IAAI,uBAAuB,CAC/B,8DAA8D;oBAC5D,mDAAmD,YAAY,KAAK;oBACpE,+DAA+D,EACjE,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;YACH,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC;gBACxC,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC;gBAC1B,UAAU;gBACV,MAAM;aACP,CAAC,CAAA;YACF,uEAAuE;YACvE,wEAAwE;YACxE,8DAA8D;YAC9D,uEAAuE;YACvE,kEAAkE;YAClE,4CAA4C;YAC5C,MAAM,uBAAuB,CAAC;gBAC5B,KAAK;gBACL,UAAU;gBACV,IAAI,EAAE,YAAY;aACnB,CAAC,CAAA;YACF,8DAA8D;YAC9D,qEAAqE;YACrE,gEAAgE;YAChE,oEAAoE;YACpE,+DAA+D;YAC/D,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;YACtC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,yBAAyB,CAAC,GAAG,CAAC,CAAA;YACtC,CAAC;YACD,MAAM,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;QACrC,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,UAAU;YACrB,oEAAoE;YACpE,uEAAuE;YACvE,qEAAqE;YACrE,mEAAmE;YACnE,uEAAuE;YACvE,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC9C,MAAM,8BAA8B,CAAC;oBACnC,KAAK,EAAE,GAAG;oBACV,iBAAiB,EAAE,iBAAiB;oBACpC,QAAQ;oBACR,KAAK;iBACN,CAAC,CAAA;gBACF,MAAM,IAAI,uBAAuB,CAC/B,iEAAiE;oBAC/D,kDAAkD,EACpD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;YACH,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,iBAAiB,EAAE,CAAA;YAC5C,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC;gBAC5C,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC;gBAC1B,MAAM,EAAE,mBAAmB;gBAC3B,UAAU;gBACV,MAAM;aACP,CAAC,CAAA;YACF,uEAAuE;YACvE,oEAAoE;YACpE,qEAAqE;YACrE,+DAA+D;YAC/D,IAAI,CAAC;gBACH,MAAM,iBAAiB,CAAC;oBACtB,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,UAAU;oBACV,cAAc,EAAE,mBAAmB;oBACnC,GAAG,EAAE,IAAI;iBACV,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,gEAAgE;gBAChE,gEAAgE;gBAChE,oEAAoE;gBACpE,qEAAqE;gBACrE,mEAAmE;gBACnE,wBAAwB;gBACxB,IAAI,CAAC,CACH,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,2BAA2B,CACjE,EAAE,CAAC;oBACF,MAAM,GAAG,CAAA;gBACX,CAAC;gBACD,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;oBAChC,MAAM,GAAG,CAAA;gBACX,CAAC;gBACD,MAAM,IAAI,uBAAuB,CAC/B,oEAAoE;oBAClE,0BAA0B,GAAG,CAAC,OAAO,yBAAyB;oBAC9D,+BAA+B,EACjC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAC5B,CAAA;YACH,CAAC;YACD,kEAAkE;YAClE,mEAAmE;YACnE,cAAc;YACd,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAC3B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,yBAAyB,CAAC,GAAG,CAAC,CAAA;YACtC,CAAC;YACD,MAAM,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAA;QAC9C,CAAC;QAED,KAAK,CAAC,IAAI;YACR,MAAM,UAAU,GAAG,MAAM,iBAAiB,EAAE,CAAA;YAC5C,sEAAsE;YACtE,mEAAmE;YACnE,+DAA+D;YAC/D,oEAAoE;YACpE,4BAA4B;YAC5B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,eAAe,CAAC;gBACjD,KAAK,EAAE,GAAG;gBACV,UAAU;gBACV,cAAc,EAAE,mBAAmB;gBACnC,QAAQ;gBACR,KAAK;gBACL,MAAM;gBACN,GAAG,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;aAC7D,CAAC,CAAA;YACF,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,YAAY,GAAG,QAAQ,CAAA;gBACvB,gBAAgB,GAAG,UAAU,CAAA;YAC/B,CAAC;YACD,OAAO,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAA;QACnC,CAAC;QAED,kBAAkB,CAAC,EAAE,UAAU,EAAE;YAC/B,eAAe,GAAG,UAAU,CAAA;QAC9B,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/dist/log.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2026 Interop Alliance. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* The logging seam: the library port of the sibling logging package
|
|
6
|
+
* (decision 0004 in its repo). This module
|
|
7
|
+
* deliberately declares its own `Logger` type rather than importing it
|
|
8
|
+
* (even as a type-only import) from that package, so the published
|
|
9
|
+
* artifact -- the emitted `dist/log.d.ts` included -- carries no reference
|
|
10
|
+
* to its specifier; the mutual-assignability check against the package's
|
|
11
|
+
* own `Logger` type lives in `test/node/log.test.ts` instead. Call sites
|
|
12
|
+
* elsewhere in `src/` still take it as a type-only import where useful
|
|
13
|
+
* (enforced by the eslint `no-restricted-imports` rule); this one file is
|
|
14
|
+
* the stated exception.
|
|
15
|
+
*
|
|
16
|
+
* A consumer that never calls {@link setLogger} keeps a console fallback:
|
|
17
|
+
* same channel and level as a bare `console.*` call, but with a
|
|
18
|
+
* `'[wallet-core]'` prefix and the call's `data` passed as a single
|
|
19
|
+
* trailing argument (present only when supplied). An app wires a real
|
|
20
|
+
* logger once at bootstrap, e.g. `setLogger(createLogger('wc'))`.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* The structural logging port every call site in this package logs
|
|
24
|
+
* through. Frozen at four two-arg methods (decision 0004 in the sibling
|
|
25
|
+
* logging package's repo): a static message plus optional structured
|
|
26
|
+
* context, with `data.err` reserved for an Error-ish value.
|
|
27
|
+
*/
|
|
28
|
+
export interface Logger {
|
|
29
|
+
debug(msg: string, data?: Record<string, unknown>): void;
|
|
30
|
+
info(msg: string, data?: Record<string, unknown>): void;
|
|
31
|
+
warn(msg: string, data?: Record<string, unknown>): void;
|
|
32
|
+
error(msg: string, data?: Record<string, unknown>): void;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Installs `next` as the logger every call site in this package logs
|
|
36
|
+
* through, and returns the PREVIOUS logger -- so a test (or an app
|
|
37
|
+
* reconfiguring at runtime) can restore it.
|
|
38
|
+
*
|
|
39
|
+
* @param next {Logger}
|
|
40
|
+
* @returns {Logger} the logger that was installed before this call.
|
|
41
|
+
*/
|
|
42
|
+
export declare function setLogger(next: Logger): Logger;
|
|
43
|
+
/**
|
|
44
|
+
* The package-wide logger. Each method forwards to whichever logger is
|
|
45
|
+
* currently installed, so call sites bound at import time still observe a
|
|
46
|
+
* later {@link setLogger}.
|
|
47
|
+
*/
|
|
48
|
+
export declare const log: Logger;
|
|
49
|
+
//# sourceMappingURL=log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACxD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACvD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACvD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CACzD;AAeD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI9C;AAED;;;;GAIG;AACH,eAAO,MAAM,GAAG,EAAE,MAKjB,CAAA"}
|
package/dist/log.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2026 Interop Alliance. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* The logging seam: the library port of the sibling logging package
|
|
6
|
+
* (decision 0004 in its repo). This module
|
|
7
|
+
* deliberately declares its own `Logger` type rather than importing it
|
|
8
|
+
* (even as a type-only import) from that package, so the published
|
|
9
|
+
* artifact -- the emitted `dist/log.d.ts` included -- carries no reference
|
|
10
|
+
* to its specifier; the mutual-assignability check against the package's
|
|
11
|
+
* own `Logger` type lives in `test/node/log.test.ts` instead. Call sites
|
|
12
|
+
* elsewhere in `src/` still take it as a type-only import where useful
|
|
13
|
+
* (enforced by the eslint `no-restricted-imports` rule); this one file is
|
|
14
|
+
* the stated exception.
|
|
15
|
+
*
|
|
16
|
+
* A consumer that never calls {@link setLogger} keeps a console fallback:
|
|
17
|
+
* same channel and level as a bare `console.*` call, but with a
|
|
18
|
+
* `'[wallet-core]'` prefix and the call's `data` passed as a single
|
|
19
|
+
* trailing argument (present only when supplied). An app wires a real
|
|
20
|
+
* logger once at bootstrap, e.g. `setLogger(createLogger('wc'))`.
|
|
21
|
+
*/
|
|
22
|
+
const consoleFallback = {
|
|
23
|
+
debug: (msg, data) => console.debug('[wallet-core]', msg, ...(data === undefined ? [] : [data])),
|
|
24
|
+
info: (msg, data) => console.info('[wallet-core]', msg, ...(data === undefined ? [] : [data])),
|
|
25
|
+
warn: (msg, data) => console.warn('[wallet-core]', msg, ...(data === undefined ? [] : [data])),
|
|
26
|
+
error: (msg, data) => console.error('[wallet-core]', msg, ...(data === undefined ? [] : [data]))
|
|
27
|
+
};
|
|
28
|
+
let logger = consoleFallback;
|
|
29
|
+
/**
|
|
30
|
+
* Installs `next` as the logger every call site in this package logs
|
|
31
|
+
* through, and returns the PREVIOUS logger -- so a test (or an app
|
|
32
|
+
* reconfiguring at runtime) can restore it.
|
|
33
|
+
*
|
|
34
|
+
* @param next {Logger}
|
|
35
|
+
* @returns {Logger} the logger that was installed before this call.
|
|
36
|
+
*/
|
|
37
|
+
export function setLogger(next) {
|
|
38
|
+
const previous = logger;
|
|
39
|
+
logger = next;
|
|
40
|
+
return previous;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The package-wide logger. Each method forwards to whichever logger is
|
|
44
|
+
* currently installed, so call sites bound at import time still observe a
|
|
45
|
+
* later {@link setLogger}.
|
|
46
|
+
*/
|
|
47
|
+
export const log = {
|
|
48
|
+
debug: (msg, data) => logger.debug(msg, data),
|
|
49
|
+
info: (msg, data) => logger.info(msg, data),
|
|
50
|
+
warn: (msg, data) => logger.warn(msg, data),
|
|
51
|
+
error: (msg, data) => logger.error(msg, data)
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=log.js.map
|