@account-kit/signer 4.0.0-beta.8 → 4.0.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/dist/esm/base.d.ts +9 -4
- package/dist/esm/base.js +124 -30
- package/dist/esm/base.js.map +1 -1
- package/dist/esm/client/base.d.ts +7 -12
- package/dist/esm/client/base.js +11 -1
- package/dist/esm/client/base.js.map +1 -1
- package/dist/esm/client/index.d.ts +15 -6
- package/dist/esm/client/index.js +23 -12
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/client/types.d.ts +6 -1
- package/dist/esm/client/types.js.map +1 -1
- package/dist/esm/metrics.d.ts +17 -0
- package/dist/esm/metrics.js +7 -0
- package/dist/esm/metrics.js.map +1 -0
- package/dist/esm/session/manager.js +1 -0
- package/dist/esm/session/manager.js.map +1 -1
- package/dist/esm/signer.d.ts +1 -0
- package/dist/esm/signer.js +46 -3
- package/dist/esm/signer.js.map +1 -1
- package/dist/esm/types.d.ts +8 -1
- package/dist/esm/types.js +3 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/types/base.d.ts +9 -4
- package/dist/types/base.d.ts.map +1 -1
- package/dist/types/client/base.d.ts +7 -12
- package/dist/types/client/base.d.ts.map +1 -1
- package/dist/types/client/index.d.ts +15 -6
- package/dist/types/client/index.d.ts.map +1 -1
- package/dist/types/client/types.d.ts +6 -1
- package/dist/types/client/types.d.ts.map +1 -1
- package/dist/types/metrics.d.ts +18 -0
- package/dist/types/metrics.d.ts.map +1 -0
- package/dist/types/session/manager.d.ts.map +1 -1
- package/dist/types/signer.d.ts +1 -0
- package/dist/types/signer.d.ts.map +1 -1
- package/dist/types/types.d.ts +8 -1
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/package.json +6 -5
- package/src/base.ts +198 -62
- package/src/client/base.ts +19 -2
- package/src/client/index.ts +29 -11
- package/src/client/types.ts +7 -1
- package/src/metrics.ts +23 -0
- package/src/session/manager.ts +2 -1
- package/src/signer.ts +60 -5
- package/src/types.ts +9 -1
- package/src/version.ts +1 -1
package/src/session/manager.ts
CHANGED
|
@@ -8,8 +8,8 @@ import {
|
|
|
8
8
|
import { createStore, type Mutate, type StoreApi } from "zustand/vanilla";
|
|
9
9
|
import type { BaseSignerClient } from "../client/base";
|
|
10
10
|
import type { User } from "../client/types";
|
|
11
|
-
import type { Session, SessionManagerEvents } from "./types";
|
|
12
11
|
import { assertNever } from "../utils/typeAssertions.js";
|
|
12
|
+
import type { Session, SessionManagerEvents } from "./types";
|
|
13
13
|
|
|
14
14
|
export const DEFAULT_SESSION_MS = 15 * 60 * 1000; // 15 minutes
|
|
15
15
|
|
|
@@ -93,6 +93,7 @@ export class SessionManager {
|
|
|
93
93
|
.completeAuthWithBundle({
|
|
94
94
|
bundle: existingSession.bundle,
|
|
95
95
|
orgId: existingSession.user.orgId,
|
|
96
|
+
authenticatingType: existingSession.type,
|
|
96
97
|
connectedEventName,
|
|
97
98
|
})
|
|
98
99
|
.catch((e) => {
|
package/src/signer.ts
CHANGED
|
@@ -31,7 +31,12 @@ export type AuthParams =
|
|
|
31
31
|
claims?: string;
|
|
32
32
|
} & OauthProviderConfig &
|
|
33
33
|
OauthRedirectConfig)
|
|
34
|
-
| {
|
|
34
|
+
| {
|
|
35
|
+
type: "oauthReturn";
|
|
36
|
+
bundle: string;
|
|
37
|
+
orgId: string;
|
|
38
|
+
idToken: string;
|
|
39
|
+
};
|
|
35
40
|
|
|
36
41
|
export type OauthProviderConfig =
|
|
37
42
|
| {
|
|
@@ -105,9 +110,59 @@ export class AlchemyWebSigner extends BaseAlchemySigner<AlchemySignerWebClient>
|
|
|
105
110
|
} else {
|
|
106
111
|
client = params_.client;
|
|
107
112
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
113
|
+
const { emailBundle, oauthBundle, oauthOrgId, oauthError, idToken } =
|
|
114
|
+
getAndRemoveQueryParams({
|
|
115
|
+
emailBundle: "bundle",
|
|
116
|
+
// We don't need this, but we still want to remove it from the URL.
|
|
117
|
+
emailOrgId: "orgId",
|
|
118
|
+
oauthBundle: "alchemy-bundle",
|
|
119
|
+
oauthOrgId: "alchemy-org-id",
|
|
120
|
+
oauthError: "alchemy-error",
|
|
121
|
+
idToken: "alchemy-id-token",
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
const initialError =
|
|
125
|
+
oauthError != null
|
|
126
|
+
? { name: "OauthError", message: oauthError }
|
|
127
|
+
: undefined;
|
|
128
|
+
|
|
129
|
+
super({ client, sessionConfig, initialError });
|
|
130
|
+
|
|
131
|
+
if (emailBundle) {
|
|
132
|
+
this.authenticate({ type: "email", bundle: emailBundle });
|
|
133
|
+
} else if (oauthBundle && oauthOrgId && idToken) {
|
|
134
|
+
this.authenticate({
|
|
135
|
+
type: "oauthReturn",
|
|
136
|
+
bundle: oauthBundle,
|
|
137
|
+
orgId: oauthOrgId,
|
|
138
|
+
idToken,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Reads and removes the specified query params from the URL.
|
|
146
|
+
*
|
|
147
|
+
* @param {T} keys object whose values are the query parameter keys to read and
|
|
148
|
+
* remove
|
|
149
|
+
* @returns {{ [K in keyof T]: string | undefined }} object with the same keys
|
|
150
|
+
* as the input whose values are the values of the query params.
|
|
151
|
+
*/
|
|
152
|
+
function getAndRemoveQueryParams<T extends Record<string, string>>(
|
|
153
|
+
keys: T
|
|
154
|
+
): { [K in keyof T]: string | undefined } {
|
|
155
|
+
const url = new URL(window.location.href);
|
|
156
|
+
const result: Record<string, string | undefined> = {};
|
|
157
|
+
let foundQueryParam = false;
|
|
158
|
+
for (const [key, param] of Object.entries(keys)) {
|
|
159
|
+
const value = url.searchParams.get(param) ?? undefined;
|
|
160
|
+
foundQueryParam ||= value != null;
|
|
161
|
+
result[key] = value;
|
|
162
|
+
url.searchParams.delete(param);
|
|
163
|
+
}
|
|
164
|
+
if (foundQueryParam) {
|
|
165
|
+
window.history.replaceState(window.history.state, "", url.toString());
|
|
112
166
|
}
|
|
167
|
+
return result as { [K in keyof T]: string | undefined };
|
|
113
168
|
}
|
package/src/types.ts
CHANGED
|
@@ -4,6 +4,7 @@ export type AlchemySignerEvents = {
|
|
|
4
4
|
connected(user: User): void;
|
|
5
5
|
disconnected(): void;
|
|
6
6
|
statusChanged(status: AlchemySignerStatus): void;
|
|
7
|
+
errorChanged(error: ErrorInfo | undefined): void;
|
|
7
8
|
};
|
|
8
9
|
|
|
9
10
|
export type AlchemySignerEvent = keyof AlchemySignerEvents;
|
|
@@ -12,6 +13,13 @@ export enum AlchemySignerStatus {
|
|
|
12
13
|
INITIALIZING = "INITIALIZING",
|
|
13
14
|
CONNECTED = "CONNECTED",
|
|
14
15
|
DISCONNECTED = "DISCONNECTED",
|
|
15
|
-
|
|
16
|
+
AUTHENTICATING_PASSKEY = "AUTHENTICATING_PASSKEY",
|
|
17
|
+
AUTHENTICATING_EMAIL = "AUTHENTICATING_EMAIL",
|
|
18
|
+
AUTHENTICATING_OAUTH = "AUTHENTICATING_OAUTH",
|
|
16
19
|
AWAITING_EMAIL_AUTH = "AWAITING_EMAIL_AUTH",
|
|
17
20
|
}
|
|
21
|
+
|
|
22
|
+
export interface ErrorInfo {
|
|
23
|
+
name: string;
|
|
24
|
+
message: string;
|
|
25
|
+
}
|
package/src/version.ts
CHANGED