@account-kit/signer 4.40.0 → 4.41.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.
@@ -49,6 +49,7 @@ export type OauthParams = Extract<AuthParams, {
49
49
  type: "oauth";
50
50
  }> & {
51
51
  expirationSeconds?: number;
52
+ fetchIdTokenOnly?: boolean;
52
53
  };
53
54
  export type OtpParams = {
54
55
  orgId: string;
@@ -146,13 +147,34 @@ export type SignerEndpoints = [
146
147
  signature: Hex;
147
148
  };
148
149
  },
150
+ {
151
+ Route: "/v1/update-email-auth";
152
+ Body: {
153
+ stampedRequest: TSignedRequest;
154
+ };
155
+ Response: void;
156
+ },
149
157
  {
150
158
  Route: "/v1/add-oauth-provider";
151
159
  Body: {
152
160
  stampedRequest: TSignedRequest;
153
161
  };
162
+ Response: {
163
+ oauthProviders: OauthProviderInfo[];
164
+ };
165
+ },
166
+ {
167
+ Route: "/v1/remove-oauth-provider";
168
+ Body: {
169
+ stampedRequest: TSignedRequest;
170
+ };
154
171
  Response: void;
155
172
  },
173
+ {
174
+ Route: "/v1/list-auth-methods";
175
+ Body: {};
176
+ Response: AuthMethods;
177
+ },
156
178
  {
157
179
  Route: "/v1/prepare-oauth";
158
180
  Body: {
@@ -247,6 +269,11 @@ export type AuthLinkingPrompt = {
247
269
  otpId: string;
248
270
  orgId: string;
249
271
  };
272
+ export type IdTokenOnly = {
273
+ status: "FETCHED_ID_TOKEN_ONLY";
274
+ idToken: string;
275
+ providerName: string;
276
+ };
250
277
  export type OauthState = {
251
278
  authProviderId: string;
252
279
  isCustomProvider?: boolean;
@@ -255,6 +282,7 @@ export type OauthState = {
255
282
  expirationSeconds?: number;
256
283
  redirectUrl?: string;
257
284
  openerOrigin?: string;
285
+ fetchIdTokenOnly?: boolean;
258
286
  };
259
287
  export type GetOauthProviderUrlArgs = {
260
288
  oauthParams: OauthParams;
@@ -305,6 +333,22 @@ export type AddOauthProviderParams = {
305
333
  providerName: string;
306
334
  oidcToken: string;
307
335
  };
336
+ export type AuthMethods = {
337
+ email?: string;
338
+ oauthProviders: OauthProviderInfo[];
339
+ passkeys: PasskeyInfo[];
340
+ };
341
+ export type OauthProviderInfo = {
342
+ providerId: string;
343
+ issuer: string;
344
+ providerName?: string;
345
+ userDisplayName?: string;
346
+ };
347
+ export type PasskeyInfo = {
348
+ authenticatorId: string;
349
+ name: string;
350
+ createdAt: number;
351
+ };
308
352
  export type experimental_CreateApiKeyParams = {
309
353
  name: string;
310
354
  publicKey: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/client/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,MAAM,iCAAiC,GAAG;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC,CAAC;CAC7D,GAAG,IAAI,CAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAC;AAG9C,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAGF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B;IACE,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,mKAAmK;IACnK,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,eAAe,CAAC;CAClC,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,iCAAiC,CAAC;CAClD,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,iCAAiC,CAAC;CAClD,CAAC;AAEN,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,KAAK,CAAC;AAE5C,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,mKAAmK;IACnK,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG;IACjE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,WAAW,GACnB;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GACD;IACE,MAAM,EAAE,cAAc,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,SAAS,EAAE,CAAC;CAC3B,CAAC;AAEN,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,kBAAkB,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;AAC5D,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,YAAY,IAAI,OAAO,CACtD,eAAe,CAAC,MAAM,CAAC,EACvB;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,CACb,CAAC,MAAM,CAAC,CAAC;AACV,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,YAAY,IAAI,OAAO,CAC1D,eAAe,CAAC,MAAM,CAAC,EACvB;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,CACb,CAAC,UAAU,CAAC,CAAC;AAEd,MAAM,MAAM,eAAe,GAAG;IAC5B;QACE,KAAK,EAAE,YAAY,CAAC;QACpB,IAAI,EACA,CAAC,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAAG;YACzC,cAAc,CAAC,EAAE,MAAM,CAAC;SACzB,CAAC,GACF;YACE,OAAO,EAAE;gBACP,SAAS,EAAE,MAAM,CAAC;gBAClB,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC;aACjE,CAAC;SACH,CAAC;QACN,QAAQ,EAAE,cAAc,CAAC;KAC1B;IACD;QACE,KAAK,EAAE,YAAY,CAAC;QACpB,IAAI,EAAE;YACJ,cAAc,EAAE,cAAc,CAAC;SAChC,CAAC;QACF,QAAQ,EAAE,IAAI,CAAC;KAChB;IACD;QACE,KAAK,EAAE,UAAU,CAAC;QAClB,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAAG;YAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;SAClC,CAAC;QACF,QAAQ,EAAE;YACR,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;SAC5B,CAAC;KACH;IACD;QACE,KAAK,EAAE,YAAY,CAAC;QACpB,IAAI,EAAE;YACJ,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,QAAQ,EAAE;YACR,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;SACtB,CAAC;KACH;IACD;QACE,KAAK,EAAE,kBAAkB,CAAC;QAC1B,IAAI,EAAE;YACJ,cAAc,EAAE,cAAc,CAAC;SAChC,CAAC;QACF,QAAQ,EAAE;YACR,SAAS,EAAE,GAAG,CAAC;SAChB,CAAC;KACH;IACD;QACE,KAAK,EAAE,uBAAuB,CAAC;QAC/B,IAAI,EAAE;YACJ,cAAc,EAAE,cAAc,CAAC;SAChC,CAAC;QACF,QAAQ,EAAE,IAAI,CAAC;KAChB;IACD;QACE,KAAK,EAAE,wBAAwB,CAAC;QAChC,IAAI,EAAE;YACJ,cAAc,EAAE,cAAc,CAAC;SAChC,CAAC;QACF,QAAQ,EAAE;YAAE,cAAc,EAAE,iBAAiB,EAAE,CAAA;SAAE,CAAC;KACnD;IACD;QACE,KAAK,EAAE,2BAA2B,CAAC;QACnC,IAAI,EAAE;YACJ,cAAc,EAAE,cAAc,CAAC;SAChC,CAAC;QACF,QAAQ,EAAE,IAAI,CAAC;KAChB;IACD;QACE,KAAK,EAAE,uBAAuB,CAAC;QAC/B,IAAI,EAAE,EAAE,CAAC;QACT,QAAQ,EAAE,WAAW,CAAC;KACvB;IACD;QACE,KAAK,EAAE,mBAAmB,CAAC;QAC3B,IAAI,EAAE;YACJ,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,QAAQ,EAAE,WAAW,CAAC;KACvB;IACD;QACE,KAAK,EAAE,SAAS,CAAC;QACjB,IAAI,EAAE,SAAS,CAAC;QAChB,QAAQ,EAAE,WAAW,CAAC;KACvB;IACD;QACE,KAAK,EAAE,6BAA6B,CAAC;QACrC,IAAI,EAAE;YACJ,cAAc,EAAE,cAAc,CAAC;SAChC,CAAC;QACF,QAAQ,EAAE;YACR,YAAY,EAAE,SAAS,EAAE,CAAC;SAC3B,CAAC;KACH;IACD;QACE,KAAK,EAAE,+BAA+B,CAAC;QACvC,IAAI,EAAE;YACJ,cAAc,EAAE,cAAc,CAAC;YAC/B,cAAc,EAAE,MAAM,EAAE,CAAC;SAC1B,CAAC;QACF,QAAQ,EAAE;YACR,YAAY,EAAE,SAAS,EAAE,CAAC;SAC3B,CAAC;KACH;IACD;QACE,KAAK,EAAE,+BAA+B,CAAC;QACvC,IAAI,EAAE;YACJ,cAAc,EAAE,cAAc,CAAC;YAC/B,eAAe,EAAE,eAAe,CAAC;SAClC,CAAC;QACF,QAAQ,EAAE,YAAY,CAAC;KACxB;IACD;QACE,KAAK,EAAE,8BAA8B,CAAC;QACtC,IAAI,EAAE,eAAe,GAAG;YACtB,cAAc,EAAE,cAAc,CAAC;SAChC,CAAC;QACF,QAAQ,EAAE;YACR,YAAY,EAAE,SAAS,EAAE,CAAC;SAC3B,CAAC;KACH;IACD;QACE,KAAK,EAAE,mBAAmB,CAAC;QAC3B,IAAI,EAAE,EAAE,CAAC;QACT,QAAQ,EAAE,YAAY,CAAC;KACxB;IACD;QACE,KAAK,EAAE,iCAAiC,CAAC;QACzC,IAAI,EAAE;YACJ,gBAAgB,EAAE,MAAM,CAAC;YACzB,YAAY,EAAE,eAAe,EAAE,CAAC;SACjC,CAAC;QACF,QAAQ,EAAE;YACR,OAAO,EAAE;gBACP,gBAAgB,CAAC,EAAE,MAAM,CAAC;aAC3B,CAAC;YACF,YAAY,EAAE,SAAS,EAAE,CAAC;SAC3B,CAAC;KACH;CACF,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5B,aAAa,IAAI,IAAI,CAAC;IACtB,cAAc,CAAC,IAAI,EAAE,2BAA2B,GAAG,IAAI,CAAC;IACxD,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IACnC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,YAAY,IAAI,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,MAAM,yBAAyB,CAAC;AAEvE,MAAM,MAAM,4BAA4B,GAAG;IACzC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC;IAChE,SAAS,EAAE,WAAW,GAAG,MAAM,CAAC;IAChC,mBAAmB,EAAE,YAAY,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,uCAAuC,CAAC;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,uBAAuB,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,KAAK,eAAe,GAAG,MAAM,CAAC;AAE9B,MAAM,MAAM,YAAY,GAAG;IACzB,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,eAAe,EAAE,eAAe,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAChB;QACE,IAAI,EAAE,MAAM,CAAC;KACd,GACD,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAC7B;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,KAAK,CAAA;CAAE,GACtC;IAAE,WAAW,EAAE,IAAI,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC;AAE/E,MAAM,MAAM,sBAAsB,GAAG;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,iBAAiB,EAAE,CAAC;IACpC,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "4.40.0";
1
+ export declare const VERSION = "4.41.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@account-kit/signer",
3
- "version": "4.40.0",
3
+ "version": "4.41.0",
4
4
  "description": "Core interfaces and clients for interfacing with the Alchemy Signer API",
5
5
  "author": "Alchemy",
6
6
  "license": "MIT",
@@ -34,7 +34,7 @@
34
34
  "build": "yarn clean && yarn build:esm && yarn build:types",
35
35
  "build:esm": "tsc --project tsconfig.build.json --outDir ./dist/esm",
36
36
  "build:types": "tsc --project tsconfig.build.json --declarationDir ./dist/types --emitDeclarationOnly --declaration --declarationMap",
37
- "fern:gen": "node ../../doc-gen/dist/esm/cli.js generate --in ./src/index.ts --out ../../docs/pages/reference/account-kit/signer --fern",
37
+ "fern:gen": "node ../../doc-gen/dist/esm/cli.js generate --in ./src/index.ts --out ../../docs/pages/reference/account-kit/signer",
38
38
  "clean": "rm -rf ./dist",
39
39
  "test": "vitest --passWithNoTests",
40
40
  "test:run": "vitest run --passWithNoTests"
@@ -48,8 +48,8 @@
48
48
  "typescript-template": "*"
49
49
  },
50
50
  "dependencies": {
51
- "@aa-sdk/core": "^4.40.0",
52
- "@account-kit/logging": "^4.40.0",
51
+ "@aa-sdk/core": "^4.41.0",
52
+ "@account-kit/logging": "^4.41.0",
53
53
  "@solana/web3.js": "^1.98.0",
54
54
  "@turnkey/http": "^2.22.0",
55
55
  "@turnkey/iframe-stamper": "^1.0.0",
@@ -75,5 +75,5 @@
75
75
  "url": "https://github.com/alchemyplatform/aa-sdk/issues"
76
76
  },
77
77
  "homepage": "https://github.com/alchemyplatform/aa-sdk#readme",
78
- "gitHead": "7e5c6761001fcd23905830d8d1537f8a9a79b491"
78
+ "gitHead": "db374bb77b5961b3d2c5c883e9e77f861df92f59"
79
79
  }
package/src/base.ts CHANGED
@@ -36,6 +36,9 @@ import {
36
36
  type AddMfaResult,
37
37
  type RemoveMfaParams,
38
38
  type AuthLinkingPrompt,
39
+ type OauthProviderInfo,
40
+ type IdTokenOnly,
41
+ type AuthMethods,
39
42
  } from "./client/types.js";
40
43
  import { NotAuthenticatedError } from "./errors.js";
41
44
  import { SignerLogger } from "./metrics.js";
@@ -732,6 +735,38 @@ export abstract class BaseAlchemySigner<TClient extends BaseSignerClient>
732
735
  };
733
736
  });
