@fusionauth/angular-sdk 1.0.1 → 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.
Files changed (49) hide show
  1. package/README.md +5 -0
  2. package/esm2022/lib/SSRCookieAdapter.mjs +23 -0
  3. package/esm2022/lib/fusion-auth.module.mjs +4 -5
  4. package/esm2022/lib/fusion-auth.service.mjs +23 -3
  5. package/esm2022/lib/injectionToken.mjs +3 -0
  6. package/esm2022/lib/types.mjs +1 -1
  7. package/esm2022/sdkcore/CookieHelpers/CookieHelpers.mjs +34 -0
  8. package/esm2022/sdkcore/CookieHelpers/index.mjs +2 -0
  9. package/esm2022/sdkcore/RedirectHelper/RedirectHelper.mjs +47 -0
  10. package/esm2022/sdkcore/RedirectHelper/index.mjs +2 -0
  11. package/esm2022/sdkcore/SDKConfig/SDKConfig.mjs +2 -0
  12. package/esm2022/sdkcore/SDKConfig/index.mjs +2 -0
  13. package/esm2022/sdkcore/SDKContext/SDKContext.mjs +2 -0
  14. package/esm2022/sdkcore/SDKContext/index.mjs +2 -0
  15. package/esm2022/sdkcore/SDKCore/SDKCore.mjs +103 -0
  16. package/esm2022/sdkcore/SDKCore/index.mjs +2 -0
  17. package/esm2022/sdkcore/UrlHelper/UrlHelper.mjs +64 -0
  18. package/esm2022/sdkcore/UrlHelper/UrlHelperTypes.mjs +2 -0
  19. package/esm2022/sdkcore/UrlHelper/index.mjs +3 -0
  20. package/esm2022/sdkcore/index.mjs +5 -0
  21. package/esm2022/sdkcore/testUtils/index.mjs +3 -0
  22. package/esm2022/sdkcore/testUtils/mockLoggedIn.mjs +13 -0
  23. package/esm2022/sdkcore/testUtils/mockWindowLocation.mjs +10 -0
  24. package/fesm2022/fusionauth-angular-sdk.mjs +248 -183
  25. package/fesm2022/fusionauth-angular-sdk.mjs.map +1 -1
  26. package/lib/SSRCookieAdapter.d.ts +7 -0
  27. package/lib/fusion-auth.service.d.ts +6 -3
  28. package/lib/injectionToken.d.ts +3 -0
  29. package/lib/types.d.ts +8 -0
  30. package/package.json +3 -3
  31. package/sdkcore/CookieHelpers/CookieHelpers.d.ts +11 -0
  32. package/sdkcore/CookieHelpers/index.d.ts +1 -0
  33. package/sdkcore/RedirectHelper/RedirectHelper.d.ts +10 -0
  34. package/sdkcore/RedirectHelper/index.d.ts +1 -0
  35. package/sdkcore/SDKConfig/SDKConfig.d.ts +79 -0
  36. package/sdkcore/SDKConfig/index.d.ts +1 -0
  37. package/sdkcore/SDKContext/SDKContext.d.ts +65 -0
  38. package/sdkcore/SDKContext/index.d.ts +1 -0
  39. package/sdkcore/SDKCore/SDKCore.d.ts +23 -0
  40. package/sdkcore/SDKCore/index.d.ts +1 -0
  41. package/sdkcore/UrlHelper/UrlHelper.d.ts +22 -0
  42. package/sdkcore/UrlHelper/UrlHelperTypes.d.ts +11 -0
  43. package/sdkcore/UrlHelper/index.d.ts +2 -0
  44. package/sdkcore/index.d.ts +5 -0
  45. package/sdkcore/testUtils/index.d.ts +2 -0
  46. package/sdkcore/testUtils/mockLoggedIn.d.ts +5 -0
  47. package/sdkcore/testUtils/mockWindowLocation.d.ts +18 -0
  48. package/esm2022/lib/core.mjs +0 -241
  49. package/lib/core.d.ts +0 -57
