@openfort/openfort-js 0.4.6 → 0.5.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/README.md +28 -59
- package/dist/{utils → clients}/iframe-client.d.ts +2 -1
- package/dist/{utils → clients}/iframe-client.js +39 -10
- package/dist/clients/iframe-client.js.map +1 -0
- package/dist/{key-pair.d.ts → crypto/key-pair.d.ts} +3 -11
- package/dist/{key-pair.js → crypto/key-pair.js} +5 -18
- package/dist/crypto/key-pair.js.map +1 -0
- package/dist/generated/api.d.ts +160 -67
- package/dist/generated/api.js +251 -116
- package/dist/generated/api.js.map +1 -1
- package/dist/index.d.ts +2 -5
- package/dist/index.js +4 -5
- package/dist/index.js.map +1 -1
- package/dist/openfort.d.ts +27 -8
- package/dist/openfort.js +153 -18
- package/dist/openfort.js.map +1 -1
- package/dist/openfortAuth.d.ts +15 -2
- package/dist/openfortAuth.js +50 -4
- package/dist/openfortAuth.js.map +1 -1
- package/dist/recovery/passwordRecovery.d.ts +6 -0
- package/dist/recovery/passwordRecovery.js +13 -0
- package/dist/recovery/passwordRecovery.js.map +1 -0
- package/dist/recovery/recovery.d.ts +3 -0
- package/dist/{storage/base-storage.js → recovery/recovery.js} +1 -1
- package/dist/recovery/recovery.js.map +1 -0
- package/dist/signer/embedded.signer.d.ts +20 -6
- package/dist/signer/embedded.signer.js +42 -9
- package/dist/signer/embedded.signer.js.map +1 -1
- package/dist/signer/session.signer.d.ts +12 -4
- package/dist/signer/session.signer.js +35 -7
- package/dist/signer/session.signer.js.map +1 -1
- package/dist/signer/signer.d.ts +9 -1
- package/dist/signer/signer.js +6 -0
- package/dist/signer/signer.js.map +1 -1
- package/dist/storage/local-storage.d.ts +6 -13
- package/dist/storage/local-storage.js +9 -18
- package/dist/storage/local-storage.js.map +1 -1
- package/dist/storage/storage.d.ts +9 -0
- package/dist/storage/storage.js +8 -0
- package/dist/storage/storage.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/key-pair.js.map +0 -1
- package/dist/storage/base-storage.d.ts +0 -6
- package/dist/storage/base-storage.js.map +0 -1
- package/dist/storage/storage-keys.d.ts +0 -4
- package/dist/storage/storage-keys.js +0 -9
- package/dist/storage/storage-keys.js.map +0 -1
- package/dist/utils/iframe-client.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import Openfort from "./openfort";
|
|
2
|
-
export * from "./key-pair";
|
|
3
2
|
export * from "./openfort";
|
|
4
|
-
export * from "./
|
|
5
|
-
export
|
|
6
|
-
export * from "./signer/session.signer";
|
|
7
|
-
export * from "./signer/embedded.signer";
|
|
3
|
+
export * from "./recovery/passwordRecovery";
|
|
4
|
+
export { OAuthProvider, TransactionIntentResponse, SessionResponse } from "./generated/api";
|
|
8
5
|
export default Openfort;
|
package/dist/index.js
CHANGED
|
@@ -17,12 +17,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.OAuthProvider = void 0;
|
|
20
21
|
const openfort_1 = __importDefault(require("./openfort"));
|
|
21
|
-
__exportStar(require("./key-pair"), exports);
|
|
22
22
|
__exportStar(require("./openfort"), exports);
|
|
23
|
-
__exportStar(require("./
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
__exportStar(require("./signer/embedded.signer"), exports);
|
|
23
|
+
__exportStar(require("./recovery/passwordRecovery"), exports);
|
|
24
|
+
var api_1 = require("./generated/api");
|
|
25
|
+
Object.defineProperty(exports, "OAuthProvider", { enumerable: true, get: function () { return api_1.OAuthProvider; } });
|
|
27
26
|
exports.default = openfort_1.default;
|
|
28
27
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,0DAAkC;AAElC,6CAA2B;AAC3B,8DAA4C;AAC5C,uCAA0F;AAAlF,oGAAA,aAAa,OAAA;AAErB,kBAAe,kBAAQ,CAAC"}
|
package/dist/openfort.d.ts
CHANGED
|
@@ -1,13 +1,32 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { OAuthProvider, SessionResponse, TransactionIntentResponse } from "./generated";
|
|
2
|
+
import { InitAuthResponse } from "./openfortAuth";
|
|
3
|
+
import { IRecovery } from "./recovery/recovery";
|
|
3
4
|
export default class Openfort {
|
|
4
|
-
private
|
|
5
|
+
private _signer?;
|
|
6
|
+
private readonly _publishableKey;
|
|
7
|
+
private readonly _openfortAuth;
|
|
8
|
+
private readonly _storage;
|
|
5
9
|
private _sessionsApi?;
|
|
6
10
|
private _transactionsApi?;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
constructor(publishableKey: string, basePath?: string);
|
|
12
|
+
logout(): Promise<void>;
|
|
13
|
+
configureSessionKey(): SessionKey;
|
|
14
|
+
configureEmbeddedSigner(chainId: number, iframeURL?: string): void;
|
|
15
|
+
configureEmbeddedSignerRecovery(recovery: IRecovery): Promise<void>;
|
|
16
|
+
loginWithEmailPassword(email: string, password: string): Promise<string>;
|
|
17
|
+
loginWithOAuthToken(provider: OAuthProvider, token: string): Promise<string>;
|
|
18
|
+
signUpWithEmailPassword(email: string, password: string): Promise<string>;
|
|
19
|
+
initOAuth(provider: OAuthProvider): Promise<InitAuthResponse>;
|
|
20
|
+
authenticateOAuth(provider: OAuthProvider, key: string): Promise<string>;
|
|
21
|
+
private storeCredentials;
|
|
22
|
+
sendSignatureTransactionIntentRequest(transactionIntentId: string, userOp?: string, signature?: string): Promise<TransactionIntentResponse>;
|
|
12
23
|
sendSignatureSessionRequest(sessionId: string, signature?: string, optimistic?: boolean): Promise<SessionResponse>;
|
|
24
|
+
isAuthenticated(): string;
|
|
25
|
+
getAccessToken(): string;
|
|
26
|
+
isLoaded(): boolean;
|
|
27
|
+
private validateAndRefreshToken;
|
|
13
28
|
}
|
|
29
|
+
export type SessionKey = {
|
|
30
|
+
publicKey: string;
|
|
31
|
+
isRegistered: boolean;
|
|
32
|
+
};
|
package/dist/openfort.js
CHANGED
|
@@ -1,34 +1,104 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const generated_1 = require("./generated");
|
|
4
|
+
const signer_1 = require("./signer/signer");
|
|
5
|
+
const openfortAuth_1 = require("./openfortAuth");
|
|
6
|
+
const storage_1 = require("./storage/storage");
|
|
7
|
+
const local_storage_1 = require("./storage/local-storage");
|
|
8
|
+
const session_signer_1 = require("./signer/session.signer");
|
|
9
|
+
const embedded_signer_1 = require("./signer/embedded.signer");
|
|
4
10
|
class Openfort {
|
|
5
|
-
constructor(publishableKey,
|
|
6
|
-
this.
|
|
11
|
+
constructor(publishableKey, basePath = undefined) {
|
|
12
|
+
this._publishableKey = publishableKey;
|
|
13
|
+
this._openfortAuth = new openfortAuth_1.OpenfortAuth(publishableKey, basePath);
|
|
14
|
+
this._storage = new local_storage_1.LocalStorage();
|
|
15
|
+
const configuration = new generated_1.Configuration({ accessToken: publishableKey, basePath });
|
|
16
|
+
this._sessionsApi = new generated_1.SessionsApi(configuration);
|
|
17
|
+
this._transactionsApi = new generated_1.TransactionIntentsApi(configuration);
|
|
18
|
+
}
|
|
19
|
+
async logout() {
|
|
20
|
+
if (this.isAuthenticated()) {
|
|
21
|
+
await this._openfortAuth.logout(this._storage.get(storage_1.RefreshTokenStorageKey));
|
|
22
|
+
}
|
|
23
|
+
this._storage.remove(storage_1.AuthTokenStorageKey);
|
|
24
|
+
this._storage.remove(storage_1.RefreshTokenStorageKey);
|
|
25
|
+
this._storage.remove(storage_1.PlayerIDStorageKey);
|
|
26
|
+
if (this._signer) {
|
|
27
|
+
await this._signer.logout();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
configureSessionKey() {
|
|
31
|
+
const signer = new session_signer_1.SessionSigner(this._storage);
|
|
7
32
|
this._signer = signer;
|
|
33
|
+
const publicKey = signer.loadKeys();
|
|
34
|
+
if (!publicKey) {
|
|
35
|
+
const newPublicKey = signer.generateKeys();
|
|
36
|
+
return { publicKey: newPublicKey, isRegistered: false };
|
|
37
|
+
}
|
|
38
|
+
return { publicKey, isRegistered: true };
|
|
8
39
|
}
|
|
9
|
-
|
|
10
|
-
if (!this.
|
|
11
|
-
|
|
40
|
+
configureEmbeddedSigner(chainId, iframeURL = undefined) {
|
|
41
|
+
if (!this.isAuthenticated()) {
|
|
42
|
+
throw new NotLoggedIn("Must be logged in to configure embedded signer");
|
|
43
|
+
}
|
|
44
|
+
const signer = new embedded_signer_1.EmbeddedSigner(chainId, this._publishableKey, this._storage, iframeURL);
|
|
45
|
+
this._signer = signer;
|
|
46
|
+
if (!signer.isLoaded()) {
|
|
47
|
+
throw new MissingRecoveryMethod("This device has not been configured, in order to recover your account or create a new one you must provide recovery method");
|
|
12
48
|
}
|
|
13
|
-
return this._sessionsApi;
|
|
14
49
|
}
|
|
15
|
-
|
|
16
|
-
if (!this.
|
|
17
|
-
|
|
50
|
+
async configureEmbeddedSignerRecovery(recovery) {
|
|
51
|
+
if (!this._signer) {
|
|
52
|
+
throw new EmbeddedNotConfigured("No embedded signer configured");
|
|
53
|
+
}
|
|
54
|
+
if (this._signer.getSingerType() !== signer_1.SignerType.EMBEDDED) {
|
|
55
|
+
throw new EmbeddedNotConfigured("Signer must be embedded signer");
|
|
18
56
|
}
|
|
19
|
-
|
|
57
|
+
const embeddedSigner = this._signer;
|
|
58
|
+
embeddedSigner.setRecovery(recovery);
|
|
59
|
+
await this.validateAndRefreshToken();
|
|
60
|
+
await embeddedSigner.ensureEmbeddedAccount();
|
|
61
|
+
}
|
|
62
|
+
async loginWithEmailPassword(email, password) {
|
|
63
|
+
const result = await this._openfortAuth.authorizeWithEmailPassword(email, password);
|
|
64
|
+
this.storeCredentials(result);
|
|
65
|
+
return result.accessToken;
|
|
66
|
+
}
|
|
67
|
+
async loginWithOAuthToken(provider, token) {
|
|
68
|
+
const result = await this._openfortAuth.authorizeWithOAuthToken(provider, token);
|
|
69
|
+
this.storeCredentials(result);
|
|
70
|
+
return result.accessToken;
|
|
20
71
|
}
|
|
21
|
-
async
|
|
22
|
-
|
|
72
|
+
async signUpWithEmailPassword(email, password) {
|
|
73
|
+
const result = await this._openfortAuth.signUp(email, password);
|
|
74
|
+
this.storeCredentials(result);
|
|
75
|
+
return result.accessToken;
|
|
76
|
+
}
|
|
77
|
+
async initOAuth(provider) {
|
|
78
|
+
return await this._openfortAuth.getAuthenticationURL(provider);
|
|
79
|
+
}
|
|
80
|
+
async authenticateOAuth(provider, key) {
|
|
81
|
+
const result = await this._openfortAuth.GetTokenAfterSocialLogin(provider, key);
|
|
82
|
+
this.storeCredentials(result);
|
|
83
|
+
return result.accessToken;
|
|
84
|
+
}
|
|
85
|
+
storeCredentials(auth) {
|
|
86
|
+
this._storage.save(storage_1.AuthTokenStorageKey, auth.accessToken);
|
|
87
|
+
this._storage.save(storage_1.RefreshTokenStorageKey, auth.refreshToken);
|
|
88
|
+
this._storage.save(storage_1.PlayerIDStorageKey, auth.player);
|
|
89
|
+
}
|
|
90
|
+
async sendSignatureTransactionIntentRequest(transactionIntentId, userOp = null, signature = null) {
|
|
91
|
+
if (!signature) {
|
|
92
|
+
if (!userOp) {
|
|
93
|
+
throw new NothingToSign("No user operation or signature provided");
|
|
94
|
+
}
|
|
23
95
|
if (!this._signer) {
|
|
24
|
-
throw new
|
|
96
|
+
throw new NoSignerConfigured("In order to sign a transaction intent, a signer must be configured");
|
|
25
97
|
}
|
|
98
|
+
await this.validateAndRefreshToken();
|
|
26
99
|
signature = await this._signer.sign(userOp);
|
|
27
100
|
}
|
|
28
|
-
|
|
29
|
-
throw new Error("No signature provided");
|
|
30
|
-
}
|
|
31
|
-
const result = await this.transactionsApi.signature(transactionIntentId, { signature, optimistic });
|
|
101
|
+
const result = await this._transactionsApi.signature(transactionIntentId, { signature });
|
|
32
102
|
return result.data;
|
|
33
103
|
}
|
|
34
104
|
async sendSignatureSessionRequest(sessionId, signature, optimistic) {
|
|
@@ -38,9 +108,74 @@ class Openfort {
|
|
|
38
108
|
}
|
|
39
109
|
signature = await this._signer.sign(sessionId);
|
|
40
110
|
}
|
|
41
|
-
const result = await this.
|
|
111
|
+
const result = await this._sessionsApi.signatureSession(sessionId, { signature, optimistic });
|
|
42
112
|
return result.data;
|
|
43
113
|
}
|
|
114
|
+
isAuthenticated() {
|
|
115
|
+
const token = this._storage.get(storage_1.AuthTokenStorageKey);
|
|
116
|
+
const refreshToken = this._storage.get(storage_1.RefreshTokenStorageKey);
|
|
117
|
+
const playerId = this._storage.get(storage_1.PlayerIDStorageKey);
|
|
118
|
+
return token && refreshToken && playerId;
|
|
119
|
+
}
|
|
120
|
+
getAccessToken() {
|
|
121
|
+
return this._storage.get(storage_1.AuthTokenStorageKey);
|
|
122
|
+
}
|
|
123
|
+
isLoaded() {
|
|
124
|
+
if (!this._openfortAuth.jwks) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
if (this._signer && this._signer.getSingerType() === signer_1.SignerType.EMBEDDED) {
|
|
128
|
+
return this._signer.iFrameLoaded();
|
|
129
|
+
}
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
async validateAndRefreshToken() {
|
|
133
|
+
if (!this.isAuthenticated()) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const auth = await this._openfortAuth.verifyAndRefreshToken(this._storage.get(storage_1.AuthTokenStorageKey), this._storage.get(storage_1.RefreshTokenStorageKey));
|
|
137
|
+
if (auth.accessToken !== this._storage.get(storage_1.AuthTokenStorageKey)) {
|
|
138
|
+
this.storeCredentials(auth);
|
|
139
|
+
}
|
|
140
|
+
if (this._signer && this._signer.useCredentials()) {
|
|
141
|
+
this._signer.updateAuthentication();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
44
144
|
}
|
|
45
145
|
exports.default = Openfort;
|
|
146
|
+
class NotLoggedIn extends Error {
|
|
147
|
+
constructor(message) {
|
|
148
|
+
super(message);
|
|
149
|
+
this.name = "NotLoggedIn";
|
|
150
|
+
Object.setPrototypeOf(this, NotLoggedIn.prototype);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
class MissingRecoveryMethod extends Error {
|
|
154
|
+
constructor(message) {
|
|
155
|
+
super(message);
|
|
156
|
+
this.name = "MissingRecoveryMethod";
|
|
157
|
+
Object.setPrototypeOf(this, MissingRecoveryMethod.prototype);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
class EmbeddedNotConfigured extends Error {
|
|
161
|
+
constructor(message) {
|
|
162
|
+
super(message);
|
|
163
|
+
this.name = "EmbeddedNotConfigured";
|
|
164
|
+
Object.setPrototypeOf(this, EmbeddedNotConfigured.prototype);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
class NoSignerConfigured extends Error {
|
|
168
|
+
constructor(message) {
|
|
169
|
+
super(message);
|
|
170
|
+
this.name = "NoSignerConfigured";
|
|
171
|
+
Object.setPrototypeOf(this, NoSignerConfigured.prototype);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
class NothingToSign extends Error {
|
|
175
|
+
constructor(message) {
|
|
176
|
+
super(message);
|
|
177
|
+
this.name = "NothingToSign";
|
|
178
|
+
Object.setPrototypeOf(this, NothingToSign.prototype);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
46
181
|
//# sourceMappingURL=openfort.js.map
|
package/dist/openfort.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openfort.js","sourceRoot":"","sources":["../src/openfort.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"openfort.js","sourceRoot":"","sources":["../src/openfort.ts"],"names":[],"mappings":";;AAAA,2CAOqB;AACrB,4CAAoD;AACpD,iDAAoE;AACpE,+CAA4G;AAC5G,2DAAqD;AACrD,4DAAsD;AACtD,8DAAwD;AAGxD,MAAqB,QAAQ;IASzB,YAAY,cAAsB,EAAE,WAAmB,SAAS;QAC5D,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,2BAAY,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,GAAG,IAAI,4BAAY,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,IAAI,yBAAa,CAAC,EAAC,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAC,CAAC,CAAC;QACjF,IAAI,CAAC,YAAY,GAAG,IAAI,uBAAW,CAAC,aAAa,CAAC,CAAC;QACnD,IAAI,CAAC,gBAAgB,GAAG,IAAI,iCAAqB,CAAC,aAAa,CAAC,CAAC;IACrE,CAAC;IAEM,KAAK,CAAC,MAAM;QACf,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gCAAsB,CAAC,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,6BAAmB,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gCAAsB,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,4BAAkB,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAChC,CAAC;IACL,CAAC;IAEM,mBAAmB;QACtB,MAAM,MAAM,GAAG,IAAI,8BAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;YAC3C,OAAO,EAAC,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAC,CAAC;QAC1D,CAAC;QAED,OAAO,EAAC,SAAS,EAAE,YAAY,EAAE,IAAI,EAAC,CAAC;IAC3C,CAAC;IAEM,uBAAuB,CAAC,OAAe,EAAE,YAAoB,SAAS;QACzE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,WAAW,CAAC,gDAAgD,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,gCAAc,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3F,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;YACrB,MAAM,IAAI,qBAAqB,CAC3B,4HAA4H,CAC/H,CAAC;QACN,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,+BAA+B,CAAC,QAAmB;QAC5D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,IAAI,qBAAqB,CAAC,+BAA+B,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,mBAAU,CAAC,QAAQ,EAAE,CAAC;YACvD,MAAM,IAAI,qBAAqB,CAAC,gCAAgC,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAyB,CAAC;QACtD,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAErC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACrC,MAAM,cAAc,CAAC,qBAAqB,EAAE,CAAC;IACjD,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,KAAa,EAAE,QAAgB;QAC/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACpF,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC,WAAW,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,QAAuB,EAAE,KAAa;QACnE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACjF,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC,WAAW,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,uBAAuB,CAAC,KAAa,EAAE,QAAgB;QAChE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC,WAAW,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,QAAuB;QAC1C,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACnE,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,QAAuB,EAAE,GAAW;QAC/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAChF,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC,WAAW,CAAC;IAC9B,CAAC;IAEO,gBAAgB,CAAC,IAAU;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,6BAAmB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gCAAsB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,4BAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAEM,KAAK,CAAC,qCAAqC,CAC9C,mBAA2B,EAC3B,SAAiB,IAAI,EACrB,YAAoB,IAAI;QAExB,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,IAAI,aAAa,CAAC,yCAAyC,CAAC,CAAC;YACvE,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChB,MAAM,IAAI,kBAAkB,CAAC,oEAAoE,CAAC,CAAC;YACvG,CAAC;YAED,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACrC,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,EAAE,EAAC,SAAS,EAAC,CAAC,CAAC;QACvF,OAAO,MAAM,CAAC,IAAI,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,2BAA2B,CACpC,SAAiB,EACjB,SAAkB,EAClB,UAAoB;QAEpB,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACxD,CAAC;YAED,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAC,SAAS,EAAE,UAAU,EAAC,CAAC,CAAC;QAC5F,OAAO,MAAM,CAAC,IAAI,CAAC;IACvB,CAAC;IAEM,eAAe;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,6BAAmB,CAAC,CAAC;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gCAAsB,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,4BAAkB,CAAC,CAAC;QACvD,OAAO,KAAK,IAAI,YAAY,IAAI,QAAQ,CAAC;IAC7C,CAAC;IAEM,cAAc;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,6BAAmB,CAAC,CAAC;IAClD,CAAC;IAEM,QAAQ;QACX,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,mBAAU,CAAC,QAAQ,EAAE,CAAC;YACvE,OAAQ,IAAI,CAAC,OAA0B,CAAC,YAAY,EAAE,CAAC;QAC3D,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,uBAAuB;QACjC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC1B,OAAO;QACX,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,qBAAqB,CACvD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,6BAAmB,CAAC,EACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gCAAsB,CAAC,CAC5C,CAAC;QACF,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,6BAAmB,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;QACxC,CAAC;IACL,CAAC;CACJ;AAzLD,2BAyLC;AAOD,MAAM,WAAY,SAAQ,KAAK;IAC3B,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;CACJ;AAED,MAAM,qBAAsB,SAAQ,KAAK;IACrC,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;CACJ;AAED,MAAM,qBAAsB,SAAQ,KAAK;IACrC,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;CACJ;AAED,MAAM,kBAAmB,SAAQ,KAAK;IAClC,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC;CACJ;AAED,MAAM,aAAc,SAAQ,KAAK;IAC7B,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;CACJ"}
|
package/dist/openfortAuth.d.ts
CHANGED
|
@@ -1,14 +1,27 @@
|
|
|
1
|
-
import { OAuthProvider
|
|
1
|
+
import { OAuthProvider } from "./generated";
|
|
2
|
+
import { KeyLike } from "jose";
|
|
2
3
|
export type Auth = {
|
|
3
4
|
player: string;
|
|
4
5
|
accessToken: string;
|
|
5
6
|
refreshToken: string;
|
|
6
7
|
};
|
|
8
|
+
export type InitAuthResponse = {
|
|
9
|
+
url: string;
|
|
10
|
+
key: string;
|
|
11
|
+
};
|
|
7
12
|
export declare class OpenfortAuth {
|
|
8
13
|
private readonly _configuration;
|
|
9
14
|
private _oauthApi?;
|
|
10
15
|
private readonly _publishableKey;
|
|
16
|
+
private _jwks;
|
|
11
17
|
constructor(publishableKey: string, basePath?: string);
|
|
12
|
-
|
|
18
|
+
get jwks(): KeyLike | Uint8Array;
|
|
19
|
+
authorizeWithOAuthToken(provider: OAuthProvider, token: string): Promise<Auth>;
|
|
20
|
+
getAuthenticationURL(provider: OAuthProvider): Promise<InitAuthResponse>;
|
|
21
|
+
GetTokenAfterSocialLogin(provider: OAuthProvider, key: string): Promise<Auth>;
|
|
22
|
+
authorizeWithEmailPassword(email: string, password: string): Promise<Auth>;
|
|
23
|
+
signUp(email: string, password: string): Promise<Auth>;
|
|
24
|
+
getJwks(): Promise<KeyLike | Uint8Array>;
|
|
13
25
|
verifyAndRefreshToken(token: string, refreshToken: string): Promise<Auth>;
|
|
26
|
+
logout(refreshToken: string): Promise<void>;
|
|
14
27
|
}
|
package/dist/openfortAuth.js
CHANGED
|
@@ -8,25 +8,68 @@ class OpenfortAuth {
|
|
|
8
8
|
this._configuration = new generated_1.Configuration({ accessToken: publishableKey, basePath });
|
|
9
9
|
this._oauthApi = new generated_1.AuthenticationApi(this._configuration);
|
|
10
10
|
this._publishableKey = publishableKey;
|
|
11
|
+
this.getJwks().then((jwtks) => {
|
|
12
|
+
this._jwks = jwtks;
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
get jwks() {
|
|
16
|
+
return this._jwks;
|
|
11
17
|
}
|
|
12
18
|
async authorizeWithOAuthToken(provider, token) {
|
|
13
19
|
const result = await this._oauthApi.authenticateOAuth({ provider, token });
|
|
14
|
-
return
|
|
20
|
+
return {
|
|
21
|
+
player: result.data.player.id,
|
|
22
|
+
accessToken: result.data.token,
|
|
23
|
+
refreshToken: result.data.refreshToken,
|
|
24
|
+
};
|
|
15
25
|
}
|
|
16
|
-
async
|
|
26
|
+
async getAuthenticationURL(provider) {
|
|
27
|
+
const result = await this._oauthApi.initOAuth({ token: "", provider: provider });
|
|
28
|
+
return {
|
|
29
|
+
url: result.data.url,
|
|
30
|
+
key: result.data.key,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
async GetTokenAfterSocialLogin(provider, key) {
|
|
34
|
+
const result = await this._oauthApi.authenticateOAuth({ provider: provider, token: key });
|
|
35
|
+
return {
|
|
36
|
+
player: result.data.player.id,
|
|
37
|
+
accessToken: result.data.token,
|
|
38
|
+
refreshToken: result.data.refreshToken,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
async authorizeWithEmailPassword(email, password) {
|
|
42
|
+
const result = await this._oauthApi.loginEmailPassword({ email, password });
|
|
43
|
+
return {
|
|
44
|
+
player: result.data.player.id,
|
|
45
|
+
accessToken: result.data.token,
|
|
46
|
+
refreshToken: result.data.refreshToken,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
async signUp(email, password) {
|
|
50
|
+
const result = await this._oauthApi.signupEmailPassword({ name: "", email, password });
|
|
51
|
+
return {
|
|
52
|
+
player: result.data.player.id,
|
|
53
|
+
accessToken: result.data.token,
|
|
54
|
+
refreshToken: result.data.refreshToken,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
async getJwks() {
|
|
17
58
|
const jwtks = await this._oauthApi.getJwks(this._publishableKey);
|
|
18
59
|
if (jwtks.data.keys.length === 0) {
|
|
19
60
|
throw new Error("No keys found");
|
|
20
61
|
}
|
|
21
62
|
const jwtKey = jwtks.data.keys[0];
|
|
22
|
-
|
|
63
|
+
return await (0, jose_1.importJWK)({
|
|
23
64
|
kty: jwtKey.kty,
|
|
24
65
|
crv: jwtKey.crv,
|
|
25
66
|
x: jwtKey.x,
|
|
26
67
|
y: jwtKey.y,
|
|
27
68
|
}, jwtKey.alg);
|
|
69
|
+
}
|
|
70
|
+
async verifyAndRefreshToken(token, refreshToken) {
|
|
28
71
|
try {
|
|
29
|
-
const verification = await (0, jose_1.jwtVerify)(token,
|
|
72
|
+
const verification = await (0, jose_1.jwtVerify)(token, this._jwks);
|
|
30
73
|
return {
|
|
31
74
|
player: verification.payload.sub,
|
|
32
75
|
accessToken: token,
|
|
@@ -47,6 +90,9 @@ class OpenfortAuth {
|
|
|
47
90
|
}
|
|
48
91
|
}
|
|
49
92
|
}
|
|
93
|
+
async logout(refreshToken) {
|
|
94
|
+
await this._oauthApi.logout({ refreshToken });
|
|
95
|
+
}
|
|
50
96
|
}
|
|
51
97
|
exports.OpenfortAuth = OpenfortAuth;
|
|
52
98
|
//# sourceMappingURL=openfortAuth.js.map
|
package/dist/openfortAuth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openfortAuth.js","sourceRoot":"","sources":["../src/openfortAuth.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"openfortAuth.js","sourceRoot":"","sources":["../src/openfortAuth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PasswordRecovery = void 0;
|
|
4
|
+
class PasswordRecovery {
|
|
5
|
+
constructor(recoveryPassword) {
|
|
6
|
+
this.recoveryPassword = recoveryPassword;
|
|
7
|
+
}
|
|
8
|
+
getRecoveryPassword() {
|
|
9
|
+
return this.recoveryPassword;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.PasswordRecovery = PasswordRecovery;
|
|
13
|
+
//# sourceMappingURL=passwordRecovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passwordRecovery.js","sourceRoot":"","sources":["../../src/recovery/passwordRecovery.ts"],"names":[],"mappings":";;;AAEA,MAAa,gBAAgB;IAEzB,YAAY,gBAAwB;QAChC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC7C,CAAC;IACM,mBAAmB;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;CACJ;AARD,4CAQC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../src/recovery/recovery.ts"],"names":[],"mappings":""}
|
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
import { Bytes } from "@ethersproject/bytes";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import { ISigner, SignerType } from "./signer";
|
|
3
|
+
import { IStorage } from "../storage/storage";
|
|
4
|
+
import { IRecovery } from "../recovery/recovery";
|
|
5
|
+
export declare class EmbeddedSigner implements ISigner {
|
|
6
|
+
private _iframeClient;
|
|
6
7
|
private _deviceID;
|
|
7
|
-
|
|
8
|
+
private readonly _publishableKey;
|
|
9
|
+
private _chainId;
|
|
10
|
+
private readonly _iframeURL;
|
|
11
|
+
private readonly _storage;
|
|
12
|
+
private _recovery;
|
|
13
|
+
constructor(chainId: number, publishableKey: string, storage: IStorage, iframeURL?: string);
|
|
14
|
+
logout(): Promise<void>;
|
|
15
|
+
useCredentials(): boolean;
|
|
16
|
+
updateAuthentication(): void;
|
|
17
|
+
private configureIframeClient;
|
|
18
|
+
getSingerType(): SignerType;
|
|
8
19
|
ensureEmbeddedAccount(): Promise<string>;
|
|
9
20
|
sign(message: Bytes | string): Promise<string>;
|
|
10
|
-
dispose(): void
|
|
21
|
+
dispose(): Promise<void>;
|
|
22
|
+
setRecovery(recovery: IRecovery): void;
|
|
23
|
+
isLoaded(): Promise<boolean>;
|
|
24
|
+
iFrameLoaded(): boolean;
|
|
11
25
|
}
|
|
@@ -1,12 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.EmbeddedSigner = void 0;
|
|
4
|
-
const iframe_client_1 = require("../
|
|
4
|
+
const iframe_client_1 = require("../clients/iframe-client");
|
|
5
|
+
const signer_1 = require("./signer");
|
|
6
|
+
const storage_1 = require("../storage/storage");
|
|
5
7
|
class EmbeddedSigner {
|
|
6
|
-
constructor(chainId, publishableKey,
|
|
8
|
+
constructor(chainId, publishableKey, storage, iframeURL) {
|
|
7
9
|
this._deviceID = null;
|
|
8
|
-
this.
|
|
9
|
-
this.
|
|
10
|
+
this._storage = storage;
|
|
11
|
+
this._publishableKey = publishableKey;
|
|
12
|
+
this._chainId = chainId;
|
|
13
|
+
this._iframeURL = iframeURL;
|
|
14
|
+
this.configureIframeClient();
|
|
15
|
+
}
|
|
16
|
+
async logout() {
|
|
17
|
+
await this.dispose();
|
|
18
|
+
this._deviceID = null;
|
|
19
|
+
this._chainId = 0;
|
|
20
|
+
}
|
|
21
|
+
useCredentials() {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
updateAuthentication() {
|
|
25
|
+
this.dispose();
|
|
26
|
+
this.configureIframeClient();
|
|
27
|
+
}
|
|
28
|
+
configureIframeClient() {
|
|
29
|
+
this._iframeClient = new iframe_client_1.IframeClient(this._publishableKey, this._storage.get(storage_1.AuthTokenStorageKey), this._chainId, this._iframeURL);
|
|
30
|
+
}
|
|
31
|
+
getSingerType() {
|
|
32
|
+
return signer_1.SignerType.EMBEDDED;
|
|
10
33
|
}
|
|
11
34
|
async ensureEmbeddedAccount() {
|
|
12
35
|
if (this._deviceID) {
|
|
@@ -16,16 +39,26 @@ class EmbeddedSigner {
|
|
|
16
39
|
if (this._deviceID) {
|
|
17
40
|
return this._deviceID;
|
|
18
41
|
}
|
|
19
|
-
|
|
42
|
+
if (!this._recovery) {
|
|
43
|
+
throw new Error("Recovery is not set");
|
|
44
|
+
}
|
|
45
|
+
return await this._iframeClient.createAccount(this._recovery.getRecoveryPassword());
|
|
20
46
|
}
|
|
21
47
|
async sign(message) {
|
|
22
|
-
console.log("Signing message", message);
|
|
23
48
|
await this.ensureEmbeddedAccount();
|
|
24
|
-
console.log("Signing message after account creation", message);
|
|
25
49
|
return await this._iframeClient.sign(message);
|
|
26
50
|
}
|
|
27
|
-
dispose() {
|
|
28
|
-
this._iframeClient.dispose();
|
|
51
|
+
async dispose() {
|
|
52
|
+
await this._iframeClient.dispose();
|
|
53
|
+
}
|
|
54
|
+
setRecovery(recovery) {
|
|
55
|
+
this._recovery = recovery;
|
|
56
|
+
}
|
|
57
|
+
async isLoaded() {
|
|
58
|
+
return this._deviceID !== null || (await this._iframeClient.getCurrentDevice()) !== "";
|
|
59
|
+
}
|
|
60
|
+
iFrameLoaded() {
|
|
61
|
+
return this._iframeClient.isLoaded();
|
|
29
62
|
}
|
|
30
63
|
}
|
|
31
64
|
exports.EmbeddedSigner = EmbeddedSigner;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedded.signer.js","sourceRoot":"","sources":["../../src/signer/embedded.signer.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"embedded.signer.js","sourceRoot":"","sources":["../../src/signer/embedded.signer.ts"],"names":[],"mappings":";;;AAAA,4DAAsD;AAEtD,qCAA6C;AAC7C,gDAAiE;AAGjE,MAAa,cAAc;IASvB,YAAY,OAAe,EAAE,cAAsB,EAAE,OAAiB,EAAE,SAAkB;QAPlF,cAAS,GAAkB,IAAI,CAAC;QAQpC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,MAAM;QACR,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,cAAc;QACV,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,oBAAoB;QAChB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAEO,qBAAqB;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,4BAAY,CACjC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,6BAAmB,CAAC,EACtC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU,CAClB,CAAC;IACN,CAAC;IAED,aAAa;QACT,OAAO,mBAAU,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,qBAAqB;QAC9B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,SAAS,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;QAC7D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,SAAS,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACxF,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,OAAuB;QACrC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACnC,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAiB,CAAC,CAAC;IAC5D,CAAC;IAEM,KAAK,CAAC,OAAO;QAChB,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IACvC,CAAC;IAEM,WAAW,CAAC,QAAmB;QAClC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,CAAC;IAC3F,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IACzC,CAAC;CACJ;AA/ED,wCA+EC"}
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import { Bytes } from "@ethersproject/bytes";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import { ISigner, SignerType } from "./signer";
|
|
3
|
+
import { IStorage } from "../storage/storage";
|
|
4
|
+
export declare class SessionSigner implements ISigner {
|
|
5
|
+
private _sessionKey;
|
|
6
|
+
private readonly _storage;
|
|
7
|
+
constructor(storage: IStorage);
|
|
6
8
|
sign(message: Bytes | string): Promise<string>;
|
|
9
|
+
logout(): Promise<void>;
|
|
10
|
+
loadKeys(): string;
|
|
11
|
+
generateKeys(): string;
|
|
12
|
+
getSingerType(): SignerType;
|
|
13
|
+
useCredentials(): boolean;
|
|
14
|
+
updateAuthentication(): void;
|
|
7
15
|
}
|