734
737
 
738
+ /*
739
+ * Sets the email for the authenticated user, allowing them to login with that
740
+ * email.
741
+ *
742
+ * You must contact Alchemy to enable this feature for your team, as there are
743
+ * important security considerations. In particular, you must not call this
744
+ * without first validating that the user owns this email account.
745
+ *
746
+ * @param {string} email The email to set for the user
747
+ * @returns {Promise<void>} A promise that resolves when the email is set
748
+ * @throws {NotAuthenticatedError} If the user is not authenticated
749
+ */
750
+ setEmail: (email: string) => Promise<void> = SignerLogger.profiled(
751
+ "BaseAlchemySigner.setEmail",
752
+ async (email) => {
753
+ return this.inner.setEmail(email);
754
+ },
755
+ );
756
+
757
+ /**
758
+ * Removes the email for the authenticated user, disallowing them from login with that email.
759
+ *
760
+ * @returns {Promise<void>} A promise that resolves when the email is removed
761
+ * @throws {NotAuthenticatedError} If the user is not authenticated
762
+ */
763
+ removeEmail: () => Promise<void> = SignerLogger.profiled(
764
+ "BaseAlchemySigner.removeEmail",
765
+ async () => {
766
+ return this.inner.removeEmail();
767
+ },
768
+ );
769
+
735
770
  /**
736
771
  * Adds a passkey to the user's account
737
772
  *
@@ -761,6 +796,41 @@ export abstract class BaseAlchemySigner<TClient extends BaseSignerClient>
761
796
  return this.inner.addPasskey(params ?? {});
762
797
  });
763
798
 
799
+ /**
800
+ * Removes a passkey from a user's account
801
+ *
802
+ * @example
803
+ * ```ts
804
+ * import { AlchemyWebSigner } from "@account-kit/signer";
805
+ *
806
+ * const signer = new AlchemyWebSigner({
807
+ * client: {
808
+ * connection: {
809
+ * rpcUrl: "/api/rpc",
810
+ * },
811
+ * iframeConfig: {
812
+ * iframeContainerId: "alchemy-signer-iframe-container",
813
+ * },
814
+ * },
815
+ * });
816
+ *
817
+ * const authMethods = await signer.listAuthMethods();
818
+ * const passkey = authMethods.passkeys[0];
819
+ *
820
+ * const result = await signer.removePasskey(passkey.authenticatorId);
821
+ * ```
822
+ *
823
+ * @param {CredentialCreationOptions | undefined} params optional parameters for the passkey creation
824
+ * @returns {Promise<string[]>} an array of the authenticator ids added to the user
825
+ */
826
+ removePasskey: (authenticatorId: string) => Promise<void> =
827
+ SignerLogger.profiled(
828
+ "BaseAlchemySigner.removePasskey",
829
+ async (authenticatorId) => {
830
+ return this.inner.removePasskey(authenticatorId);
831
+ },
832
+ );
833
+
764
834
  getPasskeyStatus: () => Promise<{ isPasskeyAdded: boolean }> =
