@account-kit/signer 4.0.0-alpha.10 → 4.0.0-alpha.12

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 (44) hide show
  1. package/dist/cjs/base.js +8 -1
  2. package/dist/cjs/base.js.map +1 -1
  3. package/dist/cjs/client/base.d.ts +2 -1
  4. package/dist/cjs/client/base.js +13 -0
  5. package/dist/cjs/client/base.js.map +1 -1
  6. package/dist/cjs/client/index.js +2 -1
  7. package/dist/cjs/client/index.js.map +1 -1
  8. package/dist/cjs/client/types.d.ts +4 -0
  9. package/dist/cjs/client/types.js.map +1 -1
  10. package/dist/cjs/signer.d.ts +4 -0
  11. package/dist/cjs/signer.js.map +1 -1
  12. package/dist/cjs/version.d.ts +1 -1
  13. package/dist/cjs/version.js +1 -1
  14. package/dist/cjs/version.js.map +1 -1
  15. package/dist/esm/base.js +8 -1
  16. package/dist/esm/base.js.map +1 -1
  17. package/dist/esm/client/base.d.ts +2 -1
  18. package/dist/esm/client/base.js +13 -0
  19. package/dist/esm/client/base.js.map +1 -1
  20. package/dist/esm/client/index.js +2 -1
  21. package/dist/esm/client/index.js.map +1 -1
  22. package/dist/esm/client/types.d.ts +4 -0
  23. package/dist/esm/client/types.js.map +1 -1
  24. package/dist/esm/signer.d.ts +4 -0
  25. package/dist/esm/signer.js.map +1 -1
  26. package/dist/esm/version.d.ts +1 -1
  27. package/dist/esm/version.js +1 -1
  28. package/dist/esm/version.js.map +1 -1
  29. package/dist/types/base.d.ts.map +1 -1
  30. package/dist/types/client/base.d.ts +11 -1
  31. package/dist/types/client/base.d.ts.map +1 -1
  32. package/dist/types/client/index.d.ts.map +1 -1
  33. package/dist/types/client/types.d.ts +4 -0
  34. package/dist/types/client/types.d.ts.map +1 -1
  35. package/dist/types/signer.d.ts +4 -3
  36. package/dist/types/signer.d.ts.map +1 -1
  37. package/dist/types/version.d.ts +1 -1
  38. package/package.json +3 -3
  39. package/src/base.ts +16 -2
  40. package/src/client/base.ts +21 -2
  41. package/src/client/index.ts +2 -1
  42. package/src/client/types.ts +5 -0
  43. package/src/signer.ts +5 -0
  44. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAEL,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,mBAAmB,CAAC;AAG3E,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,eAAe,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,KAAK,CAAC;CAClB,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,iCAAiC,CAAC;CAClD,CAAC;AAEN,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAYtC;;eAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EANC,CAAC;AAEL,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,iBAAiB,CAAC,sBAAsB,CAAC;IAC7E;;;;;;;;;;;;;;;;;;;;OAoBG;gBACS,MAAM,EAAE,mBAAmB;CAexC"}
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAEL,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,mBAAmB,CAAC;AAG3E,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,eAAe,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,iCAAiC,CAAC;CAClD,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,KAAK,CAAC;CAClB,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,iCAAiC,CAAC;CAClD,CAAC;AAEN,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQlC,CAAC;AAEL,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,iBAAiB,CAAC,sBAAsB,CAAC;IAC7E;;;;;;;;;;;;;;;;;;;;OAoBG;gBACS,MAAM,EAAE,mBAAmB;CAexC"}
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "4.0.0-alpha.10";
1
+ export declare const VERSION = "4.0.0-alpha.12";
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.0.0-alpha.10",
3
+ "version": "4.0.0-alpha.12",
4
4
  "description": "Core interfaces and clients for interfacing with the Alchemy Signer API",
5
5
  "author": "Alchemy",
6
6
  "license": "MIT",
@@ -50,7 +50,7 @@
50
50
  "vitest": "^2.0.4"
51
51
  },
52
52
  "dependencies": {
53
- "@aa-sdk/core": "^4.0.0-alpha.10",
53
+ "@aa-sdk/core": "^4.0.0-alpha.12",
54
54
  "@turnkey/http": "^2.6.2",
55
55
  "@turnkey/iframe-stamper": "^1.0.0",
56
56
  "@turnkey/viem": "^0.4.8",
@@ -76,5 +76,5 @@
76
76
  "url": "https://github.com/alchemyplatform/aa-sdk/issues"
77
77
  },
78
78
  "homepage": "https://github.com/alchemyplatform/aa-sdk#readme",
