@mediusinc/mng-commons-data-api 5.2.0-rc.0 → 5.2.0-rc.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.
package/esm2022/index.mjs CHANGED
@@ -1,7 +1,9 @@
1
1
  // helpers
2
2
  export * from './lib/helpers/get-all-params';
3
3
  // models
4
+ export * from './lib/models/api-version.model';
4
5
  export * from './lib/models/request-params.model';
6
+ export * from './lib/models/schema.model';
5
7
  // types
6
8
  export * from './lib/types/extract-get-all-params.type';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLGNBQWMsOEJBQThCLENBQUM7QUFFN0MsU0FBUztBQUNULGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsUUFBUTtBQUNSLGNBQWMseUNBQXlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBoZWxwZXJzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9oZWxwZXJzL2dldC1hbGwtcGFyYW1zJztcblxuLy8gbW9kZWxzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvcmVxdWVzdC1wYXJhbXMubW9kZWwnO1xuXG4vLyB0eXBlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHlwZXMvZXh0cmFjdC1nZXQtYWxsLXBhcmFtcy50eXBlJztcbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLGNBQWMsOEJBQThCLENBQUM7QUFFN0MsU0FBUztBQUNULGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDJCQUEyQixDQUFDO0FBRTFDLFFBQVE7QUFDUixjQUFjLHlDQUF5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaGVscGVycy9nZXQtYWxsLXBhcmFtcyc7XG5cbi8vIG1vZGVsc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2FwaS12ZXJzaW9uLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9yZXF1ZXN0LXBhcmFtcy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvc2NoZW1hLm1vZGVsJztcblxuLy8gdHlwZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGVzL2V4dHJhY3QtZ2V0LWFsbC1wYXJhbXMudHlwZSc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXZlcnNpb24ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21vZGVscy9hcGktdmVyc2lvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBcGlWZXJzaW9uIHtcbiAgICBhcHBOYW1lPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIHZlcnNpb24/OiBzdHJpbmc7XG4gICAgaW5mb0VtYWlsPzogc3RyaW5nO1xuICAgIGluZm9Vcmw/OiBzdHJpbmc7XG4gICAgbGljZW5zZUluZm8/OiBzdHJpbmc7XG4gICAgbGljZW5zZVVybD86IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2RlbHMvc2NoZW1hLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNjaGVtYU1vZGVsPE1vZGVsID0gYW55PiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHByb3BlcnRpZXM6IFJlY29yZDxrZXlvZiBNb2RlbCwgU2NoZW1hUHJvcGVydHk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYUVudW08RW51bVR5cGU+IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWVzOiBFbnVtVHlwZVtdO1xuICAgIGNvbnN0YW50czogc3RyaW5nW107XG4gICAgdHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYVByb3BlcnR5IHtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgb2JqZWN0VHlwZT86IHN0cmluZztcbiAgICBpc1JlYWRPbmx5PzogYm9vbGVhbjtcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgaXNOdWxsYWJsZT86IGJvb2xlYW47XG4gICAgbWluTGVuZ3RoPzogbnVtYmVyO1xuICAgIG1heExlbmd0aD86IG51bWJlcjtcbiAgICBtaW5pbXVtPzogbnVtYmVyO1xuICAgIG1heGltdW0/OiBudW1iZXI7XG4gICAgZXhjbHVzaXZlTWluaW11bT86IGJvb2xlYW47XG4gICAgZXhjbHVzaXZlTWF4aW11bT86IGJvb2xlYW47XG4gICAgaXNJbnRlZ2VyPzogYm9vbGVhbjtcbiAgICBwYXR0ZXJuPzogc3RyaW5nO1xuICAgIG1heEl0ZW1zPzogbnVtYmVyO1xuICAgIG1pbkl0ZW1zPzogbnVtYmVyO1xuICAgIGVudW1Nb2RlbD86IGFueTtcbiAgICBlbnVtTmFtZT86IHN0cmluZztcbiAgICBpc0VtYWlsPzogYm9vbGVhbjtcbiAgICBpc1Bhc3N3b3JkPzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -1,2 +1,6 @@
1
1
  export * from './tableview-get-all-params-create';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90YWJsZXZpZXcvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RhYmxldmlldy1nZXQtYWxsLXBhcmFtcy1jcmVhdGUnO1xuIl19