765
835
  SignerLogger.profiled("BaseAlchemySigner.getPasskeyStatus", async () => {
766
836
  return this.inner.getPasskeyStatus();
@@ -954,9 +1024,18 @@ export abstract class BaseAlchemySigner<TClient extends BaseSignerClient>
954
1024
  expirationSeconds: this.getExpirationSeconds(),
955
1025
  };
956
1026
  if (params.mode === "redirect") {
957
- return this.inner.oauthWithRedirect(params);
1027
+ const user = await this.inner.oauthWithRedirect(params);
1028
+ if (!isUser(user)) {
1029
+ throw new Error("Expected user from oauth with redirect");
1030
+ }
1031
+ return user;
958
1032
  }
959
1033
  const result = await this.inner.oauthWithPopup(params);
1034
+ if (isIdTokenOnly(result)) {
1035
+ throw new Error(
1036
+ "Should not get only id token when authenticating with oauth",
1037
+ );
1038
+ }
960
1039
  if (!isAuthLinkingPrompt(result)) {
961
1040
  return result;
962
1041
  }
@@ -964,6 +1043,64 @@ export abstract class BaseAlchemySigner<TClient extends BaseSignerClient>
964
1043
  return this.waitForConnected();
965
1044
  };
966
1045
 
1046
+ /**
1047
+ * Handles OAuth authentication by augmenting the provided arguments with a type and performing authentication based on the OAuth mode (either using redirect or popup).
1048
+ *
1049
+ * @param {Omit<Extract<AuthParams, { type: "oauth" }>, "type">} args Authentication parameters omitting the type, which will be set to "oauth"
1050
+ * @returns {Promise<OauthProviderInfo>} A promise that resolves to an `OauthProviderInfo` object containing provider information and the ID token.
1051
+ */
1052
+ public addOauthProvider = async (
1053
+ args: Omit<Extract<AuthParams, { type: "oauth" }>, "type">,
1054
+ ): Promise<OauthProviderInfo> => {
1055
+ // This cast is required to suppress a spurious type error. We're just
1056
+ // putting the omitted field back in, but TypeScript doesn't recognize that.
1057
+ const argsWithType = { type: "oauth", ...args } as Extract<
1058
+ AuthParams,
1059
+ { type: "oauth" }
1060
+ >;
1061
+ const params: OauthParams = {
1062
+ ...argsWithType,
1063
+ fetchIdTokenOnly: true,
1064
+ };
1065
+ const result = await (params.mode === "redirect"
1066
+ ? this.inner.oauthWithRedirect(params)
1067
+ : this.inner.oauthWithPopup(params));
1068
+ if (!isIdTokenOnly(result)) {
1069
+ throw new Error("Expected id token only from oauth response");
1070
+ }
1071
+ return await this.inner.addOauthProvider({
1072
+ providerName: result.providerName,
1073
+ oidcToken: result.idToken,
1074
+ });
1075
+ };
1076
+
1077
+ /**
1078
+ * Removes an OAuth provider by its ID if the user is authenticated.
1079
+ *
1080
+ * @param {string} providerId The ID of the OAuth provider to be removed, as obtained from `listOauthProviders`
1081
+ * @returns {Promise<any>} A promise indicating the result of the removal process
1082
+ * @throws {NotAuthenticatedError} Thrown if the user is not authenticated
1083
+ */
1084
+ public removeOauthProvider = async (providerId: string) => {
1085
+ if (!this.inner.getUser()) {
1086
+ throw new NotAuthenticatedError();
1087
+ }
1088
+ return this.inner.removeOauthProvider(providerId);
1089
+ };
1090
+
1091
+ /**
1092
+ * Retrieves a list of auth methods associated with the authenticated user.
1093
+ *
1094
+ * @returns {Promise<AuthMethods>} A promise that resolves to an `AuthMethods` object containing the user's email, OAuth providers, and passkeys.
1095
+ * @throws {NotAuthenticatedError} Thrown if the user is not authenticated
1096
+ */
1097
+ public listAuthMethods = async (): Promise<AuthMethods> => {
1098
+ if (!this.inner.getUser()) {
1099
+ throw new NotAuthenticatedError();
1100
+ }
1101
+ return this.inner.listAuthMethods();
1102
+ };
1103
+
967
1104
  private authenticateWithOtp = async (
968
1105
  args: Extract<AuthParams, { type: "otp" }>,
969
1106
  ): Promise<User> => {
@@ -1557,9 +1694,19 @@ function subscribeWithDelayedFireImmediately<T>(
1557
1694
  };
1558
1695
  }
