@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.
Files changed (51) hide show
  1. package/README.md +28 -59
  2. package/dist/{utils → clients}/iframe-client.d.ts +2 -1
  3. package/dist/{utils → clients}/iframe-client.js +39 -10
  4. package/dist/clients/iframe-client.js.map +1 -0
  5. package/dist/{key-pair.d.ts → crypto/key-pair.d.ts} +3 -11
  6. package/dist/{key-pair.js → crypto/key-pair.js} +5 -18
  7. package/dist/crypto/key-pair.js.map +1 -0
  8. package/dist/generated/api.d.ts +160 -67
  9. package/dist/generated/api.js +251 -116
  10. package/dist/generated/api.js.map +1 -1
  11. package/dist/index.d.ts +2 -5
  12. package/dist/index.js +4 -5
  13. package/dist/index.js.map +1 -1
  14. package/dist/openfort.d.ts +27 -8
  15. package/dist/openfort.js +153 -18
  16. package/dist/openfort.js.map +1 -1
  17. package/dist/openfortAuth.d.ts +15 -2
  18. package/dist/openfortAuth.js +50 -4
  19. package/dist/openfortAuth.js.map +1 -1
  20. package/dist/recovery/passwordRecovery.d.ts +6 -0
  21. package/dist/recovery/passwordRecovery.js +13 -0
  22. package/dist/recovery/passwordRecovery.js.map +1 -0
  23. package/dist/recovery/recovery.d.ts +3 -0
  24. package/dist/{storage/base-storage.js → recovery/recovery.js} +1 -1
  25. package/dist/recovery/recovery.js.map +1 -0
  26. package/dist/signer/embedded.signer.d.ts +20 -6
  27. package/dist/signer/embedded.signer.js +42 -9
  28. package/dist/signer/embedded.signer.js.map +1 -1
  29. package/dist/signer/session.signer.d.ts +12 -4
  30. package/dist/signer/session.signer.js +35 -7
  31. package/dist/signer/session.signer.js.map +1 -1
  32. package/dist/signer/signer.d.ts +9 -1
  33. package/dist/signer/signer.js +6 -0
  34. package/dist/signer/signer.js.map +1 -1
  35. package/dist/storage/local-storage.d.ts +6 -13
  36. package/dist/storage/local-storage.js +9 -18
  37. package/dist/storage/local-storage.js.map +1 -1
  38. package/dist/storage/storage.d.ts +9 -0
  39. package/dist/storage/storage.js +8 -0
  40. package/dist/storage/storage.js.map +1 -0
  41. package/dist/version.d.ts +1 -1
  42. package/dist/version.js +1 -1
  43. package/package.json +1 -1
  44. package/tsconfig.tsbuildinfo +1 -1
  45. package/dist/key-pair.js.map +0 -1
  46. package/dist/storage/base-storage.d.ts +0 -6
  47. package/dist/storage/base-storage.js.map +0 -1
  48. package/dist/storage/storage-keys.d.ts +0 -4
  49. package/dist/storage/storage-keys.js +0 -9
  50. package/dist/storage/storage-keys.js.map +0 -1
  51. 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 "./openfortAuth";
5
- export * from "./signer/signer";
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("./openfortAuth"), exports);
24
- __exportStar(require("./signer/signer"), exports);
25
- __exportStar(require("./signer/session.signer"), exports);
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":";;;;;;;;;;;;;;;;;;;AAAA,0DAAkC;AAElC,6CAA2B;AAC3B,6CAA2B;AAC3B,iDAA+B;AAC/B,kDAAgC;AAChC,0DAAwC;AACxC,2DAAyC;AAEzC,kBAAe,kBAAQ,CAAC"}
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"}
@@ -1,13 +1,32 @@
1
- import { SessionResponse, SessionsApi, TransactionIntentResponse, TransactionIntentsApi } from "./generated";
2
- import { Signer } from "./signer/signer";
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 readonly _configuration;
5
+ private _signer?;
6
+ private readonly _publishableKey;
7
+ private readonly _openfortAuth;
8
+ private readonly _storage;
5
9
  private _sessionsApi?;
6
10
  private _transactionsApi?;
