@grnsft/if 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.commitlintrc.js +45 -0
- package/.husky/commit-msg +4 -0
- package/.husky/pre-commit +6 -0
- package/CONTRIBUTING.md +81 -98
- package/README.md +16 -12
- package/build/config/config.d.ts +4 -5
- package/build/config/config.js +16 -12
- package/build/config/index.d.ts +1 -0
- package/build/config/index.js +4 -2
- package/build/config/params.d.ts +2 -0
- package/build/config/params.js +146 -0
- package/build/config/strings.d.ts +14 -8
- package/build/config/strings.js +18 -12
- package/build/index.js +18 -38
- package/build/lib/aggregate.d.ts +6 -0
- package/build/lib/aggregate.js +72 -0
- package/build/lib/compute.d.ts +5 -0
- package/build/lib/compute.js +84 -0
- package/build/lib/exhaust.d.ts +6 -0
- package/build/lib/exhaust.js +47 -0
- package/build/lib/initialize.d.ts +6 -0
- package/build/lib/initialize.js +98 -0
- package/build/lib/load.d.ts +6 -0
- package/build/lib/load.js +24 -0
- package/build/lib/parameterize.d.ts +5 -0
- package/build/lib/parameterize.js +49 -0
- package/build/models/export-csv.d.ts +2 -0
- package/build/models/export-csv.js +129 -0
- package/build/models/export-log.d.ts +4 -0
- package/build/models/export-log.js +18 -0
- package/build/models/export-yaml.d.ts +4 -0
- package/build/models/export-yaml.js +24 -0
- package/build/models/group-by.d.ts +11 -0
- package/build/models/group-by.js +56 -0
- package/build/models/index.d.ts +2 -1
- package/build/models/index.js +5 -3
- package/build/models/time-sync.d.ts +2 -54
- package/build/models/time-sync.js +216 -147
- package/build/types/aggregation.d.ts +3 -0
- package/build/types/aggregation.js +5 -0
- package/build/types/compute.d.ts +25 -0
- package/build/types/compute.js +3 -0
- package/build/types/exhaust-plugin-interface.d.ts +7 -0
- package/build/types/exhaust-plugin-interface.js +3 -0
- package/build/types/group-by.d.ts +3 -0
- package/build/types/group-by.js +3 -0
- package/build/types/initialize.d.ts +4 -0
- package/build/types/initialize.js +3 -0
- package/build/types/interface.d.ts +8 -0
- package/build/types/interface.js +3 -0
- package/build/types/load.d.ts +7 -0
- package/build/types/load.js +3 -0
- package/build/types/manifest.d.ts +40 -0
- package/build/types/manifest.js +3 -0
- package/build/types/parameters.d.ts +15 -0
- package/build/types/parameters.js +5 -0
- package/build/types/process-args.d.ts +4 -5
- package/build/types/process-args.js +1 -1
- package/build/types/time-sync.d.ts +10 -2
- package/build/types/time-sync.js +1 -1
- package/build/util/aggregation-helper.d.ts +6 -0
- package/build/util/aggregation-helper.js +56 -0
- package/build/util/args.d.ts +7 -3
- package/build/util/args.js +46 -18
- package/build/util/errors.d.ts +1 -1
- package/build/util/errors.js +8 -4
- package/build/util/helpers.d.ts +4 -0
- package/build/util/helpers.js +23 -4
- package/build/util/json.d.ts +4 -0
- package/build/util/json.js +16 -0
- package/build/util/logger.d.ts +5 -0
- package/build/util/logger.js +40 -0
- package/build/util/validations.d.ts +30 -21
- package/build/util/validations.js +54 -55
- package/build/util/yaml.js +27 -4
- package/examples/manifests/azure-importer.yml +24 -0
- package/examples/manifests/basic-demo.yml +75 -0
- package/examples/manifests/basic.yml +27 -0
- package/examples/manifests/boavizta-pipeline.yml +85 -0
- package/examples/{impls/case-studies → manifests}/boavizta.yml +14 -14
- package/examples/{impls/test → manifests}/ccf.yml +9 -10
- package/examples/manifests/cim.yml +20 -0
- package/examples/manifests/cloud-metadata.yml +41 -0
- package/examples/manifests/co2js.yml +30 -0
- package/examples/manifests/coefficient.yml +23 -0
- package/examples/manifests/csv-export.yml +34 -0
- package/examples/manifests/e-mem.yml +21 -0
- package/examples/{impls/test → manifests}/e-net.yml +9 -8
- package/examples/manifests/generics.yml +71 -0
- package/examples/manifests/group-by.yml +48 -0
- package/examples/manifests/mock-observation.yml +33 -0
- package/examples/manifests/multiply.yml +23 -0
- package/examples/manifests/nesting-demo.yml +89 -0
- package/examples/manifests/nesting.yml +215 -0
- package/examples/manifests/pipeline-demo-1.yml +85 -0
- package/examples/manifests/pipeline-demo-2.yml +149 -0
- package/examples/manifests/pipeline-demo.yml +128 -0
- package/examples/manifests/pipeline-teads-sci.yml +82 -0
- package/examples/manifests/pipeline-with-generics.yml +147 -0
- package/examples/manifests/pipeline-with-mocks.yml +146 -0
- package/examples/{impls/test → manifests}/sci-e.yml +6 -8
- package/examples/manifests/sci-m.yml +23 -0
- package/examples/{impls/test → manifests}/sci-o.yml +10 -10
- package/examples/{impls/test → manifests}/sci.yml +10 -9
- package/examples/manifests/shell.yml +20 -0
- package/examples/manifests/sum.yml +23 -0
- package/examples/{impls/test → manifests}/tdp-finder.yml +6 -7
- package/examples/manifests/teads-aws.yml +22 -0
- package/examples/manifests/teads-curve.yml +20 -0
- package/examples/manifests/time-sync.yml +32 -0
- package/examples/manifests/watt-time.yml +42 -0
- package/jest.config.js +6 -1
- package/package.json +13 -8
- package/src/__tests__/integration/templates/integration.yaml +16 -0
- package/src/models/README.md +9 -7
- package/tsconfig.test.json +1 -1
- package/Makefile +0 -16
- package/build/config/units.yaml +0 -112
- package/build/lib/models-universe.d.ts +0 -36
- package/build/lib/models-universe.js +0 -113
- package/build/lib/observatory.d.ts +0 -20
- package/build/lib/observatory.js +0 -31
- package/build/lib/planet-aggregator.d.ts +0 -6
- package/build/lib/planet-aggregator.js +0 -35
- package/build/lib/supercomputer.d.ts +0 -37
- package/build/lib/supercomputer.js +0 -148
- package/build/types/helpers.d.ts +0 -1
- package/build/types/helpers.js +0 -3
- package/build/types/impl.d.ts +0 -45
- package/build/types/impl.js +0 -5
- package/build/types/model-interface.d.ts +0 -14
- package/build/types/model-interface.js +0 -3
- package/build/types/models-universe.d.ts +0 -23
- package/build/types/models-universe.js +0 -3
- package/build/types/planet-aggregator.d.ts +0 -6
- package/build/types/planet-aggregator.js +0 -3
- package/build/types/supercomputer.d.ts +0 -4
- package/build/types/supercomputer.js +0 -3
- package/build/types/units-dealer.d.ts +0 -3
- package/build/types/units-dealer.js +0 -3
- package/build/types/units.d.ts +0 -11
- package/build/types/units.js +0 -37
- package/build/util/units-dealer.d.ts +0 -10
- package/build/util/units-dealer.js +0 -32
- package/coverage/clover.xml +0 -379
- package/coverage/coverage-final.json +0 -14
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/config/config.ts.html +0 -250
- package/coverage/lcov-report/config/index.html +0 -146
- package/coverage/lcov-report/config/index.ts.html +0 -91
- package/coverage/lcov-report/config/strings.ts.html +0 -208
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -161
- package/coverage/lcov-report/lib/index.html +0 -161
- package/coverage/lcov-report/lib/models-universe.ts.html +0 -517
- package/coverage/lcov-report/lib/observatory.ts.html +0 -187
- package/coverage/lcov-report/lib/planet-aggregator.ts.html +0 -274
- package/coverage/lcov-report/lib/supercomputer.ts.html +0 -472
- package/coverage/lcov-report/models/index.html +0 -131
- package/coverage/lcov-report/models/index.ts.html +0 -88
- package/coverage/lcov-report/models/planet-aggregator.ts.html +0 -271
- package/coverage/lcov-report/models/time-sync.ts.html +0 -1165
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/util/args.ts.html +0 -289
- package/coverage/lcov-report/util/errors.ts.html +0 -166
- package/coverage/lcov-report/util/index.html +0 -161
- package/coverage/lcov-report/util/units-dealer.ts.html +0 -199
- package/coverage/lcov-report/util/yaml.ts.html +0 -193
- package/coverage/lcov.info +0 -637
- package/examples/impls/case-studies/accenture.yml +0 -155
- package/examples/impls/case-studies/aggregation.yml +0 -97
- package/examples/impls/case-studies/aveva.yaml +0 -48
- package/examples/impls/case-studies/azure-yassine.yaml +0 -67
- package/examples/impls/case-studies/dow_msft.yml +0 -173
- package/examples/impls/case-studies/farm-insights.yaml +0 -35
- package/examples/impls/case-studies/gsf-website.yaml +0 -93
- package/examples/impls/case-studies/msft-eshoppen.yaml +0 -162
- package/examples/impls/case-studies/msft-green-ai.yaml +0 -58
- package/examples/impls/case-studies/ntt-data-on-premise.yaml +0 -201
- package/examples/impls/test/aggregation-test.yml +0 -109
- package/examples/impls/test/azure.yml +0 -26
- package/examples/impls/test/if-demo.yml +0 -61
- package/examples/impls/test/large-impl.yml +0 -257303
- package/examples/impls/test/metadata.yml +0 -21
- package/examples/impls/test/nesting.yml +0 -113
- package/examples/impls/test/sci-m.yml +0 -24
- package/examples/impls/test/shell.yml +0 -19
- package/examples/impls/test/time-sync.yml +0 -75
- package/examples/ompls/aggregation-test.yml +0 -340
- package/examples/ompls/azure.yml +0 -145
- package/examples/ompls/ccf.yml +0 -29
- package/examples/ompls/complex-pipeline.yml +0 -105
- package/examples/ompls/full-sci.yml +0 -64
- package/examples/ompls/if-demo.yml +0 -517
- package/examples/ompls/metadata.yml +0 -29
- package/examples/ompls/nesting.yml +0 -113
- package/examples/ompls/sci-e.yml +0 -23
- package/examples/ompls/sci-m.yml +0 -33
- package/examples/ompls/sci-o.yml +0 -29
- package/examples/ompls/sci.yml +0 -37
- package/examples/ompls/shell.yml +0 -23
- package/examples/ompls/time-sync.yml +0 -212
- package/src/config/units.yaml +0 -112
- package/tsconfig.build.tsbuildinfo +0 -1
|
@@ -1,80 +1,79 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.validate = exports.validateManifest = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const errors_1 = require("./errors");
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const {
|
|
9
|
-
const aggregationMethods = AGGREGATION_METHODS.map(method => zod_1.z.literal(method));
|
|
10
|
-
const aggregationMetric = AGGREGATION_METRICS.map(metric => zod_1.z.literal(metric));
|
|
6
|
+
const aggregation_1 = require("../types/aggregation");
|
|
7
|
+
const parameters_1 = require("../types/parameters");
|
|
8
|
+
const { ManifestValidationError, InputValidationError } = errors_1.ERRORS;
|
|
11
9
|
/**
|
|
12
|
-
*
|
|
10
|
+
* Validation schema for manifests.
|
|
13
11
|
*/
|
|
14
|
-
|
|
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
|
-
/**
|
|
27
|
-
* Validation schema for impl files.
|
|
28
|
-
*/
|
|
29
|
-
const implValidation = zod_1.z.object({
|
|
12
|
+
const manifestValidation = zod_1.z.object({
|
|
30
13
|
name: zod_1.z.string(),
|
|
31
|
-
|
|
14
|
+
'if-version': zod_1.z.string().optional().nullable(),
|
|
15
|
+
description: zod_1.z.string().nullable().default(''),
|
|
32
16
|
aggregation: zod_1.z
|
|
33
17
|
.object({
|
|
34
|
-
|
|
35
|
-
|
|
18
|
+
metrics: zod_1.z.array(zod_1.z.string()),
|
|
19
|
+
type: zod_1.z.enum(aggregation_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(),
|
|
41
34
|
complexity: zod_1.z.string().optional(),
|
|
42
35
|
category: zod_1.z.string().optional(),
|
|
43
36
|
})
|
|
44
|
-
.nullable()
|
|
37
|
+
.nullable()
|
|
38
|
+
.default({}),
|
|
45
39
|
initialize: zod_1.z.object({
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
model: zod_1.z.string().optional(),
|
|
51
|
-
config: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).optional(),
|
|
40
|
+
plugins: zod_1.z.record(zod_1.z.string(), zod_1.z.object({
|
|
41
|
+
path: zod_1.z.string(),
|
|
42
|
+
method: zod_1.z.string(),
|
|
43
|
+
'global-config': zod_1.z.record(zod_1.z.string(), zod_1.z.any()).optional(),
|
|
52
44
|
})),
|
|
45
|
+
outputs: zod_1.z.array(zod_1.z.string()).optional(),
|
|
53
46
|
}),
|
|
54
|
-
|
|
55
|
-
.object({
|
|
56
|
-
children: zod_1.z.record(zod_1.z.string(), zod_1.z.any()),
|
|
57
|
-
})
|
|
58
|
-
.required(),
|
|
47
|
+
tree: zod_1.z.record(zod_1.z.string(), zod_1.z.any()),
|
|
59
48
|
});
|
|
60
49
|
/**
|
|
61
|
-
* Validates given `
|
|
50
|
+
* Validates given `manifest` object to match pattern.
|
|
51
|
+
*/
|
|
52
|
+
const validateManifest = (manifest) => {
|
|
53
|
+
return (0, exports.validate)(manifestValidation, manifest, ManifestValidationError);
|
|
54
|
+
};
|
|
55
|
+
exports.validateManifest = validateManifest;
|
|
56
|
+
/**
|
|
57
|
+
* Validates given `object` with given `schema`.
|
|
62
58
|
*/
|
|
63
|
-
const
|
|
64
|
-
const
|
|
65
|
-
if (!
|
|
66
|
-
|
|
67
|
-
const issuesArray = JSON.parse(issues);
|
|
68
|
-
return issuesArray.map((issue) => {
|
|
69
|
-
const { code, path, message } = issue;
|
|
70
|
-
const flattenPath = path.map(part => typeof part === 'number' ? `[${part}]` : part);
|
|
71
|
-
const fullPath = flattenPath.join('.');
|
|
72
|
-
return `"${fullPath}" parameter is ${message.toLowerCase()}. Error code: ${code}.`;
|
|
73
|
-
});
|
|
74
|
-
};
|
|
75
|
-
throw new ImplValidationError(prettifyErrorMessage(validatedImpl.error.message));
|
|
59
|
+
const validate = (schema, object, errorConstructor = InputValidationError) => {
|
|
60
|
+
const validationResult = schema.safeParse(object);
|
|
61
|
+
if (!validationResult.success) {
|
|
62
|
+
throw new errorConstructor(prettifyErrorMessage(validationResult.error.message));
|
|
76
63
|
}
|
|
77
|
-
return
|
|
64
|
+
return validationResult.data;
|
|
65
|
+
};
|
|
66
|
+
exports.validate = validate;
|
|
67
|
+
const prettifyErrorMessage = (issues) => {
|
|
68
|
+
const issuesArray = JSON.parse(issues);
|
|
69
|
+
return issuesArray.map((issue) => {
|
|
70
|
+
const { code, path, message } = issue;
|
|
71
|
+
const flattenPath = path.map(part => typeof part === 'number' ? `[${part}]` : part);
|
|
72
|
+
const fullPath = flattenPath.join('.');
|
|
73
|
+
if (code === 'custom') {
|
|
74
|
+
return `${message.toLowerCase()}. Error code: ${code}.`;
|
|
75
|
+
}
|
|
76
|
+
return `"${fullPath}" parameter is ${message.toLowerCase()}. Error code: ${code}.`;
|
|
77
|
+
});
|
|
78
78
|
};
|
|
79
|
-
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC92YWxpZGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBZ0M7QUFFaEMscUNBQWdDO0FBRWhDLHNDQUFpQztBQUlqQyxNQUFNLEVBQUMsbUJBQW1CLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFFckMsTUFBTSxFQUFDLG1CQUFtQixFQUFFLG1CQUFtQixFQUFDLEdBQUcsZUFBTSxDQUFDO0FBRTFELE1BQU0sa0JBQWtCLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2hGLE1BQU0saUJBQWlCLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRS9FOztHQUVHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FDN0IsUUFBYTtJQUViLE9BQU8sUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyw0QkFBNEIsQ0FDbkMsUUFBYTtJQUViLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUNyQyxNQUFNLElBQUksS0FBSyxDQUNiLG9HQUFvRyxDQUNyRyxDQUFDO0tBQ0g7SUFFRCxPQUFPLE9BQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM5QixJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNoQixXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNsQyxXQUFXLEVBQUUs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bXBvcnQge1pvZElzc3VlLCB6fSBmcm9tICd6b2QnO1xuXG5pbXBvcnQge0VSUk9SU30gZnJvbSAnLi9lcnJvcnMnO1xuXG5pbXBvcnQge0NPTkZJR30gZnJvbSAnLi4vY29uZmlnJztcblxuaW1wb3J0IHtJbXBsfSBmcm9tICcuLi90eXBlcy9pbXBsJztcblxuY29uc3Qge0ltcGxWYWxpZGF0aW9uRXJyb3J9ID0gRVJST1JTO1xuXG5jb25zdCB7QUdHUkVHQVRJT05fTUVUUklDUywgQUdHUkVHQVRJT05fTUVUSE9EU30gPSBDT05GSUc7XG5cbmNvbnN0IGFnZ3JlZ2F0aW9uTWV0aG9kcyA9IEFHR1JFR0FUSU9OX01FVEhPRFMubWFwKG1ldGhvZCA9PiB6LmxpdGVyYWwobWV0aG9kKSk7XG5jb25zdCBhZ2dyZWdhdGlvbk1ldHJpYyA9IEFHR1JFR0FUSU9OX01FVFJJQ1MubWFwKG1ldHJpYyA9PiB6LmxpdGVyYWwobWV0cmljKSk7XG5cbi8qKlxuICogWm9kIGxpdGVyYWwgdW5pb24gdmFsaWRhdG9yIHdoaWNoIGNoZWNrcyBpZiBtZW1iZXJzIGFyZSBtb3JlIHRoYW4gMi5cbiAqL1xuZnVuY3Rpb24gaXNWYWxpZFpvZExpdGVyYWxVbmlvbjxUIGV4dGVuZHMgei5ab2RMaXRlcmFsPHVua25vd24+PihcbiAgbGl0ZXJhbHM6IFRbXVxuKTogbGl0ZXJhbHMgaXMgW1QsIFQsIC4uLlRbXV0ge1xuICByZXR1cm4gbGl0ZXJhbHMubGVuZ3RoID49IDI7XG59XG5cbi8qKlxuICogTGl0ZXJhbCB1bmlvbiB0eXBlIGhlbHBlci5cbiAqL1xuZnVuY3Rpb24gY29uc3RydWN0Wm9kTGl0ZXJhbFVuaW9uVHlwZTxUIGV4dGVuZHMgei5ab2RMaXRlcmFsPHVua25vd24+PihcbiAgbGl0ZXJhbHM6IFRbXVxuKSB7XG4gIGlmICghaXNWYWxpZFpvZExpdGVyYWxVbmlvbihsaXRlcmFscykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnTGl0ZXJhbHMgcGFzc2VkIGRvIG5vdCBtZWV0IHRoZSBjcml0ZXJpYSBmb3IgY29uc3RydWN0aW5nIGEgdW5pb24gc2NoZW1hLCB0aGUgbWluaW11bSBsZW5ndGggaXMgMi4nXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB6LnVuaW9uKGxpdGVyYWxzKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0aW9uIHNjaGVtYSBmb3IgaW1wbCBmaWxlcy5cbiAqL1xuY29uc3QgaW1wbFZhbGlkYXRpb24gPSB6Lm9iamVjdCh7XG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGFnZ3JlZ2F0aW9uOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICAnYWdncmVnYXRpb24tbWV0cmljcyc6IHouYXJyYXkoXG4gICAgICAgIGNvbnN0cnVjdFpvZExpdGVyYWxVbmlvblR5cGUoYWdncmVnYXRpb25NZXRyaWMpXG4gICAgICApLFxuICAgICAgJ2FnZ3JlZ2F0aW9uLW1ldGhvZCc6XG4gICAgICAgIGNvbnN0cnVjdFpvZExpdGVyYWxVbmlvblR5cGUoYWdncmVnYXRpb25NZXRob2RzKS5kZWZhdWx0KCdzdW0nKSxcbiAgICB9KVxuICAgIC5vcHRpb25hbCgpLFxuICB0YWdzOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBraW5kOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjb21wbGV4aXR5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjYXRlZ29yeTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLm51bGxhYmxlKCksXG4gIGluaXRpYWxpemU6IHoub2JqZWN0KHtcbiAgICBtb2RlbHM6IHouYXJyYXkoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIG5hbWU6IHouc3RyaW5nKCksXG4gICAgICAgIGtpbmQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgcGF0aDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICBtb2RlbDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICBjb25maWc6IHoucmVjb3JkKHouc3RyaW5nKCksIHouYW55KCkpLm9wdGlvbmFsKCksXG4gICAgICB9KVxuICAgICksXG4gIH0pLFxuICBncmFwaDogelxuICAgIC5vYmplY3Qoe1xuICAgICAgY2hpbGRyZW46IHoucmVjb3JkKHouc3RyaW5nKCksIHouYW55KCkpLFxuICAgIH0pXG4gICAgLnJlcXVpcmVkKCksXG59KTtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgZ2l2ZW4gYGltcGxgIG9iamVjdCB0byBtYXRjaCBwYXR0ZXJuLlxuICovXG5leHBvcnQgY29uc3QgdmFsaWRhdGVJbXBsID0gKGltcGw6IEltcGwpID0+IHtcbiAgY29uc3QgdmFsaWRhdGVkSW1wbCA9IGltcGxWYWxpZGF0aW9uLnNhZmVQYXJzZShpbXBsKTtcblxuICBpZiAoIXZhbGlkYXRlZEltcGwuc3VjY2Vzcykge1xuICAgIGNvbnN0IHByZXR0aWZ5RXJyb3JNZXNzYWdlID0gKGlzc3Vlczogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBpc3N1ZXNBcnJheSA9IEpTT04ucGFyc2UoaXNzdWVzKTtcblxuICAgICAgcmV0dXJuIGlzc3Vlc0FycmF5Lm1hcCgoaXNzdWU6IFpvZElzc3VlKSA9PiB7XG4gICAgICAgIGNvbnN0IHtjb2RlLCBwYXRoLCBtZXNzYWdlfSA9IGlzc3VlO1xuICAgICAgICBjb25zdCBmbGF0dGVuUGF0aCA9IHBhdGgubWFwKHBhcnQgPT5cbiAgICAgICAgICB0eXBlb2YgcGFydCA9PT0gJ251bWJlcicgPyBgWyR7cGFydH1dYCA6IHBhcnRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZnVsbFBhdGggPSBmbGF0dGVuUGF0aC5qb2luKCcuJyk7XG5cbiAgICAgICAgcmV0dXJuIGBcIiR7ZnVsbFBhdGh9XCIgcGFyYW1ldGVyIGlzICR7bWVzc2FnZS50b0xvd2VyQ2FzZSgpfS4gRXJyb3IgY29kZTogJHtjb2RlfS5gO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHRocm93IG5ldyBJbXBsVmFsaWRhdGlvbkVycm9yKFxuICAgICAgcHJldHRpZnlFcnJvck1lc3NhZ2UodmFsaWRhdGVkSW1wbC5lcnJvci5tZXNzYWdlKVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVkSW1wbC5kYXRhO1xufTtcbiJdfQ==
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC92YWxpZGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBMkM7QUFFM0MscUNBQWdDO0FBRWhDLHNEQUF5RDtBQUN6RCxvREFBc0Q7QUFHdEQsTUFBTSxFQUFDLHVCQUF1QixFQUFFLG9CQUFvQixFQUFDLEdBQUcsZUFBTSxDQUFDO0FBRS9EOztHQUVHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2xDLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLFlBQVksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzlDLFdBQVcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUM5QyxXQUFXLEVBQUUsT0FBQztTQUNYLE1BQU0sQ0FBQztRQUNOLE9BQU8sRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM1QixJQUFJLEVBQUUsT0FBQyxDQUFDLElBQUksQ0FBQyxpQ0FBbUIsQ0FBQztLQUNsQyxDQUFDO1NBQ0QsUUFBUSxFQUFFO0lBQ2IsTUFBTSxFQUFFLE9BQUM7U0FDTixLQUFLLENBQ0osT0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNQLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1FBQ2hCLFdBQVcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1FBQ3ZCLFdBQVcsRUFBRSxPQUFDLENBQUMsSUFBSSxDQUFDLDhCQUFpQixDQUFDO1FBQ3RDLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO0tBQ2pCLENBQUMsQ0FDSDtTQUNBLFFBQVEsRUFBRTtTQUNWLFFBQVEsRUFBRTtJQUNiLElBQUksRUFB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LENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1pvZElzc3VlLCBab2RTY2hlbWEsIHp9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7RVJST1JTfSBmcm9tICcuL2Vycm9ycyc7XG5cbmltcG9ydCB7QUdHUkVHQVRJT05fTUVUSE9EU30gZnJvbSAnLi4vdHlwZXMvYWdncmVnYXRpb24nO1xuaW1wb3J0IHtBR0dSRUdBVElPTl9UWVBFU30gZnJvbSAnLi4vdHlwZXMvcGFyYW1ldGVycyc7XG5pbXBvcnQge01hbmlmZXN0fSBmcm9tICcuLi90eXBlcy9tYW5pZmVzdCc7XG5cbmNvbnN0IHtNYW5pZmVzdFZhbGlkYXRpb25FcnJvciwgSW5wdXRWYWxpZGF0aW9uRXJyb3J9ID0gRVJST1JTO1xuXG4vKipcbiAqIFZhbGlkYXRpb24gc2NoZW1hIGZvciBtYW5pZmVzdHMuXG4gKi9cbmNvbnN0IG1hbmlmZXN0VmFsaWRhdGlvbiA9IHoub2JqZWN0KHtcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgJ2lmLXZlcnNpb24nOiB6LnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KCcnKSxcbiAgYWdncmVnYXRpb246IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIG1ldHJpY3M6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gICAgICB0eXBlOiB6LmVudW0oQUdHUkVHQVRJT05fTUVUSE9EUyksXG4gICAgfSlcbiAgICAub3B0aW9uYWwoKSxcbiAgcGFyYW1zOiB6XG4gICAgLmFycmF5KFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBuYW1lOiB6LnN0cmluZygpLFxuICAgICAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKSxcbiAgICAgICAgYWdncmVnYXRpb246IHouZW51bShBR0dSRUdBVElPTl9UWVBFUyksXG4gICAgICAgIHVuaXQ6IHouc3RyaW5nKCksXG4gICAgICB9KVxuICAgIClcbiAgICAub3B0aW9uYWwoKVxuICAgIC5udWxsYWJsZSgpLFxuICB0YWdzOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBraW5kOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjb21wbGV4aXR5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjYXRlZ29yeTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLm51bGxhYmxlKClcbiAgICAuZGVmYXVsdCh7fSksXG4gIGluaXRpYWxpemU6IHoub2JqZWN0KHtcbiAgICBwbHVnaW5zOiB6LnJlY29yZChcbiAgICAgIHouc3RyaW5nKCksXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhdGg6IHouc3RyaW5nKCksXG4gICAgICAgIG1ldGhvZDogei5zdHJpbmcoKSxcbiAgICAgICAgJ2dsb2JhbC1jb25maWcnOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LmFueSgpKS5vcHRpb25hbCgpLFxuICAgICAgfSlcbiAgICApLFxuICAgIG91dHB1dHM6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgfSksXG4gIHRyZWU6IHoucmVjb3JkKHouc3RyaW5nKCksIHouYW55KCkpLFxufSk7XG5cbi8qKlxuICogVmFsaWRhdGVzIGdpdmVuIGBtYW5pZmVzdGAgb2JqZWN0IHRvIG1hdGNoIHBhdHRlcm4uXG4gKi9cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZU1hbmlmZXN0ID0gKG1hbmlmZXN0OiBNYW5pZmVzdCkgPT4ge1xuICByZXR1cm4gdmFsaWRhdGUobWFuaWZlc3RWYWxpZGF0aW9uLCBtYW5pZmVzdCwgTWFuaWZlc3RWYWxpZGF0aW9uRXJyb3IpO1xufTtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgZ2l2ZW4gYG9iamVjdGAgd2l0aCBnaXZlbiBgc2NoZW1hYC5cbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlID0gPFQ+KFxuICBzY2hlbWE6IFpvZFNjaGVtYTxUPixcbiAgb2JqZWN0OiBhbnksXG4gIGVycm9yQ29uc3RydWN0b3I6IEVycm9yQ29uc3RydWN0b3IgPSBJbnB1dFZhbGlkYXRpb25FcnJvclxuKSA9PiB7XG4gIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBzY2hlbWEuc2FmZVBhcnNlKG9iamVjdCk7XG5cbiAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JDb25zdHJ1Y3RvcihcbiAgICAgIHByZXR0aWZ5RXJyb3JNZXNzYWdlKHZhbGlkYXRpb25SZXN1bHQuZXJyb3IubWVzc2FnZSlcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRpb25SZXN1bHQuZGF0YTtcbn07XG5cbmNvbnN0IHByZXR0aWZ5RXJyb3JNZXNzYWdlID0gKGlzc3Vlczogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGlzc3Vlc0FycmF5ID0gSlNPTi5wYXJzZShpc3N1ZXMpO1xuXG4gIHJldHVybiBpc3N1ZXNBcnJheS5tYXAoKGlzc3VlOiBab2RJc3N1ZSkgPT4ge1xuICAgIGNvbnN0IHtjb2RlLCBwYXRoLCBtZXNzYWdlfSA9IGlzc3VlO1xuICAgIGNvbnN0IGZsYXR0ZW5QYXRoID0gcGF0aC5tYXAocGFydCA9PlxuICAgICAgdHlwZW9mIHBhcnQgPT09ICdudW1iZXInID8gYFske3BhcnR9XWAgOiBwYXJ0XG4gICAgKTtcbiAgICBjb25zdCBmdWxsUGF0aCA9IGZsYXR0ZW5QYXRoLmpvaW4oJy4nKTtcblxuICAgIGlmIChjb2RlID09PSAnY3VzdG9tJykge1xuICAgICAgcmV0dXJuIGAke21lc3NhZ2UudG9Mb3dlckNhc2UoKX0uIEVycm9yIGNvZGU6ICR7Y29kZX0uYDtcbiAgICB9XG4gICAgcmV0dXJuIGBcIiR7ZnVsbFBhdGh9XCIgcGFyYW1ldGVyIGlzICR7bWVzc2FnZS50b0xvd2VyQ2FzZSgpfS4gRXJyb3IgY29kZTogJHtjb2RlfS5gO1xuICB9KTtcbn07XG4iXX0=
|
package/build/util/yaml.js
CHANGED
|
@@ -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,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3lhbWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnREFBa0M7QUFDbEMsMkNBQTZCO0FBRTdCLDhDQUFnQztBQUVoQzs7R0FFRztBQUNJLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxFQUFLLFFBQWdCLEVBQWMsRUFBRTtJQUM1RSxNQUFNLGNBQWMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQU0sQ0FBQztBQUN4QyxDQUFDLENBQUM7QUFKVyxRQUFBLG9CQUFvQix3QkFJL0I7QUFFRjs7R0FFRztBQUNJLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFBRSxNQUFXLEVBQUUsVUFBa0IsRUFBRSxFQUFFO0lBQ3RFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFFckQsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQUM7QUFOVyxRQUFBLGNBQWMsa0JBTXpCO0FBRUY7O0dBRUc7QUFDSSxNQUFNLGlCQUFpQixHQUFHLENBQUMsUUFBZ0IsRUFBRSxFQUFFO0lBQ3BELE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUMsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDM0MsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTNDLE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFQVyxRQUFBLGlCQUFpQixxQkFPNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcy9wcm9taXNlcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgKiBhcyBZQU1MIGZyb20gJ2pzLXlhbWwnO1xuXG4vKipcbiAqIFJlYWRzIGFuZCBwYXJzZXMgYHlhbWxgIGZpbGUgdG8gb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3Qgb3BlbllhbWxGaWxlQXNPYmplY3QgPSBhc3luYyA8VD4oZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCB5YW1sRmlsZUJ1ZmZlciA9IGF3YWl0IGZzLnJlYWRGaWxlKGZpbGVQYXRoLCAndXRmOCcpO1xuXG4gIHJldHVybiBZQU1MLmxvYWQoeWFtbEZpbGVCdWZmZXIpIGFzIFQ7XG59O1xuXG4vKipcbiAqIFNhdmVzIGdpdmVuIGB5YW1sYCBkdW1wIGFzIGEgZmlsZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNhdmVZYW1sRmlsZUFzID0gYXN5bmMgKG9iamVjdDogYW55LCBwYXRoVG9GaWxlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgZGlyUGF0aCA9IHBhdGguZGlybmFtZShwYXRoVG9GaWxlKTtcbiAgYXdhaXQgZnMubWtkaXIoZGlyUGF0aCwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuICBjb25zdCB5YW1sU3RyaW5nID0gWUFNTC5kdW1wKG9iamVjdCwge25vUmVmczogdHJ1ZX0pO1xuXG4gIHJldHVybiBmcy53cml0ZUZpbGUocGF0aFRvRmlsZSwgeWFtbFN0cmluZyk7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiBnaXZlbiBgZmlsZU5hbWVgIGlzIHlhbWwuXG4gKi9cbmV4cG9ydCBjb25zdCBjaGVja0lmRmlsZUlzWWFtbCA9IChmaWxlTmFtZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHlhbWxGaWxlVHlwZXMgPSBbJ3lhbWwnLCAneW1sJ107XG4gIGNvbnN0IHNwbGl0dGVkUGFydHMgPSBmaWxlTmFtZS5zcGxpdCgnLicpO1xuICBjb25zdCBsYXN0SW5kZXggPSBzcGxpdHRlZFBhcnRzLmxlbmd0aCAtIDE7XG4gIGNvbnN0IGV4dGVuc2lvbiA9IHNwbGl0dGVkUGFydHNbbGFzdEluZGV4XTtcblxuICByZXR1cm4geWFtbEZpbGVUeXBlcy5pbmNsdWRlcyhleHRlbnNpb24pO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
name: azure-importer
|
|
2
|
+
description: example impl invoking Azure Importer model
|
|
3
|
+
tags:
|
|
4
|
+
initialize:
|
|
5
|
+
plugins:
|
|
6
|
+
azure-importer:
|
|
7
|
+
path: "@grnsft/if-unofficial-plugins"
|
|
8
|
+
method: AzureImporter
|
|
9
|
+
kind: plugin
|
|
10
|
+
tree:
|
|
11
|
+
children:
|
|
12
|
+
child:
|
|
13
|
+
pipeline:
|
|
14
|
+
- azure-importer
|
|
15
|
+
config:
|
|
16
|
+
azure-importer:
|
|
17
|
+
azure-observation-window: 5 min # value and unit must be space separated
|
|
18
|
+
azure-observation-aggregation: "average"
|
|
19
|
+
azure-subscription-id: 42a3c589-87ce-4478-8ed6-9adc11b81965
|
|
20
|
+
azure-resource-group: Group1
|
|
21
|
+
azure-vm-name: VM1
|
|
22
|
+
inputs:
|
|
23
|
+
- timestamp: "2023-11-02T10:35:31.820Z"
|
|
24
|
+
duration: 3600
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
name: basic-demo
|
|
2
|
+
description: null
|
|
3
|
+
tags: null
|
|
4
|
+
initialize:
|
|
5
|
+
plugins:
|
|
6
|
+
mock-observations:
|
|
7
|
+
path: "@grnsft/if-plugins"
|
|
8
|
+
method: MockObservations
|
|
9
|
+
global-config:
|
|
10
|
+
timestamp-from: 2024-02-26T00:00
|
|
11
|
+
timestamp-to: 2024-02-26T00:10
|
|
12
|
+
duration: 60
|
|
13
|
+
components:
|
|
14
|
+
- cloud/instance-type: Standard_A1_v2
|
|
15
|
+
- cloud/instance-type: Standard_A2_v2
|
|
16
|
+
generators:
|
|
17
|
+
common:
|
|
18
|
+
cloud/vendor: azure
|
|
19
|
+
cloud/region: uk-west
|
|
20
|
+
geolocation: 37.7749,-122.4194
|
|
21
|
+
randint:
|
|
22
|
+
cpu/utilization:
|
|
23
|
+
min: 1
|
|
24
|
+
max: 99
|
|
25
|
+
teads-curve:
|
|
26
|
+
path: "@grnsft/if-unofficial-plugins"
|
|
27
|
+
method: TeadsCurve
|
|
28
|
+
global-config:
|
|
29
|
+
interpolation: spline
|
|
30
|
+
group-by:
|
|
31
|
+
path: "builtin"
|
|
32
|
+
method: GroupBy
|
|
33
|
+
cloud-metadata:
|
|
34
|
+
method: CloudInstanceMetadata
|
|
35
|
+
path: "@grnsft/if-plugins"
|
|
36
|
+
operational-carbon:
|
|
37
|
+
path: "@grnsft/if-plugins"
|
|
38
|
+
method: Multiply
|
|
39
|
+
global-config:
|
|
40
|
+
input-parameters: ["cpu/energy", "grid/carbon-intensity"]
|
|
41
|
+
output-parameter: "cpu/carbon"
|
|
42
|
+
watttime:
|
|
43
|
+
path: "@grnsft/if-unofficial-plugins"
|
|
44
|
+
method: WattTimeGridEmissions
|
|
45
|
+
global-config:
|
|
46
|
+
# username: ENV_WATT_TIME_USERNAME
|
|
47
|
+
# password: ENV_WATT_TIME_PASSWORD
|
|
48
|
+
username: manushak
|
|
49
|
+
password: "@watt-time17"
|
|
50
|
+
tree:
|
|
51
|
+
children:
|
|
52
|
+
application:
|
|
53
|
+
pipeline:
|
|
54
|
+
- mock-observations
|
|
55
|
+
# - group-by
|
|
56
|
+
- cloud-metadata
|
|
57
|
+
- teads-curve
|
|
58
|
+
- watttime
|
|
59
|
+
- operational-carbon
|
|
60
|
+
defaults:
|
|
61
|
+
grid/carbon-intensity: 250
|
|
62
|
+
geolocation: 37.7749,-122.4194
|
|
63
|
+
# config:
|
|
64
|
+
# group-by:
|
|
65
|
+
# group:
|
|
66
|
+
# - cloud/region
|
|
67
|
+
# - cloud/instance-type
|
|
68
|
+
inputs:
|
|
69
|
+
- timestamp: "2024-02-26 00:00:00"
|
|
70
|
+
duration: 60
|
|
71
|
+
cloud/instance-type: Standard_A1_v2
|
|
72
|
+
cloud/vendor: azure
|
|
73
|
+
cloud/region: uk-west
|
|
74
|
+
geolocation: 37.7749,-122.4194
|
|
75
|
+
cpu/utilization: 15
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
name: basic-demo
|
|
2
|
+
description:
|
|
3
|
+
tags:
|
|
4
|
+
initialize:
|
|
5
|
+
plugins:
|
|
6
|
+
teads-curve:
|
|
7
|
+
path: '@grnsft/if-unofficial-plugins'
|
|
8
|
+
method: TeadsCurve
|
|
9
|
+
global-config:
|
|
10
|
+
interpolation: spline
|
|
11
|
+
tree:
|
|
12
|
+
children:
|
|
13
|
+
child-0:
|
|
14
|
+
defaults:
|
|
15
|
+
cpu/thermal-design-power: 100
|
|
16
|
+
pipeline:
|
|
17
|
+
- teads-curve
|
|
18
|
+
inputs:
|
|
19
|
+
- timestamp: 2023-07-06T00:00
|
|
20
|
+
duration: 1
|
|
21
|
+
cpu/utilization: 20
|
|
22
|
+
- timestamp: 2023-07-06T00:01
|
|
23
|
+
duration: 1
|
|
24
|
+
cpu/utilization: 80
|
|
25
|
+
- timestamp: 2023-07-06T00:02
|
|
26
|
+
duration: 1
|
|
27
|
+
cpu/utilization: 20
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
name: boavizta-demo
|
|
2
|
+
description:
|
|
3
|
+
tags:
|
|
4
|
+
initialize:
|
|
5
|
+
plugins:
|
|
6
|
+
boavizta-cpu:
|
|
7
|
+
method: BoaviztaCpuOutput
|
|
8
|
+
path: '@grnsft/if-unofficial-plugins'
|
|
9
|
+
global-config:
|
|
10
|
+
allocation: LINEAR
|
|
11
|
+
verbose: true
|
|
12
|
+
"sum":
|
|
13
|
+
path: "@grnsft/if-plugins"
|
|
14
|
+
method: Sum
|
|
15
|
+
global-config:
|
|
16
|
+
input-parameters:
|
|
17
|
+
- cpu/energy
|
|
18
|
+
- network/energy
|
|
19
|
+
output-parameter: energy
|
|
20
|
+
"sci-m":
|
|
21
|
+
path: "@grnsft/if-plugins"
|
|
22
|
+
method: SciM
|
|
23
|
+
"sci-o":
|
|
24
|
+
path: "@grnsft/if-plugins"
|
|
25
|
+
method: SciO
|
|
26
|
+
"sci":
|
|
27
|
+
path: "@grnsft/if-plugins"
|
|
28
|
+
method: Sci
|
|
29
|
+
global-config:
|
|
30
|
+
functional-unit: ''
|
|
31
|
+
functional-unit-time: '1-day'
|
|
32
|
+
"time-sync":
|
|
33
|
+
method: TimeSync
|
|
34
|
+
path: "builtin"
|
|
35
|
+
global-config:
|
|
36
|
+
start-time: "2023-12-12T00:00:00.000Z"
|
|
37
|
+
end-time: "2023-12-12T00:01:00.000Z"
|
|
38
|
+
interval: 5
|
|
39
|
+
allow-padding: true
|
|
40
|
+
tree:
|
|
41
|
+
children:
|
|
42
|
+
child-1:
|
|
43
|
+
pipeline:
|
|
44
|
+
- boavizta-cpu
|
|
45
|
+
- sum
|
|
46
|
+
- sci-m
|
|
47
|
+
- sci-o
|
|
48
|
+
- time-sync
|
|
49
|
+
- sci
|
|
50
|
+
config:
|
|
51
|
+
defaults:
|
|
52
|
+
cpu/thermal-design-power: 100
|
|
53
|
+
grid/carbon-intensity: 800
|
|
54
|
+
device/emissions-embodied: 1533.120 # gCO2eq
|
|
55
|
+
time-reserved: 3600 # 1hr in seconds
|
|
56
|
+
device/expected-lifespan: 94608000 # 3 years in seconds
|
|
57
|
+
resources-reserved: 1
|
|
58
|
+
resources-total: 8
|
|
59
|
+
cpu/number-cores: 24
|
|
60
|
+
cpu/name: Intel® Core™ i7-1185G7
|
|
61
|
+
inputs:
|
|
62
|
+
- timestamp: "2023-12-12T00:00:00.000Z"
|
|
63
|
+
cloud/instance-type: A1
|
|
64
|
+
region: uk-west
|
|
65
|
+
duration: 1
|
|
66
|
+
cpu/utilization: 50
|
|
67
|
+
network/energy: 0.000001
|
|
68
|
+
- timestamp: "2023-12-12T00:00:01.000Z"
|
|
69
|
+
duration: 5
|
|
70
|
+
cpu/utilization: 20
|
|
71
|
+
cloud/instance-type: A1
|
|
72
|
+
region: uk-west
|
|
73
|
+
network/energy: 0.000001
|
|
74
|
+
- timestamp: "2023-12-12T00:00:06.000Z"
|
|
75
|
+
duration: 7
|
|
76
|
+
cpu/utilization: 15
|
|
77
|
+
cloud/instance-type: A1
|
|
78
|
+
region: uk-west
|
|
79
|
+
network/energy: 0.000001
|
|
80
|
+
- timestamp: "2023-12-12T00:00:13.000Z"
|
|
81
|
+
duration: 30
|
|
82
|
+
cloud/instance-type: A1
|
|
83
|
+
region: uk-west
|
|
84
|
+
cpu/utilization: 15
|
|
85
|
+
network/energy: 0.000001
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
name: boavizta
|
|
1
|
+
name: boavizta
|
|
2
2
|
description: calls boavizta api
|
|
3
3
|
tags:
|
|
4
4
|
initialize:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
plugins:
|
|
6
|
+
"boavizta-cpu":
|
|
7
|
+
method: BoaviztaCpuOutput
|
|
8
|
+
path: "@grnsft/if-unofficial-plugins"
|
|
9
|
+
global-config:
|
|
9
10
|
allocation: LINEAR
|
|
10
11
|
verbose: true
|
|
11
|
-
|
|
12
|
+
tree:
|
|
12
13
|
children:
|
|
13
|
-
|
|
14
|
-
pipeline:
|
|
14
|
+
child:
|
|
15
|
+
pipeline:
|
|
15
16
|
- boavizta-cpu
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
physical-processor: Intel® Core™ i7-1185G7
|
|
17
|
+
defaults:
|
|
18
|
+
cpu/number-cores: 24
|
|
19
|
+
cpu/name: Intel® Core™ i7-1185G7
|
|
20
20
|
inputs:
|
|
21
21
|
- timestamp: 2023-07-06T00:00 # [KEYWORD] [NO-SUBFIELDS] time when measurement occurred
|
|
22
22
|
duration: 3600 # Secs
|
|
23
|
-
cpu
|
|
23
|
+
cpu/utilization: 18.392
|
|
24
24
|
- timestamp: 2023-08-06T00:00 # [KEYWORD] [NO-SUBFIELDS] time when measurement occurred
|
|
25
25
|
duration: 3600 # Secs
|
|
26
|
-
cpu
|
|
26
|
+
cpu/utilization: 16
|
|
@@ -2,20 +2,19 @@ name: ccf-demo
|
|
|
2
2
|
description: example impl invoking CCF model
|
|
3
3
|
tags:
|
|
4
4
|
initialize:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
path: "@grnsft/if-unofficial-
|
|
9
|
-
|
|
5
|
+
plugins:
|
|
6
|
+
ccf:
|
|
7
|
+
method: CloudCarbonFootprint
|
|
8
|
+
path: "@grnsft/if-unofficial-plugins"
|
|
9
|
+
tree:
|
|
10
10
|
children:
|
|
11
11
|
child:
|
|
12
12
|
pipeline:
|
|
13
13
|
- ccf
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
instance-type: 'm5n.large'
|
|
14
|
+
defaults:
|
|
15
|
+
cloud/vendor: "aws"
|
|
16
|
+
cloud/instance-type: "m5n.large"
|
|
18
17
|
inputs:
|
|
19
18
|
- timestamp: 2023-07-06T00:00 # [KEYWORD] [NO-SUBFIELDS] time when measurement occurred
|
|
20
19
|
duration: 1
|
|
21
|
-
cpu
|
|
20
|
+
cpu/utilization: 10
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
name: cloud-instance-metadata
|
|
2
|
+
description: example impl invoking Cloud Instance Metadata plugin
|
|
3
|
+
tags:
|
|
4
|
+
initialize:
|
|
5
|
+
plugins:
|
|
6
|
+
cloud-instance-metadata:
|
|
7
|
+
method: CloudInstanceMetadata
|
|
8
|
+
path: "@grnsft/if-plugins"
|
|
9
|
+
tree:
|
|
10
|
+
children:
|
|
11
|
+
child:
|
|
12
|
+
pipeline:
|
|
13
|
+
- cloud-instance-metadata
|
|
14
|
+
config:
|
|
15
|
+
inputs:
|
|
16
|
+
- timestamp: 2023-07-06T00:00 # [KEYWORD] [NO-SUBFIELDS] time when measurement occurred
|
|
17
|
+
cloud/vendor: aws
|
|
18
|
+
cloud/instance-type: m5n.large
|
|
19
|
+
duration: 100
|
|
20
|
+
cpu/utilization: 10
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: coud-instanmce-metadata-demo
|
|
2
|
+
description: null
|
|
3
|
+
tags: null
|
|
4
|
+
initialize:
|
|
5
|
+
plugins:
|
|
6
|
+
teads-curve:
|
|
7
|
+
path: '@grnsft/if-unofficial-plugins'
|
|
8
|
+
method: TeadsCurve
|
|
9
|
+
global-config:
|
|
10
|
+
interpolation: spline
|
|
11
|
+
cloud-instance-metadata:
|
|
12
|
+
method: CloudInstanceMetadata
|
|
13
|
+
path: "@grnsft/if-plugins"
|
|
14
|
+
tree:
|
|
15
|
+
children:
|
|
16
|
+
child-0:
|
|
17
|
+
defaults:
|
|
18
|
+
cpu/thermal-design-power: 100
|
|
19
|
+
cloud/vendor: aws
|
|
20
|
+
cloud/instance-type: m5n.large
|
|
21
|
+
pipeline:
|
|
22
|
+
- teads-curve
|
|
23
|
+
- cloud-instance-metadata
|
|
24
|
+
inputs:
|
|
25
|
+
- timestamp: 2023-07-06T00:00
|
|
26
|
+
duration: 10
|
|
27
|
+
cpu/utilization: 80
|
|
28
|
+
- timestamp: 2023-07-06T00:01
|
|
29
|
+
duration: 10
|
|
30
|
+
cpu/utilization: 80
|
|
31
|
+
outputs:
|
|
32
|
+
- timestamp: 2023-07-06T00:00
|
|
33
|
+
duration: 10
|
|
34
|
+
cpu/utilization: 80
|
|
35
|
+
cpu/thermal-design-power: 100
|
|
36
|
+
cpu/energy: 0.00025568089430894314
|
|
37
|
+
- timestamp: 2023-07-06T00:01
|
|
38
|
+
duration: 10
|
|
39
|
+
cpu/utilization: 80
|
|
40
|
+
cpu/thermal-design-power: 100
|
|
41
|
+
cpu/energy: 0.00025568089430894314
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: co2js-demo
|
|
2
|
+
description: example impl invoking CO2.JS model
|
|
3
|
+
tags:
|
|
4
|
+
initialize:
|
|
5
|
+
plugins:
|
|
6
|
+
co2js:
|
|
7
|
+
method: Co2js
|
|
8
|
+
path: "@grnsft/if-unofficial-plugins"
|
|
9
|
+
global-config:
|
|
10
|
+
options:
|
|
11
|
+
dataReloadRatio: 0.6
|
|
12
|
+
firstVisitPercentage: 0.9
|
|
13
|
+
returnVisitPercentage: 0.1
|
|
14
|
+
gridIntensity:
|
|
15
|
+
device: 560.98
|
|
16
|
+
dataCenter:
|
|
17
|
+
country: "TWN"
|
|
18
|
+
tree:
|
|
19
|
+
children:
|
|
20
|
+
child:
|
|
21
|
+
pipeline:
|
|
22
|
+
- co2js
|
|
23
|
+
config:
|
|
24
|
+
co2js:
|
|
25
|
+
type: swd
|
|
26
|
+
green-web-host: true
|
|
27
|
+
inputs:
|
|
28
|
+
- timestamp: 2023-07-06T00:00
|
|
29
|
+
duration: 1
|
|
30
|
+
network/data/bytes: 1000000
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: coefficient-demo
|
|
2
|
+
description:
|
|
3
|
+
tags:
|
|
4
|
+
initialize:
|
|
5
|
+
plugins:
|
|
6
|
+
coefficient:
|
|
7
|
+
method: Coefficient
|
|
8
|
+
path: "@grnsft/if-plugins"
|
|
9
|
+
global-config:
|
|
10
|
+
input-parameter: "carbon"
|
|
11
|
+
coefficient: 3
|
|
12
|
+
output-parameter: "carbon-product"
|
|
13
|
+
tree:
|
|
14
|
+
children:
|
|
15
|
+
child:
|
|
16
|
+
pipeline:
|
|
17
|
+
- coefficient
|
|
18
|
+
config:
|
|
19
|
+
sum:
|
|
20
|
+
inputs:
|
|
21
|
+
- timestamp: 2023-08-06T00:00
|
|
22
|
+
duration: 3600
|
|
23
|
+
carbon: 30
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: csv-export-demo
|
|
2
|
+
description: example exporting output to a csv file
|
|
3
|
+
tags:
|
|
4
|
+
initialize:
|
|
5
|
+
plugins:
|
|
6
|
+
csv-exporter:
|
|
7
|
+
method: CsvExport
|
|
8
|
+
path: "@grnsft/if-plugins"
|
|
9
|
+
tree:
|
|
10
|
+
children:
|
|
11
|
+
child:
|
|
12
|
+
pipeline:
|
|
13
|
+
- csv-exporter
|
|
14
|
+
config:
|
|
15
|
+
csv-exporter:
|
|
16
|
+
output-path: ./examples/outputs/csv-test.csv
|
|
17
|
+
headers:
|
|
18
|
+
- timestamp
|
|
19
|
+
- duration
|
|
20
|
+
- carbon
|
|
21
|
+
- energy
|
|
22
|
+
inputs:
|
|
23
|
+
- timestamp: 2023-07-06T00:00
|
|
24
|
+
duration: 1
|
|
25
|
+
operational-carbon: 0.02
|
|
26
|
+
embodied-carbon: 5
|
|
27
|
+
energy: 3.5
|
|
28
|
+
carbon: 5.02
|
|
29
|
+
- timestamp: 2023-07-06T00:10
|
|
30
|
+
duration: 1
|
|
31
|
+
operational-carbon: 0.03
|
|
32
|
+
embodied-carbon: 4
|
|
33
|
+
energy: 2.9
|
|
34
|
+
carbon: 4.03
|