@grnsft/if 0.1.8 → 0.1.9

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 (104) hide show
  1. package/build/config/config.d.ts +0 -2
  2. package/build/config/config.js +6 -3
  3. package/build/config/index.d.ts +1 -0
  4. package/build/config/index.js +4 -2
  5. package/build/config/params.d.ts +2 -0
  6. package/build/config/params.js +146 -0
  7. package/build/config/strings.d.ts +5 -0
  8. package/build/config/strings.js +6 -1
  9. package/build/index.js +48 -18
  10. package/build/lib/aggregator.d.ts +7 -0
  11. package/build/lib/aggregator.js +46 -0
  12. package/build/lib/models-universe.d.ts +5 -1
  13. package/build/lib/models-universe.js +37 -5
  14. package/build/lib/supercomputer.d.ts +14 -12
  15. package/build/lib/supercomputer.js +55 -87
  16. package/build/models/time-sync.d.ts +8 -5
  17. package/build/models/time-sync.js +35 -12
  18. package/build/types/aggregator.d.ts +3 -0
  19. package/build/types/aggregator.js +5 -0
  20. package/build/types/impl.d.ts +65 -18
  21. package/build/types/impl.js +17 -3
  22. package/build/types/model-interface.d.ts +1 -2
  23. package/build/types/model-interface.js +1 -1
  24. package/build/types/models-universe.d.ts +2 -5
  25. package/build/types/models-universe.js +1 -1
  26. package/build/types/parameters.d.ts +16 -0
  27. package/build/types/parameters.js +5 -0
  28. package/build/types/process-args.d.ts +1 -0
  29. package/build/types/process-args.js +1 -1
  30. package/build/types/time-sync.d.ts +1 -0
  31. package/build/types/time-sync.js +1 -1
  32. package/build/util/args.d.ts +1 -0
  33. package/build/util/args.js +27 -3
  34. package/build/util/param-selectors.d.ts +5 -0
  35. package/build/util/param-selectors.js +14 -0
  36. package/build/util/validations.d.ts +11 -5
  37. package/build/util/validations.js +17 -25
  38. package/build/util/yaml.js +27 -4
  39. package/examples/impls/test/aggregation-test.yml +19 -19
  40. package/examples/impls/test/aggregation-test2.yml +52 -0
  41. package/examples/impls/test/{azure.yml → azure-importer.yml} +8 -10
  42. package/examples/impls/test/boavizta.yml +27 -0
  43. package/examples/impls/test/cim.yml +19 -0
  44. package/examples/impls/test/e-mem.yml +19 -0
  45. package/examples/impls/test/if-demo.yml +0 -2
  46. package/examples/impls/test/large-impl.yml +30031 -30031
  47. package/examples/impls/test/new-params-test.yml +35 -0
  48. package/examples/impls/test/sci.yml +2 -2
  49. package/examples/impls/test/teads-cpu.yml +18 -0
  50. package/examples/impls/test/time-sync-avoid-padding.yml +50 -0
  51. package/examples/impls/test/time-sync.yml +14 -13
  52. package/examples/ompls/aggregation-test2.yml +83 -0
  53. package/examples/ompls/{azure.yml → azure-importer.yml} +40 -40
  54. package/examples/ompls/boavizta.yml +32 -0
  55. package/examples/ompls/cim.yml +29 -0
  56. package/examples/ompls/e-mem.yml +26 -0
  57. package/examples/ompls/sci.yml +5 -5
  58. package/examples/ompls/teads-cpu.yml +24 -0
  59. package/package.json +1 -1
  60. package/src/models/README.md +3 -1
  61. package/build/config/units.yaml +0 -112
  62. package/build/lib/planet-aggregator.d.ts +0 -6
  63. package/build/lib/planet-aggregator.js +0 -35
  64. package/build/types/helpers.d.ts +0 -1
  65. package/build/types/helpers.js +0 -3
  66. package/build/types/planet-aggregator.d.ts +0 -6
  67. package/build/types/planet-aggregator.js +0 -3
  68. package/build/types/units-dealer.d.ts +0 -3
  69. package/build/types/units-dealer.js +0 -3
  70. package/build/types/units.d.ts +0 -11
  71. package/build/types/units.js +0 -37
  72. package/build/util/units-dealer.d.ts +0 -10
  73. package/build/util/units-dealer.js +0 -32
  74. package/coverage/clover.xml +0 -379
  75. package/coverage/coverage-final.json +0 -14
  76. package/coverage/lcov-report/base.css +0 -224
  77. package/coverage/lcov-report/block-navigation.js +0 -87
  78. package/coverage/lcov-report/config/config.ts.html +0 -250
  79. package/coverage/lcov-report/config/index.html +0 -146
  80. package/coverage/lcov-report/config/index.ts.html +0 -91
  81. package/coverage/lcov-report/config/strings.ts.html +0 -208
  82. package/coverage/lcov-report/favicon.png +0 -0
  83. package/coverage/lcov-report/index.html +0 -161
  84. package/coverage/lcov-report/lib/index.html +0 -161
  85. package/coverage/lcov-report/lib/models-universe.ts.html +0 -517
  86. package/coverage/lcov-report/lib/observatory.ts.html +0 -187
  87. package/coverage/lcov-report/lib/planet-aggregator.ts.html +0 -274
  88. package/coverage/lcov-report/lib/supercomputer.ts.html +0 -472
  89. package/coverage/lcov-report/models/index.html +0 -131
  90. package/coverage/lcov-report/models/index.ts.html +0 -88
  91. package/coverage/lcov-report/models/planet-aggregator.ts.html +0 -271
  92. package/coverage/lcov-report/models/time-sync.ts.html +0 -1165
  93. package/coverage/lcov-report/prettify.css +0 -1
  94. package/coverage/lcov-report/prettify.js +0 -2
  95. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  96. package/coverage/lcov-report/sorter.js +0 -196
  97. package/coverage/lcov-report/util/args.ts.html +0 -289
  98. package/coverage/lcov-report/util/errors.ts.html +0 -166
  99. package/coverage/lcov-report/util/index.html +0 -161
  100. package/coverage/lcov-report/util/units-dealer.ts.html +0 -199
  101. package/coverage/lcov-report/util/yaml.ts.html +0 -193
  102. package/coverage/lcov.info +0 -637
  103. package/src/config/units.yaml +0 -112
  104. package/tsconfig.build.tsbuildinfo +0 -1
@@ -1,6 +1,6 @@
1
1
  import { ModelParams } from './model-interface';
