ngx-material-entity 0.1.4 → 0.1.5

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 (130) hide show
  1. package/capsulation/lodash.utilities.d.ts +62 -0
  2. package/capsulation/reflect.utilities.d.ts +56 -0
  3. package/classes/base.builder.d.ts +2 -1
  4. package/classes/date.utilities.d.ts +16 -4
  5. package/classes/entity.model.d.ts +7 -1
  6. package/classes/entity.service.d.ts +38 -1
  7. package/classes/entity.utilities.d.ts +43 -16
  8. package/classes/file.utilities.d.ts +52 -0
  9. package/components/input/add-array-item-dialog-data.builder.d.ts +3 -2
  10. package/components/input/add-array-item-dialog-data.d.ts +2 -1
  11. package/components/input/array/array-date-input/array-date-input.component.d.ts +22 -0
  12. package/components/input/array/array-date-range-input/array-date-range-input.component.d.ts +30 -0
  13. package/components/input/array/array-date-time-input/array-date-time-input.component.d.ts +32 -0
  14. package/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.d.ts +58 -0
  15. package/components/input/array/array-string-chips-input/array-string-chips-input.component.d.ts +51 -0
  16. package/components/input/array/array-table.class.d.ts +48 -0
  17. package/components/input/boolean/boolean-checkbox-input/boolean-checkbox-input.component.d.ts +17 -0
  18. package/components/input/boolean/boolean-dropdown-input/boolean-dropdown-input.component.d.ts +17 -0
  19. package/components/input/boolean/boolean-toggle-input/boolean-toggle-input.component.d.ts +17 -0
  20. package/components/input/date/date-input/date-input.component.d.ts +21 -0
  21. package/components/input/date/date-range-input/date-range-input.component.d.ts +27 -0
  22. package/components/input/date/date-time-input/date-time-input.component.d.ts +38 -0
  23. package/components/input/file/file-default-input/file-default-input.component.d.ts +21 -0
  24. package/components/input/file/file-image-input/file-image-input.component.d.ts +30 -0
  25. package/components/input/file/file-input/dragDrop.directive.d.ts +32 -0
  26. package/components/input/file/file-input/file-input.component.d.ts +32 -0
  27. package/components/input/input.component.d.ts +37 -92
  28. package/components/input/input.module.d.ts +37 -16
  29. package/components/input/number/number-dropdown-input/number-dropdown-input.component.d.ts +17 -0
  30. package/components/input/number/number-input/number-input.component.d.ts +17 -0
  31. package/components/input/string/string-autocomplete-input/string-autocomplete-input.component.d.ts +25 -0
  32. package/components/input/string/string-dropdown-input/string-dropdown-input.component.d.ts +17 -0
  33. package/components/input/string/string-input/string-input.component.d.ts +17 -0
  34. package/components/input/string/string-textbox-input/string-textbox-input.component.d.ts +17 -0
  35. package/components/table/create-dialog/create-entity-dialog-data.builder.d.ts +3 -2
  36. package/components/table/create-dialog/create-entity-dialog-data.d.ts +2 -1
  37. package/components/table/create-dialog/create-entity-dialog.component.d.ts +7 -2
  38. package/components/table/edit-dialog/edit-dialog-data.builder.d.ts +3 -2
  39. package/components/table/edit-dialog/edit-entity-dialog-data.d.ts +2 -1
  40. package/components/table/edit-dialog/edit-entity-dialog.builder.d.ts +3 -2
  41. package/components/table/edit-dialog/edit-entity-dialog.component.d.ts +5 -2
  42. package/components/table/table-data.builder.d.ts +5 -5
  43. package/components/table/table-data.d.ts +6 -6
  44. package/components/table/table.component.d.ts +2 -1
  45. package/decorators/array/array-decorator-internal.data.d.ts +71 -6
  46. package/decorators/array/array-decorator.data.d.ts +178 -12
  47. package/decorators/array/array.decorator.d.ts +3 -2
  48. package/decorators/base/base-property.decorator.d.ts +2 -3
  49. package/decorators/base/decorator-types.enum.d.ts +9 -3
  50. package/decorators/date/date-decorator-internal.data.d.ts +2 -2
  51. package/decorators/date/date.decorator.d.ts +8 -0
  52. package/decorators/file/file-decorator-internal.data.d.ts +92 -0
  53. package/decorators/file/file-decorator.data.d.ts +92 -0
  54. package/decorators/file/file.decorator.d.ts +9 -0
  55. package/decorators/object/object-decorator-internal.data.d.ts +2 -2
  56. package/decorators/object/object-decorator.data.d.ts +3 -3
  57. package/decorators/object/object.decorator.d.ts +2 -1
  58. package/esm2020/capsulation/lodash.utilities.mjs +75 -0
  59. package/esm2020/capsulation/reflect.utilities.mjs +69 -0
  60. package/esm2020/classes/base.builder.mjs +2 -3
  61. package/esm2020/classes/date.utilities.mjs +33 -13
  62. package/esm2020/classes/entity.model.mjs +1 -1
  63. package/esm2020/classes/entity.service.mjs +103 -6
  64. package/esm2020/classes/entity.utilities.mjs +202 -71
  65. package/esm2020/classes/file.utilities.mjs +123 -0
  66. package/esm2020/components/confirm-dialog/confirm-dialog-data.builder.mjs +4 -4
  67. package/esm2020/components/confirm-dialog/confirm-dialog.component.mjs +3 -3
  68. package/esm2020/components/input/add-array-item-dialog-data.builder.mjs +2 -2
  69. package/esm2020/components/input/add-array-item-dialog-data.mjs +1 -1
  70. package/esm2020/components/input/array/array-date-input/array-date-input.component.mjs +44 -0
  71. package/esm2020/components/input/array/array-date-range-input/array-date-range-input.component.mjs +68 -0
  72. package/esm2020/components/input/array/array-date-time-input/array-date-time-input.component.mjs +65 -0
  73. package/esm2020/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.mjs +131 -0
  74. package/esm2020/components/input/array/array-string-chips-input/array-string-chips-input.component.mjs +116 -0
  75. package/esm2020/components/input/array/array-table.class.mjs +92 -0
  76. package/esm2020/components/input/boolean/boolean-checkbox-input/boolean-checkbox-input.component.mjs +38 -0
  77. package/esm2020/components/input/boolean/boolean-dropdown-input/boolean-dropdown-input.component.mjs +35 -0
  78. package/esm2020/components/input/boolean/boolean-toggle-input/boolean-toggle-input.component.mjs +38 -0
  79. package/esm2020/components/input/date/date-input/date-input.component.mjs +38 -0
  80. package/esm2020/components/input/date/date-range-input/date-range-input.component.mjs +63 -0
  81. package/esm2020/components/input/date/date-time-input/date-time-input.component.mjs +74 -0
  82. package/esm2020/components/input/file/file-default-input/file-default-input.component.mjs +39 -0
  83. package/esm2020/components/input/file/file-image-input/file-image-input.component.mjs +95 -0
  84. package/esm2020/components/input/file/file-input/dragDrop.directive.mjs +64 -0
  85. package/esm2020/components/input/file/file-input/file-input.component.mjs +152 -0
  86. package/esm2020/components/input/input.component.mjs +124 -234
  87. package/esm2020/components/input/input.module.mjs +66 -3
  88. package/esm2020/components/input/number/number-dropdown-input/number-dropdown-input.component.mjs +36 -0
  89. package/esm2020/components/input/number/number-input/number-input.component.mjs +34 -0
  90. package/esm2020/components/input/string/string-autocomplete-input/string-autocomplete-input.component.mjs +52 -0
  91. package/esm2020/components/input/string/string-dropdown-input/string-dropdown-input.component.mjs +36 -0
  92. package/esm2020/components/input/string/string-input/string-input.component.mjs +34 -0
  93. package/esm2020/components/input/string/string-textbox-input/string-textbox-input.component.mjs +35 -0
  94. package/esm2020/components/table/create-dialog/create-dialog-data.builder.mjs +2 -2
  95. package/esm2020/components/table/create-dialog/create-entity-dialog-data.builder.mjs +1 -1
  96. package/esm2020/components/table/create-dialog/create-entity-dialog-data.mjs +1 -1
  97. package/esm2020/components/table/create-dialog/create-entity-dialog.component.mjs +15 -8
  98. package/esm2020/components/table/edit-dialog/edit-dialog-data.builder.mjs +2 -2
  99. package/esm2020/components/table/edit-dialog/edit-entity-dialog-data.mjs +1 -1
  100. package/esm2020/components/table/edit-dialog/edit-entity-dialog.builder.mjs +2 -2
  101. package/esm2020/components/table/edit-dialog/edit-entity-dialog.component.mjs +18 -10
  102. package/esm2020/components/table/table-data.builder.mjs +3 -3
  103. package/esm2020/components/table/table-data.mjs +1 -1
  104. package/esm2020/components/table/table.component.mjs +21 -23
  105. package/esm2020/decorators/array/array-decorator-internal.data.mjs +102 -14
  106. package/esm2020/decorators/array/array-decorator.data.mjs +2 -2
  107. package/esm2020/decorators/array/array.decorator.mjs +8 -2
  108. package/esm2020/decorators/base/base-property.decorator.mjs +4 -3
  109. package/esm2020/decorators/base/decorator-types.enum.mjs +6 -1
  110. package/esm2020/decorators/base/property-decorator-internal.data.mjs +10 -10
  111. package/esm2020/decorators/base/property-decorator.data.mjs +1 -1
  112. package/esm2020/decorators/boolean/boolean-decorator-internal.data.mjs +3 -3
  113. package/esm2020/decorators/date/date-decorator-internal.data.mjs +5 -5
  114. package/esm2020/decorators/date/date.decorator.mjs +21 -0
  115. package/esm2020/decorators/file/file-decorator-internal.data.mjs +98 -0
  116. package/esm2020/decorators/file/file-decorator.data.mjs +7 -0
  117. package/esm2020/decorators/file/file.decorator.mjs +22 -0
  118. package/esm2020/decorators/object/object-decorator-internal.data.mjs +1 -1
  119. package/esm2020/decorators/object/object-decorator.data.mjs +1 -1
  120. package/esm2020/decorators/object/object.decorator.mjs +1 -1
  121. package/esm2020/decorators/string/string.decorator.mjs +1 -1
  122. package/esm2020/mocks/placeholder-data.png.mjs +3 -0
  123. package/esm2020/public-api.mjs +6 -1
  124. package/fesm2015/ngx-material-entity.mjs +2452 -459
  125. package/fesm2015/ngx-material-entity.mjs.map +1 -1
  126. package/fesm2020/ngx-material-entity.mjs +2370 -464
  127. package/fesm2020/ngx-material-entity.mjs.map +1 -1
  128. package/mocks/placeholder-data.png.d.ts +1 -0
  129. package/package.json +1 -1
  130. package/public-api.d.ts +5 -0
