@privy-io/node 0.1.0-alpha.3 → 0.2.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/CHANGELOG.md +38 -0
- package/client.d.mts +1 -1
- package/client.d.ts +1 -1
- package/client.js +1 -1
- package/client.js.map +1 -1
- package/client.mjs +1 -1
- package/client.mjs.map +1 -1
- package/index.d.mts +6 -1
- package/index.d.mts.map +1 -1
- package/index.d.ts +6 -1
- package/index.d.ts.map +1 -1
- package/index.js +6 -2
- package/index.js.map +1 -1
- package/index.mjs +2 -1
- package/index.mjs.map +1 -1
- package/lib/auth.d.mts +68 -0
- package/lib/auth.d.mts.map +1 -0
- package/lib/auth.d.ts +68 -0
- package/lib/auth.d.ts.map +1 -0
- package/lib/auth.js +130 -0
- package/lib/auth.js.map +1 -0
- package/lib/auth.mjs +123 -0
- package/lib/auth.mjs.map +1 -0
- package/lib/cryptography.d.mts +3 -0
- package/lib/cryptography.d.mts.map +1 -1
- package/lib/cryptography.d.ts +3 -0
- package/lib/cryptography.d.ts.map +1 -1
- package/lib/cryptography.js +8 -1
- package/lib/cryptography.js.map +1 -1
- package/lib/cryptography.mjs +7 -1
- package/lib/cryptography.mjs.map +1 -1
- package/lib/identity-token.d.mts +15 -0
- package/lib/identity-token.d.mts.map +1 -0
- package/lib/identity-token.d.ts +15 -0
- package/lib/identity-token.d.ts.map +1 -0
- package/lib/identity-token.js +273 -0
- package/lib/identity-token.js.map +1 -0
- package/lib/identity-token.mjs +268 -0
- package/lib/identity-token.mjs.map +1 -0
- package/lib/user-utils.d.mts +22 -0
- package/lib/user-utils.d.mts.map +1 -0
- package/lib/user-utils.d.ts +22 -0
- package/lib/user-utils.d.ts.map +1 -0
- package/lib/user-utils.js +15 -0
- package/lib/user-utils.js.map +1 -0
- package/lib/user-utils.mjs +11 -0
- package/lib/user-utils.mjs.map +1 -0
- package/package.json +1 -1
- package/public-api/PrivyClient.d.mts +2 -1
- package/public-api/PrivyClient.d.mts.map +1 -1
- package/public-api/PrivyClient.d.ts +2 -1
- package/public-api/PrivyClient.d.ts.map +1 -1
- package/public-api/PrivyClient.js +10 -3
- package/public-api/PrivyClient.js.map +1 -1
- package/public-api/PrivyClient.mjs +10 -3
- package/public-api/PrivyClient.mjs.map +1 -1
- package/public-api/services/ethereum.d.mts.map +1 -1
- package/public-api/services/ethereum.d.ts.map +1 -1
- package/public-api/services/ethereum.js +0 -6
- package/public-api/services/ethereum.js.map +1 -1
- package/public-api/services/ethereum.mjs +0 -6
- package/public-api/services/ethereum.mjs.map +1 -1
- package/public-api/services/solana.d.mts.map +1 -1
- package/public-api/services/solana.d.ts.map +1 -1
- package/public-api/services/solana.js +0 -3
- package/public-api/services/solana.js.map +1 -1
- package/public-api/services/solana.mjs +0 -3
- package/public-api/services/solana.mjs.map +1 -1
- package/public-api/services/users.d.mts +23 -1
- package/public-api/services/users.d.mts.map +1 -1
- package/public-api/services/users.d.ts +23 -1
- package/public-api/services/users.d.ts.map +1 -1
- package/public-api/services/users.js +24 -0
- package/public-api/services/users.js.map +1 -1
- package/public-api/services/users.mjs +24 -0
- package/public-api/services/users.mjs.map +1 -1
- package/public-api/services/utils/auth.d.mts +6 -17
- package/public-api/services/utils/auth.d.mts.map +1 -1
- package/public-api/services/utils/auth.d.ts +6 -17
- package/public-api/services/utils/auth.d.ts.map +1 -1
- package/public-api/services/utils/auth.js +17 -69
- package/public-api/services/utils/auth.js.map +1 -1
- package/public-api/services/utils/auth.mjs +15 -66
- package/public-api/services/utils/auth.mjs.map +1 -1
- package/public-api/services/utils.d.mts +2 -1
- package/public-api/services/utils.d.mts.map +1 -1
- package/public-api/services/utils.d.ts +2 -1
- package/public-api/services/utils.d.ts.map +1 -1
- package/public-api/services/utils.js +2 -2
- package/public-api/services/utils.js.map +1 -1
- package/public-api/services/utils.mjs +2 -2
- package/public-api/services/utils.mjs.map +1 -1
- package/resources/policies.d.mts +2 -1
- package/resources/policies.d.mts.map +1 -1
- package/resources/policies.d.ts +2 -1
- package/resources/policies.d.ts.map +1 -1
- package/resources/users.d.mts +16 -5
- package/resources/users.d.mts.map +1 -1
- package/resources/users.d.ts +16 -5
- package/resources/users.d.ts.map +1 -1
- package/resources/users.js +2 -2
- package/resources/users.js.map +1 -1
- package/resources/users.mjs +2 -2
- package/resources/users.mjs.map +1 -1
- package/resources/wallets/wallets.d.mts +7 -22
- package/resources/wallets/wallets.d.mts.map +1 -1
- package/resources/wallets/wallets.d.ts +7 -22
- package/resources/wallets/wallets.d.ts.map +1 -1
- package/resources/wallets/wallets.js.map +1 -1
- package/resources/wallets/wallets.mjs.map +1 -1
- package/src/client.ts +2 -2
- package/src/index.ts +15 -1
- package/src/lib/auth.ts +210 -0
- package/src/lib/cryptography.ts +9 -1
- package/src/lib/identity-token.ts +280 -0
- package/src/lib/user-utils.ts +31 -0
- package/src/public-api/PrivyClient.ts +12 -2
- package/src/public-api/services/ethereum.ts +0 -8
- package/src/public-api/services/solana.ts +0 -4
- package/src/public-api/services/users.ts +36 -2
- package/src/public-api/services/utils/auth.ts +22 -86
- package/src/public-api/services/utils.ts +3 -2
- package/src/resources/policies.ts +2 -1
- package/src/resources/users.ts +27 -3
- package/src/resources/wallets/wallets.ts +14 -33
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.mts.map +1 -1
- package/version.d.ts +1 -1
- package/version.d.ts.map +1 -1
- package/version.js +1 -1
- package/version.js.map +1 -1
- package/version.mjs +1 -1
- package/version.mjs.map +1 -1
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvalidIdentityTokenError = void 0;
|
|
4
|
+
exports.parseUserFromIdentityTokenPayload = parseUserFromIdentityTokenPayload;
|
|
5
|
+
const error_1 = require("../error.js");
|
|
6
|
+
/**
|
|
7
|
+
* Parses the payload of an identity token (JWT) into a `User` object.
|
|
8
|
+
* Note that the user object may be incomplete due to the size constraints of the identity token.
|
|
9
|
+
*
|
|
10
|
+
* @param payload The payload of the identity token.
|
|
11
|
+
* @returns The user object parsed from the identity token.
|
|
12
|
+
* @throws If the payload is invalid.
|
|
13
|
+
*/
|
|
14
|
+
function parseUserFromIdentityTokenPayload(payload) {
|
|
15
|
+
const customMetadata = parseCustomMetadataClaim(payload);
|
|
16
|
+
return {
|
|
17
|
+
id: payload.sub,
|
|
18
|
+
created_at: parseInt(payload['cr']),
|
|
19
|
+
is_guest: payload['guest'] === 't',
|
|
20
|
+
linked_accounts: parseLinkedAccountsClaim(payload),
|
|
21
|
+
...(customMetadata ? { custom_metadata: customMetadata } : {}),
|
|
22
|
+
has_accepted_terms: false,
|
|
23
|
+
mfa_methods: [],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function parseLinkedAccountsClaim(payload) {
|
|
27
|
+
const linkedAccountsClaim = payload['linked_accounts'];
|
|
28
|
+
if (typeof linkedAccountsClaim !== 'string') {
|
|
29
|
+
throw new InvalidIdentityTokenError('Unable to parse identity token');
|
|
30
|
+
}
|
|
31
|
+
const parsedLinkedAccounts = JSON.parse(linkedAccountsClaim);
|
|
32
|
+
if (!Array.isArray(parsedLinkedAccounts)) {
|
|
33
|
+
throw new InvalidIdentityTokenError('Unable to parse identity token');
|
|
34
|
+
}
|
|
35
|
+
return parsedLinkedAccounts
|
|
36
|
+
.map(mapIdLinkedAccountToUserLinkedAccount)
|
|
37
|
+
.filter((account) => account !== null);
|
|
38
|
+
}
|
|
39
|
+
function mapIdLinkedAccountToUserLinkedAccount(account) {
|
|
40
|
+
if (account.type === 'email') {
|
|
41
|
+
return {
|
|
42
|
+
type: 'email',
|
|
43
|
+
address: account.address,
|
|
44
|
+
first_verified_at: null,
|
|
45
|
+
verified_at: account.lv,
|
|
46
|
+
latest_verified_at: account.lv,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
if (account.type === 'phone') {
|
|
50
|
+
return {
|
|
51
|
+
type: 'phone',
|
|
52
|
+
phoneNumber: account.phone_number,
|
|
53
|
+
first_verified_at: null,
|
|
54
|
+
verified_at: account.lv,
|
|
55
|
+
latest_verified_at: account.lv,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
// Parses all wallet types
|
|
59
|
+
if (account.type === 'wallet') {
|
|
60
|
+
if (account.wallet_client_type === 'privy') {
|
|
61
|
+
return {
|
|
62
|
+
type: 'wallet',
|
|
63
|
+
wallet_client_type: 'privy',
|
|
64
|
+
wallet_client: 'privy',
|
|
65
|
+
connector_type: 'embedded',
|
|
66
|
+
id: account.id,
|
|
67
|
+
address: account.address,
|
|
68
|
+
chain_type: account.chain_type,
|
|
69
|
+
first_verified_at: null,
|
|
70
|
+
verified_at: account.lv,
|
|
71
|
+
latest_verified_at: account.lv,
|
|
72
|
+
// The following fields are not present in the identity token,
|
|
73
|
+
// but are required. We set them to some safe defaults.
|
|
74
|
+
chain_id: '',
|
|
75
|
+
delegated: false,
|
|
76
|
+
imported: false,
|
|
77
|
+
public_key: '',
|
|
78
|
+
wallet_index: 0,
|
|
79
|
+
recovery_method: account.id ? 'privy-v2' : 'privy',
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
type: 'wallet',
|
|
84
|
+
wallet_client: 'unknown',
|
|
85
|
+
address: account.address,
|
|
86
|
+
chain_type: account.chain_type,
|
|
87
|
+
first_verified_at: null,
|
|
88
|
+
verified_at: account.lv,
|
|
89
|
+
latest_verified_at: account.lv,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
if (account.type === 'smart_wallet') {
|
|
93
|
+
return {
|
|
94
|
+
type: 'smart_wallet',
|
|
95
|
+
address: account.address,
|
|
96
|
+
smart_wallet_type: account.smart_wallet_type,
|
|
97
|
+
first_verified_at: null,
|
|
98
|
+
verified_at: account.lv,
|
|
99
|
+
latest_verified_at: account.lv,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
if (account.type === 'farcaster') {
|
|
103
|
+
return {
|
|
104
|
+
type: 'farcaster',
|
|
105
|
+
fid: account.fid,
|
|
106
|
+
username: account.username,
|
|
107
|
+
first_verified_at: null,
|
|
108
|
+
verified_at: account.lv,
|
|
109
|
+
latest_verified_at: account.lv,
|
|
110
|
+
owner_address: account.oa,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
if (account.type === 'google_oauth') {
|
|
114
|
+
return {
|
|
115
|
+
type: 'google_oauth',
|
|
116
|
+
subject: account.subject,
|
|
117
|
+
email: account.email,
|
|
118
|
+
name: account.name,
|
|
119
|
+
first_verified_at: null,
|
|
120
|
+
verified_at: account.lv,
|
|
121
|
+
latest_verified_at: account.lv,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
if (account.type === 'twitter_oauth') {
|
|
125
|
+
// We send along three potential URL shapes here based on possible profile picture URLs, all
|
|
126
|
+
// done to preserve size.
|
|
127
|
+
// 1. pfp begins with `default`, in which case we use the default profile picture URL structure
|
|
128
|
+
// 2. pfp does not start with https, in which case we assume the profile picture URL structure
|
|
129
|
+
// 3. Otherwise, we use the pfp URL as-is
|
|
130
|
+
let pfp = account.pfp ? account.pfp : null;
|
|
131
|
+
if (pfp?.startsWith('default')) {
|
|
132
|
+
pfp = `https://abs.twimg.com/sticky/default_profile_images/${pfp}`;
|
|
133
|
+
}
|
|
134
|
+
else if (!pfp?.startsWith('https://')) {
|
|
135
|
+
pfp = `https://pbs.twimg.com/profile_images/${pfp}`;
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
type: 'twitter_oauth',
|
|
139
|
+
subject: account.subject,
|
|
140
|
+
username: account.username,
|
|
141
|
+
name: account.name ? account.name : null,
|
|
142
|
+
profile_picture_url: pfp,
|
|
143
|
+
first_verified_at: null,
|
|
144
|
+
verified_at: account.lv,
|
|
145
|
+
latest_verified_at: account.lv,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
if (account.type === 'discord_oauth') {
|
|
149
|
+
return {
|
|
150
|
+
type: 'discord_oauth',
|
|
151
|
+
subject: account.subject,
|
|
152
|
+
username: account.username,
|
|
153
|
+
email: null, // not a part of the identity token
|
|
154
|
+
first_verified_at: null,
|
|
155
|
+
verified_at: account.lv,
|
|
156
|
+
latest_verified_at: account.lv,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
if (account.type === 'github_oauth') {
|
|
160
|
+
return {
|
|
161
|
+
type: 'github_oauth',
|
|
162
|
+
subject: account.subject,
|
|
163
|
+
username: account.username,
|
|
164
|
+
email: null, // not a part of the identity token
|
|
165
|
+
name: null, // not a part of the identity token
|
|
166
|
+
first_verified_at: null,
|
|
167
|
+
verified_at: account.lv,
|
|
168
|
+
latest_verified_at: account.lv,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
if (account.type === 'spotify_oauth') {
|
|
172
|
+
return {
|
|
173
|
+
type: 'spotify_oauth',
|
|
174
|
+
subject: account.subject,
|
|
175
|
+
email: null, // not a part of the identity token
|
|
176
|
+
name: null, // not a part of the identity token
|
|
177
|
+
first_verified_at: null,
|
|
178
|
+
verified_at: account.lv,
|
|
179
|
+
latest_verified_at: account.lv,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
if (account.type === 'instagram_oauth') {
|
|
183
|
+
return {
|
|
184
|
+
type: 'instagram_oauth',
|
|
185
|
+
subject: account.subject,
|
|
186
|
+
username: account.username,
|
|
187
|
+
first_verified_at: null,
|
|
188
|
+
verified_at: account.lv,
|
|
189
|
+
latest_verified_at: account.lv,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
if (account.type === 'tiktok_oauth') {
|
|
193
|
+
return {
|
|
194
|
+
type: 'tiktok_oauth',
|
|
195
|
+
subject: account.subject,
|
|
196
|
+
username: account.username,
|
|
197
|
+
name: null, // not a part of the identity token
|
|
198
|
+
first_verified_at: null,
|
|
199
|
+
verified_at: account.lv,
|
|
200
|
+
latest_verified_at: account.lv,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
if (account.type === 'linkedin_oauth') {
|
|
204
|
+
return {
|
|
205
|
+
type: 'linkedin_oauth',
|
|
206
|
+
subject: account.subject,
|
|
207
|
+
email: account.email,
|
|
208
|
+
first_verified_at: null,
|
|
209
|
+
verified_at: account.lv,
|
|
210
|
+
latest_verified_at: account.lv,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
if (account.type === 'apple_oauth') {
|
|
214
|
+
return {
|
|
215
|
+
type: 'apple_oauth',
|
|
216
|
+
subject: account.subject,
|
|
217
|
+
email: account.email,
|
|
218
|
+
first_verified_at: null,
|
|
219
|
+
verified_at: account.lv,
|
|
220
|
+
latest_verified_at: account.lv,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
if (account.type === 'cross_app') {
|
|
224
|
+
return {
|
|
225
|
+
type: 'cross_app',
|
|
226
|
+
subject: account.subject,
|
|
227
|
+
provider_app_id: account.provider_app_id,
|
|
228
|
+
embedded_wallets: account.embedded_wallets,
|
|
229
|
+
smart_wallets: account.smart_wallets,
|
|
230
|
+
first_verified_at: null,
|
|
231
|
+
verified_at: account.lv,
|
|
232
|
+
latest_verified_at: account.lv,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
if (account.type === 'custom_auth') {
|
|
236
|
+
return {
|
|
237
|
+
type: 'custom_auth',
|
|
238
|
+
custom_user_id: account.custom_user_id,
|
|
239
|
+
first_verified_at: null,
|
|
240
|
+
verified_at: account.lv,
|
|
241
|
+
latest_verified_at: account.lv,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
if (account.type === 'telegram') {
|
|
245
|
+
return {
|
|
246
|
+
type: 'telegram',
|
|
247
|
+
telegram_user_id: account.telegram_user_id,
|
|
248
|
+
username: account.username,
|
|
249
|
+
first_verified_at: null,
|
|
250
|
+
verified_at: account.lv,
|
|
251
|
+
latest_verified_at: account.lv,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
return null;
|
|
255
|
+
}
|
|
256
|
+
function parseCustomMetadataClaim(payload) {
|
|
257
|
+
const customMetadataClaim = payload['custom_metadata'];
|
|
258
|
+
if (customMetadataClaim === undefined) {
|
|
259
|
+
return undefined;
|
|
260
|
+
}
|
|
261
|
+
if (typeof customMetadataClaim !== 'string') {
|
|
262
|
+
throw new InvalidIdentityTokenError('Unable to parse identity token');
|
|
263
|
+
}
|
|
264
|
+
const parsedCustomMetadata = JSON.parse(customMetadataClaim);
|
|
265
|
+
if (!parsedCustomMetadata || typeof parsedCustomMetadata !== 'object') {
|
|
266
|
+
throw new InvalidIdentityTokenError('Unable to parse identity token');
|
|
267
|
+
}
|
|
268
|
+
return parsedCustomMetadata;
|
|
269
|
+
}
|
|
270
|
+
class InvalidIdentityTokenError extends error_1.PrivyAPIError {
|
|
271
|
+
}
|
|
272
|
+
exports.InvalidIdentityTokenError = InvalidIdentityTokenError;
|
|
273
|
+
//# sourceMappingURL=identity-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity-token.js","sourceRoot":"","sources":["../src/lib/identity-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { PrivyAPIError } from "../error.mjs";
|
|
2
|
+
/**
|
|
3
|
+
* Parses the payload of an identity token (JWT) into a `User` object.
|
|
4
|
+
* Note that the user object may be incomplete due to the size constraints of the identity token.
|
|
5
|
+
*
|
|
6
|
+
* @param payload The payload of the identity token.
|
|
7
|
+
* @returns The user object parsed from the identity token.
|
|
8
|
+
* @throws If the payload is invalid.
|
|
9
|
+
*/
|
|
10
|
+
export function parseUserFromIdentityTokenPayload(payload) {
|
|
11
|
+
const customMetadata = parseCustomMetadataClaim(payload);
|
|
12
|
+
return {
|
|
13
|
+
id: payload.sub,
|
|
14
|
+
created_at: parseInt(payload['cr']),
|
|
15
|
+
is_guest: payload['guest'] === 't',
|
|
16
|
+
linked_accounts: parseLinkedAccountsClaim(payload),
|
|
17
|
+
...(customMetadata ? { custom_metadata: customMetadata } : {}),
|
|
18
|
+
has_accepted_terms: false,
|
|
19
|
+
mfa_methods: [],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function parseLinkedAccountsClaim(payload) {
|
|
23
|
+
const linkedAccountsClaim = payload['linked_accounts'];
|
|
24
|
+
if (typeof linkedAccountsClaim !== 'string') {
|
|
25
|
+
throw new InvalidIdentityTokenError('Unable to parse identity token');
|
|
26
|
+
}
|
|
27
|
+
const parsedLinkedAccounts = JSON.parse(linkedAccountsClaim);
|
|
28
|
+
if (!Array.isArray(parsedLinkedAccounts)) {
|
|
29
|
+
throw new InvalidIdentityTokenError('Unable to parse identity token');
|
|
30
|
+
}
|
|
31
|
+
return parsedLinkedAccounts
|
|
32
|
+
.map(mapIdLinkedAccountToUserLinkedAccount)
|
|
33
|
+
.filter((account) => account !== null);
|
|
34
|
+
}
|
|
35
|
+
function mapIdLinkedAccountToUserLinkedAccount(account) {
|
|
36
|
+
if (account.type === 'email') {
|
|
37
|
+
return {
|
|
38
|
+
type: 'email',
|
|
39
|
+
address: account.address,
|
|
40
|
+
first_verified_at: null,
|
|
41
|
+
verified_at: account.lv,
|
|
42
|
+
latest_verified_at: account.lv,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
if (account.type === 'phone') {
|
|
46
|
+
return {
|
|
47
|
+
type: 'phone',
|
|
48
|
+
phoneNumber: account.phone_number,
|
|
49
|
+
first_verified_at: null,
|
|
50
|
+
verified_at: account.lv,
|
|
51
|
+
latest_verified_at: account.lv,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
// Parses all wallet types
|
|
55
|
+
if (account.type === 'wallet') {
|
|
56
|
+
if (account.wallet_client_type === 'privy') {
|
|
57
|
+
return {
|
|
58
|
+
type: 'wallet',
|
|
59
|
+
wallet_client_type: 'privy',
|
|
60
|
+
wallet_client: 'privy',
|
|
61
|
+
connector_type: 'embedded',
|
|
62
|
+
id: account.id,
|
|
63
|
+
address: account.address,
|
|
64
|
+
chain_type: account.chain_type,
|
|
65
|
+
first_verified_at: null,
|
|
66
|
+
verified_at: account.lv,
|
|
67
|
+
latest_verified_at: account.lv,
|
|
68
|
+
// The following fields are not present in the identity token,
|
|
69
|
+
// but are required. We set them to some safe defaults.
|
|
70
|
+
chain_id: '',
|
|
71
|
+
delegated: false,
|
|
72
|
+
imported: false,
|
|
73
|
+
public_key: '',
|
|
74
|
+
wallet_index: 0,
|
|
75
|
+
recovery_method: account.id ? 'privy-v2' : 'privy',
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
type: 'wallet',
|
|
80
|
+
wallet_client: 'unknown',
|
|
81
|
+
address: account.address,
|
|
82
|
+
chain_type: account.chain_type,
|
|
83
|
+
first_verified_at: null,
|
|
84
|
+
verified_at: account.lv,
|
|
85
|
+
latest_verified_at: account.lv,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
if (account.type === 'smart_wallet') {
|
|
89
|
+
return {
|
|
90
|
+
type: 'smart_wallet',
|
|
91
|
+
address: account.address,
|
|
92
|
+
smart_wallet_type: account.smart_wallet_type,
|
|
93
|
+
first_verified_at: null,
|
|
94
|
+
verified_at: account.lv,
|
|
95
|
+
latest_verified_at: account.lv,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
if (account.type === 'farcaster') {
|
|
99
|
+
return {
|
|
100
|
+
type: 'farcaster',
|
|
101
|
+
fid: account.fid,
|
|
102
|
+
username: account.username,
|
|
103
|
+
first_verified_at: null,
|
|
104
|
+
verified_at: account.lv,
|
|
105
|
+
latest_verified_at: account.lv,
|
|
106
|
+
owner_address: account.oa,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
if (account.type === 'google_oauth') {
|
|
110
|
+
return {
|
|
111
|
+
type: 'google_oauth',
|
|
112
|
+
subject: account.subject,
|
|
113
|
+
email: account.email,
|
|
114
|
+
name: account.name,
|
|
115
|
+
first_verified_at: null,
|
|
116
|
+
verified_at: account.lv,
|
|
117
|
+
latest_verified_at: account.lv,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
if (account.type === 'twitter_oauth') {
|
|
121
|
+
// We send along three potential URL shapes here based on possible profile picture URLs, all
|
|
122
|
+
// done to preserve size.
|
|
123
|
+
// 1. pfp begins with `default`, in which case we use the default profile picture URL structure
|
|
124
|
+
// 2. pfp does not start with https, in which case we assume the profile picture URL structure
|
|
125
|
+
// 3. Otherwise, we use the pfp URL as-is
|
|
126
|
+
let pfp = account.pfp ? account.pfp : null;
|
|
127
|
+
if (pfp?.startsWith('default')) {
|
|
128
|
+
pfp = `https://abs.twimg.com/sticky/default_profile_images/${pfp}`;
|
|
129
|
+
}
|
|
130
|
+
else if (!pfp?.startsWith('https://')) {
|
|
131
|
+
pfp = `https://pbs.twimg.com/profile_images/${pfp}`;
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
type: 'twitter_oauth',
|
|
135
|
+
subject: account.subject,
|
|
136
|
+
username: account.username,
|
|
137
|
+
name: account.name ? account.name : null,
|
|
138
|
+
profile_picture_url: pfp,
|
|
139
|
+
first_verified_at: null,
|
|
140
|
+
verified_at: account.lv,
|
|
141
|
+
latest_verified_at: account.lv,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
if (account.type === 'discord_oauth') {
|
|
145
|
+
return {
|
|
146
|
+
type: 'discord_oauth',
|
|
147
|
+
subject: account.subject,
|
|
148
|
+
username: account.username,
|
|
149
|
+
email: null, // not a part of the identity token
|
|
150
|
+
first_verified_at: null,
|
|
151
|
+
verified_at: account.lv,
|
|
152
|
+
latest_verified_at: account.lv,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
if (account.type === 'github_oauth') {
|
|
156
|
+
return {
|
|
157
|
+
type: 'github_oauth',
|
|
158
|
+
subject: account.subject,
|
|
159
|
+
username: account.username,
|
|
160
|
+
email: null, // not a part of the identity token
|
|
161
|
+
name: null, // not a part of the identity token
|
|
162
|
+
first_verified_at: null,
|
|
163
|
+
verified_at: account.lv,
|
|
164
|
+
latest_verified_at: account.lv,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
if (account.type === 'spotify_oauth') {
|
|
168
|
+
return {
|
|
169
|
+
type: 'spotify_oauth',
|
|
170
|
+
subject: account.subject,
|
|
171
|
+
email: null, // not a part of the identity token
|
|
172
|
+
name: null, // not a part of the identity token
|
|
173
|
+
first_verified_at: null,
|
|
174
|
+
verified_at: account.lv,
|
|
175
|
+
latest_verified_at: account.lv,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
if (account.type === 'instagram_oauth') {
|
|
179
|
+
return {
|
|
180
|
+
type: 'instagram_oauth',
|
|
181
|
+
subject: account.subject,
|
|
182
|
+
username: account.username,
|
|
183
|
+
first_verified_at: null,
|
|
184
|
+
verified_at: account.lv,
|
|
185
|
+
latest_verified_at: account.lv,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
if (account.type === 'tiktok_oauth') {
|
|
189
|
+
return {
|
|
190
|
+
type: 'tiktok_oauth',
|
|
191
|
+
subject: account.subject,
|
|
192
|
+
username: account.username,
|
|
193
|
+
name: null, // not a part of the identity token
|
|
194
|
+
first_verified_at: null,
|
|
195
|
+
verified_at: account.lv,
|
|
196
|
+
latest_verified_at: account.lv,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
if (account.type === 'linkedin_oauth') {
|
|
200
|
+
return {
|
|
201
|
+
type: 'linkedin_oauth',
|
|
202
|
+
subject: account.subject,
|
|
203
|
+
email: account.email,
|
|
204
|
+
first_verified_at: null,
|
|
205
|
+
verified_at: account.lv,
|
|
206
|
+
latest_verified_at: account.lv,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
if (account.type === 'apple_oauth') {
|
|
210
|
+
return {
|
|
211
|
+
type: 'apple_oauth',
|
|
212
|
+
subject: account.subject,
|
|
213
|
+
email: account.email,
|
|
214
|
+
first_verified_at: null,
|
|
215
|
+
verified_at: account.lv,
|
|
216
|
+
latest_verified_at: account.lv,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
if (account.type === 'cross_app') {
|
|
220
|
+
return {
|
|
221
|
+
type: 'cross_app',
|
|
222
|
+
subject: account.subject,
|
|
223
|
+
provider_app_id: account.provider_app_id,
|
|
224
|
+
embedded_wallets: account.embedded_wallets,
|
|
225
|
+
smart_wallets: account.smart_wallets,
|
|
226
|
+
first_verified_at: null,
|
|
227
|
+
verified_at: account.lv,
|
|
228
|
+
latest_verified_at: account.lv,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
if (account.type === 'custom_auth') {
|
|
232
|
+
return {
|
|
233
|
+
type: 'custom_auth',
|
|
234
|
+
custom_user_id: account.custom_user_id,
|
|
235
|
+
first_verified_at: null,
|
|
236
|
+
verified_at: account.lv,
|
|
237
|
+
latest_verified_at: account.lv,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
if (account.type === 'telegram') {
|
|
241
|
+
return {
|
|
242
|
+
type: 'telegram',
|
|
243
|
+
telegram_user_id: account.telegram_user_id,
|
|
244
|
+
username: account.username,
|
|
245
|
+
first_verified_at: null,
|
|
246
|
+
verified_at: account.lv,
|
|
247
|
+
latest_verified_at: account.lv,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
return null;
|
|
251
|
+
}
|
|
252
|
+
function parseCustomMetadataClaim(payload) {
|
|
253
|
+
const customMetadataClaim = payload['custom_metadata'];
|
|
254
|
+
if (customMetadataClaim === undefined) {
|
|
255
|
+
return undefined;
|
|
256
|
+
}
|
|
257
|
+
if (typeof customMetadataClaim !== 'string') {
|
|
258
|
+
throw new InvalidIdentityTokenError('Unable to parse identity token');
|
|
259
|
+
}
|
|
260
|
+
const parsedCustomMetadata = JSON.parse(customMetadataClaim);
|
|
261
|
+
if (!parsedCustomMetadata || typeof parsedCustomMetadata !== 'object') {
|
|
262
|
+
throw new InvalidIdentityTokenError('Unable to parse identity token');
|
|
263
|
+
}
|
|
264
|
+
return parsedCustomMetadata;
|
|
265
|
+
}
|
|
266
|
+
export class InvalidIdentityTokenError extends PrivyAPIError {
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=identity-token.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity-token.mjs","sourceRoot":"","sources":["../src/lib/identity-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { User } from "../resources/users.mjs";
|
|
2
|
+
export type LinkedAccount = User['linked_accounts'][number];
|
|
3
|
+
export type ExternalWalletLinkedAccount = Exclude<Extract<LinkedAccount, {
|
|
4
|
+
type: 'wallet';
|
|
5
|
+
}>, EmbeddedWalletLinkedAccount>;
|
|
6
|
+
/**
|
|
7
|
+
* An embedded wallet linked account is a wallet owned by the user that can be used with the Privy API.
|
|
8
|
+
*/
|
|
9
|
+
export type EmbeddedWalletLinkedAccount = Extract<LinkedAccount, {
|
|
10
|
+
type: 'wallet';
|
|
11
|
+
wallet_client_type: 'privy';
|
|
12
|
+
connector_type: 'embedded';
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* Determines if a given linked account is an embedded wallet account.
|
|
16
|
+
* Embedded wallet accounts are wallets that can be used with the Privy API.
|
|
17
|
+
*
|
|
18
|
+
* @param account a linked account
|
|
19
|
+
* @returns whether the account is an embedded wallet account
|
|
20
|
+
*/
|
|
21
|
+
export declare const isEmbeddedWalletLinkedAccount: (account: User["linked_accounts"][number]) => account is EmbeddedWalletLinkedAccount;
|
|
22
|
+
//# sourceMappingURL=user-utils.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-utils.d.mts","sourceRoot":"","sources":["../src/lib/user-utils.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,IAAI,EAAE;AAEpB,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAG5D,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAC/C,OAAO,CAAC,aAAa,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,EAC1C,2BAA2B,CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAC/C,aAAa,EACb;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,kBAAkB,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,UAAU,CAAA;CAAE,CAC5E,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,GACxC,SAAS,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,KACvC,OAAO,IAAI,2BAGyB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { User } from "../resources/users.js";
|
|
2
|
+
export type LinkedAccount = User['linked_accounts'][number];
|
|
3
|
+
export type ExternalWalletLinkedAccount = Exclude<Extract<LinkedAccount, {
|
|
4
|
+
type: 'wallet';
|
|
5
|
+
}>, EmbeddedWalletLinkedAccount>;
|
|
6
|
+
/**
|
|
7
|
+
* An embedded wallet linked account is a wallet owned by the user that can be used with the Privy API.
|
|
8
|
+
*/
|
|
9
|
+
export type EmbeddedWalletLinkedAccount = Extract<LinkedAccount, {
|
|
10
|
+
type: 'wallet';
|
|
11
|
+
wallet_client_type: 'privy';
|
|
12
|
+
connector_type: 'embedded';
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* Determines if a given linked account is an embedded wallet account.
|
|
16
|
+
* Embedded wallet accounts are wallets that can be used with the Privy API.
|
|
17
|
+
*
|
|
18
|
+
* @param account a linked account
|
|
19
|
+
* @returns whether the account is an embedded wallet account
|
|
20
|
+
*/
|
|
21
|
+
export declare const isEmbeddedWalletLinkedAccount: (account: User["linked_accounts"][number]) => account is EmbeddedWalletLinkedAccount;
|
|
22
|
+
//# sourceMappingURL=user-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-utils.d.ts","sourceRoot":"","sources":["../src/lib/user-utils.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,IAAI,EAAE;AAEpB,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAG5D,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAC/C,OAAO,CAAC,aAAa,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,EAC1C,2BAA2B,CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAC/C,aAAa,EACb;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,kBAAkB,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,UAAU,CAAA;CAAE,CAC5E,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,GACxC,SAAS,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,KACvC,OAAO,IAAI,2BAGyB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isEmbeddedWalletLinkedAccount = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Determines if a given linked account is an embedded wallet account.
|
|
6
|
+
* Embedded wallet accounts are wallets that can be used with the Privy API.
|
|
7
|
+
*
|
|
8
|
+
* @param account a linked account
|
|
9
|
+
* @returns whether the account is an embedded wallet account
|
|
10
|
+
*/
|
|
11
|
+
const isEmbeddedWalletLinkedAccount = (account) => account.type === 'wallet' &&
|
|
12
|
+
account.wallet_client_type === 'privy' &&
|
|
13
|
+
account.connector_type === 'embedded';
|
|
14
|
+
exports.isEmbeddedWalletLinkedAccount = isEmbeddedWalletLinkedAccount;
|
|
15
|
+
//# sourceMappingURL=user-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-utils.js","sourceRoot":"","sources":["../src/lib/user-utils.ts"],"names":[],"mappings":";;;AAkBA;;;;;;GAMG;AACI,MAAM,6BAA6B,GAAG,CAC3C,OAAwC,EACA,EAAE,CAC1C,OAAO,CAAC,IAAI,KAAK,QAAQ;IACzB,OAAO,CAAC,kBAAkB,KAAK,OAAO;IACtC,OAAO,CAAC,cAAc,KAAK,UAAU,CAAC;AAL3B,QAAA,6BAA6B,iCAKF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Determines if a given linked account is an embedded wallet account.
|
|
3
|
+
* Embedded wallet accounts are wallets that can be used with the Privy API.
|
|
4
|
+
*
|
|
5
|
+
* @param account a linked account
|
|
6
|
+
* @returns whether the account is an embedded wallet account
|
|
7
|
+
*/
|
|
8
|
+
export const isEmbeddedWalletLinkedAccount = (account) => account.type === 'wallet' &&
|
|
9
|
+
account.wallet_client_type === 'privy' &&
|
|
10
|
+
account.connector_type === 'embedded';
|
|
11
|
+
//# sourceMappingURL=user-utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-utils.mjs","sourceRoot":"","sources":["../src/lib/user-utils.ts"],"names":[],"mappings":"AAkBA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,OAAwC,EACA,EAAE,CAC1C,OAAO,CAAC,IAAI,KAAK,QAAQ;IACzB,OAAO,CAAC,kBAAkB,KAAK,OAAO;IACtC,OAAO,CAAC,cAAc,KAAK,UAAU,CAAC"}
|