1559
1696
 
1697
+ function isUser(
1698
+ result: User | AuthLinkingPrompt | IdTokenOnly,
1699
+ ): result is User {
1700
+ return !isAuthLinkingPrompt(result) && !isIdTokenOnly(result);
1701
+ }
1702
+
1560
1703
  function isAuthLinkingPrompt(result: unknown): result is AuthLinkingPrompt {
1561
1704
  return (
1562
1705
  (result as AuthLinkingPrompt)?.status ===
1563
1706
  "ACCOUNT_LINKING_CONFIRMATION_REQUIRED"
1564
1707
  );
1565
1708
  }
1709
+
1710
+ function isIdTokenOnly(result: unknown): result is IdTokenOnly {
1711
+ return (result as IdTokenOnly)?.status === "FETCHED_ID_TOKEN_ONLY";
1712
+ }
@@ -37,6 +37,9 @@ import type {
37
37
  AuthLinkingPrompt,
38
38
  AddOauthProviderParams,
39
39
  CredentialCreationOptionOverrides,
40
+ OauthProviderInfo,
41
+ IdTokenOnly,
42
+ AuthMethods,
40
43
  } from "./types.js";
41
44
  import { VERSION } from "../version.js";
42
45
 
@@ -214,11 +217,11 @@ export abstract class BaseSignerClient<TExportWalletParams = unknown> {
214
217
 
215
218
  public abstract oauthWithRedirect(
216
219
  args: Extract<OauthParams, { mode: "redirect" }>,
217
- ): Promise<User>;
220
+ ): Promise<User | IdTokenOnly>;
218
221
 
