@grnsft/if 0.7.0 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/common/config/index.d.ts +1 -0
- package/build/common/config/index.js +6 -0
- package/build/common/config/strings.d.ts +13 -0
- package/build/common/config/strings.js +21 -0
- package/build/common/lib/load.d.ts +6 -0
- package/build/common/lib/load.js +18 -0
- package/build/common/types/manifest.d.ts +13 -0
- package/build/common/types/manifest.js +3 -0
- package/build/common/util/debug-logger.d.ts +4 -0
- package/build/common/util/debug-logger.js +124 -0
- package/build/common/util/fs.d.ts +20 -0
- package/build/common/util/fs.js +94 -0
- package/build/common/util/helpers.d.ts +15 -0
- package/build/common/util/helpers.js +80 -0
- package/build/common/util/logger.d.ts +5 -0
- package/build/common/util/logger.js +39 -0
- package/build/common/util/validations.d.ts +465 -0
- package/build/common/util/validations.js +148 -0
- package/build/common/util/yaml.d.ts +12 -0
- package/build/common/util/yaml.js +59 -0
- package/build/if-check/config/config.d.ts +6 -0
- package/build/if-check/config/config.js +31 -0
- package/build/if-check/config/index.d.ts +2 -0
- package/build/if-check/config/index.js +8 -0
- package/build/if-check/config/strings.d.ts +11 -0
- package/build/if-check/config/strings.js +15 -0
- package/build/if-check/index.d.ts +2 -0
- package/build/if-check/index.js +98 -0
- package/build/if-check/types/process-args.d.ts +4 -0
- package/build/if-check/types/process-args.js +3 -0
- package/build/if-check/util/args.d.ts +10 -0
- package/build/if-check/util/args.js +56 -0
- package/build/if-check/util/helpers.d.ts +4 -0
- package/build/if-check/util/helpers.js +18 -0
- package/build/if-check/util/npm.d.ts +4 -0
- package/build/if-check/util/npm.js +59 -0
- package/build/if-csv/config/config.d.ts +6 -0
- package/build/if-csv/config/config.js +36 -0
- package/build/if-csv/config/index.d.ts +2 -0
- package/build/if-csv/config/index.js +8 -0
- package/build/if-csv/config/strings.d.ts +3 -0
- package/build/if-csv/config/strings.js +7 -0
- package/build/if-csv/index.d.ts +2 -0
- package/build/if-csv/index.js +63 -0
- package/build/if-csv/types/csv.d.ts +7 -0
- package/build/if-csv/types/csv.js +3 -0
- package/build/if-csv/types/process-args.d.ts +5 -0
- package/build/if-csv/types/process-args.js +3 -0
- package/build/if-csv/util/args.d.ts +12 -0
- package/build/if-csv/util/args.js +47 -0
- package/build/if-csv/util/helpers.d.ts +9 -0
- package/build/if-csv/util/helpers.js +95 -0
- package/build/if-diff/config/config.d.ts +6 -0
- package/build/if-diff/config/config.js +31 -0
- package/build/if-diff/config/index.d.ts +2 -0
- package/build/if-diff/config/index.js +8 -0
- package/build/if-diff/config/strings.d.ts +6 -0
- package/build/if-diff/config/strings.js +10 -0
- package/build/if-diff/index.d.ts +2 -0
- package/build/if-diff/index.js +46 -0
- package/build/if-diff/lib/compare.d.ts +10 -0
- package/build/if-diff/lib/compare.js +56 -0
- package/build/if-diff/lib/load.d.ts +63 -0
- package/build/if-diff/lib/load.js +51 -0
- package/build/if-diff/types/args.d.ts +5 -0
- package/build/if-diff/types/args.js +3 -0
- package/build/if-diff/types/compare.d.ts +7 -0
- package/build/if-diff/types/compare.js +3 -0
- package/build/if-diff/types/process-args.d.ts +4 -0
- package/build/if-diff/types/process-args.js +3 -0
- package/build/if-diff/util/args.d.ts +5 -0
- package/build/if-diff/util/args.js +51 -0
- package/build/if-diff/util/helpers.d.ts +13 -0
- package/build/if-diff/util/helpers.js +75 -0
- package/build/if-env/config/config.d.ts +6 -0
- package/build/if-env/config/config.js +37 -0
- package/build/if-env/config/index.d.ts +2 -0
- package/build/if-env/config/index.js +8 -0
- package/build/if-env/config/strings.d.ts +7 -0
- package/build/if-env/config/strings.js +11 -0
- package/build/if-env/index.d.ts +2 -0
- package/build/if-env/index.js +40 -0
- package/build/if-env/types/if-env.d.ts +8 -0
- package/build/if-env/types/if-env.js +3 -0
- package/build/if-env/types/npm.d.ts +9 -0
- package/build/if-env/types/npm.js +3 -0
- package/build/if-env/types/process-args.d.ts +5 -0
- package/build/if-env/types/process-args.js +3 -0
- package/build/if-env/util/args.d.ts +12 -0
- package/build/if-env/util/args.js +47 -0
- package/build/if-env/util/helpers.d.ts +20 -0
- package/build/if-env/util/helpers.js +94 -0
- package/build/if-env/util/npm.d.ts +24 -0
- package/build/if-env/util/npm.js +126 -0
- package/build/if-merge/config/config.d.ts +6 -0
- package/build/if-merge/config/config.js +43 -0
- package/build/if-merge/config/index.d.ts +2 -0
- package/build/if-merge/config/index.js +8 -0
- package/build/if-merge/config/strings.d.ts +5 -0
- package/build/if-merge/config/strings.js +9 -0
- package/build/if-merge/index.d.ts +2 -0
- package/build/if-merge/index.js +26 -0
- package/build/if-merge/types/process-args.d.ts +6 -0
- package/build/if-merge/types/process-args.js +3 -0
- package/build/if-merge/util/args.d.ts +9 -0
- package/build/if-merge/util/args.js +59 -0
- package/build/if-merge/util/helpers.d.ts +5 -0
- package/build/if-merge/util/helpers.js +83 -0
- package/build/if-run/builtins/coefficient/index.d.ts +16 -0
- package/build/if-run/builtins/coefficient/index.js +45 -0
- package/build/if-run/builtins/copy-param/index.d.ts +21 -0
- package/build/if-run/builtins/copy-param/index.js +58 -0
- package/build/if-run/builtins/csv-lookup/index.d.ts +16 -0
- package/build/if-run/builtins/csv-lookup/index.js +175 -0
- package/build/if-run/builtins/divide/index.d.ts +16 -0
- package/build/if-run/builtins/divide/index.js +68 -0
- package/build/if-run/builtins/exponent/index.d.ts +16 -0
- package/build/if-run/builtins/exponent/index.js +52 -0
- package/build/if-run/builtins/export-log.d.ts +4 -0
- package/build/if-run/builtins/export-log.js +44 -0
- package/build/if-run/builtins/export-yaml.d.ts +4 -0
- package/build/if-run/builtins/export-yaml.js +30 -0
- package/build/if-run/builtins/index.d.ts +16 -0
- package/build/if-run/builtins/index.js +36 -0
- package/build/if-run/builtins/interpolation/index.d.ts +16 -0
- package/build/if-run/builtins/interpolation/index.js +146 -0
- package/build/if-run/builtins/mock-observations/helpers/common-generator.d.ts +3 -0
- package/build/if-run/builtins/mock-observations/helpers/common-generator.js +29 -0
- package/build/if-run/builtins/mock-observations/helpers/rand-int-generator.d.ts +3 -0
- package/build/if-run/builtins/mock-observations/helpers/rand-int-generator.js +48 -0
- package/build/if-run/builtins/mock-observations/index.d.ts +16 -0
- package/build/if-run/builtins/mock-observations/index.js +108 -0
- package/build/if-run/builtins/mock-observations/interfaces/index.d.ts +6 -0
- package/build/if-run/builtins/mock-observations/interfaces/index.js +3 -0
- package/build/if-run/builtins/multiply/index.d.ts +16 -0
- package/build/if-run/builtins/multiply/index.js +47 -0
- package/build/if-run/builtins/regex/index.d.ts +16 -0
- package/build/if-run/builtins/regex/index.js +55 -0
- package/build/if-run/builtins/sci/index.d.ts +16 -0
- package/build/if-run/builtins/sci/index.js +92 -0
- package/build/if-run/builtins/sci-embodied/index.d.ts +16 -0
- package/build/if-run/builtins/sci-embodied/index.js +142 -0
- package/build/if-run/builtins/shell/index.d.ts +16 -0
- package/build/if-run/builtins/shell/index.js +50 -0
- package/build/if-run/builtins/subtract/index.d.ts +16 -0
- package/build/if-run/builtins/subtract/index.js +51 -0
- package/build/if-run/builtins/sum/index.d.ts +16 -0
- package/build/if-run/builtins/sum/index.js +37 -0
- package/build/if-run/builtins/time-converter/config.d.ts +1 -0
- package/build/if-run/builtins/time-converter/config.js +44 -0
- package/build/if-run/builtins/time-converter/index.d.ts +16 -0
- package/build/if-run/builtins/time-converter/index.js +63 -0
- package/build/if-run/builtins/time-sync/index.d.ts +31 -0
- package/build/if-run/builtins/time-sync/index.js +371 -0
- package/build/if-run/config/config.d.ts +9 -0
- package/build/if-run/config/config.js +79 -0
- package/build/if-run/config/index.d.ts +2 -0
- package/build/if-run/config/index.js +8 -0
- package/build/if-run/config/strings.d.ts +62 -0
- package/build/if-run/config/strings.js +81 -0
- package/build/if-run/index.d.ts +2 -0
- package/build/if-run/index.js +58 -0
- package/build/if-run/lib/aggregate.d.ts +14 -0
- package/build/if-run/lib/aggregate.js +130 -0
- package/build/if-run/lib/compute.d.ts +5 -0
- package/build/if-run/lib/compute.js +162 -0
- package/build/if-run/lib/environment.d.ts +5 -0
- package/build/if-run/lib/environment.js +75 -0
- package/build/if-run/lib/exhaust.d.ts +7 -0
- package/build/if-run/lib/exhaust.js +27 -0
- package/build/if-run/lib/explain.d.ts +9 -0
- package/build/if-run/lib/explain.js +97 -0
- package/build/if-run/lib/initialize.d.ts +10 -0
- package/build/if-run/lib/initialize.js +113 -0
- package/build/if-run/lib/regroup.d.ts +5 -0
- package/build/if-run/lib/regroup.js +59 -0
- package/build/if-run/types/aggregation.d.ts +2 -0
- package/build/if-run/types/aggregation.js +11 -0
- package/build/if-run/types/compute.d.ts +33 -0
- package/build/if-run/types/compute.js +3 -0
- package/build/if-run/types/environment.d.ts +18 -0
- package/build/if-run/types/environment.js +3 -0
- package/build/if-run/types/explain.d.ts +12 -0
- package/build/if-run/types/explain.js +3 -0
- package/build/if-run/types/plugin-storage.d.ts +6 -0
- package/build/if-run/types/plugin-storage.js +3 -0
- package/build/if-run/types/process-args.d.ts +27 -0
- package/build/if-run/types/process-args.js +3 -0
- package/build/if-run/util/aggregation-helper.d.ts +6 -0
- package/build/if-run/util/aggregation-helper.js +52 -0
- package/build/if-run/util/args.d.ts +9 -0
- package/build/if-run/util/args.js +61 -0
- package/build/if-run/util/helpers.d.ts +8 -0
- package/build/if-run/util/helpers.js +37 -0
- package/build/if-run/util/log-memoize.d.ts +3 -0
- package/build/if-run/util/log-memoize.js +19 -0
- package/build/if-run/util/os-checker.d.ts +7 -0
- package/build/if-run/util/os-checker.js +97 -0
- package/build/if-run/util/plugin-storage.d.ts +14 -0
- package/build/if-run/util/plugin-storage.js +34 -0
- package/manifests/examples/builtins/interpolation/success-with-off.yml +24 -0
- package/package.json +10 -9
- package/src/if-run/builtins/interpolation/README.md +1 -1
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
import { ZodSchema, z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* At least one property defined handler.
|
|
4
|
+
*/
|
|
5
|
+
export declare const atLeastOneDefined: (obj: Record<string | number | symbol, unknown>) => boolean;
|
|
6
|
+
/**
|
|
7
|
+
* All properties are defined handler.
|
|
8
|
+
*/
|
|
9
|
+
export declare const allDefined: (obj: Record<string | number | symbol, unknown>) => boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Validation schema for manifests.
|
|
12
|
+
*/
|
|
13
|
+
export declare const manifestSchema: z.ZodObject<{
|
|
14
|
+
name: z.ZodString;
|
|
15
|
+
description: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
16
|
+
tags: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
17
|
+
kind: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
18
|
+
complexity: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
19
|
+
category: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
20
|
+
}, "strip", z.ZodTypeAny, {
|
|
21
|
+
kind?: string | null | undefined;
|
|
22
|
+
complexity?: string | null | undefined;
|
|
23
|
+
category?: string | null | undefined;
|
|
24
|
+
}, {
|
|
25
|
+
kind?: string | null | undefined;
|
|
26
|
+
complexity?: string | null | undefined;
|
|
27
|
+
category?: string | null | undefined;
|
|
28
|
+
}>>>;
|
|
29
|
+
explainer: z.ZodOptional<z.ZodBoolean>;
|
|
30
|
+
explain: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
31
|
+
aggregation: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
32
|
+
metrics: z.ZodArray<z.ZodString, "many">;
|
|
33
|
+
type: z.ZodEnum<["horizontal", "time", "vertical", "component", "both"]>;
|
|
34
|
+
'skip-components': z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
35
|
+
}, "strip", z.ZodTypeAny, {
|
|
36
|
+
type: "horizontal" | "time" | "vertical" | "component" | "both";
|
|
37
|
+
metrics: string[];
|
|
38
|
+
'skip-components'?: string[] | undefined;
|
|
39
|
+
}, {
|
|
40
|
+
type: "horizontal" | "time" | "vertical" | "component" | "both";
|
|
41
|
+
metrics: string[];
|
|
42
|
+
'skip-components'?: string[] | undefined;
|
|
43
|
+
}>>>;
|
|
44
|
+
initialize: z.ZodObject<{
|
|
45
|
+
plugins: z.ZodRecord<z.ZodString, z.ZodOptional<z.ZodObject<{
|
|
46
|
+
path: z.ZodString;
|
|
47
|
+
method: z.ZodString;
|
|
48
|
+
mapping: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
49
|
+
config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
50
|
+
'parameter-metadata': z.ZodOptional<z.ZodObject<{
|
|
51
|
+
inputs: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
52
|
+
unit: z.ZodString;
|
|
53
|
+
description: z.ZodString;
|
|
54
|
+
'aggregation-method': z.ZodObject<{
|
|
55
|
+
time: z.ZodEnum<["sum", "avg", "none", "copy"]>;
|
|
56
|
+
component: z.ZodEnum<["sum", "avg", "none", "copy"]>;
|
|
57
|
+
}, "strip", z.ZodTypeAny, {
|
|
58
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
59
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
60
|
+
}, {
|
|
61
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
62
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
63
|
+
}>;
|
|
64
|
+
}, "strip", z.ZodTypeAny, {
|
|
65
|
+
unit: string;
|
|
66
|
+
description: string;
|
|
67
|
+
'aggregation-method': {
|
|
68
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
69
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
70
|
+
};
|
|
71
|
+
}, {
|
|
72
|
+
unit: string;
|
|
73
|
+
description: string;
|
|
74
|
+
'aggregation-method': {
|
|
75
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
76
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
77
|
+
};
|
|
78
|
+
}>>>>;
|
|
79
|
+
outputs: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
80
|
+
unit: z.ZodString;
|
|
81
|
+
description: z.ZodString;
|
|
82
|
+
'aggregation-method': z.ZodObject<{
|
|
83
|
+
time: z.ZodEnum<["sum", "avg", "none", "copy"]>;
|
|
84
|
+
component: z.ZodEnum<["sum", "avg", "none", "copy"]>;
|
|
85
|
+
}, "strip", z.ZodTypeAny, {
|
|
86
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
87
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
88
|
+
}, {
|
|
89
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
90
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
91
|
+
}>;
|
|
92
|
+
}, "strip", z.ZodTypeAny, {
|
|
93
|
+
unit: string;
|
|
94
|
+
description: string;
|
|
95
|
+
'aggregation-method': {
|
|
96
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
97
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
98
|
+
};
|
|
99
|
+
}, {
|
|
100
|
+
unit: string;
|
|
101
|
+
description: string;
|
|
102
|
+
'aggregation-method': {
|
|
103
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
104
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
105
|
+
};
|
|
106
|
+
}>>>>;
|
|
107
|
+
}, "strip", z.ZodTypeAny, {
|
|
108
|
+
inputs?: Record<string, {
|
|
109
|
+
unit: string;
|
|
110
|
+
description: string;
|
|
111
|
+
'aggregation-method': {
|
|
112
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
113
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
114
|
+
};
|
|
115
|
+
}> | null | undefined;
|
|
116
|
+
outputs?: Record<string, {
|
|
117
|
+
unit: string;
|
|
118
|
+
description: string;
|
|
119
|
+
'aggregation-method': {
|
|
120
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
121
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
122
|
+
};
|
|
123
|
+
}> | null | undefined;
|
|
124
|
+
}, {
|
|
125
|
+
inputs?: Record<string, {
|
|
126
|
+
unit: string;
|
|
127
|
+
description: string;
|
|
128
|
+
'aggregation-method': {
|
|
129
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
130
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
131
|
+
};
|
|
132
|
+
}> | null | undefined;
|
|
133
|
+
outputs?: Record<string, {
|
|
134
|
+
unit: string;
|
|
135
|
+
description: string;
|
|
136
|
+
'aggregation-method': {
|
|
137
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
138
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
139
|
+
};
|
|
140
|
+
}> | null | undefined;
|
|
141
|
+
}>>;
|
|
142
|
+
}, "strip", z.ZodTypeAny, {
|
|
143
|
+
path: string;
|
|
144
|
+
method: string;
|
|
145
|
+
mapping?: Record<string, string> | undefined;
|
|
146
|
+
config?: Record<string, any> | undefined;
|
|
147
|
+
'parameter-metadata'?: {
|
|
148
|
+
inputs?: Record<string, {
|
|
149
|
+
unit: string;
|
|
150
|
+
description: string;
|
|
151
|
+
'aggregation-method': {
|
|
152
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
153
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
154
|
+
};
|
|
155
|
+
}> | null | undefined;
|
|
156
|
+
outputs?: Record<string, {
|
|
157
|
+
unit: string;
|
|
158
|
+
description: string;
|
|
159
|
+
'aggregation-method': {
|
|
160
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
161
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
162
|
+
};
|
|
163
|
+
}> | null | undefined;
|
|
164
|
+
} | undefined;
|
|
165
|
+
}, {
|
|
166
|
+
path: string;
|
|
167
|
+
method: string;
|
|
168
|
+
mapping?: Record<string, string> | undefined;
|
|
169
|
+
config?: Record<string, any> | undefined;
|
|
170
|
+
'parameter-metadata'?: {
|
|
171
|
+
inputs?: Record<string, {
|
|
172
|
+
unit: string;
|
|
173
|
+
description: string;
|
|
174
|
+
'aggregation-method': {
|
|
175
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
176
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
177
|
+
};
|
|
178
|
+
}> | null | undefined;
|
|
179
|
+
outputs?: Record<string, {
|
|
180
|
+
unit: string;
|
|
181
|
+
description: string;
|
|
182
|
+
'aggregation-method': {
|
|
183
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
184
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
185
|
+
};
|
|
186
|
+
}> | null | undefined;
|
|
187
|
+
} | undefined;
|
|
188
|
+
}>>>;
|
|
189
|
+
}, "strip", z.ZodTypeAny, {
|
|
190
|
+
plugins: Record<string, {
|
|
191
|
+
path: string;
|
|
192
|
+
method: string;
|
|
193
|
+
mapping?: Record<string, string> | undefined;
|
|
194
|
+
config?: Record<string, any> | undefined;
|
|
195
|
+
'parameter-metadata'?: {
|
|
196
|
+
inputs?: Record<string, {
|
|
197
|
+
unit: string;
|
|
198
|
+
description: string;
|
|
199
|
+
'aggregation-method': {
|
|
200
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
201
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
202
|
+
};
|
|
203
|
+
}> | null | undefined;
|
|
204
|
+
outputs?: Record<string, {
|
|
205
|
+
unit: string;
|
|
206
|
+
description: string;
|
|
207
|
+
'aggregation-method': {
|
|
208
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
209
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
210
|
+
};
|
|
211
|
+
}> | null | undefined;
|
|
212
|
+
} | undefined;
|
|
213
|
+
} | undefined>;
|
|
214
|
+
}, {
|
|
215
|
+
plugins: Record<string, {
|
|
216
|
+
path: string;
|
|
217
|
+
method: string;
|
|
218
|
+
mapping?: Record<string, string> | undefined;
|
|
219
|
+
config?: Record<string, any> | undefined;
|
|
220
|
+
'parameter-metadata'?: {
|
|
221
|
+
inputs?: Record<string, {
|
|
222
|
+
unit: string;
|
|
223
|
+
description: string;
|
|
224
|
+
'aggregation-method': {
|
|
225
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
226
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
227
|
+
};
|
|
228
|
+
}> | null | undefined;
|
|
229
|
+
outputs?: Record<string, {
|
|
230
|
+
unit: string;
|
|
231
|
+
description: string;
|
|
232
|
+
'aggregation-method': {
|
|
233
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
234
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
235
|
+
};
|
|
236
|
+
}> | null | undefined;
|
|
237
|
+
} | undefined;
|
|
238
|
+
} | undefined>;
|
|
239
|
+
}>;
|
|
240
|
+
execution: z.ZodOptional<z.ZodObject<{
|
|
241
|
+
command: z.ZodOptional<z.ZodString>;
|
|
242
|
+
environment: z.ZodOptional<z.ZodObject<{
|
|
243
|
+
'if-version': z.ZodString;
|
|
244
|
+
os: z.ZodString;
|
|
245
|
+
'os-version': z.ZodString;
|
|
246
|
+
'node-version': z.ZodString;
|
|
247
|
+
'date-time': z.ZodString;
|
|
248
|
+
dependencies: z.ZodArray<z.ZodString, "many">;
|
|
249
|
+
}, "strip", z.ZodTypeAny, {
|
|
250
|
+
'if-version': string;
|
|
251
|
+
os: string;
|
|
252
|
+
'os-version': string;
|
|
253
|
+
'node-version': string;
|
|
254
|
+
'date-time': string;
|
|
255
|
+
dependencies: string[];
|
|
256
|
+
}, {
|
|
257
|
+
'if-version': string;
|
|
258
|
+
os: string;
|
|
259
|
+
'os-version': string;
|
|
260
|
+
'node-version': string;
|
|
261
|
+
'date-time': string;
|
|
262
|
+
dependencies: string[];
|
|
263
|
+
}>>;
|
|
264
|
+
status: z.ZodString;
|
|
265
|
+
error: z.ZodOptional<z.ZodString>;
|
|
266
|
+
}, "strip", z.ZodTypeAny, {
|
|
267
|
+
status: string;
|
|
268
|
+
command?: string | undefined;
|
|
269
|
+
environment?: {
|
|
270
|
+
'if-version': string;
|
|
271
|
+
os: string;
|
|
272
|
+
'os-version': string;
|
|
273
|
+
'node-version': string;
|
|
274
|
+
'date-time': string;
|
|
275
|
+
dependencies: string[];
|
|
276
|
+
} | undefined;
|
|
277
|
+
error?: string | undefined;
|
|
278
|
+
}, {
|
|
279
|
+
status: string;
|
|
280
|
+
command?: string | undefined;
|
|
281
|
+
environment?: {
|
|
282
|
+
'if-version': string;
|
|
283
|
+
os: string;
|
|
284
|
+
'os-version': string;
|
|
285
|
+
'node-version': string;
|
|
286
|
+
'date-time': string;
|
|
287
|
+
dependencies: string[];
|
|
288
|
+
} | undefined;
|
|
289
|
+
error?: string | undefined;
|
|
290
|
+
}>>;
|
|
291
|
+
tree: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
292
|
+
}, "strip", z.ZodTypeAny, {
|
|
293
|
+
name: string;
|
|
294
|
+
initialize: {
|
|
295
|
+
plugins: Record<string, {
|
|
296
|
+
path: string;
|
|
297
|
+
method: string;
|
|
298
|
+
mapping?: Record<string, string> | undefined;
|
|
299
|
+
config?: Record<string, any> | undefined;
|
|
300
|
+
'parameter-metadata'?: {
|
|
301
|
+
inputs?: Record<string, {
|
|
302
|
+
unit: string;
|
|
303
|
+
description: string;
|
|
304
|
+
'aggregation-method': {
|
|
305
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
306
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
307
|
+
};
|
|
308
|
+
}> | null | undefined;
|
|
309
|
+
outputs?: Record<string, {
|
|
310
|
+
unit: string;
|
|
311
|
+
description: string;
|
|
312
|
+
'aggregation-method': {
|
|
313
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
314
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
315
|
+
};
|
|
316
|
+
}> | null | undefined;
|
|
317
|
+
} | undefined;
|
|
318
|
+
} | undefined>;
|
|
319
|
+
};
|
|
320
|
+
tree: Record<string, any>;
|
|
321
|
+
description?: string | null | undefined;
|
|
322
|
+
tags?: {
|
|
323
|
+
kind?: string | null | undefined;
|
|
324
|
+
complexity?: string | null | undefined;
|
|
325
|
+
category?: string | null | undefined;
|
|
326
|
+
} | null | undefined;
|
|
327
|
+
explainer?: boolean | undefined;
|
|
328
|
+
explain?: Record<string, any> | undefined;
|
|
329
|
+
aggregation?: {
|
|
330
|
+
type: "horizontal" | "time" | "vertical" | "component" | "both";
|
|
331
|
+
metrics: string[];
|
|
332
|
+
'skip-components'?: string[] | undefined;
|
|
333
|
+
} | null | undefined;
|
|
334
|
+
execution?: {
|
|
335
|
+
status: string;
|
|
336
|
+
command?: string | undefined;
|
|
337
|
+
environment?: {
|
|
338
|
+
'if-version': string;
|
|
339
|
+
os: string;
|
|
340
|
+
'os-version': string;
|
|
341
|
+
'node-version': string;
|
|
342
|
+
'date-time': string;
|
|
343
|
+
dependencies: string[];
|
|
344
|
+
} | undefined;
|
|
345
|
+
error?: string | undefined;
|
|
346
|
+
} | undefined;
|
|
347
|
+
}, {
|
|
348
|
+
name: string;
|
|
349
|
+
initialize: {
|
|
350
|
+
plugins: Record<string, {
|
|
351
|
+
path: string;
|
|
352
|
+
method: string;
|
|
353
|
+
mapping?: Record<string, string> | undefined;
|
|
354
|
+
config?: Record<string, any> | undefined;
|
|
355
|
+
'parameter-metadata'?: {
|
|
356
|
+
inputs?: Record<string, {
|
|
357
|
+
unit: string;
|
|
358
|
+
description: string;
|
|
359
|
+
'aggregation-method': {
|
|
360
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
361
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
362
|
+
};
|
|
363
|
+
}> | null | undefined;
|
|
364
|
+
outputs?: Record<string, {
|
|
365
|
+
unit: string;
|
|
366
|
+
description: string;
|
|
367
|
+
'aggregation-method': {
|
|
368
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
369
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
370
|
+
};
|
|
371
|
+
}> | null | undefined;
|
|
372
|
+
} | undefined;
|
|
373
|
+
} | undefined>;
|
|
374
|
+
};
|
|
375
|
+
tree: Record<string, any>;
|
|
376
|
+
description?: string | null | undefined;
|
|
377
|
+
tags?: {
|
|
378
|
+
kind?: string | null | undefined;
|
|
379
|
+
complexity?: string | null | undefined;
|
|
380
|
+
category?: string | null | undefined;
|
|
381
|
+
} | null | undefined;
|
|
382
|
+
explainer?: boolean | undefined;
|
|
383
|
+
explain?: Record<string, any> | undefined;
|
|
384
|
+
aggregation?: {
|
|
385
|
+
type: "horizontal" | "time" | "vertical" | "component" | "both";
|
|
386
|
+
metrics: string[];
|
|
387
|
+
'skip-components'?: string[] | undefined;
|
|
388
|
+
} | null | undefined;
|
|
389
|
+
execution?: {
|
|
390
|
+
status: string;
|
|
391
|
+
command?: string | undefined;
|
|
392
|
+
environment?: {
|
|
393
|
+
'if-version': string;
|
|
394
|
+
os: string;
|
|
395
|
+
'os-version': string;
|
|
396
|
+
'node-version': string;
|
|
397
|
+
'date-time': string;
|
|
398
|
+
dependencies: string[];
|
|
399
|
+
} | undefined;
|
|
400
|
+
error?: string | undefined;
|
|
401
|
+
} | undefined;
|
|
402
|
+
}>;
|
|
403
|
+
/**
|
|
404
|
+
* Validates given `manifest` object to match pattern.
|
|
405
|
+
*/
|
|
406
|
+
export declare const validateManifest: (manifest: any) => {
|
|
407
|
+
name: string;
|
|
408
|
+
initialize: {
|
|
409
|
+
plugins: Record<string, {
|
|
410
|
+
path: string;
|
|
411
|
+
method: string;
|
|
412
|
+
mapping?: Record<string, string> | undefined;
|
|
413
|
+
config?: Record<string, any> | undefined;
|
|
414
|
+
'parameter-metadata'?: {
|
|
415
|
+
inputs?: Record<string, {
|
|
416
|
+
unit: string;
|
|
417
|
+
description: string;
|
|
418
|
+
'aggregation-method': {
|
|
419
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
420
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
421
|
+
};
|
|
422
|
+
}> | null | undefined;
|
|
423
|
+
outputs?: Record<string, {
|
|
424
|
+
unit: string;
|
|
425
|
+
description: string;
|
|
426
|
+
'aggregation-method': {
|
|
427
|
+
time: "sum" | "avg" | "none" | "copy";
|
|
428
|
+
component: "sum" | "avg" | "none" | "copy";
|
|
429
|
+
};
|
|
430
|
+
}> | null | undefined;
|
|
431
|
+
} | undefined;
|
|
432
|
+
} | undefined>;
|
|
433
|
+
};
|
|
434
|
+
tree: Record<string, any>;
|
|
435
|
+
description?: string | null | undefined;
|
|
436
|
+
tags?: {
|
|
437
|
+
kind?: string | null | undefined;
|
|
438
|
+
complexity?: string | null | undefined;
|
|
439
|
+
category?: string | null | undefined;
|
|
440
|
+
} | null | undefined;
|
|
441
|
+
explainer?: boolean | undefined;
|
|
442
|
+
explain?: Record<string, any> | undefined;
|
|
443
|
+
aggregation?: {
|
|
444
|
+
type: "horizontal" | "time" | "vertical" | "component" | "both";
|
|
445
|
+
metrics: string[];
|
|
446
|
+
'skip-components'?: string[] | undefined;
|
|
447
|
+
} | null | undefined;
|
|
448
|
+
execution?: {
|
|
449
|
+
status: string;
|
|
450
|
+
command?: string | undefined;
|
|
451
|
+
environment?: {
|
|
452
|
+
'if-version': string;
|
|
453
|
+
os: string;
|
|
454
|
+
'os-version': string;
|
|
455
|
+
'node-version': string;
|
|
456
|
+
'date-time': string;
|
|
457
|
+
dependencies: string[];
|
|
458
|
+
} | undefined;
|
|
459
|
+
error?: string | undefined;
|
|
460
|
+
} | undefined;
|
|
461
|
+
};
|
|
462
|
+
/**
|
|
463
|
+
* Validates given `object` with given `schema`.
|
|
464
|
+
*/
|
|
465
|
+
export declare const validate: <T>(schema: ZodSchema<T, z.ZodTypeDef, T>, object: any, index?: number, errorConstructor?: ErrorConstructor) => T;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validate = exports.validateManifest = exports.manifestSchema = exports.allDefined = exports.atLeastOneDefined = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const consts_1 = require("@grnsft/if-core/consts");
|
|
6
|
+
const utils_1 = require("@grnsft/if-core/utils");
|
|
7
|
+
const config_1 = require("../../if-run/config");
|
|
8
|
+
const aggregation_1 = require("../../if-run/types/aggregation");
|
|
9
|
+
const { ManifestValidationError, InputValidationError } = utils_1.ERRORS;
|
|
10
|
+
const { VALIDATING_MANIFEST } = config_1.STRINGS;
|
|
11
|
+
/**
|
|
12
|
+
* At least one property defined handler.
|
|
13
|
+
*/
|
|
14
|
+
const atLeastOneDefined = (obj) => Object.values(obj).some(v => v !== undefined);
|
|
15
|
+
exports.atLeastOneDefined = atLeastOneDefined;
|
|
16
|
+
/**
|
|
17
|
+
* All properties are defined handler.
|
|
18
|
+
*/
|
|
19
|
+
const allDefined = (obj) => Object.values(obj).every(v => v !== undefined);
|
|
20
|
+
exports.allDefined = allDefined;
|
|
21
|
+
/**
|
|
22
|
+
* Reusabe aggregation method schema for parameter metadata.
|
|
23
|
+
*/
|
|
24
|
+
const aggregationMethodSchema = zod_1.z.object({
|
|
25
|
+
time: zod_1.z.enum(consts_1.AGGREGATION_METHODS),
|
|
26
|
+
component: zod_1.z.enum(consts_1.AGGREGATION_METHODS),
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* Reusable metadata schema.
|
|
30
|
+
*/
|
|
31
|
+
const metadataSchema = zod_1.z
|
|
32
|
+
.record(zod_1.z.string(), zod_1.z.object({
|
|
33
|
+
unit: zod_1.z.string(),
|
|
34
|
+
description: zod_1.z.string(),
|
|
35
|
+
'aggregation-method': aggregationMethodSchema,
|
|
36
|
+
}))
|
|
37
|
+
.optional()
|
|
38
|
+
.nullable();
|
|
39
|
+
/**
|
|
40
|
+
* Reusable parameter metadata schema.
|
|
41
|
+
*/
|
|
42
|
+
const parameterMetadataSchema = zod_1.z
|
|
43
|
+
.object({
|
|
44
|
+
inputs: metadataSchema,
|
|
45
|
+
outputs: metadataSchema,
|
|
46
|
+
})
|
|
47
|
+
.optional();
|
|
48
|
+
/**
|
|
49
|
+
* Validation schema for manifests.
|
|
50
|
+
*/
|
|
51
|
+
exports.manifestSchema = zod_1.z.object({
|
|
52
|
+
name: zod_1.z.string(),
|
|
53
|
+
description: zod_1.z.string().optional().nullable(),
|
|
54
|
+
tags: zod_1.z
|
|
55
|
+
.object({
|
|
56
|
+
kind: zod_1.z.string().optional().nullable(),
|
|
57
|
+
complexity: zod_1.z.string().optional().nullable(),
|
|
58
|
+
category: zod_1.z.string().optional().nullable(),
|
|
59
|
+
})
|
|
60
|
+
.optional()
|
|
61
|
+
.nullable(),
|
|
62
|
+
explainer: zod_1.z.boolean().optional(),
|
|
63
|
+
explain: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).optional(),
|
|
64
|
+
aggregation: zod_1.z
|
|
65
|
+
.object({
|
|
66
|
+
metrics: zod_1.z.array(zod_1.z.string()),
|
|
67
|
+
type: zod_1.z.enum(aggregation_1.AGGREGATION_TYPES),
|
|
68
|
+
'skip-components': zod_1.z.array(zod_1.z.string()).optional(),
|
|
69
|
+
})
|
|
70
|
+
.optional()
|
|
71
|
+
.nullable(),
|
|
72
|
+
initialize: zod_1.z.object({
|
|
73
|
+
plugins: zod_1.z.record(zod_1.z.string(), zod_1.z
|
|
74
|
+
.object({
|
|
75
|
+
path: zod_1.z.string(),
|
|
76
|
+
method: zod_1.z.string(),
|
|
77
|
+
mapping: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
|
|
78
|
+
config: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).optional(),
|
|
79
|
+
'parameter-metadata': parameterMetadataSchema,
|
|
80
|
+
})
|
|
81
|
+
.optional()),
|
|
82
|
+
}),
|
|
83
|
+
execution: zod_1.z
|
|
84
|
+
.object({
|
|
85
|
+
command: zod_1.z.string().optional(),
|
|
86
|
+
environment: zod_1.z
|
|
87
|
+
.object({
|
|
88
|
+
'if-version': zod_1.z.string(),
|
|
89
|
+
os: zod_1.z.string(),
|
|
90
|
+
'os-version': zod_1.z.string(),
|
|
91
|
+
'node-version': zod_1.z.string(),
|
|
92
|
+
'date-time': zod_1.z.string(),
|
|
93
|
+
dependencies: zod_1.z.array(zod_1.z.string()),
|
|
94
|
+
})
|
|
95
|
+
.optional(),
|
|
96
|
+
status: zod_1.z.string(),
|
|
97
|
+
error: zod_1.z.string().optional(),
|
|
98
|
+
})
|
|
99
|
+
.optional(),
|
|
100
|
+
tree: zod_1.z.record(zod_1.z.string(), zod_1.z.any()),
|
|
101
|
+
});
|
|
102
|
+
/**
|
|
103
|
+
* Validates given `manifest` object to match pattern.
|
|
104
|
+
*/
|
|
105
|
+
const validateManifest = (manifest) => {
|
|
106
|
+
console.debug(VALIDATING_MANIFEST);
|
|
107
|
+
return (0, exports.validate)(exports.manifestSchema, manifest, undefined, ManifestValidationError);
|
|
108
|
+
};
|
|
109
|
+
exports.validateManifest = validateManifest;
|
|
110
|
+
/**
|
|
111
|
+
* Validates given `object` with given `schema`.
|
|
112
|
+
*/
|
|
113
|
+
const validate = (schema, object, index, errorConstructor = InputValidationError) => {
|
|
114
|
+
const validationResult = schema.safeParse(object);
|
|
115
|
+
if (!validationResult.success) {
|
|
116
|
+
throw new errorConstructor(prettifyErrorMessage(validationResult.error.message, index));
|
|
117
|
+
}
|
|
118
|
+
return validationResult.data;
|
|
119
|
+
};
|
|
120
|
+
exports.validate = validate;
|
|
121
|
+
/**
|
|
122
|
+
* Error message formatter for zod issues.
|
|
123
|
+
*/
|
|
124
|
+
const prettifyErrorMessage = (issues, index) => {
|
|
125
|
+
const issuesArray = JSON.parse(issues);
|
|
126
|
+
return issuesArray.map((issue) => {
|
|
127
|
+
const code = issue.code;
|
|
128
|
+
let { path, message } = issue;
|
|
129
|
+
const indexErrorMessage = index !== undefined ? ` at index ${index}` : '';
|
|
130
|
+
if (issue.code === zod_1.ZodIssueCode.invalid_union) {
|
|
131
|
+
message = issue.unionErrors[0].issues[0].message;
|
|
132
|
+
path = issue.unionErrors[0].issues[0].path;
|
|
133
|
+
}
|
|
134
|
+
const fullPath = flattenPath(path);
|
|
135
|
+
if (!fullPath) {
|
|
136
|
+
return message;
|
|
137
|
+
}
|
|
138
|
+
return `"${fullPath}" parameter is ${message.toLowerCase()}${indexErrorMessage}. Error code: ${code}.`;
|
|
139
|
+
});
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Flattens an array representing a nested path into a string.
|
|
143
|
+
*/
|
|
144
|
+
const flattenPath = (path) => {
|
|
145
|
+
const flattenPath = path.map(part => typeof part === 'number' ? `[${part}]` : part);
|
|
146
|
+
return flattenPath.join('.');
|
|
147
|
+
};
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL3V0aWwvdmFsaWRhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXlEO0FBQ3pELG1EQUEyRDtBQUMzRCxpREFBNkM7QUFFN0MsZ0RBQTRDO0FBRTVDLGdFQUFpRTtBQUVqRSxNQUFNLEVBQUMsdUJBQXVCLEVBQUUsb0JBQW9CLEVBQUMsR0FBRyxjQUFNLENBQUM7QUFDL0QsTUFBTSxFQUFDLG1CQUFtQixFQUFDLEdBQUcsZ0JBQU8sQ0FBQztBQUV0Qzs7R0FFRztBQUNJLE1BQU0saUJBQWlCLEdBQUcsQ0FDL0IsR0FBOEMsRUFDOUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO0FBRnRDLFFBQUEsaUJBQWlCLHFCQUVxQjtBQUVuRDs7R0FFRztBQUNJLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBOEMsRUFBRSxFQUFFLENBQzNFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO0FBRHBDLFFBQUEsVUFBVSxjQUMwQjtBQUVqRDs7R0FFRztBQUNILE1BQU0sdUJBQXVCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN2QyxJQUFJLEVBQUUsT0FBQyxDQUFDLElBQUksQ0FBQyw0QkFBbUIsQ0FBQztJQUNqQyxTQUFTLEVBQUUsT0FBQyxDQUFDLElBQUksQ0FBQyw0QkFBbUIsQ0FBQztDQUN2QyxDQUFDLENBQUM7QUFFSDs7R0FFRztBQUNILE1BQU0sY0FBYyxHQUFHLE9BQUM7S0FDckIsTUFBTSxDQUNMLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFDVixPQUFDLENBQUMsTUFB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TUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNsQyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDOUMsQ0FBQztJQUVGLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1pvZElzc3VlLCBab2RJc3N1ZUNvZGUsIFpvZFNjaGVtYSwgen0gZnJvbSAnem9kJztcbmltcG9ydCB7QUdHUkVHQVRJT05fTUVUSE9EU30gZnJvbSAnQGdybnNmdC9pZi1jb3JlL2NvbnN0cyc7XG5pbXBvcnQge0VSUk9SU30gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3V0aWxzJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi8uLi9pZi1ydW4vY29uZmlnJztcblxuaW1wb3J0IHtBR0dSRUdBVElPTl9UWVBFU30gZnJvbSAnLi4vLi4vaWYtcnVuL3R5cGVzL2FnZ3JlZ2F0aW9uJztcblxuY29uc3Qge01hbmlmZXN0VmFsaWRhdGlvbkVycm9yLCBJbnB1dFZhbGlkYXRpb25FcnJvcn0gPSBFUlJPUlM7XG5jb25zdCB7VkFMSURBVElOR19NQU5JRkVTVH0gPSBTVFJJTkdTO1xuXG4vKipcbiAqIEF0IGxlYXN0IG9uZSBwcm9wZXJ0eSBkZWZpbmVkIGhhbmRsZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBhdExlYXN0T25lRGVmaW5lZCA9IChcbiAgb2JqOiBSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sLCB1bmtub3duPlxuKSA9PiBPYmplY3QudmFsdWVzKG9iaikuc29tZSh2ID0+IHYgIT09IHVuZGVmaW5lZCk7XG5cbi8qKlxuICogQWxsIHByb3BlcnRpZXMgYXJlIGRlZmluZWQgaGFuZGxlci5cbiAqL1xuZXhwb3J0IGNvbnN0IGFsbERlZmluZWQgPSAob2JqOiBSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sLCB1bmtub3duPikgPT5cbiAgT2JqZWN0LnZhbHVlcyhvYmopLmV2ZXJ5KHYgPT4gdiAhPT0gdW5kZWZpbmVkKTtcblxuLyoqXG4gKiBSZXVzYWJlIGFnZ3JlZ2F0aW9uIG1ldGhvZCBzY2hlbWEgZm9yIHBhcmFtZXRlciBtZXRhZGF0YS5cbiAqL1xuY29uc3QgYWdncmVnYXRpb25NZXRob2RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHRpbWU6IHouZW51bShBR0dSRUdBVElPTl9NRVRIT0RTKSxcbiAgY29tcG9uZW50OiB6LmVudW0oQUdHUkVHQVRJT05fTUVUSE9EUyksXG59KTtcblxuLyoqXG4gKiBSZXVzYWJsZSBtZXRhZGF0YSBzY2hlbWEuXG4gKi9cbmNvbnN0IG1ldGFkYXRhU2NoZW1hID0gelxuICAucmVjb3JkKFxuICAgIHouc3RyaW5nKCksXG4gICAgei5vYmplY3Qoe1xuICAgICAgdW5pdDogei5zdHJpbmcoKSxcbiAgICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLFxuICAgICAgJ2FnZ3JlZ2F0aW9uLW1ldGhvZCc6IGFnZ3JlZ2F0aW9uTWV0aG9kU2NoZW1hLFxuICAgIH0pXG4gIClcbiAgLm9wdGlvbmFsKClcbiAgLm51bGxhYmxlKCk7XG5cbi8qKlxuICogUmV1c2FibGUgcGFyYW1ldGVyIG1ldGFkYXRhIHNjaGVtYS5cbiAqL1xuY29uc3QgcGFyYW1ldGVyTWV0YWRhdGFTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGlucHV0czogbWV0YWRhdGFTY2hlbWEsXG4gICAgb3V0cHV0czogbWV0YWRhdGFTY2hlbWEsXG4gIH0pXG4gIC5vcHRpb25hbCgpO1xuXG4vKipcbiAqIFZhbGlkYXRpb24gc2NoZW1hIGZvciBtYW5pZmVzdHMuXG4gKi9cbmV4cG9ydCBjb25zdCBtYW5pZmVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICB0YWdzOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBraW5kOiB6LnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgICAgIGNvbXBsZXhpdHk6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICAgICAgY2F0ZWdvcnk6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICAgIH0pXG4gICAgLm9wdGlvbmFsKClcbiAgICAubnVsbGFibGUoKSxcbiAgZXhwbGFpbmVyOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBleHBsYWluOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LmFueSgpKS5vcHRpb25hbCgpLFxuICBhZ2dyZWdhdGlvbjogelxuICAgIC5vYmplY3Qoe1xuICAgICAgbWV0cmljczogei5hcnJheSh6LnN0cmluZygpKSxcbiAgICAgIHR5cGU6IHouZW51bShBR0dSRUdBVElPTl9UWVBFUyksXG4gICAgICAnc2tpcC1jb21wb25lbnRzJzogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLm9wdGlvbmFsKClcbiAgICAubnVsbGFibGUoKSxcbiAgaW5pdGlhbGl6ZTogei5vYmplY3Qoe1xuICAgIHBsdWdpbnM6IHoucmVjb3JkKFxuICAgICAgei5zdHJpbmcoKSxcbiAgICAgIHpcbiAgICAgICAgLm9iamVjdCh7XG4gICAgICAgICAgcGF0aDogei5zdHJpbmcoKSxcbiAgICAgICAgICBtZXRob2Q6IHouc3RyaW5nKCksXG4gICAgICAgICAgbWFwcGluZzogei5yZWNvcmQoei5zdHJpbmcoKSwgei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgICAgICAgICBjb25maWc6IHoucmVjb3JkKHouc3RyaW5nKCksIHouYW55KCkpLm9wdGlvbmFsKCksXG4gICAgICAgICAgJ3BhcmFtZXRlci1tZXRhZGF0YSc6IHBhcmFtZXRlck1ldGFkYXRhU2NoZW1hLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uYWwoKVxuICAgICksXG4gIH0pLFxuICBleGVjdXRpb246IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGNvbW1hbmQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGVudmlyb25tZW50OiB6XG4gICAgICAgIC5vYmplY3Qoe1xuICAgICAgICAgICdpZi12ZXJzaW9uJzogei5zdHJpbmcoKSxcbiAgICAgICAgICBvczogei5zdHJpbmcoKSxcbiAgICAgICAgICAnb3MtdmVyc2lvbic6IHouc3RyaW5nKCksXG4gICAgICAgICAgJ25vZGUtdmVyc2lvbic6IHouc3RyaW5nKCksXG4gICAgICAgICAgJ2RhdGUtdGltZSc6IHouc3RyaW5nKCksXG4gICAgICAgICAgZGVwZW5kZW5jaWVzOiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uYWwoKSxcbiAgICAgIHN0YXR1czogei5zdHJpbmcoKSxcbiAgICAgIGVycm9yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAub3B0aW9uYWwoKSxcbiAgdHJlZTogei5yZWNvcmQoei5zdHJpbmcoKSwgei5hbnkoKSksXG59KTtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgZ2l2ZW4gYG1hbmlmZXN0YCBvYmplY3QgdG8gbWF0Y2ggcGF0dGVybi5cbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTWFuaWZlc3QgPSAobWFuaWZlc3Q6IGFueSkgPT4ge1xuICBjb25zb2xlLmRlYnVnKFZBTElEQVRJTkdfTUFOSUZFU1QpO1xuXG4gIHJldHVybiB2YWxpZGF0ZShtYW5pZmVzdFNjaGVtYSwgbWFuaWZlc3QsIHVuZGVmaW5lZCwgTWFuaWZlc3RWYWxpZGF0aW9uRXJyb3IpO1xufTtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgZ2l2ZW4gYG9iamVjdGAgd2l0aCBnaXZlbiBgc2NoZW1hYC5cbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlID0gPFQ+KFxuICBzY2hlbWE6IFpvZFNjaGVtYTxUPixcbiAgb2JqZWN0OiBhbnksXG4gIGluZGV4PzogbnVtYmVyLFxuICBlcnJvckNvbnN0cnVjdG9yOiBFcnJvckNvbnN0cnVjdG9yID0gSW5wdXRWYWxpZGF0aW9uRXJyb3JcbikgPT4ge1xuICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gc2NoZW1hLnNhZmVQYXJzZShvYmplY3QpO1xuXG4gIGlmICghdmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XG4gICAgdGhyb3cgbmV3IGVycm9yQ29uc3RydWN0b3IoXG4gICAgICBwcmV0dGlmeUVycm9yTWVzc2FnZSh2YWxpZGF0aW9uUmVzdWx0LmVycm9yLm1lc3NhZ2UsIGluZGV4KVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGlvblJlc3VsdC5kYXRhO1xufTtcblxuLyoqXG4gKiBFcnJvciBtZXNzYWdlIGZvcm1hdHRlciBmb3Igem9kIGlzc3Vlcy5cbiAqL1xuY29uc3QgcHJldHRpZnlFcnJvck1lc3NhZ2UgPSAoaXNzdWVzOiBzdHJpbmcsIGluZGV4PzogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IGlzc3Vlc0FycmF5ID0gSlNPTi5wYXJzZShpc3N1ZXMpO1xuXG4gIHJldHVybiBpc3N1ZXNBcnJheS5tYXAoKGlzc3VlOiBab2RJc3N1ZSkgPT4ge1xuICAgIGNvbnN0IGNvZGUgPSBpc3N1ZS5jb2RlO1xuICAgIGxldCB7cGF0aCwgbWVzc2FnZX0gPSBpc3N1ZTtcblxuICAgIGNvbnN0IGluZGV4RXJyb3JNZXNzYWdlID0gaW5kZXggIT09IHVuZGVmaW5lZCA/IGAgYXQgaW5kZXggJHtpbmRleH1gIDogJyc7XG5cbiAgICBpZiAoaXNzdWUuY29kZSA9PT0gWm9kSXNzdWVDb2RlLmludmFsaWRfdW5pb24pIHtcbiAgICAgIG1lc3NhZ2UgPSBpc3N1ZS51bmlvbkVycm9yc1swXS5pc3N1ZXNbMF0ubWVzc2FnZTtcbiAgICAgIHBhdGggPSBpc3N1ZS51bmlvbkVycm9yc1swXS5pc3N1ZXNbMF0ucGF0aDtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsUGF0aCA9IGZsYXR0ZW5QYXRoKHBhdGgpO1xuXG4gICAgaWYgKCFmdWxsUGF0aCkge1xuICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBcIiR7ZnVsbFBhdGh9XCIgcGFyYW1ldGVyIGlzICR7bWVzc2FnZS50b0xvd2VyQ2FzZSgpfSR7aW5kZXhFcnJvck1lc3NhZ2V9LiBFcnJvciBjb2RlOiAke2NvZGV9LmA7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBGbGF0dGVucyBhbiBhcnJheSByZXByZXNlbnRpbmcgYSBuZXN0ZWQgcGF0aCBpbnRvIGEgc3RyaW5nLlxuICovXG5jb25zdCBmbGF0dGVuUGF0aCA9IChwYXRoOiAoc3RyaW5nIHwgbnVtYmVyKVtdKTogc3RyaW5nID0+IHtcbiAgY29uc3QgZmxhdHRlblBhdGggPSBwYXRoLm1hcChwYXJ0ID0+XG4gICAgdHlwZW9mIHBhcnQgPT09ICdudW1iZXInID8gYFske3BhcnR9XWAgOiBwYXJ0XG4gICk7XG5cbiAgcmV0dXJuIGZsYXR0ZW5QYXRoLmpvaW4oJy4nKTtcbn07XG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads and parses `yaml` file to object.
|
|
3
|
+
*/
|
|
4
|
+
export declare const openYamlFileAsObject: <T>(filePath: string) => Promise<T>;
|
|
5
|
+
/**
|
|
6
|
+
* Saves given `yaml` dump as a file.
|
|
7
|
+
*/
|
|
8
|
+
export declare const saveYamlFileAs: (object: any, pathToFile: string) => Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Checks if given `fileName` is yaml.
|
|
11
|
+
*/
|
|
12
|
+
export declare const checkIfFileIsYaml: (fileName: string) => boolean;
|