@descope/angular-sdk 0.0.0-next-32627c0f-20231228 → 0.0.0-next-a6b67f6a-20231228
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/LICENSE +21 -0
- package/README.md +448 -13
- package/dist/README.md +21 -0
- package/dist/environment.d.ts +3 -0
- package/dist/esm2022/descope-angular-sdk.mjs +5 -0
- package/dist/esm2022/environment.mjs +4 -0
- package/dist/esm2022/lib/components/descope/descope.component.mjs +106 -0
- package/dist/esm2022/lib/components/sign-in-flow/sign-in-flow.component.mjs +40 -0
- package/dist/esm2022/lib/components/sign-up-flow/sign-up-flow.component.mjs +40 -0
- package/dist/esm2022/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.mjs +40 -0
- package/dist/esm2022/lib/descope-auth.module.mjs +52 -0
- package/dist/esm2022/lib/services/descope-auth.guard.mjs +15 -0
- package/dist/esm2022/lib/services/descope-auth.service.mjs +139 -0
- package/dist/esm2022/lib/services/descope.interceptor.mjs +51 -0
- package/dist/esm2022/lib/types/types.mjs +6 -0
- package/dist/esm2022/lib/utils/constants.mjs +7 -0
- package/dist/esm2022/lib/utils/helpers.mjs +27 -0
- package/dist/esm2022/public-api.mjs +13 -0
- package/dist/fesm2022/descope-angular-sdk.mjs +500 -0
- package/dist/fesm2022/descope-angular-sdk.mjs.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/lib/components/descope/descope.component.d.ts +32 -0
- package/dist/lib/components/sign-in-flow/sign-in-flow.component.d.ts +24 -0
- package/dist/lib/components/sign-up-flow/sign-up-flow.component.d.ts +24 -0
- package/dist/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.d.ts +24 -0
- package/dist/lib/descope-auth.module.d.ts +14 -0
- package/dist/lib/services/descope-auth.guard.d.ts +2 -0
- package/dist/lib/services/descope-auth.service.d.ts +38 -0
- package/dist/lib/services/descope.interceptor.d.ts +2 -0
- package/dist/lib/types/types.d.ts +8 -0
- package/dist/lib/utils/constants.d.ts +5 -0
- package/dist/lib/utils/helpers.d.ts +5 -0
- package/dist/package.json +42 -0
- package/dist/public-api.d.ts +9 -0
- package/package.json +80 -41
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { DescopeComponent } from '../descope/descope.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../types/types";
|
|
5
|
+
export class SignInFlowComponent {
|
|
6
|
+
constructor(descopeConfig) {
|
|
7
|
+
this.success = new EventEmitter();
|
|
8
|
+
this.error = new EventEmitter();
|
|
9
|
+
this.projectId = descopeConfig.projectId;
|
|
10
|
+
}
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SignInFlowComponent, deps: [{ token: i1.DescopeAuthConfig }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SignInFlowComponent, isStandalone: true, selector: "descope-sign-in-flow", inputs: { locale: "locale", theme: "theme", tenant: "tenant", telemetryKey: "telemetryKey", redirectUrl: "redirectUrl", autoFocus: "autoFocus", debug: "debug", errorTransformer: "errorTransformer", logger: "logger" }, outputs: { success: "success", error: "error" }, ngImport: i0, template: "<descope\n\t(success)=\"success.emit()\"\n\t(error)=\"error.emit()\"\n\tflowId=\"sign-in\"\n\t[locale]=\"locale\"\n\t[theme]=\"theme\"\n\t[tenant]=\"tenant\"\n\t[telemetryKey]=\"telemetryKey\"\n\t[redirectUrl]=\"redirectUrl\"\n\t[autoFocus]=\"autoFocus\"\n\t[debug]=\"debug\"\n\t[errorTransformer]=\"errorTransformer\"\n\t[logger]=\"logger\"\n>\n</descope>\n", dependencies: [{ kind: "component", type: DescopeComponent, selector: "descope[flowId]", inputs: ["flowId", "locale", "theme", "tenant", "telemetryKey", "redirectUrl", "autoFocus", "debug", "errorTransformer", "logger"], outputs: ["success", "error"] }] }); }
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SignInFlowComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{ selector: 'descope-sign-in-flow', standalone: true, imports: [DescopeComponent], template: "<descope\n\t(success)=\"success.emit()\"\n\t(error)=\"error.emit()\"\n\tflowId=\"sign-in\"\n\t[locale]=\"locale\"\n\t[theme]=\"theme\"\n\t[tenant]=\"tenant\"\n\t[telemetryKey]=\"telemetryKey\"\n\t[redirectUrl]=\"redirectUrl\"\n\t[autoFocus]=\"autoFocus\"\n\t[debug]=\"debug\"\n\t[errorTransformer]=\"errorTransformer\"\n\t[logger]=\"logger\"\n>\n</descope>\n" }]
|
|
17
|
+
}], ctorParameters: function () { return [{ type: i1.DescopeAuthConfig }]; }, propDecorators: { locale: [{
|
|
18
|
+
type: Input
|
|
19
|
+
}], theme: [{
|
|
20
|
+
type: Input
|
|
21
|
+
}], tenant: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}], telemetryKey: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], redirectUrl: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}], autoFocus: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}], debug: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], errorTransformer: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}], logger: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}], success: [{
|
|
36
|
+
type: Output
|
|
37
|
+
}], error: [{
|
|
38
|
+
type: Output
|
|
39
|
+
}] } });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1pbi1mbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9zaWduLWluLWZsb3cvc2lnbi1pbi1mbG93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9zaWduLWluLWZsb3cvc2lnbi1pbi1mbG93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQVNoRSxNQUFNLE9BQU8sbUJBQW1CO0lBaUIvQixZQUFZLGFBQWdDO1FBSGxDLFlBQU8sR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN2RCxVQUFLLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQzFDLENBQUM7OEdBbkJXLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDJWQ1hoQyx3V0FlQSw0Q0RQVyxnQkFBZ0I7OzJGQUdkLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDQyxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLENBQUM7d0dBTWxCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tICdAZGVzY29wZS93ZWItY29tcG9uZW50JztcbmltcG9ydCB7IERlc2NvcGVDb21wb25lbnQgfSBmcm9tICcuLi9kZXNjb3BlL2Rlc2NvcGUuY29tcG9uZW50JztcbmltcG9ydCB7IERlc2NvcGVBdXRoQ29uZmlnIH0gZnJvbSAnLi4vLi4vdHlwZXMvdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdkZXNjb3BlLXNpZ24taW4tZmxvdycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtEZXNjb3BlQ29tcG9uZW50XSxcblx0dGVtcGxhdGVVcmw6ICcuL3NpZ24taW4tZmxvdy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2lnbkluRmxvd0NvbXBvbmVudCB7XG5cdHByb2plY3RJZDogc3RyaW5nO1xuXG5cdEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nO1xuXHRASW5wdXQoKSB0aGVtZTogJ2xpZ2h0JyB8ICdkYXJrJyB8ICdvcyc7XG5cdEBJbnB1dCgpIHRlbmFudDogc3RyaW5nO1xuXHRASW5wdXQoKSB0ZWxlbWV0cnlLZXk6IHN0cmluZztcblx0QElucHV0KCkgcmVkaXJlY3RVcmw6IHN0cmluZztcblx0QElucHV0KCkgYXV0b0ZvY3VzOiB0cnVlIHwgZmFsc2UgfCAnc2tpcEZpcnN0U2NyZWVuJztcblxuXHRASW5wdXQoKSBkZWJ1ZzogYm9vbGVhbjtcblx0QElucHV0KCkgZXJyb3JUcmFuc2Zvcm1lcjogKGVycm9yOiB7IHRleHQ6IHN0cmluZzsgdHlwZTogc3RyaW5nIH0pID0+IHN0cmluZztcblx0QElucHV0KCkgbG9nZ2VyOiBJTG9nZ2VyO1xuXG5cdEBPdXRwdXQoKSBzdWNjZXNzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cdEBPdXRwdXQoKSBlcnJvcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG5cdGNvbnN0cnVjdG9yKGRlc2NvcGVDb25maWc6IERlc2NvcGVBdXRoQ29uZmlnKSB7XG5cdFx0dGhpcy5wcm9qZWN0SWQgPSBkZXNjb3BlQ29uZmlnLnByb2plY3RJZDtcblx0fVxufVxuIiwiPGRlc2NvcGVcblx0KHN1Y2Nlc3MpPVwic3VjY2Vzcy5lbWl0KClcIlxuXHQoZXJyb3IpPVwiZXJyb3IuZW1pdCgpXCJcblx0Zmxvd0lkPVwic2lnbi1pblwiXG5cdFtsb2NhbGVdPVwibG9jYWxlXCJcblx0W3RoZW1lXT1cInRoZW1lXCJcblx0W3RlbmFudF09XCJ0ZW5hbnRcIlxuXHRbdGVsZW1ldHJ5S2V5XT1cInRlbGVtZXRyeUtleVwiXG5cdFtyZWRpcmVjdFVybF09XCJyZWRpcmVjdFVybFwiXG5cdFthdXRvRm9jdXNdPVwiYXV0b0ZvY3VzXCJcblx0W2RlYnVnXT1cImRlYnVnXCJcblx0W2Vycm9yVHJhbnNmb3JtZXJdPVwiZXJyb3JUcmFuc2Zvcm1lclwiXG5cdFtsb2dnZXJdPVwibG9nZ2VyXCJcbj5cbjwvZGVzY29wZT5cbiJdfQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { DescopeComponent } from '../descope/descope.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../types/types";
|
|
5
|
+
export class SignUpFlowComponent {
|
|
6
|
+
constructor(descopeConfig) {
|
|
7
|
+
this.success = new EventEmitter();
|
|
8
|
+
this.error = new EventEmitter();
|
|
9
|
+
this.projectId = descopeConfig.projectId;
|
|
10
|
+
}
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SignUpFlowComponent, deps: [{ token: i1.DescopeAuthConfig }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SignUpFlowComponent, isStandalone: true, selector: "descope-sign-up-flow", inputs: { locale: "locale", theme: "theme", tenant: "tenant", telemetryKey: "telemetryKey", redirectUrl: "redirectUrl", autoFocus: "autoFocus", debug: "debug", errorTransformer: "errorTransformer", logger: "logger" }, outputs: { success: "success", error: "error" }, ngImport: i0, template: "<descope\n\t(success)=\"success.emit()\"\n\t(error)=\"error.emit()\"\n\tflowId=\"sign-up\"\n\t[locale]=\"locale\"\n\t[theme]=\"theme\"\n\t[tenant]=\"tenant\"\n\t[telemetryKey]=\"telemetryKey\"\n\t[redirectUrl]=\"redirectUrl\"\n\t[autoFocus]=\"autoFocus\"\n\t[debug]=\"debug\"\n\t[errorTransformer]=\"errorTransformer\"\n\t[logger]=\"logger\"\n>\n</descope>\n", dependencies: [{ kind: "component", type: DescopeComponent, selector: "descope[flowId]", inputs: ["flowId", "locale", "theme", "tenant", "telemetryKey", "redirectUrl", "autoFocus", "debug", "errorTransformer", "logger"], outputs: ["success", "error"] }] }); }
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SignUpFlowComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{ selector: 'descope-sign-up-flow', standalone: true, imports: [DescopeComponent], template: "<descope\n\t(success)=\"success.emit()\"\n\t(error)=\"error.emit()\"\n\tflowId=\"sign-up\"\n\t[locale]=\"locale\"\n\t[theme]=\"theme\"\n\t[tenant]=\"tenant\"\n\t[telemetryKey]=\"telemetryKey\"\n\t[redirectUrl]=\"redirectUrl\"\n\t[autoFocus]=\"autoFocus\"\n\t[debug]=\"debug\"\n\t[errorTransformer]=\"errorTransformer\"\n\t[logger]=\"logger\"\n>\n</descope>\n" }]
|
|
17
|
+
}], ctorParameters: function () { return [{ type: i1.DescopeAuthConfig }]; }, propDecorators: { locale: [{
|
|
18
|
+
type: Input
|
|
19
|
+
}], theme: [{
|
|
20
|
+
type: Input
|
|
21
|
+
}], tenant: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}], telemetryKey: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], redirectUrl: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}], autoFocus: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}], debug: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], errorTransformer: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}], logger: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}], success: [{
|
|
36
|
+
type: Output
|
|
37
|
+
}], error: [{
|
|
38
|
+
type: Output
|
|
39
|
+
}] } });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi11cC1mbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9zaWduLXVwLWZsb3cvc2lnbi11cC1mbG93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9zaWduLXVwLWZsb3cvc2lnbi11cC1mbG93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQVNoRSxNQUFNLE9BQU8sbUJBQW1CO0lBaUIvQixZQUFZLGFBQWdDO1FBSGxDLFlBQU8sR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN2RCxVQUFLLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQzFDLENBQUM7OEdBbkJXLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDJWQ1hoQyx3V0FlQSw0Q0RQVyxnQkFBZ0I7OzJGQUdkLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDQyxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLENBQUM7d0dBTWxCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tICdAZGVzY29wZS93ZWItY29tcG9uZW50JztcbmltcG9ydCB7IERlc2NvcGVDb21wb25lbnQgfSBmcm9tICcuLi9kZXNjb3BlL2Rlc2NvcGUuY29tcG9uZW50JztcbmltcG9ydCB7IERlc2NvcGVBdXRoQ29uZmlnIH0gZnJvbSAnLi4vLi4vdHlwZXMvdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdkZXNjb3BlLXNpZ24tdXAtZmxvdycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtEZXNjb3BlQ29tcG9uZW50XSxcblx0dGVtcGxhdGVVcmw6ICcuL3NpZ24tdXAtZmxvdy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2lnblVwRmxvd0NvbXBvbmVudCB7XG5cdHByb2plY3RJZDogc3RyaW5nO1xuXG5cdEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nO1xuXHRASW5wdXQoKSB0aGVtZTogJ2xpZ2h0JyB8ICdkYXJrJyB8ICdvcyc7XG5cdEBJbnB1dCgpIHRlbmFudDogc3RyaW5nO1xuXHRASW5wdXQoKSB0ZWxlbWV0cnlLZXk6IHN0cmluZztcblx0QElucHV0KCkgcmVkaXJlY3RVcmw6IHN0cmluZztcblx0QElucHV0KCkgYXV0b0ZvY3VzOiB0cnVlIHwgZmFsc2UgfCAnc2tpcEZpcnN0U2NyZWVuJztcblxuXHRASW5wdXQoKSBkZWJ1ZzogYm9vbGVhbjtcblx0QElucHV0KCkgZXJyb3JUcmFuc2Zvcm1lcjogKGVycm9yOiB7IHRleHQ6IHN0cmluZzsgdHlwZTogc3RyaW5nIH0pID0+IHN0cmluZztcblx0QElucHV0KCkgbG9nZ2VyOiBJTG9nZ2VyO1xuXG5cdEBPdXRwdXQoKSBzdWNjZXNzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cdEBPdXRwdXQoKSBlcnJvcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG5cdGNvbnN0cnVjdG9yKGRlc2NvcGVDb25maWc6IERlc2NvcGVBdXRoQ29uZmlnKSB7XG5cdFx0dGhpcy5wcm9qZWN0SWQgPSBkZXNjb3BlQ29uZmlnLnByb2plY3RJZDtcblx0fVxufVxuIiwiPGRlc2NvcGVcblx0KHN1Y2Nlc3MpPVwic3VjY2Vzcy5lbWl0KClcIlxuXHQoZXJyb3IpPVwiZXJyb3IuZW1pdCgpXCJcblx0Zmxvd0lkPVwic2lnbi11cFwiXG5cdFtsb2NhbGVdPVwibG9jYWxlXCJcblx0W3RoZW1lXT1cInRoZW1lXCJcblx0W3RlbmFudF09XCJ0ZW5hbnRcIlxuXHRbdGVsZW1ldHJ5S2V5XT1cInRlbGVtZXRyeUtleVwiXG5cdFtyZWRpcmVjdFVybF09XCJyZWRpcmVjdFVybFwiXG5cdFthdXRvRm9jdXNdPVwiYXV0b0ZvY3VzXCJcblx0W2RlYnVnXT1cImRlYnVnXCJcblx0W2Vycm9yVHJhbnNmb3JtZXJdPVwiZXJyb3JUcmFuc2Zvcm1lclwiXG5cdFtsb2dnZXJdPVwibG9nZ2VyXCJcbj5cbjwvZGVzY29wZT5cbiJdfQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { DescopeComponent } from '../descope/descope.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../types/types";
|
|
5
|
+
export class SignUpOrInFlowComponent {
|
|
6
|
+
constructor(descopeConfig) {
|
|
7
|
+
this.success = new EventEmitter();
|
|
8
|
+
this.error = new EventEmitter();
|
|
9
|
+
this.projectId = descopeConfig.projectId;
|
|
10
|
+
}
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SignUpOrInFlowComponent, deps: [{ token: i1.DescopeAuthConfig }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SignUpOrInFlowComponent, isStandalone: true, selector: "descope-sign-up-or-in-flow", inputs: { locale: "locale", theme: "theme", tenant: "tenant", telemetryKey: "telemetryKey", redirectUrl: "redirectUrl", autoFocus: "autoFocus", debug: "debug", errorTransformer: "errorTransformer", logger: "logger" }, outputs: { success: "success", error: "error" }, ngImport: i0, template: "<descope\n\t(success)=\"success.emit()\"\n\t(error)=\"error.emit()\"\n\tflowId=\"sign-up-or-in\"\n\t[locale]=\"locale\"\n\t[theme]=\"theme\"\n\t[tenant]=\"tenant\"\n\t[telemetryKey]=\"telemetryKey\"\n\t[redirectUrl]=\"redirectUrl\"\n\t[autoFocus]=\"autoFocus\"\n\t[debug]=\"debug\"\n\t[errorTransformer]=\"errorTransformer\"\n\t[logger]=\"logger\"\n>\n</descope>\n", dependencies: [{ kind: "component", type: DescopeComponent, selector: "descope[flowId]", inputs: ["flowId", "locale", "theme", "tenant", "telemetryKey", "redirectUrl", "autoFocus", "debug", "errorTransformer", "logger"], outputs: ["success", "error"] }] }); }
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SignUpOrInFlowComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{ selector: 'descope-sign-up-or-in-flow', standalone: true, imports: [DescopeComponent], template: "<descope\n\t(success)=\"success.emit()\"\n\t(error)=\"error.emit()\"\n\tflowId=\"sign-up-or-in\"\n\t[locale]=\"locale\"\n\t[theme]=\"theme\"\n\t[tenant]=\"tenant\"\n\t[telemetryKey]=\"telemetryKey\"\n\t[redirectUrl]=\"redirectUrl\"\n\t[autoFocus]=\"autoFocus\"\n\t[debug]=\"debug\"\n\t[errorTransformer]=\"errorTransformer\"\n\t[logger]=\"logger\"\n>\n</descope>\n" }]
|
|
17
|
+
}], ctorParameters: function () { return [{ type: i1.DescopeAuthConfig }]; }, propDecorators: { locale: [{
|
|
18
|
+
type: Input
|
|
19
|
+
}], theme: [{
|
|
20
|
+
type: Input
|
|
21
|
+
}], tenant: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}], telemetryKey: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], redirectUrl: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}], autoFocus: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}], debug: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], errorTransformer: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}], logger: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}], success: [{
|
|
36
|
+
type: Output
|
|
37
|
+
}], error: [{
|
|
38
|
+
type: Output
|
|
39
|
+
}] } });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi11cC1vci1pbi1mbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9zaWduLXVwLW9yLWluLWZsb3cvc2lnbi11cC1vci1pbi1mbG93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9zaWduLXVwLW9yLWluLWZsb3cvc2lnbi11cC1vci1pbi1mbG93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQVNoRSxNQUFNLE9BQU8sdUJBQXVCO0lBaUJuQyxZQUFZLGFBQWdDO1FBSGxDLFlBQU8sR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN2RCxVQUFLLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQzFDLENBQUM7OEdBbkJXLHVCQUF1QjtrR0FBdkIsdUJBQXVCLGlXQ1hwQyw4V0FlQSw0Q0RQVyxnQkFBZ0I7OzJGQUdkLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDQyw0QkFBNEIsY0FDMUIsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLENBQUM7d0dBTWxCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tICdAZGVzY29wZS93ZWItY29tcG9uZW50JztcbmltcG9ydCB7IERlc2NvcGVDb21wb25lbnQgfSBmcm9tICcuLi9kZXNjb3BlL2Rlc2NvcGUuY29tcG9uZW50JztcbmltcG9ydCB7IERlc2NvcGVBdXRoQ29uZmlnIH0gZnJvbSAnLi4vLi4vdHlwZXMvdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdkZXNjb3BlLXNpZ24tdXAtb3ItaW4tZmxvdycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtEZXNjb3BlQ29tcG9uZW50XSxcblx0dGVtcGxhdGVVcmw6ICcuL3NpZ24tdXAtb3ItaW4tZmxvdy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2lnblVwT3JJbkZsb3dDb21wb25lbnQge1xuXHRwcm9qZWN0SWQ6IHN0cmluZztcblxuXHRASW5wdXQoKSBsb2NhbGU6IHN0cmluZztcblx0QElucHV0KCkgdGhlbWU6ICdsaWdodCcgfCAnZGFyaycgfCAnb3MnO1xuXHRASW5wdXQoKSB0ZW5hbnQ6IHN0cmluZztcblx0QElucHV0KCkgdGVsZW1ldHJ5S2V5OiBzdHJpbmc7XG5cdEBJbnB1dCgpIHJlZGlyZWN0VXJsOiBzdHJpbmc7XG5cdEBJbnB1dCgpIGF1dG9Gb2N1czogdHJ1ZSB8IGZhbHNlIHwgJ3NraXBGaXJzdFNjcmVlbic7XG5cblx0QElucHV0KCkgZGVidWc6IGJvb2xlYW47XG5cdEBJbnB1dCgpIGVycm9yVHJhbnNmb3JtZXI6IChlcnJvcjogeyB0ZXh0OiBzdHJpbmc7IHR5cGU6IHN0cmluZyB9KSA9PiBzdHJpbmc7XG5cdEBJbnB1dCgpIGxvZ2dlcjogSUxvZ2dlcjtcblxuXHRAT3V0cHV0KCkgc3VjY2VzczogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXHRAT3V0cHV0KCkgZXJyb3I6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuXHRjb25zdHJ1Y3RvcihkZXNjb3BlQ29uZmlnOiBEZXNjb3BlQXV0aENvbmZpZykge1xuXHRcdHRoaXMucHJvamVjdElkID0gZGVzY29wZUNvbmZpZy5wcm9qZWN0SWQ7XG5cdH1cbn1cbiIsIjxkZXNjb3BlXG5cdChzdWNjZXNzKT1cInN1Y2Nlc3MuZW1pdCgpXCJcblx0KGVycm9yKT1cImVycm9yLmVtaXQoKVwiXG5cdGZsb3dJZD1cInNpZ24tdXAtb3ItaW5cIlxuXHRbbG9jYWxlXT1cImxvY2FsZVwiXG5cdFt0aGVtZV09XCJ0aGVtZVwiXG5cdFt0ZW5hbnRdPVwidGVuYW50XCJcblx0W3RlbGVtZXRyeUtleV09XCJ0ZWxlbWV0cnlLZXlcIlxuXHRbcmVkaXJlY3RVcmxdPVwicmVkaXJlY3RVcmxcIlxuXHRbYXV0b0ZvY3VzXT1cImF1dG9Gb2N1c1wiXG5cdFtkZWJ1Z109XCJkZWJ1Z1wiXG5cdFtlcnJvclRyYW5zZm9ybWVyXT1cImVycm9yVHJhbnNmb3JtZXJcIlxuXHRbbG9nZ2VyXT1cImxvZ2dlclwiXG4+XG48L2Rlc2NvcGU+XG4iXX0=
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, NgModule, Optional, SkipSelf } from '@angular/core';
|
|
2
|
+
import { DescopeComponent } from './components/descope/descope.component';
|
|
3
|
+
import { SignInFlowComponent } from './components/sign-in-flow/sign-in-flow.component';
|
|
4
|
+
import { SignUpFlowComponent } from './components/sign-up-flow/sign-up-flow.component';
|
|
5
|
+
import { SignUpOrInFlowComponent } from './components/sign-up-or-in-flow/sign-up-or-in-flow.component';
|
|
6
|
+
import { DescopeAuthConfig } from './types/types';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class DescopeAuthModule {
|
|
9
|
+
constructor(parentModule) {
|
|
10
|
+
if (parentModule) {
|
|
11
|
+
throw new Error('DescopeAuthModule is already loaded. Import it only once');
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
static forRoot(config) {
|
|
15
|
+
return {
|
|
16
|
+
ngModule: DescopeAuthModule,
|
|
17
|
+
providers: [{ provide: DescopeAuthConfig, useValue: config }]
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DescopeAuthModule, deps: [{ token: DescopeAuthModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
21
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.9", ngImport: i0, type: DescopeAuthModule, imports: [DescopeComponent,
|
|
22
|
+
SignInFlowComponent,
|
|
23
|
+
SignUpFlowComponent,
|
|
24
|
+
SignUpOrInFlowComponent], exports: [DescopeComponent,
|
|
25
|
+
SignInFlowComponent,
|
|
26
|
+
SignUpFlowComponent,
|
|
27
|
+
SignUpOrInFlowComponent] }); }
|
|
28
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DescopeAuthModule }); }
|
|
29
|
+
}
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DescopeAuthModule, decorators: [{
|
|
31
|
+
type: NgModule,
|
|
32
|
+
args: [{
|
|
33
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
34
|
+
imports: [
|
|
35
|
+
DescopeComponent,
|
|
36
|
+
SignInFlowComponent,
|
|
37
|
+
SignUpFlowComponent,
|
|
38
|
+
SignUpOrInFlowComponent
|
|
39
|
+
],
|
|
40
|
+
exports: [
|
|
41
|
+
DescopeComponent,
|
|
42
|
+
SignInFlowComponent,
|
|
43
|
+
SignUpFlowComponent,
|
|
44
|
+
SignUpOrInFlowComponent
|
|
45
|
+
]
|
|
46
|
+
}]
|
|
47
|
+
}], ctorParameters: function () { return [{ type: DescopeAuthModule, decorators: [{
|
|
48
|
+
type: Optional
|
|
49
|
+
}, {
|
|
50
|
+
type: SkipSelf
|
|
51
|
+
}] }]; } });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY29wZS1hdXRoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvZGVzY29wZS1hdXRoLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sc0JBQXNCLEVBRXRCLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFpQmxELE1BQU0sT0FBTyxpQkFBaUI7SUFDN0IsWUFBb0MsWUFBZ0M7UUFDbkUsSUFBSSxZQUFZLEVBQUU7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FDZCwwREFBMEQsQ0FDMUQsQ0FBQztTQUNGO0lBQ0YsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQ2IsTUFBMEI7UUFFMUIsT0FBTztZQUNOLFFBQVEsRUFBRSxpQkFBaUI7WUFDM0IsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO1NBQzdELENBQUM7SUFDSCxDQUFDOzhHQWhCVyxpQkFBaUI7K0dBQWpCLGlCQUFpQixZQVo1QixnQkFBZ0I7WUFDaEIsbUJBQW1CO1lBQ25CLG1CQUFtQjtZQUNuQix1QkFBdUIsYUFHdkIsZ0JBQWdCO1lBQ2hCLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIsdUJBQXVCOytHQUdaLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFmN0IsUUFBUTttQkFBQztvQkFDVCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsT0FBTyxFQUFFO3dCQUNSLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLHVCQUF1QjtxQkFDdkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNSLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLHVCQUF1QjtxQkFDdkI7aUJBQ0Q7OzBCQUVhLFFBQVE7OzBCQUFJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRNb2R1bGVXaXRoUHJvdmlkZXJzLFxuXHROZ01vZHVsZSxcblx0T3B0aW9uYWwsXG5cdFNraXBTZWxmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVzY29wZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kZXNjb3BlL2Rlc2NvcGUuY29tcG9uZW50JztcbmltcG9ydCB7IFNpZ25JbkZsb3dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2lnbi1pbi1mbG93L3NpZ24taW4tZmxvdy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2lnblVwRmxvd0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zaWduLXVwLWZsb3cvc2lnbi11cC1mbG93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaWduVXBPckluRmxvd0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zaWduLXVwLW9yLWluLWZsb3cvc2lnbi11cC1vci1pbi1mbG93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZXNjb3BlQXV0aENvbmZpZyB9IGZyb20gJy4vdHlwZXMvdHlwZXMnO1xuXG5ATmdNb2R1bGUoe1xuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGltcG9ydHM6IFtcblx0XHREZXNjb3BlQ29tcG9uZW50LFxuXHRcdFNpZ25JbkZsb3dDb21wb25lbnQsXG5cdFx0U2lnblVwRmxvd0NvbXBvbmVudCxcblx0XHRTaWduVXBPckluRmxvd0NvbXBvbmVudFxuXHRdLFxuXHRleHBvcnRzOiBbXG5cdFx0RGVzY29wZUNvbXBvbmVudCxcblx0XHRTaWduSW5GbG93Q29tcG9uZW50LFxuXHRcdFNpZ25VcEZsb3dDb21wb25lbnQsXG5cdFx0U2lnblVwT3JJbkZsb3dDb21wb25lbnRcblx0XVxufSlcbmV4cG9ydCBjbGFzcyBEZXNjb3BlQXV0aE1vZHVsZSB7XG5cdGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHBhcmVudE1vZHVsZT86IERlc2NvcGVBdXRoTW9kdWxlKSB7XG5cdFx0aWYgKHBhcmVudE1vZHVsZSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHQnRGVzY29wZUF1dGhNb2R1bGUgaXMgYWxyZWFkeSBsb2FkZWQuIEltcG9ydCBpdCBvbmx5IG9uY2UnXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdHN0YXRpYyBmb3JSb290KFxuXHRcdGNvbmZpZz86IERlc2NvcGVBdXRoQ29uZmlnXG5cdCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RGVzY29wZUF1dGhNb2R1bGU+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0bmdNb2R1bGU6IERlc2NvcGVBdXRoTW9kdWxlLFxuXHRcdFx0cHJvdmlkZXJzOiBbeyBwcm92aWRlOiBEZXNjb3BlQXV0aENvbmZpZywgdXNlVmFsdWU6IGNvbmZpZyB9XVxuXHRcdH07XG5cdH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { DescopeAuthService } from './descope-auth.service';
|
|
3
|
+
import { Router } from '@angular/router';
|
|
4
|
+
import { from, of } from 'rxjs';
|
|
5
|
+
export const descopeAuthGuard = (route) => {
|
|
6
|
+
const authService = inject(DescopeAuthService);
|
|
7
|
+
const router = inject(Router);
|
|
8
|
+
const fallbackUrl = route.data['descopeFallbackUrl'];
|
|
9
|
+
const isAuthenticated = authService.isAuthenticated();
|
|
10
|
+
if (!isAuthenticated && !!fallbackUrl) {
|
|
11
|
+
return from(router.navigate([fallbackUrl]));
|
|
12
|
+
}
|
|
13
|
+
return of(isAuthenticated);
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY29wZS1hdXRoLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1zZGsvc3JjL2xpYi9zZXJ2aWNlcy9kZXNjb3BlLWF1dGguZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQTBCLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBNkIsRUFBRSxFQUFFO0lBQ2pFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDckQsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3RELElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRTtRQUN0QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzVDO0lBQ0QsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERlc2NvcGVBdXRoU2VydmljZSB9IGZyb20gJy4vZGVzY29wZS1hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZyb20sIG9mIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjb25zdCBkZXNjb3BlQXV0aEd1YXJkID0gKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSA9PiB7XG5cdGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KERlc2NvcGVBdXRoU2VydmljZSk7XG5cdGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXHRjb25zdCBmYWxsYmFja1VybCA9IHJvdXRlLmRhdGFbJ2Rlc2NvcGVGYWxsYmFja1VybCddO1xuXHRjb25zdCBpc0F1dGhlbnRpY2F0ZWQgPSBhdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKTtcblx0aWYgKCFpc0F1dGhlbnRpY2F0ZWQgJiYgISFmYWxsYmFja1VybCkge1xuXHRcdHJldHVybiBmcm9tKHJvdXRlci5uYXZpZ2F0ZShbZmFsbGJhY2tVcmxdKSk7XG5cdH1cblx0cmV0dXJuIG9mKGlzQXV0aGVudGljYXRlZCk7XG59O1xuIl19
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import createSdk from '@descope/web-js-sdk';
|
|
3
|
+
import { BehaviorSubject, finalize, tap } from 'rxjs';
|
|
4
|
+
import { observabilify } from '../utils/helpers';
|
|
5
|
+
import { baseHeaders, isBrowser } from '../utils/constants';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../types/types";
|
|
8
|
+
export class DescopeAuthService {
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.descopeSdk = observabilify(createSdk({
|
|
11
|
+
...config,
|
|
12
|
+
persistTokens: isBrowser(),
|
|
13
|
+
autoRefresh: isBrowser(),
|
|
14
|
+
baseHeaders
|
|
15
|
+
}));
|
|
16
|
+
this.sessionSubject = new BehaviorSubject({
|
|
17
|
+
isAuthenticated: false,
|
|
18
|
+
isSessionLoading: false,
|
|
19
|
+
sessionToken: ''
|
|
20
|
+
});
|
|
21
|
+
this.session$ = this.sessionSubject.asObservable();
|
|
22
|
+
this.userSubject = new BehaviorSubject({
|
|
23
|
+
isUserLoading: false
|
|
24
|
+
});
|
|
25
|
+
this.user$ = this.userSubject.asObservable();
|
|
26
|
+
this.descopeSdk.onSessionTokenChange(this.setSession.bind(this));
|
|
27
|
+
this.descopeSdk.onUserChange(this.setUser.bind(this));
|
|
28
|
+
}
|
|
29
|
+
refreshSession() {
|
|
30
|
+
const beforeRefreshSession = this.sessionSubject.value;
|
|
31
|
+
this.sessionSubject.next({
|
|
32
|
+
...beforeRefreshSession,
|
|
33
|
+
isSessionLoading: true
|
|
34
|
+
});
|
|
35
|
+
return this.descopeSdk.refresh().pipe(tap((data) => {
|
|
36
|
+
const afterRequestSession = this.sessionSubject.value;
|
|
37
|
+
if (data.ok && data.data) {
|
|
38
|
+
this.sessionSubject.next({
|
|
39
|
+
...afterRequestSession,
|
|
40
|
+
sessionToken: data.data.sessionJwt,
|
|
41
|
+
isAuthenticated: !!data.data.sessionJwt
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.sessionSubject.next({
|
|
46
|
+
...afterRequestSession,
|
|
47
|
+
sessionToken: '',
|
|
48
|
+
isAuthenticated: false
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}), finalize(() => {
|
|
52
|
+
const afterRefreshSession = this.sessionSubject.value;
|
|
53
|
+
this.sessionSubject.next({
|
|
54
|
+
...afterRefreshSession,
|
|
55
|
+
isSessionLoading: false
|
|
56
|
+
});
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
refreshUser() {
|
|
60
|
+
const beforeRefreshUser = this.userSubject.value;
|
|
61
|
+
this.userSubject.next({
|
|
62
|
+
...beforeRefreshUser,
|
|
63
|
+
isUserLoading: true
|
|
64
|
+
});
|
|
65
|
+
return this.descopeSdk.me().pipe(tap((data) => {
|
|
66
|
+
const afterRequestUser = this.userSubject.value;
|
|
67
|
+
if (data.data) {
|
|
68
|
+
this.userSubject.next({
|
|
69
|
+
...afterRequestUser,
|
|
70
|
+
user: {
|
|
71
|
+
...data.data
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}), finalize(() => {
|
|
76
|
+
const afterRefreshUser = this.userSubject.value;
|
|
77
|
+
this.userSubject.next({
|
|
78
|
+
...afterRefreshUser,
|
|
79
|
+
isUserLoading: false
|
|
80
|
+
});
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
getSessionToken() {
|
|
84
|
+
if (isBrowser()) {
|
|
85
|
+
return this.descopeSdk.getSessionToken();
|
|
86
|
+
}
|
|
87
|
+
console.warn('Get session token is not supported in SSR');
|
|
88
|
+
return '';
|
|
89
|
+
}
|
|
90
|
+
getRefreshToken() {
|
|
91
|
+
if (isBrowser()) {
|
|
92
|
+
return this.descopeSdk.getRefreshToken();
|
|
93
|
+
}
|
|
94
|
+
this.descopeSdk.getJwtPermissions;
|
|
95
|
+
console.warn('Get refresh token is not supported in SSR');
|
|
96
|
+
return '';
|
|
97
|
+
}
|
|
98
|
+
getJwtPermissions(token = this.getSessionToken(), tenant) {
|
|
99
|
+
if (token === null) {
|
|
100
|
+
console.error('Could not get JWT Permissions - not authenticated');
|
|
101
|
+
return [];
|
|
102
|
+
}
|
|
103
|
+
return this.descopeSdk.getJwtPermissions(token, tenant);
|
|
104
|
+
}
|
|
105
|
+
getJwtRoles(token = this.getSessionToken(), tenant) {
|
|
106
|
+
if (token === null) {
|
|
107
|
+
console.error('Could not get JWT Roles - not authenticated');
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
110
|
+
return this.descopeSdk.getJwtRoles(token, tenant);
|
|
111
|
+
}
|
|
112
|
+
isAuthenticated() {
|
|
113
|
+
return this.sessionSubject.value.isAuthenticated;
|
|
114
|
+
}
|
|
115
|
+
setSession(sessionToken) {
|
|
116
|
+
const currentSession = this.sessionSubject.value;
|
|
117
|
+
this.sessionSubject.next({
|
|
118
|
+
sessionToken,
|
|
119
|
+
isAuthenticated: !!sessionToken,
|
|
120
|
+
isSessionLoading: currentSession.isSessionLoading
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
setUser(user) {
|
|
124
|
+
const currentUser = this.userSubject.value;
|
|
125
|
+
this.userSubject.next({
|
|
126
|
+
isUserLoading: currentUser.isUserLoading,
|
|
127
|
+
user
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DescopeAuthService, deps: [{ token: i1.DescopeAuthConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
131
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DescopeAuthService, providedIn: 'root' }); }
|
|
132
|
+
}
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DescopeAuthService, decorators: [{
|
|
134
|
+
type: Injectable,
|
|
135
|
+
args: [{
|
|
136
|
+
providedIn: 'root'
|
|
137
|
+
}]
|
|
138
|
+
}], ctorParameters: function () { return [{ type: i1.DescopeAuthConfig }]; } });
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY29wZS1hdXRoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXNkay9zcmMvbGliL3NlcnZpY2VzL2Rlc2NvcGUtYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQWtCLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBaUI1RCxNQUFNLE9BQU8sa0JBQWtCO0lBTzlCLFlBQVksTUFBeUI7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQzlCLFNBQVMsQ0FBQztZQUNULEdBQUcsTUFBTTtZQUNULGFBQWEsRUFBRSxTQUFTLEVBQVU7WUFDbEMsV0FBVyxFQUFFLFNBQVMsRUFBVTtZQUNoQyxXQUFXO1NBQ1gsQ0FBQyxDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksZUFBZSxDQUFpQjtZQUN6RCxlQUFlLEVBQUUsS0FBSztZQUN0QixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLFlBQVksRUFBRSxFQUFFO1NBQ2hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksZUFBZSxDQUFjO1lBQ25ELGFBQWEsRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZ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LElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3hCLFlBQVk7WUFDWixlQUFlLEVBQUUsQ0FBQyxDQUFDLFlBQVk7WUFDL0IsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLGdCQUFnQjtTQUNqRCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sT0FBTyxDQUFDLElBQWtCO1FBQ2pDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3JCLGFBQWEsRUFBRSxXQUFXLENBQUMsYUFBYTtZQUN4QyxJQUFJO1NBQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0F4Slcsa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FGbEIsTUFBTTs7MkZBRU4sa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgVXNlclJlc3BvbnNlIH0gZnJvbSAnQGRlc2NvcGUvd2ViLWpzLXNkayc7XG5pbXBvcnQgY3JlYXRlU2RrIGZyb20gJ0BkZXNjb3BlL3dlYi1qcy1zZGsnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaW5hbGl6ZSwgT2JzZXJ2YWJsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBvYnNlcnZhYmlsaWZ5LCBPYnNlcnZhYmxlZmllZCB9IGZyb20gJy4uL3V0aWxzL2hlbHBlcnMnO1xuaW1wb3J0IHsgYmFzZUhlYWRlcnMsIGlzQnJvd3NlciB9IGZyb20gJy4uL3V0aWxzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBEZXNjb3BlQXV0aENvbmZpZyB9IGZyb20gJy4uL3R5cGVzL3R5cGVzJztcblxudHlwZSBEZXNjb3BlU0RLID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlU2RrPjtcbnR5cGUgQW5ndWxhckRlc2NvcGVTREsgPSBPYnNlcnZhYmxlZmllZDxEZXNjb3BlU0RLPjtcblxuZXhwb3J0IGludGVyZmFjZSBEZXNjb3BlU2Vzc2lvbiB7XG5cdGlzQXV0aGVudGljYXRlZDogYm9vbGVhbjtcblx0aXNTZXNzaW9uTG9hZGluZzogYm9vbGVhbjtcblx0c2Vzc2lvblRva2VuOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgdHlwZSBEZXNjb3BlVXNlciA9IHsgdXNlcj86IFVzZXJSZXNwb25zZTsgaXNVc2VyTG9hZGluZzogYm9vbGVhbiB9O1xuXG5ASW5qZWN0YWJsZSh7XG5cdHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEZXNjb3BlQXV0aFNlcnZpY2Uge1xuXHRwdWJsaWMgZGVzY29wZVNkazogQW5ndWxhckRlc2NvcGVTREs7XG5cdHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxEZXNjb3BlU2Vzc2lvbj47XG5cdHByaXZhdGUgcmVhZG9ubHkgdXNlclN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxEZXNjb3BlVXNlcj47XG5cdHJlYWRvbmx5IHNlc3Npb24kOiBPYnNlcnZhYmxlPERlc2NvcGVTZXNzaW9uPjtcblx0cmVhZG9ubHkgdXNlciQ6IE9ic2VydmFibGU8RGVzY29wZVVzZXI+O1xuXG5cdGNvbnN0cnVjdG9yKGNvbmZpZzogRGVzY29wZUF1dGhDb25maWcpIHtcblx0XHR0aGlzLmRlc2NvcGVTZGsgPSBvYnNlcnZhYmlsaWZ5PERlc2NvcGVTREs+KFxuXHRcdFx0Y3JlYXRlU2RrKHtcblx0XHRcdFx0Li4uY29uZmlnLFxuXHRcdFx0XHRwZXJzaXN0VG9rZW5zOiBpc0Jyb3dzZXIoKSBhcyB0cnVlLFxuXHRcdFx0XHRhdXRvUmVmcmVzaDogaXNCcm93c2VyKCkgYXMgdHJ1ZSxcblx0XHRcdFx0YmFzZUhlYWRlcnNcblx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdHRoaXMuc2Vzc2lvblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERlc2NvcGVTZXNzaW9uPih7XG5cdFx0XHRpc0F1dGhlbnRpY2F0ZWQ6IGZhbHNlLFxuXHRcdFx0aXNTZXNzaW9uTG9hZGluZzogZmFsc2UsXG5cdFx0XHRzZXNzaW9uVG9rZW46ICcnXG5cdFx0fSk7XG5cdFx0dGhpcy5zZXNzaW9uJCA9IHRoaXMuc2Vzc2lvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cdFx0dGhpcy51c2VyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGVzY29wZVVzZXI+KHtcblx0XHRcdGlzVXNlckxvYWRpbmc6IGZhbHNlXG5cdFx0fSk7XG5cdFx0dGhpcy51c2VyJCA9IHRoaXMudXNlclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cdFx0dGhpcy5kZXNjb3BlU2RrLm9uU2Vzc2lvblRva2VuQ2hhbmdlKHRoaXMuc2V0U2Vzc2lvbi5iaW5kKHRoaXMpKTtcblx0XHR0aGlzLmRlc2NvcGVTZGsub25Vc2VyQ2hhbmdlKHRoaXMuc2V0VXNlci5iaW5kKHRoaXMpKTtcblx0fVxuXG5cdHJlZnJlc2hTZXNzaW9uKCkge1xuXHRcdGNvbnN0IGJlZm9yZVJlZnJlc2hTZXNzaW9uID0gdGhpcy5zZXNzaW9uU3ViamVjdC52YWx1ZTtcblx0XHR0aGlzLnNlc3Npb25TdWJqZWN0Lm5leHQoe1xuXHRcdFx0Li4uYmVmb3JlUmVmcmVzaFNlc3Npb24sXG5cdFx0XHRpc1Nlc3Npb25Mb2FkaW5nOiB0cnVlXG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXMuZGVzY29wZVNkay5yZWZyZXNoKCkucGlwZShcblx0XHRcdHRhcCgoZGF0YSkgPT4ge1xuXHRcdFx0XHRjb25zdCBhZnRlclJlcXVlc3RTZXNzaW9uID0gdGhpcy5zZXNzaW9uU3ViamVjdC52YWx1ZTtcblx0XHRcdFx0aWYgKGRhdGEub2sgJiYgZGF0YS5kYXRhKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXNzaW9uU3ViamVjdC5uZXh0KHtcblx0XHRcdFx0XHRcdC4uLmFmdGVyUmVxdWVzdFNlc3Npb24sXG5cdFx0XHRcdFx0XHRzZXNzaW9uVG9rZW46IGRhdGEuZGF0YS5zZXNzaW9uSnd0LFxuXHRcdFx0XHRcdFx0aXNBdXRoZW50aWNhdGVkOiAhIWRhdGEuZGF0YS5zZXNzaW9uSnd0XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5zZXNzaW9uU3ViamVjdC5uZXh0KHtcblx0XHRcdFx0XHRcdC4uLmFmdGVyUmVxdWVzdFNlc3Npb24sXG5cdFx0XHRcdFx0XHRzZXNzaW9uVG9rZW46ICcnLFxuXHRcdFx0XHRcdFx0aXNBdXRoZW50aWNhdGVkOiBmYWxzZVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcblx0XHRcdFx0Y29uc3QgYWZ0ZXJSZWZyZXNoU2Vzc2lvbiA9IHRoaXMuc2Vzc2lvblN1YmplY3QudmFsdWU7XG5cdFx0XHRcdHRoaXMuc2Vzc2lvblN1YmplY3QubmV4dCh7XG5cdFx0XHRcdFx0Li4uYWZ0ZXJSZWZyZXNoU2Vzc2lvbixcblx0XHRcdFx0XHRpc1Nlc3Npb25Mb2FkaW5nOiBmYWxzZVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXG5cdHJlZnJlc2hVc2VyKCkge1xuXHRcdGNvbnN0IGJlZm9yZVJlZnJlc2hVc2VyID0gdGhpcy51c2VyU3ViamVjdC52YWx1ZTtcblx0XHR0aGlzLnVzZXJTdWJqZWN0Lm5leHQoe1xuXHRcdFx0Li4uYmVmb3JlUmVmcmVzaFVzZXIsXG5cdFx0XHRpc1VzZXJMb2FkaW5nOiB0cnVlXG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXMuZGVzY29wZVNkay5tZSgpLnBpcGUoXG5cdFx0XHR0YXAoKGRhdGEpID0+IHtcblx0XHRcdFx0Y29uc3QgYWZ0ZXJSZXF1ZXN0VXNlciA9IHRoaXMudXNlclN1YmplY3QudmFsdWU7XG5cdFx0XHRcdGlmIChkYXRhLmRhdGEpIHtcblx0XHRcdFx0XHR0aGlzLnVzZXJTdWJqZWN0Lm5leHQoe1xuXHRcdFx0XHRcdFx0Li4uYWZ0ZXJSZXF1ZXN0VXNlcixcblx0XHRcdFx0XHRcdHVzZXI6IHtcblx0XHRcdFx0XHRcdFx0Li4uZGF0YS5kYXRhXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBhZnRlclJlZnJlc2hVc2VyID0gdGhpcy51c2VyU3ViamVjdC52YWx1ZTtcblx0XHRcdFx0dGhpcy51c2VyU3ViamVjdC5uZXh0KHtcblx0XHRcdFx0XHQuLi5hZnRlclJlZnJlc2hVc2VyLFxuXHRcdFx0XHRcdGlzVXNlckxvYWRpbmc6IGZhbHNlXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHQpO1xuXHR9XG5cblx0Z2V0U2Vzc2lvblRva2VuKCkge1xuXHRcdGlmIChpc0Jyb3dzZXIoKSkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0dGhpcy5kZXNjb3BlU2RrIGFzIEFuZ3VsYXJEZXNjb3BlU0RLICYge1xuXHRcdFx0XHRcdGdldFNlc3Npb25Ub2tlbjogKCkgPT4gc3RyaW5nIHwgbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0KS5nZXRTZXNzaW9uVG9rZW4oKTtcblx0XHR9XG5cdFx0Y29uc29sZS53YXJuKCdHZXQgc2Vzc2lvbiB0b2tlbiBpcyBub3Qgc3VwcG9ydGVkIGluIFNTUicpO1xuXHRcdHJldHVybiAnJztcblx0fVxuXG5cdGdldFJlZnJlc2hUb2tlbigpIHtcblx0XHRpZiAoaXNCcm93c2VyKCkpIHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdHRoaXMuZGVzY29wZVNkayBhcyBBbmd1bGFyRGVzY29wZVNESyAmIHtcblx0XHRcdFx0XHRnZXRSZWZyZXNoVG9rZW46ICgpID0+IHN0cmluZyB8IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdCkuZ2V0UmVmcmVzaFRva2VuKCk7XG5cdFx0fVxuXHRcdHRoaXMuZGVzY29wZVNkay5nZXRKd3RQZXJtaXNzaW9ucztcblx0XHRjb25zb2xlLndhcm4oJ0dldCByZWZyZXNoIHRva2VuIGlzIG5vdCBzdXBwb3J0ZWQgaW4gU1NSJyk7XG5cdFx0cmV0dXJuICcnO1xuXHR9XG5cblx0Z2V0Snd0UGVybWlzc2lvbnModG9rZW4gPSB0aGlzLmdldFNlc3Npb25Ub2tlbigpLCB0ZW5hbnQ/OiBzdHJpbmcpIHtcblx0XHRpZiAodG9rZW4gPT09IG51bGwpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCBnZXQgSldUIFBlcm1pc3Npb25zIC0gbm90IGF1dGhlbnRpY2F0ZWQnKTtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZGVzY29wZVNkay5nZXRKd3RQZXJtaXNzaW9ucyh0b2tlbiwgdGVuYW50KTtcblx0fVxuXG5cdGdldEp3dFJvbGVzKHRva2VuID0gdGhpcy5nZXRTZXNzaW9uVG9rZW4oKSwgdGVuYW50Pzogc3RyaW5nKSB7XG5cdFx0aWYgKHRva2VuID09PSBudWxsKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgZ2V0IEpXVCBSb2xlcyAtIG5vdCBhdXRoZW50aWNhdGVkJyk7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmRlc2NvcGVTZGsuZ2V0Snd0Um9sZXModG9rZW4sIHRlbmFudCk7XG5cdH1cblxuXHRpc0F1dGhlbnRpY2F0ZWQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc2Vzc2lvblN1YmplY3QudmFsdWUuaXNBdXRoZW50aWNhdGVkO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRTZXNzaW9uKHNlc3Npb25Ub2tlbjogc3RyaW5nIHwgbnVsbCkge1xuXHRcdGNvbnN0IGN1cnJlbnRTZXNzaW9uID0gdGhpcy5zZXNzaW9uU3ViamVjdC52YWx1ZTtcblx0XHR0aGlzLnNlc3Npb25TdWJqZWN0Lm5leHQoe1xuXHRcdFx0c2Vzc2lvblRva2VuLFxuXHRcdFx0aXNBdXRoZW50aWNhdGVkOiAhIXNlc3Npb25Ub2tlbixcblx0XHRcdGlzU2Vzc2lvbkxvYWRpbmc6IGN1cnJlbnRTZXNzaW9uLmlzU2Vzc2lvbkxvYWRpbmdcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgc2V0VXNlcih1c2VyOiBVc2VyUmVzcG9uc2UpIHtcblx0XHRjb25zdCBjdXJyZW50VXNlciA9IHRoaXMudXNlclN1YmplY3QudmFsdWU7XG5cdFx0dGhpcy51c2VyU3ViamVjdC5uZXh0KHtcblx0XHRcdGlzVXNlckxvYWRpbmc6IGN1cnJlbnRVc2VyLmlzVXNlckxvYWRpbmcsXG5cdFx0XHR1c2VyXG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { throwError } from 'rxjs';
|
|
3
|
+
import { catchError, switchMap } from 'rxjs/operators';
|
|
4
|
+
import { DescopeAuthService } from './descope-auth.service';
|
|
5
|
+
import { DescopeAuthConfig } from '../types/types';
|
|
6
|
+
export const descopeInterceptor = (request, next) => {
|
|
7
|
+
const config = inject(DescopeAuthConfig);
|
|
8
|
+
const authService = inject(DescopeAuthService);
|
|
9
|
+
function refreshAndRetry(request, next, error) {
|
|
10
|
+
return authService.refreshSession().pipe(switchMap((refreshed) => {
|
|
11
|
+
if (refreshed.ok && refreshed.data) {
|
|
12
|
+
const requestWithRefreshedToken = addTokenToRequest(request, refreshed.data?.sessionJwt);
|
|
13
|
+
return next(requestWithRefreshedToken);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
return throwError(() => error ?? new Error('Could not refresh session!'));
|
|
17
|
+
}
|
|
18
|
+
}));
|
|
19
|
+
}
|
|
20
|
+
function shouldIntercept(request) {
|
|
21
|
+
return ((config.pathsToIntercept?.length === 0 ||
|
|
22
|
+
config.pathsToIntercept?.some((path) => request.url.includes(path))) ??
|
|
23
|
+
true);
|
|
24
|
+
}
|
|
25
|
+
function addTokenToRequest(request, token) {
|
|
26
|
+
return request.clone({
|
|
27
|
+
setHeaders: {
|
|
28
|
+
Authorization: `Bearer ${token}`
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
if (shouldIntercept(request)) {
|
|
33
|
+
const token = authService.getSessionToken();
|
|
34
|
+
if (!token) {
|
|
35
|
+
return refreshAndRetry(request, next);
|
|
36
|
+
}
|
|
37
|
+
const requestWithToken = addTokenToRequest(request, token);
|
|
38
|
+
return next(requestWithToken).pipe(catchError((error) => {
|
|
39
|
+
if (error.status === 401 || error.status === 403) {
|
|
40
|
+
return refreshAndRetry(request, next, error);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
return throwError(() => error);
|
|
44
|
+
}
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
return next(request);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY29wZS5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvc2VydmljZXMvZGVzY29wZS5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBc0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDdEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDekMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFL0MsU0FBUyxlQUFlLENBQ3ZCLE9BQTZCLEVBQzdCLElBQW1CLEVBQ25CLEtBQXlCO1FBRXpCLE9BQU8sV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FDdkMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxTQUFTLENBQUMsRUFBRSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ25DLE1BQU0seUJBQXlCLEdBQUcsaUJBQWlCLENBQ2xELE9BQU8sRUFDUCxTQUFTLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FDMUIsQ0FBQztnQkFDRixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNOLE9BQU8sVUFBVSxDQUNoQixHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FDdEQsQ0FBQzthQUNGO1FBQ0YsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLGVBQWUsQ0FBQyxPQUE2QjtRQUNyRCxPQUFPLENBQ04sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxLQUFLLENBQUM7WUFDckMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLGlCQUFpQixDQUN6QixPQUE2QixFQUM3QixLQUFhO1FBRWIsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ3BCLFVBQVUsRUFBRTtnQkFDWCxhQUFhLEVBQUUsVUFBVSxLQUFLLEVBQUU7YUFDaEM7U0FDRCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDN0IsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDWCxPQUFPLGVBQWUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdEM7UUFDRCxNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FDakMsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFO1lBQ3ZDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7Z0JBQ2pELE9BQU8sZUFBZSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDN0M7aUJBQU07Z0JBQ04sT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDL0I7UUFDRixDQUFDLENBQUMsQ0FDRixDQUFDO0tBQ0Y7U0FBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3JCO0FBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuXHRIdHRwRXJyb3JSZXNwb25zZSxcblx0SHR0cEhhbmRsZXJGbixcblx0SHR0cEludGVyY2VwdG9yRm4sXG5cdEh0dHBSZXF1ZXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERlc2NvcGVBdXRoU2VydmljZSB9IGZyb20gJy4vZGVzY29wZS1hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGVzY29wZUF1dGhDb25maWcgfSBmcm9tICcuLi90eXBlcy90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBkZXNjb3BlSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcXVlc3QsIG5leHQpID0+IHtcblx0Y29uc3QgY29uZmlnID0gaW5qZWN0KERlc2NvcGVBdXRoQ29uZmlnKTtcblx0Y29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoRGVzY29wZUF1dGhTZXJ2aWNlKTtcblxuXHRmdW5jdGlvbiByZWZyZXNoQW5kUmV0cnkoXG5cdFx0cmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sXG5cdFx0bmV4dDogSHR0cEhhbmRsZXJGbixcblx0XHRlcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlXG5cdCkge1xuXHRcdHJldHVybiBhdXRoU2VydmljZS5yZWZyZXNoU2Vzc2lvbigpLnBpcGUoXG5cdFx0XHRzd2l0Y2hNYXAoKHJlZnJlc2hlZCkgPT4ge1xuXHRcdFx0XHRpZiAocmVmcmVzaGVkLm9rICYmIHJlZnJlc2hlZC5kYXRhKSB7XG5cdFx0XHRcdFx0Y29uc3QgcmVxdWVzdFdpdGhSZWZyZXNoZWRUb2tlbiA9IGFkZFRva2VuVG9SZXF1ZXN0KFxuXHRcdFx0XHRcdFx0cmVxdWVzdCxcblx0XHRcdFx0XHRcdHJlZnJlc2hlZC5kYXRhPy5zZXNzaW9uSnd0XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRyZXR1cm4gbmV4dChyZXF1ZXN0V2l0aFJlZnJlc2hlZFRva2VuKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gdGhyb3dFcnJvcihcblx0XHRcdFx0XHRcdCgpID0+IGVycm9yID8/IG5ldyBFcnJvcignQ291bGQgbm90IHJlZnJlc2ggc2Vzc2lvbiEnKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXG5cdGZ1bmN0aW9uIHNob3VsZEludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDx1bmtub3duPik6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAoXG5cdFx0XHQoY29uZmlnLnBhdGhzVG9JbnRlcmNlcHQ/Lmxlbmd0aCA9PT0gMCB8fFxuXHRcdFx0XHRjb25maWcucGF0aHNUb0ludGVyY2VwdD8uc29tZSgocGF0aCkgPT4gcmVxdWVzdC51cmwuaW5jbHVkZXMocGF0aCkpKSA/P1xuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cdH1cblxuXHRmdW5jdGlvbiBhZGRUb2tlblRvUmVxdWVzdChcblx0XHRyZXF1ZXN0OiBIdHRwUmVxdWVzdDx1bmtub3duPixcblx0XHR0b2tlbjogc3RyaW5nXG5cdCk6IEh0dHBSZXF1ZXN0PHVua25vd24+IHtcblx0XHRyZXR1cm4gcmVxdWVzdC5jbG9uZSh7XG5cdFx0XHRzZXRIZWFkZXJzOiB7XG5cdFx0XHRcdEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gXG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRpZiAoc2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QpKSB7XG5cdFx0Y29uc3QgdG9rZW4gPSBhdXRoU2VydmljZS5nZXRTZXNzaW9uVG9rZW4oKTtcblx0XHRpZiAoIXRva2VuKSB7XG5cdFx0XHRyZXR1cm4gcmVmcmVzaEFuZFJldHJ5KHJlcXVlc3QsIG5leHQpO1xuXHRcdH1cblx0XHRjb25zdCByZXF1ZXN0V2l0aFRva2VuID0gYWRkVG9rZW5Ub1JlcXVlc3QocmVxdWVzdCwgdG9rZW4pO1xuXHRcdHJldHVybiBuZXh0KHJlcXVlc3RXaXRoVG9rZW4pLnBpcGUoXG5cdFx0XHRjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcblx0XHRcdFx0aWYgKGVycm9yLnN0YXR1cyA9PT0gNDAxIHx8IGVycm9yLnN0YXR1cyA9PT0gNDAzKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJlZnJlc2hBbmRSZXRyeShyZXF1ZXN0LCBuZXh0LCBlcnJvcik7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdCk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIG5leHQocmVxdWVzdCk7XG5cdH1cbn07XG4iXX0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export class DescopeAuthConfig {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.projectId = '';
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXNkay9zcmMvbGliL3R5cGVzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxpQkFBaUI7SUFBOUI7UUFDQyxjQUFTLEdBQUcsRUFBRSxDQUFDO0lBSWhCLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElMb2dnZXIgfSBmcm9tICdAZGVzY29wZS93ZWItY29tcG9uZW50JztcblxuZXhwb3J0IGNsYXNzIERlc2NvcGVBdXRoQ29uZmlnIHtcblx0cHJvamVjdElkID0gJyc7XG5cdGJhc2VVcmw/OiBzdHJpbmc7XG5cdHNlc3Npb25Ub2tlblZpYUNvb2tpZT86IGJvb2xlYW47XG5cdHBhdGhzVG9JbnRlcmNlcHQ/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IHR5cGUgeyBJTG9nZ2VyIH07XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { environment } from '../../environment';
|
|
2
|
+
export const baseHeaders = {
|
|
3
|
+
'x-descope-sdk-name': 'angular',
|
|
4
|
+
'x-descope-sdk-version': environment.buildVersion
|
|
5
|
+
};
|
|
6
|
+
export const isBrowser = () => typeof window !== 'undefined';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1zZGsvc3JjL2xpYi91dGlscy9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUMxQixvQkFBb0IsRUFBRSxTQUFTO0lBQy9CLHVCQUF1QixFQUFFLFdBQVcsQ0FBQyxZQUFZO0NBQ2pELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5cbmV4cG9ydCBjb25zdCBiYXNlSGVhZGVycyA9IHtcblx0J3gtZGVzY29wZS1zZGstbmFtZSc6ICdhbmd1bGFyJyxcblx0J3gtZGVzY29wZS1zZGstdmVyc2lvbic6IGVudmlyb25tZW50LmJ1aWxkVmVyc2lvblxufTtcblxuZXhwb3J0IGNvbnN0IGlzQnJvd3NlciA9ICgpID0+IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xuIl19
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { from } from 'rxjs';
|
|
2
|
+
export function observabilify(value) {
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
|
+
const observableValue = {};
|
|
5
|
+
for (const key in value) {
|
|
6
|
+
if (typeof value[key] === 'function') {
|
|
7
|
+
const fn = value[key];
|
|
8
|
+
observableValue[key] = (...args) => {
|
|
9
|
+
const fnResult = fn(...args);
|
|
10
|
+
if (fnResult instanceof Promise) {
|
|
11
|
+
return from(fnResult);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
return fnResult;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
else if (typeof value[key] === 'object' && value[key] !== null) {
|
|
19
|
+
observableValue[key] = observabilify(value[key]);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
observableValue[key] = value[key];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return observableValue;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvdXRpbHMvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBWXhDLE1BQU0sVUFBVSxhQUFhLENBQUksS0FBUTtJQUN4Qyx1REFBdUQ7SUFDdkQsTUFBTSxlQUFlLEdBQVEsRUFBRSxDQUFDO0lBRWhDLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxFQUFFO1FBQ3hCLElBQUksT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssVUFBVSxFQUFFO1lBQ3JDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQW9DLENBQUM7WUFDekQsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFlLEVBQUUsRUFBRTtnQkFDN0MsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQzdCLElBQUksUUFBUSxZQUFZLE9BQU8sRUFBRTtvQkFDaEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ3RCO3FCQUFNO29CQUNOLE9BQU8sUUFBUSxDQUFDO2lCQUNoQjtZQUNGLENBQUMsQ0FBQztTQUNGO2FBQU0sSUFBSSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNqRSxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2pEO2FBQU07WUFDTixlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xDO0tBQ0Q7SUFFRCxPQUFPLGVBQW9DLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgT2JzZXJ2YWJsZWZpZWQ8VD4gPSB7XG5cdFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgKC4uLmFyZ3M6IGluZmVyIEFyZ3MpID0+IFByb21pc2U8aW5mZXIgUj5cblx0XHQ/ICguLi5hcmdzOiBBcmdzKSA9PiBPYnNlcnZhYmxlPFI+XG5cdFx0OiBUW0tdIGV4dGVuZHMgKC4uLmFyZ3M6IGluZmVyIEFyZ3MpID0+IGluZmVyIFJcblx0XHQ/ICguLi5hcmdzOiBBcmdzKSA9PiBSXG5cdFx0OiBUW0tdIGV4dGVuZHMgb2JqZWN0XG5cdFx0PyBPYnNlcnZhYmxlZmllZDxUW0tdPlxuXHRcdDogVFtLXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZhYmlsaWZ5PFQ+KHZhbHVlOiBUKTogT2JzZXJ2YWJsZWZpZWQ8VD4ge1xuXHQvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5cdGNvbnN0IG9ic2VydmFibGVWYWx1ZTogYW55ID0ge307XG5cblx0Zm9yIChjb25zdCBrZXkgaW4gdmFsdWUpIHtcblx0XHRpZiAodHlwZW9mIHZhbHVlW2tleV0gPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGNvbnN0IGZuID0gdmFsdWVba2V5XSBhcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duO1xuXHRcdFx0b2JzZXJ2YWJsZVZhbHVlW2tleV0gPSAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGZuUmVzdWx0ID0gZm4oLi4uYXJncyk7XG5cdFx0XHRcdGlmIChmblJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcblx0XHRcdFx0XHRyZXR1cm4gZnJvbShmblJlc3VsdCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZuUmVzdWx0O1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlW2tleV0gPT09ICdvYmplY3QnICYmIHZhbHVlW2tleV0gIT09IG51bGwpIHtcblx0XHRcdG9ic2VydmFibGVWYWx1ZVtrZXldID0gb2JzZXJ2YWJpbGlmeSh2YWx1ZVtrZXldKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b2JzZXJ2YWJsZVZhbHVlW2tleV0gPSB2YWx1ZVtrZXldO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBvYnNlcnZhYmxlVmFsdWUgYXMgT2JzZXJ2YWJsZWZpZWQ8VD47XG59XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of angular-sdk
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/services/descope-auth.service';
|
|
5
|
+
export * from './lib/services/descope-auth.guard';
|
|
6
|
+
export * from './lib/services/descope.interceptor';
|
|
7
|
+
export * from './lib/descope-auth.module';
|
|
8
|
+
export * from './lib/components/descope/descope.component';
|
|
9
|
+
export * from './lib/components/sign-in-flow/sign-in-flow.component';
|
|
10
|
+
export * from './lib/components/sign-up-flow/sign-up-flow.component';
|
|
11
|
+
export * from './lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component';
|
|
12
|
+
export * from './lib/types/types';
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGFuZ3VsYXItc2RrXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZGVzY29wZS1hdXRoLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZGVzY29wZS1hdXRoLmd1YXJkJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2Rlc2NvcGUuaW50ZXJjZXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGVzY29wZS1hdXRoLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Rlc2NvcGUvZGVzY29wZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zaWduLWluLWZsb3cvc2lnbi1pbi1mbG93LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NpZ24tdXAtZmxvdy9zaWduLXVwLWZsb3cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2lnbi11cC1vci1pbi1mbG93L3NpZ24tdXAtb3ItaW4tZmxvdy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHlwZXMvdHlwZXMnO1xuIl19
|