@did-btcr2/api 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/browser.js +149910 -127351
- package/dist/browser.mjs +149186 -126627
- package/dist/cjs/api.js +210 -150
- package/dist/cjs/api.js.map +1 -1
- package/dist/cjs/bitcoin.js +110 -0
- package/dist/cjs/bitcoin.js.map +1 -0
- package/dist/cjs/cas.js +90 -0
- package/dist/cjs/cas.js.map +1 -0
- package/dist/cjs/crypto.js +425 -0
- package/dist/cjs/crypto.js.map +1 -0
- package/dist/cjs/did.js +70 -0
- package/dist/cjs/did.js.map +1 -0
- package/dist/cjs/helpers.js +28 -0
- package/dist/cjs/helpers.js.map +1 -0
- package/dist/cjs/index.js +12 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/kms.js +73 -0
- package/dist/cjs/kms.js.map +1 -0
- package/dist/cjs/method.js +262 -0
- package/dist/cjs/method.js.map +1 -0
- package/dist/cjs/types.js +2 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/api.js +210 -150
- package/dist/esm/api.js.map +1 -1
- package/dist/esm/bitcoin.js +110 -0
- package/dist/esm/bitcoin.js.map +1 -0
- package/dist/esm/cas.js +90 -0
- package/dist/esm/cas.js.map +1 -0
- package/dist/esm/crypto.js +425 -0
- package/dist/esm/crypto.js.map +1 -0
- package/dist/esm/did.js +70 -0
- package/dist/esm/did.js.map +1 -0
- package/dist/esm/helpers.js +28 -0
- package/dist/esm/helpers.js.map +1 -0
- package/dist/esm/index.js +12 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/kms.js +73 -0
- package/dist/esm/kms.js.map +1 -0
- package/dist/esm/method.js +262 -0
- package/dist/esm/method.js.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/types/api.d.ts +107 -97
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/bitcoin.d.ts +64 -0
- package/dist/types/bitcoin.d.ts.map +1 -0
- package/dist/types/cas.d.ts +70 -0
- package/dist/types/cas.d.ts.map +1 -0
- package/dist/types/crypto.d.ts +310 -0
- package/dist/types/crypto.d.ts.map +1 -0
- package/dist/types/did.d.ts +51 -0
- package/dist/types/did.d.ts.map +1 -0
- package/dist/types/helpers.d.ts +10 -0
- package/dist/types/helpers.d.ts.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/kms.d.ts +49 -0
- package/dist/types/kms.d.ts.map +1 -0
- package/dist/types/method.d.ts +117 -0
- package/dist/types/method.d.ts.map +1 -0
- package/dist/types/types.d.ts +128 -0
- package/dist/types/types.d.ts.map +1 -0
- package/package.json +7 -6
- package/src/api.ts +246 -262
- package/src/bitcoin.ts +129 -0
- package/src/cas.ts +121 -0
- package/src/crypto.ts +525 -0
- package/src/did.ts +75 -0
- package/src/helpers.ts +35 -0
- package/src/index.ts +37 -1
- package/src/kms.ts +95 -0
- package/src/method.ts +331 -0
- package/src/types.ts +122 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import type { HttpExecutor, NetworkName, RestConfig, RpcConfig } from '@did-btcr2/bitcoin';
|
|
2
|
+
import type { KeyManager } from '@did-btcr2/kms';
|
|
3
|
+
import type { Btcr2DidDocument } from '@did-btcr2/method';
|
|
4
|
+
import type { DidResolutionResult } from '@web5/dids';
|
|
5
|
+
import type { CasConfig } from './cas.js';
|
|
6
|
+
/**
|
|
7
|
+
* Pluggable logger interface. All methods are optional-call; the default
|
|
8
|
+
* implementation is a silent no-op.
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
export type Logger = {
|
|
12
|
+
debug(message: string, ...args: unknown[]): void;
|
|
13
|
+
info(message: string, ...args: unknown[]): void;
|
|
14
|
+
warn(message: string, ...args: unknown[]): void;
|
|
15
|
+
error(message: string, ...args: unknown[]): void;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* The two supported DID identifier types.
|
|
19
|
+
*
|
|
20
|
+
* Note: the upstream `DidCreateOptions.idType` is typed as `string` rather
|
|
21
|
+
* than a union. This local alias provides compile-time safety at the API
|
|
22
|
+
* facade level. Upstream runtime validation in `Identifier.encode()` still
|
|
23
|
+
* catches invalid values.
|
|
24
|
+
* @public
|
|
25
|
+
*/
|
|
26
|
+
export type IdType = 'KEY' | 'EXTERNAL';
|
|
27
|
+
/**
|
|
28
|
+
* A branded string representing a DID identifier (e.g. `did:btcr2:k1q...`).
|
|
29
|
+
* Use branded types to prevent accidentally passing a txid where a DID is
|
|
30
|
+
* expected, or vice versa, at compile time.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* const did = api.generateDid().did as DidString;
|
|
35
|
+
* api.resolveDid(did); // OK
|
|
36
|
+
* api.btc.getTransaction(did); // Type error — DidString is not TxId
|
|
37
|
+
* ```
|
|
38
|
+
* @public
|
|
39
|
+
*/
|
|
40
|
+
export type DidString = string & {
|
|
41
|
+
readonly __brand: 'DidString';
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* A branded string representing a Bitcoin transaction ID (64-char hex).
|
|
45
|
+
* @public
|
|
46
|
+
*/
|
|
47
|
+
export type TxId = string & {
|
|
48
|
+
readonly __brand: 'TxId';
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Result of a DID resolution attempt. Wraps the standard
|
|
52
|
+
* {@link DidResolutionResult} with a discriminated `ok` flag for ergonomic
|
|
53
|
+
* pattern matching without exception handling.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```ts
|
|
57
|
+
* const result = await api.tryResolveDid(did);
|
|
58
|
+
* if (result.ok) {
|
|
59
|
+
* console.log(result.document);
|
|
60
|
+
* } else {
|
|
61
|
+
* console.log(result.error, result.errorMessage);
|
|
62
|
+
* }
|
|
63
|
+
* ```
|
|
64
|
+
* @public
|
|
65
|
+
*/
|
|
66
|
+
export type ResolutionResult = {
|
|
67
|
+
ok: true;
|
|
68
|
+
document: Btcr2DidDocument;
|
|
69
|
+
metadata: DidResolutionResult['didDocumentMetadata'];
|
|
70
|
+
raw: DidResolutionResult;
|
|
71
|
+
} | {
|
|
72
|
+
ok: false;
|
|
73
|
+
error: string;
|
|
74
|
+
errorMessage?: string;
|
|
75
|
+
raw: DidResolutionResult;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Bitcoin API configuration options.
|
|
79
|
+
* The `network` field is required and determines default REST/RPC endpoints.
|
|
80
|
+
* Optional `rest` and `rpc` fields override individual endpoints on top of
|
|
81
|
+
* the network defaults.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```ts
|
|
85
|
+
* // Use regtest defaults (localhost Polar + Esplora)
|
|
86
|
+
* { network: 'regtest' }
|
|
87
|
+
*
|
|
88
|
+
* // Use testnet4 with a custom REST endpoint
|
|
89
|
+
* { network: 'testnet4', rest: { host: 'https://my-mempool.example/api' } }
|
|
90
|
+
*
|
|
91
|
+
* // Use regtest with custom RPC credentials, default REST
|
|
92
|
+
* { network: 'regtest', rpc: { host: 'http://mynode:18443', username: 'u', password: 'p' } }
|
|
93
|
+
* ```
|
|
94
|
+
* @public
|
|
95
|
+
*/
|
|
96
|
+
export type BitcoinApiConfig = {
|
|
97
|
+
/** Bitcoin network name (e.g., 'regtest', 'testnet4', 'bitcoin'). */
|
|
98
|
+
network: NetworkName;
|
|
99
|
+
/** Override REST client settings on top of network defaults. */
|
|
100
|
+
rest?: Partial<RestConfig>;
|
|
101
|
+
/** Override RPC client settings on top of network defaults. */
|
|
102
|
+
rpc?: RpcConfig;
|
|
103
|
+
/**
|
|
104
|
+
* Optional HTTP executor for sans-I/O usage. Defaults to global `fetch`.
|
|
105
|
+
* Inject a custom executor to intercept requests in tests or route through
|
|
106
|
+
* a proxy without monkey-patching globals.
|
|
107
|
+
*/
|
|
108
|
+
executor?: HttpExecutor;
|
|
109
|
+
/**
|
|
110
|
+
* Optional request timeout in milliseconds for REST calls.
|
|
111
|
+
* When set, wraps the HTTP executor with an `AbortSignal.timeout()`.
|
|
112
|
+
* Has no effect when a custom `executor` is provided (the custom
|
|
113
|
+
* executor is responsible for its own timeouts).
|
|
114
|
+
*/
|
|
115
|
+
timeoutMs?: number;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Top-level API configuration options.
|
|
119
|
+
* @public
|
|
120
|
+
*/
|
|
121
|
+
export type ApiConfig = {
|
|
122
|
+
btc?: BitcoinApiConfig;
|
|
123
|
+
cas?: CasConfig;
|
|
124
|
+
kms?: KeyManager;
|
|
125
|
+
/** Optional logger. Defaults to a silent no-op logger. */
|
|
126
|
+
logger?: Logger;
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAClD,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;AAExC;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC;AAEnE;;;GAGG;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAE,QAAQ,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;IAAC,GAAG,EAAE,mBAAmB,CAAA;CAAE,GACzH;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAElF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,qEAAqE;IACrE,OAAO,EAAE,WAAW,CAAC;IACrB,gEAAgE;IAChE,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3B,+DAA+D;IAC/D,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@did-btcr2/api",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "SDK for accessing the did:btcr2 method functionality.",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -84,11 +84,12 @@
|
|
|
84
84
|
"multiformats": "^13.3.1",
|
|
85
85
|
"nostr-tools": "^2.15.0",
|
|
86
86
|
"tiny-secp256k1": "^2.2.3",
|
|
87
|
-
"@did-btcr2/
|
|
88
|
-
"@did-btcr2/
|
|
89
|
-
"@did-btcr2/
|
|
90
|
-
"@did-btcr2/
|
|
91
|
-
"@did-btcr2/
|
|
87
|
+
"@did-btcr2/bitcoin": "0.5.0",
|
|
88
|
+
"@did-btcr2/common": "8.0.0",
|
|
89
|
+
"@did-btcr2/cryptosuite": "6.0.2",
|
|
90
|
+
"@did-btcr2/keypair": "0.11.0",
|
|
91
|
+
"@did-btcr2/method": "0.25.0",
|
|
92
|
+
"@did-btcr2/kms": "0.4.0"
|
|
92
93
|
},
|
|
93
94
|
"devDependencies": {
|
|
94
95
|
"@eslint/js": "^9.22.0",
|