@fusionauth/angular-sdk 0.1.5 → 1.0.1
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 +42 -69
- package/{esm2020 → esm2022}/lib/components/fusionauth-login.button/fusion-auth-login-button.component.mjs +5 -5
- package/esm2022/lib/components/fusionauth-logout.button/fusion-auth-logout-button.component.mjs +18 -0
- package/esm2022/lib/components/fusionauth-register.button/fusion-auth-register-button.component.mjs +20 -0
- package/esm2022/lib/core.mjs +241 -0
- package/esm2022/lib/fusion-auth.module.mjs +43 -0
- package/esm2022/lib/fusion-auth.service.mjs +91 -0
- package/esm2022/lib/types.mjs +2 -0
- package/fesm2022/fusionauth-angular-sdk.mjs +429 -0
- package/fesm2022/fusionauth-angular-sdk.mjs.map +1 -0
- package/lib/components/fusionauth-login.button/fusion-auth-login-button.component.d.ts +1 -1
- package/lib/components/fusionauth-register.button/fusion-auth-register-button.component.d.ts +1 -1
- package/lib/core.d.ts +57 -0
- package/lib/fusion-auth.service.d.ts +26 -17
- package/lib/types.d.ts +44 -2
- package/package.json +9 -21
- package/esm2020/lib/components/fusionauth-logout.button/fusion-auth-logout-button.component.mjs +0 -18
- package/esm2020/lib/components/fusionauth-register.button/fusion-auth-register-button.component.mjs +0 -20
- package/esm2020/lib/fusion-auth.module.mjs +0 -40
- package/esm2020/lib/fusion-auth.service.mjs +0 -126
- package/esm2020/lib/types.mjs +0 -2
- package/fesm2015/fusionauth-angular-sdk.mjs +0 -228
- package/fesm2015/fusionauth-angular-sdk.mjs.map +0 -1
- package/fesm2020/fusionauth-angular-sdk.mjs +0 -222
- package/fesm2020/fusionauth-angular-sdk.mjs.map +0 -1
- /package/{esm2020 → esm2022}/fusionauth-angular-sdk.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
package/lib/core.d.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
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, };
|
|
@@ -1,42 +1,51 @@
|
|
|
1
1
|
import { FusionAuthConfig, UserInfo } from './types';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
2
3
|
/**
|
|
3
4
|
* Service class to use with FusionAuth backend endpoints.
|
|
4
5
|
*/
|
|
5
6
|
export declare class FusionAuthService {
|
|
6
|
-
private
|
|
7
|
+
private core;
|
|
8
|
+
private autoRefreshTimer?;
|
|
9
|
+
private isLoggedInSubject;
|
|
7
10
|
constructor(config: FusionAuthConfig);
|
|
11
|
+
/** An observable representing whether the user is logged in. */
|
|
12
|
+
isLoggedIn$: Observable<boolean>;
|
|
13
|
+
/** A function that returns whether the user is logged in. This returned value is non-observable. */
|
|
14
|
+
isLoggedIn(): boolean;
|
|
8
15
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
16
|
+
* Refreshes the access token a single time.
|
|
17
|
+
* Automatic token refreshing can be enabled if the SDK is configured with `shouldAutoRefresh`.
|
|
11
18
|
*/
|
|
12
|
-
|
|
19
|
+
refreshToken(): Promise<void>;
|
|
13
20
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
21
|
+
* Initializes automatic access token refreshing.
|
|
22
|
+
* This is handled automatically if the SDK is configured with `shouldAutoRefresh`.
|
|
16
23
|
*/
|
|
17
24
|
initAutoRefresh(): void;
|
|
18
25
|
/**
|
|
19
|
-
*
|
|
20
|
-
* @return {boolean} app.at_exp is present and not for a time in the past
|
|
26
|
+
* Returns an observable request that fetches userInfo, and catches error.
|
|
21
27
|
*/
|
|
22
|
-
|
|
28
|
+
getUserInfoObservable(callbacks?: {
|
|
29
|
+
onBegin?: () => void;
|
|
30
|
+
onDone?: () => void;
|
|
31
|
+
}): Observable<UserInfo>;
|
|
23
32
|
/**
|
|
24
|
-
*
|
|
33
|
+
* Fetches userInfo from the 'me' endpoint.
|
|
34
|
+
* @throws {Error} - if an error occurred while fetching.
|
|
25
35
|
*/
|
|
26
|
-
|
|
36
|
+
getUserInfo(): Promise<UserInfo>;
|
|
27
37
|
/**
|
|
28
|
-
*
|
|
38
|
+
* Initiates login flow.
|
|
39
|
+
* @param {string} [state] - Optional value to be echoed back to the SDK upon redirect.
|
|
29
40
|
*/
|
|
30
41
|
startLogin(state?: string): void;
|
|
31
42
|
/**
|
|
32
|
-
*
|
|
43
|
+
* Initiates register flow.
|
|
44
|
+
* @param {string} [state] - Optional value to be echoed back to the SDK upon redirect.
|
|
33
45
|
*/
|
|
34
46
|
startRegistration(state?: string): void;
|
|
35
47
|
/**
|
|
36
|
-
*
|
|
48
|
+
* Initiates logout flow.
|
|
37
49
|
*/
|
|
38
50
|
logout(): void;
|
|
39
|
-
private doRedirectForPath;
|
|
40
|
-
private getUrlForPath;
|
|
41
|
-
private getExpTime;
|
|
42
51
|
}
|
package/lib/types.d.ts
CHANGED
|
@@ -1,12 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config for FusionAuth Angular SDK
|
|
3
|
+
*/
|
|
1
4
|
export interface FusionAuthConfig {
|
|
5
|
+
/**
|
|
6
|
+
* The URL of the server that performs the token exchange.
|
|
7
|
+
*/
|
|
2
8
|
serverUrl: string;
|
|
9
|
+
/**
|
|
10
|
+
* The client id of the application.
|
|
11
|
+
*/
|
|
3
12
|
clientId: string;
|
|
4
|
-
|
|
13
|
+
/**
|
|
14
|
+
* The redirect URI of the application.
|
|
15
|
+
*/
|
|
16
|
+
redirectUri: string;
|
|
17
|
+
/**
|
|
18
|
+
* The OAuth2 scope parameter passed to the `/oauth2/authorize` endpoint. If not specified fusionauth will default this to `openid offline_access`.
|
|
19
|
+
*/
|
|
20
|
+
scope?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Enables automatic token refreshing. Defaults to false.
|
|
23
|
+
*/
|
|
24
|
+
shouldAutoRefresh?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* The number of seconds before the access token expiry when the auto refresh functionality kicks in if enabled. Default is 10.
|
|
27
|
+
*/
|
|
5
28
|
autoRefreshSecondsBeforeExpiry?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Callback function to be invoked with the `state` value upon redirect from login or register.
|
|
31
|
+
*/
|
|
32
|
+
onRedirect?: (state?: string) => void;
|
|
33
|
+
/**
|
|
34
|
+
* The path to the login endpoint.
|
|
35
|
+
*/
|
|
6
36
|
loginPath?: string;
|
|
7
|
-
|
|
37
|
+
/**
|
|
38
|
+
* The path to the register endpoint.
|
|
39
|
+
*/
|
|
8
40
|
registerPath?: string;
|
|
41
|
+
/**
|
|
42
|
+
* The path to the logout endpoint.
|
|
43
|
+
*/
|
|
44
|
+
logoutPath?: string;
|
|
45
|
+
/**
|
|
46
|
+
* The path to the token refresh endpoint.
|
|
47
|
+
*/
|
|
9
48
|
tokenRefreshPath?: string;
|
|
49
|
+
/**
|
|
50
|
+
* The path to the me endpoint.
|
|
51
|
+
*/
|
|
10
52
|
mePath?: string;
|
|
11
53
|
}
|
|
12
54
|
export interface UserInfo {
|
package/package.json
CHANGED
|
@@ -1,24 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fusionauth/angular-sdk",
|
|
3
|
-
"version": "0.1
|
|
4
|
-
"private": false,
|
|
3
|
+
"version": "1.0.1",
|
|
5
4
|
"peerDependencies": {
|
|
6
|
-
"@angular/common": "
|
|
7
|
-
"@angular/core": "
|
|
5
|
+
"@angular/common": "^17.2.0",
|
|
6
|
+
"@angular/core": "^17.2.0"
|
|
8
7
|
},
|
|
9
8
|
"dependencies": {
|
|
10
9
|
"tslib": "^2.3.0"
|
|
11
10
|
},
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
},
|
|
15
|
-
"repository": "git@github.com:FusionAuth/fusionauth-angular-sdk.git",
|
|
16
|
-
"readme": "",
|
|
17
|
-
"module": "fesm2015/fusionauth-angular-sdk.mjs",
|
|
18
|
-
"es2020": "fesm2020/fusionauth-angular-sdk.mjs",
|
|
19
|
-
"esm2020": "esm2020/fusionauth-angular-sdk.mjs",
|
|
20
|
-
"fesm2020": "fesm2020/fusionauth-angular-sdk.mjs",
|
|
21
|
-
"fesm2015": "fesm2015/fusionauth-angular-sdk.mjs",
|
|
11
|
+
"sideEffects": false,
|
|
12
|
+
"module": "fesm2022/fusionauth-angular-sdk.mjs",
|
|
22
13
|
"typings": "index.d.ts",
|
|
23
14
|
"exports": {
|
|
24
15
|
"./package.json": {
|
|
@@ -26,12 +17,9 @@
|
|
|
26
17
|
},
|
|
27
18
|
".": {
|
|
28
19
|
"types": "./index.d.ts",
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"node": "./fesm2015/fusionauth-angular-sdk.mjs",
|
|
33
|
-
"default": "./fesm2020/fusionauth-angular-sdk.mjs"
|
|
20
|
+
"esm2022": "./esm2022/fusionauth-angular-sdk.mjs",
|
|
21
|
+
"esm": "./esm2022/fusionauth-angular-sdk.mjs",
|
|
22
|
+
"default": "./fesm2022/fusionauth-angular-sdk.mjs"
|
|
34
23
|
}
|
|
35
|
-
}
|
|
36
|
-
"sideEffects": false
|
|
24
|
+
}
|
|
37
25
|
}
|
package/esm2020/lib/components/fusionauth-logout.button/fusion-auth-logout-button.component.mjs
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../../fusion-auth.service";
|
|
4
|
-
export class FusionAuthLogoutButtonComponent {
|
|
5
|
-
constructor(fusionAuth) {
|
|
6
|
-
this.fusionAuth = fusionAuth;
|
|
7
|
-
}
|
|
8
|
-
logout() {
|
|
9
|
-
this.fusionAuth.logout();
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
FusionAuthLogoutButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FusionAuthLogoutButtonComponent, deps: [{ token: i1.FusionAuthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
-
FusionAuthLogoutButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FusionAuthLogoutButtonComponent, selector: "fa-logout", ngImport: i0, template: "<button class=\"fa-logout-button\" (click)=\"logout()\">\n <span>logout</span>\n</button>\n", styles: [".fa-logout-button{padding:7px 13px;border-radius:3px;display:block;border:solid 1px #083b94;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;font-size:12px;text-align:center;color:#083b94}.fa-logout-button:hover{cursor:pointer}\n"] });
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FusionAuthLogoutButtonComponent, decorators: [{
|
|
15
|
-
type: Component,
|
|
16
|
-
args: [{ selector: 'fa-logout', template: "<button class=\"fa-logout-button\" (click)=\"logout()\">\n <span>logout</span>\n</button>\n", styles: [".fa-logout-button{padding:7px 13px;border-radius:3px;display:block;border:solid 1px #083b94;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;font-size:12px;text-align:center;color:#083b94}.fa-logout-button:hover{cursor:pointer}\n"] }]
|
|
17
|
-
}], ctorParameters: function () { return [{ type: i1.FusionAuthService }]; } });
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVzaW9uLWF1dGgtbG9nb3V0LWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdXNpb25hdXRoLWFuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9mdXNpb25hdXRoLWxvZ291dC5idXR0b24vZnVzaW9uLWF1dGgtbG9nb3V0LWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdXNpb25hdXRoLWFuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9mdXNpb25hdXRoLWxvZ291dC5idXR0b24vZnVzaW9uLWF1dGgtbG9nb3V0LWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRMUMsTUFBTSxPQUFPLCtCQUErQjtJQUMxQyxZQUNVLFVBQTZCO1FBQTdCLGVBQVUsR0FBVixVQUFVLENBQW1CO0lBQ3BDLENBQUM7SUFFSixNQUFNO1FBQ0osSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzQixDQUFDOzs2SEFQVSwrQkFBK0I7aUhBQS9CLCtCQUErQixpRENSNUMsOEZBR0E7NEZES2EsK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZ1c2lvbkF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZnVzaW9uLWF1dGguc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZhLWxvZ291dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mdXNpb24tYXV0aC1sb2dvdXQtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZnVzaW9uLWF1dGgtbG9nb3V0LWJ1dHRvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZ1c2lvbkF1dGhMb2dvdXRCdXR0b25Db21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZ1c2lvbkF1dGg6IEZ1c2lvbkF1dGhTZXJ2aWNlLFxuICApIHt9XG5cbiAgbG9nb3V0KCkge1xuICAgIHRoaXMuZnVzaW9uQXV0aC5sb2dvdXQoKTtcbiAgfVxufVxuIiwiPGJ1dHRvbiBjbGFzcz1cImZhLWxvZ291dC1idXR0b25cIiAoY2xpY2spPVwibG9nb3V0KClcIj5cbiAgPHNwYW4+bG9nb3V0PC9zcGFuPlxuPC9idXR0b24+XG4iXX0=
|
package/esm2020/lib/components/fusionauth-register.button/fusion-auth-register-button.component.mjs
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../../fusion-auth.service";
|
|
4
|
-
export class FusionAuthRegisterButtonComponent {
|
|
5
|
-
constructor(fusionAuth) {
|
|
6
|
-
this.fusionAuth = fusionAuth;
|
|
7
|
-
}
|
|
8
|
-
register() {
|
|
9
|
-
this.fusionAuth.startRegistration(this.state);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
FusionAuthRegisterButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FusionAuthRegisterButtonComponent, deps: [{ token: i1.FusionAuthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
-
FusionAuthRegisterButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FusionAuthRegisterButtonComponent, selector: "fa-register", inputs: { state: "state" }, ngImport: i0, template: "<button class=\"fa-button\" (click)=\"register()\">\n <span>Register Now</span>\n</button>\n", styles: [".fa-button{padding:16px 16px 13px;border-radius:8px;background-color:#083b94;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;font-size:18px;font-weight:600;text-align:center;color:#fff;width:400px}.fa-button:hover{cursor:pointer}\n"] });
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FusionAuthRegisterButtonComponent, decorators: [{
|
|
15
|
-
type: Component,
|
|
16
|
-
args: [{ selector: 'fa-register', template: "<button class=\"fa-button\" (click)=\"register()\">\n <span>Register Now</span>\n</button>\n", styles: [".fa-button{padding:16px 16px 13px;border-radius:8px;background-color:#083b94;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;font-size:18px;font-weight:600;text-align:center;color:#fff;width:400px}.fa-button:hover{cursor:pointer}\n"] }]
|
|
17
|
-
}], ctorParameters: function () { return [{ type: i1.FusionAuthService }]; }, propDecorators: { state: [{
|
|
18
|
-
type: Input
|
|
19
|
-
}] } });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVzaW9uLWF1dGgtcmVnaXN0ZXItYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Z1c2lvbmF1dGgtYW5ndWxhci1zZGsvc3JjL2xpYi9jb21wb25lbnRzL2Z1c2lvbmF1dGgtcmVnaXN0ZXIuYnV0dG9uL2Z1c2lvbi1hdXRoLXJlZ2lzdGVyLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdXNpb25hdXRoLWFuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9mdXNpb25hdXRoLXJlZ2lzdGVyLmJ1dHRvbi9mdXNpb24tYXV0aC1yZWdpc3Rlci1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVFqRCxNQUFNLE9BQU8saUNBQWlDO0lBRzVDLFlBQ1UsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7SUFDcEMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDOzsrSEFUVSxpQ0FBaUM7bUhBQWpDLGlDQUFpQywrRUNSOUMsK0ZBR0E7NEZES2EsaUNBQWlDO2tCQUw3QyxTQUFTOytCQUNFLGFBQWE7d0dBS2QsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRnVzaW9uQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9mdXNpb24tYXV0aC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmEtcmVnaXN0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZnVzaW9uLWF1dGgtcmVnaXN0ZXItYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZnVzaW9uLWF1dGgtcmVnaXN0ZXItYnV0dG9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRnVzaW9uQXV0aFJlZ2lzdGVyQnV0dG9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc3RhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZ1c2lvbkF1dGg6IEZ1c2lvbkF1dGhTZXJ2aWNlLFxuICApIHt9XG5cbiAgcmVnaXN0ZXIoKSB7XG4gICAgdGhpcy5mdXNpb25BdXRoLnN0YXJ0UmVnaXN0cmF0aW9uKHRoaXMuc3RhdGUpO1xuICB9XG59XG4iLCI8YnV0dG9uIGNsYXNzPVwiZmEtYnV0dG9uXCIgKGNsaWNrKT1cInJlZ2lzdGVyKClcIj5cbiAgPHNwYW4+UmVnaXN0ZXIgTm93PC9zcGFuPlxuPC9idXR0b24+XG4iXX0=
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { FusionAuthService } from './fusion-auth.service';
|
|
3
|
-
import { FusionAuthLoginButtonComponent } from './components/fusionauth-login.button/fusion-auth-login-button.component';
|
|
4
|
-
import { FusionAuthLogoutButtonComponent } from './components/fusionauth-logout.button/fusion-auth-logout-button.component';
|
|
5
|
-
import { FusionAuthRegisterButtonComponent } from './components/fusionauth-register.button/fusion-auth-register-button.component';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class FusionAuthModule {
|
|
8
|
-
static forRoot(fusionAuthConfig) {
|
|
9
|
-
return {
|
|
10
|
-
ngModule: FusionAuthModule,
|
|
11
|
-
providers: [
|
|
12
|
-
{ provide: FusionAuthService, useValue: new FusionAuthService(fusionAuthConfig) }
|
|
13
|
-
],
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
FusionAuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FusionAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
18
|
-
FusionAuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: FusionAuthModule, declarations: [FusionAuthLoginButtonComponent,
|
|
19
|
-
FusionAuthLogoutButtonComponent,
|
|
20
|
-
FusionAuthRegisterButtonComponent], exports: [FusionAuthLoginButtonComponent,
|
|
21
|
-
FusionAuthLogoutButtonComponent,
|
|
22
|
-
FusionAuthRegisterButtonComponent] });
|
|
23
|
-
FusionAuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FusionAuthModule });
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FusionAuthModule, decorators: [{
|
|
25
|
-
type: NgModule,
|
|
26
|
-
args: [{
|
|
27
|
-
declarations: [
|
|
28
|
-
FusionAuthLoginButtonComponent,
|
|
29
|
-
FusionAuthLogoutButtonComponent,
|
|
30
|
-
FusionAuthRegisterButtonComponent,
|
|
31
|
-
],
|
|
32
|
-
imports: [],
|
|
33
|
-
exports: [
|
|
34
|
-
FusionAuthLoginButtonComponent,
|
|
35
|
-
FusionAuthLogoutButtonComponent,
|
|
36
|
-
FusionAuthRegisterButtonComponent,
|
|
37
|
-
]
|
|
38
|
-
}]
|
|
39
|
-
}] });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVzaW9uLWF1dGgubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZnVzaW9uYXV0aC1hbmd1bGFyLXNkay9zcmMvbGliL2Z1c2lvbi1hdXRoLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUN6SCxPQUFPLEVBQ0wsK0JBQStCLEVBQ2hDLE1BQU0sMkVBQTJFLENBQUM7QUFDbkYsT0FBTyxFQUNMLGlDQUFpQyxFQUNsQyxNQUFNLCtFQUErRSxDQUFDOztBQWdCdkYsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFrQztRQUMvQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGdCQUFnQjtZQUMxQixTQUFTLEVBQUU7Z0JBQ1QsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLElBQUksaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsRUFBRTthQUNsRjtTQUNGLENBQUE7SUFDSCxDQUFDOzs4R0FSVSxnQkFBZ0I7K0dBQWhCLGdCQUFnQixpQkFaekIsOEJBQThCO1FBQzlCLCtCQUErQjtRQUMvQixpQ0FBaUMsYUFLakMsOEJBQThCO1FBQzlCLCtCQUErQjtRQUMvQixpQ0FBaUM7K0dBR3hCLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQWQ1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWiw4QkFBOEI7d0JBQzlCLCtCQUErQjt3QkFDL0IsaUNBQWlDO3FCQUNsQztvQkFDRCxPQUFPLEVBQUUsRUFDUjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsOEJBQThCO3dCQUM5QiwrQkFBK0I7d0JBQy9CLGlDQUFpQztxQkFDbEM7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGdXNpb25BdXRoQ29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBGdXNpb25BdXRoU2VydmljZSB9IGZyb20gJy4vZnVzaW9uLWF1dGguc2VydmljZSc7XG5pbXBvcnQgeyBGdXNpb25BdXRoTG9naW5CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZnVzaW9uYXV0aC1sb2dpbi5idXR0b24vZnVzaW9uLWF1dGgtbG9naW4tYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBGdXNpb25BdXRoTG9nb3V0QnV0dG9uQ29tcG9uZW50XG59IGZyb20gJy4vY29tcG9uZW50cy9mdXNpb25hdXRoLWxvZ291dC5idXR0b24vZnVzaW9uLWF1dGgtbG9nb3V0LWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgRnVzaW9uQXV0aFJlZ2lzdGVyQnV0dG9uQ29tcG9uZW50XG59IGZyb20gJy4vY29tcG9uZW50cy9mdXNpb25hdXRoLXJlZ2lzdGVyLmJ1dHRvbi9mdXNpb24tYXV0aC1yZWdpc3Rlci1idXR0b24uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRnVzaW9uQXV0aExvZ2luQnV0dG9uQ29tcG9uZW50LFxuICAgIEZ1c2lvbkF1dGhMb2dvdXRCdXR0b25Db21wb25lbnQsXG4gICAgRnVzaW9uQXV0aFJlZ2lzdGVyQnV0dG9uQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGdXNpb25BdXRoTG9naW5CdXR0b25Db21wb25lbnQsXG4gICAgRnVzaW9uQXV0aExvZ291dEJ1dHRvbkNvbXBvbmVudCxcbiAgICBGdXNpb25BdXRoUmVnaXN0ZXJCdXR0b25Db21wb25lbnQsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRnVzaW9uQXV0aE1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KGZ1c2lvbkF1dGhDb25maWc6IEZ1c2lvbkF1dGhDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEZ1c2lvbkF1dGhNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEZ1c2lvbkF1dGhNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBGdXNpb25BdXRoU2VydmljZSwgdXNlVmFsdWU6IG5ldyBGdXNpb25BdXRoU2VydmljZShmdXNpb25BdXRoQ29uZmlnKSB9XG4gICAgICBdLFxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Service class to use with FusionAuth backend endpoints.
|
|
3
|
-
*/
|
|
4
|
-
export class FusionAuthService {
|
|
5
|
-
constructor(config) {
|
|
6
|
-
this.config = config;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Calls the 'me' endpoint to retrieve user info.
|
|
10
|
-
* @return {Promise<UserInfo>} the user info response.
|
|
11
|
-
*/
|
|
12
|
-
async getUserInfo() {
|
|
13
|
-
const path = !!this.config.mePath
|
|
14
|
-
? this.config.mePath
|
|
15
|
-
: '/app/me';
|
|
16
|
-
const uri = this.getUrlForPath(path);
|
|
17
|
-
const resp = await fetch(uri.href, {
|
|
18
|
-
credentials: 'include',
|
|
19
|
-
});
|
|
20
|
-
return JSON.parse(await resp.text());
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Checks for the 'app.at_exp' cookie and if present sets a timer to refresh the access token.
|
|
24
|
-
* Will attempt to refresh the configured seconds before the access token expires (default is ten seconds).
|
|
25
|
-
*/
|
|
26
|
-
initAutoRefresh() {
|
|
27
|
-
const exp = this.getExpTime();
|
|
28
|
-
if (exp) {
|
|
29
|
-
const refreshBeforeSeconds = this.config.autoRefreshSecondsBeforeExpiry
|
|
30
|
-
? this.config.autoRefreshSecondsBeforeExpiry
|
|
31
|
-
: 10;
|
|
32
|
-
const now = new Date().getTime();
|
|
33
|
-
const refreshTime = exp - (refreshBeforeSeconds * 1000);
|
|
34
|
-
let timeTillThen = refreshTime - now;
|
|
35
|
-
if (timeTillThen <= 0) {
|
|
36
|
-
timeTillThen = 0;
|
|
37
|
-
}
|
|
38
|
-
setTimeout(async () => {
|
|
39
|
-
try {
|
|
40
|
-
await this.refreshToken();
|
|
41
|
-
this.initAutoRefresh();
|
|
42
|
-
}
|
|
43
|
-
catch (e) {
|
|
44
|
-
console.error(e);
|
|
45
|
-
}
|
|
46
|
-
}, timeTillThen);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Checks that the 'app.at_exp' cookie is present and for a time in the future to determine logged-in state.
|
|
51
|
-
* @return {boolean} app.at_exp is present and not for a time in the past
|
|
52
|
-
*/
|
|
53
|
-
isLoggedIn() {
|
|
54
|
-
return (this.getExpTime() ?? 0) > new Date().getTime();
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Calls the configured 'refresh' endpoint to attempt to refresh the access token cookie.
|
|
58
|
-
*/
|
|
59
|
-
async refreshToken() {
|
|
60
|
-
const path = !!this.config.tokenRefreshPath
|
|
61
|
-
? `${this.config.tokenRefreshPath}/${this.config.clientId}`
|
|
62
|
-
: `/app/refresh/${this.config.clientId}`;
|
|
63
|
-
const uri = this.getUrlForPath(path);
|
|
64
|
-
const resp = await fetch(uri.href, {
|
|
65
|
-
method: 'POST',
|
|
66
|
-
credentials: 'include',
|
|
67
|
-
headers: {
|
|
68
|
-
'Content-Type': 'text/plain',
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
if (!(resp.status >= 200 && resp.status < 300)) {
|
|
72
|
-
throw new Error('error refreshing access token in fusionauth');
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Invokes a redirect to the configured 'login' endpoint.
|
|
77
|
-
*/
|
|
78
|
-
startLogin(state) {
|
|
79
|
-
const path = !!this.config.loginPath
|
|
80
|
-
? this.config.loginPath
|
|
81
|
-
: '/app/login';
|
|
82
|
-
!!state ? this.doRedirectForPath(path, { state }) : this.doRedirectForPath(path);
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Invokes a redirect to the configured 'refresh' endpoint.
|
|
86
|
-
*/
|
|
87
|
-
startRegistration(state) {
|
|
88
|
-
const path = !!this.config.registerPath
|
|
89
|
-
? this.config.registerPath
|
|
90
|
-
: '/app/register';
|
|
91
|
-
!!state ? this.doRedirectForPath(path, { state }) : this.doRedirectForPath(path);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Invokes a redirect to the configured 'logout' endpoint.
|
|
95
|
-
*/
|
|
96
|
-
logout() {
|
|
97
|
-
const path = !!this.config.logoutPath
|
|
98
|
-
? this.config.logoutPath
|
|
99
|
-
: '/app/logout';
|
|
100
|
-
this.doRedirectForPath(path);
|
|
101
|
-
}
|
|
102
|
-
doRedirectForPath(path, params = {}) {
|
|
103
|
-
path = path + `/${this.config.clientId}`;
|
|
104
|
-
if (this.config.redirectUri) {
|
|
105
|
-
params['redirect_uri'] = this.config.redirectUri;
|
|
106
|
-
}
|
|
107
|
-
let location = this.getUrlForPath(path, params);
|
|
108
|
-
window.location.assign(location);
|
|
109
|
-
}
|
|
110
|
-
getUrlForPath(path, params = {}) {
|
|
111
|
-
let url = new URL(this.config.serverUrl);
|
|
112
|
-
url.pathname = path;
|
|
113
|
-
if (Object.entries(params).length > 0) {
|
|
114
|
-
const urlParams = new URLSearchParams(params);
|
|
115
|
-
url.search = urlParams.toString();
|
|
116
|
-
}
|
|
117
|
-
return url;
|
|
118
|
-
}
|
|
119
|
-
getExpTime() {
|
|
120
|
-
const expCookie = document.cookie.split('; ')
|
|
121
|
-
.map(c => c.split('='))
|
|
122
|
-
.find(([name]) => name === 'app.at_exp');
|
|
123
|
-
return expCookie ? parseInt(expCookie[1]) * 1000 : null;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVzaW9uLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Z1c2lvbmF1dGgtYW5ndWxhci1zZGsvc3JjL2xpYi9mdXNpb24tYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixZQUNVLE1BQXdCO1FBQXhCLFdBQU0sR0FBTixNQUFNLENBQWtCO0lBQzlCLENBQUM7SUFFTDs7O09BR0c7SUFDSCxLQUFLLENBQUMsV0FBVztRQUNmLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDL0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUNwQixDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxNQUFNLElBQUksR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQ2pDLFdBQVcsRUFBRSxTQUFTO1NBQ3ZCLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBYSxDQUFDO0lBQ25ELENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlO1FBQ2IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlCLElBQUksR0FBRyxFQUFFO1lBQ1AsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLDhCQUE4QjtnQkFDckUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsOEJBQThCO2dCQUM1QyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1AsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FB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QyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN0QixJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUM7UUFDM0MsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMxRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGdXNpb25BdXRoQ29uZmlnLCBVc2VySW5mbyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFNlcnZpY2UgY2xhc3MgdG8gdXNlIHdpdGggRnVzaW9uQXV0aCBiYWNrZW5kIGVuZHBvaW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEZ1c2lvbkF1dGhTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZzogRnVzaW9uQXV0aENvbmZpZyxcbiAgKSB7IH1cblxuICAvKipcbiAgICogQ2FsbHMgdGhlICdtZScgZW5kcG9pbnQgdG8gcmV0cmlldmUgdXNlciBpbmZvLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFVzZXJJbmZvPn0gdGhlIHVzZXIgaW5mbyByZXNwb25zZS5cbiAgICovXG4gIGFzeW5jIGdldFVzZXJJbmZvKCk6IFByb21pc2U8VXNlckluZm8+IHtcbiAgICBjb25zdCBwYXRoID0gISF0aGlzLmNvbmZpZy5tZVBhdGhcbiAgICAgID8gdGhpcy5jb25maWcubWVQYXRoXG4gICAgICA6ICcvYXBwL21lJztcbiAgICBjb25zdCB1cmkgPSB0aGlzLmdldFVybEZvclBhdGgocGF0aCk7XG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IGZldGNoKHVyaS5ocmVmLCB7XG4gICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgIH0pO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IHJlc3AudGV4dCgpKSBhcyBVc2VySW5mbztcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgZm9yIHRoZSAnYXBwLmF0X2V4cCcgY29va2llIGFuZCBpZiBwcmVzZW50IHNldHMgYSB0aW1lciB0byByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4uXG4gICAqIFdpbGwgYXR0ZW1wdCB0byByZWZyZXNoIHRoZSBjb25maWd1cmVkIHNlY29uZHMgYmVmb3JlIHRoZSBhY2Nlc3MgdG9rZW4gZXhwaXJlcyAoZGVmYXVsdCBpcyB0ZW4gc2Vjb25kcykuXG4gICAqL1xuICBpbml0QXV0b1JlZnJlc2goKTogdm9pZCB7XG4gICAgY29uc3QgZXhwID0gdGhpcy5nZXRFeHBUaW1lKCk7XG4gICAgaWYgKGV4cCkge1xuICAgICAgY29uc3QgcmVmcmVzaEJlZm9yZVNlY29uZHMgPSB0aGlzLmNvbmZpZy5hdXRvUmVmcmVzaFNlY29uZHNCZWZvcmVFeHBpcnlcbiAgICAgICAgPyB0aGlzLmNvbmZpZy5hdXRvUmVmcmVzaFNlY29uZHNCZWZvcmVFeHBpcnlcbiAgICAgICAgOiAxMDtcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgY29uc3QgcmVmcmVzaFRpbWUgPSBleHAgLSAocmVmcmVzaEJlZm9yZVNlY29uZHMgKiAxMDAwKTtcbiAgICAgIGxldCB0aW1lVGlsbFRoZW4gPSByZWZyZXNoVGltZSAtIG5vdztcbiAgICAgIGlmICh0aW1lVGlsbFRoZW4gPD0gMCkge1xuICAgICAgICB0aW1lVGlsbFRoZW4gPSAwO1xuICAgICAgfVxuICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgICB0aGlzLmluaXRBdXRvUmVmcmVzaCgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKVxuICAgICAgICB9XG4gICAgICB9LCB0aW1lVGlsbFRoZW4pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgdGhhdCB0aGUgJ2FwcC5hdF9leHAnIGNvb2tpZSBpcyBwcmVzZW50IGFuZCBmb3IgYSB0aW1lIGluIHRoZSBmdXR1cmUgdG8gZGV0ZXJtaW5lIGxvZ2dlZC1pbiBzdGF0ZS5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gYXBwLmF0X2V4cCBpcyBwcmVzZW50IGFuZCBub3QgZm9yIGEgdGltZSBpbiB0aGUgcGFzdFxuICAgKi9cbiAgaXNMb2dnZWRJbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuZ2V0RXhwVGltZSgpID8/IDApID4gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbHMgdGhlIGNvbmZpZ3VyZWQgJ3JlZnJlc2gnIGVuZHBvaW50IHRvIGF0dGVtcHQgdG8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGNvb2tpZS5cbiAgICovXG4gIGFzeW5jIHJlZnJlc2hUb2tlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwYXRoID0gISF0aGlzLmNvbmZpZy50b2tlblJlZnJlc2hQYXRoXG4gICAgICA/IGAke3RoaXMuY29uZmlnLnRva2VuUmVmcmVzaFBhdGh9LyR7dGhpcy5jb25maWcuY2xpZW50SWR9YFxuICAgICAgOiBgL2FwcC9yZWZyZXNoLyR7dGhpcy5jb25maWcuY2xpZW50SWR9YDtcbiAgICBjb25zdCB1cmkgPSB0aGlzLmdldFVybEZvclBhdGgocGF0aCk7XG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IGZldGNoKHVyaS5ocmVmLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGNyZWRlbnRpYWxzOiAnaW5jbHVkZScsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbicsXG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCEocmVzcC5zdGF0dXMgPj0gMjAwICYmIHJlc3Auc3RhdHVzIDwgMzAwKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdlcnJvciByZWZyZXNoaW5nIGFjY2VzcyB0b2tlbiBpbiBmdXNpb25hdXRoJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZXMgYSByZWRpcmVjdCB0byB0aGUgY29uZmlndXJlZCAnbG9naW4nIGVuZHBvaW50LlxuICAgKi9cbiAgc3RhcnRMb2dpbihzdGF0ZT86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHBhdGggPSAhIXRoaXMuY29uZmlnLmxvZ2luUGF0aFxuICAgICAgPyB0aGlzLmNvbmZpZy5sb2dpblBhdGhcbiAgICAgIDogJy9hcHAvbG9naW4nO1xuICAgICEhc3RhdGUgPyB0aGlzLmRvUmVkaXJlY3RGb3JQYXRoKHBhdGgsIHtzdGF0ZX0pIDogdGhpcy5kb1JlZGlyZWN0Rm9yUGF0aChwYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZva2VzIGEgcmVkaXJlY3QgdG8gdGhlIGNvbmZpZ3VyZWQgJ3JlZnJlc2gnIGVuZHBvaW50LlxuICAgKi9cbiAgc3RhcnRSZWdpc3RyYXRpb24oc3RhdGU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwYXRoID0gISF0aGlzLmNvbmZpZy5yZWdpc3RlclBhdGhcbiAgICAgID8gdGhpcy5jb25maWcucmVnaXN0ZXJQYXRoXG4gICAgICA6ICcvYXBwL3JlZ2lzdGVyJztcbiAgICAhIXN0YXRlID8gdGhpcy5kb1JlZGlyZWN0Rm9yUGF0aChwYXRoLCB7c3RhdGV9KSA6IHRoaXMuZG9SZWRpcmVjdEZvclBhdGgocGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogSW52b2tlcyBhIHJlZGlyZWN0IHRvIHRoZSBjb25maWd1cmVkICdsb2dvdXQnIGVuZHBvaW50LlxuICAgKi9cbiAgbG9nb3V0KCk6IHZvaWQge1xuICAgIGNvbnN0IHBhdGggPSAhIXRoaXMuY29uZmlnLmxvZ291dFBhdGhcbiAgICAgID8gdGhpcy5jb25maWcubG9nb3V0UGF0aFxuICAgICAgOiAnL2FwcC9sb2dvdXQnO1xuICAgIHRoaXMuZG9SZWRpcmVjdEZvclBhdGgocGF0aCk7XG4gIH1cblxuICBwcml2YXRlIGRvUmVkaXJlY3RGb3JQYXRoKHBhdGg6IHN0cmluZywgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLGFueT4gPSB7fSkge1xuICAgIHBhdGggPSBwYXRoICsgYC8ke3RoaXMuY29uZmlnLmNsaWVudElkfWA7XG4gICAgaWYgKHRoaXMuY29uZmlnLnJlZGlyZWN0VXJpKSB7XG4gICAgICBwYXJhbXNbJ3JlZGlyZWN0X3VyaSddID0gdGhpcy5jb25maWcucmVkaXJlY3RVcmk7XG4gICAgfVxuICAgIGxldCBsb2NhdGlvbiA9IHRoaXMuZ2V0VXJsRm9yUGF0aChwYXRoLCBwYXJhbXMpIDtcbiAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKGxvY2F0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VXJsRm9yUGF0aChwYXRoOiBzdHJpbmcsIHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KTogVVJMIHtcbiAgICBsZXQgdXJsID0gbmV3IFVSTCh0aGlzLmNvbmZpZy5zZXJ2ZXJVcmwpO1xuICAgIHVybC5wYXRobmFtZSA9IHBhdGg7XG4gICAgaWYgKE9iamVjdC5lbnRyaWVzKHBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xuICAgICAgdXJsLnNlYXJjaCA9IHVybFBhcmFtcy50b1N0cmluZygpO1xuICAgIH1cbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeHBUaW1lKCk6IG51bWJlciB8IG51bGwge1xuICAgIGNvbnN0IGV4cENvb2tpZSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOyAnKVxuICAgICAgLm1hcChjID0+IGMuc3BsaXQoJz0nKSlcbiAgICAgIC5maW5kKChbbmFtZV0pID0+IG5hbWUgPT09ICdhcHAuYXRfZXhwJyk7XG4gICAgcmV0dXJuIGV4cENvb2tpZSA/IHBhcnNlSW50KGV4cENvb2tpZVsxXSkgKiAxMDAwIDogbnVsbDtcbiAgfVxufVxuIl19
|
package/esm2020/lib/types.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mdXNpb25hdXRoLWFuZ3VsYXItc2RrL3NyYy9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRnVzaW9uQXV0aENvbmZpZyB7XG4gIHNlcnZlclVybDogc3RyaW5nO1xuICBjbGllbnRJZDogc3RyaW5nO1xuICByZWRpcmVjdFVyaT86IHN0cmluZztcblxuICBhdXRvUmVmcmVzaFNlY29uZHNCZWZvcmVFeHBpcnk/OiBudW1iZXI7XG4gIGxvZ2luUGF0aD86IHN0cmluZztcbiAgbG9nb3V0UGF0aD86IHN0cmluZztcbiAgcmVnaXN0ZXJQYXRoPzogc3RyaW5nO1xuICB0b2tlblJlZnJlc2hQYXRoPzogc3RyaW5nO1xuICBtZVBhdGg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckluZm8ge1xuICBhcHBsaWNhdGlvbklkPzogc3RyaW5nO1xuICBlbWFpbD86IHN0cmluZztcbiAgZW1haWxfdmVyaWZpZWQ/OiBib29sZWFuO1xuICBmYW1pbHlfbmFtZT86IHN0cmluZztcbiAgZ2l2ZW5fbmFtZT86IHN0cmluZztcbiAgcGljdHVyZT86IHN0cmluZztcbiAgcm9sZXM/OiBhbnlbXTtcbiAgc2lkPzogc3RyaW5nO1xuICBzdWI/OiBzdHJpbmc7XG4gIHRpZD86IHN0cmluZztcbiAgcGhvbmVfbnVtYmVyPzogc3RyaW5nO1xufVxuIl19
|