@fastxyz/fastid-sdk 0.1.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/LICENSE +202 -0
- package/README.md +65 -0
- package/dist/address.d.ts +12 -0
- package/dist/address.d.ts.map +1 -0
- package/dist/address.js +57 -0
- package/dist/address.js.map +1 -0
- package/dist/canonical-json.d.ts +12 -0
- package/dist/canonical-json.d.ts.map +1 -0
- package/dist/canonical-json.js +95 -0
- package/dist/canonical-json.js.map +1 -0
- package/dist/claim-data.d.ts +9 -0
- package/dist/claim-data.d.ts.map +1 -0
- package/dist/claim-data.js +151 -0
- package/dist/claim-data.js.map +1 -0
- package/dist/claim-fee.d.ts +26 -0
- package/dist/claim-fee.d.ts.map +1 -0
- package/dist/claim-fee.js +144 -0
- package/dist/claim-fee.js.map +1 -0
- package/dist/claim-preflight.d.ts +7 -0
- package/dist/claim-preflight.d.ts.map +1 -0
- package/dist/claim-preflight.js +34 -0
- package/dist/claim-preflight.js.map +1 -0
- package/dist/claim-tx.d.ts +35 -0
- package/dist/claim-tx.d.ts.map +1 -0
- package/dist/claim-tx.js +140 -0
- package/dist/claim-tx.js.map +1 -0
- package/dist/claims.d.ts +44 -0
- package/dist/claims.d.ts.map +1 -0
- package/dist/claims.js +348 -0
- package/dist/claims.js.map +1 -0
- package/dist/client.d.ts +37 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +139 -0
- package/dist/client.js.map +1 -0
- package/dist/errors.d.ts +252 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +410 -0
- package/dist/errors.js.map +1 -0
- package/dist/fasttx.d.ts +10 -0
- package/dist/fasttx.d.ts.map +1 -0
- package/dist/fasttx.js +35 -0
- package/dist/fasttx.js.map +1 -0
- package/dist/http.d.ts +15 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +67 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/name.d.ts +15 -0
- package/dist/name.d.ts.map +1 -0
- package/dist/name.js +34 -0
- package/dist/name.js.map +1 -0
- package/dist/networks.d.ts +8 -0
- package/dist/networks.d.ts.map +1 -0
- package/dist/networks.js +32 -0
- package/dist/networks.js.map +1 -0
- package/dist/profile-message.d.ts +22 -0
- package/dist/profile-message.d.ts.map +1 -0
- package/dist/profile-message.js +53 -0
- package/dist/profile-message.js.map +1 -0
- package/dist/profile.d.ts +30 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +363 -0
- package/dist/profile.js.map +1 -0
- package/dist/proofs.d.ts +92 -0
- package/dist/proofs.d.ts.map +1 -0
- package/dist/proofs.js +770 -0
- package/dist/proofs.js.map +1 -0
- package/dist/reads.d.ts +76 -0
- package/dist/reads.d.ts.map +1 -0
- package/dist/reads.js +244 -0
- package/dist/reads.js.map +1 -0
- package/dist/report-wire.d.ts +35 -0
- package/dist/report-wire.d.ts.map +1 -0
- package/dist/report-wire.js +131 -0
- package/dist/report-wire.js.map +1 -0
- package/dist/report.d.ts +36 -0
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +255 -0
- package/dist/report.js.map +1 -0
- package/dist/share.d.ts +9 -0
- package/dist/share.d.ts.map +1 -0
- package/dist/share.js +16 -0
- package/dist/share.js.map +1 -0
- package/dist/signer.d.ts +23 -0
- package/dist/signer.d.ts.map +1 -0
- package/dist/signer.js +73 -0
- package/dist/signer.js.map +1 -0
- package/dist/verify.d.ts +6 -0
- package/dist/verify.d.ts.map +1 -0
- package/dist/verify.js +33 -0
- package/dist/verify.js.map +1 -0
- package/package.json +53 -0
package/dist/profile.js
ADDED
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
import { sha256 } from "@noble/hashes/sha2";
|
|
2
|
+
import { toHex } from "./address.js";
|
|
3
|
+
import { IndeterminateProfileUpdateError, InvalidProfileError, LocalVerificationError, ProfileChallengeError, ProfileReadError, ProfileUnauthorizedError, ProfileUpdateError, SigningError, } from "./errors.js";
|
|
4
|
+
import { bioOk, displayNameOk, encodeProfileMessage, } from "./profile-message.js";
|
|
5
|
+
import { hexToBytes, verifyStrict } from "./verify.js";
|
|
6
|
+
function isObject(value) {
|
|
7
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
8
|
+
}
|
|
9
|
+
const LOWER_HEX_32 = /^[0-9a-f]{64}$/;
|
|
10
|
+
const LOWER_HEX_64 = /^[0-9a-f]{128}$/;
|
|
11
|
+
const CANONICAL_UINT = /^(?:0|[1-9][0-9]*)$/;
|
|
12
|
+
const SIGNED_CONTENT_PROOF = "This address signed an on-chain attestation for this SHA-256 fingerprint.";
|
|
13
|
+
const SIGNED_CONTENT_RELATIONSHIPS = new Set([
|
|
14
|
+
"authored",
|
|
15
|
+
"co_authored",
|
|
16
|
+
"approved",
|
|
17
|
+
"published",
|
|
18
|
+
"reviewed",
|
|
19
|
+
"witnessed",
|
|
20
|
+
"received",
|
|
21
|
+
"official_release",
|
|
22
|
+
]);
|
|
23
|
+
function isOptionalString(value) {
|
|
24
|
+
return value === undefined || typeof value === "string";
|
|
25
|
+
}
|
|
26
|
+
function isVerifiedProperty(value) {
|
|
27
|
+
return (isObject(value) &&
|
|
28
|
+
typeof value.kind === "string" &&
|
|
29
|
+
typeof value.value === "string" &&
|
|
30
|
+
typeof value.verification === "string" &&
|
|
31
|
+
typeof value.claim_tx === "string" &&
|
|
32
|
+
(value.last_checked === null || typeof value.last_checked === "string") &&
|
|
33
|
+
typeof value.proves === "string");
|
|
34
|
+
}
|
|
35
|
+
function hasCoherentAttribution(value) {
|
|
36
|
+
const fields = [
|
|
37
|
+
value.fast_id,
|
|
38
|
+
value.address_binding_ref,
|
|
39
|
+
value.address_binding_receipt,
|
|
40
|
+
];
|
|
41
|
+
if (fields.every((field) => field === undefined))
|
|
42
|
+
return true;
|
|
43
|
+
return (typeof fields[0] === "string" &&
|
|
44
|
+
fields[0].length > 0 &&
|
|
45
|
+
typeof fields[1] === "string" &&
|
|
46
|
+
LOWER_HEX_32.test(fields[1]) &&
|
|
47
|
+
typeof fields[2] === "string" &&
|
|
48
|
+
LOWER_HEX_32.test(fields[2]));
|
|
49
|
+
}
|
|
50
|
+
function isSignedContent(value) {
|
|
51
|
+
return (isObject(value) &&
|
|
52
|
+
typeof value.title === "string" &&
|
|
53
|
+
typeof value.sha256 === "string" &&
|
|
54
|
+
LOWER_HEX_32.test(value.sha256) &&
|
|
55
|
+
typeof value.relationship === "string" &&
|
|
56
|
+
SIGNED_CONTENT_RELATIONSHIPS.has(value.relationship) &&
|
|
57
|
+
typeof value.signer_name === "string" &&
|
|
58
|
+
typeof value.file_label === "string" &&
|
|
59
|
+
typeof value.list_by_signer === "boolean" &&
|
|
60
|
+
typeof value.tx_id === "string" &&
|
|
61
|
+
LOWER_HEX_32.test(value.tx_id) &&
|
|
62
|
+
typeof value.nonce === "string" &&
|
|
63
|
+
CANONICAL_UINT.test(value.nonce) &&
|
|
64
|
+
typeof value.transaction_timestamp === "string" &&
|
|
65
|
+
typeof value.metadata_revision === "string" &&
|
|
66
|
+
CANONICAL_UINT.test(value.metadata_revision) &&
|
|
67
|
+
typeof value.metadata_sig === "string" &&
|
|
68
|
+
LOWER_HEX_64.test(value.metadata_sig) &&
|
|
69
|
+
value.signature_scope === "versioned_transaction" &&
|
|
70
|
+
hasCoherentAttribution(value) &&
|
|
71
|
+
(value.binding === undefined || value.binding === "verified") &&
|
|
72
|
+
value.proves === SIGNED_CONTENT_PROOF);
|
|
73
|
+
}
|
|
74
|
+
function isImportedWork(value) {
|
|
75
|
+
return (isObject(value) &&
|
|
76
|
+
typeof value.doi === "string" &&
|
|
77
|
+
typeof value.provenance === "string" &&
|
|
78
|
+
typeof value.claim_tx === "string" &&
|
|
79
|
+
isOptionalString(value.title) &&
|
|
80
|
+
isOptionalString(value.source) &&
|
|
81
|
+
isOptionalString(value.venue));
|
|
82
|
+
}
|
|
83
|
+
function currentFields(document, signer, network) {
|
|
84
|
+
if (!isObject(document) ||
|
|
85
|
+
typeof document.id !== "string" ||
|
|
86
|
+
document.address !== signer.address ||
|
|
87
|
+
document.network !== network) {
|
|
88
|
+
throw new ProfileReadError("profile read returned a different address or network");
|
|
89
|
+
}
|
|
90
|
+
if (!Array.isArray(document.verified_properties) ||
|
|
91
|
+
!document.verified_properties.every(isVerifiedProperty) ||
|
|
92
|
+
(document.signed_content_status !== "available" &&
|
|
93
|
+
document.signed_content_status !== "temporarily_unavailable") ||
|
|
94
|
+
!Array.isArray(document.signed_content) ||
|
|
95
|
+
!document.signed_content.every(isSignedContent) ||
|
|
96
|
+
!Array.isArray(document.imported_works) ||
|
|
97
|
+
!document.imported_works.every(isImportedWork) ||
|
|
98
|
+
typeof document.note !== "string" ||
|
|
99
|
+
(document.name !== undefined && typeof document.name !== "string") ||
|
|
100
|
+
(document.name_claim_tx !== undefined &&
|
|
101
|
+
typeof document.name_claim_tx !== "string")) {
|
|
102
|
+
throw new ProfileReadError("profile read was malformed");
|
|
103
|
+
}
|
|
104
|
+
const profile = document.profile;
|
|
105
|
+
if (profile === undefined)
|
|
106
|
+
return { displayName: "", bio: "" };
|
|
107
|
+
if (!isObject(profile))
|
|
108
|
+
throw new ProfileReadError("profile read was malformed");
|
|
109
|
+
const displayName = profile.display_name;
|
|
110
|
+
const bio = profile.bio;
|
|
111
|
+
const avatar = profile.avatar;
|
|
112
|
+
const provenance = profile.provenance;
|
|
113
|
+
if ((displayName !== undefined && typeof displayName !== "string") ||
|
|
114
|
+
(bio !== undefined && typeof bio !== "string") ||
|
|
115
|
+
(avatar !== undefined && typeof avatar !== "string") ||
|
|
116
|
+
(provenance !== undefined && typeof provenance !== "string")) {
|
|
117
|
+
throw new ProfileReadError("profile read was malformed");
|
|
118
|
+
}
|
|
119
|
+
return { displayName: displayName ?? "", bio: bio ?? "" };
|
|
120
|
+
}
|
|
121
|
+
function formString(form, name) {
|
|
122
|
+
const value = form.get(name);
|
|
123
|
+
return typeof value === "string" ? value : null;
|
|
124
|
+
}
|
|
125
|
+
/** Match the Fetch multipart serializer before measuring or signing text fields. */
|
|
126
|
+
function normalizeMultipartText(value) {
|
|
127
|
+
return value.replace(/\r?\n|\r/g, "\r\n");
|
|
128
|
+
}
|
|
129
|
+
function snapshotProfileAvatar(value) {
|
|
130
|
+
if (value === undefined || value === null)
|
|
131
|
+
return value;
|
|
132
|
+
if (!isObject(value))
|
|
133
|
+
throw new InvalidProfileError("profile input is malformed");
|
|
134
|
+
const bytes = value.bytes;
|
|
135
|
+
if (!(bytes instanceof Uint8Array)) {
|
|
136
|
+
throw new InvalidProfileError("profile input is malformed");
|
|
137
|
+
}
|
|
138
|
+
const bytesSnapshot = new Uint8Array(bytes);
|
|
139
|
+
const type = value.type;
|
|
140
|
+
const name = value.name;
|
|
141
|
+
if (typeof type !== "string" || typeof name !== "string") {
|
|
142
|
+
throw new InvalidProfileError("profile input is malformed");
|
|
143
|
+
}
|
|
144
|
+
return { bytes: bytesSnapshot, type, name };
|
|
145
|
+
}
|
|
146
|
+
function snapshotProfileInput(input) {
|
|
147
|
+
if (!isObject(input))
|
|
148
|
+
throw new InvalidProfileError("profile input is malformed");
|
|
149
|
+
const { displayName, bio, avatar } = input;
|
|
150
|
+
if ((displayName !== undefined && typeof displayName !== "string") ||
|
|
151
|
+
(bio !== undefined && typeof bio !== "string")) {
|
|
152
|
+
throw new InvalidProfileError("profile input is malformed");
|
|
153
|
+
}
|
|
154
|
+
const avatarSnapshot = snapshotProfileAvatar(avatar);
|
|
155
|
+
const normalizedDisplayName = displayName === undefined ? undefined : normalizeMultipartText(displayName);
|
|
156
|
+
const normalizedBio = bio === undefined ? undefined : normalizeMultipartText(bio);
|
|
157
|
+
if ((normalizedDisplayName !== undefined &&
|
|
158
|
+
!displayNameOk(normalizedDisplayName)) ||
|
|
159
|
+
(normalizedBio !== undefined && !bioOk(normalizedBio))) {
|
|
160
|
+
throw new InvalidProfileError("profile fields exceed protocol limits");
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
...(normalizedDisplayName === undefined
|
|
164
|
+
? {}
|
|
165
|
+
: { displayName: normalizedDisplayName }),
|
|
166
|
+
...(normalizedBio === undefined ? {} : { bio: normalizedBio }),
|
|
167
|
+
...(avatarSnapshot === undefined
|
|
168
|
+
? {}
|
|
169
|
+
: {
|
|
170
|
+
avatar: avatarSnapshot === null
|
|
171
|
+
? null
|
|
172
|
+
: avatarSnapshot,
|
|
173
|
+
}),
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
export class ProfileService {
|
|
177
|
+
#config;
|
|
178
|
+
#signer;
|
|
179
|
+
#reads;
|
|
180
|
+
#fetch;
|
|
181
|
+
constructor(options) {
|
|
182
|
+
this.#config = options.config;
|
|
183
|
+
this.#signer = options.signer;
|
|
184
|
+
this.#reads = options.reads;
|
|
185
|
+
this.#fetch = options.fetchImpl;
|
|
186
|
+
}
|
|
187
|
+
async updateProfile(input) {
|
|
188
|
+
const requested = snapshotProfileInput(input);
|
|
189
|
+
let document;
|
|
190
|
+
try {
|
|
191
|
+
document = await this.#reads.resolve(this.#signer.address);
|
|
192
|
+
}
|
|
193
|
+
catch (cause) {
|
|
194
|
+
throw new ProfileReadError("could not load the current profile", { cause });
|
|
195
|
+
}
|
|
196
|
+
const current = currentFields(document, this.#signer, this.#config.networkId);
|
|
197
|
+
const avatarFile = requested.avatar || undefined;
|
|
198
|
+
const snapshot = {
|
|
199
|
+
displayName: normalizeMultipartText(requested.displayName ?? current.displayName),
|
|
200
|
+
bio: normalizeMultipartText(requested.bio ?? current.bio),
|
|
201
|
+
avatar: requested.avatar === undefined
|
|
202
|
+
? { kind: "nochange" }
|
|
203
|
+
: requested.avatar === null
|
|
204
|
+
? { kind: "clear" }
|
|
205
|
+
: { kind: "set", digest: sha256(avatarFile.bytes) },
|
|
206
|
+
...(avatarFile ? { avatarFile } : {}),
|
|
207
|
+
};
|
|
208
|
+
if (!displayNameOk(snapshot.displayName) || !bioOk(snapshot.bio)) {
|
|
209
|
+
throw new InvalidProfileError("profile fields exceed protocol limits");
|
|
210
|
+
}
|
|
211
|
+
if (toHex(this.#signer.publicKey) !== this.#signer.signerHex) {
|
|
212
|
+
throw new InvalidProfileError("signer public key does not match signerHex");
|
|
213
|
+
}
|
|
214
|
+
const challenge = await this.#challenge();
|
|
215
|
+
const messageFields = {
|
|
216
|
+
address: this.#signer.publicKey,
|
|
217
|
+
network: this.#config.networkId,
|
|
218
|
+
displayName: snapshot.displayName,
|
|
219
|
+
bio: snapshot.bio,
|
|
220
|
+
avatar: snapshot.avatar,
|
|
221
|
+
expiry: BigInt(challenge.expiry),
|
|
222
|
+
serverNonce: hexToBytes(challenge.server_nonce),
|
|
223
|
+
};
|
|
224
|
+
const message = encodeProfileMessage(messageFields);
|
|
225
|
+
let signatureHex;
|
|
226
|
+
try {
|
|
227
|
+
signatureHex = await this.#signer.sign(message);
|
|
228
|
+
}
|
|
229
|
+
catch (cause) {
|
|
230
|
+
throw new SigningError({ cause });
|
|
231
|
+
}
|
|
232
|
+
if (!verifyStrict(message, signatureHex, this.#signer.publicKey)) {
|
|
233
|
+
throw new LocalVerificationError();
|
|
234
|
+
}
|
|
235
|
+
const form = this.#buildForm(snapshot, challenge, signatureHex);
|
|
236
|
+
if (!(await this.#formSignatureMatches(form, signatureHex))) {
|
|
237
|
+
throw new LocalVerificationError();
|
|
238
|
+
}
|
|
239
|
+
let response;
|
|
240
|
+
try {
|
|
241
|
+
response = await this.#fetch(`${this.#config.idOrigin}/api/profile`, {
|
|
242
|
+
method: "PUT",
|
|
243
|
+
body: form,
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
catch (cause) {
|
|
247
|
+
throw new IndeterminateProfileUpdateError({ cause });
|
|
248
|
+
}
|
|
249
|
+
if (response.status === 200)
|
|
250
|
+
return { status: "updated" };
|
|
251
|
+
if (response.status === 401)
|
|
252
|
+
throw new ProfileUnauthorizedError();
|
|
253
|
+
if (response.status === 422) {
|
|
254
|
+
const reason = (await response.text().catch(() => "")) || undefined;
|
|
255
|
+
throw new InvalidProfileError(reason);
|
|
256
|
+
}
|
|
257
|
+
throw new ProfileUpdateError(response.status);
|
|
258
|
+
}
|
|
259
|
+
async #challenge() {
|
|
260
|
+
let response;
|
|
261
|
+
try {
|
|
262
|
+
response = await this.#fetch(`${this.#config.idOrigin}/api/profile/challenge`, {
|
|
263
|
+
method: "POST",
|
|
264
|
+
headers: { "content-type": "application/json" },
|
|
265
|
+
body: JSON.stringify({
|
|
266
|
+
address: this.#signer.signerHex,
|
|
267
|
+
network: this.#config.networkId,
|
|
268
|
+
}),
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
catch (cause) {
|
|
272
|
+
throw new ProfileChallengeError(null, { cause });
|
|
273
|
+
}
|
|
274
|
+
if (!response.ok)
|
|
275
|
+
throw new ProfileChallengeError(response.status);
|
|
276
|
+
let body;
|
|
277
|
+
try {
|
|
278
|
+
body = await response.json();
|
|
279
|
+
}
|
|
280
|
+
catch (cause) {
|
|
281
|
+
throw new ProfileChallengeError(null, { cause });
|
|
282
|
+
}
|
|
283
|
+
const serverNonce = isObject(body) ? body.server_nonce : undefined;
|
|
284
|
+
const expiry = isObject(body) ? body.expiry : undefined;
|
|
285
|
+
if (typeof serverNonce !== "string" ||
|
|
286
|
+
!/^[0-9a-f]{64}$/.test(serverNonce) ||
|
|
287
|
+
typeof expiry !== "number" ||
|
|
288
|
+
!Number.isSafeInteger(expiry) ||
|
|
289
|
+
expiry < 0) {
|
|
290
|
+
throw new ProfileChallengeError(null);
|
|
291
|
+
}
|
|
292
|
+
return { server_nonce: serverNonce, expiry };
|
|
293
|
+
}
|
|
294
|
+
#buildForm(snapshot, challenge, signatureHex) {
|
|
295
|
+
const form = new FormData();
|
|
296
|
+
form.set("address", this.#signer.signerHex);
|
|
297
|
+
form.set("network", this.#config.networkId);
|
|
298
|
+
form.set("display_name", snapshot.displayName);
|
|
299
|
+
form.set("bio", snapshot.bio);
|
|
300
|
+
form.set("avatar_flag", snapshot.avatar.kind === "nochange"
|
|
301
|
+
? "0"
|
|
302
|
+
: snapshot.avatar.kind === "set"
|
|
303
|
+
? "1"
|
|
304
|
+
: "2");
|
|
305
|
+
form.set("expiry", String(challenge.expiry));
|
|
306
|
+
form.set("server_nonce", challenge.server_nonce);
|
|
307
|
+
form.set("signature", signatureHex);
|
|
308
|
+
if (snapshot.avatar.kind === "set" && snapshot.avatarFile) {
|
|
309
|
+
form.set("avatar", new Blob([snapshot.avatarFile.bytes], {
|
|
310
|
+
type: snapshot.avatarFile.type,
|
|
311
|
+
}), snapshot.avatarFile.name);
|
|
312
|
+
}
|
|
313
|
+
return form;
|
|
314
|
+
}
|
|
315
|
+
async #formSignatureMatches(form, signatureHex) {
|
|
316
|
+
const address = formString(form, "address");
|
|
317
|
+
const network = formString(form, "network");
|
|
318
|
+
const displayName = formString(form, "display_name");
|
|
319
|
+
const bio = formString(form, "bio");
|
|
320
|
+
const avatarFlag = formString(form, "avatar_flag");
|
|
321
|
+
const expiry = formString(form, "expiry");
|
|
322
|
+
const serverNonce = formString(form, "server_nonce");
|
|
323
|
+
if (address !== this.#signer.signerHex ||
|
|
324
|
+
network !== this.#config.networkId ||
|
|
325
|
+
displayName === null ||
|
|
326
|
+
bio === null ||
|
|
327
|
+
!/^(0|1|2)$/.test(avatarFlag ?? "") ||
|
|
328
|
+
!/^(0|[1-9][0-9]*)$/.test(expiry ?? "") ||
|
|
329
|
+
!/^[0-9a-f]{64}$/.test(serverNonce ?? "")) {
|
|
330
|
+
return false;
|
|
331
|
+
}
|
|
332
|
+
let avatar;
|
|
333
|
+
if (avatarFlag === "0")
|
|
334
|
+
avatar = { kind: "nochange" };
|
|
335
|
+
else if (avatarFlag === "2")
|
|
336
|
+
avatar = { kind: "clear" };
|
|
337
|
+
else {
|
|
338
|
+
const file = form.get("avatar");
|
|
339
|
+
if (!(file instanceof Blob))
|
|
340
|
+
return false;
|
|
341
|
+
avatar = {
|
|
342
|
+
kind: "set",
|
|
343
|
+
digest: sha256(new Uint8Array(await file.arrayBuffer())),
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
try {
|
|
347
|
+
const message = encodeProfileMessage({
|
|
348
|
+
address: this.#signer.publicKey,
|
|
349
|
+
network,
|
|
350
|
+
displayName,
|
|
351
|
+
bio,
|
|
352
|
+
avatar,
|
|
353
|
+
expiry: BigInt(expiry),
|
|
354
|
+
serverNonce: hexToBytes(serverNonce),
|
|
355
|
+
});
|
|
356
|
+
return verifyStrict(message, signatureHex, this.#signer.publicKey);
|
|
357
|
+
}
|
|
358
|
+
catch {
|
|
359
|
+
return false;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
//# sourceMappingURL=profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"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"}
|
package/dist/proofs.d.ts
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { ClaimService, RegisteredClaim } from "./claims.js";
|
|
2
|
+
import type { IdNetworkConfig } from "./networks.js";
|
|
3
|
+
import type { IdReads } from "./reads.js";
|
|
4
|
+
import type { Signer } from "./signer.js";
|
|
5
|
+
export type OAuthProvider = "github" | "orcid";
|
|
6
|
+
export interface ProofWaitOptions {
|
|
7
|
+
timeoutMs: number;
|
|
8
|
+
intervalMs: number;
|
|
9
|
+
signal?: AbortSignal;
|
|
10
|
+
}
|
|
11
|
+
export interface OAuthClaimInstructions {
|
|
12
|
+
url: string;
|
|
13
|
+
instructions: string;
|
|
14
|
+
}
|
|
15
|
+
export interface OAuthProofReady {
|
|
16
|
+
available: true;
|
|
17
|
+
provider: OAuthProvider;
|
|
18
|
+
value: string;
|
|
19
|
+
addressHex: string;
|
|
20
|
+
network: string;
|
|
21
|
+
}
|
|
22
|
+
export interface WebsiteClaimInstructions {
|
|
23
|
+
host: string;
|
|
24
|
+
proofUrl: string;
|
|
25
|
+
proofText: string;
|
|
26
|
+
instructions: string;
|
|
27
|
+
verifyAndSettle(options?: ProofWaitOptions): Promise<RegisteredClaim>;
|
|
28
|
+
}
|
|
29
|
+
export type XVerificationResult = {
|
|
30
|
+
verified: true;
|
|
31
|
+
settlement?: "committed" | "applied";
|
|
32
|
+
} | {
|
|
33
|
+
verified: false;
|
|
34
|
+
status: "failed" | "gone" | "unknown" | "retry" | "invalid" | "error" | "network_error";
|
|
35
|
+
reason?: string;
|
|
36
|
+
retryAfterSecs?: number;
|
|
37
|
+
};
|
|
38
|
+
export interface XProofPost {
|
|
39
|
+
text: string;
|
|
40
|
+
composerUrl: string;
|
|
41
|
+
}
|
|
42
|
+
export interface XClaimSession {
|
|
43
|
+
readonly status: "issued";
|
|
44
|
+
readonly handle: string;
|
|
45
|
+
readonly proofUrl: string;
|
|
46
|
+
readonly nonce: string;
|
|
47
|
+
readonly expiresAt: string;
|
|
48
|
+
getProofPost(): XProofPost;
|
|
49
|
+
verifyPost(postUrl: string): Promise<XVerificationResult>;
|
|
50
|
+
settle(): Promise<RegisteredClaim | {
|
|
51
|
+
status: "already-settled";
|
|
52
|
+
}>;
|
|
53
|
+
}
|
|
54
|
+
export type XClaimStart = XClaimSession | {
|
|
55
|
+
status: "already-settled";
|
|
56
|
+
};
|
|
57
|
+
interface ProofServiceOptions {
|
|
58
|
+
config: IdNetworkConfig;
|
|
59
|
+
signer: Signer;
|
|
60
|
+
reads: IdReads;
|
|
61
|
+
claims: ClaimService;
|
|
62
|
+
fetchImpl: typeof fetch;
|
|
63
|
+
}
|
|
64
|
+
interface SocialCommonFields {
|
|
65
|
+
address: Uint8Array;
|
|
66
|
+
network: string;
|
|
67
|
+
kind: string;
|
|
68
|
+
value: string;
|
|
69
|
+
expiryUnixSecs: bigint;
|
|
70
|
+
serverNonce: Uint8Array;
|
|
71
|
+
}
|
|
72
|
+
export interface SocialIntentMessageFields extends SocialCommonFields {
|
|
73
|
+
replacesNonce?: Uint8Array;
|
|
74
|
+
}
|
|
75
|
+
export interface SocialCommitMessageFields extends SocialCommonFields {
|
|
76
|
+
proofNonce: Uint8Array;
|
|
77
|
+
}
|
|
78
|
+
export declare function encodeSocialIntentMessage(fields: SocialIntentMessageFields): Uint8Array;
|
|
79
|
+
export declare function encodeSocialProofMessage(fields: SocialIntentMessageFields): Uint8Array;
|
|
80
|
+
export declare function encodeSocialCommitMessage(fields: SocialCommitMessageFields): Uint8Array;
|
|
81
|
+
export declare class ProofService {
|
|
82
|
+
#private;
|
|
83
|
+
constructor(options: ProofServiceOptions);
|
|
84
|
+
oauthClaimInstructions(provider: OAuthProvider): OAuthClaimInstructions;
|
|
85
|
+
waitForOAuthProof(provider: OAuthProvider, rawValue: string, options: ProofWaitOptions): Promise<OAuthProofReady>;
|
|
86
|
+
settleOAuthClaim(provider: OAuthProvider, rawValue: string): Promise<RegisteredClaim>;
|
|
87
|
+
forgetOAuthSettlement(provider: OAuthProvider, rawValue: string): void;
|
|
88
|
+
claimWebsite(rawHost: string): WebsiteClaimInstructions;
|
|
89
|
+
startXClaim(rawHandle: string): Promise<XClaimStart>;
|
|
90
|
+
}
|
|
91
|
+
export {};
|
|
92
|
+
//# sourceMappingURL=proofs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proofs.d.ts","sourceRoot":"","sources":["../src/proofs.ts"],"names":[],"mappings":"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"}
|