@grnsft/if 0.1.5 → 0.1.7

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 (38) hide show
  1. package/CONTRIBUTING.md +1 -1
  2. package/README.md +1 -34
  3. package/build/config/units.yaml +112 -0
  4. package/build/index.js +2 -2
  5. package/coverage/clover.xml +396 -0
  6. package/coverage/coverage-final.json +14 -0
  7. package/coverage/lcov-report/base.css +224 -0
  8. package/coverage/lcov-report/block-navigation.js +87 -0
  9. package/coverage/lcov-report/config/config.ts.html +256 -0
  10. package/coverage/lcov-report/config/index.html +146 -0
  11. package/coverage/lcov-report/config/index.ts.html +91 -0
  12. package/coverage/lcov-report/config/strings.ts.html +196 -0
  13. package/coverage/lcov-report/favicon.png +0 -0
  14. package/coverage/lcov-report/index.html +161 -0
  15. package/coverage/lcov-report/lib/index.html +161 -0
  16. package/coverage/lcov-report/lib/models-universe.ts.html +517 -0
  17. package/coverage/lcov-report/lib/observatory.ts.html +187 -0
  18. package/coverage/lcov-report/lib/planet-aggregator.ts.html +244 -0
  19. package/coverage/lcov-report/lib/supercomputer.ts.html +712 -0
  20. package/coverage/lcov-report/models/index.html +131 -0
  21. package/coverage/lcov-report/models/index.ts.html +88 -0
  22. package/coverage/lcov-report/models/time-sync.ts.html +1153 -0
  23. package/coverage/lcov-report/prettify.css +1 -0
  24. package/coverage/lcov-report/prettify.js +2 -0
  25. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  26. package/coverage/lcov-report/sorter.js +196 -0
  27. package/coverage/lcov-report/util/args.ts.html +289 -0
  28. package/coverage/lcov-report/util/errors.ts.html +166 -0
  29. package/coverage/lcov-report/util/index.html +161 -0
  30. package/coverage/lcov-report/util/units-dealer.ts.html +199 -0
  31. package/coverage/lcov-report/util/yaml.ts.html +193 -0
  32. package/coverage/lcov.info +666 -0
  33. package/examples/impls/test/e-net.yml +21 -0
  34. package/grafana/IF_GRAFANA_SETUP.md +71 -0
  35. package/grafana/if_grafana_config.json +370 -0
  36. package/package.json +4 -4
  37. package/src/config/units.yaml +1 -1
  38. package/examples/ompls/test/time-sync.yml +0 -255
package/CONTRIBUTING.md CHANGED
@@ -60,7 +60,7 @@ Add and commit:
60
60
 
61
61
  Commit your changes in logical chunks. Please do not push all changes in one commit.
62
62
 
63
- > Run `yarn fix` before commiting for not having conflict with CI linter.
63
+ > Run `npm run fix` before commiting for not having conflict with CI linter.
64
64
 