@@ -0,0 +1,92 @@
1
+ import { ConfirmDialogData } from '../../components/confirm-dialog/confirm-dialog-data';
2
+ import { PropertyDecoratorConfig } from '../base/property-decorator.data';
3
+ import { FileDataWithFile, FileDataWithUrl } from './file-decorator-internal.data';
4
+ /**
5
+ * The type of a property annotated with @file.
6
+ */
7
+ export declare type FileData = FileDataWithFile | FileDataWithUrl;
8
+ /**
9
+ * Definition for the @file metadata.
10
+ */
11
+ declare abstract class FileDecoratorConfig extends PropertyDecoratorConfig {
12
+ /**
13
+ * Specifies whether or not the decorated property can have multiple files.
14
+ */
15
+ multiple: boolean;
16
+ /**
17
+ * The type of the upload.
18
+ */
19
+ type: 'image' | 'other';
20
+ /**
21
+ * The class for the <i> tag used to remove a file from the input.
22
+ *
23
+ * @default 'fas fa-circle-minus'
24
+ */
25
+ deleteIcon?: string;
26
+ /**
27
+ * Whether or not the file should be displayed inside a preview.
28
+ *
29
+ * @default true
30
+ */
31
+ preview?: boolean;
32
+ /**
33
+ * Specifies allowed File types like 'image/jpg' etc.
34
+ * Allows every file type if not set.
35
+ */
36
+ allowedMimeTypes?: string[];
37
+ /**
38
+ * The error dialog to display when the user inputs files that are not of the allowed mime types.
39
+ */
40
+ mimeTypeErrorDialog?: ConfirmDialogData;
41
+ /**
42
+ * The maximum allowed size of a single file in MB.
43
+ *
44
+ * @default 10
45
+ */
46
+ maxSize?: number;
47
+ /**
48
+ * The error dialog to display when the user inputs a single file that is bigger than the 'maxSize' value.
49
+ */
50
+ maxSizeErrorDialog?: ConfirmDialogData;
51
+ /**
52
+ * The maximum allowed size of all files in MB.
53
+ *
54
+ * @default 100
55
+ */
56
+ maxSizeTotal?: number;
57
+ /**
58
+ * The error dialog to display when the user inputs files which are in total bigger than the 'maxSizeTotal' value.
59
+ */
60
+ maxSizeTotalErrorDialog?: ConfirmDialogData;
61
+ /**
62
+ * Defines whether or not a dropdown box is displayed.
63
+ *
64
+ * @default true // when multiple is set to true.
65
+ * false // when multiple is set to false.
66
+ */
67
+ dragAndDrop?: boolean;
68
+ }
69
+ /**
70
+ * Definition for a default file.
71
+ */
72
+ export interface DefaultFileDecoratorConfig extends FileDecoratorConfig {
73
+ type: 'other';
74
+ preview?: false;
75
+ }
76
+ /**
77
+ * Definition for a image file.
78
+ */
79
+ export interface ImageFileDecoratorConfig extends FileDecoratorConfig {
80
+ type: 'image';
81
+ /**
82
+ * Specifies allowed File types like image/jpg etc. In a comma separated string.
83
+ *
84
+ * @default ['image/*']
85
+ */
86
+ allowedMimeTypes?: string[];
87
+ /**
88
+ * Url to the file that gets displayed in the preview when no file has been selected yet.
89
+ */
90
+ previewPlaceholderUrl?: string;
91
+ }
92
+ export {};
@@ -0,0 +1,9 @@
1
+ import { DefaultFileDecoratorConfig, ImageFileDecoratorConfig } from './file-decorator.data';
2
+ /**
3
+ * Decorator for setting and getting file property metadata.
4
+ *
5
+ * @param metadata - The metadata of the file property.
6
+ * @returns The method that defines the metadata.
7
+ * @throws When an unknown metadata type was provided.
8
+ */
9
+ export declare function file(metadata: DefaultFileDecoratorConfig | ImageFileDecoratorConfig): (target: object, propertyKey: string) => void;
@@ -1,10 +1,10 @@
1
- import { EntityClassNewable } from '../../classes/entity.model';
1
+ import { BaseEntityType, EntityClassNewable } from '../../classes/entity.model';
2
2
  import { PropertyDecoratorConfigInternal } from '../base/property-decorator-internal.data';
3
3
  import { DefaultObjectDecoratorConfig } from './object-decorator.data';
4
4
  /**
5
5
  * The internal DefaultObjectDecoratorConfig. Sets default values.
6
6
  */
