@firestitch/form 13.2.0 → 13.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/app/components/confirm-unsaved/confirm-unsaved.component.d.ts +21 -0
  2. package/app/components/confirm-unsaved/index.d.ts +1 -0
  3. package/app/components/form-dialog-actions/form-dialog-actions.component.d.ts +1 -1
  4. package/app/components/index.d.ts +1 -0
  5. package/app/directives/button.directive.d.ts +2 -2
  6. package/app/directives/form/form.directive.d.ts +5 -7
  7. package/app/directives/form-dialog-close.directive.d.ts +2 -2
  8. package/app/directives/index.d.ts +2 -2
  9. package/app/directives/validators/compare.directive.d.ts +2 -2
  10. package/app/directives/validators/control.directive.d.ts +12 -12
  11. package/app/directives/validators/function.directive.d.ts +1 -1
  12. package/app/directives/validators/integer.directive.d.ts +1 -1
  13. package/app/directives/validators/required.directive.d.ts +1 -1
  14. package/app/enums/index.d.ts +2 -0
  15. package/app/fs-form.module.d.ts +7 -5
  16. package/app/guards/form-deactivate.guard.d.ts +2 -4
  17. package/app/helpers/index.d.ts +0 -1
  18. package/app/services/fsform.service.d.ts +5 -1
  19. package/esm2020/app/components/confirm-unsaved/confirm-unsaved.component.mjs +44 -0
  20. package/esm2020/app/components/confirm-unsaved/index.mjs +2 -0
  21. package/esm2020/app/components/form-dialog-actions/form-dialog-actions.component.mjs +3 -3
  22. package/esm2020/app/components/form-dialog-actions/index.mjs +1 -1
  23. package/esm2020/app/components/index.mjs +2 -1
  24. package/esm2020/app/directives/button.directive.mjs +6 -6
  25. package/esm2020/app/directives/form/form.directive.mjs +28 -32
  26. package/esm2020/app/directives/form/index.mjs +1 -1
  27. package/esm2020/app/directives/form-dialog-close.directive.mjs +6 -6
  28. package/esm2020/app/directives/index.mjs +3 -3
  29. package/esm2020/app/directives/validators/compare.directive.mjs +4 -6
  30. package/esm2020/app/directives/validators/control.directive.mjs +20 -21
  31. package/esm2020/app/directives/validators/function.directive.mjs +5 -5
  32. package/esm2020/app/directives/validators/index.mjs +1 -1
  33. package/esm2020/app/directives/validators/integer.directive.mjs +7 -9
  34. package/esm2020/app/directives/validators/required.directive.mjs +6 -8
  35. package/esm2020/app/enums/index.mjs +3 -0
  36. package/esm2020/app/fs-form.module.mjs +32 -23
  37. package/esm2020/app/guards/form-deactivate.guard.mjs +13 -16
  38. package/esm2020/app/helpers/get-form-errors.mjs +1 -1
  39. package/esm2020/app/helpers/index.mjs +1 -2
  40. package/esm2020/app/services/fsform.service.mjs +59 -7
  41. package/esm2020/public_api.mjs +16 -16
  42. package/fesm2015/firestitch-form.mjs +1173 -1153
  43. package/fesm2015/firestitch-form.mjs.map +1 -1
  44. package/fesm2020/firestitch-form.mjs +1173 -1155
  45. package/fesm2020/firestitch-form.mjs.map +1 -1
  46. package/package.json +1 -5
  47. package/public_api.d.ts +16 -16
  48. package/app/helpers/confirm-unsaved.d.ts +0 -5
  49. package/esm2020/app/helpers/confirm-unsaved.mjs +0 -72
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firestitch/form",
3
- "version": "13.2.0",
3
+ "version": "13.3.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/Firestitch/ngx-form"
@@ -16,10 +16,6 @@
16
16
  "bugs": {
17
17
  "url": "https://github.com/Firestitch/ngx-form/issues"
18
18
  },
19
- "peerDependencies": {
20
- "@firestitch/common": ">=7.0.2",
21
- "@firestitch/drawer": ">=8.3.5"
22
- },
23
19
  "sideEffects": false,
24
20
  "module": "fesm2015/firestitch-form.mjs",
25
21
  "es2020": "fesm2020/firestitch-form.mjs",
package/public_api.d.ts CHANGED
@@ -1,34 +1,34 @@
1
1
  export { FsFormModule } from './app/fs-form.module';
2
2
  export { FsForm } from './app/services/fsform.service';
