@fusionauth/angular-sdk 1.0.2 → 1.2.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 +5 -0
- package/esm2022/lib/SSRCookieAdapter.mjs +23 -0
- package/esm2022/lib/components/fusionauth-account.button/fusion-auth-account-button.component.mjs +18 -0
- package/esm2022/lib/components/fusionauth-login.button/fusion-auth-login-button.component.mjs +4 -4
- package/esm2022/lib/components/fusionauth-logout.button/fusion-auth-logout-button.component.mjs +4 -4
- package/esm2022/lib/components/fusionauth-register.button/fusion-auth-register-button.component.mjs +4 -4
- package/esm2022/lib/fusion-auth.module.mjs +15 -11
- package/esm2022/lib/fusion-auth.service.mjs +30 -3
- package/esm2022/lib/injectionToken.mjs +3 -0
- package/esm2022/lib/types.mjs +1 -1
- package/esm2022/public-api.mjs +2 -1
- package/esm2022/sdkcore/CookieHelpers/CookieHelpers.mjs +34 -0
- package/esm2022/sdkcore/CookieHelpers/index.mjs +2 -0
- package/esm2022/sdkcore/RedirectHelper/RedirectHelper.mjs +47 -0
- package/esm2022/sdkcore/RedirectHelper/index.mjs +2 -0
- package/esm2022/sdkcore/SDKConfig/SDKConfig.mjs +2 -0
- package/esm2022/sdkcore/SDKConfig/index.mjs +2 -0
- package/esm2022/sdkcore/SDKContext/SDKContext.mjs +2 -0
- package/esm2022/sdkcore/SDKContext/index.mjs +2 -0
- package/esm2022/sdkcore/SDKCore/SDKCore.mjs +110 -0
- package/esm2022/sdkcore/SDKCore/index.mjs +2 -0
- package/esm2022/sdkcore/UrlHelper/UrlHelper.mjs +69 -0
- package/esm2022/sdkcore/UrlHelper/UrlHelperTypes.mjs +2 -0
- package/esm2022/sdkcore/UrlHelper/index.mjs +3 -0
- package/esm2022/sdkcore/index.mjs +5 -0
- package/esm2022/sdkcore/testUtils/index.mjs +3 -0
- package/esm2022/sdkcore/testUtils/mockLoggedIn.mjs +13 -0
- package/esm2022/sdkcore/testUtils/mockWindowLocation.mjs +10 -0
- package/fesm2022/fusionauth-angular-sdk.mjs +282 -155
- package/fesm2022/fusionauth-angular-sdk.mjs.map +1 -1
- package/lib/SSRCookieAdapter.d.ts +7 -0
- package/lib/components/fusionauth-account.button/fusion-auth-account-button.component.d.ts +9 -0
- package/lib/fusion-auth.module.d.ts +2 -1
- package/lib/fusion-auth.service.d.ts +13 -5
- package/lib/injectionToken.d.ts +3 -0
- package/lib/types.d.ts +9 -1
- package/package.json +3 -3
- package/public-api.d.ts +1 -0
- package/sdkcore/CookieHelpers/CookieHelpers.d.ts +11 -0
- package/sdkcore/CookieHelpers/index.d.ts +1 -0
- package/sdkcore/RedirectHelper/RedirectHelper.d.ts +10 -0
- package/sdkcore/RedirectHelper/index.d.ts +1 -0
- package/sdkcore/SDKConfig/SDKConfig.d.ts +79 -0
- package/sdkcore/SDKConfig/index.d.ts +1 -0
- package/sdkcore/SDKContext/SDKContext.d.ts +69 -0
- package/sdkcore/SDKContext/index.d.ts +1 -0
- package/sdkcore/SDKCore/SDKCore.d.ts +28 -0
- package/sdkcore/SDKCore/index.d.ts +1 -0
- package/sdkcore/UrlHelper/UrlHelper.d.ts +23 -0
- package/sdkcore/UrlHelper/UrlHelperTypes.d.ts +11 -0
- package/sdkcore/UrlHelper/index.d.ts +2 -0
- package/sdkcore/index.d.ts +5 -0
- package/sdkcore/testUtils/index.d.ts +2 -0
- package/sdkcore/testUtils/mockLoggedIn.d.ts +5 -0
- package/sdkcore/testUtils/mockWindowLocation.d.ts +18 -0
- package/esm2022/lib/core.mjs +0 -217
- package/lib/core.d.ts +0 -35
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { UrlHelper } from '../UrlHelper';
|
|
2
|
+
import { RedirectHelper } from '../RedirectHelper';
|
|
3
|
+
import { getAccessTokenExpirationMoment } from '../CookieHelpers';
|
|
4
|
+
/** A class containing framework-agnostic SDK methods */
|
|
5
|
+
export class SDKCore {
|
|
6
|
+
constructor(config) {
|
|
7
|
+
this.redirectHelper = new RedirectHelper();
|
|
8
|
+
this.config = config;
|
|
9
|
+
this.urlHelper = new UrlHelper({
|
|
10
|
+
serverUrl: config.serverUrl,
|
|
11
|
+
clientId: config.clientId,
|
|
12
|
+
redirectUri: config.redirectUri,
|
|
13
|
+
scope: config.scope,
|
|
14
|
+
mePath: config.mePath,
|
|
15
|
+
loginPath: config.loginPath,
|
|
16
|
+
registerPath: config.registerPath,
|
|
17
|
+
logoutPath: config.logoutPath,
|
|
18
|
+
tokenRefreshPath: config.tokenRefreshPath,
|
|
19
|
+
postLogoutRedirectUri: config.postLogoutRedirectUri,
|
|
20
|
+
});
|
|
21
|
+
this.scheduleTokenExpiration();
|
|
22
|
+
}
|
|
23
|
+
startLogin(state) {
|
|
24
|
+
this.redirectHelper.handlePreRedirect(state);
|
|
25
|
+
window.location.assign(this.urlHelper.getLoginUrl(state));
|
|
26
|
+
}
|
|
27
|
+
startRegister(state) {
|
|
28
|
+
this.redirectHelper.handlePreRedirect(state);
|
|
29
|
+
window.location.assign(this.urlHelper.getRegisterUrl(state));
|
|
30
|
+
}
|
|
31
|
+
startLogout() {
|
|
32
|
+
window.location.assign(this.urlHelper.getLogoutUrl());
|
|
33
|
+
}
|
|
34
|
+
manageAccount() {
|
|
35
|
+
window.location.assign(this.urlHelper.getAccountManagementUrl());
|
|
36
|
+
}
|
|
37
|
+
async fetchUserInfo() {
|
|
38
|
+
const userInfoResponse = await fetch(this.urlHelper.getMeUrl(), {
|
|
39
|
+
credentials: 'include',
|
|
40
|
+
});
|
|
41
|
+
if (!userInfoResponse.ok) {
|
|
42
|
+
throw new Error(`Unable to fetch userInfo in fusionauth. Request failed with status code ${userInfoResponse?.status}`);
|
|
43
|
+
}
|
|
44
|
+
const userInfo = await userInfoResponse.json();
|
|
45
|
+
return userInfo;
|
|
46
|
+
}
|
|
47
|
+
async refreshToken() {
|
|
48
|
+
const response = await fetch(this.urlHelper.getTokenRefreshUrl(), {
|
|
49
|
+
method: 'POST',
|
|
50
|
+
credentials: 'include',
|
|
51
|
+
headers: {
|
|
52
|
+
'Content-Type': 'text/plain',
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
if (!(response.status >= 200 && response.status < 300)) {
|
|
56
|
+
const message = (await response?.text()) ||
|
|
57
|
+
'Error refreshing access token in fusionauth';
|
|
58
|
+
throw new Error(message);
|
|
59
|
+
}
|
|
60
|
+
// a successful request means that app_exp was bumped into the future.
|
|
61
|
+
// reschedule the access token expiration event.
|
|
62
|
+
this.scheduleTokenExpiration();
|
|
63
|
+
return response;
|
|
64
|
+
}
|
|
65
|
+
initAutoRefresh() {
|
|
66
|
+
if (!this.isLoggedIn) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const secondsBeforeRefresh = this.config.autoRefreshSecondsBeforeExpiry ?? 10;
|
|
70
|
+
const millisecondsBeforeRefresh = secondsBeforeRefresh * 1000;
|
|
71
|
+
const now = new Date().getTime();
|
|
72
|
+
const refreshTime = this.at_exp - millisecondsBeforeRefresh;
|
|
73
|
+
const timeTillRefresh = Math.max(refreshTime - now, 0);
|
|
74
|
+
return setTimeout(async () => {
|
|
75
|
+
try {
|
|
76
|
+
await this.refreshToken();
|
|
77
|
+
this.initAutoRefresh();
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
this.config.onAutoRefreshFailure?.(error);
|
|
81
|
+
}
|
|
82
|
+
}, timeTillRefresh);
|
|
83
|
+
}
|
|
84
|
+
handlePostRedirect(callback) {
|
|
85
|
+
if (this.isLoggedIn && this.redirectHelper.didRedirect) {
|
|
86
|
+
this.redirectHelper.handlePostRedirect(callback);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
get isLoggedIn() {
|
|
90
|
+
return this.at_exp > new Date().getTime();
|
|
91
|
+
}
|
|
92
|
+
/** The moment of access token expiration in milliseconds since epoch. */
|
|
93
|
+
get at_exp() {
|
|
94
|
+
return getAccessTokenExpirationMoment(this.config.accessTokenExpireCookieName, this.config.cookieAdapter);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Schedules `onTokenExpiration` at moment of access token expiration.
|
|
98
|
+
* SDKCore is not necessarily reactive like React, Angular, and Vue.
|
|
99
|
+
* so `onTokenExpiration` is for reactive frameworks to hook in and perform actions as on token expiration.
|
|
100
|
+
*/
|
|
101
|
+
scheduleTokenExpiration() {
|
|
102
|
+
clearTimeout(this.tokenExpirationTimeout);
|
|
103
|
+
const now = new Date().getTime();
|
|
104
|
+
const millisecondsTillExpiration = this.at_exp - now;
|
|
105
|
+
if (millisecondsTillExpiration > 0) {
|
|
106
|
+
this.tokenExpirationTimeout = setTimeout(this.config.onTokenExpiration, millisecondsTillExpiration);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU0RLQ29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Z1c2lvbmF1dGgtYW5ndWxhci1zZGsvc3JjL3Nka2NvcmUvU0RLQ29yZS9TREtDb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWxFLHdEQUF3RDtBQUN4RCxNQUFNLE9BQU8sT0FBTztJQU1sQixZQUFZLE1BQWlCO1FBSHJCLG1CQUFjLEdBQW1CLElBQUksY0FBYyxFQUFFLENBQUM7UUFJNUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUM3QixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7WUFDM0IsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1lBQ3pCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztZQUMvQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDbkIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztZQUMzQixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVk7WUFDakMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1lBQzdCLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7WUFDekMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLHFCQUFxQjtTQUNwRCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWM7UUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENB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SGVscGVyJztcbmltcG9ydCB7IFNES0NvbmZpZyB9IGZyb20gJy4uL1NES0NvbmZpZyc7XG5pbXBvcnQgeyBVc2VySW5mbyB9IGZyb20gJy4uL1NES0NvbnRleHQnO1xuaW1wb3J0IHsgUmVkaXJlY3RIZWxwZXIgfSBmcm9tICcuLi9SZWRpcmVjdEhlbHBlcic7XG5pbXBvcnQgeyBnZXRBY2Nlc3NUb2tlbkV4cGlyYXRpb25Nb21lbnQgfSBmcm9tICcuLi9Db29raWVIZWxwZXJzJztcblxuLyoqIEEgY2xhc3MgY29udGFpbmluZyBmcmFtZXdvcmstYWdub3N0aWMgU0RLIG1ldGhvZHMgKi9cbmV4cG9ydCBjbGFzcyBTREtDb3JlIHtcbiAgcHJpdmF0ZSBjb25maWc6IFNES0NvbmZpZztcbiAgcHJpdmF0ZSB1cmxIZWxwZXI6IFVybEhlbHBlcjtcbiAgcHJpdmF0ZSByZWRpcmVjdEhlbHBlcjogUmVkaXJlY3RIZWxwZXIgPSBuZXcgUmVkaXJlY3RIZWxwZXIoKTtcbiAgcHJpdmF0ZSB0b2tlbkV4cGlyYXRpb25UaW1lb3V0PzogTm9kZUpTLlRpbWVvdXQ7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBTREtDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnVybEhlbHBlciA9IG5ldyBVcmxIZWxwZXIoe1xuICAgICAgc2VydmVyVXJsOiBjb25maWcuc2VydmVyVXJsLFxuICAgICAgY2xpZW50SWQ6IGNvbmZpZy5jbGllbnRJZCxcbiAgICAgIHJlZGlyZWN0VXJpOiBjb25maWcucmVkaXJlY3RVcmksXG4gICAgICBzY29wZTogY29uZmlnLnNjb3BlLFxuICAgICAgbWVQYXRoOiBjb25maWcubWVQYXRoLFxuICAgICAgbG9naW5QYXRoOiBjb25maWcubG9naW5QYXRoLFxuICAgICAgcmVnaXN0ZXJQYXRoOiBjb25maWcucmVnaXN0ZXJQYXRoLFxuICAgICAgbG9nb3V0UGF0aDogY29uZmlnLmxvZ291dFBhdGgsXG4gICAgICB0b2tlblJlZnJlc2hQYXRoOiBjb25maWcudG9rZW5SZWZyZXNoUGF0aCxcbiAgICAgIHBvc3RMb2dvdXRSZWRpcmVjdFVyaTogY29uZmlnLnBvc3RMb2dvdXRSZWRpcmVjdFVyaSxcbiAgICB9KTtcbiAgICB0aGlzLnNjaGVkdWxlVG9rZW5FeHBpcmF0aW9uKCk7XG4gIH1cblxuICBzdGFydExvZ2luKHN0YXRlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5yZWRpcmVjdEhlbHBlci5oYW5kbGVQcmVSZWRpcmVjdChzdGF0ZSk7XG4gICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbih0aGlzLnVybEhlbHBlci5nZXRMb2dpblVybChzdGF0ZSkpO1xuICB9XG5cbiAgc3RhcnRSZWdpc3RlcihzdGF0ZT86IHN0cmluZykge1xuICAgIHRoaXMucmVkaXJlY3RIZWxwZXIuaGFuZGxlUHJlUmVkaXJlY3Qoc3RhdGUpO1xuICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odGhpcy51cmxIZWxwZXIuZ2V0UmVnaXN0ZXJVcmwoc3RhdGUpKTtcbiAgfVxuXG4gIHN0YXJ0TG9nb3V0KCkge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odGhpcy51cmxIZWxwZXIuZ2V0TG9nb3V0VXJsKCkpO1xuICB9XG5cbiAgbWFuYWdlQWNjb3VudCgpIHtcbiAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKHRoaXMudXJsSGVscGVyLmdldEFjY291bnRNYW5hZ2VtZW50VXJsKCkpO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hVc2VySW5mbzxUID0gVXNlckluZm8+KCkge1xuICAgIGNvbnN0IHVzZXJJbmZvUmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0aGlzLnVybEhlbHBlci5nZXRNZVVybCgpLCB7XG4gICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgIH0pO1xuXG4gICAgaWYgKCF1c2VySW5mb1Jlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBVbmFibGUgdG8gZmV0Y2ggdXNlckluZm8gaW4gZnVzaW9uYXV0aC4gUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAke3VzZXJJbmZvUmVzcG9uc2U/LnN0YXR1c31gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VySW5mbzogVCA9IGF3YWl0IHVzZXJJbmZvUmVzcG9uc2UuanNvbigpO1xuICAgIHJldHVybiB1c2VySW5mbztcbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2hUb2tlbigpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0aGlzLnVybEhlbHBlci5nZXRUb2tlblJlZnJlc2hVcmwoKSwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ3RleHQvcGxhaW4nLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmICghKHJlc3BvbnNlLnN0YXR1cyA+PSAyMDAgJiYgcmVzcG9uc2Uuc3RhdHVzIDwgMzAwKSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgIChhd2FpdCByZXNwb25zZT8udGV4dCgpKSB8fFxuICAgICAgICAnRXJyb3IgcmVmcmVzaGluZyBhY2Nlc3MgdG9rZW4gaW4gZnVzaW9uYXV0aCc7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgLy8gYSBzdWNjZXNzZnVsIHJlcXVlc3QgbWVhbnMgdGhhdCBhcHBfZXhwIHdhcyBidW1wZWQgaW50byB0aGUgZnV0dXJlLlxuICAgIC8vIHJlc2NoZWR1bGUgdGhlIGFjY2VzcyB0b2tlbiBleHBpcmF0aW9uIGV2ZW50LlxuICAgIHRoaXMuc2NoZWR1bGVUb2tlbkV4cGlyYXRpb24oKTtcblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIGluaXRBdXRvUmVmcmVzaCgpOiBOb2RlSlMuVGltZW91dCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLmlzTG9nZ2VkSW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWNvbmRzQmVmb3JlUmVmcmVzaCA9XG4gICAgICB0aGlzLmNvbmZpZy5hdXRvUmVmcmVzaFNlY29uZHNCZWZvcmVFeHBpcnkgPz8gMTA7XG5cbiAgICBjb25zdCBtaWxsaXNlY29uZHNCZWZvcmVSZWZyZXNoID0gc2Vjb25kc0JlZm9yZVJlZnJlc2ggKiAxMDAwO1xuXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgY29uc3QgcmVmcmVzaFRpbWUgPSB0aGlzLmF0X2V4cCAtIG1pbGxpc2Vjb25kc0JlZm9yZVJlZnJlc2g7XG4gICAgY29uc3QgdGltZVRpbGxSZWZyZXNoID0gTWF0aC5tYXgocmVmcmVzaFRpbWUgLSBub3csIDApO1xuXG4gICAgcmV0dXJuIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgdGhpcy5pbml0QXV0b1JlZnJlc2goKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLm9uQXV0b1JlZnJlc2hGYWlsdXJlPy4oZXJyb3IgYXMgRXJyb3IpO1xuICAgICAgfVxuICAgIH0sIHRpbWVUaWxsUmVmcmVzaCk7XG4gIH1cblxuICBoYW5kbGVQb3N0UmVkaXJlY3QoY2FsbGJhY2s/OiAoc3RhdGU/OiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICBpZiAodGhpcy5pc0xvZ2dlZEluICYmIHRoaXMucmVkaXJlY3RIZWxwZXIuZGlkUmVkaXJlY3QpIHtcbiAgICAgIHRoaXMucmVkaXJlY3RIZWxwZXIuaGFuZGxlUG9zdFJlZGlyZWN0KGNhbGxiYWNrKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaXNMb2dnZWRJbigpIHtcbiAgICByZXR1cm4gdGhpcy5hdF9leHAgPiBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgfVxuXG4gIC8qKiBUaGUgbW9tZW50IG9mIGFjY2VzcyB0b2tlbiBleHBpcmF0aW9uIGluIG1pbGxpc2Vjb25kcyBzaW5jZSBlcG9jaC4gKi9cbiAgcHJpdmF0ZSBnZXQgYXRfZXhwKCk6IG51bWJlciB8IC0xIHtcbiAgICByZXR1cm4gZ2V0QWNjZXNzVG9rZW5FeHBpcmF0aW9uTW9tZW50KFxuICAgICAgdGhpcy5jb25maWcuYWNjZXNzVG9rZW5FeHBpcmVDb29raWVOYW1lLFxuICAgICAgdGhpcy5jb25maWcuY29va2llQWRhcHRlcixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlcyBgb25Ub2tlbkV4cGlyYXRpb25gIGF0IG1vbWVudCBvZiBhY2Nlc3MgdG9rZW4gZXhwaXJhdGlvbi5cbiAgICogU0RLQ29yZSBpcyBub3QgbmVjZXNzYXJpbHkgcmVhY3RpdmUgbGlrZSBSZWFjdCwgQW5ndWxhciwgYW5kIFZ1ZS5cbiAgICogc28gYG9uVG9rZW5FeHBpcmF0aW9uYCBpcyBmb3IgcmVhY3RpdmUgZnJhbWV3b3JrcyB0byBob29rIGluIGFuZCBwZXJmb3JtIGFjdGlvbnMgYXMgb24gdG9rZW4gZXhwaXJhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgc2NoZWR1bGVUb2tlbkV4cGlyYXRpb24oKTogdm9pZCB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudG9rZW5FeHBpcmF0aW9uVGltZW91dCk7XG5cbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBjb25zdCBtaWxsaXNlY29uZHNUaWxsRXhwaXJhdGlvbiA9IHRoaXMuYXRfZXhwIC0gbm93O1xuXG4gICAgaWYgKG1pbGxpc2Vjb25kc1RpbGxFeHBpcmF0aW9uID4gMCkge1xuICAgICAgdGhpcy50b2tlbkV4cGlyYXRpb25UaW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgdGhpcy5jb25maWcub25Ub2tlbkV4cGlyYXRpb24sXG4gICAgICAgIG1pbGxpc2Vjb25kc1RpbGxFeHBpcmF0aW9uLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './SDKCore';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdXNpb25hdXRoLWFuZ3VsYXItc2RrL3NyYy9zZGtjb3JlL1NES0NvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL1NES0NvcmUnO1xuIl19
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/** A class responsible for generating URLs that FusionAuth SDKs interact with. */
|
|
2
|
+
export class UrlHelper {
|
|
3
|
+
constructor(config) {
|
|
4
|
+
this.serverUrl = config.serverUrl;
|
|
5
|
+
this.clientId = config.clientId;
|
|
6
|
+
this.redirectUri = config.redirectUri;
|
|
7
|
+
this.scope = config.scope;
|
|
8
|
+
this.postLogoutRedirectUri = config.postLogoutRedirectUri;
|
|
9
|
+
this.mePath = config.mePath ?? '/app/me/';
|
|
10
|
+
this.loginPath = config.loginPath ?? '/app/login/';
|
|
11
|
+
this.registerPath = config.registerPath ?? '/app/register/';
|
|
12
|
+
this.logoutPath = config.logoutPath ?? '/app/logout/';
|
|
13
|
+
this.tokenRefreshPath = config.tokenRefreshPath ?? '/app/refresh/';
|
|
14
|
+
}
|
|
15
|
+
getMeUrl() {
|
|
16
|
+
return this.generateUrl(this.mePath);
|
|
17
|
+
}
|
|
18
|
+
getLoginUrl(state) {
|
|
19
|
+
return this.generateUrl(this.loginPath, {
|
|
20
|
+
client_id: this.clientId,
|
|
21
|
+
redirect_uri: this.redirectUri,
|
|
22
|
+
scope: this.scope,
|
|
23
|
+
state,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
getRegisterUrl(state) {
|
|
27
|
+
return this.generateUrl(this.registerPath, {
|
|
28
|
+
client_id: this.clientId,
|
|
29
|
+
redirect_uri: this.redirectUri,
|
|
30
|
+
scope: this.scope,
|
|
31
|
+
state,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
getLogoutUrl() {
|
|
35
|
+
return this.generateUrl(this.logoutPath, {
|
|
36
|
+
client_id: this.clientId,
|
|
37
|
+
post_logout_redirect_uri: this.postLogoutRedirectUri || this.redirectUri,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
getTokenRefreshUrl() {
|
|
41
|
+
return this.generateUrl(this.tokenRefreshPath, {
|
|
42
|
+
client_id: this.clientId,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
getAccountManagementUrl() {
|
|
46
|
+
return this.generateUrl('/account/', {
|
|
47
|
+
client_id: this.clientId,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
generateUrl(path, params) {
|
|
51
|
+
const url = new URL(this.serverUrl);
|
|
52
|
+
url.pathname = path;
|
|
53
|
+
if (params) {
|
|
54
|
+
const urlSearchParams = this.generateURLSearchParams(params);
|
|
55
|
+
url.search = urlSearchParams.toString();
|
|
56
|
+
}
|
|
57
|
+
return url;
|
|
58
|
+
}
|
|
59
|
+
generateURLSearchParams(params) {
|
|
60
|
+
const urlSearchParams = new URLSearchParams();
|
|
61
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
62
|
+
if (value) {
|
|
63
|
+
urlSearchParams.append(key, value);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
return urlSearchParams;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXJsSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZnVzaW9uYXV0aC1hbmd1bGFyLXNkay9zcmMvc2RrY29yZS9VcmxIZWxwZXIvVXJsSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLGtGQUFrRjtBQUNsRixNQUFNLE9BQU8sU0FBUztJQWFwQixZQUFZLE1BQXVCO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMscUJBQXFCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDO1FBRTFELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxVQUFVLENBQUM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxJQUFJLGFBQWEsQ0FBQztRQUNuRCxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLElBQUksZ0JBQWdCLENBQUM7UUFDNUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxJQUFJLGNBQWMsQ0FBQztRQUN0RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixJQUFJLGVBQWUsQ0FBQztJQUNyRSxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFjO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3RDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN4QixZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDOUIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLEtBQUs7U0FDTixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWM7UUFDM0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDekMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3hCLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVztZQUM5QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsS0FBSztTQUNOLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdkMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3hCLHdCQUF3QixFQUFFLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUMsV0FBVztTQUN6RSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDN0MsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtZQUNuQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFdBQVcsQ0FBQyxJQUFZLEVBQUUsTUFBNkI7UUFDN0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRXBCLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0QsR0FBRyxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUMsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLHVCQUF1QixDQUM3QixNQUE0QjtRQUU1QixNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBRTlDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUM5QyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVybEhlbHBlckNvbmZpZywgVXJsSGVscGVyUXVlcnlQYXJhbXMgfSBmcm9tICcuL1VybEhlbHBlclR5cGVzJztcblxuLyoqIEEgY2xhc3MgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgVVJMcyB0aGF0IEZ1c2lvbkF1dGggU0RLcyBpbnRlcmFjdCB3aXRoLiAqL1xuZXhwb3J0IGNsYXNzIFVybEhlbHBlciB7XG4gIHNlcnZlclVybDogc3RyaW5nO1xuICBjbGllbnRJZDogc3RyaW5nO1xuICByZWRpcmVjdFVyaTogc3RyaW5nO1xuICBzY29wZT86IHN0cmluZztcblxuICBtZVBhdGg6IHN0cmluZztcbiAgbG9naW5QYXRoOiBzdHJpbmc7XG4gIHJlZ2lzdGVyUGF0aDogc3RyaW5nO1xuICBsb2dvdXRQYXRoOiBzdHJpbmc7XG4gIHRva2VuUmVmcmVzaFBhdGg6IHN0cmluZztcbiAgcG9zdExvZ291dFJlZGlyZWN0VXJpPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogVXJsSGVscGVyQ29uZmlnKSB7XG4gICAgdGhpcy5zZXJ2ZXJVcmwgPSBjb25maWcuc2VydmVyVXJsO1xuICAgIHRoaXMuY2xpZW50SWQgPSBjb25maWcuY2xpZW50SWQ7XG4gICAgdGhpcy5yZWRpcmVjdFVyaSA9IGNvbmZpZy5yZWRpcmVjdFVyaTtcbiAgICB0aGlzLnNjb3BlID0gY29uZmlnLnNjb3BlO1xuICAgIHRoaXMucG9zdExvZ291dFJlZGlyZWN0VXJpID0gY29uZmlnLnBvc3RMb2dvdXRSZWRpcmVjdFVyaTtcblxuICAgIHRoaXMubWVQYXRoID0gY29uZmlnLm1lUGF0aCA/PyAnL2FwcC9tZS8nO1xuICAgIHRoaXMubG9naW5QYXRoID0gY29uZmlnLmxvZ2luUGF0aCA/PyAnL2FwcC9sb2dpbi8nO1xuICAgIHRoaXMucmVnaXN0ZXJQYXRoID0gY29uZmlnLnJlZ2lzdGVyUGF0aCA/PyAnL2FwcC9yZWdpc3Rlci8nO1xuICAgIHRoaXMubG9nb3V0UGF0aCA9IGNvbmZpZy5sb2dvdXRQYXRoID8/ICcvYXBwL2xvZ291dC8nO1xuICAgIHRoaXMudG9rZW5SZWZyZXNoUGF0aCA9IGNvbmZpZy50b2tlblJlZnJlc2hQYXRoID8/ICcvYXBwL3JlZnJlc2gvJztcbiAgfVxuXG4gIGdldE1lVXJsKCk6IFVSTCB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVVcmwodGhpcy5tZVBhdGgpO1xuICB9XG5cbiAgZ2V0TG9naW5Vcmwoc3RhdGU/OiBzdHJpbmcpOiBVUkwge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYXRlVXJsKHRoaXMubG9naW5QYXRoLCB7XG4gICAgICBjbGllbnRfaWQ6IHRoaXMuY2xpZW50SWQsXG4gICAgICByZWRpcmVjdF91cmk6IHRoaXMucmVkaXJlY3RVcmksXG4gICAgICBzY29wZTogdGhpcy5zY29wZSxcbiAgICAgIHN0YXRlLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0UmVnaXN0ZXJVcmwoc3RhdGU/OiBzdHJpbmcpOiBVUkwge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYXRlVXJsKHRoaXMucmVnaXN0ZXJQYXRoLCB7XG4gICAgICBjbGllbnRfaWQ6IHRoaXMuY2xpZW50SWQsXG4gICAgICByZWRpcmVjdF91cmk6IHRoaXMucmVkaXJlY3RVcmksXG4gICAgICBzY29wZTogdGhpcy5zY29wZSxcbiAgICAgIHN0YXRlLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0TG9nb3V0VXJsKCk6IFVSTCB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVVcmwodGhpcy5sb2dvdXRQYXRoLCB7XG4gICAgICBjbGllbnRfaWQ6IHRoaXMuY2xpZW50SWQsXG4gICAgICBwb3N0X2xvZ291dF9yZWRpcmVjdF91cmk6IHRoaXMucG9zdExvZ291dFJlZGlyZWN0VXJpIHx8IHRoaXMucmVkaXJlY3RVcmksXG4gICAgfSk7XG4gIH1cblxuICBnZXRUb2tlblJlZnJlc2hVcmwoKTogVVJMIHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZVVybCh0aGlzLnRva2VuUmVmcmVzaFBhdGgsIHtcbiAgICAgIGNsaWVudF9pZDogdGhpcy5jbGllbnRJZCxcbiAgICB9KTtcbiAgfVxuXG4gIGdldEFjY291bnRNYW5hZ2VtZW50VXJsKCk6IFVSTCB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVVcmwoJy9hY2NvdW50LycsIHtcbiAgICAgIGNsaWVudF9pZDogdGhpcy5jbGllbnRJZCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVVcmwocGF0aDogc3RyaW5nLCBwYXJhbXM/OiBVcmxIZWxwZXJRdWVyeVBhcmFtcyk6IFVSTCB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTCh0aGlzLnNlcnZlclVybCk7XG4gICAgdXJsLnBhdGhuYW1lID0gcGF0aDtcblxuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIGNvbnN0IHVybFNlYXJjaFBhcmFtcyA9IHRoaXMuZ2VuZXJhdGVVUkxTZWFyY2hQYXJhbXMocGFyYW1zKTtcbiAgICAgIHVybC5zZWFyY2ggPSB1cmxTZWFyY2hQYXJhbXMudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVVSTFNlYXJjaFBhcmFtcyhcbiAgICBwYXJhbXM6IFVybEhlbHBlclF1ZXJ5UGFyYW1zLFxuICApOiBVUkxTZWFyY2hQYXJhbXMge1xuICAgIGNvbnN0IHVybFNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcblxuICAgIE9iamVjdC5lbnRyaWVzKHBhcmFtcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdXJsU2VhcmNoUGFyYW1zLmFwcGVuZChrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB1cmxTZWFyY2hQYXJhbXM7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXJsSGVscGVyVHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdXNpb25hdXRoLWFuZ3VsYXItc2RrL3NyYy9zZGtjb3JlL1VybEhlbHBlci9VcmxIZWxwZXJUeXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0RLQ29uZmlnIH0gZnJvbSAnLi4vU0RLQ29uZmlnJztcblxuLyoqIEEgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIHRoZSBVcmxIZWxwZXIgY2xhc3MuICovXG5leHBvcnQgdHlwZSBVcmxIZWxwZXJDb25maWcgPSBQaWNrPFxuICBTREtDb25maWcsXG4gIHwgJ3NlcnZlclVybCdcbiAgfCAnY2xpZW50SWQnXG4gIHwgJ3JlZGlyZWN0VXJpJ1xuICB8ICdtZVBhdGgnXG4gIHwgJ2xvZ2luUGF0aCdcbiAgfCAncmVnaXN0ZXJQYXRoJ1xuICB8ICdsb2dvdXRQYXRoJ1xuICB8ICd0b2tlblJlZnJlc2hQYXRoJ1xuICB8ICdzY29wZSdcbiAgfCAncG9zdExvZ291dFJlZGlyZWN0VXJpJ1xuPjtcblxuLyoqIFRoZSBxdWVyeSBwYXJhbXMgYXNzb2NpYXRlZCB3aXRoIFVSTHMgZ2VuZXJhdGVkIGJ5IHRoZSBVcmxIZWxwZXIgY2xhc3MuICovXG5leHBvcnQgdHlwZSBVcmxIZWxwZXJRdWVyeVBhcmFtcyA9IHtcbiAgY2xpZW50X2lkOiBzdHJpbmc7XG4gIHJlZGlyZWN0X3VyaT86IHN0cmluZztcbiAgcG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpPzogc3RyaW5nO1xuICBzY29wZT86IHN0cmluZztcbiAgc3RhdGU/OiBzdHJpbmc7XG59O1xuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './UrlHelper';
|
|
2
|
+
export * from './UrlHelperTypes';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdXNpb25hdXRoLWFuZ3VsYXItc2RrL3NyYy9zZGtjb3JlL1VybEhlbHBlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9VcmxIZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9VcmxIZWxwZXJUeXBlcyc7XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './SDKCore';
|
|
2
|
+
export * from './SDKConfig';
|
|
3
|
+
export * from './SDKContext';
|
|
4
|
+
export * from './testUtils';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mdXNpb25hdXRoLWFuZ3VsYXItc2RrL3NyYy9zZGtjb3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9TREtDb3JlJztcbmV4cG9ydCAqIGZyb20gJy4vU0RLQ29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vU0RLQ29udGV4dCc7XG5leHBvcnQgKiBmcm9tICcuL3Rlc3RVdGlscyc7XG5leHBvcnQgeyB0eXBlIENvb2tpZUFkYXB0ZXIgfSBmcm9tICcuL0Nvb2tpZUhlbHBlcnMnO1xuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './mockLoggedIn';
|
|
2
|
+
export * from './mockWindowLocation';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdXNpb25hdXRoLWFuZ3VsYXItc2RrL3NyYy9zZGtjb3JlL3Rlc3RVdGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21vY2tMb2dnZWRJbic7XG5leHBvcnQgKiBmcm9tICcuL21vY2tXaW5kb3dMb2NhdGlvbic7XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Sets `app.at_exp` moment cookie so the user will be logged in for 1 hour. */
|
|
2
|
+
function mockIsLoggedIn() {
|
|
3
|
+
const expirationMoment = new Date();
|
|
4
|
+
expirationMoment.setHours(expirationMoment.getHours() + 1);
|
|
5
|
+
const oneHourInTheFutureInMilliseconds = expirationMoment.getTime() / 1000;
|
|
6
|
+
document.cookie = `app.at_exp=${oneHourInTheFutureInMilliseconds}`;
|
|
7
|
+
}
|
|
8
|
+
/** Removes the `app.at_exp` cookie. */
|
|
9
|
+
function removeAt_expCookie() {
|
|
10
|
+
document.cookie = 'app.at_exp' + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT';
|
|
11
|
+
}
|
|
12
|
+
export { mockIsLoggedIn, removeAt_expCookie };
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja0xvZ2dlZEluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZnVzaW9uYXV0aC1hbmd1bGFyLXNkay9zcmMvc2RrY29yZS90ZXN0VXRpbHMvbW9ja0xvZ2dlZEluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdGQUFnRjtBQUNoRixTQUFTLGNBQWM7SUFDckIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3BDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMzRCxNQUFNLGdDQUFnQyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztJQUMzRSxRQUFRLENBQUMsTUFBTSxHQUFHLGNBQWMsZ0NBQWdDLEVBQUUsQ0FBQztBQUNyRSxDQUFDO0FBRUQsdUNBQXVDO0FBQ3ZDLFNBQVMsa0JBQWtCO0lBQ3pCLFFBQVEsQ0FBQyxNQUFNLEdBQUcsWUFBWSxHQUFHLHlDQUF5QyxDQUFDO0FBQzdFLENBQUM7QUFFRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogU2V0cyBgYXBwLmF0X2V4cGAgbW9tZW50IGNvb2tpZSBzbyB0aGUgdXNlciB3aWxsIGJlIGxvZ2dlZCBpbiBmb3IgMSBob3VyLiAqL1xuZnVuY3Rpb24gbW9ja0lzTG9nZ2VkSW4oKSB7XG4gIGNvbnN0IGV4cGlyYXRpb25Nb21lbnQgPSBuZXcgRGF0ZSgpO1xuICBleHBpcmF0aW9uTW9tZW50LnNldEhvdXJzKGV4cGlyYXRpb25Nb21lbnQuZ2V0SG91cnMoKSArIDEpO1xuICBjb25zdCBvbmVIb3VySW5UaGVGdXR1cmVJbk1pbGxpc2Vjb25kcyA9IGV4cGlyYXRpb25Nb21lbnQuZ2V0VGltZSgpIC8gMTAwMDtcbiAgZG9jdW1lbnQuY29va2llID0gYGFwcC5hdF9leHA9JHtvbmVIb3VySW5UaGVGdXR1cmVJbk1pbGxpc2Vjb25kc31gO1xufVxuXG4vKiogUmVtb3ZlcyB0aGUgYGFwcC5hdF9leHBgIGNvb2tpZS4gKi9cbmZ1bmN0aW9uIHJlbW92ZUF0X2V4cENvb2tpZSgpIHtcbiAgZG9jdW1lbnQuY29va2llID0gJ2FwcC5hdF9leHAnICsgJz07ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCc7XG59XG5cbmV4cG9ydCB7IG1vY2tJc0xvZ2dlZEluLCByZW1vdmVBdF9leHBDb29raWUgfTtcbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
function mockWindowLocation(vi) {
|
|
2
|
+
const mockedLocation = {
|
|
3
|
+
...window.location,
|
|
4
|
+
assign: vi.fn(),
|
|
5
|
+
};
|
|
6
|
+
vi.spyOn(window, 'location', 'get').mockReturnValue(mockedLocation);
|
|
7
|
+
return mockedLocation;
|
|
8
|
+
}
|
|
9
|
+
export { mockWindowLocation };
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja1dpbmRvd0xvY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZnVzaW9uYXV0aC1hbmd1bGFyLXNkay9zcmMvc2RrY29yZS90ZXN0VXRpbHMvbW9ja1dpbmRvd0xvY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLFNBQVMsa0JBQWtCLENBQUMsRUFBZTtJQUN6QyxNQUFNLGNBQWMsR0FBRztRQUNyQixHQUFHLE1BQU0sQ0FBQyxRQUFRO1FBQ2xCLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO0tBQ2hCLENBQUM7SUFDRixFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BFLE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZpdGVzdFV0aWxzIH0gZnJvbSAndml0ZXN0JztcblxuZnVuY3Rpb24gbW9ja1dpbmRvd0xvY2F0aW9uKHZpOiBWaXRlc3RVdGlscykge1xuICBjb25zdCBtb2NrZWRMb2NhdGlvbiA9IHtcbiAgICAuLi53aW5kb3cubG9jYXRpb24sXG4gICAgYXNzaWduOiB2aS5mbigpLFxuICB9O1xuICB2aS5zcHlPbih3aW5kb3csICdsb2NhdGlvbicsICdnZXQnKS5tb2NrUmV0dXJuVmFsdWUobW9ja2VkTG9jYXRpb24pO1xuICByZXR1cm4gbW9ja2VkTG9jYXRpb247XG59XG5cbmV4cG9ydCB7IG1vY2tXaW5kb3dMb2NhdGlvbiB9O1xuIl19
|