219
222
  public abstract oauthWithPopup(
220
223
  args: Extract<OauthParams, { mode: "popup" }>,
221
- ): Promise<User | AuthLinkingPrompt>;
224
+ ): Promise<User | AuthLinkingPrompt | IdTokenOnly>;
222
225
 
223
226
  public abstract submitOtpCode(
224
227
  args: Omit<OtpParams, "targetPublicKey">,
@@ -267,6 +270,59 @@ export abstract class BaseSignerClient<TExportWalletParams = unknown> {
267
270
  return () => this.eventEmitter.removeListener(event, listener as any);
268
271
  };
269
272
 
273
+ /**
274
+ * Sets the email for the authenticated user, allowing them to login with that
275
+ * email.
276
+ *
277
+ * You must contact Alchemy to enable this feature for your team, as there are
278
+ * important security considerations. In particular, you must not call this
279
+ * without first validating that the user owns this email account.
280
+ *
281
+ * @param {string} email The email to set for the user
282
+ * @returns {Promise<void>} A promise that resolves when the email is set
283
+ * @throws {NotAuthenticatedError} If the user is not authenticated
284
+ */
285
+ public setEmail = async (email: string): Promise<void> => {
286
+ if (!email) {
287
+ throw new Error(
288
+ "Email must not be empty. Use removeEmail() to remove email auth.",
289
+ );
290
+ }
291
+ await this.updateEmail(email);
292
+ };
293
+
294
+ /**
295
+ * Removes the email for the authenticated user, disallowing them from login with that email.
296
+ *
297
+ * @returns {Promise<void>} A promise that resolves when the email is removed
298
+ * @throws {NotAuthenticatedError} If the user is not authenticated
299
+ */
300
+ public removeEmail = async (): Promise<void> => {
301
+ // This is a hack to remove the email for the user. Turnkey does not
302
+ // support clearing the email once set, so we set it to a known
303
+ // inaccessible address instead.
304
+ await this.updateEmail("not.enabled@example.invalid");
305
+ };
306
+
307
+ private updateEmail = async (email: string): Promise<void> => {
308
+ if (!this.user) {
309
+ throw new NotAuthenticatedError();
310
+ }
311
+ const stampedRequest = await this.turnkeyClient.stampUpdateUser({
312
+ type: "ACTIVITY_TYPE_UPDATE_USER",
313
+ timestampMs: Date.now().toString(),
314
+ organizationId: this.user.orgId,
315
+ parameters: {
316
+ userId: this.user.userId,
317
+ userEmail: email,
318
+ userTagIds: [],
319
+ },
320
+ });
321
+ await this.request("/v1/update-email-auth", {
322
+ stampedRequest,
323
+ });
324
+ };
325
+
270
326
  /**
271
327
  * Handles the creation of authenticators using WebAuthn attestation and the provided options. Requires the user to be authenticated.
272
328
  *
@@ -309,6 +365,28 @@ export abstract class BaseSignerClient<TExportWalletParams = unknown> {
309
365
  return authenticatorIds;
310
366
  };
311
367
 
368
+ /**
369
+ * Removes a passkey authenticator from the user's account.
370
+ *
371
+ * @param {string} authenticatorId The ID of the authenticator to remove.
372
+ * @returns {Promise<void>} A promise that resolves when the authenticator is removed.
373
+ * @throws {NotAuthenticatedError} If the user is not authenticated.
374
+ */
375
+ public removePasskey = async (authenticatorId: string): Promise<void> => {
376
+ if (!this.user) {
377
+ throw new NotAuthenticatedError();
378
+ }
379
+ await this.turnkeyClient.deleteAuthenticators({
380
+ type: "ACTIVITY_TYPE_DELETE_AUTHENTICATORS",
381
+ timestampMs: Date.now().toString(),
382
+ organizationId: this.user.orgId,
383
+ parameters: {
384
+ userId: this.user.userId,
385
+ authenticatorIds: [authenticatorId],
386
+ },
387
+ });
388
+ };
389
+
312
390
  /**
313
391
  * Asynchronously handles the authentication process using WebAuthn Stamper. If a user is provided, sets the user and returns it. Otherwise, retrieves the current user and initializes the WebAuthn stamper.
314
392
  *
@@ -361,7 +439,7 @@ export abstract class BaseSignerClient<TExportWalletParams = unknown> {
361
439
  */
362
440
  public addOauthProvider = async (
363
441
  params: AddOauthProviderParams,
364
- ): Promise<void> => {
442
+ ): Promise<OauthProviderInfo> => {
365
443
  if (!this.user) {
366
444
  throw new NotAuthenticatedError();
367
445
  }
@@ -375,7 +453,47 @@ export abstract class BaseSignerClient<TExportWalletParams = unknown> {
375
453
  oauthProviders: [{ providerName, oidcToken }],
376
454
  },
377
455
  });