3
+ export { FsFormGreaterDirective, FsFormGreaterEqualDirective, FsFormLesserEqualDirective, FsFormTemplateDirective } from './app/directives';
4
+ export { FsButtonDirective } from './app/directives/button.directive';
5
+ export { FsFormDialogCloseDirective } from './app/directives/form-dialog-close.directive';
3
6
  export { FsFormDirective } from './app/directives/form/form.directive';
7
+ export { FsSubmitButtonDirective } from './app/directives/submit-button.directive';
8
+ export { FsFormCompareDirective } from './app/directives/validators/compare.directive';
4
9
  export { FsControlDirective } from './app/directives/validators/control.directive';
5
- export { FsFormRequiredDirective } from './app/directives/validators/required.directive';
6
- export { FsFormMinDirective } from './app/directives/validators/min.directive';
7
- export { FsFormMaxDirective } from './app/directives/validators/max.directive';
8
- export { FsFormMinLengthDirective } from './app/directives/validators/minlength.directive';
9
- export { FsFormMaxLengthDirective } from './app/directives/validators/maxlength.directive';
10
+ export { FsFormDateRangeDirective } from './app/directives/validators/daterange.directive';
10
11
  export { FsFormEmailDirective } from './app/directives/validators/email.directive';
11
12
  export { FsFormEmailsDirective } from './app/directives/validators/emails.directive';
12
- export { FsFormPhoneDirective } from './app/directives/validators/phone.directive';
13
- export { FsFormCompareDirective } from './app/directives/validators/compare.directive';
13
+ export { FsFormFunctionDirective } from './app/directives/validators/function.directive';
14
14
  export { FsFormIntegerDirective } from './app/directives/validators/integer.directive';
15
+ export { FsFormLesserDirective } from './app/directives/validators/lesser.directive';
16
+ export { FsFormMaxDirective } from './app/directives/validators/max.directive';
17
+ export { FsFormMaxLengthDirective } from './app/directives/validators/maxlength.directive';
18
+ export { FsFormMinDirective } from './app/directives/validators/min.directive';
19
+ export { FsFormMinLengthDirective } from './app/directives/validators/minlength.directive';
20
+ export { FsFormNoFsValidatorsDirective } from './app/directives/validators/no-fs-validators.directive';
15
21
  export { FsFormNumericDirective } from './app/directives/validators/numeric.directive';
16
22
  export { FsFormPatternDirective } from './app/directives/validators/pattern.directive';
17
- export { FsFormFunctionDirective } from './app/directives/validators/function.directive';
18
- export { FsFormDateRangeDirective } from './app/directives/validators/daterange.directive';
19
- export { FsFormLesserDirective } from './app/directives/validators/lesser.directive';
23
+ export { FsFormPhoneDirective } from './app/directives/validators/phone.directive';
24
+ export { FsFormRequiredDirective } from './app/directives/validators/required.directive';
20
25
  export { FsFormUrlDirective } from './app/directives/validators/url.directive';
21
- export { FsFormDialogCloseDirective } from './app/directives/form-dialog-close.directive';
22
- export { FsButtonDirective } from './app/directives/button.directive';
23
- export { FsSubmitButtonDirective } from './app/directives/submit-button.directive';
24
26
  export { FsFormValidateDirective } from './app/directives/validators/validate.directive';
25
- export { FsFormNoFsValidatorsDirective } from './app/directives/validators/no-fs-validators.directive';
26
- export { FsFormTemplateDirective, FsFormGreaterEqualDirective, FsFormLesserEqualDirective, FsFormGreaterDirective } from './app/directives';
27
27
  export { FsFormDialogActionsComponent, FsFormTemplateComponent, FsFormTemplateOutletComponent } from './app/components';
28
28
  export { FsValidators } from './app/validators/validators';
29
29
  export { FormDeactivateGuard } from './app/guards/form-deactivate.guard';
30
+ export { ConfirmConfig } from './app/interfaces/confirm-config';
30
31
  export { SubmitEvent } from './app/interfaces/submit-event';
31
32
  export { SubmittedEvent } from './app/interfaces/submitted-event';
32
- export { ConfirmConfig } from './app/interfaces/confirm-config';
33
33
  export { ConfirmResult } from './app/enums/confirm-result';
34
34
  export { FormStatus } from './app/enums/form-status';
