@interop/wallet-core 0.30.1 → 0.32.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/clients/listing.d.ts +9 -2
- package/dist/clients/listing.d.ts.map +1 -1
- package/dist/clients/listing.js +16 -4
- package/dist/clients/listing.js.map +1 -1
- package/dist/clients/revocation.d.ts +5 -1
- package/dist/clients/revocation.d.ts.map +1 -1
- package/dist/clients/revocation.js +6 -2
- package/dist/clients/revocation.js.map +1 -1
- package/dist/clients/rosterPolicy.d.ts +6 -1
- package/dist/clients/rosterPolicy.d.ts.map +1 -1
- package/dist/clients/rosterPolicy.js +8 -2
- package/dist/clients/rosterPolicy.js.map +1 -1
- package/dist/enrollment/enrollment.d.ts +7 -1
- package/dist/enrollment/enrollment.d.ts.map +1 -1
- package/dist/enrollment/enrollment.js +7 -2
- package/dist/enrollment/enrollment.js.map +1 -1
- package/dist/recovery/recoveryWebvh.d.ts +22 -5
- package/dist/recovery/recoveryWebvh.d.ts.map +1 -1
- package/dist/recovery/recoveryWebvh.js +84 -32
- package/dist/recovery/recoveryWebvh.js.map +1 -1
- package/dist/webvh/didWebvh.d.ts +145 -10
- package/dist/webvh/didWebvh.d.ts.map +1 -1
- package/dist/webvh/didWebvh.js +205 -43
- package/dist/webvh/didWebvh.js.map +1 -1
- package/dist/webvh/index.d.ts +4 -1
- package/dist/webvh/index.d.ts.map +1 -1
- package/dist/webvh/index.js +4 -1
- package/dist/webvh/index.js.map +1 -1
- package/dist/webvh/revokeClient.d.ts +9 -1
- package/dist/webvh/revokeClient.d.ts.map +1 -1
- package/dist/webvh/revokeClient.js +23 -7
- package/dist/webvh/revokeClient.js.map +1 -1
- package/dist/webvh/verifyLog.d.ts +18 -1
- package/dist/webvh/verifyLog.d.ts.map +1 -1
- package/dist/webvh/verifyLog.js +95 -1
- package/dist/webvh/verifyLog.js.map +1 -1
- package/dist/webvh/wasIdStore.d.ts +6 -0
- package/dist/webvh/wasIdStore.d.ts.map +1 -1
- package/dist/webvh/wasIdStore.js +20 -4
- package/dist/webvh/wasIdStore.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revokeClient.js","sourceRoot":"","sources":["../../src/webvh/revokeClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAMxE,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"revokeClient.js","sourceRoot":"","sources":["../../src/webvh/revokeClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DIDDoc, DIDLog } from '@interop/did-method-webvh';
|
|
2
|
+
import type { ResourceLogPinStore } from '../resourceLog/pin.js';
|
|
2
3
|
/**
|
|
3
4
|
* Thrown when the account has published no DID log at all (the resource is
|
|
4
5
|
* absent). Distinguished from every other failure because it is the one
|
|
@@ -16,18 +17,34 @@ export declare class AccountLogMissingError extends Error {
|
|
|
16
17
|
* an ordinary error when the fetch fails, the log does not resolve, or it
|
|
17
18
|
* resolves to a DID other than the one named.
|
|
18
19
|
*
|
|
20
|
+
* Supplied a `pinStore`, the resolved log is additionally checked for
|
|
21
|
+
* continuity against this client's chain-head pin and refused with a
|
|
22
|
+
* {@link ResourceLogContinuityError} when it is a rollback, a fork, or an
|
|
23
|
+
* SCID/method switch; the pin is established at first contact
|
|
24
|
+
* (trust-on-first-use) and advanced only by a log that verifies past it,
|
|
25
|
+
* never regressed. A `rollback` is the one refusal that may be nothing worse
|
|
26
|
+
* than replication lag, exactly as on a governed resource log: nothing
|
|
27
|
+
* rolled back is ever adopted here, and a caller holding a cached view of the
|
|
28
|
+
* document may treat that reason as a transport hiccup and carry on with what
|
|
29
|
+
* it has. Every other reason is a security signal. No `pinStore`, no
|
|
30
|
+
* continuity check -- the pin lives app-side beside the account-pointer pin,
|
|
31
|
+
* and a caller that has none keeps one-shot verification.
|
|
32
|
+
*
|
|
19
33
|
* @param options {object}
|
|
20
34
|
* @param options.did {string} the account's did:webvh, as the caller's
|
|
21
35
|
* stored account pointer names it
|
|
22
36
|
* @param options.spaceId {string} the account's Space id
|
|
23
37
|
* @param options.host {string} the storage server the account lives on
|
|
38
|
+
* @param [options.pinStore] {ResourceLogPinStore} this client's chain-head
|
|
39
|
+
* pin for the account log
|
|
24
40
|
* @returns {Promise<object>} the resolved document, the raw log, and the
|
|
25
41
|
* log's effective `updateKeys` / `nextKeyHashes`
|
|
26
42
|
*/
|
|
27
|
-
export declare function verifyAccountLog({ did, spaceId, host }: {
|
|
43
|
+
export declare function verifyAccountLog({ did, spaceId, host, pinStore }: {
|
|
28
44
|
did: string;
|
|
29
45
|
spaceId: string;
|
|
30
46
|
host: string;
|
|
47
|
+
pinStore?: ResourceLogPinStore;
|
|
31
48
|
}): Promise<{
|
|
32
49
|
doc: DIDDoc;
|
|
33
50
|
log: DIDLog;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyLog.d.ts","sourceRoot":"","sources":["../../src/webvh/verifyLog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verifyLog.d.ts","sourceRoot":"","sources":["../../src/webvh/verifyLog.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAG/D,OAAO,KAAK,EAEV,mBAAmB,EACpB,MAAM,uBAAuB,CAAA;AAE9B;;;;;;GAMG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,SAA0C;CAI9D;AAqED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,GAAG,EACH,OAAO,EACP,IAAI,EACJ,QAAQ,EACT,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,mBAAmB,CAAA;CAC/B,GAAG,OAAO,CAAC;IACV,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB,CAAC,CA4CD"}
|
package/dist/webvh/verifyLog.js
CHANGED
|
@@ -16,9 +16,19 @@
|
|
|
16
16
|
* caller supplies the DID it expects; a resolved DID that does not match is
|
|
17
17
|
* the substituted-account refusal, and the only thing the transport could
|
|
18
18
|
* ever buy back.
|
|
19
|
+
*
|
|
20
|
+
* Resolution alone is one-shot verification, though: a host serving a valid
|
|
21
|
+
* PREFIX of the real log serves the same SCID and the same DID, so a
|
|
22
|
+
* truncated history passes every check above and a ceremony built on it
|
|
23
|
+
* republishes erased enrollments and undone revocations as durable state. The
|
|
24
|
+
* remedy is the same chain-head pin the governed resource logs carry, and
|
|
25
|
+
* literally the same seam and refusal class: a caller that supplies a
|
|
26
|
+
* {@link ResourceLogPinStore} gets a served log refused when it is a
|
|
27
|
+
* rollback, a fork, or an SCID/method switch relative to the pinned head.
|
|
19
28
|
*/
|
|
20
29
|
import { readLogFromString, resolveDIDFromLog } from '@interop/did-method-webvh';
|
|
21
30
|
import { DID_LOG_RESOURCE, ID_COLLECTION } from '../space/collections.js';
|
|
31
|
+
import { ResourceLogContinuityError } from '../resourceLog/errors.js';
|
|
22
32
|
/**
|
|
23
33
|
* Thrown when the account has published no DID log at all (the resource is
|
|
24
34
|
* absent). Distinguished from every other failure because it is the one
|
|
@@ -32,6 +42,66 @@ export class AccountLogMissingError extends Error {
|
|
|
32
42
|
this.name = 'AccountLogMissingError';
|
|
33
43
|
}
|
|
34
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Refuses a served log that conflicts with the pinned head, and returns the
|
|
47
|
+
* pin the served log establishes. A method or SCID that differs from the pin
|
|
48
|
+
* is a substituted log under the account's location; a served history shorter
|
|
49
|
+
* than the pinned ordinal is a rollback; a differing `versionId` at the pinned
|
|
50
|
+
* ordinal is a fork, whose served entries ride along as evidence (every entry
|
|
51
|
+
* is signed, so a conflicting pair under one SCID is transferable proof of
|
|
52
|
+
* equivocation). A pin whose head does not parse as `N-<hash>` is treated as
|
|
53
|
+
* a fork rather than trusted.
|
|
54
|
+
*
|
|
55
|
+
* @param options {object}
|
|
56
|
+
* @param options.log {DIDLog} the served, already-resolved log
|
|
57
|
+
* @param options.pin {ResourceLogHeadPin | null} the pin held for this log
|
|
58
|
+
* @returns {ResourceLogHeadPin} the pin the served log establishes
|
|
59
|
+
*/
|
|
60
|
+
function checkAccountLogContinuity({ log, pin }) {
|
|
61
|
+
const genesis = log[0];
|
|
62
|
+
const head = log[log.length - 1];
|
|
63
|
+
if (!genesis || !head) {
|
|
64
|
+
throw new Error('The account DID log is empty.');
|
|
65
|
+
}
|
|
66
|
+
const method = genesis.parameters.method ?? '';
|
|
67
|
+
const scid = genesis.parameters.scid ?? '';
|
|
68
|
+
if (pin) {
|
|
69
|
+
if (pin.method !== method) {
|
|
70
|
+
throw new ResourceLogContinuityError({
|
|
71
|
+
reason: 'method-switch',
|
|
72
|
+
pinnedHead: pin.head
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
if (pin.scid !== scid) {
|
|
76
|
+
throw new ResourceLogContinuityError({
|
|
77
|
+
reason: 'scid-switch',
|
|
78
|
+
pinnedHead: pin.head
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
const pinnedOrdinal = Number.parseInt(pin.head, 10);
|
|
82
|
+
if (!Number.isInteger(pinnedOrdinal) || pinnedOrdinal < 1) {
|
|
83
|
+
throw new ResourceLogContinuityError({
|
|
84
|
+
reason: 'fork',
|
|
85
|
+
pinnedHead: pin.head,
|
|
86
|
+
servedEntries: log
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
if (log.length < pinnedOrdinal) {
|
|
90
|
+
throw new ResourceLogContinuityError({
|
|
91
|
+
reason: 'rollback',
|
|
92
|
+
pinnedHead: pin.head
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
if (log[pinnedOrdinal - 1].versionId !== pin.head) {
|
|
96
|
+
throw new ResourceLogContinuityError({
|
|
97
|
+
reason: 'fork',
|
|
98
|
+
pinnedHead: pin.head,
|
|
99
|
+
servedEntries: log
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return { method, scid, head: head.versionId };
|
|
104
|
+
}
|
|
35
105
|
/**
|
|
36
106
|
* Fetches and locally verifies the account's world-readable DID log.
|
|
37
107
|
*
|
|
@@ -39,15 +109,30 @@ export class AccountLogMissingError extends Error {
|
|
|
39
109
|
* an ordinary error when the fetch fails, the log does not resolve, or it
|
|
40
110
|
* resolves to a DID other than the one named.
|
|
41
111
|
*
|
|
112
|
+
* Supplied a `pinStore`, the resolved log is additionally checked for
|
|
113
|
+
* continuity against this client's chain-head pin and refused with a
|
|
114
|
+
* {@link ResourceLogContinuityError} when it is a rollback, a fork, or an
|
|
115
|
+
* SCID/method switch; the pin is established at first contact
|
|
116
|
+
* (trust-on-first-use) and advanced only by a log that verifies past it,
|
|
117
|
+
* never regressed. A `rollback` is the one refusal that may be nothing worse
|
|
118
|
+
* than replication lag, exactly as on a governed resource log: nothing
|
|
119
|
+
* rolled back is ever adopted here, and a caller holding a cached view of the
|
|
120
|
+
* document may treat that reason as a transport hiccup and carry on with what
|
|
121
|
+
* it has. Every other reason is a security signal. No `pinStore`, no
|
|
122
|
+
* continuity check -- the pin lives app-side beside the account-pointer pin,
|
|
123
|
+
* and a caller that has none keeps one-shot verification.
|
|
124
|
+
*
|
|
42
125
|
* @param options {object}
|
|
43
126
|
* @param options.did {string} the account's did:webvh, as the caller's
|
|
44
127
|
* stored account pointer names it
|
|
45
128
|
* @param options.spaceId {string} the account's Space id
|
|
46
129
|
* @param options.host {string} the storage server the account lives on
|
|
130
|
+
* @param [options.pinStore] {ResourceLogPinStore} this client's chain-head
|
|
131
|
+
* pin for the account log
|
|
47
132
|
* @returns {Promise<object>} the resolved document, the raw log, and the
|
|
48
133
|
* log's effective `updateKeys` / `nextKeyHashes`
|
|
49
134
|
*/
|
|
50
|
-
export async function verifyAccountLog({ did, spaceId, host }) {
|
|
135
|
+
export async function verifyAccountLog({ did, spaceId, host, pinStore }) {
|
|
51
136
|
const url = new URL(`/space/${spaceId}/${ID_COLLECTION.id}/${DID_LOG_RESOURCE}`, host);
|
|
52
137
|
const response = await fetch(url);
|
|
53
138
|
if (response.status === 404) {
|
|
@@ -65,6 +150,15 @@ export async function verifyAccountLog({ did, spaceId, host }) {
|
|
|
65
150
|
throw new Error('The published DID log resolves to a different DID than the account ' +
|
|
66
151
|
'pointer names.');
|
|
67
152
|
}
|
|
153
|
+
if (pinStore) {
|
|
154
|
+
const pin = await pinStore.read();
|
|
155
|
+
const served = checkAccountLogContinuity({ log, pin });
|
|
156
|
+
// Advanced only when the served head is genuinely ahead of the pin: the
|
|
157
|
+
// checks above have already refused everything that is not.
|
|
158
|
+
if (!pin || pin.head !== served.head) {
|
|
159
|
+
await pinStore.write(served);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
68
162
|
return {
|
|
69
163
|
doc: resolved.doc,
|
|
70
164
|
log,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyLog.js","sourceRoot":"","sources":["../../src/webvh/verifyLog.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH
|
|
1
|
+
{"version":3,"file":"verifyLog.js","sourceRoot":"","sources":["../../src/webvh/verifyLog.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAEhF,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AAMrE;;;;;;GAMG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAO,GAAG,uCAAuC;QAC3D,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;IACtC,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,yBAAyB,CAAC,EACjC,GAAG,EACH,GAAG,EAIJ;IACC,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;IACtB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAChC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAA;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAA;IAC1C,IAAI,GAAG,EAAE,CAAC;QACR,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,IAAI,0BAA0B,CAAC;gBACnC,MAAM,EAAE,eAAe;gBACvB,UAAU,EAAE,GAAG,CAAC,IAAI;aACrB,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,0BAA0B,CAAC;gBACnC,MAAM,EAAE,aAAa;gBACrB,UAAU,EAAE,GAAG,CAAC,IAAI;aACrB,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QACnD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,0BAA0B,CAAC;gBACnC,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,GAAG,CAAC,IAAI;gBACpB,aAAa,EAAE,GAAG;aACnB,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YAC/B,MAAM,IAAI,0BAA0B,CAAC;gBACnC,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,GAAG,CAAC,IAAI;aACrB,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,aAAa,GAAG,CAAC,CAAE,CAAC,SAAS,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;YACnD,MAAM,IAAI,0BAA0B,CAAC;gBACnC,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,GAAG,CAAC,IAAI;gBACpB,aAAa,EAAE,GAAG;aACnB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAA;AAC/C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EACrC,GAAG,EACH,OAAO,EACP,IAAI,EACJ,QAAQ,EAMT;IAMC,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,UAAU,OAAO,IAAI,aAAa,CAAC,EAAE,IAAI,gBAAgB,EAAE,EAC3D,IAAI,CACL,CAAA;IACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACpC,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,+CAA+C,QAAQ,CAAC,MAAM,IAAI,CACnE,CAAA;IACH,CAAC;IACD,MAAM,GAAG,GAAG,iBAAiB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IACpD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAA;IAC7C,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CACb,4CACE,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,uCACzB,IAAI,CACL,CAAA;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,qEAAqE;YACnE,gBAAgB,CACnB,CAAA;IACH,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QACjC,MAAM,MAAM,GAAG,yBAAyB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;QACtD,wEAAwE;QACxE,4DAA4D;QAC5D,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;YACrC,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;IACD,OAAO;QACL,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,GAAG;QACH,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE;QAC1C,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE;KACjD,CAAA;AACH,CAAC"}
|
|
@@ -14,6 +14,12 @@
|
|
|
14
14
|
* Bodies are written as raw bytes under the content type the caller states --
|
|
15
15
|
* load-bearing, since the log is JSON Lines (`text/jsonl`), not JSON, and the
|
|
16
16
|
* DID document is served as `application/did+json`.
|
|
17
|
+
*
|
|
18
|
+
* Reads carry the resource's ETag and writes forward the ceremonies'
|
|
19
|
+
* conditional-write preconditions, so a did:webvh ceremony's `did.jsonl`
|
|
20
|
+
* publish is a compare-and-swap. A backend that does not advertise
|
|
21
|
+
* `conditional-writes` serves no ETag, and the publish degrades to an
|
|
22
|
+
* unconditional write.
|
|
17
23
|
*/
|
|
18
24
|
import type { WasClient } from '@interop/was-client';
|
|
19
25
|
import type { WebvhIdStore } from './didWebvh.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasIdStore.d.ts","sourceRoot":"","sources":["../../src/webvh/wasIdStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH
|
|
1
|
+
{"version":3,"file":"wasIdStore.d.ts","sourceRoot":"","sources":["../../src/webvh/wasIdStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAMpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAC9B,GAAG,EACH,OAAO,EACR,EAAE;IACD,GAAG,EAAE,SAAS,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,YAAY,CAwDf"}
|
package/dist/webvh/wasIdStore.js
CHANGED
|
@@ -16,17 +16,33 @@ export function wasWebvhIdStore({ was, spaceId }) {
|
|
|
16
16
|
.resource(resourceId);
|
|
17
17
|
return {
|
|
18
18
|
getIdResourceRaw: async ({ resourceId }) => {
|
|
19
|
-
const
|
|
20
|
-
|
|
19
|
+
const read = await idResource(resourceId).getWithEtag();
|
|
20
|
+
if (read === null) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
// The log is served as `text/jsonl`, so the body decodes to a Blob; the
|
|
24
|
+
// string and stringify arms are defensive fallbacks for a backend that
|
|
25
|
+
// served (and the codec parsed) a JSON content type instead.
|
|
26
|
+
const { data, etag } = read;
|
|
27
|
+
const text = data instanceof Blob
|
|
28
|
+
? await data.text()
|
|
29
|
+
: typeof data === 'string'
|
|
30
|
+
? data
|
|
31
|
+
: JSON.stringify(data);
|
|
32
|
+
return { text, etag };
|
|
21
33
|
},
|
|
22
34
|
getIdResource: async ({ resourceId }) => {
|
|
23
35
|
const data = await idResource(resourceId).get();
|
|
24
36
|
return data === null ? undefined : data;
|
|
25
37
|
},
|
|
26
|
-
putIdResource: async ({ resourceId, content, contentType = 'application/json' }) => {
|
|
38
|
+
putIdResource: async ({ resourceId, content, contentType = 'application/json', ifMatch, ifNoneMatch }) => {
|
|
27
39
|
const serialized = typeof content === 'string' ? content : JSON.stringify(content);
|
|
40
|
+
// was-client's own PreconditionFailedError propagates as-is: its `name`
|
|
41
|
+
// is exactly what the seam contract names.
|
|
28
42
|
await idResource(resourceId).put(new TextEncoder().encode(serialized), {
|
|
29
|
-
contentType
|
|
43
|
+
contentType,
|
|
44
|
+
ifMatch,
|
|
45
|
+
ifNoneMatch
|
|
30
46
|
});
|
|
31
47
|
},
|
|
32
48
|
putKeyMap: async ({ content }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasIdStore.js","sourceRoot":"","sources":["../../src/webvh/wasIdStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wasIdStore.js","sourceRoot":"","sources":["../../src/webvh/wasIdStore.ts"],"names":[],"mappings":"AAwBA,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EACnB,MAAM,yBAAyB,CAAA;AAGhC;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,GAAG,EACH,OAAO,EAIR;IACC,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,EAAE,CACxC,GAAG;SACA,KAAK,CAAC,OAAO,CAAC;SACd,UAAU,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;SACzD,QAAQ,CAAC,UAAU,CAAC,CAAA;IAEzB,OAAO;QACL,gBAAgB,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;YACzC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAA;YACvD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,OAAO,SAAS,CAAA;YAClB,CAAC;YACD,wEAAwE;YACxE,uEAAuE;YACvE,6DAA6D;YAC7D,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;YAC3B,MAAM,IAAI,GACR,IAAI,YAAY,IAAI;gBAClB,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE;gBACnB,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ;oBACxB,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YAC5B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;QACvB,CAAC;QACD,aAAa,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;YACtC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAA;YAC/C,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;QACzC,CAAC;QACD,aAAa,EAAE,KAAK,EAAE,EACpB,UAAU,EACV,OAAO,EACP,WAAW,GAAG,kBAAkB,EAChC,OAAO,EACP,WAAW,EACZ,EAAE,EAAE;YACH,MAAM,UAAU,GACd,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACjE,wEAAwE;YACxE,2CAA2C;YAC3C,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;gBACrE,WAAW;gBACX,OAAO;gBACP,WAAW;aACZ,CAAC,CAAA;QACJ,CAAC;QACD,SAAS,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YAC/B,MAAM,GAAG;iBACN,KAAK,CAAC,OAAO,CAAC;iBACd,UAAU,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;iBAC9D,QAAQ,CAAC,iBAAiB,CAAC;iBAC3B,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE;gBACtD,WAAW,EAAE,kBAAkB;aAChC,CAAC,CAAA;QACN,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@interop/wallet-core",
|
|
3
3
|
"description": "Shared wallet-domain logic (WAS sync engine core and wallet Space layout contracts) for Interop wallet apps.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.32.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "pnpm run clear && tsc",
|