@dbg-riskit/angular-testing 15.0.0 → 15.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/esm2022/dbg-riskit-angular-testing.mjs +5 -0
  2. package/esm2022/lib/by.util.mjs +19 -0
  3. package/esm2022/lib/definitions/data.table.definition.mjs +556 -0
  4. package/esm2022/lib/definitions/download.menu.page.mjs +90 -0
  5. package/esm2022/lib/definitions/highlighter.directive.page.mjs +36 -0
  6. package/esm2022/lib/definitions/layout.component.page.mjs +93 -0
  7. package/esm2022/lib/definitions/link.definition.mjs +19 -0
  8. package/esm2022/lib/definitions/link.only.page.mjs +13 -0
  9. package/esm2022/lib/definitions/login.menu.page.mjs +25 -0
  10. package/esm2022/lib/definitions/login.page.mjs +51 -0
  11. package/esm2022/lib/definitions/message.def.mjs +15 -0
  12. package/esm2022/lib/definitions/message.page.mjs +68 -0
  13. package/esm2022/lib/definitions/page.base.mjs +64 -0
  14. package/esm2022/lib/environment.mjs +23 -0
  15. package/esm2022/lib/events.mjs +60 -0
  16. package/esm2022/lib/stubs/auth/auth.routing.flow.service.stub.mjs +37 -0
  17. package/esm2022/lib/stubs/auth/auth.service.stub.mjs +40 -0
  18. package/esm2022/lib/stubs/auth/well.known.service.stub.mjs +22 -0
  19. package/esm2022/lib/stubs/http.service.stub.mjs +54 -0
  20. package/esm2022/lib/stubs/login.menu.stub.component.mjs +19 -0
  21. package/esm2022/lib/stubs/router/activated.route.stub.mjs +29 -0
  22. package/esm2022/lib/stubs/router/router.link.stub.mjs +46 -0
  23. package/esm2022/lib/stubs/router/router.module.stub.mjs +44 -0
  24. package/esm2022/lib/stubs/router/router.outlet.stub.component.mjs +16 -0
  25. package/esm2022/lib/stubs/router/router.stub.mjs +79 -0
  26. package/esm2022/lib/testing.module.mjs +50 -0
  27. package/esm2022/lib/utils.mjs +48 -0
  28. package/esm2022/public_api.mjs +48 -0
  29. package/fesm2022/dbg-riskit-angular-testing.mjs +1543 -0
  30. package/fesm2022/dbg-riskit-angular-testing.mjs.map +1 -0
  31. package/package.json +8 -8