378
- await this.request("/v1/add-oauth-provider", { stampedRequest });
456
+ const response = await this.request("/v1/add-oauth-provider", {
457
+ stampedRequest,
458
+ });
459
+ return response.oauthProviders[0];
460
+ };
461
+
462
+ /**
463
+ * Deletes a specified OAuth provider for the authenticated user.
464
+ *
465
+ * @param {string} providerId The ID of the provider to be deleted
466
+ * @throws {NotAuthenticatedError} If the user is not authenticated
467
+ */
468
+ public removeOauthProvider = async (providerId: string) => {
469
+ if (!this.user) {
470
+ throw new NotAuthenticatedError();
471
+ }
472
+ const stampedRequest = await this.turnkeyClient.stampDeleteOauthProviders({
473
+ type: "ACTIVITY_TYPE_DELETE_OAUTH_PROVIDERS",
474
+ timestampMs: Date.now().toString(),
475
+ organizationId: this.user.orgId,
476
+ parameters: {
477
+ userId: this.user.userId,
478
+ providerIds: [providerId],
479
+ },
480
+ });
481
+ await this.request("/v1/remove-oauth-provider", { stampedRequest });
482
+ };
483
+
484
+ /**
485
+ * Retrieves the list of authentication methods for the current user.
486
+ *
487
+ * @returns {Promise<AuthMethods>} A promise that resolves to the list of authentication methods
488
+ * @throws {NotAuthenticatedError} If the user is not authenticated
489
+ */
490
+ public listAuthMethods = async (): Promise<AuthMethods> => {
491
+ if (!this.user) {
492
+ throw new NotAuthenticatedError();
493
+ }
494
+ return await this.request("/v1/list-auth-methods", {
495
+ suborgId: this.user.orgId,
496
+ });
379
497
  };
