@enbox/dids 0.0.7 → 0.0.9
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/LICENSE +3 -2
- package/dist/browser.mjs +1 -1
- package/dist/browser.mjs.map +3 -3
- package/dist/esm/methods/did-web.js +201 -1
- package/dist/esm/methods/did-web.js.map +1 -1
- package/dist/esm/resolver/resolver-cache-level.js +9 -0
- package/dist/esm/resolver/resolver-cache-level.js.map +1 -1
- package/dist/esm/resolver/resolver-cache-memory.js +8 -0
- package/dist/esm/resolver/resolver-cache-memory.js.map +1 -1
- package/dist/esm/resolver/resolver-cache-noop.js +3 -0
- package/dist/esm/resolver/resolver-cache-noop.js.map +1 -1
- package/dist/esm/resolver/universal-resolver.js +18 -0
- package/dist/esm/resolver/universal-resolver.js.map +1 -1
- package/dist/types/methods/did-web.d.ts +167 -2
- package/dist/types/methods/did-web.d.ts.map +1 -1
- package/dist/types/resolver/resolver-cache-level.d.ts +7 -0
- package/dist/types/resolver/resolver-cache-level.d.ts.map +1 -1
- package/dist/types/resolver/resolver-cache-memory.d.ts +4 -0
- package/dist/types/resolver/resolver-cache-memory.d.ts.map +1 -1
- package/dist/types/resolver/resolver-cache-noop.d.ts.map +1 -1
- package/dist/types/resolver/universal-resolver.d.ts +10 -0
- package/dist/types/resolver/universal-resolver.d.ts.map +1 -1
- package/dist/utils.js +1 -1
- package/dist/utils.js.map +3 -3
- package/package.json +3 -3
- package/src/methods/did-web.ts +314 -2
- package/src/resolver/resolver-cache-level.ts +10 -0
- package/src/resolver/resolver-cache-memory.ts +7 -0
- package/src/resolver/resolver-cache-noop.ts +3 -0
- package/src/resolver/universal-resolver.ts +16 -0
|
@@ -7,9 +7,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
+
import { LocalKeyManager } from '@enbox/crypto';
|
|
11
|
+
import { BearerDid } from '../bearer-did.js';
|
|
10
12
|
import { Did } from '../did.js';
|
|
11
13
|
import { DidMethod } from './did-method.js';
|
|
12
14
|
import { EMPTY_DID_RESOLUTION_RESULT } from '../types/did-resolution.js';
|
|
15
|
+
import { extractDidFragment } from '../utils.js';
|
|
16
|
+
import { DidError, DidErrorCode } from '../did-error.js';
|
|
13
17
|
/** Default fetch timeout for DID document retrieval (30 seconds). */
|
|
14
18
|
const FETCH_TIMEOUT_MS = 30000;
|
|
15
19
|
/**
|
|
@@ -70,7 +74,12 @@ function isPrivateHostname(hostname) {
|
|
|
70
74
|
* The `DidWeb` class provides an implementation of the `did:web` DID method.
|
|
71
75
|
*
|
|
72
76
|
* Features:
|
|
77
|
+
* - DID Creation: Create new `did:web` DIDs with local key generation.
|
|
78
|
+
* - DID Key Management: Instantiate a DID object from an existing verification method key set or
|
|
79
|
+
* a key in a Key Management System (KMS). If supported by the KMS, a DID's
|
|
80
|
+
* key can be exported to a portable DID format.
|
|
73
81
|
* - DID Resolution: Resolve a `did:web` to its corresponding DID Document.
|
|
82
|
+
* - Signature Operations: Sign and verify messages using keys associated with a DID.
|
|
74
83
|
*
|
|
75
84
|
* @remarks
|
|
76
85
|
* The `did:web` method uses a web domain's existing reputation and aims to integrate decentralized
|
|
@@ -78,15 +87,206 @@ function isPrivateHostname(hostname) {
|
|
|
78
87
|
* security models and domain ownership to provide accessible, interoperable digital identity
|
|
79
88
|
* management.
|
|
80
89
|
*
|
|
90
|
+
* Unlike self-certifying methods, `did:web` creation generates keys and a DID document locally
|
|
91
|
+
* but does NOT publish them. The caller is responsible for registering the DID document with
|
|
92
|
+
* the hosting server.
|
|
93
|
+
*
|
|
81
94
|
* @see {@link https://w3c-ccg.github.io/did-method-web/ | DID Web Specification}
|
|
82
95
|
*
|
|
83
96
|
* @example
|
|
84
97
|
* ```ts
|
|
98
|
+
* // DID Creation
|
|
99
|
+
* const did = await DidWeb.create({
|
|
100
|
+
* options: { domain: 'enbox.id', path: 'users:alice' }
|
|
101
|
+
* });
|
|
102
|
+
*
|
|
85
103
|
* // DID Resolution
|
|
86
|
-
* const resolutionResult = await DidWeb.resolve(
|
|
104
|
+
* const resolutionResult = await DidWeb.resolve('did:web:enbox.id:users:alice');
|
|
105
|
+
*
|
|
106
|
+
* // Signature Operations
|
|
107
|
+
* const signer = await did.getSigner();
|
|
108
|
+
* const signature = await signer.sign({ data: new TextEncoder().encode('Message') });
|
|
109
|
+
* const isValid = await signer.verify({ data: new TextEncoder().encode('Message'), signature });
|
|
110
|
+
*
|
|
111
|
+
* // Import / Export
|
|
112
|
+
* const portableDid = await did.export();
|
|
113
|
+
* const imported = await DidWeb.import({ portableDid });
|
|
87
114
|
* ```
|
|
88
115
|
*/
|
|
89
116
|
export class DidWeb extends DidMethod {
|
|
117
|
+
/**
|
|
118
|
+
* Creates a new DID using the `did:web` method formed from a newly generated key.
|
|
119
|
+
*
|
|
120
|
+
* @remarks
|
|
121
|
+
* The DID URI is formed from the given `domain` and optional `path`, prefixed with `did:web:`.
|
|
122
|
+
* Keys are generated locally and a DID document is constructed, but the document is NOT
|
|
123
|
+
* published to any server. Registration with a `did:web` hosting server is the caller's
|
|
124
|
+
* responsibility.
|
|
125
|
+
*
|
|
126
|
+
* Notes:
|
|
127
|
+
* - If no `options.algorithm` or `options.verificationMethods` are given, a new Ed25519 key is
|
|
128
|
+
* generated by default.
|
|
129
|
+
* - The `algorithm` and `verificationMethods` options are mutually exclusive.
|
|
130
|
+
* - The `domain` option is required.
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```ts
|
|
134
|
+
* // DID Creation
|
|
135
|
+
* const did = await DidWeb.create({
|
|
136
|
+
* options: { domain: 'enbox.id', path: 'users:alice' }
|
|
137
|
+
* });
|
|
138
|
+
* // did.uri === 'did:web:enbox.id:users:alice'
|
|
139
|
+
*
|
|
140
|
+
* // DID Creation with a KMS
|
|
141
|
+
* const keyManager = new LocalKeyManager();
|
|
142
|
+
* const did = await DidWeb.create({
|
|
143
|
+
* keyManager,
|
|
144
|
+
* options: { domain: 'enbox.id', path: 'users:alice' }
|
|
145
|
+
* });
|
|
146
|
+
* ```
|
|
147
|
+
*
|
|
148
|
+
* @param params - The parameters for the create operation.
|
|
149
|
+
* @param params.keyManager - Optionally specify a Key Management System (KMS) used to generate
|
|
150
|
+
* keys and sign data.
|
|
151
|
+
* @param params.options - Parameters that specify the domain, path, algorithm, verification
|
|
152
|
+
* methods, and services for the new DID.
|
|
153
|
+
* @returns A Promise resolving to a {@link BearerDid} object representing the new DID.
|
|
154
|
+
*/
|
|
155
|
+
static create(_a) {
|
|
156
|
+
return __awaiter(this, arguments, void 0, function* ({ keyManager = new LocalKeyManager(), options, }) {
|
|
157
|
+
var _b, _c, _d, _e, _f, _g, _h, _j;
|
|
158
|
+
// Validate required options.
|
|
159
|
+
if (!options.domain) {
|
|
160
|
+
throw new DidError(DidErrorCode.InvalidDid, `The 'domain' option is required for did:web creation`);
|
|
161
|
+
}
|
|
162
|
+
// Validate that `algorithm` and `verificationMethods` are not both given.
|
|
163
|
+
if (options.algorithm && options.verificationMethods) {
|
|
164
|
+
throw new Error(`The 'algorithm' and 'verificationMethods' options are mutually exclusive`);
|
|
165
|
+
}
|
|
166
|
+
// Build the DID URI from the domain and optional path.
|
|
167
|
+
const identifier = options.path
|
|
168
|
+
? `${options.domain}:${options.path}`
|
|
169
|
+
: options.domain;
|
|
170
|
+
const didUri = `did:${DidWeb.methodName}:${identifier}`;
|
|
171
|
+
// Validate the constructed DID URI.
|
|
172
|
+
const parsedDid = Did.parse(didUri);
|
|
173
|
+
if (!parsedDid) {
|
|
174
|
+
throw new DidError(DidErrorCode.InvalidDid, `The constructed DID URI is invalid: ${didUri}`);
|
|
175
|
+
}
|
|
176
|
+
// Determine verification methods to create.
|
|
177
|
+
const verificationMethodsToAdd = (_b = options.verificationMethods) !== null && _b !== void 0 ? _b : [{
|
|
178
|
+
algorithm: ((_c = options.algorithm) !== null && _c !== void 0 ? _c : 'Ed25519'),
|
|
179
|
+
purposes: ['authentication', 'assertionMethod', 'capabilityDelegation', 'capabilityInvocation'],
|
|
180
|
+
}];
|
|
181
|
+
// Begin constructing the DID Document.
|
|
182
|
+
const document = {
|
|
183
|
+
'@context': ['https://www.w3.org/ns/did/v1'],
|
|
184
|
+
id: didUri,
|
|
185
|
+
};
|
|
186
|
+
// Generate key material for each verification method and add to the document.
|
|
187
|
+
for (let i = 0; i < verificationMethodsToAdd.length; i++) {
|
|
188
|
+
const vmOptions = verificationMethodsToAdd[i];
|
|
189
|
+
// Generate a random key.
|
|
190
|
+
const keyUri = yield keyManager.generateKey({ algorithm: vmOptions.algorithm });
|
|
191
|
+
const publicKey = yield keyManager.getPublicKey({ keyUri });
|
|
192
|
+
// Use the given ID or default to `key-N`.
|
|
193
|
+
const fragment = (_e = (_d = vmOptions.id) === null || _d === void 0 ? void 0 : _d.split('#').pop()) !== null && _e !== void 0 ? _e : `key-${i}`;
|
|
194
|
+
const methodId = `${didUri}#${fragment}`;
|
|
195
|
+
// Initialize the `verificationMethod` array if needed.
|
|
196
|
+
(_f = document.verificationMethod) !== null && _f !== void 0 ? _f : (document.verificationMethod = []);
|
|
197
|
+
// Add the verification method to the DID document.
|
|
198
|
+
document.verificationMethod.push({
|
|
199
|
+
id: methodId,
|
|
200
|
+
type: 'JsonWebKey',
|
|
201
|
+
controller: (_g = vmOptions.controller) !== null && _g !== void 0 ? _g : didUri,
|
|
202
|
+
publicKeyJwk: publicKey,
|
|
203
|
+
});
|
|
204
|
+
// Add the verification method to the specified purpose properties.
|
|
205
|
+
for (const purpose of (_h = vmOptions.purposes) !== null && _h !== void 0 ? _h : []) {
|
|
206
|
+
(_j = document[purpose]) !== null && _j !== void 0 ? _j : (document[purpose] = []);
|
|
207
|
+
document[purpose].push(methodId);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// Add services, if any.
|
|
211
|
+
if (options.services) {
|
|
212
|
+
document.service = options.services.map(service => (Object.assign(Object.assign({}, service), { id: `${didUri}#${service.id.split('#').pop()}` })));
|
|
213
|
+
}
|
|
214
|
+
// Create the BearerDid object. Metadata indicates unpublished state.
|
|
215
|
+
const did = new BearerDid({
|
|
216
|
+
uri: didUri,
|
|
217
|
+
document,
|
|
218
|
+
metadata: { published: false },
|
|
219
|
+
keyManager,
|
|
220
|
+
});
|
|
221
|
+
return did;
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Given the W3C DID Document of a `did:web` DID, return the verification method that will be
|
|
226
|
+
* used for signing messages and credentials. If given, the `methodId` parameter is used to
|
|
227
|
+
* select the verification method. If not given, the first verification method referenced in
|
|
228
|
+
* `assertionMethod` is used, falling back to the first verification method in the document.
|
|
229
|
+
*
|
|
230
|
+
* @param params - The parameters for the `getSigningMethod` operation.
|
|
231
|
+
* @param params.didDocument - DID Document to get the verification method from.
|
|
232
|
+
* @param params.methodId - ID of the verification method to use for signing.
|
|
233
|
+
* @returns Verification method to use for signing.
|
|
234
|
+
*/
|
|
235
|
+
static getSigningMethod(_a) {
|
|
236
|
+
return __awaiter(this, arguments, void 0, function* ({ didDocument, methodId }) {
|
|
237
|
+
var _b, _c, _d, _e;
|
|
238
|
+
// Verify the DID method is supported.
|
|
239
|
+
const parsedDid = Did.parse(didDocument.id);
|
|
240
|
+
if (parsedDid && parsedDid.method !== this.methodName) {
|
|
241
|
+
throw new DidError(DidErrorCode.MethodNotSupported, `Method not supported: ${parsedDid.method}`);
|
|
242
|
+
}
|
|
243
|
+
// Attempt to find a verification method that matches the given method ID, or if not given,
|
|
244
|
+
// find the first verification method intended for signing claims.
|
|
245
|
+
const targetFragment = (_b = extractDidFragment(methodId)) !== null && _b !== void 0 ? _b : extractDidFragment((_c = didDocument.assertionMethod) === null || _c === void 0 ? void 0 : _c[0]);
|
|
246
|
+
const verificationMethod = targetFragment
|
|
247
|
+
? (_d = didDocument.verificationMethod) === null || _d === void 0 ? void 0 : _d.find(vm => extractDidFragment(vm.id) === targetFragment)
|
|
248
|
+
: (_e = didDocument.verificationMethod) === null || _e === void 0 ? void 0 : _e[0];
|
|
249
|
+
if (!(verificationMethod && verificationMethod.publicKeyJwk)) {
|
|
250
|
+
throw new DidError(DidErrorCode.InternalError, 'A verification method intended for signing could not be determined from the DID Document');
|
|
251
|
+
}
|
|
252
|
+
return verificationMethod;
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Instantiates a {@link BearerDid} object for the DID Web method from a given
|
|
257
|
+
* {@link PortableDid}.
|
|
258
|
+
*
|
|
259
|
+
* This method allows for the creation of a `BearerDid` object using a previously created DID's
|
|
260
|
+
* key material, DID document, and metadata.
|
|
261
|
+
*
|
|
262
|
+
* @example
|
|
263
|
+
* ```ts
|
|
264
|
+
* // Export an existing BearerDid to PortableDid format.
|
|
265
|
+
* const portableDid = await did.export();
|
|
266
|
+
* // Reconstruct a BearerDid object from the PortableDid.
|
|
267
|
+
* const did = await DidWeb.import({ portableDid });
|
|
268
|
+
* ```
|
|
269
|
+
*
|
|
270
|
+
* @param params - The parameters for the import operation.
|
|
271
|
+
* @param params.portableDid - The PortableDid object to import.
|
|
272
|
+
* @param params.keyManager - Optionally specify an external Key Management System (KMS) used to
|
|
273
|
+
* generate keys and sign data. If not given, a new
|
|
274
|
+
* {@link LocalKeyManager} instance will be created and used.
|
|
275
|
+
* @returns A Promise resolving to a `BearerDid` object representing the DID formed from the
|
|
276
|
+
* provided keys.
|
|
277
|
+
*/
|
|
278
|
+
static import(_a) {
|
|
279
|
+
return __awaiter(this, arguments, void 0, function* ({ portableDid, keyManager = new LocalKeyManager() }) {
|
|
280
|
+
// Verify the DID method is supported.
|
|
281
|
+
const parsedDid = Did.parse(portableDid.uri);
|
|
282
|
+
if ((parsedDid === null || parsedDid === void 0 ? void 0 : parsedDid.method) !== DidWeb.methodName) {
|
|
283
|
+
throw new DidError(DidErrorCode.MethodNotSupported, `Method not supported`);
|
|
284
|
+
}
|
|
285
|
+
// Use the given PortableDid to construct the BearerDid object.
|
|
286
|
+
const did = yield BearerDid.import({ portableDid, keyManager });
|
|
287
|
+
return did;
|
|
288
|
+
});
|
|
289
|
+
}
|
|
90
290
|
/**
|
|
91
291
|
* Resolves a `did:web` identifier to a DID Document.
|
|
92
292
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"did-web.js","sourceRoot":"","sources":["../../../src/methods/did-web.ts"],"names":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"did-web.js","sourceRoot":"","sources":["../../../src/methods/did-web.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,15 @@ export class DidResolverCacheLevel {
|
|
|
29
29
|
this.cache = db !== null && db !== void 0 ? db : new Level(location);
|
|
30
30
|
this.ttl = ms(ttl);
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Opens the underlying LevelDB store.
|
|
34
|
+
* Calling `open()` on an already-open store is a safe no-op.
|
|
35
|
+
*
|
|
36
|
+
* @returns A promise that resolves when the store is ready for use.
|
|
37
|
+
*/
|
|
38
|
+
open() {
|
|
39
|
+
return this.cache.open();
|
|
40
|
+
}
|
|
32
41
|
/**
|
|
33
42
|
* Retrieves a DID resolution result from the cache.
|
|
34
43
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver-cache-level.js","sourceRoot":"","sources":["../../../src/resolver/resolver-cache-level.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;AAuDpB;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,qBAAqB;IAOhC,YAAY,EACV,EAAE,EACF,QAAQ,GAAG,wBAAwB,EACnC,GAAG,GAAG,KAAK,KACoB,EAAE;QACjC,IAAI,CAAC,KAAK,GAAG,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,IAAI,KAAK,CAAiB,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED;;;;;;;OAOG;IACG,GAAG,CAAC,GAAW;;YACnB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACtC,MAAM,yBAAyB,GAA8B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAE7E,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,yBAAyB,CAAC,SAAS,EAAE,CAAC;oBACtD,oEAAoE;oBACpE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBAE/C,OAAO;gBACT,CAAC;qBAAM,CAAC;oBACN,OAAO,yBAAyB,CAAC,KAAK,CAAC;gBACzC,CAAC;YAEH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,uCAAuC;gBACvC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACnB,OAAO;gBACT,CAAC;gBAED,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;KAAA;IAED;;;;;;OAMG;IACH,GAAG,CAAC,GAAW,EAAE,KAA0B;QACzC,MAAM,yBAAyB,GAA8B,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;QACzG,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAEtD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"resolver-cache-level.js","sourceRoot":"","sources":["../../../src/resolver/resolver-cache-level.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;AAuDpB;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,qBAAqB;IAOhC,YAAY,EACV,EAAE,EACF,QAAQ,GAAG,wBAAwB,EACnC,GAAG,GAAG,KAAK,KACoB,EAAE;QACjC,IAAI,CAAC,KAAK,GAAG,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,IAAI,KAAK,CAAiB,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;;OAOG;IACG,GAAG,CAAC,GAAW;;YACnB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACtC,MAAM,yBAAyB,GAA8B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAE7E,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,yBAAyB,CAAC,SAAS,EAAE,CAAC;oBACtD,oEAAoE;oBACpE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBAE/C,OAAO;gBACT,CAAC;qBAAM,CAAC;oBACN,OAAO,yBAAyB,CAAC,KAAK,CAAC;gBACzC,CAAC;YAEH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,uCAAuC;gBACvC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACnB,OAAO;gBACT,CAAC;gBAED,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;KAAA;IAED;;;;;;OAMG;IACH,GAAG,CAAC,GAAW,EAAE,KAA0B;QACzC,MAAM,yBAAyB,GAA8B,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;QACzG,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAEtD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -13,6 +13,14 @@ export class DidResolverCacheMemory {
|
|
|
13
13
|
constructor({ ttl = '15m' } = {}) {
|
|
14
14
|
this.cache = new TtlCache({ ttl: ms(ttl) });
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* This method is a no-op since in-memory stores are always ready.
|
|
18
|
+
*/
|
|
19
|
+
open() {
|
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
// No-op since there is no underlying store to open.
|
|
22
|
+
});
|
|
23
|
+
}
|
|
16
24
|
/**
|
|
17
25
|
* Retrieves a DID resolution result from the cache.
|
|
18
26
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver-cache-memory.js","sourceRoot":"","sources":["../../../src/resolver/resolver-cache-memory.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAoBzC,MAAM,OAAO,sBAAsB;IAGjC,YAAY,EAAE,GAAG,GAAG,KAAK,KAAmC,EAAE;QAC5D,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;OAOG;IACU,GAAG,CAAC,MAAc;;YAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrD,CAAC;YAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;KAAA;IAED;;;;;;OAMG;IACU,GAAG,CAAC,MAAc,EAAE,gBAAqC;;YACpE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAC3C,CAAC;KAAA;IAED;;;;;OAKG;IACU,MAAM,CAAC,MAAc;;YAChC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;KAAA;IAED;;;;OAIG;IACU,KAAK;;YAChB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;KAAA;IAED;;;;;OAKG;IACU,KAAK;;YAChB,qDAAqD;QACvD,CAAC;KAAA;CACF"}
|
|
1
|
+
{"version":3,"file":"resolver-cache-memory.js","sourceRoot":"","sources":["../../../src/resolver/resolver-cache-memory.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAoBzC,MAAM,OAAO,sBAAsB;IAGjC,YAAY,EAAE,GAAG,GAAG,KAAK,KAAmC,EAAE;QAC5D,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACU,IAAI;;YACf,oDAAoD;QACtD,CAAC;KAAA;IAED;;;;;;;OAOG;IACU,GAAG,CAAC,MAAc;;YAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrD,CAAC;YAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;KAAA;IAED;;;;;;OAMG;IACU,GAAG,CAAC,MAAc,EAAE,gBAAqC;;YACpE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAC3C,CAAC;KAAA;IAED;;;;;OAKG;IACU,MAAM,CAAC,MAAc;;YAChC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;KAAA;IAED;;;;OAIG;IACU,KAAK;;YAChB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;KAAA;IAED;;;;;OAKG;IACU,KAAK;;YAChB,qDAAqD;QACvD,CAAC;KAAA;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver-cache-noop.js","sourceRoot":"","sources":["../../../src/resolver/resolver-cache-noop.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAqB;IACpD,GAAG,CAAC,IAAY;QACd,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IACD,GAAG,CAAC,IAAY,EAAE,MAA2B;QAC3C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,CAAC,IAAY;QACjB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,KAAK;QACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,KAAK;QACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"resolver-cache-noop.js","sourceRoot":"","sources":["../../../src/resolver/resolver-cache-noop.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAqB;IACpD,IAAI;QACF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,GAAG,CAAC,IAAY;QACd,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IACD,GAAG,CAAC,IAAY,EAAE,MAA2B;QAC3C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,CAAC,IAAY;QACjB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,KAAK;QACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,KAAK;QACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC"}
|
|
@@ -54,6 +54,24 @@ export class UniversalResolver {
|
|
|
54
54
|
this.didResolvers.set(resolver.methodName, resolver);
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Opens the resolver's cache, acquiring any resources needed.
|
|
59
|
+
* Must be called before resolving DIDs if using a cache that requires initialization (e.g., LevelDB).
|
|
60
|
+
*/
|
|
61
|
+
open() {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
yield this.cache.open();
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Closes the resolver's cache, releasing any resources held.
|
|
68
|
+
* Should be called during application shutdown.
|
|
69
|
+
*/
|
|
70
|
+
close() {
|
|
71
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
72
|
+
yield this.cache.close();
|
|
73
|
+
});
|
|
74
|
+
}
|
|
57
75
|
/**
|
|
58
76
|
* Resolves a DID to a DID Resolution Result.
|
|
59
77
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"universal-resolver.js","sourceRoot":"","sources":["../../../src/resolver/universal-resolver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"universal-resolver.js","sourceRoot":"","sources":["../../../src/resolver/universal-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,73 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { InferKeyGeneratorAlgorithm, KeyIdentifier, KeyImporterExporter, KeyManager, KmsExportKeyParams, KmsImportKeyParams } from '@enbox/crypto';
|
|
2
|
+
import { LocalKeyManager } from '@enbox/crypto';
|
|
3
|
+
import type { PortableDid } from '../types/portable-did.js';
|
|
4
|
+
import type { DidCreateOptions } from './did-method.js';
|
|
5
|
+
import type { DidDocument, DidResolutionOptions, DidResolutionResult, DidService, DidVerificationMethod } from '../types/did-core.js';
|
|
6
|
+
import { BearerDid } from '../bearer-did.js';
|
|
2
7
|
import { DidMethod } from './did-method.js';
|
|
8
|
+
/**
|
|
9
|
+
* Defines the set of options available when creating a new Decentralized Identifier (DID) with the
|
|
10
|
+
* 'did:web' method.
|
|
11
|
+
*
|
|
12
|
+
* Unlike self-certifying DID methods (e.g., `did:jwk`, `did:dht`), `did:web` requires external
|
|
13
|
+
* information — a domain and an optional path — to form the DID URI. The `create()` method
|
|
14
|
+
* generates keys locally and constructs a DID document, but does NOT publish it. Registration
|
|
15
|
+
* with a `did:web` hosting server is the caller's responsibility.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* // Create a did:web DID for enbox.id/users/alice
|
|
20
|
+
* const did = await DidWeb.create({
|
|
21
|
+
* options: {
|
|
22
|
+
* domain: 'enbox.id',
|
|
23
|
+
* path: 'users:alice',
|
|
24
|
+
* }
|
|
25
|
+
* });
|
|
26
|
+
* // did.uri === 'did:web:enbox.id:users:alice'
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export interface DidWebCreateOptions<TKms> extends DidCreateOptions<TKms> {
|
|
30
|
+
/**
|
|
31
|
+
* The domain (and optional port) that will host the DID document.
|
|
32
|
+
*
|
|
33
|
+
* Ports are percent-encoded per the did:web spec (e.g., `localhost%3A3000`).
|
|
34
|
+
* This value forms the first segment of the method-specific identifier.
|
|
35
|
+
*
|
|
36
|
+
* @example 'enbox.id'
|
|
37
|
+
* @example 'localhost%3A3000'
|
|
38
|
+
*/
|
|
39
|
+
domain: string;
|
|
40
|
+
/**
|
|
41
|
+
* Optional colon-separated path segments appended after the domain.
|
|
42
|
+
*
|
|
43
|
+
* When present the DID document is served at `https://<domain>/<path>/did.json`.
|
|
44
|
+
* When absent the DID document is served at `https://<domain>/.well-known/did.json`.
|
|
45
|
+
*
|
|
46
|
+
* @example 'users:alice' // → did:web:enbox.id:users:alice
|
|
47
|
+
* @example 'orgs:acme' // → did:web:enbox.id:orgs:acme
|
|
48
|
+
*/
|
|
49
|
+
path?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Optionally specify the algorithm to be used for key generation of the primary
|
|
52
|
+
* verification method. Defaults to Ed25519. Mutually exclusive with
|
|
53
|
+
* `verificationMethods`.
|
|
54
|
+
*/
|
|
55
|
+
algorithm?: TKms extends KeyManager ? InferKeyGeneratorAlgorithm<TKms> : InferKeyGeneratorAlgorithm<LocalKeyManager>;
|
|
56
|
+
/**
|
|
57
|
+
* Optional services to include in the DID document (e.g., DWN endpoints).
|
|
58
|
+
*/
|
|
59
|
+
services?: DidService[];
|
|
60
|
+
}
|
|
3
61
|
/**
|
|
4
62
|
* The `DidWeb` class provides an implementation of the `did:web` DID method.
|
|
5
63
|
*
|
|
6
64
|
* Features:
|
|
65
|
+
* - DID Creation: Create new `did:web` DIDs with local key generation.
|
|
66
|
+
* - DID Key Management: Instantiate a DID object from an existing verification method key set or
|
|
67
|
+
* a key in a Key Management System (KMS). If supported by the KMS, a DID's
|
|
68
|
+
* key can be exported to a portable DID format.
|
|
7
69
|
* - DID Resolution: Resolve a `did:web` to its corresponding DID Document.
|
|
70
|
+
* - Signature Operations: Sign and verify messages using keys associated with a DID.
|
|
8
71
|
*
|
|
9
72
|
* @remarks
|
|
10
73
|
* The `did:web` method uses a web domain's existing reputation and aims to integrate decentralized
|
|
@@ -12,12 +75,30 @@ import { DidMethod } from './did-method.js';
|
|
|
12
75
|
* security models and domain ownership to provide accessible, interoperable digital identity
|
|
13
76
|
* management.
|
|
14
77
|
*
|
|
78
|
+
* Unlike self-certifying methods, `did:web` creation generates keys and a DID document locally
|
|
79
|
+
* but does NOT publish them. The caller is responsible for registering the DID document with
|
|
80
|
+
* the hosting server.
|
|
81
|
+
*
|
|
15
82
|
* @see {@link https://w3c-ccg.github.io/did-method-web/ | DID Web Specification}
|
|
16
83
|
*
|
|
17
84
|
* @example
|
|
18
85
|
* ```ts
|
|
86
|
+
* // DID Creation
|
|
87
|
+
* const did = await DidWeb.create({
|
|
88
|
+
* options: { domain: 'enbox.id', path: 'users:alice' }
|
|
89
|
+
* });
|
|
90
|
+
*
|
|
19
91
|
* // DID Resolution
|
|
20
|
-
* const resolutionResult = await DidWeb.resolve(
|
|
92
|
+
* const resolutionResult = await DidWeb.resolve('did:web:enbox.id:users:alice');
|
|
93
|
+
*
|
|
94
|
+
* // Signature Operations
|
|
95
|
+
* const signer = await did.getSigner();
|
|
96
|
+
* const signature = await signer.sign({ data: new TextEncoder().encode('Message') });
|
|
97
|
+
* const isValid = await signer.verify({ data: new TextEncoder().encode('Message'), signature });
|
|
98
|
+
*
|
|
99
|
+
* // Import / Export
|
|
100
|
+
* const portableDid = await did.export();
|
|
101
|
+
* const imported = await DidWeb.import({ portableDid });
|
|
21
102
|
* ```
|
|
22
103
|
*/
|
|
23
104
|
export declare class DidWeb extends DidMethod {
|
|
@@ -25,6 +106,90 @@ export declare class DidWeb extends DidMethod {
|
|
|
25
106
|
* Name of the DID method, as defined in the DID Web specification.
|
|
26
107
|
*/
|
|
27
108
|
static methodName: string;
|
|
109
|
+
/**
|
|
110
|
+
* Creates a new DID using the `did:web` method formed from a newly generated key.
|
|
111
|
+
*
|
|
112
|
+
* @remarks
|
|
113
|
+
* The DID URI is formed from the given `domain` and optional `path`, prefixed with `did:web:`.
|
|
114
|
+
* Keys are generated locally and a DID document is constructed, but the document is NOT
|
|
115
|
+
* published to any server. Registration with a `did:web` hosting server is the caller's
|
|
116
|
+
* responsibility.
|
|
117
|
+
*
|
|
118
|
+
* Notes:
|
|
119
|
+
* - If no `options.algorithm` or `options.verificationMethods` are given, a new Ed25519 key is
|
|
120
|
+
* generated by default.
|
|
121
|
+
* - The `algorithm` and `verificationMethods` options are mutually exclusive.
|
|
122
|
+
* - The `domain` option is required.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```ts
|
|
126
|
+
* // DID Creation
|
|
127
|
+
* const did = await DidWeb.create({
|
|
128
|
+
* options: { domain: 'enbox.id', path: 'users:alice' }
|
|
129
|
+
* });
|
|
130
|
+
* // did.uri === 'did:web:enbox.id:users:alice'
|
|
131
|
+
*
|
|
132
|
+
* // DID Creation with a KMS
|
|
133
|
+
* const keyManager = new LocalKeyManager();
|
|
134
|
+
* const did = await DidWeb.create({
|
|
135
|
+
* keyManager,
|
|
136
|
+
* options: { domain: 'enbox.id', path: 'users:alice' }
|
|
137
|
+
* });
|
|
138
|
+
* ```
|
|
139
|
+
*
|
|
140
|
+
* @param params - The parameters for the create operation.
|
|
141
|
+
* @param params.keyManager - Optionally specify a Key Management System (KMS) used to generate
|
|
142
|
+
* keys and sign data.
|
|
143
|
+
* @param params.options - Parameters that specify the domain, path, algorithm, verification
|
|
144
|
+
* methods, and services for the new DID.
|
|
145
|
+
* @returns A Promise resolving to a {@link BearerDid} object representing the new DID.
|
|
146
|
+
*/
|
|
147
|
+
static create<TKms extends KeyManager | undefined = undefined>({ keyManager, options, }: {
|
|
148
|
+
keyManager?: TKms;
|
|
149
|
+
options: DidWebCreateOptions<TKms>;
|
|
150
|
+
}): Promise<BearerDid>;
|
|
151
|
+
/**
|
|
152
|
+
* Given the W3C DID Document of a `did:web` DID, return the verification method that will be
|
|
153
|
+
* used for signing messages and credentials. If given, the `methodId` parameter is used to
|
|
154
|
+
* select the verification method. If not given, the first verification method referenced in
|
|
155
|
+
* `assertionMethod` is used, falling back to the first verification method in the document.
|
|
156
|
+
*
|
|
157
|
+
* @param params - The parameters for the `getSigningMethod` operation.
|
|
158
|
+
* @param params.didDocument - DID Document to get the verification method from.
|
|
159
|
+
* @param params.methodId - ID of the verification method to use for signing.
|
|
160
|
+
* @returns Verification method to use for signing.
|
|
161
|
+
*/
|
|
162
|
+
static getSigningMethod({ didDocument, methodId }: {
|
|
163
|
+
didDocument: DidDocument;
|
|
164
|
+
methodId?: string;
|
|
165
|
+
}): Promise<DidVerificationMethod>;
|
|
166
|
+
/**
|
|
167
|
+
* Instantiates a {@link BearerDid} object for the DID Web method from a given
|
|
168
|
+
* {@link PortableDid}.
|
|
169
|
+
*
|
|
170
|
+
* This method allows for the creation of a `BearerDid` object using a previously created DID's
|
|
171
|
+
* key material, DID document, and metadata.
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* ```ts
|
|
175
|
+
* // Export an existing BearerDid to PortableDid format.
|
|
176
|
+
* const portableDid = await did.export();
|
|
177
|
+
* // Reconstruct a BearerDid object from the PortableDid.
|
|
178
|
+
* const did = await DidWeb.import({ portableDid });
|
|
179
|
+
* ```
|
|
180
|
+
*
|
|
181
|
+
* @param params - The parameters for the import operation.
|
|
182
|
+
* @param params.portableDid - The PortableDid object to import.
|
|
183
|
+
* @param params.keyManager - Optionally specify an external Key Management System (KMS) used to
|
|
184
|
+
* generate keys and sign data. If not given, a new
|
|
185
|
+
* {@link LocalKeyManager} instance will be created and used.
|
|
186
|
+
* @returns A Promise resolving to a `BearerDid` object representing the DID formed from the
|
|
187
|
+
* provided keys.
|
|
188
|
+
*/
|
|
189
|
+
static import({ portableDid, keyManager }: {
|
|
190
|
+
keyManager?: KeyManager & KeyImporterExporter<KmsImportKeyParams, KeyIdentifier, KmsExportKeyParams>;
|
|
191
|
+
portableDid: PortableDid;
|
|
192
|
+
}): Promise<BearerDid>;
|
|
28
193
|
/**
|
|
29
194
|
* Resolves a `did:web` identifier to a DID Document.
|
|
30
195
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"did-web.d.ts","sourceRoot":"","sources":["../../../src/methods/did-web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"did-web.d.ts","sourceRoot":"","sources":["../../../src/methods/did-web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAA+B,MAAM,iBAAiB,CAAC;AACrF,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,UAAU,EACV,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AA6C5C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,mBAAmB,CAAC,IAAI,CAAE,SAAQ,gBAAgB,CAAC,IAAI,CAAC;IACvE;;;;;;;;OAQG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,SAAS,CAAC,EAAE,IAAI,SAAS,UAAU,GAC/B,0BAA0B,CAAC,IAAI,CAAC,GAChC,0BAA0B,CAAC,eAAe,CAAC,CAAC;IAEhD;;OAEG;IACH,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,qBAAa,MAAO,SAAQ,SAAS;IAEnC;;OAEG;IACH,OAAc,UAAU,SAAS;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;WACiB,MAAM,CAAC,IAAI,SAAS,UAAU,GAAG,SAAS,GAAG,SAAS,EAAE,EAC1E,UAAkC,EAClC,OAAO,GACR,EAAE;QACD,UAAU,CAAC,EAAE,IAAI,CAAC;QAClB,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;KACpC,GAAG,OAAO,CAAC,SAAS,CAAC;IAqFtB;;;;;;;;;;OAUG;WACiB,gBAAgB,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE;QAC9D,WAAW,EAAE,WAAW,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA0BlC;;;;;;;;;;;;;;;;;;;;;;OAsBG;WACiB,MAAM,CAAC,EAAE,WAAW,EAAE,UAAkC,EAAE,EAAE;QAC9E,UAAU,CAAC,EAAE,UAAU,GAAG,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC;QACrG,WAAW,EAAE,WAAW,CAAC;KAC1B,GAAG,OAAO,CAAC,SAAS,CAAC;IAatB;;;;;;OAMG;WACiB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAkE3G"}
|
|
@@ -46,6 +46,13 @@ export declare class DidResolverCacheLevel implements DidResolverCache {
|
|
|
46
46
|
/** The time-to-live for cache entries in milliseconds. */
|
|
47
47
|
protected ttl: number;
|
|
48
48
|
constructor({ db, location, ttl }?: DidResolverCacheLevelParams);
|
|
49
|
+
/**
|
|
50
|
+
* Opens the underlying LevelDB store.
|
|
51
|
+
* Calling `open()` on an already-open store is a safe no-op.
|
|
52
|
+
*
|
|
53
|
+
* @returns A promise that resolves when the store is ready for use.
|
|
54
|
+
*/
|
|
55
|
+
open(): Promise<void>;
|
|
49
56
|
/**
|
|
50
57
|
* Retrieves a DID resolution result from the cache.
|
|
51
58
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver-cache-level.d.ts","sourceRoot":"","sources":["../../../src/resolver/resolver-cache-level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAKpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC;;;OAGG;IACH,EAAE,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,GAAG,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjE;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAyBF;;;;;;;;;;;;;;GAcG;AACH,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,qDAAqD;IACrD,SAAS,CAAC,KAAK,8DAAC;IAEhB,0DAA0D;IAC1D,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;gBAEV,EACV,EAAE,EACF,QAAmC,EACnC,GAAW,EACZ,GAAE,2BAAgC;IAKnC;;;;;;;OAOG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAwB3D;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3D;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB"}
|
|
1
|
+
{"version":3,"file":"resolver-cache-level.d.ts","sourceRoot":"","sources":["../../../src/resolver/resolver-cache-level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAKpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC;;;OAGG;IACH,EAAE,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,GAAG,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjE;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAyBF;;;;;;;;;;;;;;GAcG;AACH,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,qDAAqD;IACrD,SAAS,CAAC,KAAK,8DAAC;IAEhB,0DAA0D;IAC1D,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;gBAEV,EACV,EAAE,EACF,QAAmC,EACnC,GAAW,EACZ,GAAE,2BAAgC;IAKnC;;;;;OAKG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB;;;;;;;OAOG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAwB3D;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3D;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB"}
|
|
@@ -17,6 +17,10 @@ export type DidResolverCacheMemoryParams = {
|
|
|
17
17
|
export declare class DidResolverCacheMemory implements DidResolverCache {
|
|
18
18
|
private cache;
|
|
19
19
|
constructor({ ttl }?: DidResolverCacheMemoryParams);
|
|
20
|
+
/**
|
|
21
|
+
* This method is a no-op since in-memory stores are always ready.
|
|
22
|
+
*/
|
|
23
|
+
open(): Promise<void>;
|
|
20
24
|
/**
|
|
21
25
|
* Retrieves a DID resolution result from the cache.
|
|
22
26
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver-cache-memory.d.ts","sourceRoot":"","sources":["../../../src/resolver/resolver-cache-memory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,OAAO,CAAC,KAAK,CAAwC;gBAEzC,EAAE,GAAW,EAAE,GAAE,4BAAiC;IAI9D;;;;;;;OAOG;IACU,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAQrE;;;;;;OAMG;IACU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItF;;;;;OAKG;IACU,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD;;;;OAIG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;;;;OAKG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpC"}
|
|
1
|
+
{"version":3,"file":"resolver-cache-memory.d.ts","sourceRoot":"","sources":["../../../src/resolver/resolver-cache-memory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,OAAO,CAAC,KAAK,CAAwC;gBAEzC,EAAE,GAAW,EAAE,GAAE,4BAAiC;IAI9D;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC;;;;;;;OAOG;IACU,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAQrE;;;;;;OAMG;IACU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItF;;;;;OAKG;IACU,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD;;;;OAIG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;;;;OAKG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver-cache-noop.d.ts","sourceRoot":"","sources":["../../../src/resolver/resolver-cache-noop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"resolver-cache-noop.d.ts","sourceRoot":"","sources":["../../../src/resolver/resolver-cache-noop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,gBAmBlC,CAAC"}
|
|
@@ -69,6 +69,16 @@ export declare class UniversalResolver implements DidResolver, DidUrlDereference
|
|
|
69
69
|
* @param params - The parameters for constructing the `DidResolver`.
|
|
70
70
|
*/
|
|
71
71
|
constructor({ cache, didResolvers }: UniversalResolverParams);
|
|
72
|
+
/**
|
|
73
|
+
* Opens the resolver's cache, acquiring any resources needed.
|
|
74
|
+
* Must be called before resolving DIDs if using a cache that requires initialization (e.g., LevelDB).
|
|
75
|
+
*/
|
|
76
|
+
open(): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Closes the resolver's cache, releasing any resources held.
|
|
79
|
+
* Should be called during application shutdown.
|
|
80
|
+
*/
|
|
81
|
+
close(): Promise<void>;
|
|
72
82
|
/**
|
|
73
83
|
* Resolves a DID to a DID Resolution Result.
|
|
74
84
|
*
|