@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.
Files changed (74) hide show
  1. package/README.md +1 -1
  2. package/dist/browser.js +149910 -127351
  3. package/dist/browser.mjs +149186 -126627
  4. package/dist/cjs/api.js +210 -150
  5. package/dist/cjs/api.js.map +1 -1
  6. package/dist/cjs/bitcoin.js +110 -0
  7. package/dist/cjs/bitcoin.js.map +1 -0
  8. package/dist/cjs/cas.js +90 -0
  9. package/dist/cjs/cas.js.map +1 -0
  10. package/dist/cjs/crypto.js +425 -0
  11. package/dist/cjs/crypto.js.map +1 -0
  12. package/dist/cjs/did.js +70 -0
  13. package/dist/cjs/did.js.map +1 -0
  14. package/dist/cjs/helpers.js +28 -0
  15. package/dist/cjs/helpers.js.map +1 -0
  16. package/dist/cjs/index.js +12 -0
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/kms.js +73 -0
  19. package/dist/cjs/kms.js.map +1 -0
  20. package/dist/cjs/method.js +262 -0
  21. package/dist/cjs/method.js.map +1 -0
  22. package/dist/cjs/types.js +2 -0
  23. package/dist/cjs/types.js.map +1 -0
  24. package/dist/esm/api.js +210 -150
  25. package/dist/esm/api.js.map +1 -1
  26. package/dist/esm/bitcoin.js +110 -0
  27. package/dist/esm/bitcoin.js.map +1 -0
  28. package/dist/esm/cas.js +90 -0
  29. package/dist/esm/cas.js.map +1 -0
  30. package/dist/esm/crypto.js +425 -0
  31. package/dist/esm/crypto.js.map +1 -0
  32. package/dist/esm/did.js +70 -0
  33. package/dist/esm/did.js.map +1 -0
  34. package/dist/esm/helpers.js +28 -0
  35. package/dist/esm/helpers.js.map +1 -0
  36. package/dist/esm/index.js +12 -0
  37. package/dist/esm/index.js.map +1 -1
  38. package/dist/esm/kms.js +73 -0
  39. package/dist/esm/kms.js.map +1 -0
  40. package/dist/esm/method.js +262 -0
  41. package/dist/esm/method.js.map +1 -0
  42. package/dist/esm/types.js +2 -0
  43. package/dist/esm/types.js.map +1 -0
  44. package/dist/types/api.d.ts +107 -97
  45. package/dist/types/api.d.ts.map +1 -1
  46. package/dist/types/bitcoin.d.ts +64 -0
  47. package/dist/types/bitcoin.d.ts.map +1 -0
  48. package/dist/types/cas.d.ts +70 -0
  49. package/dist/types/cas.d.ts.map +1 -0
  50. package/dist/types/crypto.d.ts +310 -0
  51. package/dist/types/crypto.d.ts.map +1 -0
  52. package/dist/types/did.d.ts +51 -0
  53. package/dist/types/did.d.ts.map +1 -0
  54. package/dist/types/helpers.d.ts +10 -0
  55. package/dist/types/helpers.d.ts.map +1 -0
  56. package/dist/types/index.d.ts +15 -0
  57. package/dist/types/index.d.ts.map +1 -1
  58. package/dist/types/kms.d.ts +49 -0
  59. package/dist/types/kms.d.ts.map +1 -0
  60. package/dist/types/method.d.ts +117 -0
  61. package/dist/types/method.d.ts.map +1 -0
  62. package/dist/types/types.d.ts +128 -0
  63. package/dist/types/types.d.ts.map +1 -0
  64. package/package.json +7 -6
  65. package/src/api.ts +246 -262
  66. package/src/bitcoin.ts +129 -0
  67. package/src/cas.ts +121 -0
  68. package/src/crypto.ts +525 -0
  69. package/src/did.ts +75 -0
  70. package/src/helpers.ts +35 -0
  71. package/src/index.ts +37 -1
  72. package/src/kms.ts +95 -0
  73. package/src/method.ts +331 -0
  74. 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.2.1",
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/cryptosuite": "5.1.0",
88
- "@did-btcr2/keypair": "0.9.1",
89
- "@did-btcr2/common": "4.0.1",
90
- "@did-btcr2/method": "0.22.0",
91
- "@did-btcr2/bitcoin": "0.3.4"
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",