65
65
  Please adhere to these [Commit message guidelines](#commit-message-guidelines)
66
66
  or your code is unlikely be merged into the main project.
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  **Welcome to [CarbonHack 24](https://grnsft.org/hack/github) from the Green Software Foundation.**
8
8
 
9
- > From Monday, February 26 - Friday, March 15, 2024, participants will compete to showcase their best application of IF in measuring the environmental impacts of software.
9
+ > From Monday, 18th March - Monday, 8th April 2024, participants will compete to showcase their best application of IF in measuring the environmental impacts of software.
10
10
  >
11
11
  > Carbon Hack is a dynamic competition that combines healthy rivalry with collaborative innovation. Hackers will push the limits of the framework, uncover potential weaknesses, and create innovations to enhance the tool.
12
12
  >
@@ -72,39 +72,6 @@ impact-engine --impl <path-to-your-impl-file> --ompl <your-savepath>
72
72
 
73
73
  The `impact-engine` CLI tool will configure and run the models defined in your input `yaml` (`impl`) and return the results as an output `yaml` (`ompl`).
74
74
 
75
- ### Alternate version
76
-
77
- Start by cloning repository locally:
78
-
79
- ```sh
80
- git clone https://github.com/Green-Software-Foundation/if
81
-
82
- cd if
83
-
84
- yarn install
85
- ```
86
-
87
- Then installing some models:
88
-
89
- ```sh
90
- yarn add "@grnsft/if-models"
91
- ```
92
-
93
- Then create an `impl` file that describes your application (see our docs for a detailed explanation).
94
-
95
- Then, run `impact-engine` using the following command:
96
-
97
- ```sh
98
- yarn impact-engine -- --impl <path-to-your-impl-file>
99
- ```
100
-
101
- You can also add an optional savepath for your output yaml (if you do not provide one, the output will be printed to the console):
102
-
103
- ```sh
104
- yarn impact-engine -- --impl <path-to-your-impl-file> --ompl <your-savepath>
105
- ```
106
-
107
- The `impact-engine` CLI tool will configure and run the models defined in your input `yaml` (`impl`) and return the results as an output `yaml` (`ompl`).
108
75
 
109
76
  ## Documentation
110
77
 
@@ -0,0 +1,112 @@
1
+ carbon:
2
+ description: an amount of carbon emitted into the atmosphere
3
+ unit: gCO2e
4
+ aggregation: sum
5
+ core-units:
6
+ description: number of cores available
7
+ unit: cores
8
+ aggregation: none
9
+ cpu-util:
10
+ description: refers to CPU utilization.
11
+ unit: percentage
12
+ aggregation: avg
13
+ disk-io:
14
+ description: refers to GB of data written/read from disk
15
+ unit: GB
16
+ aggregation: sum
17
+ duration:
18
+ description: refers to the duration of the input
19
+ unit: seconds
20
+ aggregation: sum
21
+ energy:
22
+ description: amount of energy utilised by the component
23
+ unit: kWh
24
+ aggregation: sum
25
+ energy-cpu:
26
+ description: Energy consumed by the CPU of the component
27
+ unit: kWh
28
+ aggregation: sum
29
+ expected-lifespan:
30
+ description: Total Expected Lifespan of the Component in Seconds
31
+ unit: seconds
32
+ aggregation: sum
33
+ energy-memory:
34
+ description: Energy consumed by the Memory of the component
35
+ unit: kWh
36
+ aggregation: sum
37
+ embodied-carbon:
38
+ description: Embodied Emissions of the component
39
+ unit: gCO2e
40
+ aggregation: sum
41
+ energy-network:
42
+ description: Energy consumed by the Network of the component
43
+ unit: kWh
44
+ aggregation: sum
45
+ functional-unit:
46
+ description: the name of the functional unit in which the final SCI value should be expressed, e.g. requests, users
47
+ unit: none
48
+ aggregation: sum
49
+ functional-unit-time:
50
+ description: string describing the unit of time in which the final SCI calculation should be expressed, e.g. "1-min"
51
+ unit: none
52
+ aggregation: none
53
+ gpu-util:
54
+ description: refers to CPU utilization.
55
+ unit: percentage
56
+ aggregation: avg
57
+ grid-carbon-intensity:
58
+ description: Carbon intensity for the grid
59
+ unit: gCO2eq/kWh
60
+ aggregation: avg
61
+ instance-type:
62
+ description: Type of Cloud Instance name used in the cloud provider APIs
63
+ unit: None
64
+ aggregation: None
65
+ location:
66
+ description: Geographic location of provider as string (for watt-time model it is provided as latitude and longitude, comma separated, in decimal degrees)
67
+ unit: None (decimal degrees for watt-time model)
68
+ aggregation: None
69
+ operational-carbon:
70
+ description: Operational Emissions of the component
71
+ unit: gCO2e
72
+ aggregation: sum
73
+ physical-processor:
74
+ description: Name of the physical processor
75
+ unit: None
76
+ aggregation: none
77
+ vendor:
78
+ description: Name of the cloud service provider in the ccf model. Can be aws, gcp or azure
79
+ unit: None
80
+ aggregation: none
81
+ ram-alloc:
82
+ description: refers to GB of memory allocated.
83
+ unit: GB
84
+ aggregation: avg
85
+ ram-util:
86
+ description: refers to percentage of memory utilized.
87
+ unit: percentage
88
+ aggregation: avg
89
+ resources-reserved:
90
+ description: resources reserved for an application
91
+ unit: count
92
+ aggregation: none
93
+ thermal-design-power:
94
+ description: thermal design power for a processor
95
+ unit: kwh
96
+ aggregation: avg
97
+ total-embodied-emissions:
98
+ description: total embodied emissions of some component
99
+ unit: gCO2e
100
+ aggregation: sum
101
+ timestamp:
102
+ description: refers to the time of occurrence of the input
103
+ unit: RFC3339
104
+ aggregation: none
105
+ time-reserved:
106
+ description: time reserved for a component
107
+ unit: seconds
108
+ aggregation: none
109
+ total-resources:
110
+ description: total resources available
111
+ unit: count
112
+ aggregation: none
package/build/index.js CHANGED
@@ -18,7 +18,7 @@ const { DISCLAIMER_MESSAGE, SOMETHING_WRONG } = config_1.STRINGS;
18
18
  * 4. Initializes requested models.
19
19
  * 5. Initializes graph, does computing.
20
20
  * 6. Saves processed object as a yaml file.
21
- * @example run `yarn impact-engine --impl ./test.yml --ompl ./result.yml`
21
+ * @example run `npm run impact-engine -- --impl ./test.yml --ompl ./result.yml`
22
22
  */
23
23
  const impactEngine = async () => {
24
24
  console.log(DISCLAIMER_MESSAGE);
@@ -50,4 +50,4 @@ const impactEngine = async () => {
50
50
  return Promise.reject(new CliInputError(SOMETHING_WRONG));
51
51
  };
52
52
  impactEngine().catch(helpers_1.andHandle);
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMkRBQXFEO0FBQ3JELHVEQUFrRDtBQUVsRCxzQ0FBaUQ7QUFDakQsMENBQXFDO0FBQ3JDLDRDQUF5QztBQUN6QyxvREFBZ0Q7QUFDaEQsc0NBQWlFO0FBRWpFLHFDQUFpQztBQUlqQyxNQUFNLEVBQUMsYUFBYSxFQUFDLEdBQUcsZUFBTSxDQUFDO0FBRS9CLE1BQU0sRUFBQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXREOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxZQUFZLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRWhDLE1BQU0sYUFBYSxHQUFHLElBQUEsMkJBQW9CLEdBQUUsQ0FBQztJQUU3QyxJQUFJLGFBQWEsRUFBRTtRQUNqQixNQUFNLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBQyxHQUFHLGFBQWEsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUEsMkJBQW9CLEVBQU8sU0FBUyxDQUFDLENBQUM7UUFFNUQsdUJBQXVCO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUEsMEJBQVksRUFBQyxPQUFPLENBQUMsQ0FBQztRQUVuQyw4QkFBOEI7UUFDOUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxnQ0FBYyxFQUFFLENBQUM7UUFDNUMsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUMxQyxNQUFNLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkM7UUFFRCxzQkFBc0I7UUFDdEIsTUFBTSxNQUFNLEdBQUcsSUFBSSw2QkFBYSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN2RCxNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVwQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsWUFBWSxDQUFDO1NBQzNDO1FBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE9BQU87U0FDUjtRQUVELE1BQU0sSUFBQSxxQkFBYyxFQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV2QyxPQUFPO0tBQ1I7SUFFRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDLENBQUM7QUFFRixZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUMsbUJBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHtNb2RlbHNVbml2ZXJzZX0gZnJvbSAnLi9saWIvbW9kZWxzLXVuaXZlcnNlJztcbmltcG9ydCB7U3VwZXJjb21wdXRlcn0gZnJvbSAnLi9saWIvc3VwZXJjb21wdXRlcic7XG5cbmltcG9ydCB7cGFyc2VQcm9jZXNzQXJndW1lbnR9IGZyb20gJy4vdXRpbC9hcmdzJztcbmltcG9ydCB7RVJST1JTfSBmcm9tICcuL3V0aWwvZXJyb3JzJztcbmltcG9ydCB7YW5kSGFuZGxlfSBmcm9tICcuL3V0aWwvaGVscGVycyc7XG5pbXBvcnQge3ZhbGlkYXRlSW1wbH0gZnJvbSAnLi91dGlsL3ZhbGlkYXRpb25zJztcbmltcG9ydCB7b3BlbllhbWxGaWxlQXNPYmplY3QsIHNhdmVZYW1sRmlsZUFzfSBmcm9tICcuL3V0aWwveWFtbCc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi9jb25maWcnO1xuXG5pbXBvcnQge0ltcGx9IGZyb20gJy4vdHlwZXMvaW1wbCc7XG5cbmNvbnN0IHtDbGlJbnB1dEVycm9yfSA9IEVSUk9SUztcblxuY29uc3Qge0RJU0NMQUlNRVJfTUVTU0FHRSwgU09NRVRISU5HX1dST05HfSA9IFNUUklOR1M7XG5cbi8qKlxuICogMS4gUGFyc2VzIHltbCBpbnB1dC9vdXRwdXQgcHJvY2VzcyBhcmd1bWVudHMuXG4gKiAyLiBPcGVucyB5YW1sIGZpbGUgYXMgYW4gb2JqZWN0LlxuICogMy4gVmFsaWRhdGVzIGdpdmVuIGltcGwgdG8gbWF0Y2ggYmFzaWMgc3RydWN0dXJlLlxuICogNC4gSW5pdGlhbGl6ZXMgcmVxdWVzdGVkIG1vZGVscy5cbiAqIDUuIEluaXRpYWxpemVzIGdyYXBoLCBkb2VzIGNvbXB1dGluZy5cbiAqIDYuIFNhdmVzIHByb2Nlc3NlZCBvYmplY3QgYXMgYSB5YW1sIGZpbGUuXG4gKiBAZXhhbXBsZSBydW4gYHlhcm4gaW1wYWN0LWVuZ2luZSAtLWltcGwgLi90ZXN0LnltbCAtLW9tcGwgLi9yZXN1bHQueW1sYFxuICovXG5jb25zdCBpbXBhY3RFbmdpbmUgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnNvbGUubG9nKERJU0NMQUlNRVJfTUVTU0FHRSk7XG5cbiAgY29uc3QgcHJvY2Vzc1BhcmFtcyA9IHBhcnNlUHJvY2Vzc0FyZ3VtZW50KCk7XG5cbiAgaWYgKHByb2Nlc3NQYXJhbXMpIHtcbiAgICBjb25zdCB7aW5wdXRQYXRoLCBvdXRwdXRQYXRofSA9IHByb2Nlc3NQYXJhbXM7XG4gICAgY29uc3QgcmF3SW1wbCA9IGF3YWl0IG9wZW5ZYW1sRmlsZUFzT2JqZWN0PEltcGw+KGlucHV0UGF0aCk7XG5cbiAgICAvLyBMaWZlY3ljbGUgVmFsaWRhdGlvblxuICAgIGNvbnN0IGltcGwgPSB2YWxpZGF0ZUltcGwocmF3SW1wbCk7XG5cbiAgICAvLyBMaWZlY3ljbGUgSW5pdGlhbGl6ZSBNb2RlbHNcbiAgICBjb25zdCBtb2RlbHNIYW5kYm9vayA9IG5ldyBNb2RlbHNVbml2ZXJzZSgpO1xuICAgIGZvciAoY29uc3QgbW9kZWwgb2YgaW1wbC5pbml0aWFsaXplLm1vZGVscykge1xuICAgICAgYXdhaXQgbW9kZWxzSGFuZGJvb2sud3JpdGVEb3duKG1vZGVsKTtcbiAgICB9XG5cbiAgICAvLyBMaWZlY3ljbGUgQ29tcHV0aW5nXG4gICAgY29uc3QgZW5naW5lID0gbmV3IFN1cGVyY29tcHV0ZXIoaW1wbCwgbW9kZWxzSGFuZGJvb2spO1xuICAgIGNvbnN0IG9tcGwgPSBhd2FpdCBlbmdpbmUuY29tcHV0ZSgpO1xuXG4gICAgaWYgKGltcGwuYWdncmVnYXRpb24pIHtcbiAgICAgIGNvbnN0IGFnZ3JlZ2F0aW9ucyA9IGVuZ2luZS5jYWxjdWxhdGVBZ2dyZWdhdGlvbigpO1xuICAgICAgb21wbFsnYWdncmVnYXRlZC1vdXRwdXRzJ10gPSBhZ2dyZWdhdGlvbnM7XG4gICAgfVxuXG4gICAgaWYgKCFvdXRwdXRQYXRoKSB7XG4gICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShvbXBsKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgc2F2ZVlhbWxGaWxlQXMob21wbCwgb3V0cHV0UGF0aCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IENsaUlucHV0RXJyb3IoU09NRVRISU5HX1dST05HKSk7XG59O1xuXG5pbXBhY3RFbmdpbmUoKS5jYXRjaChhbmRIYW5kbGUpO1xuIl19
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMkRBQXFEO0FBQ3JELHVEQUFrRDtBQUVsRCxzQ0FBaUQ7QUFDakQsMENBQXFDO0FBQ3JDLDRDQUF5QztBQUN6QyxvREFBZ0Q7QUFDaEQsc0NBQWlFO0FBRWpFLHFDQUFpQztBQUlqQyxNQUFNLEVBQUMsYUFBYSxFQUFDLEdBQUcsZUFBTSxDQUFDO0FBRS9CLE1BQU0sRUFBQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXREOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxZQUFZLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRWhDLE1BQU0sYUFBYSxHQUFHLElBQUEsMkJBQW9CLEdBQUUsQ0FBQztJQUU3QyxJQUFJLGFBQWEsRUFBRTtRQUNqQixNQUFNLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBQyxHQUFHLGFBQWEsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUEsMkJBQW9CLEVBQU8sU0FBUyxDQUFDLENBQUM7UUFFNUQsdUJBQXVCO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUEsMEJBQVksRUFBQyxPQUFPLENBQUMsQ0FBQztRQUVuQyw4QkFBOEI7UUFDOUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxnQ0FBYyxFQUFFLENBQUM7UUFDNUMsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUMxQyxNQUFNLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkM7UUFFRCxzQkFBc0I7UUFDdEIsTUFBTSxNQUFNLEdBQUcsSUFBSSw2QkFBYSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN2RCxNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVwQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsWUFBWSxDQUFDO1NBQzNDO1FBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE9BQU87U0FDUjtRQUVELE1BQU0sSUFBQSxxQkFBYyxFQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV2QyxPQUFPO0tBQ1I7SUFFRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDLENBQUM7QUFFRixZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUMsbUJBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHtNb2RlbHNVbml2ZXJzZX0gZnJvbSAnLi9saWIvbW9kZWxzLXVuaXZlcnNlJztcbmltcG9ydCB7U3VwZXJjb21wdXRlcn0gZnJvbSAnLi9saWIvc3VwZXJjb21wdXRlcic7XG5cbmltcG9ydCB7cGFyc2VQcm9jZXNzQXJndW1lbnR9IGZyb20gJy4vdXRpbC9hcmdzJztcbmltcG9ydCB7RVJST1JTfSBmcm9tICcuL3V0aWwvZXJyb3JzJztcbmltcG9ydCB7YW5kSGFuZGxlfSBmcm9tICcuL3V0aWwvaGVscGVycyc7XG5pbXBvcnQge3ZhbGlkYXRlSW1wbH0gZnJvbSAnLi91dGlsL3ZhbGlkYXRpb25zJztcbmltcG9ydCB7b3BlbllhbWxGaWxlQXNPYmplY3QsIHNhdmVZYW1sRmlsZUFzfSBmcm9tICcuL3V0aWwveWFtbCc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi9jb25maWcnO1xuXG5pbXBvcnQge0ltcGx9IGZyb20gJy4vdHlwZXMvaW1wbCc7XG5cbmNvbnN0IHtDbGlJbnB1dEVycm9yfSA9IEVSUk9SUztcblxuY29uc3Qge0RJU0NMQUlNRVJfTUVTU0FHRSwgU09NRVRISU5HX1dST05HfSA9IFNUUklOR1M7XG5cbi8qKlxuICogMS4gUGFyc2VzIHltbCBpbnB1dC9vdXRwdXQgcHJvY2VzcyBhcmd1bWVudHMuXG4gKiAyLiBPcGVucyB5YW1sIGZpbGUgYXMgYW4gb2JqZWN0LlxuICogMy4gVmFsaWRhdGVzIGdpdmVuIGltcGwgdG8gbWF0Y2ggYmFzaWMgc3RydWN0dXJlLlxuICogNC4gSW5pdGlhbGl6ZXMgcmVxdWVzdGVkIG1vZGVscy5cbiAqIDUuIEluaXRpYWxpemVzIGdyYXBoLCBkb2VzIGNvbXB1dGluZy5cbiAqIDYuIFNhdmVzIHByb2Nlc3NlZCBvYmplY3QgYXMgYSB5YW1sIGZpbGUuXG4gKiBAZXhhbXBsZSBydW4gYG5wbSBydW4gaW1wYWN0LWVuZ2luZSAtLSAtLWltcGwgLi90ZXN0LnltbCAtLW9tcGwgLi9yZXN1bHQueW1sYFxuICovXG5jb25zdCBpbXBhY3RFbmdpbmUgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnNvbGUubG9nKERJU0NMQUlNRVJfTUVTU0FHRSk7XG5cbiAgY29uc3QgcHJvY2Vzc1BhcmFtcyA9IHBhcnNlUHJvY2Vzc0FyZ3VtZW50KCk7XG5cbiAgaWYgKHByb2Nlc3NQYXJhbXMpIHtcbiAgICBjb25zdCB7aW5wdXRQYXRoLCBvdXRwdXRQYXRofSA9IHByb2Nlc3NQYXJhbXM7XG4gICAgY29uc3QgcmF3SW1wbCA9IGF3YWl0IG9wZW5ZYW1sRmlsZUFzT2JqZWN0PEltcGw+KGlucHV0UGF0aCk7XG5cbiAgICAvLyBMaWZlY3ljbGUgVmFsaWRhdGlvblxuICAgIGNvbnN0IGltcGwgPSB2YWxpZGF0ZUltcGwocmF3SW1wbCk7XG5cbiAgICAvLyBMaWZlY3ljbGUgSW5pdGlhbGl6ZSBNb2RlbHNcbiAgICBjb25zdCBtb2RlbHNIYW5kYm9vayA9IG5ldyBNb2RlbHNVbml2ZXJzZSgpO1xuICAgIGZvciAoY29uc3QgbW9kZWwgb2YgaW1wbC5pbml0aWFsaXplLm1vZGVscykge1xuICAgICAgYXdhaXQgbW9kZWxzSGFuZGJvb2sud3JpdGVEb3duKG1vZGVsKTtcbiAgICB9XG5cbiAgICAvLyBMaWZlY3ljbGUgQ29tcHV0aW5nXG4gICAgY29uc3QgZW5naW5lID0gbmV3IFN1cGVyY29tcHV0ZXIoaW1wbCwgbW9kZWxzSGFuZGJvb2spO1xuICAgIGNvbnN0IG9tcGwgPSBhd2FpdCBlbmdpbmUuY29tcHV0ZSgpO1xuXG4gICAgaWYgKGltcGwuYWdncmVnYXRpb24pIHtcbiAgICAgIGNvbnN0IGFnZ3JlZ2F0aW9ucyA9IGVuZ2luZS5jYWxjdWxhdGVBZ2dyZWdhdGlvbigpO1xuICAgICAgb21wbFsnYWdncmVnYXRlZC1vdXRwdXRzJ10gPSBhZ2dyZWdhdGlvbnM7XG4gICAgfVxuXG4gICAgaWYgKCFvdXRwdXRQYXRoKSB7XG4gICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShvbXBsKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgc2F2ZVlhbWxGaWxlQXMob21wbCwgb3V0cHV0UGF0aCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IENsaUlucHV0RXJyb3IoU09NRVRISU5HX1dST05HKSk7XG59O1xuXG5pbXBhY3RFbmdpbmUoKS5jYXRjaChhbmRIYW5kbGUpO1xuIl19
@@ -0,0 +1,396 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <coverage generated="1704806355871" clover="3.2.0">
3
+ <project timestamp="1704806355871" name="All files">
4
+ <metrics statements="339" coveredstatements="336" conditionals="82" coveredconditionals="81" methods="64" coveredmethods="64" elements="485" coveredelements="481" complexity="0" loc="339" ncloc="339" packages="4" files="13" classes="13"/>
5
+ <package name="config">
6
+ <metrics statements="8" coveredstatements="8" conditionals="0" coveredconditionals="0" methods="6" coveredmethods="6"/>
7
+ <file name="config.ts" path="/Users/admin/Projects/uk/ief/src/config/config.ts">
8
+ <metrics statements="1" coveredstatements="1" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
9
+ <line num="5" count="5" type="stmt"/>
10
+ </file>
11
+ <file name="index.ts" path="/Users/admin/Projects/uk/ief/src/config/index.ts">
12
+ <metrics statements="2" coveredstatements="2" conditionals="0" coveredconditionals="0" methods="2" coveredmethods="2"/>
13
+ <line num="1" count="8" type="stmt"/>
14
+ <line num="2" count="16" type="stmt"/>
15
+ </file>
16
+ <file name="strings.ts" path="/Users/admin/Projects/uk/ief/src/config/strings.ts">
17
+ <metrics statements="5" coveredstatements="5" conditionals="0" coveredconditionals="0" methods="4" coveredmethods="4"/>
18
+ <line num="3" count="6" type="stmt"/>
19
+ <line num="11" count="3" type="stmt"/>
20
+ <line num="13" count="5" type="stmt"/>
21
+ <line num="31" count="3" type="stmt"/>
22
+ <line num="33" count="3" type="stmt"/>
23
+ </file>
24
+ </package>
25
+ <package name="lib">
26
+ <metrics statements="140" coveredstatements="140" conditionals="44" coveredconditionals="44" methods="24" coveredmethods="24"/>
27
+ <file name="models-universe.ts" path="/Users/admin/Projects/uk/ief/src/lib/models-universe.ts">
28
+ <metrics statements="45" coveredstatements="45" conditionals="10" coveredconditionals="10" methods="9" coveredmethods="9"/>
29
+ <line num="1" count="1" type="stmt"/>
30
+ <line num="3" count="1" type="stmt"/>
31
+ <line num="5" count="1" type="stmt"/>
32
+ <line num="14" count="1" type="stmt"/>
33
+ <line num="16" count="1" type="stmt"/>
34
+ <line num="25" count="1" type="stmt"/>
35
+ <line num="30" count="1" type="stmt"/>
36
+ <line num="34" count="10" type="stmt"/>
37
+ <line num="40" count="5" type="stmt"/>
38
+ <line num="41" count="5" type="stmt"/>
39
+ <line num="42" count="4" type="cond" truecount="2" falsecount="0"/>
40
+ <line num="44" count="4" type="stmt"/>
41
+ <line num="46" count="1" type="stmt"/>
42
+ <line num="54" count="6" type="stmt"/>
43
+ <line num="55" count="6" type="stmt"/>
44
+ <line num="57" count="5" type="stmt"/>
45
+ <line num="59" count="1" type="stmt"/>
46
+ <line num="60" count="1" type="stmt"/>
47
+ <line num="68" count="6" type="stmt"/>
48
+ <line num="70" count="5" type="cond" truecount="1" falsecount="0"/>
49
+ <line num="71" count="1" type="stmt"/>
50
+ <line num="74" count="3" type="stmt"/>
51
+ <line num="83" count="6" type="cond" truecount="2" falsecount="0"/>
52
+ <line num="84" count="1" type="stmt"/>
53
+ <line num="86" count="5" type="cond" truecount="1" falsecount="0"/>
54
+ <line num="87" count="4" type="stmt"/>
55
+ <line num="88" count="4" type="stmt"/>
56
+ <line num="91" count="5" type="cond" truecount="1" falsecount="0"/>
57
+ <line num="92" count="5" type="stmt"/>
58
+ <line num="96" count="6" type="stmt"/>
59
+ <line num="103" count="8" type="stmt"/>
60
+ <line num="105" count="8" type="cond" truecount="1" falsecount="0"/>
61
+ <line num="106" count="1" type="stmt"/>
62
+ <line num="109" count="7" type="cond" truecount="1" falsecount="0"/>
63
+ <line num="110" count="1" type="stmt"/>
64
+ <line num="113" count="6" type="stmt"/>
65
+ <line num="115" count="3" type="stmt"/>
66
+ <line num="116" count="3" type="stmt"/>
67
+ <line num="121" count="3" type="stmt"/>
68
+ <line num="123" count="3" type="stmt"/>
69
+ <line num="126" count="3" type="stmt"/>
70
+ <line num="131" count="3" type="stmt"/>
71
+ <line num="138" count="3" type="cond" truecount="1" falsecount="0"/>
72
+ <line num="139" count="2" type="stmt"/>
73
+ <line num="142" count="1" type="stmt"/>
74
+ </file>
75
+ <file name="observatory.ts" path="/Users/admin/Projects/uk/ief/src/lib/observatory.ts">
76
+ <metrics statements="7" coveredstatements="7" conditionals="2" coveredconditionals="2" methods="3" coveredmethods="3"/>
77
+ <line num="6" count="2" type="stmt"/>
78
+ <line num="8" count="20" type="stmt"/>
79
+ <line num="14" count="20" type="stmt"/>
80
+ <line num="21" count="37" type="cond" truecount="2" falsecount="0"/>
81
+ <line num="23" count="37" type="stmt"/>
82
+ <line num="25" count="37" type="stmt"/>
83
+ <line num="32" count="17" type="stmt"/>
84
+ </file>
85
+ <file name="planet-aggregator.ts" path="/Users/admin/Projects/uk/ief/src/lib/planet-aggregator.ts">
86
+ <metrics statements="19" coveredstatements="19" conditionals="8" coveredconditionals="8" methods="2" coveredmethods="2"/>
87
+ <line num="1" count="2" type="stmt"/>
88
+ <line num="10" count="2" type="stmt"/>
89
+ <line num="15" count="2" type="stmt"/>
90
+ <line num="19" count="18" type="cond" truecount="1" falsecount="0"/>
91
+ <line num="23" count="2" type="stmt"/>
92
+ <line num="28" count="16" type="stmt"/>
93
+ <line num="29" count="16" type="stmt"/>
94
+ <line num="31" count="16" type="stmt"/>
95
+ <line num="32" count="22" type="stmt"/>
96
+ <line num="33" count="28" type="cond" truecount="1" falsecount="0"/>
97
+ <line num="34" count="2" type="stmt"/>
98
+ <line num="39" count="26" type="stmt"/>
99
+ <line num="40" count="26" type="stmt"/>
100
+ <line num="41" count="26" type="cond" truecount="2" falsecount="0"/>
101
+ <line num="42" count="26" type="stmt"/>
102
+ <line num="44" count="26" type="cond" truecount="1" falsecount="0"/>
103
+ <line num="45" count="16" type="cond" truecount="1" falsecount="0"/>
104
+ <line num="46" count="13" type="stmt"/>
105
+ <line num="51" count="20" type="stmt"/>
106
+ </file>
107
+ <file name="supercomputer.ts" path="/Users/admin/Projects/uk/ief/src/lib/supercomputer.ts">
108
+ <metrics statements="69" coveredstatements="69" conditionals="24" coveredconditionals="24" methods="10" coveredmethods="10"/>
109
+ <line num="2" count="1" type="stmt"/>
110
+ <line num="3" count="1" type="stmt"/>
111
+ <line num="5" count="1" type="stmt"/>
112
+ <line num="7" count="1" type="stmt"/>
113
+ <line num="14" count="1" type="stmt"/>
114
+ <line num="16" count="1" type="stmt"/>
115
+ <line num="21" count="1" type="stmt"/>
116
+ <line num="22" count="11" type="stmt"/>
117
+ <line num="25" count="11" type="stmt"/>
118
+ <line num="26" count="11" type="stmt"/>
119
+ <line num="29" count="11" type="stmt"/>
120
+ <line num="30" count="11" type="stmt"/>
121
+ <line num="37" count="4" type="cond" truecount="1" falsecount="0"/>
122
+ <line num="38" count="1" type="stmt"/>
123
+ <line num="41" count="3" type="stmt"/>
124
+ <line num="43" count="3" type="stmt"/>
125
+ <line num="44" count="7" type="stmt"/>
126
+ <line num="46" count="7" type="stmt"/>
127
+ <line num="47" count="7" type="cond" truecount="2" falsecount="0"/>
128
+ <line num="48" count="7" type="stmt"/>
129
+ <line num="50" count="7" type="cond" truecount="1" falsecount="0"/>
130
+ <line num="51" count="3" type="cond" truecount="1" falsecount="0"/>
131
+ <line num="52" count="2" type="stmt"/>
132
+ <line num="57" count="7" type="stmt"/>
133
+ <line num="65" count="32" type="cond" truecount="1" falsecount="0"/>
134
+ <line num="66" count="1" type="stmt"/>
135
+ <line num="69" count="31" type="stmt"/>
136
+ <line num="70" count="31" type="stmt"/>
137
+ <line num="71" count="34" type="stmt"/>
138
+ <line num="76" count="34" type="stmt"/>
139
+ <line num="79" count="31" type="stmt"/>
140
+ <line num="90" count="16" type="stmt"/>
141
+ <line num="91" count="16" type="stmt"/>
142
+ <line num="93" count="22" type="stmt"/>
143
+ <line num="110" count="19" type="stmt"/>
144
+ <line num="112" count="19" type="cond" truecount="1" falsecount="0"/>
145
+ <line num="113" count="11" type="stmt"/>
146
+ <line num="119" count="19" type="stmt"/>
147
+ <line num="121" count="19" type="cond" truecount="1" falsecount="0"/>
148
+ <line num="122" count="2" type="stmt"/>
149
+ <line num="125" count="17" type="cond" truecount="1" falsecount="0"/>
150
+ <line num="126" count="1" type="stmt"/>
151
+ <line num="129" count="16" type="stmt"/>
152
+ <line num="131" count="16" type="cond" truecount="2" falsecount="0"/>
153
+ <line num="135" count="16" type="cond" truecount="2" falsecount="0"/>
154
+ <line num="137" count="16" type="stmt"/>
155
+ <line num="143" count="16" type="stmt"/>
156
+ <line num="145" count="16" type="stmt"/>
157
+ <line num="146" count="36" type="cond" truecount="2" falsecount="0"/>
158
+ <line num="147" count="36" type="stmt"/>
159
+ <line num="152" count="35" type="stmt"/>
160
+ <line num="155" count="15" type="stmt"/>
161
+ <line num="160" count="15" type="cond" truecount="1" falsecount="0"/>
162
+ <line num="161" count="13" type="stmt"/>
163
+ <line num="166" count="12" type="stmt"/>
164
+ <line num="168" count="12" type="cond" truecount="2" falsecount="0"/>
165
+ <line num="169" count="8" type="stmt"/>
166
+ <line num="173" count="4" type="stmt"/>
167
+ <line num="178" count="14" type="cond" truecount="2" falsecount="0"/>
168
+ <line num="179" count="8" type="stmt"/>
169
+ <line num="183" count="6" type="stmt"/>
170
+ <line num="186" count="14" type="stmt"/>
171
+ <line num="193" count="11" type="cond" truecount="2" falsecount="0"/>
172
+ <line num="194" count="11" type="stmt"/>
173
+ <line num="195" count="11" type="cond" truecount="2" falsecount="0"/>
174
+ <line num="198" count="11" type="stmt"/>
175
+ <line num="200" count="11" type="stmt"/>
176
+ <line num="201" count="19" type="stmt"/>
177
+ <line num="207" count="8" type="stmt"/>
178
+ </file>
179
+ </package>
180
+ <package name="models">
181
+ <metrics statements="127" coveredstatements="127" conditionals="31" coveredconditionals="31" methods="22" coveredmethods="22"/>
182
+ <file name="index.ts" path="/Users/admin/Projects/uk/ief/src/models/index.ts">
183
+ <metrics statements="1" coveredstatements="1" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="1"/>
184
+ <line num="1" count="17" type="stmt"/>
185
+ </file>
186
+ <file name="time-sync.ts" path="/Users/admin/Projects/uk/ief/src/models/time-sync.ts">
187
+ <metrics statements="126" coveredstatements="126" conditionals="31" coveredconditionals="31" methods="21" coveredmethods="21"/>
188
+ <line num="1" count="2" type="stmt"/>
189
+ <line num="2" count="2" type="stmt"/>
190
+ <line num="4" count="2" type="stmt"/>
191
+ <line num="6" count="2" type="stmt"/>
192
+ <line num="7" count="2" type="stmt"/>
193
+ <line num="14" count="2" type="stmt"/>
194
+ <line num="16" count="2" type="stmt"/>
195
+ <line num="22" count="2" type="stmt"/>
196
+ <line num="24" count="2" type="stmt"/>
197
+ <line num="28" count="14" type="stmt"/>
198
+ <line num="34" count="12" type="stmt"/>
199
+ <line num="35" count="12" type="stmt"/>
200
+ <line num="36" count="12" type="stmt"/>
201
+ <line num="37" count="12" type="stmt"/>
202
+ <line num="39" count="12" type="stmt"/>
203
+ <line num="46" count="10" type="cond" truecount="3" falsecount="0"/>
204
+ <line num="47" count="2" type="stmt"/>
205
+ <line num="50" count="8" type="cond" truecount="1" falsecount="0"/>
206
+ <line num="51" count="1" type="stmt"/>
207
+ <line num="54" count="7" type="cond" truecount="1" falsecount="0"/>
208
+ <line num="55" count="1" type="stmt"/>
209
+ <line num="62" count="14" type="stmt"/>
210
+ <line num="63" count="50" type="stmt"/>
211
+ <line num="68" count="14" type="stmt"/>
212
+ <line num="69" count="86" type="stmt"/>
213
+ <line num="71" count="86" type="stmt"/>
214
+ <line num="78" count="86" type="stmt"/>
215
+ <line num="80" count="86" type="stmt"/>
216
+ <line num="81" count="366" type="stmt"/>
217
+ <line num="83" count="366" type="cond" truecount="1" falsecount="0"/>
218
+ <line num="84" count="86" type="stmt"/>
219
+ <line num="85" count="86" type="stmt"/>
220
+ <line num="87" count="86" type="stmt"/>
221
+ <line num="91" count="280" type="cond" truecount="1" falsecount="0"/>
222
+ <line num="92" count="86" type="stmt"/>
223
+ <line num="94" count="86" type="stmt"/>
224
+ <line num="97" count="194" type="stmt"/>
225
+ <line num="102" count="194" type="stmt"/>
226
+ <line num="110" count="56" type="stmt"/>
227
+ <line num="112" count="56" type="stmt"/>
228
+ <line num="113" count="221" type="cond" truecount="1" falsecount="0"/>
229
+ <line num="114" count="56" type="stmt"/>
230
+ <line num="116" count="56" type="stmt"/>
231
+ <line num="120" count="165" type="cond" truecount="1" falsecount="0"/>
232
+ <line num="121" count="56" type="stmt"/>
233
+ <line num="123" count="56" type="stmt"/>
234
+ <line num="126" count="109" type="cond" truecount="1" falsecount="0"/>
235
+ <line num="127" count="25" type="stmt"/>
236
+ <line num="129" count="25" type="stmt"/>
237
+ <line num="132" count="84" type="stmt"/>
238
+ <line num="134" count="84" type="cond" truecount="3" falsecount="0"/>
239
+ <line num="135" count="81" type="stmt"/>
240
+ <line num="137" count="81" type="stmt"/>
241
+ <line num="140" count="3" type="stmt"/>
242
+ <line num="142" count="3" type="stmt"/>
243
+ <line num="151" count="6" type="stmt"/>
244
+ <line num="153" count="6" type="stmt"/>
245
+ <line num="156" count="6" type="stmt"/>
246
+ <line num="160" count="6" type="stmt"/>
247
+ <line num="170" count="14" type="stmt"/>
248
+ <line num="171" count="63" type="stmt"/>
249
+ <line num="172" count="63" type="stmt"/>
250
+ <line num="174" count="63" type="stmt"/>
251
+ <line num="175" count="306" type="stmt"/>
252
+ <line num="176" count="306" type="cond" truecount="2" falsecount="0"/>
253
+ <line num="178" count="306" type="cond" truecount="1" falsecount="0"/>
254
+ <line num="179" count="63" type="stmt"/>
255
+ <line num="181" count="63" type="stmt"/>
256
+ <line num="184" count="243" type="cond" truecount="1" falsecount="0"/>
257
+ <line num="185" count="116" type="stmt"/>
258
+ <line num="187" count="116" type="stmt"/>
259
+ <line num="194" count="127" type="cond" truecount="1" falsecount="0"/>
260
+ <line num="198" count="8" type="stmt"/>
261
+ <line num="200" count="8" type="stmt"/>
262
+ <line num="203" count="119" type="stmt"/>
263
+ <line num="206" count="63" type="stmt"/>
264
+ <line num="214" count="4" type="stmt"/>
265
+ <line num="215" count="63" type="stmt"/>
266
+ <line num="216" count="63" type="stmt"/>
267
+ <line num="217" count="63" type="stmt"/>
268
+ <line num="219" count="63" type="stmt"/>
269
+ <line num="222" count="63" type="cond" truecount="1" falsecount="0"/>
270
+ <line num="223" count="47" type="stmt"/>
271
+ <line num="226" count="63" type="stmt"/>
272
+ <line num="234" count="6" type="stmt"/>
273
+ <line num="235" count="6" type="stmt"/>
274
+ <line num="237" count="6" type="cond" truecount="1" falsecount="0"/>
275
+ <line num="238" count="3" type="stmt"/>
276
+ <line num="244" count="3" type="stmt"/>
277
+ <line num="245" count="20" type="stmt"/>
278
+ <line num="251" count="6" type="stmt"/>
279
+ <line num="253" count="6" type="cond" truecount="1" falsecount="0"/>
280
+ <line num="254" count="3" type="stmt"/>
281
+ <line num="255" count="3" type="stmt"/>
282
+ <line num="260" count="3" type="stmt"/>
283
+ <line num="261" count="33" type="stmt"/>
284
+ <line num="267" count="6" type="stmt"/>
285
+ <line num="274" count="42" type="stmt"/>
286
+ <line num="275" count="411" type="stmt"/>
287
+ <line num="277" count="411" type="cond" truecount="1" falsecount="0"/>
288
+ <line num="281" count="411" type="stmt"/>
289
+ <line num="284" count="411" type="stmt"/>
290
+ <line num="292" count="10" type="stmt"/>
291
+ <line num="294" count="6" type="stmt"/>
292
+ <line num="295" count="6" type="stmt"/>
293
+ <line num="297" count="6" type="stmt"/>
294
+ <line num="298" count="44" type="stmt"/>
295
+ <line num="301" count="44" type="cond" truecount="1" falsecount="0"/>
296
+ <line num="302" count="38" type="stmt"/>
297
+ <line num="303" count="38" type="stmt"/>
298
+ <line num="306" count="38" type="cond" truecount="1" falsecount="0"/>
299
+ <line num="311" count="2" type="stmt"/>
300
+ <line num="314" count="36" type="stmt"/>
301
+ <line num="319" count="36" type="stmt"/>
302
+ <line num="322" count="36" type="cond" truecount="1" falsecount="0"/>
303
+ <line num="323" count="1" type="stmt"/>
304
+ <line num="324" count="1" type="stmt"/>
305
+ <line num="328" count="3" type="stmt"/>
306
+ <line num="333" count="3" type="stmt"/>
307
+ <line num="339" count="42" type="stmt"/>
308
+ <line num="340" count="86" type="stmt"/>
309
+ <line num="342" count="86" type="stmt"/>
310
+ <line num="345" count="42" type="stmt"/>
311
+ <line num="348" count="4" type="stmt"/>
312
+ <line num="349" count="59" type="stmt"/>
313
+ <line num="354" count="4" type="stmt"/>
314
+ </file>
315
+ </package>
316
+ <package name="util">
317
+ <metrics statements="64" coveredstatements="61" conditionals="7" coveredconditionals="6" methods="12" coveredmethods="12"/>
318
+ <file name="args.ts" path="/Users/admin/Projects/uk/ief/src/util/args.ts">
319
+ <metrics statements="28" coveredstatements="25" conditionals="6" coveredconditionals="5" methods="3" coveredmethods="3"/>
320
+ <line num="1" count="1" type="stmt"/>
321
+ <line num="2" count="1" type="stmt"/>
322
+ <line num="4" count="1" type="stmt"/>
323
+ <line num="5" count="1" type="stmt"/>
324
+ <line num="7" count="1" type="stmt"/>
325
+ <line num="11" count="1" type="stmt"/>
326
+ <line num="13" count="1" type="stmt"/>
327
+ <line num="14" count="1" type="stmt"/>
328
+ <line num="16" count="1" type="stmt"/>
329
+ <line num="22" count="1" type="stmt"/>
330
+ <line num="23" count="5" type="stmt"/>
331
+ <line num="24" count="5" type="stmt"/>
332
+ <line num="26" count="0" type="cond" truecount="0" falsecount="1"/>
333
+ <line num="27" count="0" type="stmt"/>
334
+ <line num="30" count="0" type="stmt"/>
335
+ <line num="38" count="1" type="stmt"/>
336
+ <line num="39" count="3" type="stmt"/>
337
+ <line num="41" count="3" type="stmt"/>
338
+ <line num="48" count="1" type="stmt"/>
339
+ <line num="49" count="5" type="stmt"/>
340
+ <line num="51" count="5" type="cond" truecount="1" falsecount="0"/>
341
+ <line num="52" count="1" type="stmt"/>
342
+ <line num="53" count="1" type="stmt"/>
343
+ <line num="56" count="4" type="cond" truecount="1" falsecount="0"/>
344
+ <line num="57" count="3" type="cond" truecount="1" falsecount="0"/>
345
+ <line num="58" count="2" type="stmt"/>
346
+ <line num="64" count="1" type="stmt"/>
347
+ <line num="67" count="1" type="stmt"/>
348
+ </file>
349
+ <file name="errors.ts" path="/Users/admin/Projects/uk/ief/src/util/errors.ts">
350
+ <metrics statements="6" coveredstatements="6" conditionals="0" coveredconditionals="0" methods="2" coveredmethods="2"/>
351
+ <line num="1" count="7" type="stmt"/>
352
+ <line num="15" count="7" type="stmt"/>
353
+ <line num="16" count="49" type="stmt"/>
354
+ <line num="20" count="28" type="stmt"/>
355
+ <line num="21" count="28" type="stmt"/>
356
+ <line num="26" count="49" type="stmt"/>
357
+ </file>
358
+ <file name="units-dealer.ts" path="/Users/admin/Projects/uk/ief/src/util/units-dealer.ts">
359
+ <metrics statements="13" coveredstatements="13" conditionals="1" coveredconditionals="1" methods="4" coveredmethods="4"/>
360
+ <line num="1" count="3" type="stmt"/>
361
+ <line num="3" count="3" type="stmt"/>
362
+ <line num="4" count="3" type="stmt"/>
363
+ <line num="8" count="3" type="stmt"/>
364
+ <line num="13" count="3" type="stmt"/>
365
+ <line num="14" count="16" type="stmt"/>
366
+ <line num="17" count="1" type="stmt"/>
367
+ <line num="23" count="3" type="stmt"/>
368
+ <line num="24" count="16" type="stmt"/>
369
+ <line num="26" count="15" type="stmt"/>
370
+ <line num="31" count="758" type="cond" truecount="1" falsecount="0"/>
371
+ <line num="32" count="757" type="stmt"/>
372
+ <line num="35" count="1" type="stmt"/>
373
+ </file>
374
+ <file name="yaml.ts" path="/Users/admin/Projects/uk/ief/src/util/yaml.ts">
375
+ <metrics statements="17" coveredstatements="17" conditionals="0" coveredconditionals="0" methods="3" coveredmethods="3"/>
376
+ <line num="1" count="4" type="stmt"/>
377
+ <line num="2" count="4" type="stmt"/>
378
+ <line num="4" count="4" type="stmt"/>
379
+ <line num="9" count="4" type="stmt"/>
380
+ <line num="10" count="13" type="stmt"/>
381
+ <line num="12" count="13" type="stmt"/>
382
+ <line num="18" count="4" type="stmt"/>
383
+ <line num="19" count="2" type="stmt"/>
384
+ <line num="20" count="2" type="stmt"/>
385
+ <line num="21" count="2" type="stmt"/>
386
+ <line num="23" count="2" type="stmt"/>
387
+ <line num="29" count="4" type="stmt"/>
388
+ <line num="30" count="6" type="stmt"/>
389
+ <line num="31" count="6" type="stmt"/>
390
+ <line num="32" count="6" type="stmt"/>
391
+ <line num="33" count="6" type="stmt"/>
392
+ <line num="35" count="6" type="stmt"/>
393
+ </file>
394
+ </package>
395
+ </project>
396
+ </coverage>