2
- import { AggregationResult } from './planet-aggregator';
3
- declare const AGGREGATION_METHODS: string[], AGGREGATION_METRICS: string[];
2
+ import { AggregationMethodsNames, AggregationResult } from './aggregator';
3
+ import { ManifestParameter } from './parameters';
4
4
  type Tag = {
5
5
  kind?: string;
6
6
  complexity?: string;
@@ -8,37 +8,84 @@ type Tag = {
8
8
  };
9
9
  type Model = {
10
10
  name: string;
11
- kind?: string;
12
11
  verbose?: boolean;
13
- path?: string;
12
+ path: string;
14
13
  config?: Config;
14
+ model: string;
15
15
  };
16
16
  export type Config = Record<string, any>;
17
- export type Children = {
18
- [key: string]: {
19
- pipeline: string[];
20
- config: Config;
21
- inputs: ModelParams[];
22
- children: Children;
23
- outputs?: ModelParams[];
24
- 'aggregated-outputs'?: AggregationResult;
25
- };
17
+ /**
18
+ * Appends given `T` type to nested property.
19
+ */
20
+ type StructureManager<T> = {
21
+ [key: string]: T;
22
+ };
23
+ /**
24
+ * Base interface for graph contents.
25
+ */
26
+ interface NodeBase {
27
+ pipeline?: string[];
28
+ config?: Config;
29
+ outputs?: ModelParams[];
30
+ 'aggregated-outputs'?: AggregationResult;
31
+ }
32
+ /**
33
+ * Setup modifiers.
34
+ */
35
+ type WithInputs = {
36
+ inputs: ModelParams[];
37
+ };
38
+ type WithChildren = {
39
+ children: ChildStructure;
26
40
  };
27
- export type AggregationMetrics = (typeof AGGREGATION_METRICS)[number];
28
- export type AggregationMethod = (typeof AGGREGATION_METHODS)[number];
41
+ /**
42
+ * Child node interface.
43
+ */
44
+ type ChildBase = NodeBase;
45
+ /**
46
+ * Setup parent graph node type.
47
+ */
48
+ interface ParentBase extends NodeBase {
49
+ pipeline: string[];
50
+ config: Config;
51
+ }
52
+ /**
53
+ * Node definitions.
54
+ */
55
+ export type ParentNode = ParentBase & (WithInputs | WithChildren);
56
+ export type ChildNode = ChildBase & (WithInputs | WithChildren);
57
+ /**
58
+ * Structure definitions.
59
+ */
60
+ export type ParentStructure = StructureManager<ParentNode>;
61
+ export type ChildStructure = StructureManager<ChildNode>;
62
+ /**
63
+ * Type guard for inputs.
64
+ */
65
+ export declare const hasInputs: <T>(object: any) => object is T & WithInputs;
66
+ /**
67
+ * Type guard for children.
68
+ */
69
+ export declare const hasChildren: <T>(object: any) => object is T & WithChildren;
70
+ /**
71
+ * Parent guard for children.
72
+ */
73
+ export declare const isNodeParent: (_object: any, state: ChildStructure | undefined) => _object is ParentStructure;
29
74
  export type Impl = {
30
75
  name: string;
76
+ 'if-version'?: string | null | undefined;
31
77
  description: string | null | undefined;
32
78
  tags: Tag | null | undefined;
79
+ params?: ManifestParameter[] | undefined | null;
33
80
  initialize: {
34
81
  models: Model[];
35
82
  };
36
83
  graph: {
37
- children: Children;
84
+ children: ParentStructure;
38
85
  };
39
86
  aggregation?: {
40
- 'aggregation-metrics': AggregationMetrics[];
41
- 'aggregation-method': AggregationMethod;
87
+ metrics: string[];
88
+ type: AggregationMethodsNames;
42
89
  };
43
90
  'aggregated-outputs'?: AggregationResult;
44
91
  };
@@ -1,5 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const config_1 = require("../config");
4
- const { AGGREGATION_METHODS, AGGREGATION_METRICS } = config_1.CONFIG;
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9pbXBsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0NBQWlDO0FBSWpDLE1BQU0sRUFBQyxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBQyxHQUFHLGVBQU0sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q09ORklHfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHtNb2RlbFBhcmFtc30gZnJvbSAnLi9tb2RlbC1pbnRlcmZhY2UnO1xuaW1wb3J0IHtBZ2dyZWdhdGlvblJlc3VsdH0gZnJvbSAnLi9wbGFuZXQtYWdncmVnYXRvcic7XG5cbmNvbnN0IHtBR0dSRUdBVElPTl9NRVRIT0RTLCBBR0dSRUdBVElPTl9NRVRSSUNTfSA9IENPTkZJRztcblxudHlwZSBUYWcgPSB7XG4gIGtpbmQ/OiBzdHJpbmc7XG4gIGNvbXBsZXhpdHk/OiBzdHJpbmc7XG4gIGNhdGVnb3J5Pzogc3RyaW5nO1xufTtcblxudHlwZSBNb2RlbCA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xuICB2ZXJib3NlPzogYm9vbGVhbjtcbiAgcGF0aD86IHN0cmluZztcbiAgY29uZmlnPzogQ29uZmlnO1xufTtcblxuZXhwb3J0IHR5cGUgQ29uZmlnID0gUmVjb3JkPHN0cmluZywgYW55PjtcblxuZXhwb3J0IHR5cGUgQ2hpbGRyZW4gPSB7XG4gIFtrZXk6IHN0cmluZ106IHtcbiAgICBwaXBlbGluZTogc3RyaW5nW107XG4gICAgY29uZmlnOiBDb25maWc7XG4gICAgaW5wdXRzOiBNb2RlbFBhcmFtc1tdO1xuICAgIGNoaWxkcmVuOiBDaGlsZHJlbjtcbiAgICBvdXRwdXRzPzogTW9kZWxQYXJhbXNbXTtcbiAgICAnYWdncmVnYXRlZC1vdXRwdXRzJz86IEFnZ3JlZ2F0aW9uUmVzdWx0O1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgQWdncmVnYXRpb25NZXRyaWNzID0gKHR5cGVvZiBBR0dSRUdBVElPTl9NRVRSSUNTKVtudW1iZXJdO1xuZXhwb3J0IHR5cGUgQWdncmVnYXRpb25NZXRob2QgPSAodHlwZW9mIEFHR1JFR0FUSU9OX01FVEhPRFMpW251bWJlcl07XG5cbmV4cG9ydCB0eXBlIEltcGwgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHRhZ3M6IFRhZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGluaXRpYWxpemU6IHtcbiAgICBtb2RlbHM6IE1vZGVsW107XG4gIH07XG4gIGdyYXBoOiB7XG4gICAgY2hpbGRyZW46IENoaWxkcmVuO1xuICB9O1xuICBhZ2dyZWdhdGlvbj86IHtcbiAgICAnYWdncmVnYXRpb24tbWV0cmljcyc6IEFnZ3JlZ2F0aW9uTWV0cmljc1tdO1xuICAgICdhZ2dyZWdhdGlvbi1tZXRob2QnOiBBZ2dyZWdhdGlvbk1ldGhvZDtcbiAgfTtcbiAgJ2FnZ3JlZ2F0ZWQtb3V0cHV0cyc/OiBBZ2dyZWdhdGlvblJlc3VsdDtcbn07XG4iXX0=
3
+ exports.isNodeParent = exports.hasChildren = exports.hasInputs = void 0;
4
+ /**
5
+ * Type guard for inputs.
6
+ */
7
+ const hasInputs = (object) => 'inputs' in object;
8
+ exports.hasInputs = hasInputs;
9
+ /**
10
+ * Type guard for children.
11
+ */
12
+ const hasChildren = (object) => 'children' in object;
13
+ exports.hasChildren = hasChildren;
14
+ /**
15
+ * Parent guard for children.
16
+ */
17
+ const isNodeParent = (_object, state) => !state;
18
+ exports.isNodeParent = isNodeParent;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9pbXBsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXdFQTs7R0FFRztBQUNJLE1BQU0sU0FBUyxHQUFHLENBQUksTUFBVyxFQUE0QixFQUFFLENBQ3BFLFFBQVEsSUFBSSxNQUFNLENBQUM7QUFEUixRQUFBLFNBQVMsYUFDRDtBQUVyQjs7R0FFRztBQUNJLE1BQU0sV0FBVyxHQUFHLENBQUksTUFBVyxFQUE4QixFQUFFLENBQ3hFLFVBQVUsSUFBSSxNQUFNLENBQUM7QUFEVixRQUFBLFdBQVcsZUFDRDtBQUV2Qjs7R0FFRztBQUNJLE1BQU0sWUFBWSxHQUFHLENBQzFCLE9BQVksRUFDWixLQUFpQyxFQUNMLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUgzQixRQUFBLFlBQVksZ0JBR2UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vZGVsUGFyYW1zfSBmcm9tICcuL21vZGVsLWludGVyZmFjZSc7XG5pbXBvcnQge0FnZ3JlZ2F0aW9uTWV0aG9kc05hbWVzLCBBZ2dyZWdhdGlvblJlc3VsdH0gZnJvbSAnLi9hZ2dyZWdhdG9yJztcbmltcG9ydCB7TWFuaWZlc3RQYXJhbWV0ZXJ9IGZyb20gJy4vcGFyYW1ldGVycyc7XG5cbnR5cGUgVGFnID0ge1xuICBraW5kPzogc3RyaW5nO1xuICBjb21wbGV4aXR5Pzogc3RyaW5nO1xuICBjYXRlZ29yeT86IHN0cmluZztcbn07XG5cbnR5cGUgTW9kZWwgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmVyYm9zZT86IGJvb2xlYW47XG4gIHBhdGg6IHN0cmluZztcbiAgY29uZmlnPzogQ29uZmlnO1xuICBtb2RlbDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ29uZmlnID0gUmVjb3JkPHN0cmluZywgYW55PjtcblxuLyoqXG4gKiBBcHBlbmRzIGdpdmVuIGBUYCB0eXBlIHRvIG5lc3RlZCBwcm9wZXJ0eS5cbiAqL1xudHlwZSBTdHJ1Y3R1cmVNYW5hZ2VyPFQ+ID0ge1xuICBba2V5OiBzdHJpbmddOiBUO1xufTtcblxuLyoqXG4gKiBCYXNlIGludGVyZmFjZSBmb3IgZ3JhcGggY29udGVudHMuXG4gKi9cbmludGVyZmFjZSBOb2RlQmFzZSB7XG4gIHBpcGVsaW5lPzogc3RyaW5nW107XG4gIGNvbmZpZz86IENvbmZpZztcbiAgb3V0cHV0cz86IE1vZGVsUGFyYW1zW107XG4gICdhZ2dyZWdhdGVkLW91dHB1dHMnPzogQWdncmVnYXRpb25SZXN1bHQ7XG59XG5cbi8qKlxuICogU2V0dXAgbW9kaWZpZXJzLlxuICovXG50eXBlIFdpdGhJbnB1dHMgPSB7XG4gIGlucHV0czogTW9kZWxQYXJhbXNbXTtcbn07XG50eXBlIFdpdGhDaGlsZHJlbiA9IHtcbiAgY2hpbGRyZW46IENoaWxkU3RydWN0dXJlO1xufTtcblxuLyoqXG4gKiBDaGlsZCBub2RlIGludGVyZmFjZS5cbiAqL1xudHlwZSBDaGlsZEJhc2UgPSBOb2RlQmFzZTtcblxuLyoqXG4gKiBTZXR1cCBwYXJlbnQgZ3JhcGggbm9kZSB0eXBlLlxuICovXG5pbnRlcmZhY2UgUGFyZW50QmFzZSBleHRlbmRzIE5vZGVCYXNlIHtcbiAgcGlwZWxpbmU6IHN0cmluZ1tdO1xuICBjb25maWc6IENvbmZpZztcbn1cblxuLyoqXG4gKiBOb2RlIGRlZmluaXRpb25zLlxuICovXG5leHBvcnQgdHlwZSBQYXJlbnROb2RlID0gUGFyZW50QmFzZSAmIChXaXRoSW5wdXRzIHwgV2l0aENoaWxkcmVuKTtcbmV4cG9ydCB0eXBlIENoaWxkTm9kZSA9IENoaWxkQmFzZSAmIChXaXRoSW5wdXRzIHwgV2l0aENoaWxkcmVuKTtcblxuLyoqXG4gKiBTdHJ1Y3R1cmUgZGVmaW5pdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIFBhcmVudFN0cnVjdHVyZSA9IFN0cnVjdHVyZU1hbmFnZXI8UGFyZW50Tm9kZT47XG5leHBvcnQgdHlwZSBDaGlsZFN0cnVjdHVyZSA9IFN0cnVjdHVyZU1hbmFnZXI8Q2hpbGROb2RlPjtcblxuLyoqXG4gKiBUeXBlIGd1YXJkIGZvciBpbnB1dHMuXG4gKi9cbmV4cG9ydCBjb25zdCBoYXNJbnB1dHMgPSA8VD4ob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgVCAmIFdpdGhJbnB1dHMgPT5cbiAgJ2lucHV0cycgaW4gb2JqZWN0O1xuXG4vKipcbiAqIFR5cGUgZ3VhcmQgZm9yIGNoaWxkcmVuLlxuICovXG5leHBvcnQgY29uc3QgaGFzQ2hpbGRyZW4gPSA8VD4ob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgVCAmIFdpdGhDaGlsZHJlbiA9PlxuICAnY2hpbGRyZW4nIGluIG9iamVjdDtcblxuLyoqXG4gKiBQYXJlbnQgZ3VhcmQgZm9yIGNoaWxkcmVuLlxuICovXG5leHBvcnQgY29uc3QgaXNOb2RlUGFyZW50ID0gKFxuICBfb2JqZWN0OiBhbnksXG4gIHN0YXRlOiBDaGlsZFN0cnVjdHVyZSB8IHVuZGVmaW5lZFxuKTogX29iamVjdCBpcyBQYXJlbnRTdHJ1Y3R1cmUgPT4gIXN0YXRlO1xuXG5leHBvcnQgdHlwZSBJbXBsID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gICdpZi12ZXJzaW9uJz86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0YWdzOiBUYWcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwYXJhbXM/OiBNYW5pZmVzdFBhcmFtZXRlcltdIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgaW5pdGlhbGl6ZToge1xuICAgIG1vZGVsczogTW9kZWxbXTtcbiAgfTtcbiAgZ3JhcGg6IHtcbiAgICBjaGlsZHJlbjogUGFyZW50U3RydWN0dXJlO1xuICB9O1xuICBhZ2dyZWdhdGlvbj86IHtcbiAgICBtZXRyaWNzOiBzdHJpbmdbXTtcbiAgICB0eXBlOiBBZ2dyZWdhdGlvbk1ldGhvZHNOYW1lcztcbiAgfTtcbiAgJ2FnZ3JlZ2F0ZWQtb3V0cHV0cyc/OiBBZ2dyZWdhdGlvblJlc3VsdDtcbn07XG4iXX0=
@@ -1,6 +1,5 @@
1
- import { UnitKeyName } from './units';
2
1
  export type ModelParams = {
3
- [K in UnitKeyName]?: any;
2
+ [key: string]: any;
4
3
  };
5
4
  export interface ModelPluginInterface {
6
5
  /**
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL21vZGVsLWludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtVbml0S2V5TmFtZX0gZnJvbSAnLi91bml0cyc7XG5cbmV4cG9ydCB0eXBlIE1vZGVsUGFyYW1zID0ge1xuICBbSyBpbiBVbml0S2V5TmFtZV0/OiBhbnk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsUGx1Z2luSW50ZXJmYWNlIHtcbiAgLyoqXG4gICAqIENvbmZpZ3VyZXMgaW5zdGFuY2Ugd2l0aCBnaXZlbiBwYXJhbXMuXG4gICAqL1xuICBjb25maWd1cmUocGFyYW1zOiBvYmplY3QgfCB1bmRlZmluZWQpOiBQcm9taXNlPE1vZGVsUGx1Z2luSW50ZXJmYWNlPjtcblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyBgb3V0cHV0YCBiYXNlZCBvbiBnaXZlbiBtb2RlbCdzIGBpbnB1dGAuXG4gICAqL1xuICBleGVjdXRlKGlucHV0czogTW9kZWxQYXJhbXNbXSk6IFByb21pc2U8TW9kZWxQYXJhbXNbXT47XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL21vZGVsLWludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgTW9kZWxQYXJhbXMgPSB7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxQbHVnaW5JbnRlcmZhY2Uge1xuICAvKipcbiAgICogQ29uZmlndXJlcyBpbnN0YW5jZSB3aXRoIGdpdmVuIHBhcmFtcy5cbiAgICovXG4gIGNvbmZpZ3VyZShwYXJhbXM6IG9iamVjdCB8IHVuZGVmaW5lZCk6IFByb21pc2U8TW9kZWxQbHVnaW5JbnRlcmZhY2U+O1xuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIGBvdXRwdXRgIGJhc2VkIG9uIGdpdmVuIG1vZGVsJ3MgYGlucHV0YC5cbiAgICovXG4gIGV4ZWN1dGUoaW5wdXRzOiBNb2RlbFBhcmFtc1tdKTogUHJvbWlzZTxNb2RlbFBhcmFtc1tdPjtcbn1cbiJdfQ==
@@ -1,8 +1,5 @@
1
1
  import { ModelPluginInterface } from '../types/model-interface';
2
- export type GraphOptions = {
3
- 'core-units': number;
4
- 'physical-processor': string;
5
- };
2
+ export type ModelOptions = Record<string, any>;
6
3
  export type ImplInitializeModel = {
7
4
  config?: Record<string, any>;
8
5
  name: string;
@@ -10,7 +7,7 @@ export type ImplInitializeModel = {
10
7
  path?: string;
11
8
  };
12
9
  export type InitalizedModels = {
13
- [key: string]: (graphOptions: GraphOptions) => Promise<ModelPluginInterface>;
10
+ [key: string]: (modelOptions: ModelOptions) => Promise<ModelPluginInterface>;
14
11
  };
15
12
  export type HandModelParams = {
16
13
  name: string;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLXVuaXZlcnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL21vZGVscy11bml2ZXJzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbFBsdWdpbkludGVyZmFjZX0gZnJvbSAnLi4vdHlwZXMvbW9kZWwtaW50ZXJmYWNlJztcblxuZXhwb3J0IHR5cGUgR3JhcGhPcHRpb25zID0ge1xuICAnY29yZS11bml0cyc6IG51bWJlcjtcbiAgJ3BoeXNpY2FsLXByb2Nlc3Nvcic6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEltcGxJbml0aWFsaXplTW9kZWwgPSB7XG4gIGNvbmZpZz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIG5hbWU6IHN0cmluZztcbiAgbW9kZWw/OiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBJbml0YWxpemVkTW9kZWxzID0ge1xuICBba2V5OiBzdHJpbmddOiAoZ3JhcGhPcHRpb25zOiBHcmFwaE9wdGlvbnMpID0+IFByb21pc2U8TW9kZWxQbHVnaW5JbnRlcmZhY2U+O1xufTtcblxuZXhwb3J0IHR5cGUgSGFuZE1vZGVsUGFyYW1zID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIG1vZGVsPzogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ2xhc3NDb250YWluZXJQYXJhbXMgPSB7XG4gIG1vZGVsOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbn07XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLXVuaXZlcnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL21vZGVscy11bml2ZXJzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbFBsdWdpbkludGVyZmFjZX0gZnJvbSAnLi4vdHlwZXMvbW9kZWwtaW50ZXJmYWNlJztcblxuZXhwb3J0IHR5cGUgTW9kZWxPcHRpb25zID0gUmVjb3JkPHN0cmluZywgYW55PjtcblxuZXhwb3J0IHR5cGUgSW1wbEluaXRpYWxpemVNb2RlbCA9IHtcbiAgY29uZmlnPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgbmFtZTogc3RyaW5nO1xuICBtb2RlbD86IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEluaXRhbGl6ZWRNb2RlbHMgPSB7XG4gIFtrZXk6IHN0cmluZ106IChtb2RlbE9wdGlvbnM6IE1vZGVsT3B0aW9ucykgPT4gUHJvbWlzZTxNb2RlbFBsdWdpbkludGVyZmFjZT47XG59O1xuXG5leHBvcnQgdHlwZSBIYW5kTW9kZWxQYXJhbXMgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgbW9kZWw/OiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDbGFzc0NvbnRhaW5lclBhcmFtcyA9IHtcbiAgbW9kZWw6IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xufTtcbiJdfQ==
@@ -0,0 +1,16 @@
1
+ export declare const AGGREGATION_TYPES: readonly ["sum", "none", "avg"];
2
+ export type AggregationTypes = (typeof AGGREGATION_TYPES)[number];
3
+ export type Parameters = {
4
+ [key: string]: ParameterProps;
5
+ };
6
+ export type ParameterProps = {
7
+ unit: string;
8
+ description: string;
9
+ aggregation: AggregationTypes;
10
+ };
11
+ export type ManifestParameter = {
12
+ name: string;
13
+ unit: string;
14
+ description: string;
15
+ aggregation: AggregationTypes;
16
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AGGREGATION_TYPES = void 0;
4
+ exports.AGGREGATION_TYPES = ['sum', 'none', 'avg'];
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9wYXJhbWV0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsaUJBQWlCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFHR1JFR0FUSU9OX1RZUEVTID0gWydzdW0nLCAnbm9uZScsICdhdmcnXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQWdncmVnYXRpb25UeXBlcyA9ICh0eXBlb2YgQUdHUkVHQVRJT05fVFlQRVMpW251bWJlcl07XG5cbmV4cG9ydCB0eXBlIFBhcmFtZXRlcnMgPSB7XG4gIFtrZXk6IHN0cmluZ106IFBhcmFtZXRlclByb3BzO1xufTtcblxuZXhwb3J0IHR5cGUgUGFyYW1ldGVyUHJvcHMgPSB7XG4gIHVuaXQ6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgYWdncmVnYXRpb246IEFnZ3JlZ2F0aW9uVHlwZXM7XG59O1xuXG5leHBvcnQgdHlwZSBNYW5pZmVzdFBhcmFtZXRlciA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB1bml0OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGFnZ3JlZ2F0aW9uOiBBZ2dyZWdhdGlvblR5cGVzO1xufTtcbiJdfQ==
@@ -1,6 +1,7 @@
1
1
  export interface impactProcessArgs {
2
2
  impl?: string;
3
3
  ompl?: string;
4
+ 'override-params'?: string;
4
5
  format?: string;
5
6
  verbose?: boolean;
6
7
  help?: boolean;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1hcmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3Byb2Nlc3MtYXJncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBpbXBhY3RQcm9jZXNzQXJncyB7XG4gIGltcGw/OiBzdHJpbmc7XG4gIG9tcGw/OiBzdHJpbmc7XG4gIGZvcm1hdD86IHN0cmluZztcbiAgdmVyYm9zZT86IGJvb2xlYW47XG4gIGhlbHA/OiBib29sZWFuO1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1hcmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3Byb2Nlc3MtYXJncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBpbXBhY3RQcm9jZXNzQXJncyB7XG4gIGltcGw/OiBzdHJpbmc7XG4gIG9tcGw/OiBzdHJpbmc7XG4gICdvdmVycmlkZS1wYXJhbXMnPzogc3RyaW5nO1xuICBmb3JtYXQ/OiBzdHJpbmc7XG4gIHZlcmJvc2U/OiBib29sZWFuO1xuICBoZWxwPzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -2,6 +2,7 @@ export type TimeNormalizerConfig = {
2
2
  'start-time': string;
3
3
  'end-time': string;
4
4
  interval: number;
5
+ 'allow-padding': boolean;
5
6
  };
6
7
  export type PaddingReceipt = {
7
8
  start: boolean;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1zeW5jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3RpbWUtc3luYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgVGltZU5vcm1hbGl6ZXJDb25maWcgPSB7XG4gICdzdGFydC10aW1lJzogc3RyaW5nO1xuICAnZW5kLXRpbWUnOiBzdHJpbmc7XG4gIGludGVydmFsOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBQYWRkaW5nUmVjZWlwdCA9IHtcbiAgc3RhcnQ6IGJvb2xlYW47XG4gIGVuZDogYm9vbGVhbjtcbn07XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1zeW5jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3RpbWUtc3luYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgVGltZU5vcm1hbGl6ZXJDb25maWcgPSB7XG4gICdzdGFydC10aW1lJzogc3RyaW5nO1xuICAnZW5kLXRpbWUnOiBzdHJpbmc7XG4gIGludGVydmFsOiBudW1iZXI7XG4gICdhbGxvdy1wYWRkaW5nJzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFBhZGRpbmdSZWNlaXB0ID0ge1xuICBzdGFydDogYm9vbGVhbjtcbiAgZW5kOiBib29sZWFuO1xufTtcbiJdfQ==
@@ -3,6 +3,7 @@
3
3
  * Otherwise throws error.
4
4
  */
5
5
  export declare const parseProcessArgument: () => {
6
+ paramPath?: string | undefined;
6
7
  outputPath?: string | undefined;
7
8
  inputPath: string;
8
9
  } | undefined;
@@ -1,7 +1,30 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  exports.parseProcessArgument = void 0;
4
- const path = require("path");
27
+ const path = __importStar(require("path"));
5
28
  const ts_command_line_args_1 = require("ts-command-line-args");
6
29
  const yaml_1 = require("./yaml");
7
30
  const errors_1 = require("./errors");
@@ -38,7 +61,7 @@ const prependFullFilePath = (filePath) => {
38
61
  * Otherwise throws error.
39
62
  */
40
63
  const parseProcessArgument = () => {
41
- const { impl, ompl, help } = validateAndParseProcessArgs();
64
+ const { impl, ompl, 'override-params': overrideParams, help, } = validateAndParseProcessArgs();
42
65
  if (help) {
43
66
  console.log(HELP);
44
67
  return;
@@ -48,6 +71,7 @@ const parseProcessArgument = () => {
48
71
  return {
49
72
  inputPath: prependFullFilePath(impl),
50
73
  ...(ompl && { outputPath: prependFullFilePath(ompl) }),
74
+ ...(overrideParams && { paramPath: overrideParams }),
51
75
  };
52
76
  }
53
77
  throw new CliInputError(FILE_IS_NOT_YAML);
@@ -55,4 +79,4 @@ const parseProcessArgument = () => {
55
79
  throw new CliInputError(IMPL_IS_MISSING);
56
80
  };
57
81
  exports.parseProcessArgument = parseProcessArgument;
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FyZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTZCO0FBQzdCLCtEQUEyQztBQUUzQyxpQ0FBeUM7QUFDekMscUNBQWdDO0FBRWhDLHNDQUEwQztBQUkxQyxNQUFNLEVBQUMsYUFBYSxFQUFDLEdBQUcsZUFBTSxDQUFDO0FBRS9CLE1BQU0sRUFBQyxNQUFNLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFDeEIsTUFBTSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsR0FBRyxNQUFNLENBQUM7QUFFNUIsTUFBTSxFQUFDLGdCQUFnQixFQUFFLGVBQWUsRUFBQyxHQUFHLGdCQUFPLENBQUM7QUFFcEQ7OztHQUdHO0FBQ0gsTUFBTSwyQkFBMkIsR0FBRyxHQUFHLEVBQUU7SUFDdkMsSUFBSTtRQUNGLE9BQU8sSUFBQSw0QkFBSyxFQUFvQixJQUFJLENBQUMsQ0FBQztLQUN2QztJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFO1lBQzFCLE1BQU0sSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsTUFBTSxLQUFLLENBQUM7S0FDYjtBQUNILENBQUMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxRQUFnQixFQUFFLEVBQUU7SUFDL0MsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFekMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsa0JBQWtCLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQztBQUM3RCxDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFDSSxNQUFNLG9CQUFvQixHQUFHLEdBQUcsRUFBRTtJQUN2QyxNQUFNLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsR0FBRywyQkFBMkIsRUFBRSxDQUFDO0lBRXpELElBQUksSUFBSSxFQUFFO1FBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixPQUFPO0tBQ1I7SUFFRCxJQUFJLElBQUksRUFBRTtRQUNSLElBQUksSUFBQSx3QkFBaUIsRUFBQyxJQUFJLENBQUMsRUFBRTtZQUMzQixPQUFPO2dCQUNMLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQzthQUNyRCxDQUFDO1NBQ0g7UUFFRCxNQUFNLElBQUksYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7S0FDM0M7SUFFRCxNQUFNLElBQUksYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQztBQXBCVyxRQUFBLG9CQUFvQix3QkFvQi9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7cGFyc2V9IGZyb20gJ3RzLWNvbW1hbmQtbGluZS1hcmdzJztcblxuaW1wb3J0IHtjaGVja0lmRmlsZUlzWWFtbH0gZnJvbSAnLi95YW1sJztcbmltcG9ydCB7RVJST1JTfSBmcm9tICcuL2Vycm9ycyc7XG5cbmltcG9ydCB7Q09ORklHLCBTVFJJTkdTfSBmcm9tICcuLi9jb25maWcnO1xuXG5pbXBvcnQge2ltcGFjdFByb2Nlc3NBcmdzfSBmcm9tICcuLi90eXBlcy9wcm9jZXNzLWFyZ3MnO1xuXG5jb25zdCB7Q2xpSW5wdXRFcnJvcn0gPSBFUlJPUlM7XG5cbmNvbnN0IHtpbXBhY3R9ID0gQ09ORklHO1xuY29uc3Qge0FSR1MsIEhFTFB9ID0gaW1wYWN0O1xuXG5jb25zdCB7RklMRV9JU19OT1RfWUFNTCwgSU1QTF9JU19NSVNTSU5HfSA9IFNUUklOR1M7XG5cbi8qKlxuICogVmFsaWRhdGVzIHByb2Nlc3MgYXJndW1lbnRzXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCB2YWxpZGF0ZUFuZFBhcnNlUHJvY2Vzc0FyZ3MgPSAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlPGltcGFjdFByb2Nlc3NBcmdzPihBUkdTKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgdGhyb3cgbmV3IENsaUlucHV0RXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbi8qKlxuICogUHJlcGVuZHMgcHJvY2VzcyBwYXRoIHRvIGZpdmVuIGBmaWxlUGF0aGAuXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBwcmVwZW5kRnVsbEZpbGVQYXRoID0gKGZpbGVQYXRoOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgcHJvY2Vzc1J1bm5pbmdQYXRoID0gcHJvY2Vzcy5jd2QoKTtcblxuICByZXR1cm4gcGF0aC5ub3JtYWxpemUoYCR7cHJvY2Vzc1J1bm5pbmdQYXRofS8ke2ZpbGVQYXRofWApO1xufTtcblxuLyoqXG4gKiBQYXJzZXMgcHJvY2VzcyBhcmd1bWVudCwgaWYgaXQncyBgeWFtbGAgZmlsZSwgdGhlbiByZXR1cm5zIGl0LlxuICogT3RoZXJ3aXNlIHRocm93cyBlcnJvci5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlUHJvY2Vzc0FyZ3VtZW50ID0gKCkgPT4ge1xuICBjb25zdCB7aW1wbCwgb21wbCwgaGVscH0gPSB2YWxpZGF0ZUFuZFBhcnNlUHJvY2Vzc0FyZ3MoKTtcblxuICBpZiAoaGVscCkge1xuICAgIGNvbnNvbGUubG9nKEhFTFApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChpbXBsKSB7XG4gICAgaWYgKGNoZWNrSWZGaWxlSXNZYW1sKGltcGwpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbnB1dFBhdGg6IHByZXBlbmRGdWxsRmlsZVBhdGgoaW1wbCksXG4gICAgICAgIC4uLihvbXBsICYmIHtvdXRwdXRQYXRoOiBwcmVwZW5kRnVsbEZpbGVQYXRoKG9tcGwpfSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRocm93IG5ldyBDbGlJbnB1dEVycm9yKEZJTEVfSVNfTk9UX1lBTUwpO1xuICB9XG5cbiAgdGhyb3cgbmV3IENsaUlucHV0RXJyb3IoSU1QTF9JU19NSVNTSU5HKTtcbn07XG4iXX0=
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FyZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsK0RBQTJDO0FBRTNDLGlDQUF5QztBQUN6QyxxQ0FBZ0M7QUFFaEMsc0NBQTBDO0FBSTFDLE1BQU0sRUFBQyxhQUFhLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFFL0IsTUFBTSxFQUFDLE1BQU0sRUFBQyxHQUFHLGVBQU0sQ0FBQztBQUN4QixNQUFNLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxHQUFHLE1BQU0sQ0FBQztBQUU1QixNQUFNLEVBQUMsZ0JBQWdCLEVBQUUsZUFBZSxFQUFDLEdBQUcsZ0JBQU8sQ0FBQztBQUVwRDs7O0dBR0c7QUFDSCxNQUFNLDJCQUEyQixHQUFHLEdBQUcsRUFBRTtJQUN2QyxJQUFJO1FBQ0YsT0FBTyxJQUFBLDRCQUFLLEVBQW9CLElBQUksQ0FBQyxDQUFDO0tBQ3ZDO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUU7WUFDMUIsTUFBTSxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDeEM7UUFFRCxNQUFNLEtBQUssQ0FBQztLQUNiO0FBQ0gsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtJQUMvQyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUV6QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxrQkFBa0IsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQzdELENBQUMsQ0FBQztBQUVGOzs7R0FHRztBQUNJLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxFQUFFO0lBQ3ZDLE1BQU0sRUFDSixJQUFJLEVBQ0osSUFBSSxFQUNKLGlCQUFpQixFQUFFLGNBQWMsRUFDakMsSUFBSSxHQUNMLEdBQUcsMkJBQTJCLEVBQUUsQ0FBQztJQUVsQyxJQUFJLElBQUksRUFBRTtRQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsT0FBTztLQUNSO0lBRUQsSUFBSSxJQUFJLEVBQUU7UUFDUixJQUFJLElBQUEsd0JBQWlCLEVBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0IsT0FBTztnQkFDTCxTQUFTLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDO2dCQUNwQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFDLENBQUM7Z0JBQ3BELEdBQUcsQ0FBQyxjQUFjLElBQUksRUFBQyxTQUFTLEVBQUUsY0FBYyxFQUFDLENBQUM7YUFDbkQsQ0FBQztTQUNIO1FBRUQsTUFBTSxJQUFJLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBQzNDO0lBRUQsTUFBTSxJQUFJLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUExQlcsUUFBQSxvQkFBb0Isd0JBMEIvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge3BhcnNlfSBmcm9tICd0cy1jb21tYW5kLWxpbmUtYXJncyc7XG5cbmltcG9ydCB7Y2hlY2tJZkZpbGVJc1lhbWx9IGZyb20gJy4veWFtbCc7XG5pbXBvcnQge0VSUk9SU30gZnJvbSAnLi9lcnJvcnMnO1xuXG5pbXBvcnQge0NPTkZJRywgU1RSSU5HU30gZnJvbSAnLi4vY29uZmlnJztcblxuaW1wb3J0IHtpbXBhY3RQcm9jZXNzQXJnc30gZnJvbSAnLi4vdHlwZXMvcHJvY2Vzcy1hcmdzJztcblxuY29uc3Qge0NsaUlucHV0RXJyb3J9ID0gRVJST1JTO1xuXG5jb25zdCB7aW1wYWN0fSA9IENPTkZJRztcbmNvbnN0IHtBUkdTLCBIRUxQfSA9IGltcGFjdDtcblxuY29uc3Qge0ZJTEVfSVNfTk9UX1lBTUwsIElNUExfSVNfTUlTU0lOR30gPSBTVFJJTkdTO1xuXG4vKipcbiAqIFZhbGlkYXRlcyBwcm9jZXNzIGFyZ3VtZW50c1xuICogQHByaXZhdGVcbiAqL1xuY29uc3QgdmFsaWRhdGVBbmRQYXJzZVByb2Nlc3NBcmdzID0gKCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBwYXJzZTxpbXBhY3RQcm9jZXNzQXJncz4oQVJHUyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBDbGlJbnB1dEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG4vKipcbiAqIFByZXBlbmRzIHByb2Nlc3MgcGF0aCB0byBmaXZlbiBgZmlsZVBhdGhgLlxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgcHJlcGVuZEZ1bGxGaWxlUGF0aCA9IChmaWxlUGF0aDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHByb2Nlc3NSdW5uaW5nUGF0aCA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgcmV0dXJuIHBhdGgubm9ybWFsaXplKGAke3Byb2Nlc3NSdW5uaW5nUGF0aH0vJHtmaWxlUGF0aH1gKTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHByb2Nlc3MgYXJndW1lbnQsIGlmIGl0J3MgYHlhbWxgIGZpbGUsIHRoZW4gcmV0dXJucyBpdC5cbiAqIE90aGVyd2lzZSB0aHJvd3MgZXJyb3IuXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZVByb2Nlc3NBcmd1bWVudCA9ICgpID0+IHtcbiAgY29uc3Qge1xuICAgIGltcGwsXG4gICAgb21wbCxcbiAgICAnb3ZlcnJpZGUtcGFyYW1zJzogb3ZlcnJpZGVQYXJhbXMsXG4gICAgaGVscCxcbiAgfSA9IHZhbGlkYXRlQW5kUGFyc2VQcm9jZXNzQXJncygpO1xuXG4gIGlmIChoZWxwKSB7XG4gICAgY29uc29sZS5sb2coSEVMUCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGltcGwpIHtcbiAgICBpZiAoY2hlY2tJZkZpbGVJc1lhbWwoaW1wbCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlucHV0UGF0aDogcHJlcGVuZEZ1bGxGaWxlUGF0aChpbXBsKSxcbiAgICAgICAgLi4uKG9tcGwgJiYge291dHB1dFBhdGg6IHByZXBlbmRGdWxsRmlsZVBhdGgob21wbCl9KSxcbiAgICAgICAgLi4uKG92ZXJyaWRlUGFyYW1zICYmIHtwYXJhbVBhdGg6IG92ZXJyaWRlUGFyYW1zfSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRocm93IG5ldyBDbGlJbnB1dEVycm9yKEZJTEVfSVNfTk9UX1lBTUwpO1xuICB9XG5cbiAgdGhyb3cgbmV3IENsaUlucHV0RXJyb3IoSU1QTF9JU19NSVNTSU5HKTtcbn07XG4iXX0=
@@ -0,0 +1,5 @@
1
+ import { Parameters } from '../types/parameters';
2
+ /**
3
+ * Returns aggregation method for given `unitName`. If doesn't exist then returns value `sum`.
4
+ */
5
+ export declare const getAggregationMethod: (unitName: string, parameters: Parameters) => "sum" | "none" | "avg";
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAggregationMethod = void 0;
4
+ /**
5
+ * Returns aggregation method for given `unitName`. If doesn't exist then returns value `sum`.
6
+ */
7
+ const getAggregationMethod = (unitName, parameters) => {
8
+ if (`${unitName}` in parameters) {
9
+ return parameters[unitName].aggregation;
10
+ }
11
+ return 'sum';
12
+ };
13
+ exports.getAggregationMethod = getAggregationMethod;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0tc2VsZWN0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvcGFyYW0tc2VsZWN0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ0ksTUFBTSxvQkFBb0IsR0FBRyxDQUNsQyxRQUFnQixFQUNoQixVQUFzQixFQUN0QixFQUFFO0lBQ0YsSUFBSSxHQUFHLFFBQVEsRUFBRSxJQUFJLFVBQVUsRUFBRTtRQUMvQixPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUM7S0FDekM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQVRXLFFBQUEsb0JBQW9CLHdCQVMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGFyYW1ldGVyc30gZnJvbSAnLi4vdHlwZXMvcGFyYW1ldGVycyc7XG5cbi8qKlxuICogUmV0dXJucyBhZ2dyZWdhdGlvbiBtZXRob2QgZm9yIGdpdmVuIGB1bml0TmFtZWAuIElmIGRvZXNuJ3QgZXhpc3QgdGhlbiByZXR1cm5zIHZhbHVlIGBzdW1gLlxuICovXG5leHBvcnQgY29uc3QgZ2V0QWdncmVnYXRpb25NZXRob2QgPSAoXG4gIHVuaXROYW1lOiBzdHJpbmcsXG4gIHBhcmFtZXRlcnM6IFBhcmFtZXRlcnNcbikgPT4ge1xuICBpZiAoYCR7dW5pdE5hbWV9YCBpbiBwYXJhbWV0ZXJzKSB7XG4gICAgcmV0dXJuIHBhcmFtZXRlcnNbdW5pdE5hbWVdLmFnZ3JlZ2F0aW9uO1xuICB9XG5cbiAgcmV0dXJuICdzdW0nO1xufTtcbiJdfQ==
@@ -12,18 +12,24 @@ export declare const validateImpl: (impl: Impl) => {
12
12
  } | null;
13
13
  initialize: {
14
14
  models: {
15
+ model: string;
16
+ path: string;
15
17
  name: string;
16
- kind?: string | undefined;
17
- path?: string | undefined;
18
- model?: string | undefined;
19
18
  config?: Record<string, any> | undefined;
20
19
  }[];
21
20
  };
22
21
  graph: {
23
22
  children: Record<string, any>;
24
23
  };
24
+ 'if-version'?: string | null | undefined;
25
25
  aggregation?: {
26
- 'aggregation-metrics': string[];
27
- 'aggregation-method': string;
26
+ type: "horizontal" | "vertical" | "both";
27
+ metrics: string[];
28
28
  } | undefined;
29
+ params?: {
30
+ name: string;
31
+ description: string;
32
+ unit: string;
33
+ aggregation: "sum" | "none" | "avg";
34
+ }[] | null | undefined;
29
35
  };
@@ -3,38 +3,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.validateImpl = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const errors_1 = require("./errors");
6
- const config_1 = require("../config");
6
+ const aggregator_1 = require("../types/aggregator");
7
+ const parameters_1 = require("../types/parameters");
7
8
  const { ImplValidationError } = errors_1.ERRORS;
8
- const { AGGREGATION_METRICS, AGGREGATION_METHODS } = config_1.CONFIG;
9
- const aggregationMethods = AGGREGATION_METHODS.map(method => zod_1.z.literal(method));
10
- const aggregationMetric = AGGREGATION_METRICS.map(metric => zod_1.z.literal(metric));
11
- /**
12
- * Zod literal union validator which checks if members are more than 2.
13
- */
14
- function isValidZodLiteralUnion(literals) {
15
- return literals.length >= 2;
16
- }
17
- /**
18
- * Literal union type helper.
19
- */
20
- function constructZodLiteralUnionType(literals) {
21
- if (!isValidZodLiteralUnion(literals)) {
22
- throw new Error('Literals passed do not meet the criteria for constructing a union schema, the minimum length is 2.');
23
- }
24
- return zod_1.z.union(literals);
25
- }
26
9
  /**
27
10
  * Validation schema for impl files.
28
11
  */
29
12
  const implValidation = zod_1.z.object({
30
13
  name: zod_1.z.string(),
14
+ 'if-version': zod_1.z.string().optional().nullable(),
31
15
  description: zod_1.z.string().nullable(),
32
16
  aggregation: zod_1.z
33
17
  .object({
34
- 'aggregation-metrics': zod_1.z.array(constructZodLiteralUnionType(aggregationMetric)),
35
- 'aggregation-method': constructZodLiteralUnionType(aggregationMethods).default('sum'),
18
+ metrics: zod_1.z.array(zod_1.z.string()),
19
+ type: zod_1.z.enum(aggregator_1.AGGREGATION_METHODS),
36
20
  })
37
21
  .optional(),
22
+ params: zod_1.z
23
+ .array(zod_1.z.object({
24
+ name: zod_1.z.string(),
25
+ description: zod_1.z.string(),
26
+ aggregation: zod_1.z.enum(parameters_1.AGGREGATION_TYPES),
27
+ unit: zod_1.z.string(),
28
+ }))
29
+ .optional()
30
+ .nullable(),
38
31
  tags: zod_1.z
39
32
  .object({
40
33
  kind: zod_1.z.string().optional(),
@@ -45,9 +38,8 @@ const implValidation = zod_1.z.object({
45
38
  initialize: zod_1.z.object({
46
39
  models: zod_1.z.array(zod_1.z.object({
47
40
  name: zod_1.z.string(),
48
- kind: zod_1.z.string().optional(),
49
- path: zod_1.z.string().optional(),
50
- model: zod_1.z.string().optional(),
41
+ path: zod_1.z.string(),
42
+ model: zod_1.z.string(),
51
43
  config: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).optional(),
52
44
  })),
53
45
  }),
@@ -77,4 +69,4 @@ const validateImpl = (impl) => {
77
69
  return validatedImpl.data;
78
70
  };
79
71
  exports.validateImpl = validateImpl;
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC92YWxpZGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBZ0M7QUFFaEMscUNBQWdDO0FBRWhDLHNDQUFpQztBQUlqQyxNQUFNLEVBQUMsbUJBQW1CLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFFckMsTUFBTSxFQUFDLG1CQUFtQixFQUFFLG1CQUFtQixFQUFDLEdBQUcsZUFBTSxDQUFDO0FBRTFELE1BQU0sa0JBQWtCLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2hGLE1BQU0saUJBQWlCLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRS9FOztHQUVHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FDN0IsUUFBYTtJQUViLE9BQU8sUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyw0QkFBNEIsQ0FDbkMsUUFBYTtJQUViLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUNyQyxNQUFNLElBQUksS0FBSyxDQUNiLG9HQUFvRyxDQUNyRyxDQUFDO0tBQ0g7SUFFRCxPQUFPLE9BQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM5QixJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNoQixXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNsQyxXQUFXLEVBQUUsT0FBQztTQUNYLE1BQU0sQ0FBQztRQUNOLHFCQUFxQixFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQzVCLDRCQUE0QixDQUFDLGlCQUFpQixDQUFDLENBQ2hEO1FBQ0Qsb0JBQW9CLEVBQ2xCLDRCQUE0QixDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztLQUNsRSxDQUFDO1NBQ0QsUUFBUSxFQUFFO0lBQ2IsSUFBSSxFQUFFLE9BQUM7U0FDSixNQUFNLENBQUM7UUFDTixJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtRQUMzQixVQUFVLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtRQUNqQyxRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtLQUNoQyxDQUFDO1NBQ0QsUUFBUSxFQUFFO0lBQ2IsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDbkIsTUFBTSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQ2IsT0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNQLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1lBQ2hCLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO1lBQzNCLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO1lBQzNCLEtBQUssRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO1lBQzVCLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7U0FDakQsQ0FBQyxDQUNIO0tBQ0YsQ0FBQztJQUNGLEtBQUssRUFBRSxPQUFDO1NBQ0wsTUFBTSxDQUFDO1FBQ04sUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUN4QyxDQUFDO1NBQ0QsUUFBUSxFQUFFO0NBQ2QsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSSxNQUFNLFlBQVksR0FBRyxDQUFDLElBQVUsRUFBRSxFQUFFO0lBQ3pDLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFckQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUU7UUFDMUIsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFO1lBQzlDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFdkMsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBZSxFQUFFLEVBQUU7Z0JBQ3pDLE1BQU0sRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBQyxHQUFHLEtBQUssQ0FBQztnQkFDcEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNsQyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDOUMsQ0FBQztnQkFDRixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUV2QyxPQUFPLElBQUksUUFBUSxrQkFBa0IsT0FBTyxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsSUFBSSxHQUFHLENBQUM7WUFDckYsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixNQUFNLElBQUksbUJBQW1CLENBQzNCLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQ2xELENBQUM7S0FDSDtJQUVELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQztBQUM1QixDQUFDLENBQUM7QUF4QlcsUUFBQSxZQUFZLGdCQXdCdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1pvZElzc3VlLCB6fSBmcm9tICd6b2QnO1xuXG5pbXBvcnQge0VSUk9SU30gZnJvbSAnLi9lcnJvcnMnO1xuXG5pbXBvcnQge0NPTkZJR30gZnJvbSAnLi4vY29uZmlnJztcblxuaW1wb3J0IHtJbXBsfSBmcm9tICcuLi90eXBlcy9pbXBsJztcblxuY29uc3Qge0ltcGxWYWxpZGF0aW9uRXJyb3J9ID0gRVJST1JTO1xuXG5jb25zdCB7QUdHUkVHQVRJT05fTUVUUklDUywgQUdHUkVHQVRJT05fTUVUSE9EU30gPSBDT05GSUc7XG5cbmNvbnN0IGFnZ3JlZ2F0aW9uTWV0aG9kcyA9IEFHR1JFR0FUSU9OX01FVEhPRFMubWFwKG1ldGhvZCA9PiB6LmxpdGVyYWwobWV0aG9kKSk7XG5jb25zdCBhZ2dyZWdhdGlvbk1ldHJpYyA9IEFHR1JFR0FUSU9OX01FVFJJQ1MubWFwKG1ldHJpYyA9PiB6LmxpdGVyYWwobWV0cmljKSk7XG5cbi8qKlxuICogWm9kIGxpdGVyYWwgdW5pb24gdmFsaWRhdG9yIHdoaWNoIGNoZWNrcyBpZiBtZW1iZXJzIGFyZSBtb3JlIHRoYW4gMi5cbiAqL1xuZnVuY3Rpb24gaXNWYWxpZFpvZExpdGVyYWxVbmlvbjxUIGV4dGVuZHMgei5ab2RMaXRlcmFsPHVua25vd24+PihcbiAgbGl0ZXJhbHM6IFRbXVxuKTogbGl0ZXJhbHMgaXMgW1QsIFQsIC4uLlRbXV0ge1xuICByZXR1cm4gbGl0ZXJhbHMubGVuZ3RoID49IDI7XG59XG5cbi8qKlxuICogTGl0ZXJhbCB1bmlvbiB0eXBlIGhlbHBlci5cbiAqL1xuZnVuY3Rpb24gY29uc3RydWN0Wm9kTGl0ZXJhbFVuaW9uVHlwZTxUIGV4dGVuZHMgei5ab2RMaXRlcmFsPHVua25vd24+PihcbiAgbGl0ZXJhbHM6IFRbXVxuKSB7XG4gIGlmICghaXNWYWxpZFpvZExpdGVyYWxVbmlvbihsaXRlcmFscykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnTGl0ZXJhbHMgcGFzc2VkIGRvIG5vdCBtZWV0IHRoZSBjcml0ZXJpYSBmb3IgY29uc3RydWN0aW5nIGEgdW5pb24gc2NoZW1hLCB0aGUgbWluaW11bSBsZW5ndGggaXMgMi4nXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB6LnVuaW9uKGxpdGVyYWxzKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0aW9uIHNjaGVtYSBmb3IgaW1wbCBmaWxlcy5cbiAqL1xuY29uc3QgaW1wbFZhbGlkYXRpb24gPSB6Lm9iamVjdCh7XG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGFnZ3JlZ2F0aW9uOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICAnYWdncmVnYXRpb24tbWV0cmljcyc6IHouYXJyYXkoXG4gICAgICAgIGNvbnN0cnVjdFpvZExpdGVyYWxVbmlvblR5cGUoYWdncmVnYXRpb25NZXRyaWMpXG4gICAgICApLFxuICAgICAgJ2FnZ3JlZ2F0aW9uLW1ldGhvZCc6XG4gICAgICAgIGNvbnN0cnVjdFpvZExpdGVyYWxVbmlvblR5cGUoYWdncmVnYXRpb25NZXRob2RzKS5kZWZhdWx0KCdzdW0nKSxcbiAgICB9KVxuICAgIC5vcHRpb25hbCgpLFxuICB0YWdzOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBraW5kOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjb21wbGV4aXR5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjYXRlZ29yeTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLm51bGxhYmxlKCksXG4gIGluaXRpYWxpemU6IHoub2JqZWN0KHtcbiAgICBtb2RlbHM6IHouYXJyYXkoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIG5hbWU6IHouc3RyaW5nKCksXG4gICAgICAgIGtpbmQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgcGF0aDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICBtb2RlbDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICBjb25maWc6IHoucmVjb3JkKHouc3RyaW5nKCksIHouYW55KCkpLm9wdGlvbmFsKCksXG4gICAgICB9KVxuICAgICksXG4gIH0pLFxuICBncmFwaDogelxuICAgIC5vYmplY3Qoe1xuICAgICAgY2hpbGRyZW46IHoucmVjb3JkKHouc3RyaW5nKCksIHouYW55KCkpLFxuICAgIH0pXG4gICAgLnJlcXVpcmVkKCksXG59KTtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgZ2l2ZW4gYGltcGxgIG9iamVjdCB0byBtYXRjaCBwYXR0ZXJuLlxuICovXG5leHBvcnQgY29uc3QgdmFsaWRhdGVJbXBsID0gKGltcGw6IEltcGwpID0+IHtcbiAgY29uc3QgdmFsaWRhdGVkSW1wbCA9IGltcGxWYWxpZGF0aW9uLnNhZmVQYXJzZShpbXBsKTtcblxuICBpZiAoIXZhbGlkYXRlZEltcGwuc3VjY2Vzcykge1xuICAgIGNvbnN0IHByZXR0aWZ5RXJyb3JNZXNzYWdlID0gKGlzc3Vlczogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBpc3N1ZXNBcnJheSA9IEpTT04ucGFyc2UoaXNzdWVzKTtcblxuICAgICAgcmV0dXJuIGlzc3Vlc0FycmF5Lm1hcCgoaXNzdWU6IFpvZElzc3VlKSA9PiB7XG4gICAgICAgIGNvbnN0IHtjb2RlLCBwYXRoLCBtZXNzYWdlfSA9IGlzc3VlO1xuICAgICAgICBjb25zdCBmbGF0dGVuUGF0aCA9IHBhdGgubWFwKHBhcnQgPT5cbiAgICAgICAgICB0eXBlb2YgcGFydCA9PT0gJ251bWJlcicgPyBgWyR7cGFydH1dYCA6IHBhcnRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZnVsbFBhdGggPSBmbGF0dGVuUGF0aC5qb2luKCcuJyk7XG5cbiAgICAgICAgcmV0dXJuIGBcIiR7ZnVsbFBhdGh9XCIgcGFyYW1ldGVyIGlzICR7bWVzc2FnZS50b0xvd2VyQ2FzZSgpfS4gRXJyb3IgY29kZTogJHtjb2RlfS5gO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHRocm93IG5ldyBJbXBsVmFsaWRhdGlvbkVycm9yKFxuICAgICAgcHJldHRpZnlFcnJvck1lc3NhZ2UodmFsaWRhdGVkSW1wbC5lcnJvci5tZXNzYWdlKVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVkSW1wbC5kYXRhO1xufTtcbiJdfQ==
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC92YWxpZGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBZ0M7QUFFaEMscUNBQWdDO0FBRWhDLG9EQUF3RDtBQUN4RCxvREFBc0Q7QUFHdEQsTUFBTSxFQUFDLG1CQUFtQixFQUFDLEdBQUcsZUFBTSxDQUFDO0FBRXJDOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM5QixJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNoQixZQUFZLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM5QyxXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNsQyxXQUFXLEVBQUUsT0FBQztTQUNYLE1BQU0sQ0FBQztRQUNOLE9BQU8sRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM1QixJQUFJLEVBQUUsT0FBQyxDQUFDLElBQUksQ0FBQyxnQ0FBbUIsQ0FBQztLQUNsQyxDQUFDO1NBQ0QsUUFBUSxFQUFFO0lBQ2IsTUFBTSxFQUFFLE9BQUM7U0FDTixLQUFLLENBQ0osT0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNQLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1FBQ2hCLFdBQVcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1FBQ3ZCLFdBQVcsRUFBRSxPQUFDLENBQUMsSUFBSSxDQUFDLDhCQUFpQixDQUFDO1FBQ3RDLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO0tBQ2pCLENBQUMsQ0FDSDtTQUNBLFFBQVEsRUFBRTtTQUNWLFFBQVEsRUFBRTtJQUNiLElBQUksRUFBRSxPQUFDO1NBQ0osTUFBTSxDQUFDO1FBQ04sSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7UUFDM0IsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7UUFDakMsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7S0FDaEMsQ0FBQztTQUNELFFBQVEsRUFBRTtJQUNiLFVBQVUsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDO1FBQ25CLE1BQU0sRUFBRSxPQUFDLENBQUMsS0FBSyxDQUNiLE9BQUMsQ0FBQyxNQUFNLENBQUM7WUFDUCxJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtZQUNoQixJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtZQUNoQixLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtZQUNqQixNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO1NBQ2pELENBQUMsQ0FDSDtLQUNGLENBQUM7SUFDRixLQUFLLEVBQUUsT0FBQztTQUNMLE1BQU0sQ0FBQztRQUNOLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDeEMsQ0FBQztTQUNELFFBQVEsRUFBRTtDQUNkLENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0ksTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFVLEVBQUUsRUFBRTtJQUN6QyxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXJELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFO1FBQzFCLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtZQUM5QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRXZDLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQWUsRUFBRSxFQUFFO2dCQUN6QyxNQUFNLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ3BDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDbEMsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzlDLENBQUM7Z0JBQ0YsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFdkMsT0FBTyxJQUFJLFFBQVEsa0JBQWtCLE9BQU8sQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLElBQUksR0FBRyxDQUFDO1lBQ3JGLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBRUYsTUFBTSxJQUFJLG1CQUFtQixDQUMzQixvQkFBb0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUNsRCxDQUFDO0tBQ0g7SUFFRCxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBeEJXLFFBQUEsWUFBWSxnQkF3QnZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtab2RJc3N1ZSwgen0gZnJvbSAnem9kJztcblxuaW1wb3J0IHtFUlJPUlN9IGZyb20gJy4vZXJyb3JzJztcblxuaW1wb3J0IHtBR0dSRUdBVElPTl9NRVRIT0RTfSBmcm9tICcuLi90eXBlcy9hZ2dyZWdhdG9yJztcbmltcG9ydCB7QUdHUkVHQVRJT05fVFlQRVN9IGZyb20gJy4uL3R5cGVzL3BhcmFtZXRlcnMnO1xuaW1wb3J0IHtJbXBsfSBmcm9tICcuLi90eXBlcy9pbXBsJztcblxuY29uc3Qge0ltcGxWYWxpZGF0aW9uRXJyb3J9ID0gRVJST1JTO1xuXG4vKipcbiAqIFZhbGlkYXRpb24gc2NoZW1hIGZvciBpbXBsIGZpbGVzLlxuICovXG5jb25zdCBpbXBsVmFsaWRhdGlvbiA9IHoub2JqZWN0KHtcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgJ2lmLXZlcnNpb24nOiB6LnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgYWdncmVnYXRpb246IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIG1ldHJpY3M6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gICAgICB0eXBlOiB6LmVudW0oQUdHUkVHQVRJT05fTUVUSE9EUyksXG4gICAgfSlcbiAgICAub3B0aW9uYWwoKSxcbiAgcGFyYW1zOiB6XG4gICAgLmFycmF5KFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBuYW1lOiB6LnN0cmluZygpLFxuICAgICAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKSxcbiAgICAgICAgYWdncmVnYXRpb246IHouZW51bShBR0dSRUdBVElPTl9UWVBFUyksXG4gICAgICAgIHVuaXQ6IHouc3RyaW5nKCksXG4gICAgICB9KVxuICAgIClcbiAgICAub3B0aW9uYWwoKVxuICAgIC5udWxsYWJsZSgpLFxuICB0YWdzOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBraW5kOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjb21wbGV4aXR5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjYXRlZ29yeTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLm51bGxhYmxlKCksXG4gIGluaXRpYWxpemU6IHoub2JqZWN0KHtcbiAgICBtb2RlbHM6IHouYXJyYXkoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIG5hbWU6IHouc3RyaW5nKCksXG4gICAgICAgIHBhdGg6IHouc3RyaW5nKCksXG4gICAgICAgIG1vZGVsOiB6LnN0cmluZygpLFxuICAgICAgICBjb25maWc6IHoucmVjb3JkKHouc3RyaW5nKCksIHouYW55KCkpLm9wdGlvbmFsKCksXG4gICAgICB9KVxuICAgICksXG4gIH0pLFxuICBncmFwaDogelxuICAgIC5vYmplY3Qoe1xuICAgICAgY2hpbGRyZW46IHoucmVjb3JkKHouc3RyaW5nKCksIHouYW55KCkpLFxuICAgIH0pXG4gICAgLnJlcXVpcmVkKCksXG59KTtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgZ2l2ZW4gYGltcGxgIG9iamVjdCB0byBtYXRjaCBwYXR0ZXJuLlxuICovXG5leHBvcnQgY29uc3QgdmFsaWRhdGVJbXBsID0gKGltcGw6IEltcGwpID0+IHtcbiAgY29uc3QgdmFsaWRhdGVkSW1wbCA9IGltcGxWYWxpZGF0aW9uLnNhZmVQYXJzZShpbXBsKTtcblxuICBpZiAoIXZhbGlkYXRlZEltcGwuc3VjY2Vzcykge1xuICAgIGNvbnN0IHByZXR0aWZ5RXJyb3JNZXNzYWdlID0gKGlzc3Vlczogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBpc3N1ZXNBcnJheSA9IEpTT04ucGFyc2UoaXNzdWVzKTtcblxuICAgICAgcmV0dXJuIGlzc3Vlc0FycmF5Lm1hcCgoaXNzdWU6IFpvZElzc3VlKSA9PiB7XG4gICAgICAgIGNvbnN0IHtjb2RlLCBwYXRoLCBtZXNzYWdlfSA9IGlzc3VlO1xuICAgICAgICBjb25zdCBmbGF0dGVuUGF0aCA9IHBhdGgubWFwKHBhcnQgPT5cbiAgICAgICAgICB0eXBlb2YgcGFydCA9PT0gJ251bWJlcicgPyBgWyR7cGFydH1dYCA6IHBhcnRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZnVsbFBhdGggPSBmbGF0dGVuUGF0aC5qb2luKCcuJyk7XG5cbiAgICAgICAgcmV0dXJuIGBcIiR7ZnVsbFBhdGh9XCIgcGFyYW1ldGVyIGlzICR7bWVzc2FnZS50b0xvd2VyQ2FzZSgpfS4gRXJyb3IgY29kZTogJHtjb2RlfS5gO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHRocm93IG5ldyBJbXBsVmFsaWRhdGlvbkVycm9yKFxuICAgICAgcHJldHRpZnlFcnJvck1lc3NhZ2UodmFsaWRhdGVkSW1wbC5lcnJvci5tZXNzYWdlKVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVkSW1wbC5kYXRhO1xufTtcbiJdfQ==
@@ -1,9 +1,32 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  exports.checkIfFileIsYaml = exports.saveYamlFileAs = exports.openYamlFileAsObject = void 0;
4
- const fs = require("fs/promises");
5
- const path = require("path");
6
- const YAML = require("js-yaml");
27
+ const fs = __importStar(require("fs/promises"));
28
+ const path = __importStar(require("path"));
29
+ const YAML = __importStar(require("js-yaml"));
7
30
  /**
8
31
  * Reads and parses `yaml` file to object.
9
32
  */
@@ -33,4 +56,4 @@ const checkIfFileIsYaml = (fileName) => {
33
56
  return yamlFileTypes.includes(extension);
34
57
  };
35
58
  exports.checkIfFileIsYaml = checkIfFileIsYaml;
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3lhbWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0NBQWtDO0FBQ2xDLDZCQUE2QjtBQUU3QixnQ0FBZ0M7QUFFaEM7O0dBRUc7QUFDSSxNQUFNLG9CQUFvQixHQUFHLEtBQUssRUFBSyxRQUFnQixFQUFjLEVBQUU7SUFDNUUsTUFBTSxjQUFjLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUUzRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFNLENBQUM7QUFDeEMsQ0FBQyxDQUFDO0FBSlcsUUFBQSxvQkFBb0Isd0JBSS9CO0FBRUY7O0dBRUc7QUFDSSxNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQUUsTUFBVyxFQUFFLFVBQWtCLEVBQUUsRUFBRTtJQUN0RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUMzQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBRXJELE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDOUMsQ0FBQyxDQUFDO0FBTlcsUUFBQSxjQUFjLGtCQU16QjtBQUVGOztHQUVHO0FBQ0ksTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtJQUNwRCxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUUzQyxPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBUFcsUUFBQSxpQkFBaUIscUJBTzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0ICogYXMgWUFNTCBmcm9tICdqcy15YW1sJztcblxuLyoqXG4gKiBSZWFkcyBhbmQgcGFyc2VzIGB5YW1sYCBmaWxlIHRvIG9iamVjdC5cbiAqL1xuZXhwb3J0IGNvbnN0IG9wZW5ZYW1sRmlsZUFzT2JqZWN0ID0gYXN5bmMgPFQ+KGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3QgeWFtbEZpbGVCdWZmZXIgPSBhd2FpdCBmcy5yZWFkRmlsZShmaWxlUGF0aCwgJ3V0ZjgnKTtcblxuICByZXR1cm4gWUFNTC5sb2FkKHlhbWxGaWxlQnVmZmVyKSBhcyBUO1xufTtcblxuLyoqXG4gKiBTYXZlcyBnaXZlbiBgeWFtbGAgZHVtcCBhcyBhIGZpbGUuXG4gKi9cbmV4cG9ydCBjb25zdCBzYXZlWWFtbEZpbGVBcyA9IGFzeW5jIChvYmplY3Q6IGFueSwgcGF0aFRvRmlsZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGRpclBhdGggPSBwYXRoLmRpcm5hbWUocGF0aFRvRmlsZSk7XG4gIGF3YWl0IGZzLm1rZGlyKGRpclBhdGgsIHtyZWN1cnNpdmU6IHRydWV9KTtcbiAgY29uc3QgeWFtbFN0cmluZyA9IFlBTUwuZHVtcChvYmplY3QsIHtub1JlZnM6IHRydWV9KTtcblxuICByZXR1cm4gZnMud3JpdGVGaWxlKHBhdGhUb0ZpbGUsIHlhbWxTdHJpbmcpO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgZ2l2ZW4gYGZpbGVOYW1lYCBpcyB5YW1sLlxuICovXG5leHBvcnQgY29uc3QgY2hlY2tJZkZpbGVJc1lhbWwgPSAoZmlsZU5hbWU6IHN0cmluZykgPT4ge1xuICBjb25zdCB5YW1sRmlsZVR5cGVzID0gWyd5YW1sJywgJ3ltbCddO1xuICBjb25zdCBzcGxpdHRlZFBhcnRzID0gZmlsZU5hbWUuc3BsaXQoJy4nKTtcbiAgY29uc3QgbGFzdEluZGV4ID0gc3BsaXR0ZWRQYXJ0cy5sZW5ndGggLSAxO1xuICBjb25zdCBleHRlbnNpb24gPSBzcGxpdHRlZFBhcnRzW2xhc3RJbmRleF07XG5cbiAgcmV0dXJuIHlhbWxGaWxlVHlwZXMuaW5jbHVkZXMoZXh0ZW5zaW9uKTtcbn07XG4iXX0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3lhbWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnREFBa0M7QUFDbEMsMkNBQTZCO0FBRTdCLDhDQUFnQztBQUVoQzs7R0FFRztBQUNJLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxFQUFLLFFBQWdCLEVBQWMsRUFBRTtJQUM1RSxNQUFNLGNBQWMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQU0sQ0FBQztBQUN4QyxDQUFDLENBQUM7QUFKVyxRQUFBLG9CQUFvQix3QkFJL0I7QUFFRjs7R0FFRztBQUNJLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFBRSxNQUFXLEVBQUUsVUFBa0IsRUFBRSxFQUFFO0lBQ3RFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFFckQsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQUM7QUFOVyxRQUFBLGNBQWMsa0JBTXpCO0FBRUY7O0dBRUc7QUFDSSxNQUFNLGlCQUFpQixHQUFHLENBQUMsUUFBZ0IsRUFBRSxFQUFFO0lBQ3BELE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUMsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDM0MsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTNDLE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFQVyxRQUFBLGlCQUFpQixxQkFPNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcy9wcm9taXNlcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgKiBhcyBZQU1MIGZyb20gJ2pzLXlhbWwnO1xuXG4vKipcbiAqIFJlYWRzIGFuZCBwYXJzZXMgYHlhbWxgIGZpbGUgdG8gb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3Qgb3BlbllhbWxGaWxlQXNPYmplY3QgPSBhc3luYyA8VD4oZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCB5YW1sRmlsZUJ1ZmZlciA9IGF3YWl0IGZzLnJlYWRGaWxlKGZpbGVQYXRoLCAndXRmOCcpO1xuXG4gIHJldHVybiBZQU1MLmxvYWQoeWFtbEZpbGVCdWZmZXIpIGFzIFQ7XG59O1xuXG4vKipcbiAqIFNhdmVzIGdpdmVuIGB5YW1sYCBkdW1wIGFzIGEgZmlsZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNhdmVZYW1sRmlsZUFzID0gYXN5bmMgKG9iamVjdDogYW55LCBwYXRoVG9GaWxlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgZGlyUGF0aCA9IHBhdGguZGlybmFtZShwYXRoVG9GaWxlKTtcbiAgYXdhaXQgZnMubWtkaXIoZGlyUGF0aCwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuICBjb25zdCB5YW1sU3RyaW5nID0gWUFNTC5kdW1wKG9iamVjdCwge25vUmVmczogdHJ1ZX0pO1xuXG4gIHJldHVybiBmcy53cml0ZUZpbGUocGF0aFRvRmlsZSwgeWFtbFN0cmluZyk7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiBnaXZlbiBgZmlsZU5hbWVgIGlzIHlhbWwuXG4gKi9cbmV4cG9ydCBjb25zdCBjaGVja0lmRmlsZUlzWWFtbCA9IChmaWxlTmFtZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHlhbWxGaWxlVHlwZXMgPSBbJ3lhbWwnLCAneW1sJ107XG4gIGNvbnN0IHNwbGl0dGVkUGFydHMgPSBmaWxlTmFtZS5zcGxpdCgnLicpO1xuICBjb25zdCBsYXN0SW5kZXggPSBzcGxpdHRlZFBhcnRzLmxlbmd0aCAtIDE7XG4gIGNvbnN0IGV4dGVuc2lvbiA9IHNwbGl0dGVkUGFydHNbbGFzdEluZGV4XTtcblxuICByZXR1cm4geWFtbEZpbGVUeXBlcy5pbmNsdWRlcyhleHRlbnNpb24pO1xufTtcbiJdfQ==
@@ -1,8 +1,8 @@
1
1
  name: nesting-demo
2
2
  description:
3
3
  aggregation:
4
- metrics: ['carbon', 'energy']
5
- type: 'horizontal'
4
+ metrics: ["carbon", "energy"]
5
+ type: "horizontal"
6
6
  tags:
7
7
  kind: web
8
8
  complexity: moderate
@@ -39,14 +39,14 @@ graph:
39
39
  sci-m:
40
40
  total-embodied-emissions: 251000 # gCO2eq
41
41
  time-reserved: 3600 # 1 hour in s
42
- expected-lifespan: 126144000 # 4 years in seconds
43
- resources-reserved: 1
44
- total-resources: 1
42
+ expected-lifespan: 126144000 # 4 years in seconds
43
+ resources-reserved: 1
44
+ total-resources: 1
45
45
  sci-o:
46
46
  grid-carbon-intensity: 457 # gCO2/kwh
47
47
  sci:
48
- functional-unit-duration: 1
49
- functional-duration-time: ''
48
+ functional-unit-time: 1 minute
49
+ functional-duration-time: ""
50
50
  functional-unit: requests # factor to convert per time to per f.unit
51
51
  children:
52
52
  child-1:
@@ -54,56 +54,56 @@ graph:
54
54
  - timestamp: 2023-07-06T00:00
55
55
  duration: 10
56
56
  cpu-util: 10
57
- e-net: 0.000811 #kwh
57
+ e-net: 0.000811 #kwh
58
58
  requests: 380
59
59
  - timestamp: 2023-07-06T00:10
60
60
  duration: 10
61
61
  cpu-util: 10
62
- e-net: 0.000811 #kwh
62
+ e-net: 0.000811 #kwh
63
63
  requests: 380
64
64
  - timestamp: 2023-07-06T00:20
65
65
  duration: 10
66
66
  cpu-util: 10
67
- e-net: 0.000811 #kwh
67
+ e-net: 0.000811 #kwh
68
68
  requests: 380
69
69
  - timestamp: 2023-07-06T00:30
70
70
  duration: 10
71
71
  cpu-util: 10
72
- e-net: 0.000811 #kwh
72
+ e-net: 0.000811 #kwh
73
73
  requests: 380
74
74
  child-2:
75
75
  inputs:
76
76
  - timestamp: 2023-07-06T00:00
77
77
  duration: 10
78
78
  cpu-util: 20
79
- e-net: 0.000811 #kwh
79
+ e-net: 0.000811 #kwh
80
80
  requests: 380
81
81
  - timestamp: 2023-07-06T00:10
82
82
  duration: 10
83
83
  cpu-util: 30
84
- e-net: 0.000811 #kwh
84
+ e-net: 0.000811 #kwh
85
85
  requests: 380
86
86
  - timestamp: 2023-07-06T00:20
87
87
  duration: 10
88
88
  cpu-util: 40
89
- e-net: 0.000811 #kwh
89
+ e-net: 0.000811 #kwh
90
90
  requests: 380
91
91
  - timestamp: 2023-07-06T00:30
92
92
  duration: 10
93
93
  cpu-util: 50
94
- e-net: 0.000811 #kwh
94
+ e-net: 0.000811 #kwh
95
95
  requests: 380
96
96
  child-3:
97
- inputs:
97
+ inputs:
98
98
  - timestamp: 2023-07-06T00:00
99
99
  duration: 10
100
100
  cpu-util: 10
101
- e-net: 0.000811 #kwh
101
+ e-net: 0.000811 #kwh
102
102
  requests: 380
103
103
  child-4:
104
- inputs:
104
+ inputs:
105
105
  - timestamp: 2023-07-06T00:00
106
106
  duration: 10
107
107
  cpu-util: 10
108
- e-net: 0.000811 #kwh
108
+ e-net: 0.000811 #kwh
109
109
  requests: 380