2
+ // schema
3
+ export * from './schema/columns-from-schema';
4
+ export * from './schema/enum-from-schema';
5
+ export * from './schema/fields-from-schema';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90YWJsZXZpZXcvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsU0FBUztBQUNULGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXctZ2V0LWFsbC1wYXJhbXMtY3JlYXRlJztcblxuLy8gc2NoZW1hXG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYS9jb2x1bW5zLWZyb20tc2NoZW1hJztcbmV4cG9ydCAqIGZyb20gJy4vc2NoZW1hL2VudW0tZnJvbS1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEvZmllbGRzLWZyb20tc2NoZW1hJztcbiJdfQ==
@@ -0,0 +1,173 @@
1
+ import { enumModelFromSchema } from './enum-from-schema';
2
+ import { fromSchemaCurrencyOptsToCurrency, fromSchemaFilterNonArrayProperties } from './internal/common-from-schema';
3
+ const defaultGetter = value => {
4
+ if (typeof value === 'object') {
5
+ const valueObj = value;
6
+ return (valueObj['title'] ??
7
+ valueObj['name'] ??
8
+ valueObj['naziv'] ??
9
+ valueObj['code'] ??
10
+ valueObj['sifra'] ??
11
+ valueObj['id'] ??
12
+ valueObj['uuid'] ??
13
+ valueObj[Object.keys(valueObj)[0]]);
14
+ }
15
+ else {
16
+ return value;
17
+ }
18
+ };
19
+ /**
20
+ * <em>Experimental:</em> Builder for adding columns to table.
21
+ *
22
+ * @experimental
23
+ */
24
+ export class SchemaColumnsBuilder {
25
+ constructor(descriptor, schema, opts) {
26
+ this.descriptor = descriptor;
27
+ this.schema = schema;
28
+ this.opts = opts;
29
+ }
30
+ mergeColumnsOpts(property, opts) {
31
+ return {
32
+ ...this.opts,
33
+ columnType: this.opts?.columnTypes?.[property],
34
+ getter: opts?.getters?.[property] ?? this.opts?.getters?.[property],
35
+ enumModel: opts?.enumModels?.[property] ?? this.opts?.enumModels?.[property],
36
+ enumSchema: opts?.enumSchemas?.[property] ?? this.opts?.enumSchemas?.[property],
37
+ ...opts
38
+ };
39
+ }
40
+ mergeColumnOpts(property, opts) {
41
+ return {
42
+ ...this.opts,
43
+ columnType: this.opts?.columnTypes?.[property],
44
+ getter: this.opts?.getters?.[property],
45
+ enumModel: this.opts?.enumModels?.[property],
46
+ enumSchema: this.opts?.enumSchemas?.[property],
47
+ ...opts
48
+ };
49
+ }
50
+ /**
51
+ * <em>Experimental:</em> Adds a single column via {addColumnFromSchema}.
52
+ *
53
+ * @experimental
54
+ *
55
+ * @param {Property} property - The property to add the column for.
56
+ * @param {ColumnFromSchemaOptsType<SchModel[Property], SchModel, any, Model>} opts - Additional options.
57
+ *
58
+ * @return {ColumnDescriptor<NonNullable<Model[Property]>, Model, Model[Property]>} The added column descriptor.
59
+ */
60
+ add(property, opts) {
61
+ return addColumnFromSchema(this.descriptor, property, this.schema.properties[property], this.mergeColumnOpts(property, opts));
62
+ }
63
+ /**
64
+ * <em>Experimental:</em> Adds all columns from the non-array schema properties via {addColumnFromSchema}.
65
+ *
66
+ * @experimental
67
+ *
68
+ * @param {ColumnsFromSchemaOptsType<SchModel>} opts - Additional options.
69
+ *
70
+ * @return {this} - The current instance of the builder.
71
+ */
72
+ withAddAll(opts) {
73
+ this.addColumns(undefined, opts);
74
+ return this;
75
+ }
76
+ withAdd(propOrOpts, ...properties) {
77
+ if (typeof propOrOpts === 'object') {
78
+ this.addColumns(properties.length === 0 ? undefined : properties, propOrOpts);
79
+ }
80
+ else {
81
+ this.addColumns([propOrOpts, ...properties]);
82
+ }
83
+ return this;
84
+ }
85
+ /**
86
+ * <em>Experimental:</em> Adds a single column via {addColumnFromSchema} where property schema is manually provided.
87
+ *
88
+ * @experimental
89
+ *
90
+ * @param {Property} property - The property to add the column for.
91
+ * @param {SchemaProperty} schemaProperty - Manually provided schema property.
92
+ * @param {ColumnFromSchemaOptsType} opts - Additional options.
93
+ *
94
+ * @return {ColumnDescriptor<NonNullable<Model[Property]>, Model, Model[Property]>} The added column descriptor.
95
+ */
96
+ addFromSchema(property, schemaProperty, opts) {
97
+ return addColumnFromSchema(this.descriptor, property, schemaProperty, this.mergeColumnOpts(property, opts));
98
+ }
99
+ addColumns(properties, opts) {
100
+ const addProperties = properties ?? fromSchemaFilterNonArrayProperties(this.schema.properties);
101
+ if (addProperties) {
102
+ addProperties.forEach(property => {
103
+ addColumnFromSchema(this.descriptor, property, this.schema.properties[property], this.mergeColumnsOpts(property, opts));
104
+ });
105
+ }
106
+ }
107
+ }
108
+ /**
109
+ * <em>Experimental:</em> Creates builder for adding columns to descriptor based on provided model schema.
110
+ *
111
+ * @experimental
112
+ *
113
+ * @param {TableviewDescriptorInst<Model, any, any, any> | TableDescriptorInst<Model, any, any>} descriptor - Descriptor to add columns to.
114
+ * @param {SchemaModel<SchModel>} schema - The schema with metadata about properties for fields.
115
+ * @param {ColumnsFromSchemaOptsType<SchModel>} [opts] - Additional options.
116
+ *
117
+ * @return {SchemaColumnsBuilder<Model, SchModel>} - The column schema builder instance.
118
+ */
119
+ export function columnsFromSchema(descriptor, schema, opts) {
120
+ return new SchemaColumnsBuilder(descriptor, schema, opts);
121
+ }
122
+ /**
123
+ * <em>Experimental:</em> Adds a column to table descriptor based on the given schema property and options.
124
+ *
125
+ * @param {TableviewDescriptorInst<Model, any, any, any> | TableDescriptorInst<Model, any, any>} descriptor - The table view descriptor or table descriptor to add the column to.
126
+ * @param {Property} property - The property key of the model to create the column for.
127
+ * @param {SchemaProperty} propertySchema - The schema property for the property.
128
+ * @param {ColumnFromSchemaOptsType<Model[Property], Model, any, Model>} [opts] - The options for the column.
129
+ *
130
+ * @return {ColumnDescriptor<NonNullable<Model[Property]>, Model, Model[Property]>} - The added column descriptor.
131
+ */
132
+ export function addColumnFromSchema(descriptor, property, propertySchema, opts) {
133
+ const propertyType = opts?.columnType ?? propertySchema?.type;
134
+ const column = descriptor.addColumn(property);
135
+ // Handle different property types
136
+ switch (propertyType) {
137
+ case 'number':
138
+ if (opts?.currency) {
139
+ column.asCurrency(fromSchemaCurrencyOptsToCurrency(opts.currency));
140
+ }
141
+ else {
142
+ column.asNumber();
143
+ }
144
+ break;
145
+ case 'boolean':
146
+ column.asBoolean(undefined, undefined, true);
147
+ break;
148
+ case 'date':
149
+ column.asDate(opts?.dateFormat ?? 'dd.MM.YYYY');
150
+ break;
151
+ case 'enum':
152
+ // eslint-disable-next-line no-case-declarations
153
+ const enumModel = opts?.enumSchema ? enumModelFromSchema(opts.enumSchema) : opts?.enumModel;
154
+ if (enumModel) {
155
+ column.asEnumUnsafe(enumModel);
156
+ }
157
+ break;
158
+ case 'date-time':
159
+ column.asDate(opts?.dateTimeFormat ?? 'dd.MM.YYYY HH:mm');
160
+ break;
161
+ case 'currency':
162
+ column.asCurrency(opts?.currency ? fromSchemaCurrencyOptsToCurrency(opts?.currency) : undefined);
163
+ break;
164
+ case 'object':
165
+ column.withGetter(defaultGetter);
166
+ break;
167
+ }
168
+ // Add optional filter, sort and getters
169
+ if (opts?.getter)
170
+ column.withGetter(opts?.getter);
171
+ return column;
172
+ }
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy1mcm9tLXNjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvc2NoZW1hL2NvbHVtbnMtZnJvbS1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUE2QixnQ0FBZ0MsRUFBRSxrQ0FBa0MsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBdUIvSSxNQUFNLGFBQWEsR0FBc0IsS0FBSyxDQUFDLEVBQUU7SUFDN0MsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM1QixNQUFNLFFBQVEsR0FBRyxLQUFlLENBQUM7UUFDakMsT0FBTyxDQUNILFFBQVEsQ0FBQyxPQUF1QixDQUFDO1lBQ2pDLFFBQVEsQ0FBQyxNQUFzQixDQUFDO1lBQ2hDLFFBQVEsQ0FBQyxPQUF1QixDQUFDO1lBQ2pDLFFBQVEsQ0FBQyxNQUFzQixDQUFDO1lBQ2hDLFFBQVEsQ0FBQyxPQUF1QixDQUFDO1lBQ2pDLFFBQVEsQ0FBQyxJQUFvQixDQUFDO1lBQzlCLFFBQVEsQ0FBQyxNQUFzQixDQUFDO1lBQ2hDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBaUIsQ0FBQyxDQUNyRCxDQUFDO0lBQ04sQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxvQkFBb0I7SUFDN0IsWUFDcUIsVUFBZ0csRUFDaEcsTUFBNkIsRUFDdEMsSUFBMEM7UUFGakMsZUFBVSxHQUFWLFVBQVUsQ0FBc0Y7UUFDaEcsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7UUFDdEMsU0FBSSxHQUFKLElBQUksQ0FBc0M7SUFDbkQsQ0FBQztJQUVJLGdCQUFnQixDQUFDLFFBQXFC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TTtZQUNQLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsSUFBSSxZQUFZLENBQUMsQ0FBQztZQUNoRCxNQUFNO1FBQ1YsS0FBSyxNQUFNO1lBQ1AsZ0RBQWdEO1lBQ2hELE1BQU0sU0FBUyxHQUFHLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQztZQUM1RixJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNaLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELE1BQU07UUFDVixLQUFLLFdBQVc7WUFDWixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxjQUFjLElBQUksa0JBQWtCLENBQUMsQ0FBQztZQUMxRCxNQUFNO1FBQ1YsS0FBSyxVQUFVO1lBQ1gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pHLE1BQU07UUFDVixLQUFLLFFBQVE7WUFDVCxNQUFNLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2pDLE1BQU07SUFDZCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLElBQUksSUFBSSxFQUFFLE1BQU07UUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVsRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTY2hlbWFFbnVtLCBTY2hlbWFNb2RlbCwgU2NoZW1hUHJvcGVydHl9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMtZGF0YS1hcGknO1xuaW1wb3J0IHtHZXR0ZXJGbn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7RW51bURlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuaW1wb3J0IHtDb2x1bW5EZXNjcmlwdG9yLCBUYWJsZURlc2NyaXB0b3JJbnN0fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxlL2FwaSc7XG5pbXBvcnQge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxldmlldy9hcGknO1xuXG5pbXBvcnQge2VudW1Nb2RlbEZyb21TY2hlbWF9IGZyb20gJy4vZW51bS1mcm9tLXNjaGVtYSc7XG5pbXBvcnQge0Zyb21TY2hlbWFDdXJyZW5jeU9wdHNUeXBlLCBmcm9tU2NoZW1hQ3VycmVuY3lPcHRzVG9DdXJyZW5jeSwgZnJvbVNjaGVtYUZpbHRlck5vbkFycmF5UHJvcGVydGllc30gZnJvbSAnLi9pbnRlcm5hbC9jb21tb24tZnJvbS1zY2hlbWEnO1xuXG50eXBlIENvbHVtblR5cGUgPSAnbnVtYmVyJyB8ICdjdXJyZW5jeScgfCAnYm9vbGVhbicgfCAnc3RyaW5nJyB8ICd0ZXh0JyB8ICd0ZXh0YXJlYScgfCAnZGF0ZScgfCAnZGF0ZS10aW1lJyB8ICdlbnVtJyB8ICdvYmplY3QnO1xuXG50eXBlIENvbHVtbnNGcm9tU2NoZW1hT3B0c1R5cGU8TW9kZWwgPSBhbnk+ID0ge1xuICAgIGNvbHVtblR5cGVzPzogUGFydGlhbDxSZWNvcmQ8a2V5b2YgTW9kZWwsIENvbHVtblR5cGU+PjtcbiAgICBlbnVtTW9kZWxzPzogUGFydGlhbDxSZWNvcmQ8a2V5b2YgTW9kZWwsIEVudW1EZXNjcmlwdG9yPGFueT4+PjtcbiAgICBlbnVtU2NoZW1hcz86IFBhcnRpYWw8UmVjb3JkPGtleW9mIE1vZGVsLCBTY2hlbWFFbnVtPGFueT4+PjtcbiAgICBnZXR0ZXJzPzoge1tLIGluIGtleW9mIE1vZGVsXT86IEdldHRlckZuPE1vZGVsW0tdLCBNb2RlbD59O1xuICAgIGRhdGVGb3JtYXQ/OiBzdHJpbmc7XG4gICAgZGF0ZVRpbWVGb3JtYXQ/OiBzdHJpbmc7XG59O1xuXG50eXBlIENvbHVtbkZyb21TY2hlbWFPcHRzVHlwZTxDb2x1bW4gPSBhbnksIE1vZGVsID0gYW55LCBFbnVtID0gYW55LCBDdXJyZW5jeU1vZGVsID0gTW9kZWw+ID0ge1xuICAgIGNvbHVtblR5cGU/OiBDb2x1bW5UeXBlO1xuICAgIGdldHRlcj86IEdldHRlckZuPENvbHVtbiwgTW9kZWw+O1xuICAgIGVudW1Nb2RlbD86IEVudW1EZXNjcmlwdG9yPEVudW0+O1xuICAgIGVudW1TY2hlbWE/OiBTY2hlbWFFbnVtPEVudW0+O1xuICAgIGN1cnJlbmN5PzogRnJvbVNjaGVtYUN1cnJlbmN5T3B0c1R5cGU8Q3VycmVuY3lNb2RlbD47XG4gICAgZGF0ZUZvcm1hdD86IHN0cmluZztcbiAgICBkYXRlVGltZUZvcm1hdD86IHN0cmluZztcbn07XG5cbmNvbnN0IGRlZmF1bHRHZXR0ZXI6IEdldHRlckZuPHVua25vd24+ID0gdmFsdWUgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlT2JqID0gdmFsdWUgYXMgb2JqZWN0O1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdmFsdWVPYmpbJ3RpdGxlJyBhcyBrZXlvZiBvYmplY3RdID8/XG4gICAgICAgICAgICB2YWx1ZU9ialsnbmFtZScgYXMga2V5b2Ygb2JqZWN0XSA/P1xuICAgICAgICAgICAgdmFsdWVPYmpbJ25heml2JyBhcyBrZXlvZiBvYmplY3RdID8/XG4gICAgICAgICAgICB2YWx1ZU9ialsnY29kZScgYXMga2V5b2Ygb2JqZWN0XSA/P1xuICAgICAgICAgICAgdmFsdWVPYmpbJ3NpZnJhJyBhcyBrZXlvZiBvYmplY3RdID8/XG4gICAgICAgICAgICB2YWx1ZU9ialsnaWQnIGFzIGtleW9mIG9iamVjdF0gPz9cbiAgICAgICAgICAgIHZhbHVlT2JqWyd1dWlkJyBhcyBrZXlvZiBvYmplY3RdID8/XG4gICAgICAgICAgICB2YWx1ZU9ialtPYmplY3Qua2V5cyh2YWx1ZU9iailbMF0gYXMga2V5b2Ygb2JqZWN0XVxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG59O1xuXG4vKipcbiAqIDxlbT5FeHBlcmltZW50YWw6PC9lbT4gQnVpbGRlciBmb3IgYWRkaW5nIGNvbHVtbnMgdG8gdGFibGUuXG4gKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgY2xhc3MgU2NoZW1hQ29sdW1uc0J1aWxkZXI8TW9kZWwsIFNjaE1vZGVsID0gTW9kZWw+IHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgYW55LCBhbnksIGFueT4gfCBUYWJsZURlc2NyaXB0b3JJbnN0PE1vZGVsLCBhbnksIGFueT4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2NoZW1hOiBTY2hlbWFNb2RlbDxTY2hNb2RlbD4sXG4gICAgICAgIHByaXZhdGUgb3B0cz86IENvbHVtbnNGcm9tU2NoZW1hT3B0c1R5cGU8U2NoTW9kZWw+XG4gICAgKSB7fVxuXG4gICAgcHJpdmF0ZSBtZXJnZUNvbHVtbnNPcHRzKHByb3BlcnR5OiBrZXlvZiBNb2RlbCwgb3B0cz86IENvbHVtbnNGcm9tU2NoZW1hT3B0c1R5cGUpIHtcbiAgICAgICAgcmV0dXJuIDxDb2x1bW5Gcm9tU2NoZW1hT3B0c1R5cGU+e1xuICAgICAgICAgICAgLi4udGhpcy5vcHRzLFxuICAgICAgICAgICAgY29sdW1uVHlwZTogdGhpcy5vcHRzPy5jb2x1bW5UeXBlcz8uW3Byb3BlcnR5XSxcbiAgICAgICAgICAgIGdldHRlcjogb3B0cz8uZ2V0dGVycz8uW3Byb3BlcnR5XSA/PyB0aGlzLm9wdHM/LmdldHRlcnM/Lltwcm9wZXJ0eV0sXG4gICAgICAgICAgICBlbnVtTW9kZWw6IG9wdHM/LmVudW1Nb2RlbHM/Lltwcm9wZXJ0eV0gPz8gdGhpcy5vcHRzPy5lbnVtTW9kZWxzPy5bcHJvcGVydHldLFxuICAgICAgICAgICAgZW51bVNjaGVtYTogb3B0cz8uZW51bVNjaGVtYXM/Lltwcm9wZXJ0eV0gPz8gdGhpcy5vcHRzPy5lbnVtU2NoZW1hcz8uW3Byb3BlcnR5XSxcbiAgICAgICAgICAgIC4uLm9wdHNcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1lcmdlQ29sdW1uT3B0cyhwcm9wZXJ0eToga2V5b2YgTW9kZWwsIG9wdHM/OiBDb2x1bW5Gcm9tU2NoZW1hT3B0c1R5cGUpIHtcbiAgICAgICAgcmV0dXJuIDxDb2x1bW5Gcm9tU2NoZW1hT3B0c1R5cGU+e1xuICAgICAgICAgICAgLi4udGhpcy5vcHRzLFxuICAgICAgICAgICAgY29sdW1uVHlwZTogdGhpcy5vcHRzPy5jb2x1bW5UeXBlcz8uW3Byb3BlcnR5XSxcbiAgICAgICAgICAgIGdldHRlcjogdGhpcy5vcHRzPy5nZXR0ZXJzPy5bcHJvcGVydHldLFxuICAgICAgICAgICAgZW51bU1vZGVsOiB0aGlzLm9wdHM/LmVudW1Nb2RlbHM/Lltwcm9wZXJ0eV0sXG4gICAgICAgICAgICBlbnVtU2NoZW1hOiB0aGlzLm9wdHM/LmVudW1TY2hlbWFzPy5bcHJvcGVydHldLFxuICAgICAgICAgICAgLi4ub3B0c1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIDxlbT5FeHBlcmltZW50YWw6PC9lbT4gQWRkcyBhIHNpbmdsZSBjb2x1bW4gdmlhIHthZGRDb2x1bW5Gcm9tU2NoZW1hfS5cbiAgICAgKlxuICAgICAqIEBleHBlcmltZW50YWxcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UHJvcGVydHl9IHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IHRvIGFkZCB0aGUgY29sdW1uIGZvci5cbiAgICAgKiBAcGFyYW0ge0NvbHVtbkZyb21TY2hlbWFPcHRzVHlwZTxTY2hNb2RlbFtQcm9wZXJ0eV0sIFNjaE1vZGVsLCBhbnksIE1vZGVsPn0gb3B0cyAtIEFkZGl0aW9uYWwgb3B0aW9ucy5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0NvbHVtbkRlc2NyaXB0b3I8Tm9uTnVsbGFibGU8TW9kZWxbUHJvcGVydHldPiwgTW9kZWwsIE1vZGVsW1Byb3BlcnR5XT59IFRoZSBhZGRlZCBjb2x1bW4gZGVzY3JpcHRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkPFByb3BlcnR5IGV4dGVuZHMgRXh0cmFjdDxrZXlvZiBNb2RlbCwga2V5b2YgU2NoTW9kZWw+PihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgICAgICBvcHRzPzogQ29sdW1uRnJvbVNjaGVtYU9wdHNUeXBlPFNjaE1vZGVsW1Byb3BlcnR5XSwgU2NoTW9kZWwsIGFueSwgTW9kZWw+XG4gICAgKTogQ29sdW1uRGVzY3JpcHRvcjxOb25OdWxsYWJsZTxNb2RlbFtQcm9wZXJ0eV0+LCBNb2RlbCwgTW9kZWxbUHJvcGVydHldPiB7XG4gICAgICAgIHJldHVybiBhZGRDb2x1bW5Gcm9tU2NoZW1hKHRoaXMuZGVzY3JpcHRvciwgcHJvcGVydHksIHRoaXMuc2NoZW1hLnByb3BlcnRpZXNbcHJvcGVydHldLCB0aGlzLm1lcmdlQ29sdW1uT3B0cyhwcm9wZXJ0eSwgb3B0cykpIGFzIHVua25vd24gYXMgQ29sdW1uRGVzY3JpcHRvcjxcbiAgICAgICAgICAgIE5vbk51bGxhYmxlPE1vZGVsW1Byb3BlcnR5XT4sXG4gICAgICAgICAgICBNb2RlbCxcbiAgICAgICAgICAgIE1vZGVsW1Byb3BlcnR5XVxuICAgICAgICA+O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIDxlbT5FeHBlcmltZW50YWw6PC9lbT4gQWRkcyBhbGwgY29sdW1ucyBmcm9tIHRoZSBub24tYXJyYXkgc2NoZW1hIHByb3BlcnRpZXMgdmlhIHthZGRDb2x1bW5Gcm9tU2NoZW1hfS5cbiAgICAgKlxuICAgICAqIEBleHBlcmltZW50YWxcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Q29sdW1uc0Zyb21TY2hlbWFPcHRzVHlwZTxTY2hNb2RlbD59IG9wdHMgLSBBZGRpdGlvbmFsIG9wdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHt0aGlzfSAtIFRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQWRkQWxsKG9wdHM/OiBDb2x1bW5zRnJvbVNjaGVtYU9wdHNUeXBlPFNjaE1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLmFkZENvbHVtbnModW5kZWZpbmVkLCBvcHRzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogPGVtPkV4cGVyaW1lbnRhbDo8L2VtPiBBZGRzIGNvbHVtbnMgZm9yIHByb3BlcnRpZXMgdmlhIHthZGRDb2x1bW5Gcm9tU2NoZW1hfS5cbiAgICAgKlxuICAgICAqIEBleHBlcmltZW50YWxcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Q29sdW1uc0Zyb21TY2hlbWFPcHRzVHlwZTxTY2hNb2RlbD59IG9wdHMgLSBBZGRpdGlvbmFsIG9wdGlvbnMuXG4gICAgICogQHBhcmFtIHsuLi5Qcm9wZXJ0eVtdfSBwcm9wZXJ0aWVzIC0gUHJvcGVydGllcyB0byBhZGQgY29sdW1ucyBmb3IuIElmIG5vbiBwcm92aWRlZCwgYWxsIG5vbi1hcnJheSBwcm9wZXJ0aWVzIGZyb20gc2NoZW1hIHdpbGwgYmUgYWRkZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHt0aGlzfSAtIFRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQWRkPFByb3BlcnR5IGV4dGVuZHMgRXh0cmFjdDxrZXlvZiBNb2RlbCwga2V5b2YgU2NoTW9kZWw+PihvcHRzOiBDb2x1bW5zRnJvbVNjaGVtYU9wdHNUeXBlPFNjaE1vZGVsPiwgLi4ucHJvcGVydGllczogUHJvcGVydHlbXSk6IHRoaXM7XG4gICAgLyoqXG4gICAgICogPGVtPkV4cGVyaW1lbnRhbDo8L2VtPiBBZGRzIGNvbHVtbnMgZm9yIHByb3BlcnRpZXMgdmlhIHthZGRDb2x1bW5Gcm9tU2NoZW1hfS5cbiAgICAgKlxuICAgICAqIEBleHBlcmltZW50YWxcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Li4uUHJvcGVydHlbXX0gcHJvcGVydGllcyAtIFByb3BlcnRpZXMgdG8gYWRkIGNvbHVtbnMgZm9yLiBJZiBub24gcHJvdmlkZWQsIGFsbCBub24tYXJyYXkgcHJvcGVydGllcyBmcm9tIHNjaGVtYSB3aWxsIGJlIGFkZGVkLlxuICAgICAqXG4gICAgICogQHJldHVybiB7dGhpc30gLSBUaGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aEFkZDxQcm9wZXJ0eSBleHRlbmRzIEV4dHJhY3Q8a2V5b2YgTW9kZWwsIGtleW9mIFNjaE1vZGVsPj4oLi4ucHJvcGVydGllczogUHJvcGVydHlbXSk6IHRoaXM7XG4gICAgcHVibGljIHdpdGhBZGQ8UHJvcGVydHkgZXh0ZW5kcyBFeHRyYWN0PGtleW9mIE1vZGVsLCBrZXlvZiBTY2hNb2RlbD4+KHByb3BPck9wdHM6IENvbHVtbnNGcm9tU2NoZW1hT3B0c1R5cGU8U2NoTW9kZWw+IHwgUHJvcGVydHksIC4uLnByb3BlcnRpZXM6IFByb3BlcnR5W10pOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwcm9wT3JPcHRzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgdGhpcy5hZGRDb2x1bW5zKHByb3BlcnRpZXMubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogcHJvcGVydGllcywgcHJvcE9yT3B0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFkZENvbHVtbnMoW3Byb3BPck9wdHMsIC4uLnByb3BlcnRpZXNdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiA8ZW0+RXhwZXJpbWVudGFsOjwvZW0+IEFkZHMgYSBzaW5nbGUgY29sdW1uIHZpYSB7YWRkQ29sdW1uRnJvbVNjaGVtYX0gd2hlcmUgcHJvcGVydHkgc2NoZW1hIGlzIG1hbnVhbGx5IHByb3ZpZGVkLlxuICAgICAqXG4gICAgICogQGV4cGVyaW1lbnRhbFxuICAgICAqXG4gICAgICogQHBhcmFtIHtQcm9wZXJ0eX0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkgdG8gYWRkIHRoZSBjb2x1bW4gZm9yLlxuICAgICAqIEBwYXJhbSB7U2NoZW1hUHJvcGVydHl9IHNjaGVtYVByb3BlcnR5IC0gTWFudWFsbHkgcHJvdmlkZWQgc2NoZW1hIHByb3BlcnR5LlxuICAgICAqIEBwYXJhbSB7Q29sdW1uRnJvbVNjaGVtYU9wdHNUeXBlfSBvcHRzIC0gQWRkaXRpb25hbCBvcHRpb25zLlxuICAgICAqXG4gICAgICogQHJldHVybiB7Q29sdW1uRGVzY3JpcHRvcjxOb25OdWxsYWJsZTxNb2RlbFtQcm9wZXJ0eV0+LCBNb2RlbCwgTW9kZWxbUHJvcGVydHldPn0gVGhlIGFkZGVkIGNvbHVtbiBkZXNjcmlwdG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRGcm9tU2NoZW1hPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgTW9kZWw+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIHNjaGVtYVByb3BlcnR5OiBTY2hlbWFQcm9wZXJ0eSxcbiAgICAgICAgb3B0cz86IENvbHVtbkZyb21TY2hlbWFPcHRzVHlwZTxNb2RlbFtQcm9wZXJ0eV0sIE1vZGVsPlxuICAgICk6IENvbHVtbkRlc2NyaXB0b3I8Tm9uTnVsbGFibGU8TW9kZWxbUHJvcGVydHldPiwgTW9kZWwsIE1vZGVsW1Byb3BlcnR5XT4ge1xuICAgICAgICByZXR1cm4gYWRkQ29sdW1uRnJvbVNjaGVtYSh0aGlzLmRlc2NyaXB0b3IsIHByb3BlcnR5LCBzY2hlbWFQcm9wZXJ0eSwgdGhpcy5tZXJnZUNvbHVtbk9wdHMocHJvcGVydHksIG9wdHMpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZENvbHVtbnM8UHJvcGVydHkgZXh0ZW5kcyBFeHRyYWN0PGtleW9mIE1vZGVsLCBrZXlvZiBTY2hNb2RlbD4+KHByb3BlcnRpZXM/OiBQcm9wZXJ0eVtdLCBvcHRzPzogQ29sdW1uc0Zyb21TY2hlbWFPcHRzVHlwZTxTY2hNb2RlbD4pIHtcbiAgICAgICAgY29uc3QgYWRkUHJvcGVydGllcyA9IHByb3BlcnRpZXMgPz8gZnJvbVNjaGVtYUZpbHRlck5vbkFycmF5UHJvcGVydGllczxTY2hNb2RlbD4odGhpcy5zY2hlbWEucHJvcGVydGllcyk7XG5cbiAgICAgICAgaWYgKGFkZFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGFkZFByb3BlcnRpZXMuZm9yRWFjaChwcm9wZXJ0eSA9PiB7XG4gICAgICAgICAgICAgICAgYWRkQ29sdW1uRnJvbVNjaGVtYShcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eSBhcyB1bmtub3duIGFzIGtleW9mIE1vZGVsLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BlcnR5XSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXJnZUNvbHVtbnNPcHRzKHByb3BlcnR5IGFzIHVua25vd24gYXMga2V5b2YgTW9kZWwsIG9wdHMpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIDxlbT5FeHBlcmltZW50YWw6PC9lbT4gQ3JlYXRlcyBidWlsZGVyIGZvciBhZGRpbmcgY29sdW1ucyB0byBkZXNjcmlwdG9yIGJhc2VkIG9uIHByb3ZpZGVkIG1vZGVsIHNjaGVtYS5cbiAqXG4gKiBAZXhwZXJpbWVudGFsXG4gKlxuICogQHBhcmFtIHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgYW55LCBhbnksIGFueT4gfCBUYWJsZURlc2NyaXB0b3JJbnN0PE1vZGVsLCBhbnksIGFueT59IGRlc2NyaXB0b3IgLSBEZXNjcmlwdG9yIHRvIGFkZCBjb2x1bW5zIHRvLlxuICogQHBhcmFtIHtTY2hlbWFNb2RlbDxTY2hNb2RlbD59IHNjaGVtYSAtIFRoZSBzY2hlbWEgd2l0aCBtZXRhZGF0YSBhYm91dCBwcm9wZXJ0aWVzIGZvciBmaWVsZHMuXG4gKiBAcGFyYW0ge0NvbHVtbnNGcm9tU2NoZW1hT3B0c1R5cGU8U2NoTW9kZWw+fSBbb3B0c10gLSBBZGRpdGlvbmFsIG9wdGlvbnMuXG4gKlxuICogQHJldHVybiB7U2NoZW1hQ29sdW1uc0J1aWxkZXI8TW9kZWwsIFNjaE1vZGVsPn0gLSBUaGUgY29sdW1uIHNjaGVtYSBidWlsZGVyIGluc3RhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sdW1uc0Zyb21TY2hlbWE8TW9kZWwsIFNjaE1vZGVsID0gTW9kZWw+KFxuICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBhbnksIGFueSwgYW55PiB8IFRhYmxlRGVzY3JpcHRvckluc3Q8TW9kZWwsIGFueSwgYW55PixcbiAgICBzY2hlbWE6IFNjaGVtYU1vZGVsPFNjaE1vZGVsPixcbiAgICBvcHRzPzogQ29sdW1uc0Zyb21TY2hlbWFPcHRzVHlwZTxTY2hNb2RlbD5cbik6IFNjaGVtYUNvbHVtbnNCdWlsZGVyPE1vZGVsLCBTY2hNb2RlbD4ge1xuICAgIHJldHVybiBuZXcgU2NoZW1hQ29sdW1uc0J1aWxkZXI8TW9kZWwsIFNjaE1vZGVsPihkZXNjcmlwdG9yLCBzY2hlbWEsIG9wdHMpO1xufVxuXG4vKipcbiAqIDxlbT5FeHBlcmltZW50YWw6PC9lbT4gQWRkcyBhIGNvbHVtbiB0byB0YWJsZSBkZXNjcmlwdG9yIGJhc2VkIG9uIHRoZSBnaXZlbiBzY2hlbWEgcHJvcGVydHkgYW5kIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgYW55LCBhbnksIGFueT4gfCBUYWJsZURlc2NyaXB0b3JJbnN0PE1vZGVsLCBhbnksIGFueT59IGRlc2NyaXB0b3IgLSBUaGUgdGFibGUgdmlldyBkZXNjcmlwdG9yIG9yIHRhYmxlIGRlc2NyaXB0b3IgdG8gYWRkIHRoZSBjb2x1bW4gdG8uXG4gKiBAcGFyYW0ge1Byb3BlcnR5fSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIG1vZGVsIHRvIGNyZWF0ZSB0aGUgY29sdW1uIGZvci5cbiAqIEBwYXJhbSB7U2NoZW1hUHJvcGVydHl9IHByb3BlcnR5U2NoZW1hIC0gVGhlIHNjaGVtYSBwcm9wZXJ0eSBmb3IgdGhlIHByb3BlcnR5LlxuICogQHBhcmFtIHtDb2x1bW5Gcm9tU2NoZW1hT3B0c1R5cGU8TW9kZWxbUHJvcGVydHldLCBNb2RlbCwgYW55LCBNb2RlbD59IFtvcHRzXSAtIFRoZSBvcHRpb25zIGZvciB0aGUgY29sdW1uLlxuICpcbiAqIEByZXR1cm4ge0NvbHVtbkRlc2NyaXB0b3I8Tm9uTnVsbGFibGU8TW9kZWxbUHJvcGVydHldPiwgTW9kZWwsIE1vZGVsW1Byb3BlcnR5XT59IC0gVGhlIGFkZGVkIGNvbHVtbiBkZXNjcmlwdG9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkQ29sdW1uRnJvbVNjaGVtYTxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIE1vZGVsLCBNb2RlbD4oXG4gICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIGFueSwgYW55LCBhbnk+IHwgVGFibGVEZXNjcmlwdG9ySW5zdDxNb2RlbCwgYW55LCBhbnk+LFxuICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICBwcm9wZXJ0eVNjaGVtYTogU2NoZW1hUHJvcGVydHksXG4gICAgb3B0cz86IENvbHVtbkZyb21TY2hlbWFPcHRzVHlwZTxNb2RlbFtQcm9wZXJ0eV0sIE1vZGVsLCBhbnksIE1vZGVsPlxuKTogQ29sdW1uRGVzY3JpcHRvcjxOb25OdWxsYWJsZTxNb2RlbFtQcm9wZXJ0eV0+LCBNb2RlbCwgTW9kZWxbUHJvcGVydHldPiB7XG4gICAgY29uc3QgcHJvcGVydHlUeXBlID0gb3B0cz8uY29sdW1uVHlwZSA/PyBwcm9wZXJ0eVNjaGVtYT8udHlwZTtcblxuICAgIGNvbnN0IGNvbHVtbiA9IGRlc2NyaXB0b3IuYWRkQ29sdW1uKHByb3BlcnR5KTtcblxuICAgIC8vIEhhbmRsZSBkaWZmZXJlbnQgcHJvcGVydHkgdHlwZXNcbiAgICBzd2l0Y2ggKHByb3BlcnR5VHlwZSkge1xuICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgaWYgKG9wdHM/LmN1cnJlbmN5KSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLmFzQ3VycmVuY3koZnJvbVNjaGVtYUN1cnJlbmN5T3B0c1RvQ3VycmVuY3kob3B0cy5jdXJyZW5jeSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4uYXNOdW1iZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgIGNvbHVtbi5hc0Jvb2xlYW4odW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgY29sdW1uLmFzRGF0ZShvcHRzPy5kYXRlRm9ybWF0ID8/ICdkZC5NTS5ZWVlZJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZW51bSc6XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY2FzZS1kZWNsYXJhdGlvbnNcbiAgICAgICAgICAgIGNvbnN0IGVudW1Nb2RlbCA9IG9wdHM/LmVudW1TY2hlbWEgPyBlbnVtTW9kZWxGcm9tU2NoZW1hKG9wdHMuZW51bVNjaGVtYSkgOiBvcHRzPy5lbnVtTW9kZWw7XG4gICAgICAgICAgICBpZiAoZW51bU1vZGVsKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLmFzRW51bVVuc2FmZShlbnVtTW9kZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICAgICAgICBjb2x1bW4uYXNEYXRlKG9wdHM/LmRhdGVUaW1lRm9ybWF0ID8/ICdkZC5NTS5ZWVlZIEhIOm1tJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY3VycmVuY3knOlxuICAgICAgICAgICAgY29sdW1uLmFzQ3VycmVuY3kob3B0cz8uY3VycmVuY3kgPyBmcm9tU2NoZW1hQ3VycmVuY3lPcHRzVG9DdXJyZW5jeShvcHRzPy5jdXJyZW5jeSkgOiB1bmRlZmluZWQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBjb2x1bW4ud2l0aEdldHRlcihkZWZhdWx0R2V0dGVyKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIEFkZCBvcHRpb25hbCBmaWx0ZXIsIHNvcnQgYW5kIGdldHRlcnNcbiAgICBpZiAob3B0cz8uZ2V0dGVyKSBjb2x1bW4ud2l0aEdldHRlcihvcHRzPy5nZXR0ZXIpO1xuXG4gICAgcmV0dXJuIGNvbHVtbjtcbn1cbiJdfQ==
@@ -0,0 +1,23 @@
1
+ import { enumModelGeneric } from '@mediusinc/mng-commons/model';
2
+ /**
3
+ * <em>Experimental:</em> Emulates an enum model object from enum schema.
4
+ *
5
+ * @experimental
6
+ *
7
+ * @param {SchemaEnum<Enum>} enumSchema - The schema of the enum.
8
+ *
9
+ * @returns {EnumDescriptor<Enum>} - The generated enum model descriptor.
10
+ */
11
+ export function enumModelFromSchema(enumSchema) {
12
+ const enumObj = {};
13
+ enumSchema.values
14
+ .map((v, idx) => ({ value: v, constant: enumSchema.constants[idx] }))
15
+ .forEach(({ value, constant }) => {
16
+ const valueAsStrOrInt = value;
17
+ enumObj[constant] = valueAsStrOrInt;
18
+ if (typeof valueAsStrOrInt === 'number' && enumObj[valueAsStrOrInt] == null)
19
+ enumObj[valueAsStrOrInt] = constant;
20
+ });
21
+ return enumModelGeneric(enumObj, enumSchema.name.replace(/\d+$/, ''));
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1mcm9tLXNjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvc2NoZW1hL2VudW0tZnJvbS1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFpQixnQkFBZ0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRTlFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFPLFVBQTRCO0lBQ2xFLE1BQU0sT0FBTyxHQUE2QyxFQUFFLENBQUM7SUFDN0QsVUFBVSxDQUFDLE1BQU07U0FDWixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDLENBQUM7U0FDbEUsT0FBTyxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFDLEVBQUUsRUFBRTtRQUMzQixNQUFNLGVBQWUsR0FBRyxLQUFtQyxDQUFDO1FBQzVELE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxlQUFlLENBQUM7UUFDcEMsSUFBSSxPQUFPLGVBQWUsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUk7WUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQ3JILENBQUMsQ0FBQyxDQUFDO0lBQ1AsT0FBTyxnQkFBZ0IsQ0FBTyxPQUFPLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2NoZW1hRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy1kYXRhLWFwaSc7XG5pbXBvcnQge0VudW1EZXNjcmlwdG9yLCBlbnVtTW9kZWxHZW5lcmljfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuLyoqXG4gKiA8ZW0+RXhwZXJpbWVudGFsOjwvZW0+IEVtdWxhdGVzIGFuIGVudW0gbW9kZWwgb2JqZWN0IGZyb20gZW51bSBzY2hlbWEuXG4gKlxuICogQGV4cGVyaW1lbnRhbFxuICpcbiAqIEBwYXJhbSB7U2NoZW1hRW51bTxFbnVtPn0gZW51bVNjaGVtYSAtIFRoZSBzY2hlbWEgb2YgdGhlIGVudW0uXG4gKlxuICogQHJldHVybnMge0VudW1EZXNjcmlwdG9yPEVudW0+fSAtIFRoZSBnZW5lcmF0ZWQgZW51bSBtb2RlbCBkZXNjcmlwdG9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW51bU1vZGVsRnJvbVNjaGVtYTxFbnVtPihlbnVtU2NoZW1hOiBTY2hlbWFFbnVtPEVudW0+KTogRW51bURlc2NyaXB0b3I8RW51bT4ge1xuICAgIGNvbnN0IGVudW1PYmo6IFJlY29yZDxzdHJpbmcgfCBudW1iZXIsIHN0cmluZyB8IG51bWJlcj4gPSB7fTtcbiAgICBlbnVtU2NoZW1hLnZhbHVlc1xuICAgICAgICAubWFwKCh2LCBpZHgpID0+ICh7dmFsdWU6IHYsIGNvbnN0YW50OiBlbnVtU2NoZW1hLmNvbnN0YW50c1tpZHhdfSkpXG4gICAgICAgIC5mb3JFYWNoKCh7dmFsdWUsIGNvbnN0YW50fSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVBc1N0ck9ySW50ID0gdmFsdWUgYXMgdW5rbm93biBhcyBzdHJpbmcgfCBudW1iZXI7XG4gICAgICAgICAgICBlbnVtT2JqW2NvbnN0YW50XSA9IHZhbHVlQXNTdHJPckludDtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWVBc1N0ck9ySW50ID09PSAnbnVtYmVyJyAmJiBlbnVtT2JqW3ZhbHVlQXNTdHJPckludF0gPT0gbnVsbCkgZW51bU9ialt2YWx1ZUFzU3RyT3JJbnRdID0gY29uc3RhbnQ7XG4gICAgICAgIH0pO1xuICAgIHJldHVybiBlbnVtTW9kZWxHZW5lcmljPEVudW0+KGVudW1PYmosIGVudW1TY2hlbWEubmFtZS5yZXBsYWNlKC9cXGQrJC8sICcnKSk7XG59XG4iXX0=