@interop/wallet-core 0.108.0 → 0.110.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/README.md +5 -5
- package/dist/clientAnnex/credentialAnchoredGenesis.d.ts +3 -3
- package/dist/clientAnnex/credentialAnchoredGenesis.d.ts.map +1 -1
- package/dist/clientAnnex/credentialAnchoredGenesis.js +3 -3
- package/dist/clientAnnex/credentialAnchoredGenesis.js.map +1 -1
- package/dist/clientAnnex/establish.d.ts +5 -5
- package/dist/clientAnnex/establish.d.ts.map +1 -1
- package/dist/clientAnnex/establish.js +15 -12
- package/dist/clientAnnex/establish.js.map +1 -1
- package/dist/clientAnnex/forgetLast.d.ts +2 -2
- package/dist/clientAnnex/forgetLast.d.ts.map +1 -1
- package/dist/clientAnnex/forgetLast.js +2 -2
- package/dist/clientAnnex/forgetLast.js.map +1 -1
- package/dist/clientAnnex/gc.d.ts +35 -6
- package/dist/clientAnnex/gc.d.ts.map +1 -1
- package/dist/clientAnnex/gc.js +50 -13
- package/dist/clientAnnex/gc.js.map +1 -1
- package/dist/clientAnnex/heal.d.ts +5 -5
- package/dist/clientAnnex/heal.d.ts.map +1 -1
- package/dist/clientAnnex/heal.js +29 -16
- package/dist/clientAnnex/heal.js.map +1 -1
- package/dist/clientAnnex/index.d.ts +2 -2
- 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 +5 -5
- package/dist/clientAnnex/ladderAnchored.d.ts.map +1 -1
- package/dist/clientAnnex/ladderAnchored.js +7 -7
- package/dist/clientAnnex/ladderAnchored.js.map +1 -1
- package/dist/clientAnnex/log.d.ts +190 -33
- package/dist/clientAnnex/log.d.ts.map +1 -1
- package/dist/clientAnnex/log.js +269 -56
- package/dist/clientAnnex/log.js.map +1 -1
- package/dist/clientAnnex/mend.d.ts.map +1 -1
- package/dist/clientAnnex/mend.js +22 -16
- package/dist/clientAnnex/mend.js.map +1 -1
- package/dist/clientAnnex/selfEnroll.d.ts.map +1 -1
- package/dist/clientAnnex/selfEnroll.js +5 -6
- package/dist/clientAnnex/selfEnroll.js.map +1 -1
- package/dist/clientAnnex/spaceCapability.d.ts +6 -6
- package/dist/clientAnnex/spaceCapability.d.ts.map +1 -1
- package/dist/clientAnnex/spaceCapability.js +9 -12
- package/dist/clientAnnex/spaceCapability.js.map +1 -1
- package/dist/clients/index.d.ts +1 -1
- package/dist/clients/index.d.ts.map +1 -1
- package/dist/clients/index.js.map +1 -1
- package/dist/clients/listing.d.ts +12 -18
- package/dist/clients/listing.d.ts.map +1 -1
- package/dist/clients/listing.js +17 -13
- package/dist/clients/listing.js.map +1 -1
- package/dist/clients/rosterPolicy.d.ts +4 -4
- package/dist/clients/rosterPolicy.d.ts.map +1 -1
- package/dist/clients/rosterPolicy.js +5 -4
- package/dist/clients/rosterPolicy.js.map +1 -1
- package/dist/connections/grantProof.d.ts.map +1 -1
- package/dist/connections/grantProof.js +4 -5
- package/dist/connections/grantProof.js.map +1 -1
- package/dist/connections/grants.d.ts +48 -3
- package/dist/connections/grants.d.ts.map +1 -1
- package/dist/connections/grants.js +54 -3
- package/dist/connections/grants.js.map +1 -1
- package/dist/connections/index.d.ts +7 -4
- package/dist/connections/index.d.ts.map +1 -1
- package/dist/connections/index.js +7 -4
- package/dist/connections/index.js.map +1 -1
- package/dist/connections/replicas.d.ts +43 -1
- package/dist/connections/replicas.d.ts.map +1 -1
- package/dist/connections/replicas.js +87 -14
- package/dist/connections/replicas.js.map +1 -1
- package/dist/connections/upsert.d.ts +52 -19
- package/dist/connections/upsert.d.ts.map +1 -1
- package/dist/connections/upsert.js +93 -41
- package/dist/connections/upsert.js.map +1 -1
- package/dist/enrollment/enrollment.d.ts.map +1 -1
- package/dist/enrollment/enrollment.js +4 -5
- package/dist/enrollment/enrollment.js.map +1 -1
- package/dist/genesis/accountGenesis.d.ts +4 -4
- package/dist/genesis/accountGenesis.d.ts.map +1 -1
- package/dist/genesis/accountGenesis.js +4 -4
- package/dist/genesis/accountGenesis.js.map +1 -1
- package/dist/keyring/fetch.d.ts +3 -3
- package/dist/keyring/fetch.d.ts.map +1 -1
- package/dist/keyring/fetch.js +3 -3
- package/dist/keyring/fetch.js.map +1 -1
- package/dist/keyring/record.d.ts.map +1 -1
- package/dist/keyring/record.js +1 -2
- package/dist/keyring/record.js.map +1 -1
- package/dist/keyring/recordEnvelope.d.ts +8 -6
- package/dist/keyring/recordEnvelope.d.ts.map +1 -1
- package/dist/keyring/recordEnvelope.js +12 -6
- package/dist/keyring/recordEnvelope.js.map +1 -1
- package/dist/keyring/unlockSpace.d.ts +15 -15
- package/dist/keyring/unlockSpace.d.ts.map +1 -1
- package/dist/keyring/unlockSpace.js +18 -19
- package/dist/keyring/unlockSpace.js.map +1 -1
- package/dist/keys/collectionLogStore.d.ts +3 -3
- package/dist/keys/collectionLogStore.d.ts.map +1 -1
- package/dist/keys/collectionLogStore.js +5 -7
- package/dist/keys/collectionLogStore.js.map +1 -1
- package/dist/keys/rosterStore.d.ts +3 -3
- package/dist/keys/rosterStore.d.ts.map +1 -1
- package/dist/keys/rosterStore.js +3 -4
- package/dist/keys/rosterStore.js.map +1 -1
- package/dist/recovery/recoveryDelegation.d.ts.map +1 -1
- package/dist/recovery/recoveryDelegation.js +2 -21
- package/dist/recovery/recoveryDelegation.js.map +1 -1
- package/dist/space/collections.d.ts +2 -2
- package/dist/space/collections.js +2 -2
- package/dist/space/deleteSpace.d.ts +3 -3
- package/dist/space/deleteSpace.d.ts.map +1 -1
- package/dist/space/deleteSpace.js +3 -4
- package/dist/space/deleteSpace.js.map +1 -1
- package/dist/space/errors.d.ts +1 -1
- package/dist/space/errors.js +1 -1
- package/dist/space/index.d.ts +4 -4
- package/dist/space/index.js +3 -3
- package/dist/space/provisioning.d.ts.map +1 -1
- package/dist/space/provisioning.js +6 -5
- package/dist/space/provisioning.js.map +1 -1
- package/dist/space/publicLink.d.ts +4 -4
- package/dist/space/publicLink.d.ts.map +1 -1
- package/dist/space/publicLink.js +9 -8
- package/dist/space/publicLink.js.map +1 -1
- package/dist/space/pwsLink.d.ts +58 -0
- package/dist/space/pwsLink.d.ts.map +1 -0
- package/dist/space/{wasLink.js → pwsLink.js} +42 -37
- package/dist/space/pwsLink.js.map +1 -0
- package/dist/testing/accountBuilder.d.ts +19 -19
- package/dist/testing/accountBuilder.d.ts.map +1 -1
- package/dist/testing/accountBuilder.js +44 -40
- package/dist/testing/accountBuilder.js.map +1 -1
- package/dist/unlock/unlockRecord.d.ts.map +1 -1
- package/dist/unlock/unlockRecord.js +7 -7
- package/dist/unlock/unlockRecord.js.map +1 -1
- package/dist/webvh/clientAnnexDid.d.ts +21 -14
- package/dist/webvh/clientAnnexDid.d.ts.map +1 -1
- package/dist/webvh/clientAnnexDid.js +19 -14
- package/dist/webvh/clientAnnexDid.js.map +1 -1
- package/dist/webvh/delegatedLogStore.d.ts +3 -3
- package/dist/webvh/delegatedLogStore.d.ts.map +1 -1
- package/dist/webvh/delegatedLogStore.js +9 -8
- package/dist/webvh/delegatedLogStore.js.map +1 -1
- package/dist/webvh/didWebvh.d.ts +6 -25
- package/dist/webvh/didWebvh.d.ts.map +1 -1
- package/dist/webvh/didWebvh.js +19 -34
- 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/dist/webvh/logLocation.d.ts +75 -0
- package/dist/webvh/logLocation.d.ts.map +1 -0
- package/dist/webvh/logLocation.js +102 -0
- package/dist/webvh/logLocation.js.map +1 -0
- package/dist/webvh/verifyLog.d.ts +9 -18
- package/dist/webvh/verifyLog.d.ts.map +1 -1
- package/dist/webvh/verifyLog.js +43 -50
- package/dist/webvh/verifyLog.js.map +1 -1
- package/package.json +5 -5
- package/dist/space/wasLink.d.ts +0 -57
- package/dist/space/wasLink.d.ts.map +0 -1
- package/dist/space/wasLink.js.map +0 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `did:webvh:{SCID}:<host>:<prefix...>:space:<spaceId>:<collectionId>`
|
|
3
|
+
* controller template, with the literal `{SCID}` placeholder the library
|
|
4
|
+
* replaces at creation. The host segment percent-encodes a port
|
|
5
|
+
* (`localhost:8080` becomes `localhost%3A8080`), and the prefix segments are
|
|
6
|
+
* the base server URL's path, one colon segment each and absent for an
|
|
7
|
+
* origin-root base, both exactly as the library's own address normalization
|
|
8
|
+
* produces them, so the DID is self-locating under any mount
|
|
9
|
+
* ({@link didWebvhLogLocation} is the inverse). The collection defaults to
|
|
10
|
+
* the account log's `id` collection; a client-annex generation's log passes
|
|
11
|
+
* its own `gen-` generation id.
|
|
12
|
+
*
|
|
13
|
+
* @param options {object}
|
|
14
|
+
* @param options.baseServerUrl {string} the server's base server URL
|
|
15
|
+
* @param options.spaceId {string}
|
|
16
|
+
* @param [options.collectionId] {string} the collection holding `did.jsonl`
|
|
17
|
+
* (defaults to the `id` collection)
|
|
18
|
+
* @returns {string}
|
|
19
|
+
*/
|
|
20
|
+
export declare function didWebvhControllerTemplate({ baseServerUrl, spaceId, collectionId }: {
|
|
21
|
+
baseServerUrl: string;
|
|
22
|
+
spaceId: string;
|
|
23
|
+
collectionId?: string;
|
|
24
|
+
}): string;
|
|
25
|
+
/**
|
|
26
|
+
* The path segments beneath the base server URL a log's did:webvh encodes:
|
|
27
|
+
* `space/<spaceId>/<collectionId>`, the Space and the collection holding
|
|
28
|
+
* `did.jsonl`. One definition serves the template and every `createDID`
|
|
29
|
+
* call, so a log is always created at the location its DID names.
|
|
30
|
+
*
|
|
31
|
+
* @param options {object}
|
|
32
|
+
* @param options.spaceId {string}
|
|
33
|
+
* @param options.collectionId {string}
|
|
34
|
+
* @returns {string[]}
|
|
35
|
+
*/
|
|
36
|
+
export declare function didWebvhLogPaths({ spaceId, collectionId }: {
|
|
37
|
+
spaceId: string;
|
|
38
|
+
collectionId: string;
|
|
39
|
+
}): string[];
|
|
40
|
+
/**
|
|
41
|
+
* Where a did:webvh minted by {@link didWebvhControllerTemplate} publishes
|
|
42
|
+
* its log, read off the identifier alone: the log URL (`.../did.jsonl`), the
|
|
43
|
+
* Space URL, the Space id, and the base server URL the Space sits under (the
|
|
44
|
+
* parent of the `space` segment, as the server layout fixes it). A wallet
|
|
45
|
+
* holding the DID therefore holds the server, and stores neither a host nor
|
|
46
|
+
* a base. Refuses, with the library's or was-client's own error, a DID whose
|
|
47
|
+
* path does not have the `space/<spaceId>/<collectionId>` shape.
|
|
48
|
+
*
|
|
49
|
+
* @param options {object}
|
|
50
|
+
* @param options.did {string} a did:webvh with a real SCID (not a template)
|
|
51
|
+
* @returns {{ logUrl: string, spaceUrl: string, spaceId: string,
|
|
52
|
+
* baseServerUrl: string, collectionId: string }}
|
|
53
|
+
*/
|
|
54
|
+
export declare function didWebvhLogLocation({ did }: {
|
|
55
|
+
did: string;
|
|
56
|
+
}): {
|
|
57
|
+
logUrl: string;
|
|
58
|
+
spaceUrl: string;
|
|
59
|
+
spaceId: string;
|
|
60
|
+
baseServerUrl: string;
|
|
61
|
+
collectionId: string;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* The URL of the account log beneath a Space URL: `id/did.jsonl`. The
|
|
65
|
+
* Space-URL twin of {@link didWebvhLogLocation}'s `logUrl`, for a reader
|
|
66
|
+
* holding the Space URL and no DID yet.
|
|
67
|
+
*
|
|
68
|
+
* @param options {object}
|
|
69
|
+
* @param options.spaceUrl {string}
|
|
70
|
+
* @returns {string}
|
|
71
|
+
*/
|
|
72
|
+
export declare function accountLogUrl({ spaceUrl }: {
|
|
73
|
+
spaceUrl: string;
|
|
74
|
+
}): string;
|
|
75
|
+
//# sourceMappingURL=logLocation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logLocation.d.ts","sourceRoot":"","sources":["../../src/webvh/logLocation.ts"],"names":[],"mappings":"AA+BA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,aAAa,EACb,OAAO,EACP,YAA+B,EAChC,EAAE;IACD,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GAAG,MAAM,CAOT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,YAAY,EACb,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;CACrB,GAAG,MAAM,EAAE,CAEX;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAC7D,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACrB,CASA;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAMxE"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2026 Interop Alliance. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Where a wallet's did:webvh log lives, in both directions: the controller
|
|
6
|
+
* template a log is created under, which encodes the base server URL (host
|
|
7
|
+
* and path prefix) and the Space and collection holding `did.jsonl`, and its
|
|
8
|
+
* inverse, which reads the log URL, the Space URL and the base server URL
|
|
9
|
+
* back off an identifier. The server layout fixes a Space at
|
|
10
|
+
* `{base}space/{spaceId}/`, so the base is the parent of the DID's `space`
|
|
11
|
+
* segment, and a wallet holding the DID stores no host and no base.
|
|
12
|
+
*
|
|
13
|
+
* A leaf beside `didWebvh.ts` (which re-exports it) and `verifyLog.ts`, over
|
|
14
|
+
* the library's address normalization, was-client's path rules and the
|
|
15
|
+
* collection ids alone, so the ceremonies and the readers share one
|
|
16
|
+
* definition without a file-level cycle between them.
|
|
17
|
+
*/
|
|
18
|
+
import { getBaseUrl, getFileUrl, normalizeCreateDidAddress, SCID_PLACEHOLDER } from '@interop/did-method-webvh';
|
|
19
|
+
import { baseServerUrlOf, resourceUrl, spaceIdOfUrl, splitCollectionUrl } from '@interop/was-client/paths';
|
|
20
|
+
import { DID_LOG_RESOURCE, ID_COLLECTION } from '../space/collections.js';
|
|
21
|
+
/**
|
|
22
|
+
* The `did:webvh:{SCID}:<host>:<prefix...>:space:<spaceId>:<collectionId>`
|
|
23
|
+
* controller template, with the literal `{SCID}` placeholder the library
|
|
24
|
+
* replaces at creation. The host segment percent-encodes a port
|
|
25
|
+
* (`localhost:8080` becomes `localhost%3A8080`), and the prefix segments are
|
|
26
|
+
* the base server URL's path, one colon segment each and absent for an
|
|
27
|
+
* origin-root base, both exactly as the library's own address normalization
|
|
28
|
+
* produces them, so the DID is self-locating under any mount
|
|
29
|
+
* ({@link didWebvhLogLocation} is the inverse). The collection defaults to
|
|
30
|
+
* the account log's `id` collection; a client-annex generation's log passes
|
|
31
|
+
* its own `gen-` generation id.
|
|
32
|
+
*
|
|
33
|
+
* @param options {object}
|
|
34
|
+
* @param options.baseServerUrl {string} the server's base server URL
|
|
35
|
+
* @param options.spaceId {string}
|
|
36
|
+
* @param [options.collectionId] {string} the collection holding `did.jsonl`
|
|
37
|
+
* (defaults to the `id` collection)
|
|
38
|
+
* @returns {string}
|
|
39
|
+
*/
|
|
40
|
+
export function didWebvhControllerTemplate({ baseServerUrl, spaceId, collectionId = ID_COLLECTION.id }) {
|
|
41
|
+
return normalizeCreateDidAddress({
|
|
42
|
+
address: baseServerUrl,
|
|
43
|
+
scid: SCID_PLACEHOLDER,
|
|
44
|
+
paths: didWebvhLogPaths({ spaceId, collectionId }),
|
|
45
|
+
context: 'did:webvh controller template'
|
|
46
|
+
}).controller;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The path segments beneath the base server URL a log's did:webvh encodes:
|
|
50
|
+
* `space/<spaceId>/<collectionId>`, the Space and the collection holding
|
|
51
|
+
* `did.jsonl`. One definition serves the template and every `createDID`
|
|
52
|
+
* call, so a log is always created at the location its DID names.
|
|
53
|
+
*
|
|
54
|
+
* @param options {object}
|
|
55
|
+
* @param options.spaceId {string}
|
|
56
|
+
* @param options.collectionId {string}
|
|
57
|
+
* @returns {string[]}
|
|
58
|
+
*/
|
|
59
|
+
export function didWebvhLogPaths({ spaceId, collectionId }) {
|
|
60
|
+
return ['space', spaceId, collectionId];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Where a did:webvh minted by {@link didWebvhControllerTemplate} publishes
|
|
64
|
+
* its log, read off the identifier alone: the log URL (`.../did.jsonl`), the
|
|
65
|
+
* Space URL, the Space id, and the base server URL the Space sits under (the
|
|
66
|
+
* parent of the `space` segment, as the server layout fixes it). A wallet
|
|
67
|
+
* holding the DID therefore holds the server, and stores neither a host nor
|
|
68
|
+
* a base. Refuses, with the library's or was-client's own error, a DID whose
|
|
69
|
+
* path does not have the `space/<spaceId>/<collectionId>` shape.
|
|
70
|
+
*
|
|
71
|
+
* @param options {object}
|
|
72
|
+
* @param options.did {string} a did:webvh with a real SCID (not a template)
|
|
73
|
+
* @returns {{ logUrl: string, spaceUrl: string, spaceId: string,
|
|
74
|
+
* baseServerUrl: string, collectionId: string }}
|
|
75
|
+
*/
|
|
76
|
+
export function didWebvhLogLocation({ did }) {
|
|
77
|
+
const { spaceUrl, collectionId } = splitCollectionUrl(`${getBaseUrl(did)}/`);
|
|
78
|
+
return {
|
|
79
|
+
logUrl: getFileUrl(did),
|
|
80
|
+
spaceUrl,
|
|
81
|
+
spaceId: spaceIdOfUrl(spaceUrl),
|
|
82
|
+
baseServerUrl: baseServerUrlOf(spaceUrl),
|
|
83
|
+
collectionId
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* The URL of the account log beneath a Space URL: `id/did.jsonl`. The
|
|
88
|
+
* Space-URL twin of {@link didWebvhLogLocation}'s `logUrl`, for a reader
|
|
89
|
+
* holding the Space URL and no DID yet.
|
|
90
|
+
*
|
|
91
|
+
* @param options {object}
|
|
92
|
+
* @param options.spaceUrl {string}
|
|
93
|
+
* @returns {string}
|
|
94
|
+
*/
|
|
95
|
+
export function accountLogUrl({ spaceUrl }) {
|
|
96
|
+
return resourceUrl({
|
|
97
|
+
spaceUrl,
|
|
98
|
+
collectionId: ID_COLLECTION.id,
|
|
99
|
+
resourceId: DID_LOG_RESOURCE
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=logLocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logLocation.js","sourceRoot":"","sources":["../../src/webvh/logLocation.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;GAaG;AACH,OAAO,EACL,UAAU,EACV,UAAU,EACV,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,eAAe,EACf,WAAW,EACX,YAAY,EACZ,kBAAkB,EACnB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAEzE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,0BAA0B,CAAC,EACzC,aAAa,EACb,OAAO,EACP,YAAY,GAAG,aAAa,CAAC,EAAE,EAKhC;IACC,OAAO,yBAAyB,CAAC;QAC/B,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;QAClD,OAAO,EAAE,+BAA+B;KACzC,CAAC,CAAC,UAAU,CAAA;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,OAAO,EACP,YAAY,EAIb;IACC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAA;AACzC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAE,GAAG,EAAmB;IAO1D,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC5E,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC;QACvB,QAAQ;QACR,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC;QAC/B,aAAa,EAAE,eAAe,CAAC,QAAQ,CAAC;QACxC,YAAY;KACb,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAwB;IAC9D,OAAO,WAAW,CAAC;QACjB,QAAQ;QACR,YAAY,EAAE,aAAa,CAAC,EAAE;QAC9B,UAAU,EAAE,gBAAgB;KAC7B,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -133,12 +133,11 @@ export declare function checkAndAdvanceAccountLogPin({ pinStore, logId, log }: {
|
|
|
133
133
|
*
|
|
134
134
|
* @param options {object}
|
|
135
135
|
* @param options.did {string} the account's did:webvh, as the caller's
|
|
136
|
-
* stored account pointer names it
|
|
137
|
-
*
|
|
138
|
-
* @param options.host {string} the storage server the account lives on
|
|
136
|
+
* stored account pointer names it; it locates its own log
|
|
137
|
+
* ({@link didWebvhLogLocation})
|
|
139
138
|
* @param [options.pinStore] {ResourceLogPinStore} this client's chain-head
|
|
140
139
|
* pins; the account log's slot is keyed by {@link accountLogPinId} over the
|
|
141
|
-
*
|
|
140
|
+
* Space id the DID names
|
|
142
141
|
* @param [options.published] {PublishedWebvhLog} a head this same run
|
|
143
142
|
* already read and resolved (an establishment handing its `accountLog`
|
|
144
143
|
* forward), reused in place of the fetch. Every check below still runs on
|
|
@@ -152,10 +151,8 @@ export declare function checkAndAdvanceAccountLogPin({ pinStore, logId, log }: {
|
|
|
152
151
|
* @returns {Promise<VerifiedAccountLog>} the resolved document, the raw
|
|
153
152
|
* log, and the log's effective `updateKeys` / `nextKeyHashes`
|
|
154
153
|
*/
|
|
155
|
-
export declare function verifyAccountLog({ did,
|
|
154
|
+
export declare function verifyAccountLog({ did, pinStore, published }: {
|
|
156
155
|
did: string;
|
|
157
|
-
spaceId: string;
|
|
158
|
-
host: string;
|
|
159
156
|
pinStore?: ResourceLogPinStore;
|
|
160
157
|
published?: PublishedWebvhLog;
|
|
161
158
|
}): Promise<VerifiedAccountLog>;
|
|
@@ -178,16 +175,14 @@ export declare function verifyAccountLog({ did, spaceId, host, pinStore, publish
|
|
|
178
175
|
* check-and-advance {@link verifyAccountLog} runs, under the same slot.
|
|
179
176
|
*
|
|
180
177
|
* @param options {object}
|
|
181
|
-
* @param options.
|
|
182
|
-
* @param options.host {string} the storage server the Space lives on
|
|
178
|
+
* @param options.spaceUrl {string} the Space whose owner is wanted
|
|
183
179
|
* @param [options.pinStore] {ResourceLogPinStore} this client's chain-head
|
|
184
|
-
* pins, keyed by {@link accountLogPinId} over the
|
|
180
|
+
* pins, keyed by {@link accountLogPinId} over the Space's id
|
|
185
181
|
* @returns {Promise<PublishedWebvhLog>} the owner's DID, the resolved
|
|
186
182
|
* document, the raw log, and the log's effective update-key parameters
|
|
187
183
|
*/
|
|
188
|
-
export declare function discoverAccountLog({
|
|
189
|
-
|
|
190
|
-
host: string;
|
|
184
|
+
export declare function discoverAccountLog({ spaceUrl, pinStore }: {
|
|
185
|
+
spaceUrl: string;
|
|
191
186
|
pinStore?: ResourceLogPinStore;
|
|
192
187
|
}): Promise<PublishedWebvhLog>;
|
|
193
188
|
/**
|
|
@@ -238,18 +233,14 @@ export declare function verifiedAccountLogOf({ published }: {
|
|
|
238
233
|
*
|
|
239
234
|
* @param options {object}
|
|
240
235
|
* @param options.did {string} the account's did:webvh
|
|
241
|
-
* @param options.spaceId {string} the data Space id
|
|
242
|
-
* @param options.host {string} the storage server the account lives on
|
|
243
236
|
* @param options.pinStore {ResourceLogPinStore} the account log's
|
|
244
237
|
* chain-head pin, checked and advanced when the log is fetched here
|
|
245
238
|
* @param [options.log] {DIDLog} the account log this run already stands on
|
|
246
239
|
* (a ceremony that just read or published it); given, no fetch runs
|
|
247
240
|
* @returns {function} `() => Promise<WebvhResourceLogController>`
|
|
248
241
|
*/
|
|
249
|
-
export declare function accountControllerResolver({ did,
|
|
242
|
+
export declare function accountControllerResolver({ did, pinStore, log }: {
|
|
250
243
|
did: string;
|
|
251
|
-
spaceId: string;
|
|
252
|
-
host: string;
|
|
253
244
|
pinStore: ResourceLogPinStore;
|
|
254
245
|
log?: DIDLog;
|
|
255
246
|
}): () => Promise<WebvhResourceLogController>;
|
|
@@ -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":"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"}
|
package/dist/webvh/verifyLog.js
CHANGED
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
* {@link ResourceLogPinStore} gets a served log refused when it is a
|
|
36
36
|
* rollback, a fork, or an SCID/method switch relative to the pinned head.
|
|
37
37
|
*/
|
|
38
|
-
import {
|
|
39
|
-
import {
|
|
38
|
+
import { readLogFromString, resolveDIDFromLog } from '@interop/did-method-webvh';
|
|
39
|
+
import { accountLogUrl, didWebvhLogLocation } from './logLocation.js';
|
|
40
40
|
import { webvhResourceLogController } from '../resourceLog/controller.js';
|
|
41
41
|
import { DID_LOG_RESOURCE, ID_COLLECTION } from '../space/collections.js';
|
|
42
42
|
import { ResourceLogContinuityError, resourceLogPinId } from '@interop/vh-resource-log';
|
|
@@ -225,12 +225,11 @@ export async function checkAndAdvanceAccountLogPin({ pinStore, logId, log }) {
|
|
|
225
225
|
*
|
|
226
226
|
* @param options {object}
|
|
227
227
|
* @param options.did {string} the account's did:webvh, as the caller's
|
|
228
|
-
* stored account pointer names it
|
|
229
|
-
*
|
|
230
|
-
* @param options.host {string} the storage server the account lives on
|
|
228
|
+
* stored account pointer names it; it locates its own log
|
|
229
|
+
* ({@link didWebvhLogLocation})
|
|
231
230
|
* @param [options.pinStore] {ResourceLogPinStore} this client's chain-head
|
|
232
231
|
* pins; the account log's slot is keyed by {@link accountLogPinId} over the
|
|
233
|
-
*
|
|
232
|
+
* Space id the DID names
|
|
234
233
|
* @param [options.published] {PublishedWebvhLog} a head this same run
|
|
235
234
|
* already read and resolved (an establishment handing its `accountLog`
|
|
236
235
|
* forward), reused in place of the fetch. Every check below still runs on
|
|
@@ -244,15 +243,18 @@ export async function checkAndAdvanceAccountLogPin({ pinStore, logId, log }) {
|
|
|
244
243
|
* @returns {Promise<VerifiedAccountLog>} the resolved document, the raw
|
|
245
244
|
* log, and the log's effective `updateKeys` / `nextKeyHashes`
|
|
246
245
|
*/
|
|
247
|
-
export async function verifyAccountLog({ did,
|
|
248
|
-
const
|
|
246
|
+
export async function verifyAccountLog({ did, pinStore, published }) {
|
|
247
|
+
const location = didWebvhLogLocation({ did });
|
|
248
|
+
const read = published === undefined
|
|
249
|
+
? await readAccountLog({ logUrl: location.logUrl })
|
|
250
|
+
: { published, spaceId: location.spaceId };
|
|
249
251
|
await adoptAccountLog({
|
|
250
|
-
published:
|
|
252
|
+
published: read.published,
|
|
251
253
|
expectedDid: did,
|
|
252
|
-
spaceId,
|
|
254
|
+
spaceId: read.spaceId,
|
|
253
255
|
pinStore
|
|
254
256
|
});
|
|
255
|
-
return verifiedAccountLogOf({ published:
|
|
257
|
+
return verifiedAccountLogOf({ published: read.published });
|
|
256
258
|
}
|
|
257
259
|
/**
|
|
258
260
|
* Resolves the account published at a Space with no DID known in advance:
|
|
@@ -273,15 +275,16 @@ export async function verifyAccountLog({ did, spaceId, host, pinStore, published
|
|
|
273
275
|
* check-and-advance {@link verifyAccountLog} runs, under the same slot.
|
|
274
276
|
*
|
|
275
277
|
* @param options {object}
|
|
276
|
-
* @param options.
|
|
277
|
-
* @param options.host {string} the storage server the Space lives on
|
|
278
|
+
* @param options.spaceUrl {string} the Space whose owner is wanted
|
|
278
279
|
* @param [options.pinStore] {ResourceLogPinStore} this client's chain-head
|
|
279
|
-
* pins, keyed by {@link accountLogPinId} over the
|
|
280
|
+
* pins, keyed by {@link accountLogPinId} over the Space's id
|
|
280
281
|
* @returns {Promise<PublishedWebvhLog>} the owner's DID, the resolved
|
|
281
282
|
* document, the raw log, and the log's effective update-key parameters
|
|
282
283
|
*/
|
|
283
|
-
export async function discoverAccountLog({
|
|
284
|
-
const published = await readAccountLog({
|
|
284
|
+
export async function discoverAccountLog({ spaceUrl, pinStore }) {
|
|
285
|
+
const { published, spaceId } = await readAccountLog({
|
|
286
|
+
logUrl: accountLogUrl({ spaceUrl })
|
|
287
|
+
});
|
|
285
288
|
return adoptAccountLog({ published, spaceId, pinStore });
|
|
286
289
|
}
|
|
287
290
|
/**
|
|
@@ -308,25 +311,20 @@ async function adoptAccountLog({ published, spaceId, expectedDid, pinStore }) {
|
|
|
308
311
|
return published;
|
|
309
312
|
}
|
|
310
313
|
/**
|
|
311
|
-
* The one fetch-parse-resolve body both readers share: fetch `
|
|
314
|
+
* The one fetch-parse-resolve body both readers share: fetch `did.jsonl`
|
|
312
315
|
* unauthenticated, parse and resolve it, and refuse a resolved DID whose
|
|
313
316
|
* published log location is not the URL it was served from. The location
|
|
314
|
-
* check compares the
|
|
315
|
-
*
|
|
316
|
-
*
|
|
317
|
-
* location and served here.
|
|
317
|
+
* check compares the log URL the resolved DID encodes
|
|
318
|
+
* ({@link didWebvhLogLocation}) against the fetched URL; anything else is a
|
|
319
|
+
* log published for another location and served here.
|
|
318
320
|
*
|
|
319
321
|
* @param options {object}
|
|
320
|
-
* @param options.
|
|
321
|
-
* @
|
|
322
|
-
*
|
|
323
|
-
*
|
|
322
|
+
* @param options.logUrl {string} the `did.jsonl` URL to fetch
|
|
323
|
+
* @returns {Promise<{ published: PublishedWebvhLog, spaceId: string }>}
|
|
324
|
+
* the resolved head, with no ETag (the read is a plain fetch, not a store
|
|
325
|
+
* read), beside the Space id its DID locates, read in the location check
|
|
324
326
|
*/
|
|
325
|
-
async function readAccountLog({
|
|
326
|
-
const url = toUrl({
|
|
327
|
-
baseUrl: host,
|
|
328
|
-
path: resourcePath(spaceId, ID_COLLECTION.id, DID_LOG_RESOURCE)
|
|
329
|
-
});
|
|
327
|
+
async function readAccountLog({ logUrl: url }) {
|
|
330
328
|
const response = await fetch(url);
|
|
331
329
|
if (response.status === 404) {
|
|
332
330
|
throw new AccountLogMissingError();
|
|
@@ -339,25 +337,22 @@ async function readAccountLog({ spaceId, host }) {
|
|
|
339
337
|
if (resolved.meta.error || !resolved.did || !resolved.doc) {
|
|
340
338
|
throw new Error(`The account's DID log failed to resolve (${resolved.meta.error ?? 'the resolver returned no DID document'}).`);
|
|
341
339
|
}
|
|
342
|
-
const
|
|
343
|
-
|
|
344
|
-
// The DID encodes the server's host and the Space path, not a base path a
|
|
345
|
-
// sub-path deployment serves under (`toUrl` keeps that prefix), so the
|
|
346
|
-
// expected path is the server's base path joined with the DID's own.
|
|
347
|
-
const basePath = new URL(host).pathname.replace(/\/$/, '');
|
|
348
|
-
if (publishedAt.host !== fetchedFrom.host ||
|
|
349
|
-
basePath + publishedAt.pathname !== fetchedFrom.pathname) {
|
|
340
|
+
const location = didWebvhLogLocation({ did: resolved.did });
|
|
341
|
+
if (location.logUrl !== new URL(url).href) {
|
|
350
342
|
throw new Error(`did:webvh: the published did.jsonl resolves to ${resolved.did}, ` +
|
|
351
|
-
`whose log location (${
|
|
352
|
-
`served from (${
|
|
343
|
+
`whose log location (${location.logUrl}) is not where it was ` +
|
|
344
|
+
`served from (${url}).`);
|
|
353
345
|
}
|
|
354
346
|
return {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
347
|
+
published: {
|
|
348
|
+
did: resolved.did,
|
|
349
|
+
doc: resolved.doc,
|
|
350
|
+
log,
|
|
351
|
+
updateKeys: resolved.meta.updateKeys ?? [],
|
|
352
|
+
nextKeyHashes: resolved.meta.nextKeyHashes ?? [],
|
|
353
|
+
meta: resolved.meta
|
|
354
|
+
},
|
|
355
|
+
spaceId: location.spaceId
|
|
361
356
|
};
|
|
362
357
|
}
|
|
363
358
|
/**
|
|
@@ -398,19 +393,17 @@ export function verifiedAccountLogOf({ published }) {
|
|
|
398
393
|
*
|
|
399
394
|
* @param options {object}
|
|
400
395
|
* @param options.did {string} the account's did:webvh
|
|
401
|
-
* @param options.spaceId {string} the data Space id
|
|
402
|
-
* @param options.host {string} the storage server the account lives on
|
|
403
396
|
* @param options.pinStore {ResourceLogPinStore} the account log's
|
|
404
397
|
* chain-head pin, checked and advanced when the log is fetched here
|
|
405
398
|
* @param [options.log] {DIDLog} the account log this run already stands on
|
|
406
399
|
* (a ceremony that just read or published it); given, no fetch runs
|
|
407
400
|
* @returns {function} `() => Promise<WebvhResourceLogController>`
|
|
408
401
|
*/
|
|
409
|
-
export function accountControllerResolver({ did,
|
|
402
|
+
export function accountControllerResolver({ did, pinStore, log }) {
|
|
410
403
|
let pending;
|
|
411
404
|
return async () => {
|
|
412
405
|
pending ??= (log === undefined
|
|
413
|
-
? verifyAccountLog({ did,
|
|
406
|
+
? verifyAccountLog({ did, pinStore }).then(({ log: served }) => served)
|
|
414
407
|
: Promise.resolve(log)).then(served => webvhResourceLogController({ did, log: served }), err => {
|
|
415
408
|
pending = undefined;
|
|
416
409
|
throw err;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyLog.js","sourceRoot":"","sources":["../../src/webvh/verifyLog.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"verifyLog.js","sourceRoot":"","sources":["../../src/webvh/verifyLog.ts"],"names":[],"mappings":"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"}
|
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.110.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "pnpm run clear && tsc",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@interop/capability-agent": "^0.2.2",
|
|
25
25
|
"@interop/data-integrity-core": "^8.9.0",
|
|
26
26
|
"@interop/data-integrity-proof": "^3.4.8",
|
|
27
|
-
"@interop/did-method-webvh": "^5.
|
|
27
|
+
"@interop/did-method-webvh": "^5.18.0",
|
|
28
28
|
"@interop/ed25519-signature": "^7.2.5",
|
|
29
29
|
"@interop/ed25519-verification-key": "^8.2.2",
|
|
30
30
|
"@interop/ezcap": "^7.5.4",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@eslint/js": "^10.0.1",
|
|
41
41
|
"@interop/logger": "^0.2.0",
|
|
42
|
-
"@interop/storage-core": "^0.
|
|
43
|
-
"@interop/was-client": "^0.
|
|
42
|
+
"@interop/storage-core": "^0.42.0",
|
|
43
|
+
"@interop/was-client": "^0.101.0",
|
|
44
44
|
"@playwright/test": "^1.60.0",
|
|
45
45
|
"@types/node": "^26.0.1",
|
|
46
46
|
"@vitest/coverage-v8": "^4.1.7",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"was-teaching-server": "^0.42.3"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
|
-
"@interop/was-client": ">=0.
|
|
59
|
+
"@interop/was-client": ">=0.100.1 <1.0.0"
|
|
60
60
|
},
|
|
61
61
|
"files": [
|
|
62
62
|
"dist",
|
package/dist/space/wasLink.d.ts
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The decoded link: the WAS server plus the controller secret AS A STRING.
|
|
3
|
-
*/
|
|
4
|
-
export interface WasLinkPayload {
|
|
5
|
-
serverUrl: string;
|
|
6
|
-
/**
|
|
7
|
-
* The controller secret (already decoded back to the passphrase string).
|
|
8
|
-
*/
|
|
9
|
-
secret: string;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* The `t` discriminator member every `was-link` payload carries.
|
|
13
|
-
*/
|
|
14
|
-
export declare const WAS_LINK_TYPE = "was-link";
|
|
15
|
-
/**
|
|
16
|
-
* Whether some scanned or pasted text has a `was-link` payload's JSON shape.
|
|
17
|
-
* Matched structurally on the `t` member rather than by calling the parser,
|
|
18
|
-
* so an unrelated JSON blob is not refused with a connection-code error
|
|
19
|
-
* message. This is the recognizer a wallet hands `@interop/wallet-request`'s
|
|
20
|
-
* input classifier for its `was-link` branch; whether the payload is valid
|
|
21
|
-
* is {@link parseWasLinkPayload}'s answer.
|
|
22
|
-
*
|
|
23
|
-
* @param text {string}
|
|
24
|
-
* @returns {boolean}
|
|
25
|
-
*/
|
|
26
|
-
export declare function isWasLinkPayload(text: string): boolean;
|
|
27
|
-
/**
|
|
28
|
-
* Encodes a passphrase into the payload's `secret` field: `base64url(utf8(...))`,
|
|
29
|
-
* no padding.
|
|
30
|
-
*
|
|
31
|
-
* @param passphrase {string}
|
|
32
|
-
* @returns {string}
|
|
33
|
-
*/
|
|
34
|
-
export declare function encodeWasLinkSecret(passphrase: string): string;
|
|
35
|
-
/**
|
|
36
|
-
* Builds the full `was-link` payload string a QR encodes.
|
|
37
|
-
*
|
|
38
|
-
* @param options {object}
|
|
39
|
-
* @param options.serverUrl {string}
|
|
40
|
-
* @param options.passphrase {string}
|
|
41
|
-
* @returns {string}
|
|
42
|
-
*/
|
|
43
|
-
export declare function buildWasLinkPayload({ serverUrl, passphrase }: {
|
|
44
|
-
serverUrl: string;
|
|
45
|
-
passphrase: string;
|
|
46
|
-
}): string;
|
|
47
|
-
/**
|
|
48
|
-
* Parses and validates a scanned payload, returning the server URL and the
|
|
49
|
-
* decoded string secret. Throws {@link HumanReadableError} for anything that is
|
|
50
|
-
* not a valid current-version `was-link` payload (so the scanner shows a clean
|
|
51
|
-
* message rather than mis-handling an unrelated QR).
|
|
52
|
-
*
|
|
53
|
-
* @param raw {string} the raw scanned code value
|
|
54
|
-
* @returns {WasLinkPayload}
|
|
55
|
-
*/
|
|
56
|
-
export declare function parseWasLinkPayload(raw: string): WasLinkPayload;
|
|
57
|
-
//# sourceMappingURL=wasLink.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wasLink.d.ts","sourceRoot":"","sources":["../../src/space/wasLink.ts"],"names":[],"mappings":"AAgBA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,aAAa,CAAA;AAEvC;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgBtD;AA4CD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,UAAU,EACX,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB,GAAG,MAAM,CAOT;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAyC/D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wasLink.js","sourceRoot":"","sources":["../../src/space/wasLink.ts"],"names":[],"mappings":"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"}
|