@@ -1,5 +0,0 @@
1
- import { FsPrompt } from '@firestitch/prompt';
2
- import { Observable } from 'rxjs';
3
- import { FsFormDirective } from '../directives/form/form.directive';
4
- import { ConfirmResult } from '../enums/confirm-result';
5
- export declare function confirmUnsaved(directives: FsFormDirective[], prompt: FsPrompt): Observable<ConfirmResult>;
@@ -1,72 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { first } from 'rxjs/operators';
3
- import { ConfirmResult } from '../enums/confirm-result';
4
- export function confirmUnsaved(directives, prompt) {
5
- return new Observable(observer => {
6
- // TODO support for multiple directives per page
7
- const form = directives[0];
8
- if (!form.confirm || !form.ngForm.dirty) {
9
- observer.next(ConfirmResult.Pristine);
10
- observer.complete();
11
- return;
12
- }
13
- let title = 'You Have Unsaved Changes';
14
- let message = 'What would you like to do with your changes?';
15
- let saveLabel = 'Save & Continue';
16
- let discardLabel = 'Discard Changes & Continue';
17
- let cancelLabel = 'Review Changes';
18
- if (typeof form.confirm === 'object') {
19
- title = form.confirm.title || title;
20
- message = form.confirm.message || message;
21
- saveLabel = form.confirm.saveLabel || saveLabel;
22
- discardLabel = form.confirm.discardLabel || discardLabel;
23
- cancelLabel = form.confirm.cancelLabel || cancelLabel;
24
- }
25
- prompt.confirm({
26
- title: title,
27
- template: message,
28
- dialogConfig: { width: 'auto' },
29
- buttons: [
30
- {
31
- label: saveLabel,
32
- color: 'primary',
33
- value: 'save'
34
- },
35
- {
36
- label: discardLabel,
37
- value: 'discard'
38
- },
39
- {
40
- label: cancelLabel,
41
- cancel: true
42
- }
43
- ]
44
- }).subscribe((value) => {
45
- if (value === 'discard') {
46
- observer.next(ConfirmResult.Discard);
47
- observer.complete();
48
- form.reset();
49
- }
50
- if (value === 'save') {
51
- form.submitted
52
- .pipe(first())
53
- .subscribe(() => {
54
- observer.next(ConfirmResult.Save);
55
- observer.complete();
56
- });
57
- form.invalid
58
- .pipe(first())
59
- .subscribe(() => {
60
- observer.next(ConfirmResult.Invalid);
61
- observer.complete();
62
- });
63
- form.ngForm.control.markAsPristine();
64
- form.triggerSubmit({ confirmed: true });
65
- }
66
- }, (error) => {
67
- observer.next(ConfirmResult.Review);
68
- observer.complete();
69
- });
70
- });
71
- }
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS11bnNhdmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9oZWxwZXJzL2NvbmZpcm0tdW5zYXZlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHeEQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxVQUE2QixFQUFFLE1BQWdCO0lBQzVFLE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDL0IsZ0RBQWdEO1FBQ2hELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ3ZDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQixPQUFPO1NBQ1I7UUFFRCxJQUFJLEtBQUssR0FBRywwQkFBMEIsQ0FBQztRQUN2QyxJQUFJLE9BQU8sR0FBRyw4Q0FBOEMsQ0FBQztRQUM3RCxJQUFJLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztRQUNsQyxJQUFJLFlBQVksR0FBRyw0QkFBNEIsQ0FBQztRQUNoRCxJQUFJLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQztRQUVuQyxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDcEMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztZQUNwQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDO1lBQzFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUM7WUFDaEQsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQztZQUN6RCxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDO1NBQ3ZEO1FBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUNiLEtBQUssRUFBRSxLQUFLO1lBQ1osUUFBUSxFQUFFLE9BQU87WUFDakIsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUMvQixPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLEtBQUssRUFBRSxTQUFTO29CQUNoQixLQUFLLEVBQUUsTUFBTTtpQkFDZDtnQkFDRDtvQkFDRSxLQUFLLEVBQUUsWUFBWTtvQkFDbkIsS0FBSyxFQUFFLFNBQVM7aUJBQ2pCO2dCQUNEO29CQUNFLEtBQUssRUFBRSxXQUFXO29CQUNsQixNQUFNLEVBQUUsSUFBSTtpQkFDYjthQUNGO1NBQ0YsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBRXJCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtnQkFDdkIsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2Q7WUFFRCxJQUFJLEtBQUssS0FBSyxNQUFNLEVBQUU7Z0JBRXBCLElBQUksQ0FBQyxTQUFTO3FCQUNiLElBQUksQ0FDSCxLQUFLLEVBQUUsQ0FDUjtxQkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO29CQUNkLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNsQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxPQUFPO3FCQUNYLElBQUksQ0FDSCxLQUFLLEVBQUUsQ0FDUjtxQkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO29CQUNkLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNyQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDekM7UUFFSCxDQUFDLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNoQixRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGc1Byb21wdCB9IGZyb20gJ0BmaXJlc3RpdGNoL3Byb21wdCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2Zvcm0vZm9ybS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29uZmlybVJlc3VsdCB9IGZyb20gJy4uL2VudW1zL2NvbmZpcm0tcmVzdWx0JztcblxuXG5leHBvcnQgZnVuY3Rpb24gY29uZmlybVVuc2F2ZWQoZGlyZWN0aXZlczogRnNGb3JtRGlyZWN0aXZlW10sIHByb21wdDogRnNQcm9tcHQpOiBPYnNlcnZhYmxlPENvbmZpcm1SZXN1bHQ+IHtcbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAvLyBUT0RPIHN1cHBvcnQgZm9yIG11bHRpcGxlIGRpcmVjdGl2ZXMgcGVyIHBhZ2VcbiAgICBjb25zdCBmb3JtID0gZGlyZWN0aXZlc1swXTtcblxuICAgIGlmICghZm9ybS5jb25maXJtIHx8ICFmb3JtLm5nRm9ybS5kaXJ0eSkge1xuICAgICAgb2JzZXJ2ZXIubmV4dChDb25maXJtUmVzdWx0LlByaXN0aW5lKTtcbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHRpdGxlID0gJ1lvdSBIYXZlIFVuc2F2ZWQgQ2hhbmdlcyc7XG4gICAgbGV0IG1lc3NhZ2UgPSAnV2hhdCB3b3VsZCB5b3UgbGlrZSB0byBkbyB3aXRoIHlvdXIgY2hhbmdlcz8nO1xuICAgIGxldCBzYXZlTGFiZWwgPSAnU2F2ZSAmIENvbnRpbnVlJztcbiAgICBsZXQgZGlzY2FyZExhYmVsID0gJ0Rpc2NhcmQgQ2hhbmdlcyAmIENvbnRpbnVlJztcbiAgICBsZXQgY2FuY2VsTGFiZWwgPSAnUmV2aWV3IENoYW5nZXMnO1xuXG4gICAgaWYgKHR5cGVvZiBmb3JtLmNvbmZpcm0gPT09ICdvYmplY3QnKSB7XG4gICAgICB0aXRsZSA9IGZvcm0uY29uZmlybS50aXRsZSB8fCB0aXRsZTtcbiAgICAgIG1lc3NhZ2UgPSBmb3JtLmNvbmZpcm0ubWVzc2FnZSB8fCBtZXNzYWdlO1xuICAgICAgc2F2ZUxhYmVsID0gZm9ybS5jb25maXJtLnNhdmVMYWJlbCB8fCBzYXZlTGFiZWw7XG4gICAgICBkaXNjYXJkTGFiZWwgPSBmb3JtLmNvbmZpcm0uZGlzY2FyZExhYmVsIHx8IGRpc2NhcmRMYWJlbDtcbiAgICAgIGNhbmNlbExhYmVsID0gZm9ybS5jb25maXJtLmNhbmNlbExhYmVsIHx8IGNhbmNlbExhYmVsO1xuICAgIH1cblxuICAgIHByb21wdC5jb25maXJtKHtcbiAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgIHRlbXBsYXRlOiBtZXNzYWdlLFxuICAgICAgZGlhbG9nQ29uZmlnOiB7IHdpZHRoOiAnYXV0bycgfSxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiBzYXZlTGFiZWwsXG4gICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICB2YWx1ZTogJ3NhdmUnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogZGlzY2FyZExhYmVsLFxuICAgICAgICAgIHZhbHVlOiAnZGlzY2FyZCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiBjYW5jZWxMYWJlbCxcbiAgICAgICAgICBjYW5jZWw6IHRydWVcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblxuICAgICAgaWYgKHZhbHVlID09PSAnZGlzY2FyZCcpIHtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChDb25maXJtUmVzdWx0LkRpc2NhcmQpO1xuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICBmb3JtLnJlc2V0KCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gJ3NhdmUnKSB7XG5cbiAgICAgICAgZm9ybS5zdWJtaXR0ZWRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlyc3QoKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoQ29uZmlybVJlc3VsdC5TYXZlKTtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmb3JtLmludmFsaWRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlyc3QoKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoQ29uZmlybVJlc3VsdC5JbnZhbGlkKTtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmb3JtLm5nRm9ybS5jb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgIGZvcm0udHJpZ2dlclN1Ym1pdCh7IGNvbmZpcm1lZDogdHJ1ZSB9KTtcbiAgICAgIH1cblxuICAgIH0sIChlcnJvcjogYW55KSA9PiB7XG4gICAgICBvYnNlcnZlci5uZXh0KENvbmZpcm1SZXN1bHQuUmV2aWV3KTtcbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgfSk7XG4gIH0pO1xufVxuIl19