@bsv/sdk 1.4.0 → 1.4.2

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 (80) hide show
  1. package/dist/cjs/mod.js +2 -0
  2. package/dist/cjs/mod.js.map +1 -1
  3. package/dist/cjs/package.json +1 -1
  4. package/dist/cjs/src/identity/IdentityClient.js +258 -0
  5. package/dist/cjs/src/identity/IdentityClient.js.map +1 -0
  6. package/dist/cjs/src/identity/index.js +19 -0
  7. package/dist/cjs/src/identity/index.js.map +1 -0
  8. package/dist/cjs/src/identity/types/index.js +30 -0
  9. package/dist/cjs/src/identity/types/index.js.map +1 -0
  10. package/dist/cjs/src/registry/RegistryClient.js +392 -0
  11. package/dist/cjs/src/registry/RegistryClient.js.map +1 -0
  12. package/dist/cjs/src/registry/index.js +19 -0
  13. package/dist/cjs/src/registry/index.js.map +1 -0
  14. package/dist/cjs/src/registry/types/index.js +3 -0
  15. package/dist/cjs/src/registry/types/index.js.map +1 -0
  16. package/dist/cjs/src/storage/StorageDownloader.js +82 -0
  17. package/dist/cjs/src/storage/StorageDownloader.js.map +1 -0
  18. package/dist/cjs/src/storage/__test/StorageDownloader.test.js +144 -0
  19. package/dist/cjs/src/storage/__test/StorageDownloader.test.js.map +1 -0
  20. package/dist/cjs/src/storage/index.js +3 -1
  21. package/dist/cjs/src/storage/index.js.map +1 -1
  22. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  23. package/dist/esm/mod.js +2 -0
  24. package/dist/esm/mod.js.map +1 -1
  25. package/dist/esm/src/identity/IdentityClient.js +255 -0
  26. package/dist/esm/src/identity/IdentityClient.js.map +1 -0
  27. package/dist/esm/src/identity/index.js +3 -0
  28. package/dist/esm/src/identity/index.js.map +1 -0
  29. package/dist/esm/src/identity/types/index.js +27 -0
  30. package/dist/esm/src/identity/types/index.js.map +1 -0
  31. package/dist/esm/src/registry/RegistryClient.js +388 -0
  32. package/dist/esm/src/registry/RegistryClient.js.map +1 -0
  33. package/dist/esm/src/registry/index.js +3 -0
  34. package/dist/esm/src/registry/index.js.map +1 -0
  35. package/dist/esm/src/registry/types/index.js +2 -0
  36. package/dist/esm/src/registry/types/index.js.map +1 -0
  37. package/dist/esm/src/storage/StorageDownloader.js +75 -0
  38. package/dist/esm/src/storage/StorageDownloader.js.map +1 -0
  39. package/dist/esm/src/storage/__test/StorageDownloader.test.js +139 -0
  40. package/dist/esm/src/storage/__test/StorageDownloader.test.js.map +1 -0
  41. package/dist/esm/src/storage/index.js +1 -0
  42. package/dist/esm/src/storage/index.js.map +1 -1
  43. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  44. package/dist/types/mod.d.ts +2 -0
  45. package/dist/types/mod.d.ts.map +1 -1
  46. package/dist/types/src/identity/IdentityClient.d.ts +50 -0
  47. package/dist/types/src/identity/IdentityClient.d.ts.map +1 -0
  48. package/dist/types/src/identity/index.d.ts +3 -0
  49. package/dist/types/src/identity/index.d.ts.map +1 -0
  50. package/dist/types/src/identity/types/index.d.ts +30 -0
  51. package/dist/types/src/identity/types/index.d.ts.map +1 -0
  52. package/dist/types/src/registry/RegistryClient.d.ts +94 -0
  53. package/dist/types/src/registry/RegistryClient.d.ts.map +1 -0
  54. package/dist/types/src/registry/index.d.ts +3 -0
  55. package/dist/types/src/registry/index.d.ts.map +1 -0
  56. package/dist/types/src/registry/types/index.d.ts +86 -0
  57. package/dist/types/src/registry/types/index.d.ts.map +1 -0
  58. package/dist/types/src/storage/StorageDownloader.d.ts +25 -0
  59. package/dist/types/src/storage/StorageDownloader.d.ts.map +1 -0
  60. package/dist/types/src/storage/__test/StorageDownloader.test.d.ts +2 -0
  61. package/dist/types/src/storage/__test/StorageDownloader.test.d.ts.map +1 -0
  62. package/dist/types/src/storage/index.d.ts +1 -0
  63. package/dist/types/src/storage/index.d.ts.map +1 -1
  64. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  65. package/dist/umd/bundle.js +1 -1
  66. package/docs/storage.md +51 -0
  67. package/mod.ts +3 -1
  68. package/package.json +2 -2
  69. package/src/identity/IdentityClient.ts +305 -0
  70. package/src/identity/README.md +93 -0
  71. package/src/identity/__tests/IdentityClient.test.ts +278 -0
  72. package/src/identity/index.ts +2 -0
  73. package/src/identity/types/index.ts +46 -0
  74. package/src/registry/RegistryClient.ts +493 -0
  75. package/src/registry/__tests/RegistryClient.test.ts +444 -0
  76. package/src/registry/index.ts +2 -0
  77. package/src/registry/types/index.ts +101 -0
  78. package/src/storage/StorageDownloader.ts +91 -0
  79. package/src/storage/__test/StorageDownloader.test.ts +170 -0
  80. package/src/storage/index.ts +3 -0