7
- export declare class DefaultObjectDecoratorConfigInternal<EntityType extends object> extends PropertyDecoratorConfigInternal implements DefaultObjectDecoratorConfig<EntityType> {
7
+ export declare class DefaultObjectDecoratorConfigInternal<EntityType extends BaseEntityType<EntityType>> extends PropertyDecoratorConfigInternal implements DefaultObjectDecoratorConfig<EntityType> {
8
8
  displayStyle: 'inline';
9
9
  EntityClass: EntityClassNewable<EntityType>;
10
10
  constructor(data: DefaultObjectDecoratorConfig<EntityType>);
@@ -1,9 +1,9 @@
1
- import { EntityClassNewable } from '../../classes/entity.model';
1
+ import { BaseEntityType, EntityClassNewable } from '../../classes/entity.model';
2
2
  import { PropertyDecoratorConfig } from '../base/property-decorator.data';
3
3
  /**
4
4
  * Definition for the @object metadata.
5
5
  */
6
- declare abstract class ObjectDecoratorConfig<EntityType extends object> extends PropertyDecoratorConfig {
6
+ declare abstract class ObjectDecoratorConfig<EntityType extends BaseEntityType<EntityType>> extends PropertyDecoratorConfig {
7
7
  /**
8
8
  * The class of the object. Is used to call the constructor so that all metadata is initialized.
9
9
  */
@@ -19,7 +19,7 @@ declare abstract class ObjectDecoratorConfig<EntityType extends object> extends
19
19
  /**
20
20
  * The configuration options for a object property.
21
21
  */
22
- export interface DefaultObjectDecoratorConfig<EntityType extends object> extends ObjectDecoratorConfig<EntityType> {
22
+ export interface DefaultObjectDecoratorConfig<EntityType extends BaseEntityType<EntityType>> extends ObjectDecoratorConfig<EntityType> {
23
23
  displayStyle: 'inline';
24
24
  }
25
25
  export {};
@@ -1,8 +1,9 @@
1
1
  import { DefaultObjectDecoratorConfig } from './object-decorator.data';
2
+ import { BaseEntityType } from '../../classes/entity.model';
2
3
  /**
3
4
  * Decorator for setting and getting object property metadata.
4
5
  *
5
6
  * @param metadata - The metadata of the object property.
6
7
  * @returns The method that defines the metadata.
7
8
  */
8
- export declare function object<EntityType extends object>(metadata: DefaultObjectDecoratorConfig<EntityType>): (target: object, propertyKey: string) => void;
9
+ export declare function object<EntityType extends BaseEntityType<EntityType>>(metadata: DefaultObjectDecoratorConfig<EntityType>): (target: object, propertyKey: string) => void;
@@ -0,0 +1,75 @@
1
+ import { cloneDeep, isArray, isEqual, isNil, omit, omitBy } from 'lodash';
2
+ /**
3
+ * Encapsulates all functionality of lodash.
4
+ */
5
+ export class LodashUtilities {
6
+ /**
7
+ * Performs a deep comparison between two values to determine if they are
8
+ * equivalent.
9
+ *
10
+ * **Note:** This method supports comparing arrays, array buffers, booleans,
11
+ * date objects, error objects, maps, numbers, `Object` objects, regexps,
12
+ * sets, strings, symbols, and typed arrays. `Object` objects are compared
13
+ * by their own, not inherited, enumerable properties. Functions and DOM
14
+ * nodes are **not** supported.
15
+ *
16
+ * @param value - The value to compare.
17
+ * @param other - The other value to compare.
18
+ * @returns Returns `true` if the values are equivalent, else `false`.
19
+ */
20
+ static isEqual(value, other) {
21
+ return isEqual(value, other);
22
+ }
23
+ /**
24
+ * This method is like _.clone except that it recursively clones value.
25
+ *
26
+ * @param value - The value to recursively clone.
27
+ * @returns Returns the deep cloned value.
28
+ */
29
+ static cloneDeep(value) {
30
+ return cloneDeep(value);
31
+ }
32
+ /**
33
+ * The opposite of `_.pick`; this method creates an object composed of the
34
+ * own and inherited enumerable properties of `object` that are not omitted.
35
+ *
36
+ * @param object - The source object.
37
+ * @param paths - The property names to omit, specified
38
+ * individually or in arrays.
39
+ * @returns Returns the new object.
40
+ */
41
+ static omit(object, ...paths) {
42
+ return omit(object, ...paths);
43
+ }
44
+ /**
45
+ * Checks if `value` is `null` or `undefined`.
46
+ *
47
+ * @param value - The value to check.
48
+ * @returns Returns `true` if `value` is nullish, else `false`.
49
+ */
50
+ static isNil(value) {
51
+ return isNil(value);
52
+ }
53
+ /**
54
+ * The opposite of `_.pickBy`; this method creates an object composed of the
55
+ * own and inherited enumerable properties of `object` that `predicate`
56
+ * doesn't return truthy for.
57
+ *
58
+ * @param object - The source object.
59
+ * @param predicate - The function invoked per property.
60
+ * @returns Returns the new object.
61
+ */
62
+ static omitBy(object, predicate) {
63
+ return omitBy(object, predicate);
64
+ }
65
+ /**
66
+ * Checks if value is classified as an Array object.
67
+ *
68
+ * @param value - The value to check.
69
+ * @returns Returns true if value is correctly classified, else false.
70
+ */
71
+ static isArray(value) {
72
+ return isArray(value);
73
+ }
74
+ }
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9kYXNoLnV0aWxpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NhcHN1bGF0aW9uL2xvZGFzaC51dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBUSxJQUFJLEVBQUUsTUFBTSxFQUFvQixNQUFNLFFBQVEsQ0FBQztBQUU5Rzs7R0FFRztBQUNILE1BQU0sT0FBZ0IsZUFBZTtJQUVqQzs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFjLEVBQUUsS0FBYztRQUN6QyxPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBSSxLQUFRO1FBQ3hCLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxJQUFJLENBQXNDLE1BQTRCLEVBQUUsR0FBRyxLQUFnQjtRQUM5RixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQWM7UUFDdkIsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBSSxNQUF3QyxFQUFFLFNBQStCO1FBQ3RGLE9BQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQWU7UUFDMUIsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xvbmVEZWVwLCBEaWN0aW9uYXJ5LCBpc0FycmF5LCBpc0VxdWFsLCBpc05pbCwgTWFueSwgb21pdCwgb21pdEJ5LCBWYWx1ZUtleUl0ZXJhdGVlIH0gZnJvbSAnbG9kYXNoJztcblxuLyoqXG4gKiBFbmNhcHN1bGF0ZXMgYWxsIGZ1bmN0aW9uYWxpdHkgb2YgbG9kYXNoLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTG9kYXNoVXRpbGl0aWVzIHtcblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmVcbiAgICAgKiBlcXVpdmFsZW50LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHN1cHBvcnRzIGNvbXBhcmluZyBhcnJheXMsIGFycmF5IGJ1ZmZlcnMsIGJvb2xlYW5zLFxuICAgICAqIGRhdGUgb2JqZWN0cywgZXJyb3Igb2JqZWN0cywgbWFwcywgbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhwcyxcbiAgICAgKiBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWQgYXJyYXlzLiBgT2JqZWN0YCBvYmplY3RzIGFyZSBjb21wYXJlZFxuICAgICAqIGJ5IHRoZWlyIG93biwgbm90IGluaGVyaXRlZCwgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLiBGdW5jdGlvbnMgYW5kIERPTVxuICAgICAqIG5vZGVzIGFyZSAqKm5vdCoqIHN1cHBvcnRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSBvdGhlciAtIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBzdGF0aWMgaXNFcXVhbCh2YWx1ZTogdW5rbm93biwgb3RoZXI6IHVua25vd24pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzRXF1YWwodmFsdWUsIG90aGVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIF8uY2xvbmUgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIHZhbHVlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICAgICAqIEByZXR1cm5zIFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICAgICAqL1xuICAgIHN0YXRpYyBjbG9uZURlZXA8VD4odmFsdWU6IFQpOiBUIHtcbiAgICAgICAgcmV0dXJuIGNsb25lRGVlcCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnBpY2tgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGVcbiAgICAgKiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgYG9iamVjdGAgdGhhdCBhcmUgbm90IG9taXR0ZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2JqZWN0IC0gVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHBhdGhzIC0gVGhlIHByb3BlcnR5IG5hbWVzIHRvIG9taXQsIHNwZWNpZmllZFxuICAgICAqIGluZGl2aWR1YWxseSBvciBpbiBhcnJheXMuXG4gICAgICogQHJldHVybnMgUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICBzdGF0aWMgb21pdDxUIGV4dGVuZHMgb2JqZWN0LCBLIGV4dGVuZHMga2V5b2YgVD4ob2JqZWN0OiBUIHwgbnVsbCB8IHVuZGVmaW5lZCwgLi4ucGF0aHM6IE1hbnk8Sz5bXSk6IE9taXQ8VCwgSz4ge1xuICAgICAgICByZXR1cm4gb21pdChvYmplY3QsIC4uLnBhdGhzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMgUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBudWxsaXNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgc3RhdGljIGlzTmlsKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBpc05pbCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnBpY2tCeWA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZVxuICAgICAqIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcyBvZiBgb2JqZWN0YCB0aGF0IGBwcmVkaWNhdGVgXG4gICAgICogZG9lc24ndCByZXR1cm4gdHJ1dGh5IGZvci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvYmplY3QgLSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gcHJlZGljYXRlIC0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICAgICAqIEByZXR1cm5zIFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICovXG4gICAgc3RhdGljIG9taXRCeTxUPihvYmplY3Q6IERpY3Rpb25hcnk8VD4gfCBudWxsIHwgdW5kZWZpbmVkLCBwcmVkaWNhdGU/OiBWYWx1ZUtleUl0ZXJhdGVlPFQ+KTogRGljdGlvbmFyeTxUPiB7XG4gICAgICAgIHJldHVybiBvbWl0Qnkob2JqZWN0LCBwcmVkaWNhdGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB2YWx1ZSBpcyBjbGFzc2lmaWVkIGFzIGFuIEFycmF5IG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgaXMgY29ycmVjdGx5IGNsYXNzaWZpZWQsIGVsc2UgZmFsc2UuXG4gICAgICovXG4gICAgc3RhdGljIGlzQXJyYXkodmFsdWU/OiB1bmtub3duKTogdmFsdWUgaXMgdW5rbm93bltdIHtcbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpO1xuICAgIH1cbn0iXX0=
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Encapsulates all functionality of Reflect.
3
+ */
4
+ export class ReflectUtilities {
5
+ /**
6
+ * Gets the metadata value for the provided metadata key on the target object or its prototype chain.
7
+ *
8
+ * @param metadataKey - A key used to store and retrieve metadata.
9
+ * @param target - The target object on which the metadata is defined.
10
+ * @param propertyKey - The property key for the target.
11
+ * @returns The metadata value for the metadata key if found; otherwise, undefined.
12
+ */
13
+ static getMetadata(metadataKey, target, propertyKey) {
14
+ return Reflect.getMetadata(metadataKey, target, propertyKey);
15
+ }
16
+ /**
17
+ * Returns the string and symbol keys of the own properties of an object. The own properties of an object
18
+ * are those that are defined directly on that object, and are not inherited from the object's prototype.
19
+ *
20
+ * @param target - Object that contains the own properties.
21
+ * @returns The keys of the given object.
22
+ */
23
+ static ownKeys(target) {
24
+ return Reflect.ownKeys(target);
25
+ }
26
+ /**
27
+ * Gets the property of target, equivalent to `target[propertyKey]`.
28
+ *
29
+ * @param target - Object that contains the property on itself or in its prototype chain.
30
+ * @param propertyKey - The property name.
31
+ * @returns The property of the target of the given key.
32
+ */
33
+ static get(target, propertyKey) {
34
+ return Reflect.get(target, propertyKey);
35
+ }
36
+ /**
37
+ * Sets the property of target, equivalent to `target[propertyKey] = value`.
38
+ *
39
+ * @param target - Object that contains the property on itself or in its prototype chain.
40
+ * @param propertyKey - The property name.
41
+ * @param value - The value to set the property to.
42
+ * @returns If setting the value was successful.
43
+ */
44
+ static set(target, propertyKey, value) {
45
+ return Reflect.set(target, propertyKey, value);
46
+ }
47
+ /**
48
+ * Equivalent to `propertyKey in target`.
49
+ *
50
+ * @param target - Object that contains the property on itself or in its prototype chain.
51
+ * @param propertyKey - Name of the property.
52
+ * @returns Whether or not the given target has the key.
53
+ */
54
+ static has(target, propertyKey) {
55
+ return Reflect.has(target, propertyKey);
56
+ }
57
+ /**
58
+ * Define a unique metadata entry on the target.
59
+ *
60
+ * @param metadataKey - A key used to store and retrieve metadata.
61
+ * @param metadataValue - A value that contains attached metadata.
62
+ * @param target - The target object on which to define metadata.
63
+ * @param propertyKey - The property key for the target.
64
+ */
65
+ static defineMetadata(metadataKey, metadataValue, target, propertyKey) {
66
+ Reflect.defineMetadata(metadataKey, metadataValue, target, propertyKey);
67
+ }
68
+ }
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdC51dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jYXBzdWxhdGlvbi9yZWZsZWN0LnV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTs7R0FFRztBQUNILE1BQU0sT0FBZ0IsZ0JBQWdCO0lBQ2xDOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUFtQixXQUFtQixFQUFFLE1BQVMsRUFBRSxXQUFvQjtRQUNyRixPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxXQUFxQixDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQW1CLE1BQVM7UUFDdEMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBZ0IsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBbUIsTUFBUyxFQUFFLFdBQW9CO1FBQ3hELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsR0FBRyxDQUFtQixNQUFTLEVBQUUsV0FBb0IsRUFBRSxLQUFjO1FBQ3hFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsR0FBRyxDQUFtQixNQUFTLEVBQUUsV0FBb0I7UUFDeEQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQ2pCLFdBQW9CLEVBQ3BCLGFBQXNCLEVBQ3RCLE1BQVMsRUFDVCxXQUFtQjtRQUVuQixPQUFPLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzVFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBFbmNhcHN1bGF0ZXMgYWxsIGZ1bmN0aW9uYWxpdHkgb2YgUmVmbGVjdC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlZmxlY3RVdGlsaXRpZXMge1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG1ldGFkYXRhIHZhbHVlIGZvciB0aGUgcHJvdmlkZWQgbWV0YWRhdGEga2V5IG9uIHRoZSB0YXJnZXQgb2JqZWN0IG9yIGl0cyBwcm90b3R5cGUgY2hhaW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgLSBBIGtleSB1c2VkIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBtZXRhZGF0YS5cbiAgICAgKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICogQHBhcmFtIHByb3BlcnR5S2V5IC0gVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgKiBAcmV0dXJucyBUaGUgbWV0YWRhdGEgdmFsdWUgZm9yIHRoZSBtZXRhZGF0YSBrZXkgaWYgZm91bmQ7IG90aGVyd2lzZSwgdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRNZXRhZGF0YTxUIGV4dGVuZHMgb2JqZWN0PihtZXRhZGF0YUtleTogc3RyaW5nLCB0YXJnZXQ6IFQsIHByb3BlcnR5S2V5OiBrZXlvZiBUKTogdW5rbm93biB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0LmdldE1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc3RyaW5nIGFuZCBzeW1ib2wga2V5cyBvZiB0aGUgb3duIHByb3BlcnRpZXMgb2YgYW4gb2JqZWN0LiBUaGUgb3duIHByb3BlcnRpZXMgb2YgYW4gb2JqZWN0XG4gICAgICogYXJlIHRob3NlIHRoYXQgYXJlIGRlZmluZWQgZGlyZWN0bHkgb24gdGhhdCBvYmplY3QsIGFuZCBhcmUgbm90IGluaGVyaXRlZCBmcm9tIHRoZSBvYmplY3QncyBwcm90b3R5cGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IC0gT2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIG93biBwcm9wZXJ0aWVzLlxuICAgICAqIEByZXR1cm5zIFRoZSBrZXlzIG9mIHRoZSBnaXZlbiBvYmplY3QuXG4gICAgICovXG4gICAgc3RhdGljIG93bktleXM8VCBleHRlbmRzIG9iamVjdD4odGFyZ2V0OiBUKTogKGtleW9mIFQpW10ge1xuICAgICAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKHRhcmdldCkgYXMgKGtleW9mIFQpW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcHJvcGVydHkgb2YgdGFyZ2V0LCBlcXVpdmFsZW50IHRvIGB0YXJnZXRbcHJvcGVydHlLZXldYC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0YXJnZXQgLSBPYmplY3QgdGhhdCBjb250YWlucyB0aGUgcHJvcGVydHkgb24gaXRzZWxmIG9yIGluIGl0cyBwcm90b3R5cGUgY2hhaW4uXG4gICAgICogQHBhcmFtIHByb3BlcnR5S2V5IC0gVGhlIHByb3BlcnR5IG5hbWUuXG4gICAgICogQHJldHVybnMgVGhlIHByb3BlcnR5IG9mIHRoZSB0YXJnZXQgb2YgdGhlIGdpdmVuIGtleS5cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0PFQgZXh0ZW5kcyBvYmplY3Q+KHRhcmdldDogVCwgcHJvcGVydHlLZXk6IGtleW9mIFQpOiB1bmtub3duIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHByb3BlcnR5IG9mIHRhcmdldCwgZXF1aXZhbGVudCB0byBgdGFyZ2V0W3Byb3BlcnR5S2V5XSA9IHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0YXJnZXQgLSBPYmplY3QgdGhhdCBjb250YWlucyB0aGUgcHJvcGVydHkgb24gaXRzZWxmIG9yIGluIGl0cyBwcm90b3R5cGUgY2hhaW4uXG4gICAgICogQHBhcmFtIHByb3BlcnR5S2V5IC0gVGhlIHByb3BlcnR5IG5hbWUuXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldCB0aGUgcHJvcGVydHkgdG8uXG4gICAgICogQHJldHVybnMgSWYgc2V0dGluZyB0aGUgdmFsdWUgd2FzIHN1Y2Nlc3NmdWwuXG4gICAgICovXG4gICAgc3RhdGljIHNldDxUIGV4dGVuZHMgb2JqZWN0Pih0YXJnZXQ6IFQsIHByb3BlcnR5S2V5OiBrZXlvZiBULCB2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gUmVmbGVjdC5zZXQodGFyZ2V0LCBwcm9wZXJ0eUtleSwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVxdWl2YWxlbnQgdG8gYHByb3BlcnR5S2V5IGluIHRhcmdldGAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IC0gT2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIHByb3BlcnR5IG9uIGl0c2VsZiBvciBpbiBpdHMgcHJvdG90eXBlIGNoYWluLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAtIE5hbWUgb2YgdGhlIHByb3BlcnR5LlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiB0YXJnZXQgaGFzIHRoZSBrZXkuXG4gICAgICovXG4gICAgc3RhdGljIGhhczxUIGV4dGVuZHMgb2JqZWN0Pih0YXJnZXQ6IFQsIHByb3BlcnR5S2V5OiBrZXlvZiBUKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0Lmhhcyh0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmUgYSB1bmlxdWUgbWV0YWRhdGEgZW50cnkgb24gdGhlIHRhcmdldC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBtZXRhZGF0YUtleSAtIEEga2V5IHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIG1ldGFkYXRhLlxuICAgICAqIEBwYXJhbSBtZXRhZGF0YVZhbHVlIC0gQSB2YWx1ZSB0aGF0IGNvbnRhaW5zIGF0dGFjaGVkIG1ldGFkYXRhLlxuICAgICAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0byBkZWZpbmUgbWV0YWRhdGEuXG4gICAgICogQHBhcmFtIHByb3BlcnR5S2V5IC0gVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgKi9cbiAgICBzdGF0aWMgZGVmaW5lTWV0YWRhdGE8VCBleHRlbmRzIG9iamVjdD4oXG4gICAgICAgIG1ldGFkYXRhS2V5OiB1bmtub3duLFxuICAgICAgICBtZXRhZGF0YVZhbHVlOiB1bmtub3duLFxuICAgICAgICB0YXJnZXQ6IFQsXG4gICAgICAgIHByb3BlcnR5S2V5OiBzdHJpbmdcbiAgICApOiB2b2lkIHtcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgfVxufSJdfQ==
@@ -17,7 +17,6 @@ export class BaseBuilder {
17
17
  validateInput(data) {
18
18
  // By default, no validation is done
19
19
  }
20
- ;
21
20
  /**
22
21
  * Sets the value for the given key if no user value was provided.
23
22
  *
@@ -26,7 +25,7 @@ export class BaseBuilder {
26
25
  * @returns The Builder.
27
26
  */
28
27
  withDefault(key, value) {
29
- if (!this.inputData || !this.inputData[key]) {
28
+ if (this.inputData == null || this.inputData[key] == null) {
30
29
  this.data[key] = value;
31
30
  }
32
31
  return this;
@@ -40,4 +39,4 @@ export class BaseBuilder {
40
39
  return this.data;
41
40
  }
42
41
  }
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY2xhc3Nlcy9iYXNlLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0E7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLFdBQVc7SUFLN0IsWUFBc0IsSUFBZ0I7UUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBVUQ7Ozs7T0FJRztJQUNILDZEQUE2RDtJQUNuRCxhQUFhLENBQUMsSUFBZ0I7UUFDcEMsb0NBQW9DO0lBQ3hDLENBQUM7SUFBQSxDQUFDO0lBRUY7Ozs7OztPQU1HO0lBQ0gsV0FBVyxDQUFDLEdBQW9CLEVBQUUsS0FBdUQ7UUFDckYsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBc0MsQ0FBQztTQUMzRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qKlxuICogVGhlIGFic3RyYWN0IEJhc2VCdWlsZGVyIGNsYXNzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUJ1aWxkZXI8SW50ZXJuYWxUeXBlIGV4dGVuZHMgSW5wdXRUeXBlLCBJbnB1dFR5cGUgZXh0ZW5kcyBvYmplY3Q+IHtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGF0YTogSW50ZXJuYWxUeXBlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXREYXRhPzogSW5wdXRUeXBlO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGRhdGE/OiBJbnB1dFR5cGUpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUlucHV0KGRhdGEpO1xuICAgICAgICB0aGlzLmlucHV0RGF0YSA9IGRhdGE7XG4gICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZ2VuZXJhdGVCYXNlRGF0YShkYXRhKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIHRoZSBpbnRlcm5hbCBkYXRhIGZyb20gdGhlIGdpdmVuIHVzZXIgaW5wdXRzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGEgLSBUaGUgaW5wdXQgZnJvbSB0aGUgdXNlci5cbiAgICAgKiBAcmV0dXJucyBUaGUgaW50ZXJuYWwgZGF0YS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2VuZXJhdGVCYXNlRGF0YShkYXRhPzogSW5wdXRUeXBlKTogSW50ZXJuYWxUeXBlO1xuXG4gICAgLyoqXG4gICAgICogVXNlZCB0byB2YWxpZGF0ZSB0aGUgdXNlciBpbnB1dCBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0YSAtIFRoZSB1c2VyIGlucHV0LlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwcm90ZWN0ZWQgdmFsaWRhdGVJbnB1dChkYXRhPzogSW5wdXRUeXBlKTogdm9pZCB7XG4gICAgICAgIC8vIEJ5IGRlZmF1bHQsIG5vIHZhbGlkYXRpb24gaXMgZG9uZVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgdGhlIGdpdmVuIGtleSBpZiBubyB1c2VyIHZhbHVlIHdhcyBwcm92aWRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IHRvIHNldCB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IuXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldCB3aGVuIG5vdGhpbmcgd2FzIHByb3ZpZGVkLlxuICAgICAqIEByZXR1cm5zIFRoZSBCdWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhEZWZhdWx0KGtleToga2V5b2YgSW5wdXRUeXBlLCB2YWx1ZTogT21pdDxJbnRlcm5hbFR5cGVba2V5b2YgSW5wdXRUeXBlXSwgJ3VuZGVmaW5lZCc+KTogQmFzZUJ1aWxkZXI8SW50ZXJuYWxUeXBlLCBJbnB1dFR5cGU+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlucHV0RGF0YSB8fCAhdGhpcy5pbnB1dERhdGFba2V5XSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhW2tleV0gPSB2YWx1ZSBhcyBJbnRlcm5hbFR5cGVba2V5b2YgSW5wdXRUeXBlXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdXNlZCB0byBnZXQgdGhlIGZpbmFsIGJ1aWxkIHZhbHVlIGFmdGVyIGFwcGx5aW5nIGFsbCBjaGFpbmluZy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBidWlsZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBnZXRSZXN1bHQoKTogSW50ZXJuYWxUeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICB9XG59Il19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY2xhc3Nlcy9iYXNlLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLFdBQVc7SUFLN0IsWUFBc0IsSUFBZ0I7UUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBVUQ7Ozs7T0FJRztJQUNILDZEQUE2RDtJQUNuRCxhQUFhLENBQUMsSUFBZ0I7UUFDcEMsb0NBQW9DO0lBQ3hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxXQUFXLENBQUMsR0FBb0IsRUFBRSxLQUF1RDtRQUNyRixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFO1lBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBc0MsQ0FBQztTQUMzRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlRW50aXR5VHlwZSB9IGZyb20gJy4vZW50aXR5Lm1vZGVsJztcblxuLyoqXG4gKiBUaGUgYWJzdHJhY3QgQmFzZUJ1aWxkZXIgY2xhc3MuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQnVpbGRlcjxJbnRlcm5hbFR5cGUgZXh0ZW5kcyBJbnB1dFR5cGUsIElucHV0VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPElucHV0VHlwZT4+IHtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGF0YTogSW50ZXJuYWxUeXBlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXREYXRhPzogSW5wdXRUeXBlO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGRhdGE/OiBJbnB1dFR5cGUpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUlucHV0KGRhdGEpO1xuICAgICAgICB0aGlzLmlucHV0RGF0YSA9IGRhdGE7XG4gICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZ2VuZXJhdGVCYXNlRGF0YShkYXRhKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIHRoZSBpbnRlcm5hbCBkYXRhIGZyb20gdGhlIGdpdmVuIHVzZXIgaW5wdXRzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGEgLSBUaGUgaW5wdXQgZnJvbSB0aGUgdXNlci5cbiAgICAgKiBAcmV0dXJucyBUaGUgaW50ZXJuYWwgZGF0YS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2VuZXJhdGVCYXNlRGF0YShkYXRhPzogSW5wdXRUeXBlKTogSW50ZXJuYWxUeXBlO1xuXG4gICAgLyoqXG4gICAgICogVXNlZCB0byB2YWxpZGF0ZSB0aGUgdXNlciBpbnB1dCBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0YSAtIFRoZSB1c2VyIGlucHV0LlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwcm90ZWN0ZWQgdmFsaWRhdGVJbnB1dChkYXRhPzogSW5wdXRUeXBlKTogdm9pZCB7XG4gICAgICAgIC8vIEJ5IGRlZmF1bHQsIG5vIHZhbGlkYXRpb24gaXMgZG9uZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHZhbHVlIGZvciB0aGUgZ2l2ZW4ga2V5IGlmIG5vIHVzZXIgdmFsdWUgd2FzIHByb3ZpZGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gc2V0IHRoZSBkZWZhdWx0IHZhbHVlIGZvci5cbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0IHdoZW4gbm90aGluZyB3YXMgcHJvdmlkZWQuXG4gICAgICogQHJldHVybnMgVGhlIEJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aERlZmF1bHQoa2V5OiBrZXlvZiBJbnB1dFR5cGUsIHZhbHVlOiBPbWl0PEludGVybmFsVHlwZVtrZXlvZiBJbnB1dFR5cGVdLCAndW5kZWZpbmVkJz4pOiBCYXNlQnVpbGRlcjxJbnRlcm5hbFR5cGUsIElucHV0VHlwZT4ge1xuICAgICAgICBpZiAodGhpcy5pbnB1dERhdGEgPT0gbnVsbCB8fCB0aGlzLmlucHV0RGF0YVtrZXldID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVtrZXldID0gdmFsdWUgYXMgSW50ZXJuYWxUeXBlW2tleW9mIElucHV0VHlwZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHVzZWQgdG8gZ2V0IHRoZSBmaW5hbCBidWlsZCB2YWx1ZSBhZnRlciBhcHBseWluZyBhbGwgY2hhaW5pbmcuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgYnVpbGQgdmFsdWUuXG4gICAgICovXG4gICAgZ2V0UmVzdWx0KCk6IEludGVybmFsVHlwZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGE7XG4gICAgfVxufSJdfQ==
@@ -1,4 +1,4 @@
1
- import { cloneDeep } from 'lodash';
1
+ import { LodashUtilities } from '../capsulation/lodash.utilities';
2
2
  const DAY_IN_MS = 1000 * 60 * 60 * 24;
3
3
  /**
4
4
  * Contains Helper Functions for handling date properties.
@@ -24,14 +24,14 @@ export class DateUtilities {
24
24
  const res = [{ displayName: '-', value: undefined }];
25
25
  for (let hour = 0; hour < 24; hour++) {
26
26
  for (let minute = 0; minute < 60; minute += minuteSteps) {
27
- res.push(this.getTimeDropdownValue(format, hour, minute));
27
+ res.push(DateUtilities.getTimeDropdownValue(format, hour, minute));
28
28
  }
29
29
  }
30
30
  return res;
31
31
  }
32
32
  static getTimeDropdownValue(format, hour, minute) {
33
- const displayHour = this.getFormattedHour(format, cloneDeep(hour));
34
- const displayMinute = this.getFormattedMinute(format, hour, minute);
33
+ const displayHour = DateUtilities.getFormattedHour(format, LodashUtilities.cloneDeep(hour));
34
+ const displayMinute = DateUtilities.getFormattedMinute(format, hour, minute);
35
35
  return {
36
36
  displayName: `${displayHour}:${displayMinute}`,
37
37
  value: {
@@ -69,10 +69,7 @@ export class DateUtilities {
69
69
  */
70
70
  static getTimeFromDate(value) {
71
71
  if (!value) {
72
- return {
73
- hours: undefined,
74
- minutes: undefined
75
- };
72
+ return undefined;
76
73
  }
77
74
  else {
78
75
  return {
@@ -86,10 +83,10 @@ export class DateUtilities {
86
83
  *
87
84
  * @param startDate - The start date.
88
85
  * @param endDate - The end date.
89
- * @param metadataDateRangeDate - The metadata.
86
+ * @param filter - The custom filter from the metadata.
90
87
  * @returns All dates between the two provided dates. Includes start and end date.
91
88
  */
92
- static getDatesBetween(startDate, endDate, metadataDateRangeDate) {
89
+ static getDatesBetween(startDate, endDate, filter) {
93
90
  const res = [];
94
91
  while (startDate.getFullYear() < endDate.getFullYear()
95
92
  || startDate.getMonth() < endDate.getMonth()
@@ -97,8 +94,8 @@ export class DateUtilities {
97
94
  res.push(new Date(startDate));
98
95
  startDate.setTime(startDate.getTime() + DAY_IN_MS);
99
96
  }
100
- if (metadataDateRangeDate.filter) {
101
- return res.filter(d => metadataDateRangeDate.filter?.(d));
97
+ if (filter) {
98
+ return res.filter(d => filter(d));
102
99
  }
103
100
  else {
104
101
  return res;
@@ -134,5 +131,28 @@ export class DateUtilities {
134
131
  }
135
132
  return times;
136
133
  }
134
+ /**
135
+ * Checks if the time object has processable hours and minutes properties.
136
+ * Doesn't check custom validators like min/max from the metadata configuration.
137
+ *
138
+ * @param time - The time to check.
139
+ * @returns Whether or not the time object is unprocessable.
140
+ */
141
+ static timeIsUnprocessable(time) {
142
+ if (!time
143
+ || time.hours == null
144
+ || typeof time.hours !== 'number'
145
+ || Number.isNaN(time.hours)
146
+ || time.minutes == null
147
+ || typeof time.minutes !== 'number'
148
+ || Number.isNaN(time.minutes)) {
149
+ return true;
150
+ }
151
+ return false;
152
+ }
137
153
  }
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS51dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jbGFzc2VzL2RhdGUudXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFJbkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBT3RDOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixhQUFhO0lBRS9COzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFjO1FBQ3hCLE9BQU8sS0FBYSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsZUFBZSxDQUFDLFNBQWtCLEVBQUUsRUFBRSxjQUEyQixFQUFFO1FBQ3RFLE1BQU0sR0FBRyxHQUEwQixDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBNEIsRUFBQyxDQUFDLENBQUM7UUFDOUYsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNsQyxLQUFLLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLE1BQU0sSUFBSSxXQUFXLEVBQUU7Z0JBQ3JELEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQzthQUM3RDtTQUNKO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU8sTUFBTSxDQUFDLG9CQUFvQixDQUFDLE1BQWUsRUFBRSxJQUFZLEVBQUUsTUFBYztRQUM3RSxNQUFNLFdBQVcsR0FBVyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFB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R0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hDLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3JCLENBQUMsQ0FBQyxDQUFDLEtBQUs7bUJBQ0wsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUs7bUJBQzdCLENBQ0MsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLEtBQUs7dUJBQzVCLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQ3hDLENBQ0osQ0FBQztTQUNMO1FBQ0QsSUFBSSxHQUFHLEVBQUU7WUFDTCxNQUFNLE9BQU8sR0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDckIsQ0FBQyxDQUFDLENBQUMsS0FBSzttQkFDTCxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSzttQkFDN0IsQ0FDQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsS0FBSzt1QkFDNUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FDeEMsQ0FDSixDQUFDO1NBQ0w7UUFDRCxJQUFJLE1BQU0sRUFBRTtZQUNSLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtTQUN6RDtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRpbWUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERyb3Bkb3duVmFsdWUgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2Jhc2UvZHJvcGRvd24tdmFsdWUuaW50ZXJmYWNlJztcbmltcG9ydCB7IERhdGVSYW5nZURhdGVEZWNvcmF0b3JDb25maWdJbnRlcm5hbCB9IGZyb20gJy4uL2RlY29yYXRvcnMvZGF0ZS9kYXRlLWRlY29yYXRvci1pbnRlcm5hbC5kYXRhJztcblxuY29uc3QgREFZX0lOX01TID0gMTAwMCAqIDYwICogNjAgKiAyNDtcblxuLyoqXG4gKiBWYWxpZCBzdGVwcyBmcm9tIG9uZSB0aW1lIHZhbHVlIHRvIHRoZSBuZXh0LiBOZWVkcyB0byBiZSBhYmxlIHRvIGRpdmlkZSA2MCBtaW51dGVzIHdpdGhvdXQgcmVtYWluZGVyLlxuICovXG50eXBlIE1pbnV0ZVN0ZXBzID0gMSB8IDIgfCAzIHwgNCB8IDUgfCA2IHwgMTAgfCAxMiB8IDE1IHwgMjAgfCAzMCB8IDYwO1xuXG4vKipcbiAqIENvbnRhaW5zIEhlbHBlciBGdW5jdGlvbnMgZm9yIGhhbmRsaW5nIGRhdGUgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERhdGVVdGlsaXRpZXMge1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZ2l2ZW4gdmFsdWUgYXMgYSBkYXRlIHZhbHVlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGdldCBhcyBhIGRhdGUuXG4gICAgICogQHJldHVybnMgVGhlIGdpdmVuIHZhbHVlIGFzIGEgZGF0ZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgYXNEYXRlKHZhbHVlOiB1bmtub3duKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSBhcyBEYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGRlZmF1bHQgdGltZXMgdXNlZCBieSB0aGUgRGF0ZVRpbWUgcGlja2VyIHdoZW4gbm90aGluZyBpcyBzcGVjaWZpZWQgYnkgdGhlIHVzZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybWF0IC0gVGhlIHRpbWUgZm9ybWF0LiBEZWZhdWx0cyB0byAyNC5cbiAgICAgKiBAcGFyYW0gbWludXRlU3RlcHMgLSBUaGUgc3RlcHMgZnJvbSBvbmUgdGltZSB2YWx1ZSB0byB0aGUgbmV4dC4gRGVmYXVsdHMgdG8gMzAuXG4gICAgICogQHJldHVybnMgVGltZXMgaW4gdGhlIDI0IGhvdXIgZm9ybWF0IGZyb20gMDowMCB1bnRpbCAyMzozMCBpbiAzMCBtaW51dGUgc3RlcHMuXG4gICAgICovXG4gICAgc3RhdGljIGdldERlZmF1bHRUaW1lcyhmb3JtYXQ6IDEyIHwgMjQgPSAyNCwgbWludXRlU3RlcHM6IE1pbnV0ZVN0ZXBzID0gMzApOiBEcm9wZG93blZhbHVlPFRpbWU+W10ge1xuICAgICAgICBjb25zdCByZXM6IERyb3Bkb3duVmFsdWU8VGltZT5bXSA9IFt7IGRpc3BsYXlOYW1lOiAnLScsIHZhbHVlOiB1bmRlZmluZWQgYXMgdW5rbm93biBhcyBUaW1lfV07XG4gICAgICAgIGZvciAobGV0IGhvdXIgPSAwOyBob3VyIDwgMjQ7IGhvdXIrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgbWludXRlID0gMDsgbWludXRlIDwgNjA7IG1pbnV0ZSArPSBtaW51dGVTdGVwcykge1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKHRoaXMuZ2V0VGltZURyb3Bkb3duVmFsdWUoZm9ybWF0LCBob3VyLCBtaW51dGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGdldFRpbWVEcm9wZG93blZhbHVlKGZvcm1hdDogMTIgfCAyNCwgaG91cjogbnVtYmVyLCBtaW51dGU6IG51bWJlcik6IERyb3Bkb3duVmFsdWU8VGltZT4ge1xuICAgICAgICBjb25zdCBkaXNwbGF5SG91cjogbnVtYmVyID0gdGhpcy5nZXRGb3JtYXR0ZWRIb3VyKGZvcm1hdCwgY2xvbmVEZWVwKGhvdXIpKTtcbiAgICAgICAgY29uc3QgZGlzcGxheU1pbnV0ZTogc3RyaW5nID0gdGhpcy5nZXRGb3JtYXR0ZWRNaW51dGUoZm9ybWF0LCBob3VyLCBtaW51dGUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGlzcGxheU5hbWU6IGAke2Rpc3BsYXlIb3VyfToke2Rpc3BsYXlNaW51dGV9YCxcbiAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgaG91cnM6IGhvdXIsXG4gICAgICAgICAgICAgICAgbWludXRlczogbWludXRlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBnZXRGb3JtYXR0ZWRIb3VyKGZvcm1hdDogMTIgfCAyNCwgaG91cjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gMTIgJiYgaG91ciA+IDEyKSB7XG4gICAgICAgICAgICBob3VyIC09IDEyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBob3VyO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGdldEZvcm1hdHRlZE1pbnV0ZShmb3JtYXQ6IDEyIHwgMjQsIGhvdXI6IG51bWJlciwgbWludXRlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcmVzID0gYCR7bWludXRlfWA7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IDEyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA+IDEyKSB7XG4gICAgICAgICAgICAgICAgcmVzID0gYCR7bWludXRlfSBQTWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMgPSBgJHttaW51dGV9IEFNYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWludXRlLnRvU3RyaW5nKCkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXMgPSAnMCcuY29uY2F0KHJlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBUaW1lIG9iamVjdCBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGRhdGUgdG8gZ2V0IHRoZSB0aW1lIG9iamVjdCBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSBUaW1lIG9iamVjdCBidWlsZCBmcm9tIHRoZSBkYXRlIHZhbHVlLlxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRUaW1lRnJvbURhdGUodmFsdWU6IERhdGUpOiBUaW1lIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBob3VyczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIG1pbnV0ZXM6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfSBhcyB1bmtub3duIGFzIFRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGhvdXJzOiBuZXcgRGF0ZSh2YWx1ZSkuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgICBtaW51dGVzOiBuZXcgRGF0ZSh2YWx1ZSkuZ2V0TWludXRlcygpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZGF0ZXMgYmV0d2VlbiB0aGUgdHdvIGdpdmVuIGdhdGVzLiBEb2VzIGFkZGl0aW9uYWwgZmlsdGVyaW5nIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBEYXRlUmFuZ2UgbWV0YWRhdGEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RhcnREYXRlIC0gVGhlIHN0YXJ0IGRhdGUuXG4gICAgICogQHBhcmFtIGVuZERhdGUgLSBUaGUgZW5kIGRhdGUuXG4gICAgICogQHBhcmFtIG1ldGFkYXRhRGF0ZVJhbmdlRGF0ZSAtIFRoZSBtZXRhZGF0YS5cbiAgICAgKiBAcmV0dXJucyBBbGwgZGF0ZXMgYmV0d2VlbiB0aGUgdHdvIHByb3ZpZGVkIGRhdGVzLiBJbmNsdWRlcyBzdGFydCBhbmQgZW5kIGRhdGUuXG4gICAgICovXG4gICAgc3RhdGljIGdldERhdGVzQmV0d2VlbihcbiAgICAgICAgc3RhcnREYXRlOiBEYXRlLFxuICAgICAgICBlbmREYXRlOiBEYXRlLFxuICAgICAgICBtZXRhZGF0YURhdGVSYW5nZURhdGU6IERhdGVSYW5nZURhdGVEZWNvcmF0b3JDb25maWdJbnRlcm5hbFxuICAgICk6IERhdGVbXSB7XG4gICAgICAgIGNvbnN0IHJlczogRGF0ZVtdID0gW107XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgIHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpIDwgZW5kRGF0ZS5nZXRGdWxsWWVhcigpXG4gICAgICAgICAgICB8fCBzdGFydERhdGUuZ2V0TW9udGgoKSA8IGVuZERhdGUuZ2V0TW9udGgoKVxuICAgICAgICAgICAgfHwgc3RhcnREYXRlLmdldERhdGUoKSA8PSBlbmREYXRlLmdldERhdGUoKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKG5ldyBEYXRlKHN0YXJ0RGF0ZSkpO1xuICAgICAgICAgICAgc3RhcnREYXRlLnNldFRpbWUoc3RhcnREYXRlLmdldFRpbWUoKSArIERBWV9JTl9NUyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1ldGFkYXRhRGF0ZVJhbmdlRGF0ZS5maWx0ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiByZXMuZmlsdGVyKGQgPT4gbWV0YWRhdGFEYXRlUmFuZ2VEYXRlLmZpbHRlcj8uKGQpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIHZhbGlkIHRpbWVzIGZvciB0aGUgZHJvcGRvd24gb2YgYSBkYXRldGltZSBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgb2YgdGhlIGRhdGV0aW1lLlxuICAgICAqIEBwYXJhbSB0aW1lcyAtIEFsbCBnaXZlbiB0aW1lcyB0byBmaWx0ZXIuXG4gICAgICogQHBhcmFtIG1pbiAtIFRoZSBmdW5jdGlvbiB0aGF0IGRlZmluZXMgdGhlIG1pbmltdW0gdGltZS5cbiAgICAgKiBAcGFyYW0gbWF4IC0gVGhlIGZ1bmN0aW9uIHRoYXQgZGVmaW5lcyB0aGUgbWF4aW11bSB0aW1lLlxuICAgICAqIEBwYXJhbSBmaWx0ZXIgLSBBIGZpbHRlciBmdW5jdGlvbiB0byBkbyBtb3JlIHNwZWNpZmljIHRpbWUgZmlsdGVyaW5nLiBUaGlzIGNvdWxkIGJlIGUuZy4gVGhlIHJlbW92YWwgb2YgbHVuY2ggYnJlYWtzLlxuICAgICAqIEByZXR1cm5zIEFsbCB2YWxpZCBkcm9wZG93biB2YWx1ZXMgZm9yIHRoZSBkYXRldGltZSBwcm9wZXJ0eS5cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0VmFsaWRUaW1lc0ZvckRyb3Bkb3duKFxuICAgICAgICBkYXRlOiBEYXRlLFxuICAgICAgICB0aW1lczogRHJvcGRvd25WYWx1ZTxUaW1lPltdLFxuICAgICAgICBtaW4/OiAoZGF0ZT86IERhdGUpID0+IFRpbWUsXG4gICAgICAgIG1heD86IChkYXRlPzogRGF0ZSkgPT4gVGltZSxcbiAgICAgICAgZmlsdGVyPzogKCh0aW1lOiBUaW1lKSA9PiBib29sZWFuKSB8ICgoKSA9PiBib29sZWFuKVxuICAgICk6IERyb3Bkb3duVmFsdWU8VGltZT5bXSB7XG4gICAgICAgIGlmIChtaW4pIHtcbiAgICAgICAgICAgIGNvbnN0IG1pblRpbWU6IFRpbWUgPSBtaW4oZGF0ZSk7XG4gICAgICAgICAgICB0aW1lcyA9IHRpbWVzLmZpbHRlcih0ID0+XG4gICAgICAgICAgICAgICAgIXQudmFsdWVcbiAgICAgICAgICAgICAgICB8fCB0LnZhbHVlLmhvdXJzID4gbWluVGltZS5ob3Vyc1xuICAgICAgICAgICAgICAgIHx8IChcbiAgICAgICAgICAgICAgICAgICAgdC52YWx1ZS5ob3VycyA9PT0gbWluVGltZS5ob3Vyc1xuICAgICAgICAgICAgICAgICAgICAmJiB0LnZhbHVlLm1pbnV0ZXMgPj0gbWluVGltZS5taW51dGVzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF4KSB7XG4gICAgICAgICAgICBjb25zdCBtYXhUaW1lOiBUaW1lID0gbWF4KGRhdGUpO1xuICAgICAgICAgICAgdGltZXMgPSB0aW1lcy5maWx0ZXIodCA9PlxuICAgICAgICAgICAgICAgICF0LnZhbHVlXG4gICAgICAgICAgICAgICAgfHwgdC52YWx1ZS5ob3VycyA8IG1heFRpbWUuaG91cnNcbiAgICAgICAgICAgICAgICB8fCAoXG4gICAgICAgICAgICAgICAgICAgIHQudmFsdWUuaG91cnMgPT09IG1heFRpbWUuaG91cnNcbiAgICAgICAgICAgICAgICAgICAgJiYgdC52YWx1ZS5taW51dGVzIDw9IG1heFRpbWUubWludXRlc1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgICAgdGltZXMgPSB0aW1lcy5maWx0ZXIodCA9PiAhdC52YWx1ZSB8fCBmaWx0ZXIodC52YWx1ZSkpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGltZXM7XG4gICAgfVxufSJdfQ==
154
+ /**
155
+ * The default filter function to user when none was provided by the user.
156
+ */
157
+ DateUtilities.defaultDateFilter = () => true;
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS51dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jbGFzc2VzL2RhdGUudXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUdsRSxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFPdEM7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGFBQWE7SUFPL0I7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWM7UUFDeEIsT0FBTyxLQUFhLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsU0FBa0IsRUFBRSxFQUFFLGNBQTJCLEVBQUU7UUFDdEUsTUFBTSxHQUFHLEdBQTBCLENBQUMsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUE0QixFQUFDLENBQUMsQ0FBQztRQUM5RixLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ2xDLEtBQUssSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsTUFBTSxJQUFJLFdBQVcsRUFBRTtnQkFDckQsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO2FBQ3RFO1NBQ0o7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFTyxNQUFNLENBQUMsb0JBQW9CLENBQUMsTUFBZSxFQUFFLElBQVksRUFBRSxNQUFjO1FBQzdFLE1BQU0sV0FBVyxHQUFXLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxN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QUssQ0FBQztlQUN4QixJQUFJLENBQUMsT0FBTyxJQUFJLElBQUk7ZUFDcEIsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFFBQVE7ZUFDaEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQy9CO1lBQ0UsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7O0FBckxEOztHQUVHO0FBQ0ksK0JBQWlCLEdBQTBDLEdBQVksRUFBRSxDQUFDLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRpbWUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGF0ZUZpbHRlckZuIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBMb2Rhc2hVdGlsaXRpZXMgfSBmcm9tICcuLi9jYXBzdWxhdGlvbi9sb2Rhc2gudXRpbGl0aWVzJztcbmltcG9ydCB7IERyb3Bkb3duVmFsdWUgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2Jhc2UvZHJvcGRvd24tdmFsdWUuaW50ZXJmYWNlJztcblxuY29uc3QgREFZX0lOX01TID0gMTAwMCAqIDYwICogNjAgKiAyNDtcblxuLyoqXG4gKiBWYWxpZCBzdGVwcyBmcm9tIG9uZSB0aW1lIHZhbHVlIHRvIHRoZSBuZXh0LiBOZWVkcyB0byBiZSBhYmxlIHRvIGRpdmlkZSA2MCBtaW51dGVzIHdpdGhvdXQgcmVtYWluZGVyLlxuICovXG50eXBlIE1pbnV0ZVN0ZXBzID0gMSB8IDIgfCAzIHwgNCB8IDUgfCA2IHwgMTAgfCAxMiB8IDE1IHwgMjAgfCAzMCB8IDYwO1xuXG4vKipcbiAqIENvbnRhaW5zIEhlbHBlciBGdW5jdGlvbnMgZm9yIGhhbmRsaW5nIGRhdGUgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERhdGVVdGlsaXRpZXMge1xuXG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgZmlsdGVyIGZ1bmN0aW9uIHRvIHVzZXIgd2hlbiBub25lIHdhcyBwcm92aWRlZCBieSB0aGUgdXNlci5cbiAgICAgKi9cbiAgICBzdGF0aWMgZGVmYXVsdERhdGVGaWx0ZXI6IERhdGVGaWx0ZXJGbjxEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZD4gPSAoKTogYm9vbGVhbiA9PiB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZ2l2ZW4gdmFsdWUgYXMgYSBkYXRlIHZhbHVlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGdldCBhcyBhIGRhdGUuXG4gICAgICogQHJldHVybnMgVGhlIGdpdmVuIHZhbHVlIGFzIGEgZGF0ZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgYXNEYXRlKHZhbHVlOiB1bmtub3duKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSBhcyBEYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGRlZmF1bHQgdGltZXMgdXNlZCBieSB0aGUgRGF0ZVRpbWUgcGlja2VyIHdoZW4gbm90aGluZyBpcyBzcGVjaWZpZWQgYnkgdGhlIHVzZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybWF0IC0gVGhlIHRpbWUgZm9ybWF0LiBEZWZhdWx0cyB0byAyNC5cbiAgICAgKiBAcGFyYW0gbWludXRlU3RlcHMgLSBUaGUgc3RlcHMgZnJvbSBvbmUgdGltZSB2YWx1ZSB0byB0aGUgbmV4dC4gRGVmYXVsdHMgdG8gMzAuXG4gICAgICogQHJldHVybnMgVGltZXMgaW4gdGhlIDI0IGhvdXIgZm9ybWF0IGZyb20gMDowMCB1bnRpbCAyMzozMCBpbiAzMCBtaW51dGUgc3RlcHMuXG4gICAgICovXG4gICAgc3RhdGljIGdldERlZmF1bHRUaW1lcyhmb3JtYXQ6IDEyIHwgMjQgPSAyNCwgbWludXRlU3RlcHM6IE1pbnV0ZVN0ZXBzID0gMzApOiBEcm9wZG93blZhbHVlPFRpbWU+W10ge1xuICAgICAgICBjb25zdCByZXM6IERyb3Bkb3duVmFsdWU8VGltZT5bXSA9IFt7IGRpc3BsYXlOYW1lOiAnLScsIHZhbHVlOiB1bmRlZmluZWQgYXMgdW5rbm93biBhcyBUaW1lfV07XG4gICAgICAgIGZvciAobGV0IGhvdXIgPSAwOyBob3VyIDwgMjQ7IGhvdXIrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgbWludXRlID0gMDsgbWludXRlIDwgNjA7IG1pbnV0ZSArPSBtaW51dGVTdGVwcykge1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKERhdGVVdGlsaXRpZXMuZ2V0VGltZURyb3Bkb3duVmFsdWUoZm9ybWF0LCBob3VyLCBtaW51dGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGdldFRpbWVEcm9wZG93blZhbHVlKGZvcm1hdDogMTIgfCAyNCwgaG91cjogbnVtYmVyLCBtaW51dGU6IG51bWJlcik6IERyb3Bkb3duVmFsdWU8VGltZT4ge1xuICAgICAgICBjb25zdCBkaXNwbGF5SG91cjogbnVtYmVyID0gRGF0ZVV0aWxpdGllcy5nZXRGb3JtYXR0ZWRIb3VyKGZvcm1hdCwgTG9kYXNoVXRpbGl0aWVzLmNsb25lRGVlcChob3VyKSk7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlNaW51dGU6IHN0cmluZyA9IERhdGVVdGlsaXRpZXMuZ2V0Rm9ybWF0dGVkTWludXRlKGZvcm1hdCwgaG91ciwgbWludXRlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBgJHtkaXNwbGF5SG91cn06JHtkaXNwbGF5TWludXRlfWAsXG4gICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgIGhvdXJzOiBob3VyLFxuICAgICAgICAgICAgICAgIG1pbnV0ZXM6IG1pbnV0ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGdldEZvcm1hdHRlZEhvdXIoZm9ybWF0OiAxMiB8IDI0LCBob3VyOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSAxMiAmJiBob3VyID4gMTIpIHtcbiAgICAgICAgICAgIGhvdXIgLT0gMTI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0Rm9ybWF0dGVkTWludXRlKGZvcm1hdDogMTIgfCAyNCwgaG91cjogbnVtYmVyLCBtaW51dGU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXMgPSBgJHttaW51dGV9YDtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gMTIpIHtcbiAgICAgICAgICAgIGlmIChob3VyID4gMTIpIHtcbiAgICAgICAgICAgICAgICByZXMgPSBgJHttaW51dGV9IFBNYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlcyA9IGAke21pbnV0ZX0gQU1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtaW51dGUudG9TdHJpbmcoKS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJlcyA9ICcwJy5jb25jYXQocmVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIFRpbWUgb2JqZWN0IGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgZGF0ZSB0byBnZXQgdGhlIHRpbWUgb2JqZWN0IGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIFRpbWUgb2JqZWN0IGJ1aWxkIGZyb20gdGhlIGRhdGUgdmFsdWUuXG4gICAgICovXG4gICAgc3RhdGljIGdldFRpbWVGcm9tRGF0ZSh2YWx1ZTogRGF0ZSk6IFRpbWUgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoISh2YWx1ZSBhcyBEYXRlIHwgdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaG91cnM6IG5ldyBEYXRlKHZhbHVlKS5nZXRIb3VycygpLFxuICAgICAgICAgICAgICAgIG1pbnV0ZXM6IG5ldyBEYXRlKHZhbHVlKS5nZXRNaW51dGVzKClcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBkYXRlcyBiZXR3ZWVuIHRoZSB0d28gZ2l2ZW4gZ2F0ZXMuIERvZXMgYWRkaXRpb25hbCBmaWx0ZXJpbmcgYmFzZWQgb24gdGhlIHByb3ZpZGVkIERhdGVSYW5nZSBtZXRhZGF0YS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdGFydERhdGUgLSBUaGUgc3RhcnQgZGF0ZS5cbiAgICAgKiBAcGFyYW0gZW5kRGF0ZSAtIFRoZSBlbmQgZGF0ZS5cbiAgICAgKiBAcGFyYW0gZmlsdGVyIC0gVGhlIGN1c3RvbSBmaWx0ZXIgZnJvbSB0aGUgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMgQWxsIGRhdGVzIGJldHdlZW4gdGhlIHR3byBwcm92aWRlZCBkYXRlcy4gSW5jbHVkZXMgc3RhcnQgYW5kIGVuZCBkYXRlLlxuICAgICAqL1xuICAgIHN0YXRpYyBnZXREYXRlc0JldHdlZW4oXG4gICAgICAgIHN0YXJ0RGF0ZTogRGF0ZSxcbiAgICAgICAgZW5kRGF0ZTogRGF0ZSxcbiAgICAgICAgZmlsdGVyPzogRGF0ZUZpbHRlckZuPERhdGU+XG4gICAgKTogRGF0ZVtdIHtcbiAgICAgICAgY29uc3QgcmVzOiBEYXRlW10gPSBbXTtcbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgc3RhcnREYXRlLmdldEZ1bGxZZWFyKCkgPCBlbmREYXRlLmdldEZ1bGxZZWFyKClcbiAgICAgICAgICAgIHx8IHN0YXJ0RGF0ZS5nZXRNb250aCgpIDwgZW5kRGF0ZS5nZXRNb250aCgpXG4gICAgICAgICAgICB8fCBzdGFydERhdGUuZ2V0RGF0ZSgpIDw9IGVuZERhdGUuZ2V0RGF0ZSgpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmVzLnB1c2gobmV3IERhdGUoc3RhcnREYXRlKSk7XG4gICAgICAgICAgICBzdGFydERhdGUuc2V0VGltZShzdGFydERhdGUuZ2V0VGltZSgpICsgREFZX0lOX01TKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmZpbHRlcihkID0+IGZpbHRlcihkKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGFsbCB2YWxpZCB0aW1lcyBmb3IgdGhlIGRyb3Bkb3duIG9mIGEgZGF0ZXRpbWUgcHJvcGVydHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIG9mIHRoZSBkYXRldGltZS5cbiAgICAgKiBAcGFyYW0gdGltZXMgLSBBbGwgZ2l2ZW4gdGltZXMgdG8gZmlsdGVyLlxuICAgICAqIEBwYXJhbSBtaW4gLSBUaGUgZnVuY3Rpb24gdGhhdCBkZWZpbmVzIHRoZSBtaW5pbXVtIHRpbWUuXG4gICAgICogQHBhcmFtIG1heCAtIFRoZSBmdW5jdGlvbiB0aGF0IGRlZmluZXMgdGhlIG1heGltdW0gdGltZS5cbiAgICAgKiBAcGFyYW0gZmlsdGVyIC0gQSBmaWx0ZXIgZnVuY3Rpb24gdG8gZG8gbW9yZSBzcGVjaWZpYyB0aW1lIGZpbHRlcmluZy4gVGhpcyBjb3VsZCBiZSBlLmcuIFRoZSByZW1vdmFsIG9mIGx1bmNoIGJyZWFrcy5cbiAgICAgKiBAcmV0dXJucyBBbGwgdmFsaWQgZHJvcGRvd24gdmFsdWVzIGZvciB0aGUgZGF0ZXRpbWUgcHJvcGVydHkuXG4gICAgICovXG4gICAgc3RhdGljIGdldFZhbGlkVGltZXNGb3JEcm9wZG93bihcbiAgICAgICAgZGF0ZTogRGF0ZSxcbiAgICAgICAgdGltZXM6IERyb3Bkb3duVmFsdWU8VGltZT5bXSxcbiAgICAgICAgbWluPzogKGRhdGU/OiBEYXRlKSA9PiBUaW1lLFxuICAgICAgICBtYXg/OiAoZGF0ZT86IERhdGUpID0+IFRpbWUsXG4gICAgICAgIGZpbHRlcj86ICgodGltZTogVGltZSkgPT4gYm9vbGVhbikgfCAoKCkgPT4gYm9vbGVhbilcbiAgICApOiBEcm9wZG93blZhbHVlPFRpbWU+W10ge1xuICAgICAgICBpZiAobWluKSB7XG4gICAgICAgICAgICBjb25zdCBtaW5UaW1lOiBUaW1lID0gbWluKGRhdGUpO1xuICAgICAgICAgICAgdGltZXMgPSB0aW1lcy5maWx0ZXIodCA9PlxuICAgICAgICAgICAgICAgICEodC52YWx1ZSBhcyBUaW1lIHwgdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIHx8IHQudmFsdWUuaG91cnMgPiBtaW5UaW1lLmhvdXJzXG4gICAgICAgICAgICAgICAgfHwgKFxuICAgICAgICAgICAgICAgICAgICB0LnZhbHVlLmhvdXJzID09PSBtaW5UaW1lLmhvdXJzXG4gICAgICAgICAgICAgICAgICAgICYmIHQudmFsdWUubWludXRlcyA+PSBtaW5UaW1lLm1pbnV0ZXNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtYXgpIHtcbiAgICAgICAgICAgIGNvbnN0IG1heFRpbWU6IFRpbWUgPSBtYXgoZGF0ZSk7XG4gICAgICAgICAgICB0aW1lcyA9IHRpbWVzLmZpbHRlcih0ID0+XG4gICAgICAgICAgICAgICAgISh0LnZhbHVlIGFzIFRpbWUgfCB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgfHwgdC52YWx1ZS5ob3VycyA8IG1heFRpbWUuaG91cnNcbiAgICAgICAgICAgICAgICB8fCAoXG4gICAgICAgICAgICAgICAgICAgIHQudmFsdWUuaG91cnMgPT09IG1heFRpbWUuaG91cnNcbiAgICAgICAgICAgICAgICAgICAgJiYgdC52YWx1ZS5taW51dGVzIDw9IG1heFRpbWUubWludXRlc1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgICAgdGltZXMgPSB0aW1lcy5maWx0ZXIodCA9PiAhKHQudmFsdWUgYXMgVGltZSB8IHVuZGVmaW5lZCkgfHwgZmlsdGVyKHQudmFsdWUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aW1lcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIHRpbWUgb2JqZWN0IGhhcyBwcm9jZXNzYWJsZSBob3VycyBhbmQgbWludXRlcyBwcm9wZXJ0aWVzLlxuICAgICAqIERvZXNuJ3QgY2hlY2sgY3VzdG9tIHZhbGlkYXRvcnMgbGlrZSBtaW4vbWF4IGZyb20gdGhlIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGltZSAtIFRoZSB0aW1lIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IHRoZSB0aW1lIG9iamVjdCBpcyB1bnByb2Nlc3NhYmxlLlxuICAgICAqL1xuICAgIHN0YXRpYyB0aW1lSXNVbnByb2Nlc3NhYmxlKHRpbWU/OiBUaW1lKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aW1lXG4gICAgICAgICAgICB8fCB0aW1lLmhvdXJzID09IG51bGxcbiAgICAgICAgICAgIHx8IHR5cGVvZiB0aW1lLmhvdXJzICE9PSAnbnVtYmVyJ1xuICAgICAgICAgICAgfHwgTnVtYmVyLmlzTmFOKHRpbWUuaG91cnMpXG4gICAgICAgICAgICB8fCB0aW1lLm1pbnV0ZXMgPT0gbnVsbFxuICAgICAgICAgICAgfHwgdHlwZW9mIHRpbWUubWludXRlcyAhPT0gJ251bWJlcidcbiAgICAgICAgICAgIHx8IE51bWJlci5pc05hTih0aW1lLm1pbnV0ZXMpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn0iXX0=
@@ -16,4 +16,4 @@ __decorate([
16
16
  }),
17
17
  __metadata("design:type", String)
18
18
  ], Entity.prototype, "id", void 0);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY2xhc3Nlcy9lbnRpdHkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQU8vRDs7R0FFRztBQUNILE1BQU0sT0FBZ0IsTUFBTTtDQWEzQjtBQURHO0lBUkMsTUFBTSxDQUFDO1FBQ0osYUFBYSxFQUFFLElBQUk7UUFDbkIsYUFBYSxFQUFFLElBQUk7UUFDbkIsT0FBTyxFQUFFLEtBQUs7UUFDZCxZQUFZLEVBQUUsTUFBTTtRQUNwQixXQUFXLEVBQUUsSUFBSTtRQUNqQixRQUFRLEVBQUUsSUFBSTtLQUNqQixDQUFDOztrQ0FDVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0cmluZyB9IGZyb20gJy4uL2RlY29yYXRvcnMvc3RyaW5nL3N0cmluZy5kZWNvcmF0b3InO1xuXG4vKipcbiAqIFRoZSBuZXdhYmxlIHR5cGUgdXNlZCB3aGVuZXZlciBhbiBlbnRpdHkgY2xhc3MgaXMgcGFzc2VkIHRvIGNyZWF0ZSBhbiBlbnRpdHkgYW5kIGluaXRpYWxpemUgaXRzIG1ldGFkYXRhLlxuICovXG5leHBvcnQgdHlwZSBFbnRpdHlDbGFzc05ld2FibGU8RW50aXR5VHlwZSBleHRlbmRzIG9iamVjdD4gPSBuZXcoZGF0YT86IEVudGl0eVR5cGUpID0+IEVudGl0eVR5cGU7XG5cbi8qKlxuICogQSBiYXNlIEVudGl0eSBjbGFzcyB3aXRoIGEgYnVpbHRpbiBpZC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudGl0eSB7XG4gICAgLyoqXG4gICAgICogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIEVudGl0eS5cbiAgICAgKi9cbiAgICBAc3RyaW5nKHtcbiAgICAgICAgb21pdEZvckNyZWF0ZTogdHJ1ZSxcbiAgICAgICAgb21pdEZvclVwZGF0ZTogdHJ1ZSxcbiAgICAgICAgZGlzcGxheTogZmFsc2UsXG4gICAgICAgIGRpc3BsYXlTdHlsZTogJ2xpbmUnLFxuICAgICAgICBkaXNwbGF5TmFtZTogJ0lEJyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICB9KVxuICAgIGlkITogc3RyaW5nO1xufSJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY2xhc3Nlcy9lbnRpdHkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQVkvRDs7R0FFRztBQUNILE1BQU0sT0FBZ0IsTUFBTTtDQWEzQjtBQURHO0lBUkMsTUFBTSxDQUFDO1FBQ0osYUFBYSxFQUFFLElBQUk7UUFDbkIsYUFBYSxFQUFFLElBQUk7UUFDbkIsT0FBTyxFQUFFLEtBQUs7UUFDZCxZQUFZLEVBQUUsTUFBTTtRQUNwQixXQUFXLEVBQUUsSUFBSTtRQUNqQixRQUFRLEVBQUUsSUFBSTtLQUNqQixDQUFDOztrQ0FDVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0cmluZyB9IGZyb20gJy4uL2RlY29yYXRvcnMvc3RyaW5nL3N0cmluZy5kZWNvcmF0b3InO1xuXG4vKipcbiAqIFRoZSBuZXdhYmxlIHR5cGUgdXNlZCB3aGVuZXZlciBhbiBlbnRpdHkgY2xhc3MgaXMgcGFzc2VkIHRvIGNyZWF0ZSBhbiBlbnRpdHkgYW5kIGluaXRpYWxpemUgaXRzIG1ldGFkYXRhLlxuICovXG5leHBvcnQgdHlwZSBFbnRpdHlDbGFzc05ld2FibGU8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiA9IG5ldyhkYXRhPzogRW50aXR5VHlwZSkgPT4gRW50aXR5VHlwZTtcblxuLyoqXG4gKiBUaGUgR2VuZXJpYyBCYXNlIEVudGl0eVR5cGUuXG4gKi9cbmV4cG9ydCB0eXBlIEJhc2VFbnRpdHlUeXBlPFQ+ID0geyBbSyBpbiBrZXlvZiBUXTogdW5rbm93biB9O1xuXG4vKipcbiAqIEEgYmFzZSBFbnRpdHkgY2xhc3Mgd2l0aCBhIGJ1aWx0aW4gaWQuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnRpdHkge1xuICAgIC8qKlxuICAgICAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBFbnRpdHkuXG4gICAgICovXG4gICAgQHN0cmluZyh7XG4gICAgICAgIG9taXRGb3JDcmVhdGU6IHRydWUsXG4gICAgICAgIG9taXRGb3JVcGRhdGU6IHRydWUsXG4gICAgICAgIGRpc3BsYXk6IGZhbHNlLFxuICAgICAgICBkaXNwbGF5U3R5bGU6ICdsaW5lJyxcbiAgICAgICAgZGlzcGxheU5hbWU6ICdJRCcsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgfSlcbiAgICBpZCE6IHN0cmluZztcbn0iXX0=