@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
package/dist/types/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './core/beacon/aggregation/cohort/index.js';
|
|
2
|
+
export * from './core/beacon/aggregation/cohort/status.js';
|
|
2
3
|
export * from './core/beacon/aggregation/cohort/messages/base.js';
|
|
3
4
|
export * from './core/beacon/aggregation/cohort/messages/constants.js';
|
|
4
5
|
export * from './core/beacon/aggregation/cohort/messages/index.js';
|
|
@@ -12,7 +13,6 @@ export * from './core/beacon/aggregation/cohort/messages/sign/authorization-requ
|
|
|
12
13
|
export * from './core/beacon/aggregation/cohort/messages/sign/nonce-contribution.js';
|
|
13
14
|
export * from './core/beacon/aggregation/cohort/messages/sign/request-signature.js';
|
|
14
15
|
export * from './core/beacon/aggregation/cohort/messages/sign/signature-authorization.js';
|
|
15
|
-
export * from './core/beacon/aggregation/cohort/status.js';
|
|
16
16
|
export * from './core/beacon/aggregation/communication/adapter/did-comm.js';
|
|
17
17
|
export * from './core/beacon/aggregation/communication/adapter/nostr.js';
|
|
18
18
|
export * from './core/beacon/aggregation/communication/error.js';
|
|
@@ -22,10 +22,12 @@ export * from './core/beacon/aggregation/coordinator.js';
|
|
|
22
22
|
export * from './core/beacon/aggregation/participant.js';
|
|
23
23
|
export * from './core/beacon/aggregation/session/index.js';
|
|
24
24
|
export * from './core/beacon/aggregation/session/status.js';
|
|
25
|
+
export * from './core/beacon/beacon.js';
|
|
25
26
|
export * from './core/beacon/cas-beacon.js';
|
|
26
27
|
export * from './core/beacon/error.js';
|
|
27
28
|
export * from './core/beacon/factory.js';
|
|
28
29
|
export * from './core/beacon/interfaces.js';
|
|
30
|
+
export * from './core/beacon/signal-discovery.js';
|
|
29
31
|
export * from './core/beacon/singleton.js';
|
|
30
32
|
export * from './core/beacon/smt-beacon.js';
|
|
31
33
|
export * from './core/beacon/utils.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mDAAmD,CAAC;AAClE,cAAc,wDAAwD,CAAC;AACvE,cAAc,oDAAoD,CAAC;AACnE,cAAc,gEAAgE,CAAC;AAC/E,cAAc,mEAAmE,CAAC;AAClF,cAAc,kEAAkE,CAAC;AACjF,cAAc,mEAAmE,CAAC;AAClF,cAAc,4DAA4D,CAAC;AAC3E,cAAc,oEAAoE,CAAC;AACnF,cAAc,yEAAyE,CAAC;AACxF,cAAc,sEAAsE,CAAC;AACrF,cAAc,qEAAqE,CAAC;AACpF,cAAc,2EAA2E,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2CAA2C,CAAC;AAC1D,cAAc,4CAA4C,CAAC;AAE3D,cAAc,mDAAmD,CAAC;AAClE,cAAc,wDAAwD,CAAC;AACvE,cAAc,oDAAoD,CAAC;AACnE,cAAc,gEAAgE,CAAC;AAC/E,cAAc,mEAAmE,CAAC;AAClF,cAAc,kEAAkE,CAAC;AACjF,cAAc,mEAAmE,CAAC;AAClF,cAAc,4DAA4D,CAAC;AAC3E,cAAc,oEAAoE,CAAC;AACnF,cAAc,yEAAyE,CAAC;AACxF,cAAc,sEAAsE,CAAC;AACrF,cAAc,qEAAqE,CAAC;AACpF,cAAc,2EAA2E,CAAC;AAE1F,cAAc,6DAA6D,CAAC;AAC5E,cAAc,0DAA0D,CAAC;AAEzE,cAAc,kDAAkD,CAAC;AACjE,cAAc,oDAAoD,CAAC;AACnE,cAAc,oDAAoD,CAAC;AAEnE,cAAc,0CAA0C,CAAC;AACzD,cAAc,0CAA0C,CAAC;AACzD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAE5D,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AAEvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,gBAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appendix.d.ts","sourceRoot":"","sources":["../../../src/utils/appendix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"appendix.d.ts","sourceRoot":"","sources":["../../../src/utils/appendix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EACL,WAAW,EAGX,UAAU,EACV,qBAAqB,EAEtB,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;GAKG;AACH,qBAAa,QAAQ;IACnB;;;;OAIG;WACW,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAMpE;;;;OAIG;WACW,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,qBAAqB;IAcjF;;;;OAIG;WACW,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU;IAW3D;;;;;OAKG;WACW,sBAAsB,CAAC,WAAW,EAAE,WAAW,GAAG,qBAAqB,EAAE;IAgBvF;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc;IAU/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;WACW,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc;IA+CrE;;;;OAIG;WACU,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAW7E"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { BeaconService } from '../core/beacon/interfaces.js';
|
|
2
2
|
import { DidDocument, DidVerificationMethod } from './did-document.js';
|
|
3
|
+
/**
|
|
4
|
+
* A builder class for constructing DID Documents.
|
|
5
|
+
* @type {DidDocumentBuilder}
|
|
6
|
+
* @class DidDocumentBuilder
|
|
7
|
+
*/
|
|
3
8
|
export declare class DidDocumentBuilder {
|
|
4
9
|
private document;
|
|
5
10
|
constructor(initialDocument: Partial<DidDocument>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"did-document-builder.d.ts","sourceRoot":"","sources":["../../../src/utils/did-document-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEvE,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAA4B;gBAEhC,eAAe,EAAE,OAAO,CAAC,WAAW,CAAC;IAYjD,cAAc,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;IAOhD,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,GAAG,qBAAqB,CAAC,GAAG,IAAI;IAO/E,mBAAmB,CAAC,eAAe,EAAE,KAAK,CAAC,MAAM,GAAG,qBAAqB,CAAC,GAAG,IAAI;IAOjF,wBAAwB,CAAC,oBAAoB,EAAE,KAAK,CAAC,MAAM,GAAG,qBAAqB,CAAC,GAAG,IAAI;IAO3F,wBAAwB,CAAC,oBAAoB,EAAE,KAAK,CAAC,MAAM,GAAG,qBAAqB,CAAC,GAAG,IAAI;IAO3F,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI;IAOhD,KAAK,IAAI,WAAW;CAWrB"}
|
|
1
|
+
{"version":3,"file":"did-document-builder.d.ts","sourceRoot":"","sources":["../../../src/utils/did-document-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEvE;;;;GAIG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAA4B;gBAEhC,eAAe,EAAE,OAAO,CAAC,WAAW,CAAC;IAYjD,cAAc,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;IAOhD,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,GAAG,qBAAqB,CAAC,GAAG,IAAI;IAO/E,mBAAmB,CAAC,eAAe,EAAE,KAAK,CAAC,MAAM,GAAG,qBAAqB,CAAC,GAAG,IAAI;IAOjF,wBAAwB,CAAC,oBAAoB,EAAE,KAAK,CAAC,MAAM,GAAG,qBAAqB,CAAC,GAAG,IAAI;IAO3F,wBAAwB,CAAC,oBAAoB,EAAE,KAAK,CAAC,MAAM,GAAG,qBAAqB,CAAC,GAAG,IAAI;IAO3F,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI;IAOhD,KAAK,IAAI,WAAW;CAWrB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JSONObject, KeyBytes } from '@did-btcr2/common';
|
|
2
|
-
import { DidDocument as
|
|
2
|
+
import { DidDocument as W3CDidDocument, DidVerificationMethod as W3CDidVerificationMethod } from '@web5/dids';
|
|
3
3
|
import { BeaconService } from '../core/beacon/interfaces.js';
|
|
4
4
|
export declare const ID_PLACEHOLDER_VALUE = "did:btcr2:_";
|
|
5
5
|
export declare const BECH32M_CHARS = "";
|
|
@@ -19,7 +19,9 @@ export type VerificationRelationships = {
|
|
|
19
19
|
capabilityInvocation?: Array<string | DidVerificationMethod>;
|
|
20
20
|
capabilityDelegation?: Array<string | DidVerificationMethod>;
|
|
21
21
|
};
|
|
22
|
-
|
|
22
|
+
/** Loose type for unvalidated DID document-like input objects. */
|
|
23
|
+
export type DidDocumentLike = Partial<Btcr2DidDocument>;
|
|
24
|
+
export interface Btcr2VerificationMethod extends W3CDidVerificationMethod {
|
|
23
25
|
id: string;
|
|
24
26
|
type: string;
|
|
25
27
|
controller: string;
|
|
@@ -32,19 +34,19 @@ export interface IDidVerificationMethod extends IIDidVerificationMethod {
|
|
|
32
34
|
* @type {DidVerificationMethod}
|
|
33
35
|
*
|
|
34
36
|
*/
|
|
35
|
-
export declare class DidVerificationMethod implements
|
|
37
|
+
export declare class DidVerificationMethod implements Btcr2VerificationMethod {
|
|
36
38
|
id: string;
|
|
37
39
|
type: string;
|
|
38
40
|
controller: string;
|
|
39
41
|
publicKeyMultibase: string;
|
|
40
42
|
secretKeyMultibase?: string | undefined;
|
|
41
|
-
constructor({ id, type, controller, publicKeyMultibase, secretKeyMultibase }:
|
|
43
|
+
constructor({ id, type, controller, publicKeyMultibase, secretKeyMultibase }: Btcr2VerificationMethod);
|
|
42
44
|
}
|
|
43
45
|
/**
|
|
44
46
|
* BTCR2 DID Document Interface
|
|
45
|
-
* @interface
|
|
46
|
-
* @type {
|
|
47
|
-
* @extends {
|
|
47
|
+
* @interface Btcr2DidDocument
|
|
48
|
+
* @type {Btcr2DidDocument}
|
|
49
|
+
* @extends {W3CDidDocument}
|
|
48
50
|
* @property {string} id - The identifier of the DID Document.
|
|
49
51
|
* @property {Array<string>} [controller] - The controller of the DID Document.
|
|
50
52
|
* @property {Array<string | JSONObject>} ['@context'] - The context of the DID Document.
|
|
@@ -55,7 +57,7 @@ export declare class DidVerificationMethod implements IDidVerificationMethod {
|
|
|
55
57
|
* @property {Array<string | DidVerificationMethod>} [capabilityDelegation] - The capability delegation methods of the DID Document.
|
|
56
58
|
* @property {Array<BeaconService>} service - The services of the DID Document.
|
|
57
59
|
*/
|
|
58
|
-
export interface
|
|
60
|
+
export interface Btcr2DidDocument extends W3CDidDocument {
|
|
59
61
|
id: string;
|
|
60
62
|
controller?: Array<string>;
|
|
61
63
|
'@context'?: Array<string | JSONObject>;
|
|
@@ -70,7 +72,7 @@ export interface IDidDocument extends IIDidDocument {
|
|
|
70
72
|
* BTCR2 DID Document extends the DidDocument class adding helper methods and properties
|
|
71
73
|
* @class DidDocument
|
|
72
74
|
* @type {DidDocument}
|
|
73
|
-
* @implements {
|
|
75
|
+
* @implements {Btcr2DidDocument}
|
|
74
76
|
* @property {string} id - The identifier of the DID Document.
|
|
75
77
|
* @property {Array<string>} [controller] - The controller of the DID Document.
|
|
76
78
|
* @property {Array<string | JSONObject>} ['@context'] - The context of the DID Document.
|
|
@@ -81,7 +83,7 @@ export interface IDidDocument extends IIDidDocument {
|
|
|
81
83
|
* @property {Array<string | DidVerificationMethod>} [capabilityDelegation] - The capability delegation methods of the DID Document.
|
|
82
84
|
* @property {Array<BeaconService>} service - The services of the DID Document.
|
|
83
85
|
*/
|
|
84
|
-
export declare class DidDocument implements
|
|
86
|
+
export declare class DidDocument implements Btcr2DidDocument {
|
|
85
87
|
id: string;
|
|
86
88
|
controller?: Array<string>;
|
|
87
89
|
'@context'?: Array<string | JSONObject>;
|
|
@@ -92,7 +94,7 @@ export declare class DidDocument implements IDidDocument {
|
|
|
92
94
|
capabilityDelegation?: Array<string | DidVerificationMethod>;
|
|
93
95
|
service: Array<BeaconService>;
|
|
94
96
|
deactivated?: boolean;
|
|
95
|
-
constructor(document:
|
|
97
|
+
constructor(document: Btcr2DidDocument);
|
|
96
98
|
/**
|
|
97
99
|
* Convert the DidDocument to a JSON object.
|
|
98
100
|
* @returns {DidDocument} The JSON representation of the DidDocument.
|
|
@@ -122,7 +124,7 @@ export declare class DidDocument implements IDidDocument {
|
|
|
122
124
|
* @returns {boolean} True if the DID document is valid.
|
|
123
125
|
* @throws {DidDocumentError} If any validation check fails.
|
|
124
126
|
*/
|
|
125
|
-
static isValid(didDocument:
|
|
127
|
+
static isValid(didDocument: DidDocumentLike): boolean;
|
|
126
128
|
/**
|
|
127
129
|
* Validates that "@context" exists and includes correct values.
|
|
128
130
|
* @private
|
|
@@ -163,13 +165,13 @@ export declare class DidDocument implements IDidDocument {
|
|
|
163
165
|
* @param {DidDocument} didDocument The DID Document to validate.
|
|
164
166
|
* @returns {boolean} True if the verification relationships are valid.
|
|
165
167
|
*/
|
|
166
|
-
static isValidVerificationRelationships(didDocument:
|
|
168
|
+
static isValidVerificationRelationships(didDocument: DidDocumentLike): boolean;
|
|
167
169
|
/**
|
|
168
170
|
* Validate the DID Document
|
|
169
171
|
* @returns {DidDocument} Validated DID Document.
|
|
170
172
|
* @throws {DidDocumentError} If the DID Document is invalid.
|
|
171
173
|
*/
|
|
172
|
-
static validate(didDocument:
|
|
174
|
+
static validate(didDocument: any): DidDocument;
|
|
173
175
|
/**
|
|
174
176
|
* Validate the GenesisDocument.
|
|
175
177
|
* @returns {boolean} True if the GenesisDocument is valid.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"did-document.d.ts","sourceRoot":"","sources":["../../../src/utils/did-document.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,UAAU,EAEV,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAE3B,OAAO,
|
|
1
|
+
{"version":3,"file":"did-document.d.ts","sourceRoot":"","sources":["../../../src/utils/did-document.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@did-btcr2/method",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Javascript/TypeScript reference implementation of did:btcr2 method, a censorship resistant DID Method using the Bitcoin blockchain as a Verifiable Data Registry to announce changes to the DID document. Core package of the did-btcr2-js monorepo.",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -83,11 +83,11 @@
|
|
|
83
83
|
"multiformats": "^13.3.1",
|
|
84
84
|
"nostr-tools": "^2.15.0",
|
|
85
85
|
"tiny-secp256k1": "^2.2.3",
|
|
86
|
+
"@did-btcr2/cryptosuite": "5.0.0",
|
|
86
87
|
"@did-btcr2/bitcoin": "0.3.4",
|
|
87
|
-
"@did-btcr2/
|
|
88
|
+
"@did-btcr2/kms": "0.2.0",
|
|
88
89
|
"@did-btcr2/common": "3.1.0",
|
|
89
|
-
"@did-btcr2/
|
|
90
|
-
"@did-btcr2/keypair": "0.8.0"
|
|
90
|
+
"@did-btcr2/keypair": "0.9.0"
|
|
91
91
|
},
|
|
92
92
|
"devDependencies": {
|
|
93
93
|
"@eslint/js": "^9.22.0",
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { KeyBytes } from '@did-btcr2/common';
|
|
2
|
+
import { BitcoinNetworkConnection } from '../../../../bitcoin/dist/types/bitcoin.js';
|
|
3
|
+
import { SignedBTCR2Update } from '../../../../cryptosuite/dist/types/data-integrity-proof/interface.js';
|
|
4
|
+
import { SidecarData } from '../types.js';
|
|
5
|
+
import { BeaconService, BeaconSignal, BlockMetadata } from './interfaces.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Abstract base class for all BTCR2 Beacon types.
|
|
9
|
+
* A Beacon is a service listed in a BTCR2 DID document that informs resolvers
|
|
10
|
+
* how to find authentic updates to the DID.
|
|
11
|
+
*
|
|
12
|
+
* Beacons are lightweight typed wrappers around a {@link BeaconService} configuration.
|
|
13
|
+
* Dependencies (signals, sidecar data, bitcoin connection) are passed as method
|
|
14
|
+
* parameters rather than held as instance state.
|
|
15
|
+
*
|
|
16
|
+
* Use {@link BeaconFactory.establish} to create typed instances from service config.
|
|
17
|
+
*
|
|
18
|
+
* @abstract
|
|
19
|
+
* @class Beacon
|
|
20
|
+
* @type {Beacon}
|
|
21
|
+
*/
|
|
22
|
+
export abstract class Beacon {
|
|
23
|
+
/**
|
|
24
|
+
* The Beacon service configuration parsed from the DID Document.
|
|
25
|
+
*/
|
|
26
|
+
readonly service: BeaconService;
|
|
27
|
+
|
|
28
|
+
constructor(service: BeaconService) {
|
|
29
|
+
this.service = service;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Processes an array of Beacon Signals to extract BTCR2 Signed Updates.
|
|
34
|
+
* Used during the resolve path.
|
|
35
|
+
* @param {Array<BeaconSignal>} signals The beacon signals discovered on-chain.
|
|
36
|
+
* @param {SidecarData} sidecar The processed sidecar data containing update/CAS/SMT maps.
|
|
37
|
+
* @returns {Promise<Array<[SignedBTCR2Update, BlockMetadata]>>} The updates announced by the signals.
|
|
38
|
+
*/
|
|
39
|
+
abstract processSignals(
|
|
40
|
+
signals: Array<BeaconSignal>,
|
|
41
|
+
sidecar: SidecarData,
|
|
42
|
+
): Promise<Array<[SignedBTCR2Update, BlockMetadata]>>;
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Broadcasts a signed update as a Beacon Signal to the Bitcoin network.
|
|
47
|
+
* Used during the update path.
|
|
48
|
+
* @param {SignedBTCR2Update} signedUpdate The signed BTCR2 update to broadcast.
|
|
49
|
+
* @param {KeyBytes} secretKey The secret key for signing the Bitcoin transaction.
|
|
50
|
+
* @param {BitcoinNetworkConnection} bitcoin The Bitcoin network connection.
|
|
51
|
+
* @returns {Promise<SignedBTCR2Update>} The signed update that was broadcast.
|
|
52
|
+
*/
|
|
53
|
+
abstract broadcastSignal(
|
|
54
|
+
signedUpdate: SignedBTCR2Update,
|
|
55
|
+
secretKey: KeyBytes,
|
|
56
|
+
bitcoin: BitcoinNetworkConnection
|
|
57
|
+
): Promise<SignedBTCR2Update>;
|
|
58
|
+
}
|
|
@@ -1,67 +1,53 @@
|
|
|
1
1
|
import { BitcoinNetworkConnection } from '@did-btcr2/bitcoin';
|
|
2
|
-
import {
|
|
2
|
+
import { KeyBytes } from '@did-btcr2/common';
|
|
3
|
+
import { SignedBTCR2Update } from '@did-btcr2/cryptosuite';
|
|
3
4
|
import { SidecarData } from '../types.js';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
5
|
+
import { Beacon } from './beacon.js';
|
|
6
|
+
import { CASBeaconError } from './error.js';
|
|
7
|
+
import { BeaconService, BeaconSignal, BlockMetadata } from './interfaces.js';
|
|
6
8
|
|
|
7
9
|
/**
|
|
8
10
|
* Implements {@link https://dcdpr.github.io/did-btcr2/terminology.html#cas-beacon | CAS Beacon}.
|
|
9
|
-
*
|
|
10
11
|
* @class CASBeacon
|
|
11
12
|
* @type {CASBeacon}
|
|
12
|
-
* @extends {
|
|
13
|
+
* @extends {Beacon}
|
|
13
14
|
*/
|
|
14
|
-
export class CASBeacon extends
|
|
15
|
+
export class CASBeacon extends Beacon {
|
|
15
16
|
/**
|
|
16
17
|
* Creates an instance of CASBeacon.
|
|
17
18
|
* @param {BeaconService} service The service of the Beacon.
|
|
18
|
-
* @param {?BeaconSidecarData} [sidecar] The sidecar data of the Beacon.
|
|
19
19
|
*/
|
|
20
|
-
constructor(
|
|
21
|
-
service:
|
|
22
|
-
signals: Array<BeaconSignal>,
|
|
23
|
-
sidecar: SidecarData,
|
|
24
|
-
bitcoin?: BitcoinNetworkConnection
|
|
25
|
-
) {
|
|
26
|
-
super({ ...service, type: 'CASBeacon' }, signals, sidecar, bitcoin);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Establish a CASBeacon instance based on the provided service and sidecar data.
|
|
31
|
-
* @param {BeaconService} service - The beacon service configuration.
|
|
32
|
-
* @param {SidecarData} sidecar - The sidecar data.
|
|
33
|
-
* @returns {CASBeacon} The established CASBeacon instance.
|
|
34
|
-
*/
|
|
35
|
-
static establish(service: BeaconService, signals: Array<BeaconSignal>, sidecar: SidecarData): CASBeacon {
|
|
36
|
-
return new CASBeacon(service, signals, sidecar);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* TODO: Figure out if this is necessary or not.
|
|
41
|
-
* @param {HexString} updateHash The hash of the update to generate the signal for.
|
|
42
|
-
* @returns {BeaconSignal} The generated signal.
|
|
43
|
-
* @throws {MethodError} if the signal is invalid.
|
|
44
|
-
*/
|
|
45
|
-
generateSignal(updateHash: HexString): BeaconSignal {
|
|
46
|
-
throw new Error('Method not implemented.' + updateHash);
|
|
20
|
+
constructor(service: BeaconService) {
|
|
21
|
+
super({ ...service, type: 'CASBeacon' });
|
|
47
22
|
}
|
|
48
23
|
|
|
49
24
|
/**
|
|
50
25
|
* Implements {@link https://dcdpr.github.io/did-btcr2/operations/resolve.html#process-cas-beacon | 7.2.e.1 Process CAS Beacon}.
|
|
51
|
-
* @
|
|
52
|
-
* @
|
|
26
|
+
* @param {Array<BeaconSignal>} signals The array of Beacon Signals to process.
|
|
27
|
+
* @param {SidecarData} sidecar The sidecar data associated with the CAS Beacon.
|
|
28
|
+
* @returns {Promise<Array<[SignedBTCR2Update, BlockMetadata]>>} The processed signals.
|
|
29
|
+
* @throws {CASBeaconError} if processing fails.
|
|
53
30
|
*/
|
|
54
|
-
processSignals(
|
|
55
|
-
|
|
31
|
+
processSignals(
|
|
32
|
+
signals: Array<BeaconSignal>,
|
|
33
|
+
sidecar: SidecarData
|
|
34
|
+
): Promise<Array<[SignedBTCR2Update, BlockMetadata]>> {
|
|
35
|
+
throw new CASBeaconError('Method not implemented.', `METHOD_NOT_IMPLEMENTED`, { signals, sidecar });
|
|
56
36
|
}
|
|
57
37
|
|
|
58
38
|
/**
|
|
59
|
-
*
|
|
60
|
-
* @param {
|
|
61
|
-
* @
|
|
62
|
-
* @
|
|
39
|
+
* Broadcast CAS Beacon signal to the Bitcoin network.
|
|
40
|
+
* @param {SignedBTCR2Update} signedUpdate The signed BTCR2 update to broadcast.
|
|
41
|
+
* @param {KeyBytes} secretKey The secret key for signing the Bitcoin transaction.
|
|
42
|
+
* @param {BitcoinNetworkConnection} bitcoin The Bitcoin network connection.
|
|
43
|
+
* @return {Promise<SignedBTCR2Update>} The signed update that was broadcasted.
|
|
44
|
+
* @throws {CASBeaconError} if broadcasting fails.
|
|
63
45
|
*/
|
|
64
|
-
async broadcastSignal(
|
|
65
|
-
|
|
46
|
+
async broadcastSignal(
|
|
47
|
+
signedUpdate: SignedBTCR2Update,
|
|
48
|
+
secretKey: KeyBytes,
|
|
49
|
+
bitcoin: BitcoinNetworkConnection
|
|
50
|
+
): Promise<SignedBTCR2Update> {
|
|
51
|
+
throw new CASBeaconError('Method not implemented.', `METHOD_NOT_IMPLEMENTED`, {signedUpdate, secretKey, bitcoin});
|
|
66
52
|
}
|
|
67
53
|
}
|
package/src/core/beacon/error.ts
CHANGED
|
@@ -18,7 +18,6 @@ export class BeaconParticipantError extends MethodError {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
|
|
22
21
|
export class SingletonBeaconError extends MethodError {
|
|
23
22
|
constructor(message: string, type: string = 'SingletonBeaconError', data?: Record<string, any>) {
|
|
24
23
|
super(message, type, data);
|
|
@@ -31,14 +30,14 @@ export class AggregateBeaconError extends MethodError {
|
|
|
31
30
|
}
|
|
32
31
|
}
|
|
33
32
|
|
|
34
|
-
export class
|
|
35
|
-
constructor(message: string, type: string = '
|
|
33
|
+
export class CASBeaconError extends MethodError {
|
|
34
|
+
constructor(message: string, type: string = 'CASBeaconError', data?: Record<string, any>) {
|
|
36
35
|
super(message, type, data);
|
|
37
36
|
}
|
|
38
37
|
}
|
|
39
38
|
|
|
40
|
-
export class
|
|
41
|
-
constructor(message: string, type: string = '
|
|
39
|
+
export class SMTBeaconError extends MethodError {
|
|
40
|
+
constructor(message: string, type: string = 'SMTBeaconError', data?: Record<string, any>) {
|
|
42
41
|
super(message, type, data);
|
|
43
42
|
}
|
|
44
|
-
}
|
|
43
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MethodError } from '@did-btcr2/common';
|
|
2
|
-
import {
|
|
2
|
+
import { Beacon } from './beacon.js';
|
|
3
3
|
import { CASBeacon } from './cas-beacon.js';
|
|
4
|
-
import {
|
|
4
|
+
import { BeaconService } from './interfaces.js';
|
|
5
5
|
import { SingletonBeacon } from './singleton.js';
|
|
6
6
|
import { SMTBeacon } from './smt-beacon.js';
|
|
7
7
|
|
|
@@ -13,19 +13,17 @@ import { SMTBeacon } from './smt-beacon.js';
|
|
|
13
13
|
export class BeaconFactory {
|
|
14
14
|
/**
|
|
15
15
|
* Establish a Beacon instance based on the provided service and optional sidecar data.
|
|
16
|
-
* @param {BeaconService} service
|
|
17
|
-
* @param {Array<BeaconSignal>} signals - The array of beacon signals.
|
|
18
|
-
* @param {SidecarData} sidecar - The sidecar data associated with the beacon.
|
|
16
|
+
* @param {BeaconService} service The beacon service configuration.
|
|
19
17
|
* @returns {Beacon} The established Beacon instance.
|
|
20
18
|
*/
|
|
21
|
-
static establish(service: BeaconService
|
|
19
|
+
static establish(service: BeaconService): Beacon {
|
|
22
20
|
switch (service.type) {
|
|
23
21
|
case 'SingletonBeacon':
|
|
24
|
-
return new SingletonBeacon(service
|
|
22
|
+
return new SingletonBeacon(service);
|
|
25
23
|
case 'CASBeacon':
|
|
26
|
-
return new CASBeacon(service
|
|
24
|
+
return new CASBeacon(service);
|
|
27
25
|
case 'SMTBeacon':
|
|
28
|
-
return new SMTBeacon(service
|
|
26
|
+
return new SMTBeacon(service);
|
|
29
27
|
default:
|
|
30
28
|
throw new MethodError('Invalid Beacon Type', 'INVALID_BEACON_ERROR', service);
|
|
31
29
|
}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { DidServiceEndpoint, DidService
|
|
4
|
-
import { SidecarData } from '../types.js';
|
|
5
|
-
import { BTCR2SignedUpdate } from '@did-btcr2/cryptosuite';
|
|
1
|
+
import { RawTransactionRest, RawTransactionV2 } from '@did-btcr2/bitcoin';
|
|
2
|
+
import { UnixTimestamp } from '@did-btcr2/common';
|
|
3
|
+
import { DidServiceEndpoint, DidService } from '@web5/dids';
|
|
6
4
|
|
|
7
5
|
/**
|
|
8
|
-
* Represents a Beacon Service, which extends
|
|
6
|
+
* Represents a Beacon Service, which extends a W3C DID Service by setting serviceEndpoint
|
|
7
|
+
* as a single DidServiceEndpoint.
|
|
9
8
|
* @interface BeaconService
|
|
10
|
-
* @extends
|
|
9
|
+
* @extends DidService
|
|
11
10
|
*/
|
|
12
|
-
export interface BeaconService extends
|
|
11
|
+
export interface BeaconService extends DidService {
|
|
13
12
|
serviceEndpoint: DidServiceEndpoint;
|
|
14
13
|
}
|
|
15
14
|
|
|
@@ -65,60 +64,4 @@ export interface BeaconSignal {
|
|
|
65
64
|
* Metadata about the block containing the Beacon Signal.
|
|
66
65
|
*/
|
|
67
66
|
blockMetadata: BlockMetadata;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Abstract class representing an AggregateBeacon.
|
|
72
|
-
* @abstract
|
|
73
|
-
* @class AggregateBeacon
|
|
74
|
-
* @type {AggregateBeacon}
|
|
75
|
-
*/
|
|
76
|
-
export abstract class AggregateBeacon {
|
|
77
|
-
/**
|
|
78
|
-
* The Beacon service object parsed from the DID Document.
|
|
79
|
-
*/
|
|
80
|
-
service: BeaconService;
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* The array of Beacon Signals associated with this Beacon service.
|
|
84
|
-
*/
|
|
85
|
-
signals: Array<BeaconSignal>;
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* The sidecar data associated with this Beacon service.
|
|
89
|
-
* TODO: Make this more specific to Beacon type.
|
|
90
|
-
*/
|
|
91
|
-
sidecar: SidecarData;
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* The Bitcoin network connection associated with this Beacon service.
|
|
95
|
-
*/
|
|
96
|
-
bitcoin: BitcoinNetworkConnection;
|
|
97
|
-
|
|
98
|
-
constructor(
|
|
99
|
-
service: BeaconService,
|
|
100
|
-
signals: Array<BeaconSignal>,
|
|
101
|
-
sidecar: SidecarData,
|
|
102
|
-
bitcoin?: BitcoinNetworkConnection
|
|
103
|
-
) {
|
|
104
|
-
this.service = service;
|
|
105
|
-
this.signals = signals;
|
|
106
|
-
this.sidecar = sidecar;
|
|
107
|
-
this.bitcoin = bitcoin!;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Generates an unsigned update in a Beacon Signal (implemented by subclasses).
|
|
112
|
-
*/
|
|
113
|
-
abstract generateSignal(updateHash: HexString): BeaconSignal;
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Processes a Beacon Signal (implemented by subclasses).
|
|
117
|
-
*/
|
|
118
|
-
abstract processSignals(): Promise<Array<[BTCR2SignedUpdate, BlockMetadata]>>;
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Broadcasts a signed update in a Beacon Signal (implemented by subclasses).
|
|
122
|
-
*/
|
|
123
|
-
abstract broadcastSignal(updateHash: HexString): Promise<HexString>;
|
|
124
67
|
}
|