79
- "gitHead": "e3446b95cdee38c248f336857b24f78a32694076"
79
+ "gitHead": "16442524c0133a85f6c432c6636339566b2d39b1"
80
80
  }
package/src/base.ts CHANGED
@@ -570,8 +570,22 @@ export abstract class BaseAlchemySigner<TClient extends BaseSignerClient>
570
570
  args: Extract<AuthParams, { type: "passkey" }>
571
571
  ) => {
572
572
  let user: User;
573
- if (args.createNew) {
574
- const result = await this.inner.createAccount(args);
573
+ const shouldCreateNew = async () => {
574
+ if ("email" in args) {
575
+ const existingUser = await this.getUser(args.email);
576
+ return existingUser == null;
577
+ }
578
+
579
+ return args.createNew;
580
+ };
581
+
582
+ if (await shouldCreateNew()) {
583
+ const result = await this.inner.createAccount(
584
+ args as Extract<
585
+ AuthParams,
586
+ { type: "passkey" } & ({ email: string } | { createNew: true })
587
+ >
588
+ );
575
589
  // account creation for passkeys returns the whoami response so we don't have to
576
590
  // call it again after signup
577
591
  user = {
@@ -1,5 +1,5 @@
1
- import { type ConnectionConfig, ConnectionConfigSchema } from "@aa-sdk/core";
2
- import { TurnkeyClient } from "@turnkey/http";
1
+ import { ConnectionConfigSchema, type ConnectionConfig } from "@aa-sdk/core";
2
+ import { TurnkeyClient, type TSignedRequest } from "@turnkey/http";
3
3
  import EventEmitter from "eventemitter3";
4
4
  import type { Hex } from "viem";
5
5
  import { NotAuthenticatedError } from "../errors.js";
@@ -227,6 +227,25 @@ export abstract class BaseSignerClient<TExportWalletParams = unknown> {
227
227
  return this.user;
228
228
  };
229
229
 
230
+ /**
231
+ * Generates a stamped whoami request for the current user. This request can then be used to call /signer/v1/whoami to get the user information.
232
+ * This is useful if you want to get the user information in a different context like a server. You can pass the stamped request to the server
233
+ * and then call our API to get the user information. Using this stamp is the most trusted way to get the user information since a stamp can only
234
+ * belong to the user who created it.
235
+ *
236
+ * @returns {Promise<TSignedRequest>} a promise that resolves to the "whoami" information for the logged in user
237
+ * @throws {Error} if no organization ID is provided
238
+ */
239
+ public stampWhoami = async (): Promise<TSignedRequest> => {
240
+ if (!this.user) {
241
+ throw new Error("User must be authenticated to stamp a whoami request");
242
+ }
243
+
244
+ return await this.turnkeyClient.stampGetWhoami({
245
+ organizationId: this.user.orgId,
246
+ });
247
+ };
248
+
230
249
  /**
231
250
  * Looks up information based on an email address.
232
251
  *
@@ -128,7 +128,7 @@ export class AlchemySignerWebClient extends BaseSignerClient<ExportWalletParams>
128
128
  // Passkey account creation flow
129
129
  const { attestation, challenge } = await this.getWebAuthnAttestation(
130
130
  params.creationOpts,
131
- { username: params.username }
131
+ { username: "email" in params ? params.email : params.username }
132
132
  );
133
133
 
134
134
  const result = await this.request("/v1/signup", {
@@ -136,6 +136,7 @@ export class AlchemySignerWebClient extends BaseSignerClient<ExportWalletParams>
136
136
  challenge: base64UrlEncode(challenge),
137
137
  attestation,
138
138
  },
139
+ email: "email" in params ? params.email : undefined,
139
140
  });
140
141
 
141
142
  this.user = {
@@ -28,6 +28,11 @@ export type CreateAccountParams =
28
28
  expirationSeconds?: number;
29
29
  redirectParams?: URLSearchParams;
30
30
  }
31
+ | {
32
+ type: "passkey";
33
+ email: string;
34
+ creationOpts?: CredentialCreationOptionOverrides;
35
+ }
31
36
  | {
32
37
  type: "passkey";
33
38
  username: string;
package/src/signer.ts CHANGED
@@ -10,6 +10,11 @@ import { SessionManagerParamsSchema } from "./session/manager.js";
10
10
  export type AuthParams =
11
11
  | { type: "email"; email: string; redirectParams?: URLSearchParams }
12
12
  | { type: "email"; bundle: string; orgId?: string }
13
+ | {
14
+ type: "passkey";
15
+ email: string;
16
+ creationOpts?: CredentialCreationOptionOverrides;
17
+ }
13
18
  | {
14
19
  type: "passkey";
15
20
  createNew: false;
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.0.0-alpha.10";
3
+ export const VERSION = "4.0.0-alpha.12";