7
- private readonly _signer?;
8
- constructor(publishableKey: string, signer?: Signer, basePath?: string);
9
- protected get sessionsApi(): SessionsApi;
10
- protected get transactionsApi(): TransactionIntentsApi;
11
- sendSignatureTransactionIntentRequest(transactionIntentId: string, userOp?: string, signature?: string, optimistic?: boolean): Promise<TransactionIntentResponse>;
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, signer = undefined, basePath = undefined) {
6
- this._configuration = new generated_1.Configuration({ accessToken: publishableKey, basePath });
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
- get sessionsApi() {
10
- if (!this._sessionsApi) {
11
- this._sessionsApi = new generated_1.SessionsApi(this._configuration);
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
- get transactionsApi() {
16
- if (!this._transactionsApi) {
17
- this._transactionsApi = new generated_1.TransactionIntentsApi(this._configuration);
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
- return this._transactionsApi;
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 sendSignatureTransactionIntentRequest(transactionIntentId, userOp, signature, optimistic) {
22
- if (!signature && userOp) {
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 Error("No signer nor signature provided");
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
- if (!signature) {
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.sessionsApi.signatureSession(sessionId, { signature, optimistic });
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
@@ -1 +1 @@
1
- {"version":3,"file":"openfort.js","sourceRoot":"","sources":["../src/openfort.ts"],"names":[],"mappings":";;AAAA,2CAMqB;AAGrB,MAAqB,QAAQ;IAMzB,YAAY,cAAsB,EAAE,SAAiB,SAAS,EAAE,WAAmB,SAAS;QACxF,IAAI,CAAC,cAAc,GAAG,IAAI,yBAAa,CAAC,EAAC,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAC,CAAC,CAAC;QACjF,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,IAAc,WAAW;QACrB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG,IAAI,uBAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,IAAc,eAAe;QACzB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACzB,IAAI,CAAC,gBAAgB,GAAG,IAAI,iCAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,qCAAqC,CAC9C,mBAA2B,EAC3B,MAAe,EACf,SAAkB,EAClB,UAAoB;QAEpB,IAAI,CAAC,SAAS,IAAI,MAAM,EAAE,CAAC;YACvB,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,MAAM,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,mBAAmB,EAAE,EAAC,SAAS,EAAE,UAAU,EAAC,CAAC,CAAC;QAClG,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,WAAW,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAC,SAAS,EAAE,UAAU,EAAC,CAAC,CAAC;QAC3F,OAAO,MAAM,CAAC,IAAI,CAAC;IACvB,CAAC;CACJ;AA7DD,2BA6DC"}
1
+ {"version":3,"file":"openfort.js","sourceRoot":"","sources":["../src/openfort.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,27 @@
1
- import { OAuthProvider, AuthResponse } from "./generated";
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
- authorizeWithOAuthToken(provider: OAuthProvider, token: string): Promise<AuthResponse>;
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
  }
@@ -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 result.data;
20
+ return {
21
+ player: result.data.player.id,
22
+ accessToken: result.data.token,
23
+ refreshToken: result.data.refreshToken,
24
+ };
15
25
  }
16
- async verifyAndRefreshToken(token, refreshToken) {
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
- const ecPublicKey = await (0, jose_1.importJWK)({
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, ecPublicKey);
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
@@ -1 +1 @@
1
- {"version":3,"file":"openfortAuth.js","sourceRoot":"","sources":["../src/openfortAuth.ts"],"names":[],"mappings":";;;AAAA,2CAA0F;AAC1F,+BAAkD;AAQlD,MAAa,YAAY;IAKrB,YAAY,cAAsB,EAAE,QAAiB;QACjD,IAAI,CAAC,cAAc,GAAG,IAAI,yBAAa,CAAC,EAAC,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAC,CAAC,CAAC;QACjF,IAAI,CAAC,SAAS,GAAG,IAAI,6BAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5D,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IAC1C,CAAC;IAEM,KAAK,CAAC,uBAAuB,CAAC,QAAuB,EAAE,KAAa;QACvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC,IAAI,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,qBAAqB,CAAC,KAAa,EAAE,YAAoB;QAClE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACjE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,MAAM,IAAA,gBAAS,EAC/B;YACI,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,CAAC,EAAE,MAAM,CAAC,CAAC;YACX,CAAC,EAAE,MAAM,CAAC,CAAC;SACd,EACD,MAAM,CAAC,GAAG,CACb,CAAC;QACF,IAAI,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,IAAA,gBAAS,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YACzD,OAAO;gBACH,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG;gBAChC,WAAW,EAAE,KAAK;gBAClB,YAAY;aACf,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,KAAK,YAAY,aAAM,CAAC,UAAU,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAC,YAAY,EAAC,CAAC,CAAC;gBAC9D,OAAO;oBACH,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;oBAC/B,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;oBAChC,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY;iBAC3C,CAAC;YACN,CAAC;iBAAM,CAAC;gBACJ,MAAM,KAAK,CAAC;YAChB,CAAC;QACL,CAAC;IACL,CAAC;CACJ;AApDD,oCAoDC"}
1
+ {"version":3,"file":"openfortAuth.js","sourceRoot":"","sources":["../src/openfortAuth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { IRecovery } from "./recovery";
2
+ export declare class PasswordRecovery implements IRecovery {
3
+ private readonly recoveryPassword;
4
+ constructor(recoveryPassword: string);
5
+ getRecoveryPassword(): string;
6
+ }
@@ -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,3 @@
1
+ export interface IRecovery {
2
+ getRecoveryPassword(): string;
3
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=base-storage.js.map
3
+ //# sourceMappingURL=recovery.js.map
@@ -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 { Signer } from "./signer";
3
- export declare class EmbeddedSigner implements Signer {
4
- private readonly _iframeClient;
5
- private readonly _recoverySharePassword?;
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
- constructor(chainId: number, publishableKey: string, accessToken: string, recoverySharePassword?: string, iframeURL?: string);
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("../utils/iframe-client");
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, accessToken, recoverySharePassword, iframeURL) {
8
+ constructor(chainId, publishableKey, storage, iframeURL) {
7
9
  this._deviceID = null;
8
- this._iframeClient = new iframe_client_1.IframeClient(publishableKey, accessToken, chainId, iframeURL);
9
- this._recoverySharePassword = recoverySharePassword;
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
- return await this._iframeClient.createAccount(this._recoverySharePassword);
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,0DAAoD;AAIpD,MAAa,cAAc;IAKvB,YACI,OAAe,EACf,cAAsB,EACtB,WAAmB,EACnB,qBAA8B,EAC9B,SAAkB;QAPd,cAAS,GAAkB,IAAI,CAAC;QASpC,IAAI,CAAC,aAAa,GAAG,IAAI,4BAAY,CAAC,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACvF,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;IACxD,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,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC/E,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,OAAuB;QACrC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,OAAO,CAAC,CAAC;QAC/D,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAiB,CAAC,CAAC;IAC5D,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;CACJ;AAvCD,wCAuCC"}
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 { Signer } from "./signer";
3
- export declare class SessionSigner implements Signer {
4
- private readonly _sessionKey;
5
- constructor();
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
  }