@@ -1,241 +0,0 @@
1
- // @ts-nocheck
2
- const u = Object.defineProperty;
3
- const d = (r, e, t) => e in r
4
- ? u(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t })
5
- : (r[e] = t);
6
- const i = (r, e, t) => (d(r, typeof e != 'symbol' ? e + '' : e, t), t);
7
- class g {
8
- constructor(e) {
9
- i(this, 'serverUrl');
10
- i(this, 'clientId');
11
- i(this, 'redirectUri');
12
- i(this, 'scope');
13
- i(this, 'mePath');
14
- i(this, 'loginPath');
15
- i(this, 'registerPath');
16
- i(this, 'logoutPath');
17
- i(this, 'tokenRefreshPath');
18
- (this.serverUrl = e.serverUrl),
19
- (this.clientId = e.clientId),
20
- (this.redirectUri = e.redirectUri),
21
- (this.scope = e.scope),
22
- (this.mePath = e.mePath ?? '/app/me'),
23
- (this.loginPath = e.loginPath ?? '/app/login'),
24
- (this.registerPath = e.registerPath ?? '/app/register'),
25
- (this.logoutPath = e.logoutPath ?? '/app/logout'),
26
- (this.tokenRefreshPath = e.tokenRefreshPath ?? '/app/refresh');
27
- }
28
- getMeUrl() {
29
- return this.generateUrl(this.mePath);
30
- }
31
- getLoginUrl(e) {
32
- return this.generateUrl(this.loginPath, {
33
- client_id: this.clientId,
34
- redirect_uri: this.redirectUri,
35
- scope: this.scope,
36
- state: e,
37
- });
38
- }
39
- getRegisterUrl(e) {
40
- return this.generateUrl(this.registerPath, {
41
- client_id: this.clientId,
42
- redirect_uri: this.redirectUri,
43
- scope: this.scope,
44
- state: e,
45
- });
46
- }
47
- getLogoutUrl() {
48
- return this.generateUrl(this.logoutPath, {
49
- client_id: this.clientId,
50
- post_logout_redirect_uri: this.redirectUri,
51
- });
52
- }
53
- getTokenRefreshUrl() {
54
- return this.generateUrl(this.tokenRefreshPath, {
55
- client_id: this.clientId,
56
- });
57
- }
58
- generateUrl(e, t) {
59
- const s = new URL(this.serverUrl);
60
- if (((s.pathname = e), t)) {
61
- const n = this.generateURLSearchParams(t);
62
- s.search = n.toString();
63
- }
64
- return s;
65
- }
66
- generateURLSearchParams(e) {
67
- const t = new URLSearchParams();
68
- return (Object.entries(e).forEach(([s, n]) => {
69
- n && t.append(s, n);
70
- }),
71
- t);
72
- }
73
- }
74
- class o {
75
- /**
76
- * Parses document.cookie for the access token expiration cookie value.
77
- * @returns {(number | null)} The moment of expiration in milliseconds since epoch.
78
- */
79
- static getAccessTokenExpirationMoment(e = 'app.at_exp') {
80
- const t = document.cookie
81
- .split('; ')
82
- .map(n => n.split('='))
83
- .find(([n]) => n === e), s = t == null ? void 0 : t[1];
84
- return s ? parseInt(s) * 1e3 : null;
85
- }
86
- }
87
- class p {
88
- constructor(e) {
89
- i(this, 'url');
90
- this.url = e;
91
- }
92
- /** Refresh token a single time */
93
- async refreshToken() {
94
- const e = await fetch(this.url.href, {
95
- method: 'POST',
96
- credentials: 'include',
97
- headers: {
98
- 'Content-Type': 'text/plain',
99
- },
100
- });
101
- if (!(e.status >= 200 && e.status < 300))
102
- throw new Error('error refreshing access token in fusionauth');
103
- }
104
- /** Initializes continuous automatic token refresh. */
105
- initAutoRefresh(e = 10, t) {
106
- const s = o.getAccessTokenExpirationMoment(t);
107
- if (!s)
108
- return;
109
- const n = e * 1e3, a = /* @__PURE__ */ new Date().getTime(), h = s - n, c = Math.max(h - a, 0);
110
- return setTimeout(async () => {
111
- try {
112
- await this.refreshToken(), this.initAutoRefresh(e);
113
- }
114
- catch (l) {
115
- console.error(l);
116
- }
117
- }, c);
118
- }
119
- }
120
- class m {
121
- /**
122
- * Schedules a callback to be invoked at the given moment.
123
- * @param expirationMoment - the access token expiration moment in milliseconds since the epoch.
124
- * @param onExpiration - the callback to be invoked at the `expirationMoment`.
125
- */
126
- static scheduleTokenExpirationCallback(e, t) {
127
- const s = /* @__PURE__ */ new Date().getTime(), n = e - s;
128
- n > 0 && setTimeout(t, n);
129
- }
130
- }
131
- class R {
132
- constructor() {
133
- i(this, 'REDIRECT_VALUE', 'fa-sdk-redirect-value');
134
- }
135
- handlePreRedirect(e) {
136
- const t = `${this.generateRandomString()}:${e ?? ''}`;
137
- localStorage.setItem(this.REDIRECT_VALUE, t);
138
- }
139
- handlePostRedirect(e) {
140
- const t = this.stateValue ?? void 0;
141
- e == null || e(t), localStorage.removeItem(this.REDIRECT_VALUE);
142
- }
143
- get didRedirect() {
144
- return !!localStorage.getItem(this.REDIRECT_VALUE);
145
- }
146
- get stateValue() {
147
- const e = localStorage.getItem(this.REDIRECT_VALUE);
148
- if (!e)
149
- return null;
150
- const [, ...t] = e.split(':');
151
- return t.join(':');
152
- }
153
- generateRandomString() {
154
- const e = new Uint32Array(28);
155
- return (window.crypto.getRandomValues(e),
156
- Array.from(e, t => ('0' + t.toString(16)).substring(-2)).join(''));
157
- }
158
- }
159
- class T {
160
- constructor(e) {
161
- i(this, 'config');
162
- i(this, 'urlHelper');
163
- i(this, 'tokenRefresher');
164
- i(this, 'redirectHelper', new R());
165
- (this.config = e),
166
- (this.urlHelper = new g({
167
- serverUrl: e.serverUrl,
168
- clientId: e.clientId,
169
- redirectUri: e.redirectUri,
170
- scope: e.scope,
171
- mePath: e.mePath,
172
- loginPath: e.loginPath,
173
- registerPath: e.registerPath,
174
- logoutPath: e.logoutPath,
175
- tokenRefreshPath: e.tokenRefreshPath,
176
- })),
177
- (this.tokenRefresher = new p(this.urlHelper.getTokenRefreshUrl())),
178
- this.scheduleTokenExpirationEvent();
179
- }
180
- startLogin(e) {
181
- this.redirectHelper.handlePreRedirect(e),
182
- window.location.assign(this.urlHelper.getLoginUrl(e));
183
- }
184
- startRegister(e) {
185
- this.redirectHelper.handlePreRedirect(e),
186
- window.location.assign(this.urlHelper.getRegisterUrl(e));
187
- }
188
- startLogout() {
189
- window.location.assign(this.urlHelper.getLogoutUrl());
190
- }
191
- async fetchUserInfo() {
192
- const e = await fetch(this.urlHelper.getMeUrl(), {
193
- credentials: 'include',
194
- });
195
- if (!e.ok)
196
- throw new Error(`Unable to fetch userInfo in fusionauth. Request failed with status code ${e == null ? void 0 : e.status}`);
197
- return await e.json();
198
- }
199
- async refreshToken() {
200
- return await this.tokenRefresher.refreshToken();
201
- }
202
- initAutoRefresh() {
203
- return this.tokenRefresher.initAutoRefresh(this.config.autoRefreshSecondsBeforeExpiry, this.config.accessTokenExpireCookieName);
204
- }
205
- handlePostRedirect(e) {
206
- this.isLoggedIn &&
207
- this.redirectHelper.didRedirect &&
208
- this.redirectHelper.handlePostRedirect(e);
209
- }
210
- get isLoggedIn() {
211
- return this.accessTokenExpirationMoment
212
- ? this.accessTokenExpirationMoment > /* @__PURE__ */ new Date().getTime()
213
- : !1;
214
- }
215
- get accessTokenExpirationMoment() {
216
- return o.getAccessTokenExpirationMoment(this.config.accessTokenExpireCookieName);
217
- }
218
- scheduleTokenExpirationEvent() {
219
- this.accessTokenExpirationMoment &&
220
- this.config.onTokenExpiration &&
221
- m.scheduleTokenExpirationCallback(this.accessTokenExpirationMoment, this.config.onTokenExpiration);
222
- }
223
- }
224
- function U() {
225
- const r = /* @__PURE__ */ new Date();
226
- r.setHours(r.getHours() + 1);
227
- const e = r.getTime() / 1e3;
228
- document.cookie = `app.at_exp=${e}`;
229
- }
230
- function P() {
231
- document.cookie = 'app.at_exp=;expires=Thu, 01 Jan 1970 00:00:00 GMT';
232
- }
233
- function E(r) {
234
- const e = {
235
- ...window.location,
236
- assign: r.fn(),
237
- };
238
- return r.spyOn(window, 'location', 'get').mockReturnValue(e), e;
239
- }
240
- export { o as CookieHelpers, T as SDKCore, p as TokenRefresher, g as UrlHelper, U as mockIsLoggedIn, E as mockWindowLocation, P as removeAt_expCookie, };
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Z1c2lvbmF1dGgtYW5ndWxhci1zZGsvc3JjL2xpYi9jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWM7QUFDZCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBQ2hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNwQixDQUFDLElBQUksQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN2RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLE1BQU0sQ0FBQztJQUNMLFlBQVksQ0FBQztRQUNYLENBQUMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakIsQ0FBQyxDQUFDLElBQUksRUFB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QVMsQ0FBQztJQUNSLE1BQU0sQ0FBQyxHQUFHLGVBQWUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3JDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDNUIsUUFBUSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsRUFBRSxDQUFDO0FBQ3RDLENBQUM7QUFDRCxTQUFTLENBQUM7SUFDUixRQUFRLENBQUMsTUFBTSxHQUFHLG1EQUFtRCxDQUFDO0FBQ3hFLENBQUM7QUFDRCxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ1YsTUFBTSxDQUFDLEdBQUc7UUFDUixHQUFHLE1BQU0sQ0FBQyxRQUFRO1FBQ2xCLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO0tBQ2YsQ0FBQztJQUNGLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUNELE9BQU8sRUFDTCxDQUFDLElBQUksYUFBYSxFQUNsQixDQUFDLElBQUksT0FBTyxFQUNaLENBQUMsSUFBSSxjQUFjLEVBQ25CLENBQUMsSUFBSSxTQUFTLEVBQ2QsQ0FBQyxJQUFJLGNBQWMsRUFDbkIsQ0FBQyxJQUFJLGtCQUFrQixFQUN2QixDQUFDLElBQUksa0JBQWtCLEdBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtbm9jaGVja1xuY29uc3QgdSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbmNvbnN0IGQgPSAociwgZSwgdCkgPT5cbiAgZSBpbiByXG4gICAgPyB1KHIsIGUsIHsgZW51bWVyYWJsZTogITAsIGNvbmZpZ3VyYWJsZTogITAsIHdyaXRhYmxlOiAhMCwgdmFsdWU6IHQgfSlcbiAgICA6IChyW2VdID0gdCk7XG5jb25zdCBpID0gKHIsIGUsIHQpID0+IChkKHIsIHR5cGVvZiBlICE9ICdzeW1ib2wnID8gZSArICcnIDogZSwgdCksIHQpO1xuY2xhc3MgZyB7XG4gIGNvbnN0cnVjdG9yKGUpIHtcbiAgICBpKHRoaXMsICdzZXJ2ZXJVcmwnKTtcbiAgICBpKHRoaXMsICdjbGllbnRJZCcpO1xuICAgIGkodGhpcywgJ3JlZGlyZWN0VXJpJyk7XG4gICAgaSh0aGlzLCAnc2NvcGUnKTtcbiAgICBpKHRoaXMsICdtZVBhdGgnKTtcbiAgICBpKHRoaXMsICdsb2dpblBhdGgnKTtcbiAgICBpKHRoaXMsICdyZWdpc3RlclBhdGgnKTtcbiAgICBpKHRoaXMsICdsb2dvdXRQYXRoJyk7XG4gICAgaSh0aGlzLCAndG9rZW5SZWZyZXNoUGF0aCcpO1xuICAgICh0aGlzLnNlcnZlclVybCA9IGUuc2VydmVyVXJsKSxcbiAgICAgICh0aGlzLmNsaWVudElkID0gZS5jbGllbnRJZCksXG4gICAgICAodGhpcy5yZWRpcmVjdFVyaSA9IGUucmVkaXJlY3RVcmkpLFxuICAgICAgKHRoaXMuc2NvcGUgPSBlLnNjb3BlKSxcbiAgICAgICh0aGlzLm1lUGF0aCA9IGUubWVQYXRoID8/ICcvYXBwL21lJyksXG4gICAgICAodGhpcy5sb2dpblBhdGggPSBlLmxvZ2luUGF0aCA/PyAnL2FwcC9sb2dpbicpLFxuICAgICAgKHRoaXMucmVnaXN0ZXJQYXRoID0gZS5yZWdpc3RlclBhdGggPz8gJy9hcHAvcmVnaXN0ZXInKSxcbiAgICAgICh0aGlzLmxvZ291dFBhdGggPSBlLmxvZ291dFBhdGggPz8gJy9hcHAvbG9nb3V0JyksXG4gICAgICAodGhpcy50b2tlblJlZnJlc2hQYXRoID0gZS50b2tlblJlZnJlc2hQYXRoID8/ICcvYXBwL3JlZnJlc2gnKTtcbiAgfVxuICBnZXRNZVVybCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZVVybCh0aGlzLm1lUGF0aCk7XG4gIH1cbiAgZ2V0TG9naW5VcmwoZSkge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYXRlVXJsKHRoaXMubG9naW5QYXRoLCB7XG4gICAgICBjbGllbnRfaWQ6IHRoaXMuY2xpZW50SWQsXG4gICAgICByZWRpcmVjdF91cmk6IHRoaXMucmVkaXJlY3RVcmksXG4gICAgICBzY29wZTogdGhpcy5zY29wZSxcbiAgICAgIHN0YXRlOiBlLFxuICAgIH0pO1xuICB9XG4gIGdldFJlZ2lzdGVyVXJsKGUpIHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZVVybCh0aGlzLnJlZ2lzdGVyUGF0aCwge1xuICAgICAgY2xpZW50X2lkOiB0aGlzLmNsaWVudElkLFxuICAgICAgcmVkaXJlY3RfdXJpOiB0aGlzLnJlZGlyZWN0VXJpLFxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGUsXG4gICAgICBzdGF0ZTogZSxcbiAgICB9KTtcbiAgfVxuICBnZXRMb2dvdXRVcmwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVVcmwodGhpcy5sb2dvdXRQYXRoLCB7XG4gICAgICBjbGllbnRfaWQ6IHRoaXMuY2xpZW50SWQsXG4gICAgICBwb3N0X2xvZ291dF9yZWRpcmVjdF91cmk6IHRoaXMucmVkaXJlY3RVcmksXG4gICAgfSk7XG4gIH1cbiAgZ2V0VG9rZW5SZWZyZXNoVXJsKCkge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYXRlVXJsKHRoaXMudG9rZW5SZWZyZXNoUGF0aCwge1xuICAgICAgY2xpZW50X2lkOiB0aGlzLmNsaWVudElkLFxuICAgIH0pO1xuICB9XG4gIGdlbmVyYXRlVXJsKGUsIHQpIHtcbiAgICBjb25zdCBzID0gbmV3IFVSTCh0aGlzLnNlcnZlclVybCk7XG4gICAgaWYgKCgocy5wYXRobmFtZSA9IGUpLCB0KSkge1xuICAgICAgY29uc3QgbiA9IHRoaXMuZ2VuZXJhdGVVUkxTZWFyY2hQYXJhbXModCk7XG4gICAgICBzLnNlYXJjaCA9IG4udG9TdHJpbmcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHM7XG4gIH1cbiAgZ2VuZXJhdGVVUkxTZWFyY2hQYXJhbXMoZSkge1xuICAgIGNvbnN0IHQgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgcmV0dXJuIChcbiAgICAgIE9iamVjdC5lbnRyaWVzKGUpLmZvckVhY2goKFtzLCBuXSkgPT4ge1xuICAgICAgICBuICYmIHQuYXBwZW5kKHMsIG4pO1xuICAgICAgfSksXG4gICAgICB0XG4gICAgKTtcbiAgfVxufVxuY2xhc3MgbyB7XG4gIC8qKlxuICAgKiBQYXJzZXMgZG9jdW1lbnQuY29va2llIGZvciB0aGUgYWNjZXNzIHRva2VuIGV4cGlyYXRpb24gY29va2llIHZhbHVlLlxuICAgKiBAcmV0dXJucyB7KG51bWJlciB8IG51bGwpfSBUaGUgbW9tZW50IG9mIGV4cGlyYXRpb24gaW4gbWlsbGlzZWNvbmRzIHNpbmNlIGVwb2NoLlxuICAgKi9cbiAgc3RhdGljIGdldEFjY2Vzc1Rva2VuRXhwaXJhdGlvbk1vbWVudChlID0gJ2FwcC5hdF9leHAnKSB7XG4gICAgY29uc3QgdCA9IGRvY3VtZW50LmNvb2tpZVxuICAgICAgICAuc3BsaXQoJzsgJylcbiAgICAgICAgLm1hcChuID0+IG4uc3BsaXQoJz0nKSlcbiAgICAgICAgLmZpbmQoKFtuXSkgPT4gbiA9PT0gZSksXG4gICAgICBzID0gdCA9PSBudWxsID8gdm9pZCAwIDogdFsxXTtcbiAgICByZXR1cm4gcyA/IHBhcnNlSW50KHMpICogMWUzIDogbnVsbDtcbiAgfVxufVxuY2xhc3MgcCB7XG4gIGNvbnN0cnVjdG9yKGUpIHtcbiAgICBpKHRoaXMsICd1cmwnKTtcbiAgICB0aGlzLnVybCA9IGU7XG4gIH1cbiAgLyoqIFJlZnJlc2ggdG9rZW4gYSBzaW5nbGUgdGltZSAqL1xuICBhc3luYyByZWZyZXNoVG9rZW4oKSB7XG4gICAgY29uc3QgZSA9IGF3YWl0IGZldGNoKHRoaXMudXJsLmhyZWYsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3BsYWluJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgaWYgKCEoZS5zdGF0dXMgPj0gMjAwICYmIGUuc3RhdHVzIDwgMzAwKSlcbiAgICAgIHRocm93IG5ldyBFcnJvcignZXJyb3IgcmVmcmVzaGluZyBhY2Nlc3MgdG9rZW4gaW4gZnVzaW9uYXV0aCcpO1xuICB9XG4gIC8qKiBJbml0aWFsaXplcyBjb250aW51b3VzIGF1dG9tYXRpYyB0b2tlbiByZWZyZXNoLiAqL1xuICBpbml0QXV0b1JlZnJlc2goZSA9IDEwLCB0KSB7XG4gICAgY29uc3QgcyA9IG8uZ2V0QWNjZXNzVG9rZW5FeHBpcmF0aW9uTW9tZW50KHQpO1xuICAgIGlmICghcykgcmV0dXJuO1xuICAgIGNvbnN0IG4gPSBlICogMWUzLFxuICAgICAgYSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICAgIGggPSBzIC0gbixcbiAgICAgIGMgPSBNYXRoLm1heChoIC0gYSwgMCk7XG4gICAgcmV0dXJuIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoVG9rZW4oKSwgdGhpcy5pbml0QXV0b1JlZnJlc2goZSk7XG4gICAgICB9IGNhdGNoIChsKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IobCk7XG4gICAgICB9XG4gICAgfSwgYyk7XG4gIH1cbn1cbmNsYXNzIG0ge1xuICAvKipcbiAgICogU2NoZWR1bGVzIGEgY2FsbGJhY2sgdG8gYmUgaW52b2tlZCBhdCB0aGUgZ2l2ZW4gbW9tZW50LlxuICAgKiBAcGFyYW0gZXhwaXJhdGlvbk1vbWVudCAtIHRoZSBhY2Nlc3MgdG9rZW4gZXhwaXJhdGlvbiBtb21lbnQgaW4gbWlsbGlzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaC5cbiAgICogQHBhcmFtIG9uRXhwaXJhdGlvbiAtIHRoZSBjYWxsYmFjayB0byBiZSBpbnZva2VkIGF0IHRoZSBgZXhwaXJhdGlvbk1vbWVudGAuXG4gICAqL1xuICBzdGF0aWMgc2NoZWR1bGVUb2tlbkV4cGlyYXRpb25DYWxsYmFjayhlLCB0KSB7XG4gICAgY29uc3QgcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICAgIG4gPSBlIC0gcztcbiAgICBuID4gMCAmJiBzZXRUaW1lb3V0KHQsIG4pO1xuICB9XG59XG5jbGFzcyBSIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaSh0aGlzLCAnUkVESVJFQ1RfVkFMVUUnLCAnZmEtc2RrLXJlZGlyZWN0LXZhbHVlJyk7XG4gIH1cbiAgaGFuZGxlUHJlUmVkaXJlY3QoZSkge1xuICAgIGNvbnN0IHQgPSBgJHt0aGlzLmdlbmVyYXRlUmFuZG9tU3RyaW5nKCl9OiR7ZSA/PyAnJ31gO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuUkVESVJFQ1RfVkFMVUUsIHQpO1xuICB9XG4gIGhhbmRsZVBvc3RSZWRpcmVjdChlKSB7XG4gICAgY29uc3QgdCA9IHRoaXMuc3RhdGVWYWx1ZSA/PyB2b2lkIDA7XG4gICAgZSA9PSBudWxsIHx8IGUodCksIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuUkVESVJFQ1RfVkFMVUUpO1xuICB9XG4gIGdldCBkaWRSZWRpcmVjdCgpIHtcbiAgICByZXR1cm4gISFsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlJFRElSRUNUX1ZBTFVFKTtcbiAgfVxuICBnZXQgc3RhdGVWYWx1ZSgpIHtcbiAgICBjb25zdCBlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5SRURJUkVDVF9WQUxVRSk7XG4gICAgaWYgKCFlKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBbLCAuLi50XSA9IGUuc3BsaXQoJzonKTtcbiAgICByZXR1cm4gdC5qb2luKCc6Jyk7XG4gIH1cbiAgZ2VuZXJhdGVSYW5kb21TdHJpbmcoKSB7XG4gICAgY29uc3QgZSA9IG5ldyBVaW50MzJBcnJheSgyOCk7XG4gICAgcmV0dXJuIChcbiAgICAgIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGUpLFxuICAgICAgQXJyYXkuZnJvbShlLCB0ID0+ICgnMCcgKyB0LnRvU3RyaW5nKDE2KSkuc3Vic3RyaW5nKC0yKSkuam9pbignJylcbiAgICApO1xuICB9XG59XG5jbGFzcyBUIHtcbiAgY29uc3RydWN0b3IoZSkge1xuICAgIGkodGhpcywgJ2NvbmZpZycpO1xuICAgIGkodGhpcywgJ3VybEhlbHBlcicpO1xuICAgIGkodGhpcywgJ3Rva2VuUmVmcmVzaGVyJyk7XG4gICAgaSh0aGlzLCAncmVkaXJlY3RIZWxwZXInLCBuZXcgUigpKTtcbiAgICAodGhpcy5jb25maWcgPSBlKSxcbiAgICAgICh0aGlzLnVybEhlbHBlciA9IG5ldyBnKHtcbiAgICAgICAgc2VydmVyVXJsOiBlLnNlcnZlclVybCxcbiAgICAgICAgY2xpZW50SWQ6IGUuY2xpZW50SWQsXG4gICAgICAgIHJlZGlyZWN0VXJpOiBlLnJlZGlyZWN0VXJpLFxuICAgICAgICBzY29wZTogZS5zY29wZSxcbiAgICAgICAgbWVQYXRoOiBlLm1lUGF0aCxcbiAgICAgICAgbG9naW5QYXRoOiBlLmxvZ2luUGF0aCxcbiAgICAgICAgcmVnaXN0ZXJQYXRoOiBlLnJlZ2lzdGVyUGF0aCxcbiAgICAgICAgbG9nb3V0UGF0aDogZS5sb2dvdXRQYXRoLFxuICAgICAgICB0b2tlblJlZnJlc2hQYXRoOiBlLnRva2VuUmVmcmVzaFBhdGgsXG4gICAgICB9KSksXG4gICAgICAodGhpcy50b2tlblJlZnJlc2hlciA9IG5ldyBwKHRoaXMudXJsSGVscGVyLmdldFRva2VuUmVmcmVzaFVybCgpKSksXG4gICAgICB0aGlzLnNjaGVkdWxlVG9rZW5FeHBpcmF0aW9uRXZlbnQoKTtcbiAgfVxuICBzdGFydExvZ2luKGUpIHtcbiAgICB0aGlzLnJlZGlyZWN0SGVscGVyLmhhbmRsZVByZVJlZGlyZWN0KGUpLFxuICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbih0aGlzLnVybEhlbHBlci5nZXRMb2dpblVybChlKSk7XG4gIH1cbiAgc3RhcnRSZWdpc3RlcihlKSB7XG4gICAgdGhpcy5yZWRpcmVjdEhlbHBlci5oYW5kbGVQcmVSZWRpcmVjdChlKSxcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odGhpcy51cmxIZWxwZXIuZ2V0UmVnaXN0ZXJVcmwoZSkpO1xuICB9XG4gIHN0YXJ0TG9nb3V0KCkge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odGhpcy51cmxIZWxwZXIuZ2V0TG9nb3V0VXJsKCkpO1xuICB9XG4gIGFzeW5jIGZldGNoVXNlckluZm8oKSB7XG4gICAgY29uc3QgZSA9IGF3YWl0IGZldGNoKHRoaXMudXJsSGVscGVyLmdldE1lVXJsKCksIHtcbiAgICAgIGNyZWRlbnRpYWxzOiAnaW5jbHVkZScsXG4gICAgfSk7XG4gICAgaWYgKCFlLm9rKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5hYmxlIHRvIGZldGNoIHVzZXJJbmZvIGluIGZ1c2lvbmF1dGguIFJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJHtlID09IG51bGwgPyB2b2lkIDAgOiBlLnN0YXR1c31gLFxuICAgICAgKTtcbiAgICByZXR1cm4gYXdhaXQgZS5qc29uKCk7XG4gIH1cbiAgYXN5bmMgcmVmcmVzaFRva2VuKCkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnRva2VuUmVmcmVzaGVyLnJlZnJlc2hUb2tlbigpO1xuICB9XG4gIGluaXRBdXRvUmVmcmVzaCgpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlblJlZnJlc2hlci5pbml0QXV0b1JlZnJlc2goXG4gICAgICB0aGlzLmNvbmZpZy5hdXRvUmVmcmVzaFNlY29uZHNCZWZvcmVFeHBpcnksXG4gICAgICB0aGlzLmNvbmZpZy5hY2Nlc3NUb2tlbkV4cGlyZUNvb2tpZU5hbWUsXG4gICAgKTtcbiAgfVxuICBoYW5kbGVQb3N0UmVkaXJlY3QoZSkge1xuICAgIHRoaXMuaXNMb2dnZWRJbiAmJlxuICAgICAgdGhpcy5yZWRpcmVjdEhlbHBlci5kaWRSZWRpcmVjdCAmJlxuICAgICAgdGhpcy5yZWRpcmVjdEhlbHBlci5oYW5kbGVQb3N0UmVkaXJlY3QoZSk7XG4gIH1cbiAgZ2V0IGlzTG9nZ2VkSW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuYWNjZXNzVG9rZW5FeHBpcmF0aW9uTW9tZW50XG4gICAgICA/IHRoaXMuYWNjZXNzVG9rZW5FeHBpcmF0aW9uTW9tZW50ID4gLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKCkuZ2V0VGltZSgpXG4gICAgICA6ICExO1xuICB9XG4gIGdldCBhY2Nlc3NUb2tlbkV4cGlyYXRpb25Nb21lbnQoKSB7XG4gICAgcmV0dXJuIG8uZ2V0QWNjZXNzVG9rZW5FeHBpcmF0aW9uTW9tZW50KFxuICAgICAgdGhpcy5jb25maWcuYWNjZXNzVG9rZW5FeHBpcmVDb29raWVOYW1lLFxuICAgICk7XG4gIH1cbiAgc2NoZWR1bGVUb2tlbkV4cGlyYXRpb25FdmVudCgpIHtcbiAgICB0aGlzLmFjY2Vzc1Rva2VuRXhwaXJhdGlvbk1vbWVudCAmJlxuICAgICAgdGhpcy5jb25maWcub25Ub2tlbkV4cGlyYXRpb24gJiZcbiAgICAgIG0uc2NoZWR1bGVUb2tlbkV4cGlyYXRpb25DYWxsYmFjayhcbiAgICAgICAgdGhpcy5hY2Nlc3NUb2tlbkV4cGlyYXRpb25Nb21lbnQsXG4gICAgICAgIHRoaXMuY29uZmlnLm9uVG9rZW5FeHBpcmF0aW9uLFxuICAgICAgKTtcbiAgfVxufVxuZnVuY3Rpb24gVSgpIHtcbiAgY29uc3QgciA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpO1xuICByLnNldEhvdXJzKHIuZ2V0SG91cnMoKSArIDEpO1xuICBjb25zdCBlID0gci5nZXRUaW1lKCkgLyAxZTM7XG4gIGRvY3VtZW50LmNvb2tpZSA9IGBhcHAuYXRfZXhwPSR7ZX1gO1xufVxuZnVuY3Rpb24gUCgpIHtcbiAgZG9jdW1lbnQuY29va2llID0gJ2FwcC5hdF9leHA9O2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQnO1xufVxuZnVuY3Rpb24gRShyKSB7XG4gIGNvbnN0IGUgPSB7XG4gICAgLi4ud2luZG93LmxvY2F0aW9uLFxuICAgIGFzc2lnbjogci5mbigpLFxuICB9O1xuICByZXR1cm4gci5zcHlPbih3aW5kb3csICdsb2NhdGlvbicsICdnZXQnKS5tb2NrUmV0dXJuVmFsdWUoZSksIGU7XG59XG5leHBvcnQge1xuICBvIGFzIENvb2tpZUhlbHBlcnMsXG4gIFQgYXMgU0RLQ29yZSxcbiAgcCBhcyBUb2tlblJlZnJlc2hlcixcbiAgZyBhcyBVcmxIZWxwZXIsXG4gIFUgYXMgbW9ja0lzTG9nZ2VkSW4sXG4gIEUgYXMgbW9ja1dpbmRvd0xvY2F0aW9uLFxuICBQIGFzIHJlbW92ZUF0X2V4cENvb2tpZSxcbn07XG4iXX0=
package/lib/core.d.ts DELETED
@@ -1,57 +0,0 @@
1
- /// <reference types="node" />
2
- declare class g {
3
- constructor(e: any);
4
- getMeUrl(): URL;
5
- getLoginUrl(e: any): URL;
6
- getRegisterUrl(e: any): URL;
7
- getLogoutUrl(): URL;
8
- getTokenRefreshUrl(): URL;
9
- generateUrl(e: any, t: any): URL;
10
- generateURLSearchParams(e: any): URLSearchParams;
11
- }
12
- declare class o {
13
- /**
14
- * Parses document.cookie for the access token expiration cookie value.
15
- * @returns {(number | null)} The moment of expiration in milliseconds since epoch.
16
- */
17
- static getAccessTokenExpirationMoment(e?: string): number | null;
18
- }
19
- declare class p {
20
- constructor(e: any);
21
- /** Refresh token a single time */
22
- refreshToken(): Promise<void>;
23
- /** Initializes continuous automatic token refresh. */
24
- initAutoRefresh(e: number | undefined, t: any): NodeJS.Timeout | undefined;
25
- }
26
- declare class T {
27
- constructor(e: any);
28
- startLogin(e: any): void;
29
- startRegister(e: any): void;
30
- startLogout(): void;
31
- fetchUserInfo(): Promise<any>;
32
- refreshToken(): Promise<any>;
33
- initAutoRefresh(): any;
34
- handlePostRedirect(e: any): void;
35
- get isLoggedIn(): boolean;
36
- get accessTokenExpirationMoment(): number | null;
37
- scheduleTokenExpirationEvent(): void;
38
- }
39
- declare function U(): void;
40
- declare function P(): void;
41
- declare function E(r: any): {
42
- assign: any;
43
- ancestorOrigins: DOMStringList;
44
- hash: string;
45
- host: string;
46
- hostname: string;
47
- href: string;
48
- toString(): string;
49
- origin: string;
50
- pathname: string;
51
- port: string;
52
- protocol: string;
53
- search: string;
54
- reload(): void;
55
- replace(url: string | URL): void;
56
- };
57
- export { o as CookieHelpers, T as SDKCore, p as TokenRefresher, g as UrlHelper, U as mockIsLoggedIn, E as mockWindowLocation, P as removeAt_expCookie, };