@did-btcr2/method 0.19.0 → 0.20.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/browser.js +715 -1445
- package/dist/browser.mjs +715 -1445
- package/dist/cjs/core/beacon/beacon.js +25 -0
- package/dist/cjs/core/beacon/beacon.js.map +1 -0
- package/dist/cjs/core/beacon/cas-beacon.js +20 -36
- package/dist/cjs/core/beacon/cas-beacon.js.map +1 -1
- package/dist/cjs/core/beacon/error.js +4 -4
- package/dist/cjs/core/beacon/error.js.map +1 -1
- package/dist/cjs/core/beacon/factory.js +5 -7
- package/dist/cjs/core/beacon/factory.js.map +1 -1
- package/dist/cjs/core/beacon/interfaces.js +1 -31
- package/dist/cjs/core/beacon/interfaces.js.map +1 -1
- package/dist/cjs/core/beacon/signal-discovery.js +183 -0
- package/dist/cjs/core/beacon/signal-discovery.js.map +1 -0
- package/dist/cjs/core/beacon/singleton.js +54 -81
- package/dist/cjs/core/beacon/singleton.js.map +1 -1
- package/dist/cjs/core/beacon/smt-beacon.js +22 -39
- package/dist/cjs/core/beacon/smt-beacon.js.map +1 -1
- package/dist/cjs/core/beacon/utils.js +4 -9
- package/dist/cjs/core/beacon/utils.js.map +1 -1
- package/dist/cjs/core/resolve.js +87 -277
- package/dist/cjs/core/resolve.js.map +1 -1
- package/dist/cjs/core/update.js +62 -153
- package/dist/cjs/core/update.js.map +1 -1
- package/dist/cjs/did-btcr2.js +80 -75
- package/dist/cjs/did-btcr2.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/appendix.js +6 -15
- package/dist/cjs/utils/appendix.js.map +1 -1
- package/dist/cjs/utils/did-document-builder.js +5 -0
- package/dist/cjs/utils/did-document-builder.js.map +1 -1
- package/dist/cjs/utils/did-document.js +11 -14
- package/dist/cjs/utils/did-document.js.map +1 -1
- package/dist/esm/core/beacon/beacon.js +25 -0
- package/dist/esm/core/beacon/beacon.js.map +1 -0
- package/dist/esm/core/beacon/cas-beacon.js +20 -36
- package/dist/esm/core/beacon/cas-beacon.js.map +1 -1
- package/dist/esm/core/beacon/error.js +4 -4
- package/dist/esm/core/beacon/error.js.map +1 -1
- package/dist/esm/core/beacon/factory.js +5 -7
- package/dist/esm/core/beacon/factory.js.map +1 -1
- package/dist/esm/core/beacon/interfaces.js +1 -31
- package/dist/esm/core/beacon/interfaces.js.map +1 -1
- package/dist/esm/core/beacon/signal-discovery.js +183 -0
- package/dist/esm/core/beacon/signal-discovery.js.map +1 -0
- package/dist/esm/core/beacon/singleton.js +54 -81
- package/dist/esm/core/beacon/singleton.js.map +1 -1
- package/dist/esm/core/beacon/smt-beacon.js +22 -39
- package/dist/esm/core/beacon/smt-beacon.js.map +1 -1
- package/dist/esm/core/beacon/utils.js +4 -9
- package/dist/esm/core/beacon/utils.js.map +1 -1
- package/dist/esm/core/resolve.js +87 -277
- package/dist/esm/core/resolve.js.map +1 -1
- package/dist/esm/core/update.js +62 -153
- package/dist/esm/core/update.js.map +1 -1
- package/dist/esm/did-btcr2.js +80 -75
- package/dist/esm/did-btcr2.js.map +1 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/appendix.js +6 -15
- package/dist/esm/utils/appendix.js.map +1 -1
- package/dist/esm/utils/did-document-builder.js +5 -0
- package/dist/esm/utils/did-document-builder.js.map +1 -1
- package/dist/esm/utils/did-document.js +11 -14
- package/dist/esm/utils/did-document.js.map +1 -1
- package/dist/types/core/beacon/beacon.d.ts +44 -0
- package/dist/types/core/beacon/beacon.d.ts.map +1 -0
- package/dist/types/core/beacon/cas-beacon.d.ts +19 -30
- package/dist/types/core/beacon/cas-beacon.d.ts.map +1 -1
- package/dist/types/core/beacon/error.d.ts +2 -2
- package/dist/types/core/beacon/error.d.ts.map +1 -1
- package/dist/types/core/beacon/factory.d.ts +4 -6
- package/dist/types/core/beacon/factory.d.ts.map +1 -1
- package/dist/types/core/beacon/interfaces.d.ts +7 -46
- package/dist/types/core/beacon/interfaces.d.ts.map +1 -1
- package/dist/types/core/beacon/signal-discovery.d.ts +25 -0
- package/dist/types/core/beacon/signal-discovery.d.ts.map +1 -0
- package/dist/types/core/beacon/singleton.d.ts +16 -29
- package/dist/types/core/beacon/singleton.d.ts.map +1 -1
- package/dist/types/core/beacon/smt-beacon.d.ts +21 -33
- package/dist/types/core/beacon/smt-beacon.d.ts.map +1 -1
- package/dist/types/core/beacon/utils.d.ts.map +1 -1
- package/dist/types/core/interfaces.d.ts +1 -8
- package/dist/types/core/interfaces.d.ts.map +1 -1
- package/dist/types/core/resolve.d.ts +27 -43
- package/dist/types/core/resolve.d.ts.map +1 -1
- package/dist/types/core/types.d.ts +21 -8
- package/dist/types/core/types.d.ts.map +1 -1
- package/dist/types/core/update.d.ts +30 -73
- package/dist/types/core/update.d.ts.map +1 -1
- package/dist/types/did-btcr2.d.ts +37 -44
- package/dist/types/did-btcr2.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/utils/appendix.d.ts.map +1 -1
- package/dist/types/utils/did-document-builder.d.ts +5 -0
- package/dist/types/utils/did-document-builder.d.ts.map +1 -1
- package/dist/types/utils/did-document.d.ts +16 -14
- package/dist/types/utils/did-document.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/core/beacon/beacon.ts +58 -0
- package/src/core/beacon/cas-beacon.ts +30 -44
- package/src/core/beacon/error.ts +5 -6
- package/src/core/beacon/factory.ts +7 -9
- package/src/core/beacon/interfaces.ts +7 -64
- package/src/core/beacon/signal-discovery.ts +237 -0
- package/src/core/beacon/singleton.ts +74 -94
- package/src/core/beacon/smt-beacon.ts +32 -49
- package/src/core/beacon/utils.ts +16 -13
- package/src/core/interfaces.ts +1 -9
- package/src/core/resolve.ts +116 -360
- package/src/core/types.ts +25 -8
- package/src/core/update.ts +90 -235
- package/src/did-btcr2.ts +131 -95
- package/src/index.ts +8 -1
- package/src/utils/appendix.ts +8 -22
- package/src/utils/did-document-builder.ts +5 -0
- package/src/utils/did-document.ts +41 -45
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
KeyBytes
|
|
10
10
|
} from '@did-btcr2/common';
|
|
11
11
|
import { CompressedSecp256k1PublicKey } from '@did-btcr2/keypair';
|
|
12
|
-
import {
|
|
12
|
+
import { DidDocument as W3CDidDocument, DidVerificationMethod as W3CDidVerificationMethod } from '@web5/dids';
|
|
13
13
|
import { BeaconService } from '../core/beacon/interfaces.js';
|
|
14
14
|
import { BeaconUtils } from '../core/beacon/utils.js';
|
|
15
15
|
import { Identifier } from '../core/identifier.js';
|
|
@@ -36,7 +36,10 @@ export type VerificationRelationships = {
|
|
|
36
36
|
capabilityDelegation?: Array<string | DidVerificationMethod>;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
/** Loose type for unvalidated DID document-like input objects. */
|
|
40
|
+
export type DidDocumentLike = Partial<Btcr2DidDocument>;
|
|
41
|
+
|
|
42
|
+
export interface Btcr2VerificationMethod extends W3CDidVerificationMethod {
|
|
40
43
|
id: string;
|
|
41
44
|
type: string;
|
|
42
45
|
controller: string;
|
|
@@ -50,14 +53,14 @@ export interface IDidVerificationMethod extends IIDidVerificationMethod {
|
|
|
50
53
|
* @type {DidVerificationMethod}
|
|
51
54
|
*
|
|
52
55
|
*/
|
|
53
|
-
export class DidVerificationMethod implements
|
|
56
|
+
export class DidVerificationMethod implements Btcr2VerificationMethod {
|
|
54
57
|
id: string;
|
|
55
58
|
type: string;
|
|
56
59
|
controller: string;
|
|
57
60
|
publicKeyMultibase: string;
|
|
58
61
|
secretKeyMultibase?: string | undefined;
|
|
59
62
|
|
|
60
|
-
constructor({ id, type, controller, publicKeyMultibase, secretKeyMultibase }:
|
|
63
|
+
constructor({ id, type, controller, publicKeyMultibase, secretKeyMultibase }: Btcr2VerificationMethod) {
|
|
61
64
|
this.id = id;
|
|
62
65
|
this.type = type;
|
|
63
66
|
this.controller = controller;
|
|
@@ -72,9 +75,9 @@ export class DidVerificationMethod implements IDidVerificationMethod {
|
|
|
72
75
|
|
|
73
76
|
/**
|
|
74
77
|
* BTCR2 DID Document Interface
|
|
75
|
-
* @interface
|
|
76
|
-
* @type {
|
|
77
|
-
* @extends {
|
|
78
|
+
* @interface Btcr2DidDocument
|
|
79
|
+
* @type {Btcr2DidDocument}
|
|
80
|
+
* @extends {W3CDidDocument}
|
|
78
81
|
* @property {string} id - The identifier of the DID Document.
|
|
79
82
|
* @property {Array<string>} [controller] - The controller of the DID Document.
|
|
80
83
|
* @property {Array<string | JSONObject>} ['@context'] - The context of the DID Document.
|
|
@@ -85,7 +88,7 @@ export class DidVerificationMethod implements IDidVerificationMethod {
|
|
|
85
88
|
* @property {Array<string | DidVerificationMethod>} [capabilityDelegation] - The capability delegation methods of the DID Document.
|
|
86
89
|
* @property {Array<BeaconService>} service - The services of the DID Document.
|
|
87
90
|
*/
|
|
88
|
-
export interface
|
|
91
|
+
export interface Btcr2DidDocument extends W3CDidDocument {
|
|
89
92
|
id: string;
|
|
90
93
|
controller?: Array<string>;
|
|
91
94
|
'@context'?: Array<string | JSONObject>;
|
|
@@ -101,7 +104,7 @@ export interface IDidDocument extends IIDidDocument {
|
|
|
101
104
|
* BTCR2 DID Document extends the DidDocument class adding helper methods and properties
|
|
102
105
|
* @class DidDocument
|
|
103
106
|
* @type {DidDocument}
|
|
104
|
-
* @implements {
|
|
107
|
+
* @implements {Btcr2DidDocument}
|
|
105
108
|
* @property {string} id - The identifier of the DID Document.
|
|
106
109
|
* @property {Array<string>} [controller] - The controller of the DID Document.
|
|
107
110
|
* @property {Array<string | JSONObject>} ['@context'] - The context of the DID Document.
|
|
@@ -112,7 +115,7 @@ export interface IDidDocument extends IIDidDocument {
|
|
|
112
115
|
* @property {Array<string | DidVerificationMethod>} [capabilityDelegation] - The capability delegation methods of the DID Document.
|
|
113
116
|
* @property {Array<BeaconService>} service - The services of the DID Document.
|
|
114
117
|
*/
|
|
115
|
-
export class DidDocument implements
|
|
118
|
+
export class DidDocument implements Btcr2DidDocument {
|
|
116
119
|
id: string;
|
|
117
120
|
controller?: Array<string>;
|
|
118
121
|
'@context'?: Array<string | JSONObject> = BTCR2_DID_DOCUMENT_CONTEXT;
|
|
@@ -124,7 +127,7 @@ export class DidDocument implements IDidDocument {
|
|
|
124
127
|
service: Array<BeaconService>;
|
|
125
128
|
deactivated?: boolean;
|
|
126
129
|
|
|
127
|
-
constructor(document:
|
|
130
|
+
constructor(document: Btcr2DidDocument) {
|
|
128
131
|
// Set the ID and ID type
|
|
129
132
|
const idType = document.id.includes('k')
|
|
130
133
|
? IdentifierTypes.KEY
|
|
@@ -218,7 +221,7 @@ export class DidDocument implements IDidDocument {
|
|
|
218
221
|
})
|
|
219
222
|
],
|
|
220
223
|
service
|
|
221
|
-
} as
|
|
224
|
+
} as Btcr2DidDocument;
|
|
222
225
|
return new DidDocument(document);
|
|
223
226
|
}
|
|
224
227
|
|
|
@@ -228,7 +231,7 @@ export class DidDocument implements IDidDocument {
|
|
|
228
231
|
* @returns {DidDocument} A new DidDocument.
|
|
229
232
|
*/
|
|
230
233
|
public static fromExternalIdentifier(data: ExternalData): DidDocument {
|
|
231
|
-
return new DidDocument(data as
|
|
234
|
+
return new DidDocument(data as Btcr2DidDocument);
|
|
232
235
|
}
|
|
233
236
|
|
|
234
237
|
|
|
@@ -251,7 +254,7 @@ export class DidDocument implements IDidDocument {
|
|
|
251
254
|
* @returns {boolean} True if the DID document is valid.
|
|
252
255
|
* @throws {DidDocumentError} If any validation check fails.
|
|
253
256
|
*/
|
|
254
|
-
public static isValid(didDocument:
|
|
257
|
+
public static isValid(didDocument: DidDocumentLike): boolean {
|
|
255
258
|
if (!this.isValidContext(didDocument?.['@context'])) {
|
|
256
259
|
throw new DidDocumentError('Invalid "@context"', INVALID_DID_DOCUMENT, didDocument);
|
|
257
260
|
}
|
|
@@ -276,7 +279,7 @@ export class DidDocument implements IDidDocument {
|
|
|
276
279
|
* @param {DidDocument['@context']} context The context to validate.
|
|
277
280
|
* @returns {boolean} True if the context is valid.
|
|
278
281
|
*/
|
|
279
|
-
private static isValidContext(context:
|
|
282
|
+
private static isValidContext(context: unknown): boolean {
|
|
280
283
|
if(!context) return false;
|
|
281
284
|
if(!Array.isArray(context)) return false;
|
|
282
285
|
if(!context.every(ctx => typeof ctx === 'string' && BTCR2_DID_DOCUMENT_CONTEXT.includes(ctx))) return false;
|
|
@@ -289,7 +292,8 @@ export class DidDocument implements IDidDocument {
|
|
|
289
292
|
* @param {string} id The id to validate.
|
|
290
293
|
* @returns {boolean} True if the id is valid.
|
|
291
294
|
*/
|
|
292
|
-
private static isValidId(id:
|
|
295
|
+
private static isValidId(id: unknown): boolean {
|
|
296
|
+
if (typeof id !== 'string') return false;
|
|
293
297
|
try {
|
|
294
298
|
Identifier.decode(id);
|
|
295
299
|
return true;
|
|
@@ -316,7 +320,7 @@ export class DidDocument implements IDidDocument {
|
|
|
316
320
|
* @param {DidVerificationMethod[]} verificationMethod The verification methods to validate.
|
|
317
321
|
* @returns {boolean} True if the verification methods are valid.
|
|
318
322
|
*/
|
|
319
|
-
private static isValidVerificationMethods(verificationMethod:
|
|
323
|
+
private static isValidVerificationMethods(verificationMethod: unknown): boolean {
|
|
320
324
|
return Array.isArray(verificationMethod) && verificationMethod.every(Appendix.isDidVerificationMethod);
|
|
321
325
|
}
|
|
322
326
|
|
|
@@ -326,7 +330,7 @@ export class DidDocument implements IDidDocument {
|
|
|
326
330
|
* @param {DidService[]} service The services to validate.
|
|
327
331
|
* @returns {boolean} True if the services are valid.
|
|
328
332
|
*/
|
|
329
|
-
private static isValidServices(service:
|
|
333
|
+
private static isValidServices(service: unknown): boolean {
|
|
330
334
|
return Array.isArray(service) && service.every(BeaconUtils.isBeaconService);
|
|
331
335
|
}
|
|
332
336
|
|
|
@@ -336,33 +340,25 @@ export class DidDocument implements IDidDocument {
|
|
|
336
340
|
* @param {DidDocument} didDocument The DID Document to validate.
|
|
337
341
|
* @returns {boolean} True if the verification relationships are valid.
|
|
338
342
|
*/
|
|
339
|
-
public static isValidVerificationRelationships(didDocument:
|
|
340
|
-
|
|
341
|
-
const possibleVerificationRelationships: (keyof DidDocument)[] = [
|
|
343
|
+
public static isValidVerificationRelationships(didDocument: DidDocumentLike): boolean {
|
|
344
|
+
const possibleVerificationRelationships = [
|
|
342
345
|
'authentication',
|
|
343
346
|
'assertionMethod',
|
|
344
347
|
'capabilityInvocation',
|
|
345
348
|
'capabilityDelegation'
|
|
346
|
-
];
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
const
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
didDocument[key] &&
|
|
360
|
-
// Check if the key is an array
|
|
361
|
-
Array.isArray(didDocument[key]) &&
|
|
362
|
-
// Check that every value in the array is a string or DidVerificationMethod
|
|
363
|
-
didDocument[key].every(
|
|
364
|
-
entry => typeof entry === 'string' || Appendix.isDidVerificationMethod(entry)
|
|
365
|
-
));
|
|
349
|
+
] as const;
|
|
350
|
+
|
|
351
|
+
const keys = Object.keys(didDocument);
|
|
352
|
+
const availableKeys = possibleVerificationRelationships.filter(key => keys.includes(key));
|
|
353
|
+
|
|
354
|
+
return availableKeys.every((key) => {
|
|
355
|
+
const value = didDocument[key];
|
|
356
|
+
return value &&
|
|
357
|
+
Array.isArray(value) &&
|
|
358
|
+
value.every(
|
|
359
|
+
(entry) => typeof entry === 'string' || Appendix.isDidVerificationMethod(entry)
|
|
360
|
+
);
|
|
361
|
+
});
|
|
366
362
|
}
|
|
367
363
|
|
|
368
364
|
/**
|
|
@@ -370,7 +366,7 @@ export class DidDocument implements IDidDocument {
|
|
|
370
366
|
* @returns {DidDocument} Validated DID Document.
|
|
371
367
|
* @throws {DidDocumentError} If the DID Document is invalid.
|
|
372
368
|
*/
|
|
373
|
-
public static validate(didDocument:
|
|
369
|
+
public static validate(didDocument: any): DidDocument {
|
|
374
370
|
// Validate the DID Document
|
|
375
371
|
if (didDocument.id === ID_PLACEHOLDER_VALUE) {
|
|
376
372
|
(didDocument as GenesisDocument).validateGenesis();
|
|
@@ -448,7 +444,7 @@ export class GenesisDocument extends DidDocument {
|
|
|
448
444
|
*/
|
|
449
445
|
public toDidDocument(did: string): DidDocument {
|
|
450
446
|
const stringThis = JSON.stringify(this).replaceAll(ID_PLACEHOLDER_VALUE, did);
|
|
451
|
-
const parseThis = JSON.parse(stringThis) as
|
|
447
|
+
const parseThis = JSON.parse(stringThis) as Btcr2DidDocument;
|
|
452
448
|
return new DidDocument(parseThis);
|
|
453
449
|
}
|
|
454
450
|
|
|
@@ -459,7 +455,7 @@ export class GenesisDocument extends DidDocument {
|
|
|
459
455
|
* @returns {GenesisDocument} The GenesisDocument representation of the DidDocument.
|
|
460
456
|
*/
|
|
461
457
|
public static fromDidDocument(didDocument: DidDocument): GenesisDocument {
|
|
462
|
-
const intermediateDocument = JSONUtils.cloneReplace(didDocument, DID_REGEX, ID_PLACEHOLDER_VALUE) as
|
|
458
|
+
const intermediateDocument = JSONUtils.cloneReplace(didDocument, DID_REGEX, ID_PLACEHOLDER_VALUE) as Btcr2DidDocument;
|
|
463
459
|
return new GenesisDocument(intermediateDocument);
|
|
464
460
|
}
|
|
465
461
|
|
|
@@ -518,6 +514,6 @@ export class GenesisDocument extends DidDocument {
|
|
|
518
514
|
* @returns {DidDocument} The created DidDocument.
|
|
519
515
|
*/
|
|
520
516
|
public static fromJSON(object: object | DidDocument): GenesisDocument {
|
|
521
|
-
return new GenesisDocument(object as
|
|
517
|
+
return new GenesisDocument(object as Btcr2DidDocument);
|
|
522
518
|
}
|
|
523
519
|
}
|