dexie-cloud-addon 4.0.1-beta.55 → 4.0.1-beta.56
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/modern/DexieCloudAPI.d.ts +8 -5
- package/dist/modern/authentication/authenticate.d.ts +3 -10
- package/dist/modern/authentication/login.d.ts +2 -5
- package/dist/modern/dexie-cloud-addon.js +21 -10
- package/dist/modern/dexie-cloud-addon.js.map +1 -1
- package/dist/modern/dexie-cloud-addon.min.js +1 -1
- package/dist/modern/dexie-cloud-addon.min.js.map +1 -1
- package/dist/modern/service-worker.js +21 -10
- package/dist/modern/service-worker.js.map +1 -1
- package/dist/modern/service-worker.min.js +1 -1
- package/dist/modern/service-worker.min.js.map +1 -1
- package/dist/umd/DexieCloudAPI.d.ts +8 -5
- package/dist/umd/authentication/authenticate.d.ts +3 -10
- package/dist/umd/authentication/login.d.ts +2 -5
- package/dist/umd/dexie-cloud-addon.js +21 -10
- package/dist/umd/dexie-cloud-addon.js.map +1 -1
- package/dist/umd/dexie-cloud-addon.min.js +1 -1
- package/dist/umd/dexie-cloud-addon.min.js.map +1 -1
- package/dist/umd/service-worker.js +21 -10
- package/dist/umd/service-worker.js.map +1 -1
- package/dist/umd/service-worker.min.js +1 -1
- package/dist/umd/service-worker.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -11,6 +11,13 @@ import { Invite } from './Invite';
|
|
|
11
11
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
12
12
|
/** The API of db.cloud, where `db` is an instance of Dexie with dexie-cloud-addon active.
|
|
13
13
|
*/
|
|
14
|
+
export interface LoginHints {
|
|
15
|
+
email?: string;
|
|
16
|
+
userId?: string;
|
|
17
|
+
grant_type?: 'demo' | 'otp';
|
|
18
|
+
otpId?: string;
|
|
19
|
+
otp?: string;
|
|
20
|
+
}
|
|
14
21
|
export interface DexieCloudAPI {
|
|
15
22
|
version: string;
|
|
16
23
|
options: DexieCloudOptions | null;
|
|
@@ -36,11 +43,7 @@ export interface DexieCloudAPI {
|
|
|
36
43
|
* @param userId Optional userId to authenticate
|
|
37
44
|
* @param grant_type requested grant type
|
|
38
45
|
*/
|
|
39
|
-
login(hint?:
|
|
40
|
-
email?: string;
|
|
41
|
-
userId?: string;
|
|
42
|
-
grant_type?: 'demo' | 'otp';
|
|
43
|
-
}): Promise<void>;
|
|
46
|
+
login(hint?: LoginHints): Promise<void>;
|
|
44
47
|
logout(options?: {
|
|
45
48
|
force?: boolean;
|
|
46
49
|
}): Promise<void>;
|
|
@@ -3,18 +3,11 @@ import { BehaviorSubject } from 'rxjs';
|
|
|
3
3
|
import { DexieCloudDB } from '../db/DexieCloudDB';
|
|
4
4
|
import { UserLogin } from '../db/entities/UserLogin';
|
|
5
5
|
import { DXCUserInteraction } from '../types/DXCUserInteraction';
|
|
6
|
+
import { LoginHints } from '../DexieCloudAPI';
|
|
6
7
|
export type FetchTokenCallback = (tokenParams: {
|
|
7
8
|
public_key: string;
|
|
8
|
-
hints?:
|
|
9
|
-
userId?: string;
|
|
10
|
-
email?: string;
|
|
11
|
-
grant_type?: string;
|
|
12
|
-
};
|
|
9
|
+
hints?: LoginHints;
|
|
13
10
|
}) => Promise<TokenFinalResponse | TokenErrorResponse>;
|
|
14
11
|
export declare function loadAccessToken(db: DexieCloudDB): Promise<UserLogin | null>;
|
|
15
|
-
export declare function authenticate(url: string, context: UserLogin, fetchToken: FetchTokenCallback, userInteraction: BehaviorSubject<DXCUserInteraction | undefined>, hints?:
|
|
16
|
-
userId?: string;
|
|
17
|
-
email?: string;
|
|
18
|
-
grant_type?: string;
|
|
19
|
-
}): Promise<UserLogin>;
|
|
12
|
+
export declare function authenticate(url: string, context: UserLogin, fetchToken: FetchTokenCallback, userInteraction: BehaviorSubject<DXCUserInteraction | undefined>, hints?: LoginHints): Promise<UserLogin>;
|
|
20
13
|
export declare function refreshAccessToken(url: string, login: UserLogin): Promise<UserLogin>;
|
|
@@ -1,6 +1,3 @@
|
|
|
1
1
|
import { DexieCloudDB } from '../db/DexieCloudDB';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
userId?: string;
|
|
5
|
-
grant_type?: string;
|
|
6
|
-
}): Promise<boolean>;
|
|
2
|
+
import { LoginHints } from '../DexieCloudAPI';
|
|
3
|
+
export declare function login(db: DexieCloudDB, hints?: LoginHints): Promise<boolean>;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* ==========================================================================
|
|
10
10
|
*
|
|
11
|
-
* Version 4.0.1-beta.
|
|
11
|
+
* Version 4.0.1-beta.56, Wed Jan 31 2024
|
|
12
12
|
*
|
|
13
13
|
* https://dexie.org
|
|
14
14
|
*
|
|
@@ -2452,6 +2452,19 @@
|
|
|
2452
2452
|
demo_user,
|
|
2453
2453
|
grant_type: 'demo',
|
|
2454
2454
|
scopes: ['ACCESS_DB'],
|
|
2455
|
+
public_key
|
|
2456
|
+
};
|
|
2457
|
+
}
|
|
2458
|
+
else if ((hints === null || hints === void 0 ? void 0 : hints.otpId) && hints.otp) {
|
|
2459
|
+
// User provided OTP ID and OTP code. This means that the OTP email
|
|
2460
|
+
// has already gone out and the user may have clicked a magic link
|
|
2461
|
+
// in the email with otp and otpId in query and the app has picked
|
|
2462
|
+
// up those values and passed them to db.cloud.login().
|
|
2463
|
+
tokenRequest = {
|
|
2464
|
+
grant_type: 'otp',
|
|
2465
|
+
otp_id: hints.otpId,
|
|
2466
|
+
otp: hints.otp,
|
|
2467
|
+
scopes: ['ACCESS_DB'],
|
|
2455
2468
|
public_key,
|
|
2456
2469
|
};
|
|
2457
2470
|
}
|
|
@@ -2461,7 +2474,6 @@
|
|
|
2461
2474
|
email,
|
|
2462
2475
|
grant_type: 'otp',
|
|
2463
2476
|
scopes: ['ACCESS_DB'],
|
|
2464
|
-
public_key,
|
|
2465
2477
|
};
|
|
2466
2478
|
}
|
|
2467
2479
|
const res1 = yield fetch(`${url}/token`, {
|
|
@@ -2485,28 +2497,27 @@
|
|
|
2485
2497
|
// Error can also be returned right away.
|
|
2486
2498
|
return response;
|
|
2487
2499
|
}
|
|
2488
|
-
else if (tokenRequest.grant_type === 'otp') {
|
|
2500
|
+
else if (tokenRequest.grant_type === 'otp' && 'email' in tokenRequest) {
|
|
2489
2501
|
if (response.type !== 'otp-sent')
|
|
2490
2502
|
throw new Error(`Unexpected response from ${url}/token`);
|
|
2491
2503
|
const otp = yield promptForOTP(userInteraction, tokenRequest.email);
|
|
2492
|
-
|
|
2493
|
-
tokenRequest.otp_id = response.otp_id;
|
|
2504
|
+
const tokenRequest2 = Object.assign(Object.assign({}, tokenRequest), { otp: otp || '', otp_id: response.otp_id });
|
|
2494
2505
|
let res2 = yield fetch(`${url}/token`, {
|
|
2495
|
-
body: JSON.stringify(
|
|
2506
|
+
body: JSON.stringify(tokenRequest2),
|
|
2496
2507
|
method: 'post',
|
|
2497
2508
|
headers: { 'Content-Type': 'application/json' },
|
|
2498
2509
|
mode: 'cors',
|
|
2499
2510
|
});
|
|
2500
2511
|
while (res2.status === 401) {
|
|
2501
2512
|
const errorText = yield res2.text();
|
|
2502
|
-
|
|
2513
|
+
tokenRequest2.otp = yield promptForOTP(userInteraction, tokenRequest.email, {
|
|
2503
2514
|
type: 'error',
|
|
2504
2515
|
messageCode: 'INVALID_OTP',
|
|
2505
2516
|
message: errorText,
|
|
2506
2517
|
messageParams: {}
|
|
2507
2518
|
});
|
|
2508
2519
|
res2 = yield fetch(`${url}/token`, {
|
|
2509
|
-
body: JSON.stringify(
|
|
2520
|
+
body: JSON.stringify(tokenRequest2),
|
|
2510
2521
|
method: 'post',
|
|
2511
2522
|
headers: { 'Content-Type': 'application/json' },
|
|
2512
2523
|
mode: 'cors',
|
|
@@ -6256,7 +6267,7 @@
|
|
|
6256
6267
|
const syncComplete = new rxjs.Subject();
|
|
6257
6268
|
dexie.cloud = {
|
|
6258
6269
|
// @ts-ignore
|
|
6259
|
-
version: "4.0.1-beta.
|
|
6270
|
+
version: "4.0.1-beta.56",
|
|
6260
6271
|
options: Object.assign({}, DEFAULT_OPTIONS),
|
|
6261
6272
|
schema: null,
|
|
6262
6273
|
get currentUserId() {
|
|
@@ -6533,7 +6544,7 @@
|
|
|
6533
6544
|
}
|
|
6534
6545
|
}
|
|
6535
6546
|
// @ts-ignore
|
|
6536
|
-
dexieCloud.version = "4.0.1-beta.
|
|
6547
|
+
dexieCloud.version = "4.0.1-beta.56";
|
|
6537
6548
|
Dexie.Cloud = dexieCloud;
|
|
6538
6549
|
|
|
6539
6550
|
exports.default = dexieCloud;
|