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