@@ -0,0 +1,60 @@
1
+ import { tick } from '@angular/core/testing';
2
+ /** Button events to pass to `DebugElement.triggerEventHandler` for RouterLink event handler */
3
+ export const BUTTON_CLICK_EVENTS = {
4
+ left: { button: 0 },
5
+ right: { button: 2 }
6
+ };
7
+ /** Simulate element click. Defaults to mouse left-button click event. */
8
+ export function click(el, eventObj = BUTTON_CLICK_EVENTS.left) {
9
+ if (el instanceof HTMLElement) {
10
+ el.click();
11
+ }
12
+ else {
13
+ el.triggerEventHandler('click', eventObj);
14
+ }
15
+ }
16
+ export function setNgModelValue(element, value, realAsync = false) {
17
+ if (!(element.nativeElement instanceof HTMLInputElement)) {
18
+ throw new Error('Not an instance of HTMLInputElement');
19
+ }
20
+ const input = element.nativeElement;
21
+ input.value = value;
22
+ dispatchEvent(input, 'input'); // tell Angular
23
+ if (!realAsync) {
24
+ tick();
25
+ }
26
+ }
27
+ export function setNgModelSelectValue(element, selectedIndex, realAsync = false) {
28
+ if (!(element.nativeElement instanceof HTMLSelectElement)) {
29
+ throw new Error('Not an instance of HTMLInputElement');
30
+ }
31
+ const input = element.nativeElement;
32
+ input.selectedIndex = selectedIndex;
33
+ dispatchEvent(input, 'change'); // tell Angular
34
+ if (!realAsync) {
35
+ tick();
36
+ }
37
+ }
38
+ export function dispatchEvent(element, eventName) {
39
+ if (element instanceof HTMLElement) {
40
+ element.dispatchEvent(newEvent(eventName));
41
+ }
42
+ else if (element instanceof Window) {
43
+ element.dispatchEvent(newEvent(eventName));
44
+ }
45
+ else {
46
+ element.nativeElement.dispatchEvent(newEvent(eventName));
47
+ }
48
+ }
49
+ /**
50
+ * Create custom DOM event the old fashioned way
51
+ *
52
+ * https://developer.mozilla.org/en-US/docs/Web/API/Event/initEvent
53
+ * Although officially deprecated, some browsers (phantom) don't accept the preferred "new Event(eventName)"
54
+ */
55
+ export function newEvent(eventName, bubbles = false, cancelable = false) {
56
+ const evt = document.createEvent('CustomEvent'); // MUST be 'CustomEvent'
57
+ evt.initCustomEvent(eventName, bubbles, cancelable, null);
58
+ return evt;
59
+ }
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvYW5ndWxhci10ZXN0aW5nL3NyYy9saWIvZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUUzQywrRkFBK0Y7QUFDL0YsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDL0IsSUFBSSxFQUFHLEVBQUMsTUFBTSxFQUFFLENBQUMsRUFBQztJQUNsQixLQUFLLEVBQUUsRUFBQyxNQUFNLEVBQUUsQ0FBQyxFQUFDO0NBQ3JCLENBQUM7QUFFRix5RUFBeUU7QUFDekUsTUFBTSxVQUFVLEtBQUssQ0FBQyxFQUE4QixFQUFFLFdBQWdCLG1CQUFtQixDQUFDLElBQUk7SUFDMUYsSUFBSSxFQUFFLFlBQVksV0FBVyxFQUFFO1FBQzNCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztLQUNkO1NBQU07UUFDSCxFQUFFLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQzdDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsT0FBcUIsRUFBRSxLQUFhLEVBQUUsU0FBUyxHQUFHLEtBQUs7SUFDbkYsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsWUFBWSxnQkFBZ0IsQ0FBQyxFQUFFO1FBQ3RELE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztLQUMxRDtJQUNELE1BQU0sS0FBSyxHQUFxQixPQUFPLENBQUMsYUFBYSxDQUFDO0lBQ3RELEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRXBCLGFBQWEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlO0lBQzlDLElBQUksQ0FBQyxTQUFTLEVBQUU7UUFDWixJQUFJLEVBQUUsQ0FBQztLQUNWO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxPQUFxQixFQUFFLGFBQXFCLEVBQUUsU0FBUyxHQUFHLEtBQUs7SUFDakcsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsWUFBWSxpQkFBaUIsQ0FBQyxFQUFFO1FBQ3ZELE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztLQUMxRDtJQUNELE1BQU0sS0FBSyxHQUFzQixPQUFPLENBQUMsYUFBYSxDQUFDO0lBQ3ZELEtBQUssQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBRXBDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlO0lBQy9DLElBQUksQ0FBQyxTQUFTLEVBQUU7UUFDWixJQUFJLEVBQUUsQ0FBQztLQUNWO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBNEMsRUFBRSxTQUFpQjtJQUN6RixJQUFJLE9BQU8sWUFBWSxXQUFXLEVBQUU7UUFDaEMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUM5QztTQUFNLElBQUksT0FBTyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0tBQzlDO1NBQU07UUFDSCxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUM1RDtBQUNMLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsU0FBaUIsRUFBRSxPQUFPLEdBQUcsS0FBSyxFQUFFLFVBQVUsR0FBRyxLQUFLO0lBQzNFLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBRSx3QkFBd0I7SUFDMUUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxRCxPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RlYnVnRWxlbWVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7dGlja30gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcblxuLyoqIEJ1dHRvbiBldmVudHMgdG8gcGFzcyB0byBgRGVidWdFbGVtZW50LnRyaWdnZXJFdmVudEhhbmRsZXJgIGZvciBSb3V0ZXJMaW5rIGV2ZW50IGhhbmRsZXIgKi9cbmV4cG9ydCBjb25zdCBCVVRUT05fQ0xJQ0tfRVZFTlRTID0ge1xuICAgIGxlZnQgOiB7YnV0dG9uOiAwfSxcbiAgICByaWdodDoge2J1dHRvbjogMn1cbn07XG5cbi8qKiBTaW11bGF0ZSBlbGVtZW50IGNsaWNrLiBEZWZhdWx0cyB0byBtb3VzZSBsZWZ0LWJ1dHRvbiBjbGljayBldmVudC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGljayhlbDogRGVidWdFbGVtZW50IHwgSFRNTEVsZW1lbnQsIGV2ZW50T2JqOiBhbnkgPSBCVVRUT05fQ0xJQ0tfRVZFTlRTLmxlZnQpOiB2b2lkIHtcbiAgICBpZiAoZWwgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICBlbC5jbGljaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGVsLnRyaWdnZXJFdmVudEhhbmRsZXIoJ2NsaWNrJywgZXZlbnRPYmopO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldE5nTW9kZWxWYWx1ZShlbGVtZW50OiBEZWJ1Z0VsZW1lbnQsIHZhbHVlOiBzdHJpbmcsIHJlYWxBc3luYyA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKCEoZWxlbWVudC5uYXRpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgYW4gaW5zdGFuY2Ugb2YgSFRNTElucHV0RWxlbWVudCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnB1dDogSFRNTElucHV0RWxlbWVudCA9IGVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICBpbnB1dC52YWx1ZSA9IHZhbHVlO1xuXG4gICAgZGlzcGF0Y2hFdmVudChpbnB1dCwgJ2lucHV0Jyk7IC8vIHRlbGwgQW5ndWxhclxuICAgIGlmICghcmVhbEFzeW5jKSB7XG4gICAgICAgIHRpY2soKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXROZ01vZGVsU2VsZWN0VmFsdWUoZWxlbWVudDogRGVidWdFbGVtZW50LCBzZWxlY3RlZEluZGV4OiBudW1iZXIsIHJlYWxBc3luYyA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKCEoZWxlbWVudC5uYXRpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTFNlbGVjdEVsZW1lbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGFuIGluc3RhbmNlIG9mIEhUTUxJbnB1dEVsZW1lbnQnKTtcbiAgICB9XG4gICAgY29uc3QgaW5wdXQ6IEhUTUxTZWxlY3RFbGVtZW50ID0gZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIGlucHV0LnNlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4O1xuXG4gICAgZGlzcGF0Y2hFdmVudChpbnB1dCwgJ2NoYW5nZScpOyAvLyB0ZWxsIEFuZ3VsYXJcbiAgICBpZiAoIXJlYWxBc3luYykge1xuICAgICAgICB0aWNrKCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChlbGVtZW50OiBEZWJ1Z0VsZW1lbnQgfCBIVE1MRWxlbWVudCB8IFdpbmRvdywgZXZlbnROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXdFdmVudChldmVudE5hbWUpKTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBXaW5kb3cpIHtcbiAgICAgICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ld0V2ZW50KGV2ZW50TmFtZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ld0V2ZW50KGV2ZW50TmFtZSkpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgY3VzdG9tIERPTSBldmVudCB0aGUgb2xkIGZhc2hpb25lZCB3YXlcbiAqXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnQvaW5pdEV2ZW50XG4gKiBBbHRob3VnaCBvZmZpY2lhbGx5IGRlcHJlY2F0ZWQsIHNvbWUgYnJvd3NlcnMgKHBoYW50b20pIGRvbid0IGFjY2VwdCB0aGUgcHJlZmVycmVkIFwibmV3IEV2ZW50KGV2ZW50TmFtZSlcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV3RXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIGJ1YmJsZXMgPSBmYWxzZSwgY2FuY2VsYWJsZSA9IGZhbHNlKTogQ3VzdG9tRXZlbnQge1xuICAgIGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpOyAgLy8gTVVTVCBiZSAnQ3VzdG9tRXZlbnQnXG4gICAgZXZ0LmluaXRDdXN0b21FdmVudChldmVudE5hbWUsIGJ1YmJsZXMsIGNhbmNlbGFibGUsIG51bGwpO1xuICAgIHJldHVybiBldnQ7XG59XG4iXX0=
@@ -0,0 +1,37 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { AUTH_CONFIG, AuthRoutingFlowService } from '@dbg-riskit/angular-auth';
3
+ import { AUTH_PROVIDER } from '@dbg-riskit/angular-common';
4
+ import { of } from 'rxjs';
5
+ import { defaultIfEmpty, map } from 'rxjs/operators';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@dbg-riskit/angular-auth";
8
+ export const storage = { authRequestedPath: null };
9
+ export class AuthRoutingFlowServiceStub extends AuthRoutingFlowService {
10
+ constructor(authServiceStub, authConfig) {
11
+ super(null, null, { loggedIn: of(null) }, storage, authConfig, null);
12
+ this.authServiceStub = authServiceStub;
13
+ // cleanup
14
+ storage.authRequestedPath = null;
15
+ }
16
+ logout(state) {
17
+ return this.authServiceStub.logout().pipe(defaultIfEmpty(0), map(() => true));
18
+ }
19
+ login(username, password) {
20
+ return this.authServiceStub.directLogin(username, password);
21
+ }
22
+ loginViaService() {
23
+ return this.authServiceStub.loginViaAuthService();
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthRoutingFlowServiceStub, deps: [{ token: AUTH_PROVIDER }, { token: AUTH_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
26
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthRoutingFlowServiceStub }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthRoutingFlowServiceStub, decorators: [{
29
+ type: Injectable
30
+ }], ctorParameters: function () { return [{ type: i1.AuthService, decorators: [{
31
+ type: Inject,
32
+ args: [AUTH_PROVIDER]
33
+ }] }, { type: undefined, decorators: [{
34
+ type: Inject,
35
+ args: [AUTH_CONFIG]
36
+ }] }]; } });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5yb3V0aW5nLmZsb3cuc2VydmljZS5zdHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvYW5ndWxhci10ZXN0aW5nL3NyYy9saWIvc3R1YnMvYXV0aC9hdXRoLnJvdXRpbmcuZmxvdy5zZXJ2aWNlLnN0dWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFDLFdBQVcsRUFBYyxzQkFBc0IsRUFBYyxNQUFNLDBCQUEwQixDQUFDO0FBQ3RHLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxjQUFjLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7OztBQUVuRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQ2QsRUFBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUMsQ0FBQztBQUdoQyxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsc0JBQXNCO0lBRWxFLFlBQWtELGVBQTRCLEVBQ3RDLFVBQXNCO1FBQzFELEtBQUssQ0FBQyxJQUFXLEVBQUUsSUFBVyxFQUFFLEVBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBUSxFQUFFLE9BQWMsRUFBRSxVQUFVLEVBQUUsSUFBVyxDQUFDLENBQUM7UUFGeEQsb0JBQWUsR0FBZixlQUFlLENBQWE7UUFHMUUsVUFBVTtRQUNWLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDckMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUEyQjtRQUNyQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUNyQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQ2pCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxLQUFLLENBQUMsUUFBaUIsRUFBRSxRQUFpQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFFBQWUsRUFBRSxRQUFlLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU0sZUFBZTtRQUNsQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUN0RCxDQUFDOytHQXJCUSwwQkFBMEIsa0JBRVIsYUFBYSxhQUNiLFdBQVc7bUhBSDdCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFEdEMsVUFBVTs7MEJBR2EsTUFBTTsyQkFBQyxhQUFhOzswQkFDcEIsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXJTdGF0ZVNuYXBzaG90fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0FVVEhfQ09ORklHLCBBdXRoQ29uZmlnLCBBdXRoUm91dGluZ0Zsb3dTZXJ2aWNlLCBBdXRoU2VydmljZX0gZnJvbSAnQGRiZy1yaXNraXQvYW5ndWxhci1hdXRoJztcbmltcG9ydCB7QVVUSF9QUk9WSURFUn0gZnJvbSAnQGRiZy1yaXNraXQvYW5ndWxhci1jb21tb24nO1xuXG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGVmYXVsdElmRW1wdHksIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY29uc3Qgc3RvcmFnZTogeyBhdXRoUmVxdWVzdGVkUGF0aDogc3RyaW5nIHwgbnVsbDsgfVxuICAgID0ge2F1dGhSZXF1ZXN0ZWRQYXRoOiBudWxsfTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhSb3V0aW5nRmxvd1NlcnZpY2VTdHViIGV4dGVuZHMgQXV0aFJvdXRpbmdGbG93U2VydmljZSB7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoQEluamVjdChBVVRIX1BST1ZJREVSKSBwcml2YXRlIGF1dGhTZXJ2aWNlU3R1YjogQXV0aFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgIEBJbmplY3QoQVVUSF9DT05GSUcpIGF1dGhDb25maWc6IEF1dGhDb25maWcpIHtcbiAgICAgICAgc3VwZXIobnVsbCBhcyBhbnksIG51bGwgYXMgYW55LCB7bG9nZ2VkSW46IG9mKG51bGwpfSBhcyBhbnksIHN0b3JhZ2UgYXMgYW55LCBhdXRoQ29uZmlnLCBudWxsIGFzIGFueSk7XG4gICAgICAgIC8vIGNsZWFudXBcbiAgICAgICAgc3RvcmFnZS5hdXRoUmVxdWVzdGVkUGF0aCA9IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGxvZ291dChzdGF0ZT86IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2VTdHViLmxvZ291dCgpLnBpcGUoXG4gICAgICAgICAgICBkZWZhdWx0SWZFbXB0eSgwKSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB0cnVlKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvZ2luKHVzZXJuYW1lPzogc3RyaW5nLCBwYXNzd29yZD86IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZVN0dWIuZGlyZWN0TG9naW4odXNlcm5hbWUgYXMgYW55LCBwYXNzd29yZCBhcyBhbnkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2dpblZpYVNlcnZpY2UoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlU3R1Yi5sb2dpblZpYUF1dGhTZXJ2aWNlKCk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,40 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { AuthService } from '@dbg-riskit/angular-auth';
3
+ import { EMPTY, of } from 'rxjs';
4
+ import { WellKnownServiceStub } from './well.known.service.stub';
5
+ import * as i0 from "@angular/core";
6
+ export class AuthServiceStub extends AuthService {
7
+ constructor() {
8
+ super({}, new WellKnownServiceStub(), null, null, null);
9
+ }
10
+ get loggedIn() {
11
+ return of(!!this.user);
12
+ }
13
+ get userProfile() {
14
+ return of({
15
+ name: this.user
16
+ });
17
+ }
18
+ loginViaAuthService() {
19
+ return of(true);
20
+ }
21
+ checkLocationForLoginData() {
22
+ return of(true);
23
+ }
24
+ directLogin(username, password) {
25
+ this.user = username;
26
+ this.emitLoginStatusChange(true);
27
+ return of(true);
28
+ }
29
+ logout() {
30
+ this.emitLoginStatusChange(false);
31
+ delete this.user;
32
+ return EMPTY;
33
+ }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthServiceStub, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
35
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthServiceStub }); }
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthServiceStub, decorators: [{
38
+ type: Injectable
39
+ }], ctorParameters: function () { return []; } });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLnN0dWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLXRlc3Rpbmcvc3JjL2xpYi9zdHVicy9hdXRoL2F1dGguc2VydmljZS5zdHViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBR3JELE9BQU8sRUFBQyxLQUFLLEVBQWMsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDOztBQUcvRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUFXO0lBRTVDO1FBQ0ksS0FBSyxDQUFDLEVBQVMsRUFBRSxJQUFJLG9CQUFvQixFQUFTLEVBQUUsSUFBVyxFQUFFLElBQVcsRUFBRSxJQUFXLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBSUQsSUFBVyxRQUFRO1FBQ2YsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sRUFBRSxDQUFDO1lBQ04sSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2xCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxtQkFBbUI7UUFDdEIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVNLHlCQUF5QjtRQUM1QixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRU0sV0FBVyxDQUFDLFFBQWdCLEVBQUUsUUFBZ0I7UUFDakQsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDckIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFTSxNQUFNO1FBQ1QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztRQUNqQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOytHQXBDUSxlQUFlO21IQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0F1dGhTZXJ2aWNlfSBmcm9tICdAZGJnLXJpc2tpdC9hbmd1bGFyLWF1dGgnO1xuaW1wb3J0IHtVc2VySW5mb30gZnJvbSAnQGRiZy1yaXNraXQvY29tbW9uJztcblxuaW1wb3J0IHtFTVBUWSwgT2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtXZWxsS25vd25TZXJ2aWNlU3R1Yn0gZnJvbSAnLi93ZWxsLmtub3duLnNlcnZpY2Uuc3R1Yic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZVN0dWIgZXh0ZW5kcyBBdXRoU2VydmljZSB7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHt9IGFzIGFueSwgbmV3IFdlbGxLbm93blNlcnZpY2VTdHViKCkgYXMgYW55LCBudWxsIGFzIGFueSwgbnVsbCBhcyBhbnksIG51bGwgYXMgYW55KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVzZXI/OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgZ2V0IGxvZ2dlZEluKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gb2YoISF0aGlzLnVzZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdXNlclByb2ZpbGUoKTogT2JzZXJ2YWJsZTxVc2VySW5mbz4ge1xuICAgICAgICByZXR1cm4gb2Yoe1xuICAgICAgICAgICAgbmFtZTogdGhpcy51c2VyXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2dpblZpYUF1dGhTZXJ2aWNlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNoZWNrTG9jYXRpb25Gb3JMb2dpbkRhdGEoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlyZWN0TG9naW4odXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICB0aGlzLnVzZXIgPSB1c2VybmFtZTtcbiAgICAgICAgdGhpcy5lbWl0TG9naW5TdGF0dXNDaGFuZ2UodHJ1ZSk7XG4gICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9nb3V0KCk6IE9ic2VydmFibGU8bmV2ZXI+IHtcbiAgICAgICAgdGhpcy5lbWl0TG9naW5TdGF0dXNDaGFuZ2UoZmFsc2UpO1xuICAgICAgICBkZWxldGUgdGhpcy51c2VyO1xuICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,22 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { of } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export const WELL_KNOWN = {
5
+ endpoints: {
6
+ auth: '/auth',
7
+ token: '/token',
8
+ logout: '/logout'
9
+ },
10
+ issuer: 'risk-auth'
11
+ };
12
+ export class WellKnownServiceStub {
13
+ get wellKnown() {
14
+ return of(WELL_KNOWN);
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WellKnownServiceStub, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
17
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WellKnownServiceStub }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WellKnownServiceStub, decorators: [{
20
+ type: Injectable
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VsbC5rbm93bi5zZXJ2aWNlLnN0dWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLXRlc3Rpbmcvc3JjL2xpYi9zdHVicy9hdXRoL3dlbGwua25vd24uc2VydmljZS5zdHViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJekMsT0FBTyxFQUFhLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFFcEMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFjO0lBQ2pDLFNBQVMsRUFBRTtRQUNQLElBQUksRUFBSSxPQUFPO1FBQ2YsS0FBSyxFQUFHLFFBQVE7UUFDaEIsTUFBTSxFQUFFLFNBQVM7S0FDcEI7SUFDRCxNQUFNLEVBQUssV0FBVztDQUN6QixDQUFDO0FBR0YsTUFBTSxPQUFPLG9CQUFvQjtJQUM3QixJQUFXLFNBQVM7UUFDaEIsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUIsQ0FBQzsrR0FIUSxvQkFBb0I7bUhBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7V2VsbEtub3dufSBmcm9tICdAZGJnLXJpc2tpdC9hbmd1bGFyLWF1dGgnO1xuXG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNvbnN0IFdFTExfS05PV046IFdlbGxLbm93biA9IHtcbiAgICBlbmRwb2ludHM6IHtcbiAgICAgICAgYXV0aCAgOiAnL2F1dGgnLFxuICAgICAgICB0b2tlbiA6ICcvdG9rZW4nLFxuICAgICAgICBsb2dvdXQ6ICcvbG9nb3V0J1xuICAgIH0sXG4gICAgaXNzdWVyICAgOiAncmlzay1hdXRoJ1xufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFdlbGxLbm93blNlcnZpY2VTdHViIHtcbiAgICBwdWJsaWMgZ2V0IHdlbGxLbm93bigpOiBPYnNlcnZhYmxlPFdlbGxLbm93bj4ge1xuICAgICAgICByZXR1cm4gb2YoV0VMTF9LTk9XTik7XG4gICAgfVxuXG59XG4iXX0=
@@ -0,0 +1,54 @@
1
+ import { EventEmitter, Injectable } from '@angular/core';
2
+ import { of, throwError as _throwError, timer } from 'rxjs';
3
+ import { switchMap } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ export const FAKE_HTTP_ASYNC_TIMEOUT = 1000;
6
+ export class HttpServiceStub {
7
+ constructor() {
8
+ this.value = [];
9
+ this.error = [];
10
+ this.unauthorized = new EventEmitter();
11
+ }
12
+ returnValue(value) {
13
+ this.value.push(value);
14
+ }
15
+ popReturnValue() {
16
+ return this.value.pop();
17
+ }
18
+ shiftReturnValue() {
19
+ return this.value.shift();
20
+ }
21
+ throwError(value) {
22
+ this.error.push(value);
23
+ }
24
+ get(request) {
25
+ if (this.error.length) {
26
+ const error = this.error.shift();
27
+ return _throwError(error);
28
+ }
29
+ const value = this.value.shift();
30
+ return of(value);
31
+ }
32
+ post(request) {
33
+ return this.get(request);
34
+ }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpServiceStub, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
36
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpServiceStub }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpServiceStub, decorators: [{
39
+ type: Injectable
40
+ }] });
41
+ export class HttpAsyncServiceStub extends HttpServiceStub {
42
+ get(request, auth = true) {
43
+ return timer(FAKE_HTTP_ASYNC_TIMEOUT).pipe(switchMap(() => super.get(request)));
44
+ }
45
+ post(request) {
46
+ return this.get(request);
47
+ }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpAsyncServiceStub, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
49
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpAsyncServiceStub }); }
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpAsyncServiceStub, decorators: [{
52
+ type: Injectable
53
+ }] });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLnN0dWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLXRlc3Rpbmcvc3JjL2xpYi9zdHVicy9odHRwLnNlcnZpY2Uuc3R1Yi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUd2RCxPQUFPLEVBQWEsRUFBRSxFQUFFLFVBQVUsSUFBSSxXQUFXLEVBQUUsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFekMsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDO0FBRzVDLE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBR1ksVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQUU1QixpQkFBWSxHQUErQixJQUFJLFlBQVksRUFBRSxDQUFDO0tBOEJ4RTtJQTVCVSxXQUFXLENBQUMsS0FBUTtRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU0sY0FBYztRQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVNLGdCQUFnQjtRQUNuQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxLQUFtQjtRQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU0sR0FBRyxDQUFDLE9BQW1CO1FBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDbkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjtRQUNELE1BQU0sS0FBSyxHQUFrQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hELE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxJQUFJLENBQUMsT0FBMkI7UUFDbkMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7K0dBbENRLGVBQWU7bUhBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7QUF1Q1gsTUFBTSxPQUFPLG9CQUF3QixTQUFRLGVBQWtCO0lBRXBELEdBQUcsQ0FBQyxPQUFtQixFQUFFLElBQUksR0FBRyxJQUFJO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUMsSUFBSSxDQUN0QyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUN0QyxDQUFDO0lBQ04sQ0FBQztJQUVNLElBQUksQ0FBQyxPQUEyQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0IsQ0FBQzsrR0FWUSxvQkFBb0I7bUhBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UmVxdWVzdCwgUmVxdWVzdFdpdGhEYXRhfSBmcm9tICdAZGJnLXJpc2tpdC9hbmd1bGFyLWNvbW1vbic7XG5pbXBvcnQge0Vycm9yTWVzc2FnZX0gZnJvbSAnQGRiZy1yaXNraXQvY29tbW9uJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgYXMgX3Rocm93RXJyb3IsIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7c3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBjb25zdCBGQUtFX0hUVFBfQVNZTkNfVElNRU9VVCA9IDEwMDA7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIdHRwU2VydmljZVN0dWI8VD4ge1xuXG4gICAgcHJpdmF0ZSB2YWx1ZTogVFtdID0gW107XG4gICAgcHJpdmF0ZSBlcnJvcjogRXJyb3JNZXNzYWdlW10gPSBbXTtcblxuICAgIHB1YmxpYyB1bmF1dGhvcml6ZWQ6IEV2ZW50RW1pdHRlcjxFcnJvck1lc3NhZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHVibGljIHJldHVyblZhbHVlKHZhbHVlOiBUKSB7XG4gICAgICAgIHRoaXMudmFsdWUucHVzaCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHBvcFJldHVyblZhbHVlKCk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5wb3AoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hpZnRSZXR1cm5WYWx1ZSgpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUuc2hpZnQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdGhyb3dFcnJvcih2YWx1ZTogRXJyb3JNZXNzYWdlKSB7XG4gICAgICAgIHRoaXMuZXJyb3IucHVzaCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldChyZXF1ZXN0OiBSZXF1ZXN0PFQ+KTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmICh0aGlzLmVycm9yLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLmVycm9yLnNoaWZ0KCk7XG4gICAgICAgICAgICByZXR1cm4gX3Rocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbHVlOiBUIHwgdW5kZWZpbmVkID0gdGhpcy52YWx1ZS5zaGlmdCgpO1xuICAgICAgICByZXR1cm4gb2YodmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwb3N0KHJlcXVlc3Q6IFJlcXVlc3RXaXRoRGF0YTxUPik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQocmVxdWVzdCk7XG4gICAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSHR0cEFzeW5jU2VydmljZVN0dWI8VD4gZXh0ZW5kcyBIdHRwU2VydmljZVN0dWI8VD4ge1xuXG4gICAgcHVibGljIGdldChyZXF1ZXN0OiBSZXF1ZXN0PFQ+LCBhdXRoID0gdHJ1ZSk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGltZXIoRkFLRV9IVFRQX0FTWU5DX1RJTUVPVVQpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gc3VwZXIuZ2V0KHJlcXVlc3QpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBwb3N0KHJlcXVlc3Q6IFJlcXVlc3RXaXRoRGF0YTxUPik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQocmVxdWVzdCk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,19 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class LoginMenuStubComponent {
4
+ constructor() {
5
+ this.orientation = 'row';
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoginMenuStubComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LoginMenuStubComponent, selector: "login-menu, risk-login-menu", inputs: { orientation: "orientation" }, ngImport: i0, template: '', isInline: true }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoginMenuStubComponent, decorators: [{
11
+ type: Component,
12
+ args: [{
13
+ selector: 'login-menu, risk-login-menu',
14
+ template: ''
15
+ }]
16
+ }], propDecorators: { orientation: [{
17
+ type: Input
18
+ }] } });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4ubWVudS5zdHViLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BrZy9kYmctcmlza2l0L2FuZ3VsYXItdGVzdGluZy9zcmMvbGliL3N0dWJzL2xvZ2luLm1lbnUuc3R1Yi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBTS9DLE1BQU0sT0FBTyxzQkFBc0I7SUFKbkM7UUFPVyxnQkFBVyxHQUFxQixLQUFLLENBQUM7S0FDaEQ7K0dBSlksc0JBQXNCO21HQUF0QixzQkFBc0IsMkdBRnJCLEVBQUU7OzRGQUVILHNCQUFzQjtrQkFKbEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxRQUFRLEVBQUUsRUFBRTtpQkFDZjs4QkFJVSxXQUFXO3NCQURqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsb2dpbi1tZW51LCByaXNrLWxvZ2luLW1lbnUnLFxuICAgIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBjbGFzcyBMb2dpbk1lbnVTdHViQ29tcG9uZW50IHtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG9yaWVudGF0aW9uOiAncm93JyB8ICdjb2x1bW4nID0gJ3Jvdyc7XG59XG4iXX0=
@@ -0,0 +1,29 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class ActivatedRouteStub {
5
+ constructor() {
6
+ // Test parameters
7
+ this._testParams = {};
8
+ // ActivatedRoute.params is Observable
9
+ this.subject = new BehaviorSubject(this.testParams);
10
+ this.params = this.subject.asObservable();
11
+ }
12
+ get testParams() {
13
+ return this._testParams;
14
+ }
15
+ set testParams(params) {
16
+ this._testParams = params;
17
+ this.subject.next(params);
18
+ }
19
+ // ActivatedRoute.snapshot.params
20
+ get snapshot() {
21
+ return { params: this.testParams };
22
+ }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActivatedRouteStub, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
24
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActivatedRouteStub }); }
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActivatedRouteStub, decorators: [{
27
+ type: Injectable
28
+ }] });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZhdGVkLnJvdXRlLnN0dWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLXRlc3Rpbmcvc3JjL2xpYi9zdHVicy9yb3V0ZXIvYWN0aXZhdGVkLnJvdXRlLnN0dWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUMsZUFBZSxFQUFhLE1BQU0sTUFBTSxDQUFDOztBQUdqRCxNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBR0ksa0JBQWtCO1FBQ1YsZ0JBQVcsR0FBTSxFQUFPLENBQUM7UUFFakMsc0NBQXNDO1FBQzlCLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEQsV0FBTSxHQUFrQixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0tBZTlEO0lBYkcsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxVQUFVLENBQUMsTUFBUztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsaUNBQWlDO0lBQ2pDLElBQVcsUUFBUTtRQUNmLE9BQU8sRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBQyxDQUFDO0lBQ3JDLENBQUM7K0dBckJRLGtCQUFrQjttSEFBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWN0aXZhdGVkUm91dGVTdHViPFQ+IHtcblxuICAgIC8vIFRlc3QgcGFyYW1ldGVyc1xuICAgIHByaXZhdGUgX3Rlc3RQYXJhbXM6IFQgPSB7fSBhcyBUO1xuXG4gICAgLy8gQWN0aXZhdGVkUm91dGUucGFyYW1zIGlzIE9ic2VydmFibGVcbiAgICBwcml2YXRlIHN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMudGVzdFBhcmFtcyk7XG4gICAgcHVibGljIHBhcmFtczogT2JzZXJ2YWJsZTxUPiA9IHRoaXMuc3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHB1YmxpYyBnZXQgdGVzdFBhcmFtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rlc3RQYXJhbXM7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB0ZXN0UGFyYW1zKHBhcmFtczogVCkge1xuICAgICAgICB0aGlzLl90ZXN0UGFyYW1zID0gcGFyYW1zO1xuICAgICAgICB0aGlzLnN1YmplY3QubmV4dChwYXJhbXMpO1xuICAgIH1cblxuICAgIC8vIEFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmFtc1xuICAgIHB1YmxpYyBnZXQgc25hcHNob3QoKSB7XG4gICAgICAgIHJldHVybiB7cGFyYW1zOiB0aGlzLnRlc3RQYXJhbXN9O1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,46 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import * as i0 from "@angular/core";
4
+ export class RouterLinkStubDirective {
5
+ constructor(injector) {
6
+ this.navigatedTo = null;
7
+ this._urlTree = null;
8
+ this.routerStub = injector.get(Router, null);
9
+ }
10
+ ngOnChanges() {
11
+ if (this.linkParams && this.routerStub) {
12
+ this._urlTree = this.routerStub.getURLTree(this.linkParams);
13
+ }
14
+ }
15
+ onClick() {
16
+ this.navigatedTo = this.linkParams;
17
+ if (this.routerStub) {
18
+ if (Array.isArray(this.navigatedTo)) {
19
+ this.routerStub.navigate(this.navigatedTo);
20
+ }
21
+ else {
22
+ this.routerStub.navigateByUrl(this.navigatedTo);
23
+ }
24
+ }
25
+ }
26
+ get urlTree() {
27
+ return this._urlTree;
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterLinkStubDirective, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
30
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: RouterLinkStubDirective, selector: "[routerLink]", inputs: { linkParams: ["routerLink", "linkParams"] }, host: { listeners: { "click": "onClick()" } }, usesOnChanges: true, ngImport: i0 }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterLinkStubDirective, decorators: [{
33
+ type: Directive,
34
+ args: [{
35
+ /* eslint-disable @angular-eslint/directive-selector */
36
+ selector: '[routerLink]',
37
+ /* eslint-enable */
38
+ host: {
39
+ '(click)': 'onClick()'
40
+ }
41
+ }]
42
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { linkParams: [{
43
+ type: Input,
44
+ args: ['routerLink']
45
+ }] } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmxpbmsuc3R1Yi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BrZy9kYmctcmlza2l0L2FuZ3VsYXItdGVzdGluZy9zcmMvbGliL3N0dWJzL3JvdXRlci9yb3V0ZXIubGluay5zdHViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQVksS0FBSyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxNQUFNLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFZaEQsTUFBTSxPQUFPLHVCQUF1QjtJQVVoQyxZQUFtQixRQUFrQjtRQUw5QixnQkFBVyxHQUFRLElBQUksQ0FBQztRQUN2QixhQUFRLEdBQW1CLElBQUksQ0FBQztRQUtwQyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBUSxDQUFDO0lBQ3hELENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDL0Q7SUFDTCxDQUFDO0lBRU0sT0FBTztRQUNWLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQzlDO2lCQUFNO2dCQUNILElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNuRDtTQUNKO0lBQ0wsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDOytHQWpDUSx1QkFBdUI7bUdBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFSbkMsU0FBUzttQkFBQztvQkFDUCx1REFBdUQ7b0JBQ3ZELFFBQVEsRUFBRSxjQUFjO29CQUN4QixtQkFBbUI7b0JBQ25CLElBQUksRUFBTTt3QkFDTixTQUFTLEVBQUUsV0FBVztxQkFDekI7aUJBQ0o7K0ZBSVUsVUFBVTtzQkFEaEIsS0FBSzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEluamVjdG9yLCBJbnB1dCwgT25DaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyLCBVcmxUcmVlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1JvdXRlclN0dWJ9IGZyb20gJy4vcm91dGVyLnN0dWInO1xuXG5ARGlyZWN0aXZlKHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yICovXG4gICAgc2VsZWN0b3I6ICdbcm91dGVyTGlua10nLFxuICAgIC8qIGVzbGludC1lbmFibGUgKi9cbiAgICBob3N0ICAgIDoge1xuICAgICAgICAnKGNsaWNrKSc6ICdvbkNsaWNrKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSb3V0ZXJMaW5rU3R1YkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgICBASW5wdXQoJ3JvdXRlckxpbmsnKVxuICAgIHB1YmxpYyBsaW5rUGFyYW1zOiBhbnk7XG5cbiAgICBwdWJsaWMgbmF2aWdhdGVkVG86IGFueSA9IG51bGw7XG4gICAgcHJpdmF0ZSBfdXJsVHJlZTogVXJsVHJlZSB8IG51bGwgPSBudWxsO1xuXG4gICAgcHJpdmF0ZSByb3V0ZXJTdHViOiBSb3V0ZXJTdHViO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICB0aGlzLnJvdXRlclN0dWIgPSBpbmplY3Rvci5nZXQoUm91dGVyLCBudWxsKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5saW5rUGFyYW1zICYmIHRoaXMucm91dGVyU3R1Yikge1xuICAgICAgICAgICAgdGhpcy5fdXJsVHJlZSA9IHRoaXMucm91dGVyU3R1Yi5nZXRVUkxUcmVlKHRoaXMubGlua1BhcmFtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZWRUbyA9IHRoaXMubGlua1BhcmFtcztcbiAgICAgICAgaWYgKHRoaXMucm91dGVyU3R1Yikge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5uYXZpZ2F0ZWRUbykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlclN0dWIubmF2aWdhdGUodGhpcy5uYXZpZ2F0ZWRUbyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyU3R1Yi5uYXZpZ2F0ZUJ5VXJsKHRoaXMubmF2aWdhdGVkVG8pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB1cmxUcmVlKCk6IFVybFRyZWUgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VybFRyZWU7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,44 @@
1
+ import { TestBed } from '@angular/core/testing';
2
+ import { ActivatedRoute, Router, RouterModule } from '@angular/router';
3
+ import { ActivatedRouteStub } from './activated.route.stub';
4
+ import { RouterLinkStubDirective } from './router.link.stub';
5
+ import { RouterOutletStubComponent } from './router.outlet.stub.component';
6
+ import { RouterStub } from './router.stub';
7
+ export function stubRouter(customOverrides) {
8
+ const override = {
9
+ set: {
10
+ imports: [],
11
+ declarations: [
12
+ RouterLinkStubDirective,
13
+ RouterOutletStubComponent
14
+ ],
15
+ providers: [
16
+ {
17
+ provide: Router,
18
+ useClass: RouterStub
19
+ },
20
+ {
21
+ provide: ActivatedRoute,
22
+ useClass: ActivatedRouteStub
23
+ }
24
+ ],
25
+ exports: [
26
+ RouterLinkStubDirective,
27
+ RouterOutletStubComponent
28
+ ]
29
+ }
30
+ };
31
+ if (customOverrides) {
32
+ if (customOverrides.add) {
33
+ override.add = customOverrides.add;
34
+ }
35
+ if (customOverrides.set) {
36
+ override.set = customOverrides.set;
37
+ }
38
+ if (customOverrides.remove) {
39
+ override.remove = customOverrides.remove;
40
+ }
41
+ }
42
+ return TestBed.overrideModule(RouterModule, override);
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLm1vZHVsZS5zdHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvYW5ndWxhci10ZXN0aW5nL3NyYy9saWIvc3R1YnMvcm91dGVyL3JvdXRlci5tb2R1bGUuc3R1Yi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQW1CLE9BQU8sRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsTUFBTSxVQUFVLFVBQVUsQ0FBQyxlQUE0QztJQUNuRSxNQUFNLFFBQVEsR0FBK0I7UUFDekMsR0FBRyxFQUFFO1lBQ0QsT0FBTyxFQUFVLEVBQUU7WUFDbkIsWUFBWSxFQUFLO2dCQUNiLHVCQUF1QjtnQkFDdkIseUJBQXlCO2FBQzVCO1lBQ0QsU0FBUyxFQUFRO2dCQUNiO29CQUNJLE9BQU8sRUFBRyxNQUFNO29CQUNoQixRQUFRLEVBQUUsVUFBVTtpQkFDdkI7Z0JBQ0Q7b0JBQ0ksT0FBTyxFQUFHLGNBQWM7b0JBQ3hCLFFBQVEsRUFBRSxrQkFBa0I7aUJBQy9CO2FBQ0o7WUFDRCxPQUFPLEVBQVU7Z0JBQ2IsdUJBQXVCO2dCQUN2Qix5QkFBeUI7YUFDNUI7U0FDSjtLQUNKLENBQUM7SUFDRixJQUFJLGVBQWUsRUFBRTtRQUNqQixJQUFJLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDckIsUUFBUSxDQUFDLEdBQUcsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDO1NBQ3RDO1FBQ0QsSUFBSSxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3JCLFFBQVEsQ0FBQyxHQUFHLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQztTQUN0QztRQUNELElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRTtZQUN4QixRQUFRLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7U0FDNUM7S0FDSjtJQUNELE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNZXRhZGF0YU92ZXJyaWRlLCBUZXN0QmVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBSb3V0ZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU3R1Yn0gZnJvbSAnLi9hY3RpdmF0ZWQucm91dGUuc3R1Yic7XG5pbXBvcnQge1JvdXRlckxpbmtTdHViRGlyZWN0aXZlfSBmcm9tICcuL3JvdXRlci5saW5rLnN0dWInO1xuaW1wb3J0IHtSb3V0ZXJPdXRsZXRTdHViQ29tcG9uZW50fSBmcm9tICcuL3JvdXRlci5vdXRsZXQuc3R1Yi5jb21wb25lbnQnO1xuaW1wb3J0IHtSb3V0ZXJTdHVifSBmcm9tICcuL3JvdXRlci5zdHViJztcblxuZXhwb3J0IGZ1bmN0aW9uIHN0dWJSb3V0ZXIoY3VzdG9tT3ZlcnJpZGVzPzogTWV0YWRhdGFPdmVycmlkZTxOZ01vZHVsZT4pOiBUZXN0QmVkIHtcbiAgICBjb25zdCBvdmVycmlkZTogTWV0YWRhdGFPdmVycmlkZTxOZ01vZHVsZT4gPSB7XG4gICAgICAgIHNldDoge1xuICAgICAgICAgICAgaW1wb3J0cyAgICAgICAgOiBbXSxcbiAgICAgICAgICAgIGRlY2xhcmF0aW9ucyAgIDogW1xuICAgICAgICAgICAgICAgIFJvdXRlckxpbmtTdHViRGlyZWN0aXZlLFxuICAgICAgICAgICAgICAgIFJvdXRlck91dGxldFN0dWJDb21wb25lbnRcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBwcm92aWRlcnMgICAgICA6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGUgOiBSb3V0ZXIsXG4gICAgICAgICAgICAgICAgICAgIHVzZUNsYXNzOiBSb3V0ZXJTdHViXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGUgOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgdXNlQ2xhc3M6IEFjdGl2YXRlZFJvdXRlU3R1YlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBleHBvcnRzICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICBSb3V0ZXJMaW5rU3R1YkRpcmVjdGl2ZSxcbiAgICAgICAgICAgICAgICBSb3V0ZXJPdXRsZXRTdHViQ29tcG9uZW50XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICB9O1xuICAgIGlmIChjdXN0b21PdmVycmlkZXMpIHtcbiAgICAgICAgaWYgKGN1c3RvbU92ZXJyaWRlcy5hZGQpIHtcbiAgICAgICAgICAgIG92ZXJyaWRlLmFkZCA9IGN1c3RvbU92ZXJyaWRlcy5hZGQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1c3RvbU92ZXJyaWRlcy5zZXQpIHtcbiAgICAgICAgICAgIG92ZXJyaWRlLnNldCA9IGN1c3RvbU92ZXJyaWRlcy5zZXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1c3RvbU92ZXJyaWRlcy5yZW1vdmUpIHtcbiAgICAgICAgICAgIG92ZXJyaWRlLnJlbW92ZSA9IGN1c3RvbU92ZXJyaWRlcy5yZW1vdmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFRlc3RCZWQub3ZlcnJpZGVNb2R1bGUoUm91dGVyTW9kdWxlLCBvdmVycmlkZSk7XG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class RouterOutletStubComponent {
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterOutletStubComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RouterOutletStubComponent, selector: "router-outlet", ngImport: i0, template: '', isInline: true }); }
6
+ }
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterOutletStubComponent, decorators: [{
8
+ type: Component,
9
+ args: [{
10
+ /* eslint-disable @angular-eslint/component-selector */
11
+ selector: 'router-outlet',
12
+ /* eslint-enable */
13
+ template: ''
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLm91dGxldC5zdHViLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BrZy9kYmctcmlza2l0L2FuZ3VsYXItdGVzdGluZy9zcmMvbGliL3N0dWJzL3JvdXRlci9yb3V0ZXIub3V0bGV0LnN0dWIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBUXhDLE1BQU0sT0FBTyx5QkFBeUI7K0dBQXpCLHlCQUF5QjttR0FBekIseUJBQXlCLHFEQUZ4QixFQUFFOzs0RkFFSCx5QkFBeUI7a0JBTnJDLFNBQVM7bUJBQUM7b0JBQ1AsdURBQXVEO29CQUN2RCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsbUJBQW1CO29CQUNuQixRQUFRLEVBQUUsRUFBRTtpQkFDZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuICAgIHNlbGVjdG9yOiAncm91dGVyLW91dGxldCcsXG4gICAgLyogZXNsaW50LWVuYWJsZSAqL1xuICAgIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBjbGFzcyBSb3V0ZXJPdXRsZXRTdHViQ29tcG9uZW50IHtcbn1cbiJdfQ==
@@ -0,0 +1,79 @@
1
+ import { EventEmitter, Injectable } from '@angular/core';
2
+ import { NavigationEnd, UrlSegment, UrlSegmentGroup } from '@angular/router';
3
+ import * as i0 from "@angular/core";
4
+ export class Snapshot {
5
+ constructor(stub) {
6
+ this.stub = stub;
7
+ }
8
+ get url() {
9
+ return this.stub.getCurrentURL();
10
+ }
11
+ }
12
+ // @dynamic
13
+ export class RouterStub {
14
+ constructor() {
15
+ this.id = 0;
16
+ this.navigated = true;
17
+ this.currentUrlTree = this.createUrlTree(['/dashboard']);
18
+ this.routerState = {
19
+ snapshot: new Snapshot(this)
20
+ };
21
+ this.events = new EventEmitter();
22
+ }
23
+ getURLTree(url) {
24
+ if (Array.isArray(url)) {
25
+ return this.createUrlTree(url);
26
+ }
27
+ if (url instanceof Object) {
28
+ return url;
29
+ }
30
+ return this.createUrlTree(url.split('/'));
31
+ }
32
+ navigateByUrl(url) {
33
+ this.currentUrlTree = this.getURLTree(url);
34
+ this.emitNavigate();
35
+ return url;
36
+ }
37
+ navigate(commands, extras) {
38
+ this.currentUrlTree = this.getURLTree(commands);
39
+ this.emitNavigate();
40
+ return [commands, extras];
41
+ }
42
+ emitNavigate() {
43
+ this.id++;
44
+ const urlString = this.getCurrentURL();
45
+ this.events.emit(new NavigationEnd(this.id, urlString, urlString));
46
+ }
47
+ isActive(url) {
48
+ return this.getCurrentURL().indexOf(RouterStub.serializeUrl(url)) !== -1;
49
+ }
50
+ getCurrentURL() {
51
+ return RouterStub.serializeUrl(this.currentUrlTree);
52
+ }
53
+ createUrlTree(commands, extras) {
54
+ const _b = extras || {};
55
+ const queryParams = _b.queryParams || {};
56
+ const fragment = _b.fragment || '';
57
+ return {
58
+ root: new UrlSegmentGroup(commands.map((command) => {
59
+ return new UrlSegment(command, {});
60
+ }), {}),
61
+ queryParams,
62
+ fragment,
63
+ queryParamMap: {
64
+ ...new Map(),
65
+ getAll: () => [],
66
+ keys: []
67
+ }
68
+ };
69
+ }
70
+ static serializeUrl(url) {
71
+ return url.root.segments.map((segment) => segment.path).join('/');
72
+ }
73
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterStub, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
74
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterStub }); }
75
+ }
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterStub, decorators: [{
77
+ type: Injectable
78
+ }] });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnN0dWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLXRlc3Rpbmcvc3JjL2xpYi9zdHVicy9yb3V0ZXIvcm91dGVyLnN0dWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFDLGFBQWEsRUFBb0IsVUFBVSxFQUFFLGVBQWUsRUFBVSxNQUFNLGlCQUFpQixDQUFDOztBQUV0RyxNQUFNLE9BQU8sUUFBUTtJQUVqQixZQUEyQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO0lBQzNDLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDckMsQ0FBQztDQUNKO0FBRUQsV0FBVztBQUVYLE1BQU0sT0FBTyxVQUFVO0lBRHZCO1FBR1ksT0FBRSxHQUFHLENBQUMsQ0FBQztRQUVSLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFaEIsbUJBQWMsR0FBWSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUU5RCxnQkFBVyxHQUFHO1lBQ2pCLFFBQVEsRUFBRSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUM7U0FDL0IsQ0FBQztRQUVLLFdBQU0sR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7S0E2RGxGO0lBM0RVLFVBQVUsQ0FBQyxHQUE2QjtRQUMzQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQVksQ0FBQyxDQUFDO1NBQzNDO1FBRUQsSUFBSSxHQUFHLFlBQVksTUFBTSxFQUFFO1lBQ3ZCLE9BQU8sR0FBYyxDQUFDO1NBQ3pCO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFFLEdBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU0sYUFBYSxDQUFDLEdBQXFCO1FBQ3RDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU0sUUFBUSxDQUFDLFFBQWUsRUFBRSxNQUF5QjtRQUN0RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVPLFlBQVk7UUFDaEIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ1YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVNLFFBQVEsQ0FBQyxHQUFZO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVNLGFBQWE7UUFDaEIsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU0sYUFBYSxDQUFDLFFBQWUsRUFBRSxNQUF5QjtRQUMzRCxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ25DLE9BQU87WUFDSCxJQUFJLEVBQVcsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO2dCQUM3RCxPQUFPLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDUCxXQUFXO1lBQ1gsUUFBUTtZQUNSLGFBQWEsRUFBRTtnQkFDWCxHQUFHLElBQUksR0FBRyxFQUFFO2dCQUNaLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNoQixJQUFJLEVBQUksRUFBRTthQUNiO1NBQ0osQ0FBQztJQUNOLENBQUM7SUFFTSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQVk7UUFDbkMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFtQixFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7K0dBeEVRLFVBQVU7bUhBQVYsVUFBVTs7NEZBQVYsVUFBVTtrQkFEdEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvbkV4dHJhcywgVXJsU2VnbWVudCwgVXJsU2VnbWVudEdyb3VwLCBVcmxUcmVlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5leHBvcnQgY2xhc3MgU25hcHNob3Qge1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgc3R1YjogUm91dGVyU3R1Yikge1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0dWIuZ2V0Q3VycmVudFVSTCgpO1xuICAgIH1cbn1cblxuLy8gQGR5bmFtaWNcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSb3V0ZXJTdHViIHtcblxuICAgIHByaXZhdGUgaWQgPSAwO1xuXG4gICAgcHVibGljIG5hdmlnYXRlZCA9IHRydWU7XG5cbiAgICBwcml2YXRlIGN1cnJlbnRVcmxUcmVlOiBVcmxUcmVlID0gdGhpcy5jcmVhdGVVcmxUcmVlKFsnL2Rhc2hib2FyZCddKTtcblxuICAgIHB1YmxpYyByb3V0ZXJTdGF0ZSA9IHtcbiAgICAgICAgc25hcHNob3Q6IG5ldyBTbmFwc2hvdCh0aGlzKVxuICAgIH07XG5cbiAgICBwdWJsaWMgZXZlbnRzOiBFdmVudEVtaXR0ZXI8TmF2aWdhdGlvbkVuZD4gPSBuZXcgRXZlbnRFbWl0dGVyPE5hdmlnYXRpb25FbmQ+KCk7XG5cbiAgICBwdWJsaWMgZ2V0VVJMVHJlZSh1cmw6IHN0cmluZyB8IFVybFRyZWUgfCBhbnlbXSk6IFVybFRyZWUge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh1cmwpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVVcmxUcmVlKHVybCBhcyBhbnlbXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXJsIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdXJsIGFzIFVybFRyZWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVVcmxUcmVlKCh1cmwgYXMgc3RyaW5nKS5zcGxpdCgnLycpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmF2aWdhdGVCeVVybCh1cmw6IHN0cmluZyB8IFVybFRyZWUpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VXJsVHJlZSA9IHRoaXMuZ2V0VVJMVHJlZSh1cmwpO1xuICAgICAgICB0aGlzLmVtaXROYXZpZ2F0ZSgpO1xuICAgICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHB1YmxpYyBuYXZpZ2F0ZShjb21tYW5kczogYW55W10sIGV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VXJsVHJlZSA9IHRoaXMuZ2V0VVJMVHJlZShjb21tYW5kcyk7XG4gICAgICAgIHRoaXMuZW1pdE5hdmlnYXRlKCk7XG4gICAgICAgIHJldHVybiBbY29tbWFuZHMsIGV4dHJhc107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0TmF2aWdhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaWQrKztcbiAgICAgICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5nZXRDdXJyZW50VVJMKCk7XG4gICAgICAgIHRoaXMuZXZlbnRzLmVtaXQobmV3IE5hdmlnYXRpb25FbmQodGhpcy5pZCwgdXJsU3RyaW5nLCB1cmxTdHJpbmcpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNBY3RpdmUodXJsOiBVcmxUcmVlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEN1cnJlbnRVUkwoKS5pbmRleE9mKFJvdXRlclN0dWIuc2VyaWFsaXplVXJsKHVybCkpICE9PSAtMTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q3VycmVudFVSTCgpIHtcbiAgICAgICAgcmV0dXJuIFJvdXRlclN0dWIuc2VyaWFsaXplVXJsKHRoaXMuY3VycmVudFVybFRyZWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVVcmxUcmVlKGNvbW1hbmRzOiBhbnlbXSwgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyk6IFVybFRyZWUge1xuICAgICAgICBjb25zdCBfYiA9IGV4dHJhcyB8fCB7fTtcbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBfYi5xdWVyeVBhcmFtcyB8fCB7fTtcbiAgICAgICAgY29uc3QgZnJhZ21lbnQgPSBfYi5mcmFnbWVudCB8fCAnJztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJvb3QgICAgICAgICA6IG5ldyBVcmxTZWdtZW50R3JvdXAoY29tbWFuZHMubWFwKChjb21tYW5kOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVybFNlZ21lbnQoY29tbWFuZCwge30pO1xuICAgICAgICAgICAgfSksIHt9KSxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgZnJhZ21lbnQsXG4gICAgICAgICAgICBxdWVyeVBhcmFtTWFwOiB7XG4gICAgICAgICAgICAgICAgLi4ubmV3IE1hcCgpLFxuICAgICAgICAgICAgICAgIGdldEFsbDogKCkgPT4gW10sXG4gICAgICAgICAgICAgICAga2V5cyAgOiBbXVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2VyaWFsaXplVXJsKHVybDogVXJsVHJlZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB1cmwucm9vdC5zZWdtZW50cy5tYXAoKHNlZ21lbnQ6IFVybFNlZ21lbnQpID0+IHNlZ21lbnQucGF0aCkuam9pbignLycpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,50 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { DataTableModule } from '@dbg-riskit/angular-datatable';
3
+ import { FileModule } from '@dbg-riskit/angular-file';
4
+ import { CommonViewModule } from '@dbg-riskit/angular-view';
5
+ import { TestDataTableHostComponent } from './definitions/data.table.definition';
6
+ import { DownloadTestComponent } from './definitions/download.menu.page';
7
+ import { HighLighterDirectiveTestComponent } from './definitions/highlighter.directive.page';
8
+ import { TestLayoutHostComponent } from './definitions/layout.component.page';
9
+ import { TestMessageHostComponent } from './definitions/message.page';
10
+ import { LoginMenuStubComponent } from './stubs/login.menu.stub.component';
11
+ import { RouterLinkStubDirective } from './stubs/router/router.link.stub';
12
+ import { RouterOutletStubComponent } from './stubs/router/router.outlet.stub.component';
13
+ import * as i0 from "@angular/core";
14
+ export class TestingModule {
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
16
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: TestingModule, declarations: [DownloadTestComponent,
17
+ TestDataTableHostComponent,
18
+ HighLighterDirectiveTestComponent,
19
+ TestLayoutHostComponent,
20
+ RouterLinkStubDirective,
21
+ TestMessageHostComponent,
22
+ LoginMenuStubComponent,
23
+ RouterOutletStubComponent], imports: [CommonViewModule,
24
+ FileModule,
25
+ DataTableModule] }); }
26
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TestingModule, imports: [CommonViewModule,
27
+ FileModule,
28
+ DataTableModule] }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TestingModule, decorators: [{
31
+ type: NgModule,
32
+ args: [{
33
+ imports: [
34
+ CommonViewModule,
35
+ FileModule,
36
+ DataTableModule
37
+ ],
38
+ declarations: [
39
+ DownloadTestComponent,
40
+ TestDataTableHostComponent,
41
+ HighLighterDirectiveTestComponent,
42
+ TestLayoutHostComponent,
43
+ RouterLinkStubDirective,
44
+ TestMessageHostComponent,
45
+ LoginMenuStubComponent,
46
+ RouterOutletStubComponent
47
+ ]
48
+ }]
49
+ }] });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLXRlc3Rpbmcvc3JjL2xpYi90ZXN0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFMUQsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDM0YsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sNkNBQTZDLENBQUM7O0FBbUJ0RixNQUFNLE9BQU8sYUFBYTsrR0FBYixhQUFhO2dIQUFiLGFBQWEsaUJBVmxCLHFCQUFxQjtZQUNyQiwwQkFBMEI7WUFDMUIsaUNBQWlDO1lBQ2pDLHVCQUF1QjtZQUN2Qix1QkFBdUI7WUFDdkIsd0JBQXdCO1lBQ3hCLHNCQUFzQjtZQUN0Qix5QkFBeUIsYUFaekIsZ0JBQWdCO1lBQ2hCLFVBQVU7WUFDVixlQUFlO2dIQWFWLGFBQWEsWUFmbEIsZ0JBQWdCO1lBQ2hCLFVBQVU7WUFDVixlQUFlOzs0RkFhVixhQUFhO2tCQWpCekIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQU87d0JBQ1YsZ0JBQWdCO3dCQUNoQixVQUFVO3dCQUNWLGVBQWU7cUJBQ2xCO29CQUNELFlBQVksRUFBRTt3QkFDVixxQkFBcUI7d0JBQ3JCLDBCQUEwQjt3QkFDMUIsaUNBQWlDO3dCQUNqQyx1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4QixzQkFBc0I7d0JBQ3RCLHlCQUF5QjtxQkFDNUI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtEYXRhVGFibGVNb2R1bGV9IGZyb20gJ0BkYmctcmlza2l0L2FuZ3VsYXItZGF0YXRhYmxlJztcbmltcG9ydCB7RmlsZU1vZHVsZX0gZnJvbSAnQGRiZy1yaXNraXQvYW5ndWxhci1maWxlJztcbmltcG9ydCB7Q29tbW9uVmlld01vZHVsZX0gZnJvbSAnQGRiZy1yaXNraXQvYW5ndWxhci12aWV3JztcblxuaW1wb3J0IHtUZXN0RGF0YVRhYmxlSG9zdENvbXBvbmVudH0gZnJvbSAnLi9kZWZpbml0aW9ucy9kYXRhLnRhYmxlLmRlZmluaXRpb24nO1xuaW1wb3J0IHtEb3dubG9hZFRlc3RDb21wb25lbnR9IGZyb20gJy4vZGVmaW5pdGlvbnMvZG93bmxvYWQubWVudS5wYWdlJztcbmltcG9ydCB7SGlnaExpZ2h0ZXJEaXJlY3RpdmVUZXN0Q29tcG9uZW50fSBmcm9tICcuL2RlZmluaXRpb25zL2hpZ2hsaWdodGVyLmRpcmVjdGl2ZS5wYWdlJztcbmltcG9ydCB7VGVzdExheW91dEhvc3RDb21wb25lbnR9IGZyb20gJy4vZGVmaW5pdGlvbnMvbGF5b3V0LmNvbXBvbmVudC5wYWdlJztcbmltcG9ydCB7VGVzdE1lc3NhZ2VIb3N0Q29tcG9uZW50fSBmcm9tICcuL2RlZmluaXRpb25zL21lc3NhZ2UucGFnZSc7XG5pbXBvcnQge0xvZ2luTWVudVN0dWJDb21wb25lbnR9IGZyb20gJy4vc3R1YnMvbG9naW4ubWVudS5zdHViLmNvbXBvbmVudCc7XG5pbXBvcnQge1JvdXRlckxpbmtTdHViRGlyZWN0aXZlfSBmcm9tICcuL3N0dWJzL3JvdXRlci9yb3V0ZXIubGluay5zdHViJztcbmltcG9ydCB7Um91dGVyT3V0bGV0U3R1YkNvbXBvbmVudH0gZnJvbSAnLi9zdHVicy9yb3V0ZXIvcm91dGVyLm91dGxldC5zdHViLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0cyAgICAgOiBbXG4gICAgICAgIENvbW1vblZpZXdNb2R1bGUsXG4gICAgICAgIEZpbGVNb2R1bGUsXG4gICAgICAgIERhdGFUYWJsZU1vZHVsZVxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIERvd25sb2FkVGVzdENvbXBvbmVudCxcbiAgICAgICAgVGVzdERhdGFUYWJsZUhvc3RDb21wb25lbnQsXG4gICAgICAgIEhpZ2hMaWdodGVyRGlyZWN0aXZlVGVzdENvbXBvbmVudCxcbiAgICAgICAgVGVzdExheW91dEhvc3RDb21wb25lbnQsXG4gICAgICAgIFJvdXRlckxpbmtTdHViRGlyZWN0aXZlLFxuICAgICAgICBUZXN0TWVzc2FnZUhvc3RDb21wb25lbnQsXG4gICAgICAgIExvZ2luTWVudVN0dWJDb21wb25lbnQsXG4gICAgICAgIFJvdXRlck91dGxldFN0dWJDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRlc3RpbmdNb2R1bGUge1xufVxuIl19
@@ -0,0 +1,48 @@
1
+ import { TestBed } from '@angular/core/testing';
2
+ import { CommonViewModule, NoopAnimationsCommonViewModule } from '@dbg-riskit/angular-view';
3
+ import { COMPILE_TIMEOUT_INTERVAL } from './environment';
4
+ export function disableMaterialAnimations(ngModule) {
5
+ TestBed.overrideModule(ngModule, {
6
+ remove: {
7
+ imports: [CommonViewModule]
8
+ },
9
+ add: {
10
+ imports: [NoopAnimationsCommonViewModule]
11
+ }
12
+ });
13
+ }
14
+ export function compileTestBed(compileFunction, destroyFunction, stubMatchMedia = true) {
15
+ let matchMedia;
16
+ beforeEach((done) => {
17
+ if (stubMatchMedia) {
18
+ matchMedia = window.matchMedia;
19
+ window.matchMedia = fakeMatchMedia();
20
+ }
21
+ compileFunction()
22
+ .then(done)
23
+ .catch((err) => {
24
+ done.fail(err);
25
+ });
26
+ }, COMPILE_TIMEOUT_INTERVAL);
27
+ afterEach(() => {
28
+ if (destroyFunction) {
29
+ destroyFunction();
30
+ }
31
+ if (stubMatchMedia) {
32
+ window.matchMedia = matchMedia;
33
+ }
34
+ }, COMPILE_TIMEOUT_INTERVAL);
35
+ }
36
+ function fakeMatchMedia(matches = false) {
37
+ return (mediaQuery) => ({
38
+ matches,
39
+ media: mediaQuery,
40
+ onchange: () => null,
41
+ addListener: () => null,
42
+ addEventListener: () => null,
43
+ removeListener: () => null,
44
+ removeEventListener: () => null,
45
+ dispatchEvent: () => true
46
+ });
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLXRlc3Rpbmcvc3JjL2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGdCQUFnQixFQUFFLDhCQUE4QixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDMUYsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXZELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxRQUFtQjtJQUN6RCxPQUFPLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRTtRQUM3QixNQUFNLEVBQUU7WUFDSixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztTQUM5QjtRQUNELEdBQUcsRUFBSztZQUNKLE9BQU8sRUFBRSxDQUFDLDhCQUE4QixDQUFDO1NBQzVDO0tBQ0osQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsZUFBbUMsRUFBRSxlQUE0QixFQUNqRSxjQUFjLEdBQUcsSUFBSTtJQUVoRCxJQUFJLFVBQWUsQ0FBQztJQUNwQixVQUFVLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRTtRQUN4QixJQUFJLGNBQWMsRUFBRTtZQUNoQixVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUMvQixNQUFNLENBQUMsVUFBVSxHQUFHLGNBQWMsRUFBRSxDQUFDO1NBQ3hDO1FBRUQsZUFBZSxFQUFFO2FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQzthQUNWLEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztJQUU3QixTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ1gsSUFBSSxlQUFlLEVBQUU7WUFDakIsZUFBZSxFQUFFLENBQUM7U0FDckI7UUFFRCxJQUFJLGNBQWMsRUFBRTtZQUNoQixNQUFNLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztTQUNsQztJQUNMLENBQUMsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxPQUFPLEdBQUcsS0FBSztJQUNuQyxPQUFPLENBQUMsVUFBa0IsRUFBa0IsRUFBRSxDQUFDLENBQUM7UUFDNUMsT0FBTztRQUNQLEtBQUssRUFBZ0IsVUFBVTtRQUMvQixRQUFRLEVBQWEsR0FBRyxFQUFFLENBQUMsSUFBVztRQUN0QyxXQUFXLEVBQVUsR0FBRyxFQUFFLENBQUMsSUFBVztRQUN0QyxnQkFBZ0IsRUFBSyxHQUFHLEVBQUUsQ0FBQyxJQUFXO1FBQ3RDLGNBQWMsRUFBTyxHQUFHLEVBQUUsQ0FBQyxJQUFXO1FBQ3RDLG1CQUFtQixFQUFFLEdBQUcsRUFBRSxDQUFDLElBQVc7UUFDdEMsYUFBYSxFQUFRLEdBQUcsRUFBRSxDQUFDLElBQUk7S0FDbEMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Rlc3RCZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQge0NvbW1vblZpZXdNb2R1bGUsIE5vb3BBbmltYXRpb25zQ29tbW9uVmlld01vZHVsZX0gZnJvbSAnQGRiZy1yaXNraXQvYW5ndWxhci12aWV3JztcbmltcG9ydCB7Q09NUElMRV9USU1FT1VUX0lOVEVSVkFMfSBmcm9tICcuL2Vudmlyb25tZW50JztcblxuZXhwb3J0IGZ1bmN0aW9uIGRpc2FibGVNYXRlcmlhbEFuaW1hdGlvbnMobmdNb2R1bGU6IFR5cGU8YW55Pikge1xuICAgIFRlc3RCZWQub3ZlcnJpZGVNb2R1bGUobmdNb2R1bGUsIHtcbiAgICAgICAgcmVtb3ZlOiB7XG4gICAgICAgICAgICBpbXBvcnRzOiBbQ29tbW9uVmlld01vZHVsZV1cbiAgICAgICAgfSxcbiAgICAgICAgYWRkICAgOiB7XG4gICAgICAgICAgICBpbXBvcnRzOiBbTm9vcEFuaW1hdGlvbnNDb21tb25WaWV3TW9kdWxlXVxuICAgICAgICB9XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlVGVzdEJlZChjb21waWxlRnVuY3Rpb246ICgpID0+IFByb21pc2U8YW55PiwgZGVzdHJveUZ1bmN0aW9uPzogKCkgPT4gdm9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViTWF0Y2hNZWRpYSA9IHRydWUpIHtcblxuICAgIGxldCBtYXRjaE1lZGlhOiBhbnk7XG4gICAgYmVmb3JlRWFjaCgoZG9uZTogRG9uZUZuKSA9PiB7XG4gICAgICAgIGlmIChzdHViTWF0Y2hNZWRpYSkge1xuICAgICAgICAgICAgbWF0Y2hNZWRpYSA9IHdpbmRvdy5tYXRjaE1lZGlhO1xuICAgICAgICAgICAgd2luZG93Lm1hdGNoTWVkaWEgPSBmYWtlTWF0Y2hNZWRpYSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29tcGlsZUZ1bmN0aW9uKClcbiAgICAgICAgICAgIC50aGVuKGRvbmUpXG4gICAgICAgICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgZG9uZS5mYWlsKGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICB9LCBDT01QSUxFX1RJTUVPVVRfSU5URVJWQUwpO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgICAgaWYgKGRlc3Ryb3lGdW5jdGlvbikge1xuICAgICAgICAgICAgZGVzdHJveUZ1bmN0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3R1Yk1hdGNoTWVkaWEpIHtcbiAgICAgICAgICAgIHdpbmRvdy5tYXRjaE1lZGlhID0gbWF0Y2hNZWRpYTtcbiAgICAgICAgfVxuICAgIH0sIENPTVBJTEVfVElNRU9VVF9JTlRFUlZBTCk7XG59XG5cbmZ1bmN0aW9uIGZha2VNYXRjaE1lZGlhKG1hdGNoZXMgPSBmYWxzZSkge1xuICAgIHJldHVybiAobWVkaWFRdWVyeTogc3RyaW5nKTogTWVkaWFRdWVyeUxpc3QgPT4gKHtcbiAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgbWVkaWEgICAgICAgICAgICAgIDogbWVkaWFRdWVyeSxcbiAgICAgICAgb25jaGFuZ2UgICAgICAgICAgIDogKCkgPT4gbnVsbCBhcyBhbnksXG4gICAgICAgIGFkZExpc3RlbmVyICAgICAgICA6ICgpID0+IG51bGwgYXMgYW55LFxuICAgICAgICBhZGRFdmVudExpc3RlbmVyICAgOiAoKSA9PiBudWxsIGFzIGFueSxcbiAgICAgICAgcmVtb3ZlTGlzdGVuZXIgICAgIDogKCkgPT4gbnVsbCBhcyBhbnksXG4gICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6ICgpID0+IG51bGwgYXMgYW55LFxuICAgICAgICBkaXNwYXRjaEV2ZW50ICAgICAgOiAoKSA9PiB0cnVlXG4gICAgfSk7XG59XG4iXX0=