@@ -0,0 +1,255 @@
1
+ import { AuthFetch } from '../auth/clients/index.js';
2
+ import { DEFAULT_IDENTITY_CLIENT_OPTIONS, defaultIdentity, KNOWN_IDENTITY_TYPES } from './types/index.js';
3
+ import { WalletClient } from '../wallet/index.js';
4
+ import { Transaction } from '../transaction/index.js';
5
+ import Certificate from '../auth/certificates/Certificate.js';
6
+ import { PushDrop } from '../script/index.js';
7
+ import { PrivateKey, Utils } from '../primitives/index.js';
8
+ import { TopicBroadcaster } from '../overlay-tools/index.js';
9
+ /**
10
+ * IdentityClient lets you discover who others are, and let the world know who you are.
11
+ */
12
+ export class IdentityClient {
13
+ options;
14
+ originator;
15
+ authClient;
16
+ wallet;
17
+ constructor(wallet, options = DEFAULT_IDENTITY_CLIENT_OPTIONS, originator) {
18
+ this.options = options;
19
+ this.originator = originator;
20
+ this.wallet = wallet ?? new WalletClient();
21
+ this.authClient = new AuthFetch(this.wallet);
22
+ }
23
+ /**
24
+ * Publicly reveals selected fields from a given certificate by creating a publicly verifiable certificate.
25
+ * The publicly revealed certificate is included in a blockchain transaction and broadcast to a federated overlay node.
26
+ *
27
+ * @param {Certificate} certificate - The master certificate to selectively reveal.
28
+ * @param {CertificateFieldNameUnder50Bytes[]} fieldsToReveal - An array of certificate field names to reveal. Only these fields will be included in the public certificate.
29
+ *
30
+ * @returns {Promise<object>} A promise that resolves with the broadcast result from the overlay network.
31
+ * @throws {Error} Throws an error if the certificate is invalid, the fields cannot be revealed, or if the broadcast fails.
32
+ */
33
+ async publiclyRevealAttributes(certificate, fieldsToReveal) {
34
+ if (Object.keys(certificate.fields).length === 0) {
35
+ throw new Error('Public reveal failed: Certificate has no fields to reveal!');
36
+ }
37
+ if (fieldsToReveal.length === 0) {
38
+ throw new Error('Public reveal failed: You must reveal at least one field!');
39
+ }
40
+ try {
41
+ const masterCert = new Certificate(certificate.type, certificate.serialNumber, certificate.subject, certificate.certifier, certificate.revocationOutpoint, certificate.fields, certificate.signature);
42
+ await masterCert.verify();
43
+ }
44
+ catch (error) {
45
+ throw new Error('Public reveal failed: Certificate verification failed!');
46
+ }
47
+ // Given we already have a master certificate from a certifier,
48
+ // create an anyone verifiable certificate with selectively revealed fields
49
+ const { keyringForVerifier } = await this.wallet.proveCertificate({
50
+ certificate,
51
+ fieldsToReveal,
52
+ verifier: new PrivateKey(1).toPublicKey().toString()
53
+ });
54
+ // Build the lockingScript with pushdrop.create() and the transaction with createAction()
55
+ const lockingScript = await new PushDrop(this.wallet).lock([Utils.toArray(JSON.stringify({ ...certificate, keyring: keyringForVerifier }))], this.options.protocolID, this.options.keyID, 'anyone', true, true);
56
+ // TODO: Consider verification and if this is necessary
57
+ // counterpartyCanVerifyMyOwnership: true
58
+ const { tx } = await this.wallet.createAction({
59
+ description: 'Create a new Identity Token',
60
+ outputs: [{
61
+ satoshis: this.options.tokenAmount,
62
+ lockingScript: lockingScript.toHex(),
63
+ outputDescription: 'Identity Token'
64
+ }],
65
+ options: {
66
+ randomizeOutputs: false
67
+ }
68
+ });
69
+ if (tx !== undefined) {
70
+ // Submit the transaction to an overlay
71
+ const broadcaster = new TopicBroadcaster(['tm_identity'], {
72
+ networkPreset: (await (this.wallet.getNetwork({}))).network
73
+ });
74
+ return await broadcaster.broadcast(Transaction.fromAtomicBEEF(tx));
75
+ }
76
+ throw new Error('Public reveal failed: failed to create action!');
77
+ }
78
+ /**
79
+ * Resolves displayable identity certificates, issued to a given identity key by a trusted certifier.
80
+ *
81
+ * @param {DiscoverByIdentityKeyArgs} args - Arguments for requesting the discovery based on the identity key.
82
+ * @returns {Promise<DisplayableIdentity[]>} The promise resolves to displayable identities.
83
+ */
84
+ async resolveByIdentityKey(args) {
85
+ const { certificates } = await this.wallet.discoverByIdentityKey(args, this.originator);
86
+ return certificates.map(cert => {
87
+ return IdentityClient.parseIdentity(cert);
88
+ });
89
+ }
90
+ /**
91
+ * Resolves displayable identity certificates by specific identity attributes, issued by a trusted entity.
92
+ *
93
+ * @param {DiscoverByAttributesArgs} args - Attributes and optional parameters used to discover certificates.
94
+ * @returns {Promise<DisplayableIdentity[]>} The promise resolves to displayable identities.
95
+ */
96
+ async resolveByAttributes(args) {
97
+ const { certificates } = await this.wallet.discoverByAttributes(args, this.originator);
98
+ return certificates.map(cert => {
99
+ return IdentityClient.parseIdentity(cert);
100
+ });
101
+ }
102
+ /**
103
+ * TODO: Implement once revocation overlay is created
104
+ * Remove public certificate revelation from overlay services by spending the identity token
105
+ * @param serialNumber - Unique serial number of the certificate to revoke revelation
106
+ */
107
+ // async revokeCertificateRevelation(
108
+ // serialNumber: Base64String
109
+ // ): Promise<BroadcastResponse | BroadcastFailure> {
110
+ // // 1. Find existing UTXO
111
+ // const lookupResolver = new LookupResolver()
112
+ // const result = await lookupResolver.query({
113
+ // service: 'ls_identity',
114
+ // query: {
115
+ // serialNumber
116
+ // }
117
+ // })
118
+ // let outpoint: string
119
+ // let lockingScript: LockingScript | undefined
120
+ // if (result.type === 'output-list') {
121
+ // const tx = Transaction.fromAtomicBEEF(result.outputs[this.options.outputIndex].beef)
122
+ // outpoint = `${tx.id('hex')}.${this.options.outputIndex}` // Consider better way
123
+ // lockingScript = tx.outputs[this.options.outputIndex].lockingScript
124
+ // }
125
+ // if (lockingScript === undefined) {
126
+ // throw new Error('Failed to get locking script for revelation output!')
127
+ // }
128
+ // // 2. Parse results
129
+ // const { signableTransaction } = await this.wallet.createAction({
130
+ // description: '',
131
+ // inputs: [{
132
+ // inputDescription: 'Spend certificate revelation token',
133
+ // outpoint,
134
+ // unlockingScriptLength: 73
135
+ // }],
136
+ // options: {
137
+ // randomizeOutputs: false
138
+ // }
139
+ // })
140
+ // if (signableTransaction === undefined) {
141
+ // throw new Error('Failed to create signable transaction')
142
+ // }
143
+ // const partialTx = Transaction.fromBEEF(signableTransaction.tx)
144
+ // const unlocker = new PushDrop(this.wallet).unlock(
145
+ // this.options.protocolID,
146
+ // this.options.keyID,
147
+ // 'self',
148
+ // 'all',
149
+ // false,
150
+ // 1,
151
+ // lockingScript
152
+ // )
153
+ // const unlockingScript = await unlocker.sign(partialTx, this.options.outputIndex)
154
+ // const { tx: signedTx } = await this.wallet.signAction({
155
+ // reference: signableTransaction.reference,
156
+ // spends: {
157
+ // [this.options.outputIndex]: {
158
+ // unlockingScript: unlockingScript.toHex()
159
+ // }
160
+ // }
161
+ // })
162
+ // // 4. Return broadcast status
163
+ // // Submit the transaction to an overlay
164
+ // const broadcaster = new SHIPBroadcaster(['tm_identity'])
165
+ // return await broadcaster.broadcast(Transaction.fromAtomicBEEF(signedTx as number[]))
166
+ // }
167
+ /**
168
+ * Parse out identity and certifier attributes to display from an IdentityCertificate
169
+ * @param identityToParse - The Identity Certificate to parse
170
+ * @returns - IdentityToDisplay
171
+ */
172
+ static parseIdentity(identityToParse) {
173
+ const { type, decryptedFields, certifierInfo } = identityToParse;
174
+ let name, avatarURL, badgeLabel, badgeIconURL, badgeClickURL;
175
+ // Parse out the name to display based on the specific certificate type which has clearly defined fields.
176
+ switch (type) {
177
+ case KNOWN_IDENTITY_TYPES.xCert:
178
+ name = decryptedFields.userName;
179
+ avatarURL = decryptedFields.profilePhoto;
180
+ badgeLabel = `X account certified by ${certifierInfo.name}`;
181
+ badgeIconURL = certifierInfo.iconUrl;
182
+ badgeClickURL = 'https://socialcert.net'; // TODO Make a specific page for this.
183
+ break;
184
+ case KNOWN_IDENTITY_TYPES.discordCert:
185
+ name = decryptedFields.userName;
186
+ avatarURL = decryptedFields.profilePhoto;
187
+ badgeLabel = `Discord account certified by ${certifierInfo.name}`;
188
+ badgeIconURL = certifierInfo.iconUrl;
189
+ badgeClickURL = 'https://socialcert.net'; // TODO Make a specific page for this.
190
+ break;
191
+ case KNOWN_IDENTITY_TYPES.emailCert:
192
+ name = decryptedFields.email;
193
+ avatarURL = 'XUTZxep7BBghAJbSBwTjNfmcsDdRFs5EaGEgkESGSgjJVYgMEizu';
194
+ badgeLabel = `Email certified by ${certifierInfo.name}`;
195
+ badgeIconURL = certifierInfo.iconUrl;
196
+ badgeClickURL = 'https://socialcert.net'; // TODO Make a specific page for this.
197
+ break;
198
+ case KNOWN_IDENTITY_TYPES.phoneCert:
199
+ name = decryptedFields.phoneNumber;
200
+ avatarURL = 'XUTLxtX3ELNUwRhLwL7kWNGbdnFM8WG2eSLv84J7654oH8HaJWrU';
201
+ badgeLabel = `Phone certified by ${certifierInfo.name}`;
202
+ badgeIconURL = certifierInfo.iconUrl;
203
+ badgeClickURL = 'https://socialcert.net'; // TODO Make a specific page for this.
204
+ break;
205
+ case KNOWN_IDENTITY_TYPES.identiCert:
206
+ name = `${decryptedFields.firstName} ${decryptedFields.lastName}`;
207
+ avatarURL = decryptedFields.profilePhoto;
208
+ badgeLabel = `Government ID certified by ${certifierInfo.name}`;
209
+ badgeIconURL = certifierInfo.iconUrl;
210
+ badgeClickURL = 'https://identicert.me'; // TODO Make a specific page for this.
211
+ break;
212
+ case KNOWN_IDENTITY_TYPES.registrant:
213
+ name = decryptedFields.name;
214
+ avatarURL = decryptedFields.icon;
215
+ badgeLabel = `Entity certified by ${certifierInfo.name}`;
216
+ badgeIconURL = certifierInfo.iconUrl;
217
+ badgeClickURL = 'https://projectbabbage.com/docs/registrant'; // TODO: Make this doc page exist
218
+ break;
219
+ case KNOWN_IDENTITY_TYPES.coolCert:
220
+ name = decryptedFields.cool === 'true' ? 'Cool Person!' : 'Not cool!';
221
+ break;
222
+ case KNOWN_IDENTITY_TYPES.anyone:
223
+ name = 'Anyone';
224
+ avatarURL = 'XUT4bpQ6cpBaXi1oMzZsXfpkWGbtp2JTUYAoN7PzhStFJ6wLfoeR';
225
+ badgeLabel = 'Represents the ability for anyone to access this information.';
226
+ badgeIconURL = 'XUUV39HVPkpmMzYNTx7rpKzJvXfeiVyQWg2vfSpjBAuhunTCA9uG';
227
+ badgeClickURL = 'https://projectbabbage.com/docs/anyone-identity'; // TODO: Make this doc page exist
228
+ break;
229
+ case KNOWN_IDENTITY_TYPES.self:
230
+ name = 'You';
231
+ avatarURL = 'XUT9jHGk2qace148jeCX5rDsMftkSGYKmigLwU2PLLBc7Hm63VYR';
232
+ badgeLabel = 'Represents your ability to access this information.';
233
+ badgeIconURL = 'XUUV39HVPkpmMzYNTx7rpKzJvXfeiVyQWg2vfSpjBAuhunTCA9uG';
234
+ badgeClickURL = 'https://projectbabbage.com/docs/self-identity'; // TODO: Make this doc page exist
235
+ break;
236
+ default:
237
+ name = defaultIdentity.name;
238
+ avatarURL = decryptedFields.profilePhoto;
239
+ badgeLabel = defaultIdentity.badgeLabel;
240
+ badgeIconURL = defaultIdentity.badgeIconURL;
241
+ badgeClickURL = defaultIdentity.badgeClickURL; // TODO: Make this doc page exist
242
+ break;
243
+ }
244
+ return {
245
+ name,
246
+ avatarURL,
247
+ abbreviatedKey: identityToParse.subject.length > 0 ? `${identityToParse.subject.substring(0, 10)}...` : '',
248
+ identityKey: identityToParse.subject,
249
+ badgeIconURL,
250
+ badgeLabel,
251
+ badgeClickURL
252
+ };
253
+ }
254
+ }
255
+ //# sourceMappingURL=IdentityClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityClient.js","sourceRoot":"","sources":["../../../../src/identity/IdentityClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './IdentityClient.js';
2
+ export * from './types/index.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/identity/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,27 @@
1
+ export const defaultIdentity = {
2
+ name: 'Unknown Identity',
3
+ avatarURL: 'XUUB8bbn9fEthk15Ge3zTQXypUShfC94vFjp65v7u5CQ8qkpxzst',
4
+ identityKey: '',
5
+ abbreviatedKey: '',
6
+ badgeIconURL: 'XUUV39HVPkpmMzYNTx7rpKzJvXfeiVyQWg2vfSpjBAuhunTCA9uG',
7
+ badgeLabel: 'Not verified by anyone you trust.',
8
+ badgeClickURL: 'https://projectbabbage.com/docs/unknown-identity'
9
+ };
10
+ export const DEFAULT_IDENTITY_CLIENT_OPTIONS = {
11
+ protocolID: [1, 'identity'],
12
+ keyID: '1',
13
+ tokenAmount: 1,
14
+ outputIndex: 0
15
+ };
16
+ export const KNOWN_IDENTITY_TYPES = {
17
+ identiCert: 'z40BOInXkI8m7f/wBrv4MJ09bZfzZbTj2fJqCtONqCY=',
18
+ discordCert: '2TgqRC35B1zehGmB21xveZNc7i5iqHc0uxMb+1NMPW4=',
19
+ phoneCert: 'mffUklUzxbHr65xLohn0hRL0Tq2GjW1GYF/OPfzqJ6A=',
20
+ xCert: 'vdDWvftf1H+5+ZprUw123kjHlywH+v20aPQTuXgMpNc=',
21
+ registrant: 'YoPsbfR6YQczjzPdHCoGC7nJsOdPQR50+SYqcWpJ0y0=',
22
+ emailCert: 'exOl3KM0dIJ04EW5pZgbZmPag6MdJXd3/a1enmUU/BA=',
23
+ anyone: 'mfkOMfLDQmrr3SBxBQ5WeE+6Hy3VJRFq6w4A5Ljtlis=',
24
+ self: 'Hkge6X5JRxt1cWXtHLCrSTg6dCVTxjQJJ48iOYd7n3g=',
25
+ coolCert: 'AGfk/WrT1eBDXpz3mcw386Zww2HmqcIn3uY6x4Af1eo='
26
+ };
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/identity/types/index.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAwB;IAClD,IAAI,EAAE,kBAAkB;IACxB,SAAS,EAAE,sDAAsD;IACjE,WAAW,EAAE,EAAE;IACf,cAAc,EAAE,EAAE;IAClB,YAAY,EAAE,sDAAsD;IACpE,UAAU,EAAE,mCAAmC;IAC/C,aAAa,EAAE,kDAAkD;CAClE,CAAA;AAQD,MAAM,CAAC,MAAM,+BAA+B,GAA0B;IACpE,UAAU,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC;IAC3B,KAAK,EAAE,GAAG;IACV,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,CAAC;CACf,CAAA;AAYD,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,UAAU,EAAE,8CAA8C;IAC1D,WAAW,EAAE,8CAA8C;IAC3D,SAAS,EAAE,8CAA8C;IACzD,KAAK,EAAE,8CAA8C;IACrD,UAAU,EAAE,8CAA8C;IAC1D,SAAS,EAAE,8CAA8C;IACzD,MAAM,EAAE,8CAA8C;IACtD,IAAI,EAAE,8CAA8C;IACpD,QAAQ,EAAE,8CAA8C;CACzD,CAAA"}