380
498
 
381
499
  /**
@@ -961,6 +1079,7 @@ export abstract class BaseSignerClient<TExportWalletParams = unknown> {
961
1079
  : redirectUrl
962
1080
  : undefined,
963
1081
  openerOrigin: mode === "popup" ? window.location.origin : undefined,
1082
+ fetchIdTokenOnly: oauthParams.fetchIdTokenOnly,
964
1083
  };
965
1084
  const state = base64UrlEncode(
966
1085
  new TextEncoder().encode(JSON.stringify(stateObject)),
@@ -18,6 +18,7 @@ import type {
18
18
  SubmitOtpCodeResponse,
19
19
  AuthLinkingPrompt,
20
20
  GetWebAuthnAttestationResult,
21
+ IdTokenOnly,
21
22
  } from "./types.js";
22
23
  import { MfaRequiredError } from "../errors.js";
23
24
  import { parseMfaError } from "../utils/parseMfaError.js";
@@ -381,7 +382,7 @@ export class AlchemySignerWebClient extends BaseSignerClient<ExportWalletParams>
381
382
  */
382
383
  public override oauthWithRedirect = async (
383
384
  args: Extract<AuthParams, { type: "oauth"; mode: "redirect" }>,
384
- ): Promise<never> => {
385
+ ): Promise<User | IdTokenOnly> => {
385
386
  const turnkeyPublicKey = await this.initSessionStamper();
386
387
 
387
388
  const oauthParams = args;
@@ -425,7 +426,7 @@ export class AlchemySignerWebClient extends BaseSignerClient<ExportWalletParams>
425
426
  */
426
427
  public override oauthWithPopup = async (
427
428
  args: Extract<AuthParams, { type: "oauth"; mode: "popup" }>,
428
- ): Promise<User | AuthLinkingPrompt> => {
429
+ ): Promise<User | AuthLinkingPrompt | IdTokenOnly> => {
429
430
  const turnkeyPublicKey = await this.initSessionStamper();
430
431
  const oauthParams = args;
431
432
  const providerUrl = await this.getOauthProviderUrl({
@@ -491,6 +492,13 @@ export class AlchemySignerWebClient extends BaseSignerClient<ExportWalletParams>
491
492
  orgId,
492
493
  } satisfies AuthLinkingPrompt);
493
494
  break;
495
+ case "FETCHED_ID_TOKEN_ONLY":
496
+ resolve({
497
+ status,
498
+ idToken,
499
+ providerName,
500
+ } satisfies IdTokenOnly);
501
+ break;
494
502
  default:
495
503
  reject(new Error(`Unknown status: ${status}`));
496
504
  }
@@ -59,6 +59,7 @@ export type EmailAuthParams = {
59
59
 
60
60
  export type OauthParams = Extract<AuthParams, { type: "oauth" }> & {
61
61
  expirationSeconds?: number;
62
+ fetchIdTokenOnly?: boolean;
62
63
  };
63
64
 
64
65
  export type OtpParams = {
@@ -171,13 +172,32 @@ export type SignerEndpoints = [
171
172
  signature: Hex;
172
173
  };
173
174
  },
175
+ {
176
+ Route: "/v1/update-email-auth";
177
+ Body: {
178
+ stampedRequest: TSignedRequest;
179
+ };
180
+ Response: void;
181
+ },
174
182
  {
175
183
  Route: "/v1/add-oauth-provider";
176
184
  Body: {
177
185
  stampedRequest: TSignedRequest;
178
186
  };
187
+ Response: { oauthProviders: OauthProviderInfo[] };
188
+ },
189
+ {
190
+ Route: "/v1/remove-oauth-provider";
191
+ Body: {
192
+ stampedRequest: TSignedRequest;
193
+ };
179
194
  Response: void;
180
195
  },
196
+ {
197
+ Route: "/v1/list-auth-methods";
198
+ Body: {};
199
+ Response: AuthMethods;
200
+ },
181
201
  {
182
202
  Route: "/v1/prepare-oauth";
183
203
  Body: {
@@ -278,6 +298,12 @@ export type AuthLinkingPrompt = {
278
298
  orgId: string;
279
299
  };
280
300
 
301
+ export type IdTokenOnly = {
302
+ status: "FETCHED_ID_TOKEN_ONLY";
303
+ idToken: string;
304
+ providerName: string;
305
+ };
306
+
281
307
  export type OauthState = {
282
308
  authProviderId: string;
283
309
  isCustomProvider?: boolean;
@@ -286,6 +312,7 @@ export type OauthState = {
286
312
  expirationSeconds?: number;
287
313
  redirectUrl?: string;
288
314
  openerOrigin?: string;
315
+ fetchIdTokenOnly?: boolean;
289
316
  };
290
317
 
291
318
  export type GetOauthProviderUrlArgs = {
@@ -345,6 +372,25 @@ export type AddOauthProviderParams = {
345
372
  oidcToken: string;
346
373
  };
347
374
 
375
+ export type AuthMethods = {
376
+ email?: string;
377
+ oauthProviders: OauthProviderInfo[];
378
+ passkeys: PasskeyInfo[];
379
+ };
380
+
381
+ export type OauthProviderInfo = {
382
+ providerId: string;
383
+ issuer: string;
384
+ providerName?: string;
385
+ userDisplayName?: string;
386
+ };
387
+
388
+ export type PasskeyInfo = {
389
+ authenticatorId: string;
390
+ name: string;
391
+ createdAt: number;
392
+ };
393
+
348
394
  export type experimental_CreateApiKeyParams = {
349
395
  name: string;
350
396
  publicKey: string;
package/src/version.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  // This file is autogenerated by inject-version.ts. Any changes will be
2
2
  // overwritten on commit!
3
- export const VERSION = "4.40.0";
3
+ export const VERSION = "4.41.0";