flaio-cli 1.0.15 → 1.1.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.
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Run the browser-based OAuth login flow:
|
|
3
3
|
* 1. Start a local HTTP server on a random port
|
|
4
4
|
* 2. Open the browser to the auth page with ?port=<port>
|
|
5
|
-
* 3. Wait for the browser to redirect back with ?token=<
|
|
5
|
+
* 3. Wait for the browser to redirect back with ?token=<accessToken>&refresh=<refreshToken>
|
|
6
6
|
* 4. Store tokens in settings and shut down the server
|
|
7
7
|
*/
|
|
8
8
|
export declare function login(): Promise<{
|
|
@@ -22,8 +22,8 @@ export declare function isLoggedIn(): boolean;
|
|
|
22
22
|
*/
|
|
23
23
|
export declare function getAuthToken(): string | null;
|
|
24
24
|
/**
|
|
25
|
-
* Refresh the
|
|
26
|
-
* Returns the new
|
|
25
|
+
* Refresh the access token using the stored refresh token.
|
|
26
|
+
* Returns the new access token, or null if refresh failed.
|
|
27
27
|
*/
|
|
28
28
|
export declare function refreshAuthToken(): Promise<string | null>;
|
|
29
29
|
export declare function extractUidFromToken(token: string): string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-auth.d.ts","sourceRoot":"","sources":["../../src/relay/relay-auth.ts"],"names":[],"mappings":"AAWA;;;;;;GAMG;AACH,wBAAsB,KAAK,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyH3E;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,IAAI,CAO7B;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAGpC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAG5C;
|
|
1
|
+
{"version":3,"file":"relay-auth.d.ts","sourceRoot":"","sources":["../../src/relay/relay-auth.ts"],"names":[],"mappings":"AAWA;;;;;;GAMG;AACH,wBAAsB,KAAK,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyH3E;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,IAAI,CAO7B;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAGpC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAG5C;AAKD;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkC/D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAShE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASlE"}
|
package/dist/relay/relay-auth.js
CHANGED
|
@@ -8,7 +8,7 @@ import { setSentryUser, clearSentryUser } from "../analytics/sentry.js";
|
|
|
8
8
|
* Run the browser-based OAuth login flow:
|
|
9
9
|
* 1. Start a local HTTP server on a random port
|
|
10
10
|
* 2. Open the browser to the auth page with ?port=<port>
|
|
11
|
-
* 3. Wait for the browser to redirect back with ?token=<
|
|
11
|
+
* 3. Wait for the browser to redirect back with ?token=<accessToken>&refresh=<refreshToken>
|
|
12
12
|
* 4. Store tokens in settings and shut down the server
|
|
13
13
|
*/
|
|
14
14
|
export async function login() {
|
|
@@ -147,12 +147,11 @@ export function getAuthToken() {
|
|
|
147
147
|
const { config } = settingsStore.getState();
|
|
148
148
|
return config.relay.authToken ?? null;
|
|
149
149
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
const FIREBASE_API_KEY = "AIzaSyAwJ4OgFu6y4XJCC4AkLdeTmfLygzPwpPE";
|
|
150
|
+
/** Base URL for the CLI token endpoint. */
|
|
151
|
+
const CLI_TOKEN_URL = "https://flaio.ai/api/auth/cli-token";
|
|
153
152
|
/**
|
|
154
|
-
* Refresh the
|
|
155
|
-
* Returns the new
|
|
153
|
+
* Refresh the access token using the stored refresh token.
|
|
154
|
+
* Returns the new access token, or null if refresh failed.
|
|
156
155
|
*/
|
|
157
156
|
export async function refreshAuthToken() {
|
|
158
157
|
const { config } = settingsStore.getState();
|
|
@@ -160,22 +159,25 @@ export async function refreshAuthToken() {
|
|
|
160
159
|
if (!refreshToken)
|
|
161
160
|
return null;
|
|
162
161
|
try {
|
|
163
|
-
const res = await fetch(
|
|
162
|
+
const res = await fetch(process.env.CLI_TOKEN_URL || CLI_TOKEN_URL, {
|
|
164
163
|
method: "POST",
|
|
165
|
-
headers: { "Content-Type": "application/
|
|
166
|
-
body:
|
|
164
|
+
headers: { "Content-Type": "application/json" },
|
|
165
|
+
body: JSON.stringify({
|
|
166
|
+
grant_type: "refresh_token",
|
|
167
|
+
refresh_token: refreshToken,
|
|
168
|
+
}),
|
|
167
169
|
});
|
|
168
170
|
if (!res.ok)
|
|
169
171
|
return null;
|
|
170
172
|
const data = (await res.json());
|
|
171
|
-
if (!data.
|
|
173
|
+
if (!data.token)
|
|
172
174
|
return null;
|
|
173
|
-
// Persist the new tokens
|
|
175
|
+
// Persist the new tokens (refresh token is rotated)
|
|
174
176
|
settingsStore.getState().updateRelay({
|
|
175
|
-
authToken: data.
|
|
176
|
-
refreshToken: data.
|
|
177
|
+
authToken: data.token,
|
|
178
|
+
refreshToken: data.refreshToken ?? refreshToken,
|
|
177
179
|
});
|
|
178
|
-
return data.
|
|
180
|
+
return data.token;
|
|
179
181
|
}
|
|
180
182
|
catch {
|
|
181
183
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-auth.js","sourceRoot":"","sources":["../../src/relay/relay-auth.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"relay-auth.js","sourceRoot":"","sources":["../../src/relay/relay-auth.ts"],"names":[],"mappings":"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"}
|