@privy-io/node 0.1.0-alpha.2 → 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.
Files changed (164) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/client.d.mts +3 -3
  3. package/client.d.mts.map +1 -1
  4. package/client.d.ts +3 -3
  5. package/client.d.ts.map +1 -1
  6. package/client.js +1 -1
  7. package/client.js.map +1 -1
  8. package/client.mjs +1 -1
  9. package/client.mjs.map +1 -1
  10. package/index.d.mts +6 -0
  11. package/index.d.mts.map +1 -1
  12. package/index.d.ts +6 -0
  13. package/index.d.ts.map +1 -1
  14. package/index.js +7 -1
  15. package/index.js.map +1 -1
  16. package/index.mjs +2 -0
  17. package/index.mjs.map +1 -1
  18. package/internal/utils/values.js +3 -3
  19. package/internal/utils/values.js.map +1 -1
  20. package/internal/utils/values.mjs +3 -3
  21. package/internal/utils/values.mjs.map +1 -1
  22. package/lib/auth.d.mts +68 -0
  23. package/lib/auth.d.mts.map +1 -0
  24. package/lib/auth.d.ts +68 -0
  25. package/lib/auth.d.ts.map +1 -0
  26. package/lib/auth.js +130 -0
  27. package/lib/auth.js.map +1 -0
  28. package/lib/auth.mjs +123 -0
  29. package/lib/auth.mjs.map +1 -0
  30. package/lib/identity-token.d.mts +15 -0
  31. package/lib/identity-token.d.mts.map +1 -0
  32. package/lib/identity-token.d.ts +15 -0
  33. package/lib/identity-token.d.ts.map +1 -0
  34. package/lib/identity-token.js +273 -0
  35. package/lib/identity-token.js.map +1 -0
  36. package/lib/identity-token.mjs +268 -0
  37. package/lib/identity-token.mjs.map +1 -0
  38. package/lib/user-utils.d.mts +22 -0
  39. package/lib/user-utils.d.mts.map +1 -0
  40. package/lib/user-utils.d.ts +22 -0
  41. package/lib/user-utils.d.ts.map +1 -0
  42. package/lib/user-utils.js +15 -0
  43. package/lib/user-utils.js.map +1 -0
  44. package/lib/user-utils.mjs +11 -0
  45. package/lib/user-utils.mjs.map +1 -0
  46. package/package.json +19 -1
  47. package/public-api/PrivyClient.d.mts +2 -1
  48. package/public-api/PrivyClient.d.mts.map +1 -1
  49. package/public-api/PrivyClient.d.ts +2 -1
  50. package/public-api/PrivyClient.d.ts.map +1 -1
  51. package/public-api/PrivyClient.js +10 -3
  52. package/public-api/PrivyClient.js.map +1 -1
  53. package/public-api/PrivyClient.mjs +10 -3
  54. package/public-api/PrivyClient.mjs.map +1 -1
  55. package/public-api/services/ethereum.d.mts.map +1 -1
  56. package/public-api/services/ethereum.d.ts.map +1 -1
  57. package/public-api/services/ethereum.js +0 -6
  58. package/public-api/services/ethereum.js.map +1 -1
  59. package/public-api/services/ethereum.mjs +0 -6
  60. package/public-api/services/ethereum.mjs.map +1 -1
  61. package/public-api/services/solana.d.mts.map +1 -1
  62. package/public-api/services/solana.d.ts.map +1 -1
  63. package/public-api/services/solana.js +0 -3
  64. package/public-api/services/solana.js.map +1 -1
  65. package/public-api/services/solana.mjs +0 -3
  66. package/public-api/services/solana.mjs.map +1 -1
  67. package/public-api/services/users.d.mts +23 -1
  68. package/public-api/services/users.d.mts.map +1 -1
  69. package/public-api/services/users.d.ts +23 -1
  70. package/public-api/services/users.d.ts.map +1 -1
  71. package/public-api/services/users.js +24 -0
  72. package/public-api/services/users.js.map +1 -1
  73. package/public-api/services/users.mjs +24 -0
  74. package/public-api/services/users.mjs.map +1 -1
  75. package/public-api/services/utils/auth.d.mts +18 -0
  76. package/public-api/services/utils/auth.d.mts.map +1 -0
  77. package/public-api/services/utils/auth.d.ts +18 -0
  78. package/public-api/services/utils/auth.d.ts.map +1 -0
  79. package/public-api/services/utils/auth.js +33 -0
  80. package/public-api/services/utils/auth.js.map +1 -0
  81. package/public-api/services/utils/auth.mjs +29 -0
  82. package/public-api/services/utils/auth.mjs.map +1 -0
  83. package/public-api/services/utils/request-formatter.d.mts +5 -0
  84. package/public-api/services/utils/request-formatter.d.mts.map +1 -0
  85. package/public-api/services/utils/request-formatter.d.ts +5 -0
  86. package/public-api/services/utils/request-formatter.d.ts.map +1 -0
  87. package/public-api/services/utils/request-formatter.js +12 -0
  88. package/public-api/services/utils/request-formatter.js.map +1 -0
  89. package/public-api/services/utils/request-formatter.mjs +8 -0
  90. package/public-api/services/utils/request-formatter.mjs.map +1 -0
  91. package/public-api/services/utils/request-signer.d.mts +25 -0
  92. package/public-api/services/utils/request-signer.d.mts.map +1 -0
  93. package/public-api/services/utils/request-signer.d.ts +25 -0
  94. package/public-api/services/utils/request-signer.d.ts.map +1 -0
  95. package/public-api/services/utils/request-signer.js +17 -0
  96. package/public-api/services/utils/request-signer.js.map +1 -0
  97. package/public-api/services/utils/request-signer.mjs +13 -0
  98. package/public-api/services/utils/request-signer.mjs.map +1 -0
  99. package/public-api/services/utils.d.mts +12 -22
  100. package/public-api/services/utils.d.mts.map +1 -1
  101. package/public-api/services/utils.d.ts +12 -22
  102. package/public-api/services/utils.d.ts.map +1 -1
  103. package/public-api/services/utils.js +15 -9
  104. package/public-api/services/utils.js.map +1 -1
  105. package/public-api/services/utils.mjs +16 -10
  106. package/public-api/services/utils.mjs.map +1 -1
  107. package/resources/index.d.mts +1 -1
  108. package/resources/index.d.mts.map +1 -1
  109. package/resources/index.d.ts +1 -1
  110. package/resources/index.d.ts.map +1 -1
  111. package/resources/policies.d.mts +2 -1
  112. package/resources/policies.d.mts.map +1 -1
  113. package/resources/policies.d.ts +2 -1
  114. package/resources/policies.d.ts.map +1 -1
  115. package/resources/users.d.mts +35 -24
  116. package/resources/users.d.mts.map +1 -1
  117. package/resources/users.d.ts +35 -24
  118. package/resources/users.d.ts.map +1 -1
  119. package/resources/users.js +16 -16
  120. package/resources/users.js.map +1 -1
  121. package/resources/users.mjs +16 -16
  122. package/resources/users.mjs.map +1 -1
  123. package/resources/wallets/wallets.d.mts +3 -18
  124. package/resources/wallets/wallets.d.mts.map +1 -1
  125. package/resources/wallets/wallets.d.ts +3 -18
  126. package/resources/wallets/wallets.d.ts.map +1 -1
  127. package/resources/wallets/wallets.js.map +1 -1
  128. package/resources/wallets/wallets.mjs.map +1 -1
  129. package/src/client.ts +4 -4
  130. package/src/index.ts +15 -0
  131. package/src/internal/utils/values.ts +3 -3
  132. package/src/lib/auth.ts +210 -0
  133. package/src/lib/identity-token.ts +280 -0
  134. package/src/lib/user-utils.ts +31 -0
  135. package/src/public-api/PrivyClient.ts +12 -2
  136. package/src/public-api/services/ethereum.ts +0 -8
  137. package/src/public-api/services/solana.ts +0 -4
  138. package/src/public-api/services/users.ts +36 -2
  139. package/src/public-api/services/utils/auth.ts +41 -0
  140. package/src/public-api/services/utils/request-formatter.ts +6 -0
  141. package/src/public-api/services/utils/request-signer.ts +35 -0
  142. package/src/public-api/services/utils.ts +21 -31
  143. package/src/resources/index.ts +1 -1
  144. package/src/resources/policies.ts +2 -1
  145. package/src/resources/users.ts +50 -29
  146. package/src/resources/wallets/wallets.ts +6 -30
  147. package/src/version.ts +1 -1
  148. package/src/viem.ts +223 -0
  149. package/version.d.mts +1 -1
  150. package/version.d.mts.map +1 -1
  151. package/version.d.ts +1 -1
  152. package/version.d.ts.map +1 -1
  153. package/version.js +1 -1
  154. package/version.js.map +1 -1
  155. package/version.mjs +1 -1
  156. package/version.mjs.map +1 -1
  157. package/viem.d.mts +22 -0
  158. package/viem.d.mts.map +1 -0
  159. package/viem.d.ts +22 -0
  160. package/viem.d.ts.map +1 -0
  161. package/viem.js +183 -0
  162. package/viem.js.map +1 -0
  163. package/viem.mjs +180 -0
  164. package/viem.mjs.map +1 -0
@@ -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"}