@terascope/core-utils 2.0.0-dev.8 → 2.0.0-dev.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -25,6 +25,7 @@ export * from './objects.js';
25
25
  export * from './phone-number.js';
26
26
  export * from './promises.js';
27
27
  export * from './regex.js';
28
+ export * from './schemas.js';
28
29
  export * from './strings.js';
29
30
  export * from './iterators.js';
30
31
  export * from './vector.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,CAAC"}
package/dist/src/index.js CHANGED
@@ -25,6 +25,7 @@ export * from './objects.js';
25
25
  export * from './phone-number.js';
26
26
  export * from './promises.js';
27
27
  export * from './regex.js';
28
+ export * from './schemas.js';
28
29
  export * from './strings.js';
29
30
  export * from './iterators.js';
30
31
  export * from './vector.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,69 @@
1
+ import bunyan from 'bunyan';
2
+ import moment from 'moment';
3
+ import { z, type ZodType } from 'zod';
4
+ import { AnyObject, Terafoundation as TF } from '@terascope/types';
5
+ export declare const formats: TF.Format[];
6
+ /**
7
+ * Facade class used to validate convict style schemas using the Zod library
8
+ */
9
+ export declare class SchemaValidator<T = AnyObject> {
10
+ name: string;
11
+ inputSchema: TF.Schema<T>;
12
+ zodSchema: ZodType<T>;
13
+ checkUndeclaredKeys: CheckUndeclaredKeys;
14
+ envMap: Record<string, {
15
+ envName: string;
16
+ format: TF.ConvictFormat;
17
+ }>;
18
+ argsMap: Record<string, {
19
+ argName: string;
20
+ format: TF.ConvictFormat;
21
+ }>;
22
+ logger: bunyan;
23
+ constructor(schema: TF.Schema<T>, name: string, extraFormats?: TF.Format[], checkUndeclaredKeys?: CheckUndeclaredKeys);
24
+ /**
25
+ * Validate that a configuration conforms to the schema
26
+ *
27
+ * @param { any } config A configuration to validate
28
+ * @returns { T } A valid object of type T
29
+ */
30
+ validate(config: any): T;
31
+ /**
32
+ * convert a convict style schema to zod schema
33
+ *
34
+ * @param { Schema<T> } schema A convict style schema
35
+ * @param { PropertyKey } parentKey Property name of a nested schema object
36
+ * or other identifier for the schema
37
+ * @param { Format[] } extraFormats User defined formats to be used for schema validation
38
+ * @returns { z.ZodType } A zod schema
39
+ */
40
+ _convictStyleSchemaToZod(schema: TF.Schema<T>, parentKey: PropertyKey): z.ZodType<T, unknown, z.core.$ZodTypeInternals<T, unknown>> | z.ZodDefault<z.ZodAny>;
41
+ /**
42
+ * Converts a convict style schema object to a zod schema
43
+ * @param { TF.SchemaObj } schemaObj The schema object to convert
44
+ * @param { PropertyKey } key The name of the property that uses the schemaObj
45
+ * @returns { ZodType } A Zod schema object
46
+ */
47
+ _convictSchemaObjToZod(schemaObj: TF.SchemaObj, key: PropertyKey): z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>> | z.ZodPipe<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodTransform<any, unknown>>;
48
+ /**
49
+ * Determines the base type that a full schema will be built on
50
+ * @param { PropertyKey } key The name of the property that uses the schemaObj
51
+ * @param { TF.ConvictFormat } convictFormatValue A convict compatible format value
52
+ * @returns { ZodType } The base type
53
+ */
54
+ _getBaseType(key: PropertyKey, convictFormatValue: TF.ConvictFormat): z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
55
+ /** Run the default value against the created schema to ensure it is valid */
56
+ _validateDefault(type: z.ZodType, defaultVal: any): void;
57
+ /** Unwrap the wrappers on base schema object and retrieve all keys */
58
+ getSchemaObjectKeys(schema: ZodType): string[] | undefined;
59
+ /** Look up a custom format by name and return the format object */
60
+ _getCustomFormatFromName(format: TF.ConvictFormat | undefined): TF.Format | null | undefined;
61
+ /** Determine if a format is the name of a custom format */
62
+ _isCustomFormatName(format: TF.ConvictFormat): boolean;
63
+ }
64
+ type CheckUndeclaredKeys = 'allow' | 'warn' | 'strict';
65
+ export declare function isSchemaObj<T>(value: unknown): value is TF.SchemaObj<T>;
66
+ export declare function isOfTypeFormat(value: unknown): value is TF.Format;
67
+ export declare function isMomentUnitOfTime(unitString: string): unitString is moment.unitOfTime.DurationConstructor;
68
+ export {};
69
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/schemas.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,KAAK,OAAO,EAAsB,MAAM,KAAK,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,cAAc,IAAI,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAcnE,eAAO,MAAM,OAAO,EAAE,EAAE,CAAC,MAAM,EAoK9B,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAe,CAAC,CAAC,GAAG,SAAS;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAA;KAAE,CAAC,CAAM;IAC3E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAA;KAAE,CAAC,CAAM;IAC5E,MAAM,EAAE,MAAM,CAAC;gBAGX,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EACpB,IAAI,EAAE,MAAM,EACZ,YAAY,GAAE,EAAE,CAAC,MAAM,EAAO,EAC9B,mBAAmB,GAAE,mBAA4B;IA2BrD;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,GAAG;IA0EpB;;;;;;;;OAQG;IACH,wBAAwB,CACpB,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EACpB,SAAS,EAAE,WAAW;IA2B1B;;;;;OAKG;IACH,sBAAsB,CAClB,SAAS,EAAE,EAAE,CAAC,SAAS,EACvB,GAAG,EAAE,WAAW;IAgGpB;;;;;OAKG;IACH,YAAY,CACR,GAAG,EAAE,WAAW,EAChB,kBAAkB,EAAE,EAAE,CAAC,aAAa;IA2ExC,6EAA6E;IAC7E,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG;IAMjD,sEAAsE;IACtE,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS;IAmB1D,mEAAmE;IACnE,wBAAwB,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,GAAG,SAAS;IAO7D,2DAA2D;IAC3D,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa;CAQ/C;AAED,KAAK,mBAAmB,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEvD,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CA2CvE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC,MAAM,CAwBjE;AAED,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,MAAM,GACnB,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAqCrD"}
@@ -0,0 +1,616 @@
1
+ import assert from 'node:assert';
2
+ import bunyan from 'bunyan';
3
+ import dateMath from 'datemath-parser';
4
+ import moment from 'moment';
5
+ import { z } from 'zod';
6
+ import { isBoolean, toBoolean } from './booleans.js';
7
+ import { isValidDate } from './dates.js';
8
+ import { isFunction } from './functions.js';
9
+ import { isInteger, toInteger, toIntegerOrThrow, toNumber } from './numbers.js';
10
+ import { isSimpleObject } from './objects.js';
11
+ import { isString, startsWith } from './strings.js';
12
+ const convictCompatibleBooleanFn = (value) => {
13
+ if (value === 'true' || value === '1' || value === 1)
14
+ return true;
15
+ if (value === 'false' || value === '0' || value === 0)
16
+ return false;
17
+ return value;
18
+ };
19
+ export const formats = [
20
+ {
21
+ name: 'required_string',
22
+ validate(val) {
23
+ if (!val || !isString(val)) {
24
+ throw new Error('This field is required and must be of type string');
25
+ }
26
+ }
27
+ },
28
+ {
29
+ name: 'optional_string',
30
+ validate(val) {
31
+ if (!val) {
32
+ return;
33
+ }
34
+ if (isString(val)) {
35
+ return;
36
+ }
37
+ throw new Error('This field is optional but if specified it must be of type string');
38
+ }
39
+ },
40
+ {
41
+ name: 'optional_date',
42
+ validate(val) {
43
+ if (!val) {
44
+ return;
45
+ }
46
+ if (isString(val) || isInteger(val)) {
47
+ if (isValidDate(val)) {
48
+ return;
49
+ }
50
+ }
51
+ else {
52
+ throw new Error('parameter must be a string or number IF specified');
53
+ }
54
+ },
55
+ coerce(val) {
56
+ if (!val) {
57
+ return val;
58
+ }
59
+ try {
60
+ return dateMath.parse(`${val}`);
61
+ }
62
+ catch (err) {
63
+ throw new Error(`value: ${JSON.stringify(val)} cannot be coerced into a proper date
64
+ the error: ${err.stack}`);
65
+ }
66
+ },
67
+ },
68
+ {
69
+ name: 'elasticsearch_name',
70
+ validate(val) {
71
+ if (typeof val !== 'string') {
72
+ throw new Error(`value: ${val} must be a string`);
73
+ }
74
+ if (val.length > 255) {
75
+ throw new Error(`value: ${val} should not exceed 255 characters`);
76
+ }
77
+ if (startsWith(val, '_')
78
+ || startsWith(val, '-')
79
+ || startsWith(val, '+')) {
80
+ throw new Error(`value: ${val} should not start with _, -, or +`);
81
+ }
82
+ if (val === '.' || val === '..') {
83
+ throw new Error(`value: ${val} should not equal . or ..`);
84
+ }
85
+ // NOTE: the \\\\ is necessary to match a single \ in this case
86
+ const badChar = /[#*?"<>|/\\\\]/;
87
+ if (badChar.test(val)) {
88
+ throw new Error(`value: ${val} should not contain any invalid characters: #*?"<>|/\\`);
89
+ }
90
+ const upperRE = /[A-Z]/;
91
+ if (upperRE.test(val)) {
92
+ throw new Error(`value: ${val} should be lower case`);
93
+ }
94
+ },
95
+ },
96
+ {
97
+ name: 'positive_int',
98
+ validate(val) {
99
+ const int = toInteger(val);
100
+ if (int === false || int < 1) {
101
+ throw new Error('must be valid integer greater than zero');
102
+ }
103
+ },
104
+ coerce(val) {
105
+ return toInteger(val) || 0;
106
+ },
107
+ },
108
+ {
109
+ name: 'optional_bool',
110
+ validate(val) {
111
+ if (!val)
112
+ return;
113
+ if (!isBoolean(val)) {
114
+ throw new Error(`If specified, must be convertible to a boolean. Received: ${val}`);
115
+ }
116
+ },
117
+ coerce: convictCompatibleBooleanFn,
118
+ },
119
+ {
120
+ name: 'optional_int',
121
+ validate(val) {
122
+ if (!val)
123
+ return;
124
+ if (!isInteger(val)) {
125
+ throw new Error(`If specified, must be a boolean, 'true', or 'false'. Received: ${val}`);
126
+ }
127
+ },
128
+ coerce(val) {
129
+ try {
130
+ toIntegerOrThrow(val);
131
+ }
132
+ catch (err) {
133
+ return val;
134
+ }
135
+ },
136
+ },
137
+ {
138
+ name: 'duration',
139
+ coerce: (v) => {
140
+ if (typeof v === 'number') {
141
+ return v;
142
+ }
143
+ let val;
144
+ const split = v.split(' ');
145
+ if (split.length == 1) {
146
+ // It must be an integer in string form.
147
+ val = parseInt(v, 10);
148
+ }
149
+ else {
150
+ let unitString = split[1];
151
+ // Add an "s" as the unit of measurement used in Moment
152
+ if (!unitString.match(/s$/)) {
153
+ unitString += 's';
154
+ }
155
+ if (!isMomentUnitOfTime(unitString)) {
156
+ throw new Error(`Invalid duration unit: ${unitString}`);
157
+ }
158
+ val = moment.duration(parseInt(split[0], 10), unitString).valueOf();
159
+ }
160
+ return val;
161
+ },
162
+ validate: function (x) {
163
+ const err_msg = 'must be a positive integer or human readable string (e.g. 3000, "5 days")';
164
+ if (Number.isInteger(x)) {
165
+ assert(x >= 0, err_msg);
166
+ }
167
+ else {
168
+ assert(x.match(/^(\d)+ (.+)$/), err_msg);
169
+ }
170
+ }
171
+ },
172
+ {
173
+ name: 'timestamp',
174
+ coerce: (v) => moment(v).valueOf(),
175
+ validate: function (x) {
176
+ assert(Number.isInteger(x) && x >= 0, 'must be a positive integer');
177
+ }
178
+ }
179
+ ];
180
+ /**
181
+ * Facade class used to validate convict style schemas using the Zod library
182
+ */
183
+ export class SchemaValidator {
184
+ name;
185
+ inputSchema;
186
+ zodSchema;
187
+ checkUndeclaredKeys;
188
+ envMap = {};
189
+ argsMap = {};
190
+ logger;
191
+ constructor(schema, name, extraFormats = [], checkUndeclaredKeys = 'warn') {
192
+ extraFormats.forEach((newFormat) => {
193
+ let unique = true;
194
+ formats.forEach((existingFormat) => {
195
+ // find formats with same name
196
+ if (existingFormat.name === newFormat.name) {
197
+ // find format with different functions
198
+ if (existingFormat.coerce?.toString() !== newFormat.coerce?.toString()
199
+ || existingFormat.validate?.toString() !== newFormat.validate?.toString()) {
200
+ throw new Error(`Custom formats library already contains a format named ${newFormat.name}`);
201
+ }
202
+ unique = false;
203
+ }
204
+ });
205
+ if (unique) {
206
+ formats.push(newFormat);
207
+ }
208
+ });
209
+ this.name = name;
210
+ this.logger = bunyan.createLogger({ name: 'SchemaValidator' });
211
+ this.inputSchema = schema;
212
+ this.zodSchema = this._convictStyleSchemaToZod(schema, name);
213
+ this.checkUndeclaredKeys = checkUndeclaredKeys;
214
+ }
215
+ /**
216
+ * Validate that a configuration conforms to the schema
217
+ *
218
+ * @param { any } config A configuration to validate
219
+ * @returns { T } A valid object of type T
220
+ */
221
+ validate(config) {
222
+ const finalConfig = config;
223
+ // Node process arguments and environmental variables override
224
+ // values from a configuration
225
+ // precedence: args, env, loaded value from config, default
226
+ for (const key in this.envMap) {
227
+ const { envName, format } = this.envMap[key];
228
+ if (envName in process.env) {
229
+ let envVal;
230
+ if (format === Boolean || format === 'Boolean') {
231
+ envVal = toBoolean(process.env[envName]);
232
+ }
233
+ if (format === Number || format === 'Number') {
234
+ envVal = toNumber(process.env[envName]);
235
+ }
236
+ else {
237
+ envVal = process.env[envName];
238
+ }
239
+ finalConfig[key] = envVal;
240
+ }
241
+ }
242
+ for (const key in this.argsMap) {
243
+ const { argName, format } = this.argsMap[key];
244
+ // Find the arg either as exact match or with = syntax
245
+ let argIndex = process.argv.indexOf(`--${argName}`);
246
+ if (argIndex === -1) {
247
+ // Look for --argName=value syntax
248
+ argIndex = process.argv.findIndex((arg) => arg.startsWith(`--${argName}=`));
249
+ }
250
+ if (argIndex >= 2) { // argv flags start at index 2
251
+ const flag = process.argv[argIndex];
252
+ let argValue;
253
+ if (flag.includes('=')) {
254
+ argValue = flag.split('=')[1];
255
+ }
256
+ else {
257
+ argValue = process.argv[argIndex + 1];
258
+ }
259
+ if (format === Boolean || format === 'Boolean') {
260
+ argValue = toBoolean(argValue);
261
+ }
262
+ if (format === Number || format === 'Number') {
263
+ argValue = toNumber(argValue);
264
+ }
265
+ finalConfig[key] = argValue;
266
+ }
267
+ }
268
+ let validatedWithZod;
269
+ try {
270
+ validatedWithZod = this.zodSchema.parse(finalConfig);
271
+ }
272
+ catch (err) {
273
+ throw new Error(`Zod parse error: ${err}`);
274
+ }
275
+ if (this.checkUndeclaredKeys !== 'allow') {
276
+ const schemaKeys = this.getSchemaObjectKeys(this.zodSchema);
277
+ if (schemaKeys) {
278
+ for (const key in finalConfig) {
279
+ if (!schemaKeys.includes(key)) {
280
+ if (this.checkUndeclaredKeys === 'warn') {
281
+ this.logger.warn(`Key '${key}' is not declared in ${this.name} schema`);
282
+ }
283
+ else if (this.checkUndeclaredKeys === 'strict') {
284
+ throw new Error(`Key '${key}' is not declared in ${this.name} schema`);
285
+ }
286
+ }
287
+ }
288
+ }
289
+ }
290
+ return validatedWithZod;
291
+ }
292
+ /**
293
+ * convert a convict style schema to zod schema
294
+ *
295
+ * @param { Schema<T> } schema A convict style schema
296
+ * @param { PropertyKey } parentKey Property name of a nested schema object
297
+ * or other identifier for the schema
298
+ * @param { Format[] } extraFormats User defined formats to be used for schema validation
299
+ * @returns { z.ZodType } A zod schema
300
+ */
301
+ _convictStyleSchemaToZod(schema, parentKey) {
302
+ const fields = {};
303
+ const defaults = {};
304
+ if (!isSimpleObject(schema)) {
305
+ return z.any().default(schema);
306
+ }
307
+ for (const key in schema) {
308
+ const value = schema[key];
309
+ if (isSchemaObj(value)) {
310
+ fields[key] = this._convictSchemaObjToZod(value, key);
311
+ defaults[key] = value.default;
312
+ }
313
+ else {
314
+ fields[key] = this._convictStyleSchemaToZod(value, `${parentKey.toString()}.${key}`);
315
+ defaults[key] = fields[key].parse({});
316
+ }
317
+ }
318
+ return z.looseObject(fields)
319
+ .default(defaults);
320
+ }
321
+ /**
322
+ * Converts a convict style schema object to a zod schema
323
+ * @param { TF.SchemaObj } schemaObj The schema object to convert
324
+ * @param { PropertyKey } key The name of the property that uses the schemaObj
325
+ * @returns { ZodType } A Zod schema object
326
+ */
327
+ _convictSchemaObjToZod(schemaObj, key) {
328
+ let type;
329
+ let finalFormat;
330
+ if (schemaObj.format === undefined) {
331
+ // If no format is set assume the format is the typeof the default value
332
+ const defaultType = Object.prototype.toString.call(schemaObj.default);
333
+ finalFormat = function (x) {
334
+ assert(Object.prototype.toString.call(x) == defaultType, ' should be of type ' + defaultType.replace(/\[.* |]/g, ''));
335
+ };
336
+ type = this._getBaseType(key, finalFormat);
337
+ }
338
+ else {
339
+ type = this._getBaseType(key, schemaObj.format);
340
+ finalFormat = this._getCustomFormatFromName(schemaObj.format) || schemaObj.format;
341
+ }
342
+ if (Object.hasOwn(schemaObj, 'default')) {
343
+ try {
344
+ this._validateDefault(type, schemaObj.default);
345
+ }
346
+ catch (err) {
347
+ throw new Error(`Invalid default value for key ${key.toString()}: ${schemaObj.default}`);
348
+ }
349
+ type = type.default(schemaObj.default);
350
+ }
351
+ if (schemaObj.arg) {
352
+ this.argsMap[key.toString()] = { argName: schemaObj.arg, format: finalFormat };
353
+ }
354
+ if (schemaObj.env) {
355
+ this.envMap[key.toString()] = { envName: schemaObj.env, format: finalFormat };
356
+ }
357
+ if (isOfTypeFormat(finalFormat)) {
358
+ // custom formats
359
+ if (finalFormat.coerce && finalFormat.validate) {
360
+ return type.transform((val, ctx) => {
361
+ try {
362
+ // Both coerce and validate are guaranteed to exist from the check above
363
+ const finalVal = finalFormat.coerce(val);
364
+ finalFormat.validate(finalVal, schemaObj);
365
+ return finalVal;
366
+ }
367
+ catch (err) {
368
+ ctx.addIssue({
369
+ code: 'custom',
370
+ path: [key],
371
+ input: val,
372
+ message: err.message ? err.message : 'Validation failed',
373
+ });
374
+ return z.NEVER;
375
+ }
376
+ });
377
+ }
378
+ else {
379
+ return type.superRefine((val, ctx) => {
380
+ try {
381
+ if (finalFormat.validate) {
382
+ finalFormat.validate(val, schemaObj);
383
+ }
384
+ }
385
+ catch (err) {
386
+ ctx.addIssue({
387
+ code: 'custom',
388
+ path: [key],
389
+ input: val,
390
+ message: err instanceof Error ? err.message : 'Validation failed',
391
+ });
392
+ }
393
+ });
394
+ }
395
+ }
396
+ if (isFunction(finalFormat)) {
397
+ // formats defined in inline functions
398
+ return type.superRefine((args, ctx) => {
399
+ try {
400
+ let val;
401
+ if (args === null || args === undefined) {
402
+ val = schemaObj.default;
403
+ }
404
+ else {
405
+ val = args;
406
+ }
407
+ finalFormat(val);
408
+ }
409
+ catch (err) {
410
+ ctx.addIssue({
411
+ code: 'custom',
412
+ input: args,
413
+ message: err instanceof Error ? err.message : 'Validation failed',
414
+ });
415
+ }
416
+ });
417
+ }
418
+ return type;
419
+ }
420
+ /**
421
+ * Determines the base type that a full schema will be built on
422
+ * @param { PropertyKey } key The name of the property that uses the schemaObj
423
+ * @param { TF.ConvictFormat } convictFormatValue A convict compatible format value
424
+ * @returns { ZodType } The base type
425
+ */
426
+ _getBaseType(key, convictFormatValue) {
427
+ let baseType;
428
+ switch (convictFormatValue) {
429
+ case '*':
430
+ baseType = z.any();
431
+ break;
432
+ case 'int':
433
+ baseType = z.number().int();
434
+ break;
435
+ case 'port':
436
+ baseType = z
437
+ .coerce.number()
438
+ .int()
439
+ .min(1)
440
+ .max(65535);
441
+ break;
442
+ case 'nat':
443
+ baseType = z
444
+ .number()
445
+ .int()
446
+ .min(0);
447
+ break;
448
+ case 'url':
449
+ baseType = z.url();
450
+ break;
451
+ case 'email':
452
+ baseType = z.email();
453
+ break;
454
+ case 'ipaddress':
455
+ baseType = z.union([z.ipv4(), z.ipv6()]);
456
+ break;
457
+ case 'String':
458
+ case String:
459
+ baseType = z.string();
460
+ break;
461
+ case 'Number':
462
+ case Number:
463
+ baseType = z.number();
464
+ break;
465
+ case 'Boolean':
466
+ case Boolean:
467
+ baseType = z.preprocess(convictCompatibleBooleanFn, z.boolean());
468
+ break;
469
+ case 'Object':
470
+ case Object:
471
+ baseType = z.record(z.string(), z.any());
472
+ break;
473
+ case 'Array':
474
+ case Array:
475
+ baseType = z.array(z.any());
476
+ break;
477
+ case 'RegExp':
478
+ case RegExp:
479
+ baseType = z.instanceof(RegExp);
480
+ break;
481
+ case (this._isCustomFormatName(convictFormatValue) ? convictFormatValue : undefined):
482
+ case (isFunction(convictFormatValue) ? convictFormatValue : undefined):
483
+ // let the format function do all validation
484
+ baseType = z.any();
485
+ break;
486
+ case (Array.isArray(convictFormatValue) ? convictFormatValue : undefined):
487
+ baseType = z.enum(convictFormatValue);
488
+ break;
489
+ default:
490
+ throw new Error(`Unrecognized convict format for key: ${key.toString()} cannot be converted to zod format: ${convictFormatValue}`);
491
+ }
492
+ return baseType;
493
+ }
494
+ /** Run the default value against the created schema to ensure it is valid */
495
+ _validateDefault(type, defaultVal) {
496
+ if (defaultVal !== undefined && defaultVal !== null) {
497
+ type.parse(defaultVal);
498
+ }
499
+ }
500
+ /** Unwrap the wrappers on base schema object and retrieve all keys */
501
+ getSchemaObjectKeys(schema) {
502
+ let s = schema;
503
+ // unwrap known wrappers
504
+ while (s instanceof z.ZodDefault
505
+ || s instanceof z.ZodOptional
506
+ || s instanceof z.ZodNullable) {
507
+ s = s.def.innerType;
508
+ }
509
+ if (s instanceof z.ZodObject) {
510
+ return Object.keys(s.shape);
511
+ }
512
+ return undefined;
513
+ }
514
+ /** Look up a custom format by name and return the format object */
515
+ _getCustomFormatFromName(format) {
516
+ if (typeof format !== 'string')
517
+ return null;
518
+ return formats.find((obj) => obj.name === format);
519
+ }
520
+ /** Determine if a format is the name of a custom format */
521
+ _isCustomFormatName(format) {
522
+ if (typeof format !== 'string')
523
+ return false;
524
+ const result = formats.filter((obj) => obj.name === format);
525
+ return result.length > 0;
526
+ }
527
+ }
528
+ export function isSchemaObj(value) {
529
+ if (typeof value !== 'object' || value === null) {
530
+ return false;
531
+ }
532
+ const obj = value;
533
+ if (!('default' in obj)) {
534
+ return false;
535
+ }
536
+ if ('format' in obj) {
537
+ const format = obj.format;
538
+ const validFormat = typeof format === 'string'
539
+ || typeof format === 'function'
540
+ || typeof format === 'object'
541
+ || Array.isArray(format)
542
+ || format === String
543
+ || format === Number
544
+ || format === Boolean
545
+ || format === Object
546
+ || format === Array
547
+ || format === RegExp;
548
+ if (!validFormat) {
549
+ return false;
550
+ }
551
+ }
552
+ if ('doc' in obj && typeof obj.doc !== 'string') {
553
+ return false;
554
+ }
555
+ if ('env' in obj && typeof obj.env !== 'string') {
556
+ return false;
557
+ }
558
+ if ('arg' in obj && typeof obj.arg !== 'string') {
559
+ return false;
560
+ }
561
+ return true;
562
+ }
563
+ export function isOfTypeFormat(value) {
564
+ if (typeof value !== 'object' || value === null) {
565
+ return false;
566
+ }
567
+ const obj = value;
568
+ if ('name' in obj && typeof obj.name !== 'string' && obj.name !== undefined) {
569
+ return false;
570
+ }
571
+ if ('coerce' in obj && typeof obj.coerce !== 'function' && obj.coerce !== undefined) {
572
+ return false;
573
+ }
574
+ if ('validate' in obj && typeof obj.validate !== 'function' && obj.validate !== undefined) {
575
+ return false;
576
+ }
577
+ if (!('name' in obj) && !('validate' in obj) && !('coerce' in obj)) {
578
+ return false;
579
+ }
580
+ return true;
581
+ }
582
+ export function isMomentUnitOfTime(unitString) {
583
+ // Helper function to create a type-checked array of valid units
584
+ const units = (arr) => arr;
585
+ const validUnits = units([
586
+ 'year',
587
+ 'years',
588
+ 'y',
589
+ 'month',
590
+ 'months',
591
+ 'M',
592
+ 'week',
593
+ 'weeks',
594
+ 'w',
595
+ 'day',
596
+ 'days',
597
+ 'd',
598
+ 'hour',
599
+ 'hours',
600
+ 'h',
601
+ 'minute',
602
+ 'minutes',
603
+ 'm',
604
+ 'second',
605
+ 'seconds',
606
+ 's',
607
+ 'millisecond',
608
+ 'milliseconds',
609
+ 'ms',
610
+ 'quarter',
611
+ 'quarters',
612
+ 'Q'
613
+ ]);
614
+ return validUnits.includes(unitString);
615
+ }
616
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAoC,MAAM,KAAK,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,0BAA0B,GAAG,CAAC,KAAc,EAAE,EAAE;IAClD,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClE,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpE,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAgB;IAChC;QACI,IAAI,EAAE,iBAAiB;QACvB,QAAQ,CAAC,GAAY;YACjB,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACzE,CAAC;QACL,CAAC;KACJ;IACD;QACI,IAAI,EAAE,iBAAiB;QACvB,QAAQ,CAAC,GAAY;YACjB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,OAAO;YACX,CAAC;YACD,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChB,OAAO;YACX,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACzF,CAAC;KACJ;IACD;QACI,IAAI,EAAE,eAAe;QACrB,QAAQ,CAAC,GAAY;YACjB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,OAAO;YACX,CAAC;YACD,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClC,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnB,OAAO;gBACX,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACzE,CAAC;QACL,CAAC;QACD,MAAM,CAAC,GAAQ;YACX,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,OAAO,GAAG,CAAC;YACf,CAAC;YACD,IAAI,CAAC;gBACD,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CACX,UAAU,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;qCACZ,GAAG,CAAC,KAAK,EAAE,CAC/B,CAAC;YACN,CAAC;QACL,CAAC;KACJ;IACD;QACI,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,CAAC,GAAY;YACjB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,mCAAmC,CAAC,CAAC;YACtE,CAAC;YAED,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;mBACjB,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;mBACpB,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,mCAAmC,CAAC,CAAC;YACtE,CAAC;YAED,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,2BAA2B,CAAC,CAAC;YAC9D,CAAC;YAED,+DAA+D;YAC/D,MAAM,OAAO,GAAG,gBAAgB,CAAC;YACjC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,wDAAwD,CAAC,CAAC;YAC3F,CAAC;YAED,MAAM,OAAO,GAAG,OAAO,CAAC;YACxB,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,uBAAuB,CAAC,CAAC;YAC1D,CAAC;QACL,CAAC;KACJ;IACD;QACI,IAAI,EAAE,cAAc;QACpB,QAAQ,CAAC,GAAY;YACjB,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC/D,CAAC;QACL,CAAC;QACD,MAAM,CAAC,GAAQ;YACX,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;KACJ;IACD;QACI,IAAI,EAAE,eAAe;QACrB,QAAQ,CAAC,GAAY;YACjB,IAAI,CAAC,GAAG;gBAAE,OAAO;YACjB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,6DAA6D,GAAG,EAAE,CAAC,CAAC;YACxF,CAAC;QACL,CAAC;QACD,MAAM,EAAE,0BAA0B;KACrC;IACD;QACI,IAAI,EAAE,cAAc;QACpB,QAAQ,CAAC,GAAY;YACjB,IAAI,CAAC,GAAG;gBAAE,OAAO;YACjB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,kEAAkE,GAAG,EAAE,CAAC,CAAC;YAC7F,CAAC;QACL,CAAC;QACD,MAAM,CAAC,GAAY;YACf,IAAI,CAAC;gBACD,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,OAAO,GAAG,CAAC;YACf,CAAC;QACL,CAAC;KACJ;IACD;QACI,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,CAAC,CAAkB,EAAE,EAAE;YAC3B,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACxB,OAAO,CAAC,CAAC;YACb,CAAC;YACD,IAAI,GAAG,CAAC;YACR,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACpB,wCAAwC;gBACxC,GAAG,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACJ,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,uDAAuD;gBACvD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1B,UAAU,IAAI,GAAG,CAAC;gBACtB,CAAC;gBAED,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;oBAClC,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;gBAC5D,CAAC;gBACD,GAAG,GAAG,MAAM,CAAC,QAAQ,CACjB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EACtB,UAAU,CACb,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC;YACD,OAAO,GAAG,CAAC;QACf,CAAC;QACD,QAAQ,EAAE,UAAU,CAAC;YACjB,MAAM,OAAO,GAAG,2EAA2E,CAAC;YAE5F,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC;KACJ;IACD;QACI,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;QAClC,QAAQ,EAAE,UAAU,CAAC;YACjB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,4BAA4B,CAAC,CAAC;QACxE,CAAC;KACJ;CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,eAAe;IACxB,IAAI,CAAS;IACb,WAAW,CAAe;IAC1B,SAAS,CAAa;IACtB,mBAAmB,CAAsB;IACzC,MAAM,GAAkE,EAAE,CAAC;IAC3E,OAAO,GAAkE,EAAE,CAAC;IAC5E,MAAM,CAAS;IAEf,YACI,MAAoB,EACpB,IAAY,EACZ,eAA4B,EAAE,EAC9B,sBAA2C,MAAM;QAEjD,YAAY,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YAC/B,IAAI,MAAM,GAAG,IAAI,CAAC;YAClB,OAAO,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE;gBAC/B,8BAA8B;gBAC9B,IAAI,cAAc,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oBACzC,uCAAuC;oBACvC,IAAI,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE;2BAC/D,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC;wBAC5E,MAAM,IAAI,KAAK,CAAC,0DAA0D,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;oBAChG,CAAC;oBACD,MAAM,GAAG,KAAK,CAAC;gBACnB,CAAC;YACL,CAAC,CAAC,CAAC;YACH,IAAI,MAAM,EAAE,CAAC;gBACT,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,MAAW;QAChB,MAAM,WAAW,GAAQ,MAAM,CAAC;QAEhC,8DAA8D;QAC9D,8BAA8B;QAC9B,2DAA2D;QAC3D,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBACzB,IAAI,MAAM,CAAC;gBACX,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC7C,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC7C,CAAC;gBACD,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC3C,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC5C,CAAC;qBAAM,CAAC;oBACJ,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAClC,CAAC;gBACD,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YAC9B,CAAC;QACL,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9C,sDAAsD;YACtD,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;YACpD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;gBAClB,kCAAkC;gBAClC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC;YAChF,CAAC;YACD,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC,8BAA8B;gBAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpC,IAAI,QAAmC,CAAC;gBACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrB,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACJ,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBAC1C,CAAC;gBACD,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC7C,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACnC,CAAC;gBACD,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC3C,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAClC,CAAC;gBACD,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;YAChC,CAAC;QACL,CAAC;QAED,IAAI,gBAAgB,CAAC;QAErB,IAAI,CAAC;YACD,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,IAAI,CAAC,mBAAmB,KAAK,OAAO,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5D,IAAI,UAAU,EAAE,CAAC;gBACb,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;oBAC5B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC5B,IAAI,IAAI,CAAC,mBAAmB,KAAK,MAAM,EAAE,CAAC;4BACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,wBAAwB,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;wBAC5E,CAAC;6BAAM,IAAI,IAAI,CAAC,mBAAmB,KAAK,QAAQ,EAAE,CAAC;4BAC/C,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,wBAAwB,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;wBAC3E,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IAED;;;;;;;;OAQG;IACH,wBAAwB,CACpB,MAAoB,EACpB,SAAsB;QAEtB,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAwB,EAAE,CAAC;QAEzC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,WAAW,CAAI,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACtD,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,wBAAwB,CACvC,KAAqB,EACrB,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CACnC,CAAC;gBACF,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC;QAED,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;aACvB,OAAO,CAAC,QAAQ,CAAiB,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACH,sBAAsB,CAClB,SAAuB,EACvB,GAAgB;QAEhB,IAAI,IAAa,CAAC;QAClB,IAAI,WAA6B,CAAC;QAElC,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,wEAAwE;YACxE,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtE,WAAW,GAAG,UAAU,CAAU;gBAC9B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW,EACnD,qBAAqB,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;YACrE,CAAC,CAAC;YACF,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACJ,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;YAChD,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC;QACtF,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC;gBACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7F,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACnF,CAAC;QAED,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAClF,CAAC;QAED,IAAI,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9B,iBAAiB;YACjB,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;gBAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBAC/B,IAAI,CAAC;wBACD,wEAAwE;wBACxE,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC;wBAC1C,WAAW,CAAC,QAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;wBAC3C,OAAO,QAAQ,CAAC;oBACpB,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACX,GAAG,CAAC,QAAQ,CAAC;4BACT,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,CAAC,GAAG,CAAC;4BACX,KAAK,EAAE,GAAG;4BACV,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB;yBAC3D,CAAC,CAAC;wBACH,OAAO,CAAC,CAAC,KAAK,CAAC;oBACnB,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBACjC,IAAI,CAAC;wBACD,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;4BACvB,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;wBACzC,CAAC;oBACL,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACX,GAAG,CAAC,QAAQ,CAAC;4BACT,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,CAAC,GAAG,CAAC;4BACX,KAAK,EAAE,GAAG;4BACV,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB;yBACpE,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1B,sCAAsC;YACtC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,IAAS,EAAE,GAAuB,EAAE,EAAE;gBAC3D,IAAI,CAAC;oBACD,IAAI,GAAG,CAAC;oBACR,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;wBACtC,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;oBAC5B,CAAC;yBAAM,CAAC;wBACJ,GAAG,GAAG,IAAI,CAAC;oBACf,CAAC;oBACD,WAAW,CAAC,GAAG,CAAC,CAAC;gBACrB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,GAAG,CAAC,QAAQ,CAAC;wBACT,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,IAAI;wBACX,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB;qBACpE,CAAC,CAAC;gBACP,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,YAAY,CACR,GAAgB,EAChB,kBAAoC;QAEpC,IAAI,QAAiB,CAAC;QAEtB,QAAQ,kBAAkB,EAAE,CAAC;YACzB,KAAK,GAAG;gBACJ,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBACnB,MAAM;YACV,KAAK,KAAK;gBACN,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;gBAC5B,MAAM;YACV,KAAK,MAAM;gBACP,QAAQ,GAAG,CAAC;qBACP,MAAM,CAAC,MAAM,EAAE;qBACf,GAAG,EAAE;qBACL,GAAG,CAAC,CAAC,CAAC;qBACN,GAAG,CAAC,KAAK,CAAC,CAAC;gBAChB,MAAM;YACV,KAAK,KAAK;gBACN,QAAQ,GAAG,CAAC;qBACP,MAAM,EAAE;qBACR,GAAG,EAAE;qBACL,GAAG,CAAC,CAAC,CAAC,CAAC;gBACZ,MAAM;YACV,KAAK,KAAK;gBACN,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBACnB,MAAM;YACV,KAAK,OAAO;gBACR,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM;YACV,KAAK,WAAW;gBACZ,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACzC,MAAM;YACV,KAAK,QAAQ,CAAC;YACd,KAAK,MAAM;gBACP,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM;YACV,KAAK,QAAQ,CAAC;YACd,KAAK,MAAM;gBACP,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM;YACV,KAAK,SAAS,CAAC;YACf,KAAK,OAAO;gBACR,QAAQ,GAAG,CAAC,CAAC,UAAU,CACnB,0BAA0B,EAC1B,CAAC,CAAC,OAAO,EAAE,CACd,CAAC;gBACF,MAAM;YACV,KAAK,QAAQ,CAAC;YACd,KAAK,MAAM;gBACP,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;gBACzC,MAAM;YACV,KAAK,OAAO,CAAC;YACb,KAAK,KAAK;gBACN,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC5B,MAAM;YACV,KAAK,QAAQ,CAAC;YACd,KAAK,MAAM;gBACP,QAAQ,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAChC,MAAM;YACV,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACrF,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;gBAClE,4CAA4C;gBAC5C,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBACnB,MAAM;YACV,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;gBACrE,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,kBAA2C,CAAC,CAAC;gBAC/D,MAAM;YACV;gBACI,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,CAAC,QAAQ,EAAE,uCAAuC,kBAAkB,EAAE,CAAC,CAAC;QAC3I,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,6EAA6E;IAC7E,gBAAgB,CAAC,IAAe,EAAE,UAAe;QAC7C,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;IACL,CAAC;IAED,sEAAsE;IACtE,mBAAmB,CAAC,MAAe;QAC/B,IAAI,CAAC,GAAkB,MAAM,CAAC;QAE9B,wBAAwB;QACxB,OACI,CAAC,YAAY,CAAC,CAAC,UAAU;eACtB,CAAC,YAAY,CAAC,CAAC,WAAW;eAC1B,CAAC,YAAY,CAAC,CAAC,WAAW,EAC/B,CAAC;YACC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,mEAAmE;IACnE,wBAAwB,CAAC,MAAoC;QACzD,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC5C,OAAO,OAAO,CAAC,IAAI,CACf,CAAC,GAAc,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAC1C,CAAC;IACN,CAAC;IAED,2DAA2D;IAC3D,mBAAmB,CAAC,MAAwB;QACxC,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CACzB,CAAC,GAAc,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAC1C,CAAC;QAEF,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7B,CAAC;CACJ;AAID,MAAM,UAAU,WAAW,CAAI,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,GAAG,GAAG,KAAgC,CAAC;IAE7C,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,WAAW,GACX,OAAO,MAAM,KAAK,QAAQ;eACrB,OAAO,MAAM,KAAK,UAAU;eAC5B,OAAO,MAAM,KAAK,QAAQ;eAC1B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;eACrB,MAAM,KAAK,MAAM;eACjB,MAAM,KAAK,MAAM;eACjB,MAAM,KAAK,OAAO;eAClB,MAAM,KAAK,MAAM;eACjB,MAAM,KAAK,KAAK;eAChB,MAAM,KAAK,MAAM,CAAC;QAE7B,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,IAAI,KAAK,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,GAAG,GAAG,KAAgC,CAAC;IAE7C,IAAI,MAAM,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC1E,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClF,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,UAAU,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACxF,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,EAAE,CAAC;QACjE,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAC9B,UAAkB;IAElB,gEAAgE;IAChE,MAAM,KAAK,GAAG,CACV,GAAM,EACL,EAAE,CAAC,GAAG,CAAC;IAEZ,MAAM,UAAU,GAAG,KAAK,CAAC;QACrB,MAAM;QACN,OAAO;QACP,GAAG;QACH,OAAO;QACP,QAAQ;QACR,GAAG;QACH,MAAM;QACN,OAAO;QACP,GAAG;QACH,KAAK;QACL,MAAM;QACN,GAAG;QACH,MAAM;QACN,OAAO;QACP,GAAG;QACH,QAAQ;QACR,SAAS;QACT,GAAG;QACH,QAAQ;QACR,SAAS;QACT,GAAG;QACH,aAAa;QACb,cAAc;QACd,IAAI;QACJ,SAAS;QACT,UAAU;QACV,GAAG;KACN,CAAC,CAAC;IAEH,OAAQ,UAAgC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAClE,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@terascope/core-utils",
3
3
  "displayName": "Core Utils",
4
- "version": "2.0.0-dev.8",
4
+ "version": "2.0.0-dev.9",
5
5
  "description": "A collection of Teraslice Core Utilities",
6
6
  "homepage": "https://github.com/terascope/teraslice/tree/master/packages/core-utils#readme",
7
7
  "bugs": {
@@ -29,16 +29,20 @@
29
29
  "debug": "~4.4.3"
30
30
  },
31
31
  "dependencies": {
32
- "@terascope/types": "~2.0.0-dev.7",
32
+ "@terascope/types": "~2.0.0-dev.8",
33
33
  "awesome-phonenumber": "~7.5.0",
34
+ "bunyan": "~1.8.15",
35
+ "datemath-parser": "~1.0.6",
34
36
  "debug": "~4.4.3",
35
37
  "is-plain-object": "~5.0.0",
36
38
  "js-string-escape": "~1.0.1",
37
39
  "kind-of": "~6.0.3",
38
40
  "lodash-es": "~4.17.21",
41
+ "moment": "~2.30.1",
39
42
  "p-map": "~7.0.3",
40
43
  "shallow-clone": "~3.0.1",
41
- "validator": "~13.12.0"
44
+ "validator": "~13.12.0",
45
+ "zod": "~4.1.12"
42
46
  },
43
47
  "devDependencies": {
44
48
  "@types/debug": "~4.1.12",