functional-models 1.1.14 → 1.1.18
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/interfaces.d.ts +45 -38
- package/interfaces.js +0 -1
- package/interfaces.js.map +1 -1
- package/models.js +3 -1
- package/models.js.map +1 -1
- package/package.json +2 -2
- package/properties.d.ts +13 -13
- package/properties.js +18 -13
- package/properties.js.map +1 -1
- package/validation.d.ts +20 -20
- package/validation.js +39 -33
- package/validation.js.map +1 -1
package/interfaces.d.ts
CHANGED
|
@@ -4,18 +4,14 @@ declare type Nullable<T> = T | null;
|
|
|
4
4
|
declare type Maybe<T> = T | undefined | null;
|
|
5
5
|
declare type Arrayable<T> = T | readonly T[];
|
|
6
6
|
declare type MaybeLazy<T> = Maybe<Promise<T>>;
|
|
7
|
-
declare type
|
|
8
|
-
declare type JsonAble = number | string | boolean | null | Arrayable<{
|
|
7
|
+
declare type JsonAble = Arrayable<{
|
|
9
8
|
readonly [s: string]: JsonAble;
|
|
10
|
-
}>;
|
|
9
|
+
}> | Arrayable<number> | Arrayable<string> | Arrayable<boolean> | Arrayable<null>;
|
|
11
10
|
declare type VeryPrimitivesTypes = null | string | number | boolean;
|
|
12
11
|
declare type toObj = () => Promise<JsonAble>;
|
|
13
12
|
declare type ValueIsOfType<T, V> = {
|
|
14
13
|
readonly [P in keyof T as T[P] extends V ? P : never]: T[P];
|
|
15
14
|
};
|
|
16
|
-
declare type ValueIsNotOfType<T, V> = {
|
|
17
|
-
readonly [P in keyof T as T[P] extends V ? never : P]: T[P];
|
|
18
|
-
};
|
|
19
15
|
declare type InstanceMethodGetters<T> = {
|
|
20
16
|
readonly [P in keyof T as T[P] extends ModelInstanceMethod ? P : never]: ModelInstanceMethodClient;
|
|
21
17
|
};
|
|
@@ -26,44 +22,50 @@ declare type ModelMethodTypes<T extends FunctionalModel> = ModelMethod | ModelIn
|
|
|
26
22
|
declare type PropertyGetters<T extends FunctionalModel> = {
|
|
27
23
|
readonly [Property in keyof T as T[Property] extends ModelMethodTypes<T> ? never : Property]: () => T[Property] | Promise<T[Property]>;
|
|
28
24
|
};
|
|
29
|
-
declare type FunctionalModel = {
|
|
25
|
+
declare type FunctionalModel = JsonAble | {
|
|
30
26
|
readonly [s: string]: Arrayable<number> | Arrayable<string> | Arrayable<boolean> | Arrayable<null> | Arrayable<FunctionalModel> | Arrayable<Date> | Arrayable<undefined> | ReferenceValueType<any> | ModelInstanceMethod | ModelMethod;
|
|
31
|
-
}
|
|
27
|
+
};
|
|
32
28
|
declare type FunctionalType = JsonAble | (() => FunctionalType) | Arrayable<undefined> | Arrayable<Date> | Arrayable<FunctionalModel> | Arrayable<{
|
|
33
29
|
readonly [s: string]: JsonAble;
|
|
34
30
|
}>;
|
|
35
|
-
declare type ModelInstanceInputData<T extends FunctionalModel> =
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
declare type
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
declare type PropertyValidator = (instance: ModelInstance<any>, instanceData: FunctionalModel) => Promise<ValidationErrors>;
|
|
31
|
+
declare type ModelInstanceInputData<T extends FunctionalModel> = {
|
|
32
|
+
readonly [P in keyof T as T[P] extends ModelMethodTypes<T> ? never : P]: T[P];
|
|
33
|
+
} | JsonAble;
|
|
34
|
+
declare type ValidatorConfiguration = {
|
|
35
|
+
readonly [s: string]: any;
|
|
36
|
+
};
|
|
42
37
|
declare type ValidationError = string | undefined;
|
|
43
|
-
declare type ValidationErrors = readonly
|
|
38
|
+
declare type ValidationErrors = readonly string[];
|
|
44
39
|
declare type ModelError = string;
|
|
45
40
|
declare type ModelErrors = {
|
|
46
41
|
readonly [s: string]: readonly ModelError[];
|
|
47
42
|
};
|
|
48
|
-
declare type
|
|
49
|
-
declare type
|
|
43
|
+
declare type PropertyValidatorComponentTypeAdvanced<TValue, TModel extends FunctionalModel> = (value: TValue, instance: ModelInstance<TModel>, instanceData: TModel | JsonAble, configurations: ValidatorConfiguration) => ValidationError;
|
|
44
|
+
declare type PropertyValidatorComponentType<TValue> = (value: TValue, instance: ModelInstance<any>, instanceData: FunctionalModel | JsonAble, configurations: ValidatorConfiguration) => ValidationError;
|
|
45
|
+
declare type PropertyValidatorComponentSync<T extends FunctionalModel> = PropertyValidatorComponentTypeAdvanced<any, T>;
|
|
46
|
+
declare type ValuePropertyValidatorComponent<T extends Arrayable<FunctionalType>> = (value: T) => ValidationError;
|
|
47
|
+
declare type PropertyValidatorComponentAsync<T extends FunctionalModel> = (value: Arrayable<FunctionalType>, instance: ModelInstance<T>, instanceData: T | JsonAble, configurations: ValidatorConfiguration) => Promise<ValidationError>;
|
|
48
|
+
declare type PropertyValidatorComponent<T extends FunctionalModel> = PropertyValidatorComponentSync<T> | PropertyValidatorComponentAsync<T>;
|
|
49
|
+
declare type PropertyValidator<T extends FunctionalModel> = (instance: ModelInstance<T>, instanceData: T | JsonAble, configurations: ValidatorConfiguration) => Promise<ValidationErrors>;
|
|
50
|
+
declare type ModelComponentValidator<T extends FunctionalModel> = (instance: ModelInstance<T>, instanceData: T | JsonAble, configurations: ValidatorConfiguration) => Promise<ModelErrors>;
|
|
51
|
+
declare type ValueGetter<T extends Arrayable<FunctionalType>> = () => MaybePromise<T | ModelInstance<any>>;
|
|
50
52
|
declare type PropertyInstance<T extends Arrayable<FunctionalType>> = {
|
|
51
53
|
readonly getConfig: () => object;
|
|
52
54
|
readonly getChoices: () => readonly VeryPrimitivesTypes[];
|
|
53
55
|
readonly getDefaultValue: () => T;
|
|
54
56
|
readonly getConstantValue: () => T;
|
|
55
57
|
readonly getPropertyType: () => string;
|
|
56
|
-
readonly createGetter: (value: T) => ValueGetter
|
|
57
|
-
readonly getValidator: (valueGetter: ValueGetter) => PropertyValidator
|
|
58
|
+
readonly createGetter: (value: T) => ValueGetter<T>;
|
|
59
|
+
readonly getValidator: <TModel extends FunctionalModel>(valueGetter: ValueGetter<T>) => PropertyValidator<TModel>;
|
|
58
60
|
};
|
|
59
61
|
declare type PropertiesList<T> = {
|
|
60
62
|
readonly [P in keyof T as T[P] extends Arrayable<FunctionalType> ? P : never]: PropertyInstance<any>;
|
|
61
63
|
};
|
|
62
|
-
interface ReferencePropertyInstance<T extends FunctionalModel
|
|
63
|
-
readonly getReferencedId: (instanceValues: ReferenceValueType<T>) =>
|
|
64
|
+
interface ReferencePropertyInstance<T extends FunctionalModel, TProperty extends Arrayable<FunctionalType>> extends PropertyInstance<TProperty> {
|
|
65
|
+
readonly getReferencedId: (instanceValues: ReferenceValueType<T>) => Maybe<PrimaryKeyType>;
|
|
64
66
|
readonly getReferencedModel: () => Model<T>;
|
|
65
67
|
}
|
|
66
|
-
declare type ReferenceValueType<T extends FunctionalModel> = ModelInstance<T> | ModelInstanceInputData<T> |
|
|
68
|
+
declare type ReferenceValueType<T extends FunctionalModel> = Maybe<ModelInstance<T> | ModelInstanceInputData<T> | PrimaryKeyType>;
|
|
67
69
|
declare type DefaultPropertyValidators = {
|
|
68
70
|
readonly required?: boolean;
|
|
69
71
|
readonly isInteger?: boolean;
|
|
@@ -72,14 +74,14 @@ declare type DefaultPropertyValidators = {
|
|
|
72
74
|
readonly isArray?: boolean;
|
|
73
75
|
readonly isBoolean?: boolean;
|
|
74
76
|
};
|
|
75
|
-
declare type PropertyConfigContents = {
|
|
77
|
+
declare type PropertyConfigContents<T extends Arrayable<FunctionalType>> = {
|
|
76
78
|
readonly type?: string;
|
|
77
|
-
readonly defaultValue?:
|
|
78
|
-
readonly value?:
|
|
79
|
+
readonly defaultValue?: T;
|
|
80
|
+
readonly value?: T;
|
|
79
81
|
readonly choices?: readonly VeryPrimitivesTypes[];
|
|
80
|
-
readonly lazyLoadMethod?: (value:
|
|
81
|
-
readonly valueSelector?: (instanceValue: MaybePromise<
|
|
82
|
-
readonly validators?: readonly PropertyValidatorComponent[];
|
|
82
|
+
readonly lazyLoadMethod?: (value: T) => MaybeLazy<T>;
|
|
83
|
+
readonly valueSelector?: (instanceValue: MaybePromise<T>) => T;
|
|
84
|
+
readonly validators?: readonly PropertyValidatorComponent<any>[];
|
|
83
85
|
readonly maxLength?: number;
|
|
84
86
|
readonly minLength?: number;
|
|
85
87
|
readonly maxValue?: number;
|
|
@@ -87,8 +89,8 @@ declare type PropertyConfigContents = {
|
|
|
87
89
|
readonly autoNow?: boolean;
|
|
88
90
|
readonly fetcher?: ModelFetcher;
|
|
89
91
|
};
|
|
90
|
-
declare type ModelFetcher =
|
|
91
|
-
declare type PropertyConfig = (PropertyConfigContents & DefaultPropertyValidators) | undefined;
|
|
92
|
+
declare type ModelFetcher = (model: Model<any>, primaryKey: PrimaryKeyType) => Promise<ModelInstance<any> | ModelInstanceInputData<any> | null | undefined>;
|
|
93
|
+
declare type PropertyConfig<T extends Arrayable<FunctionalType>> = (PropertyConfigContents<T> & DefaultPropertyValidators) | undefined;
|
|
92
94
|
declare type PrimaryKeyPropertyInstanceType = PropertyInstance<string> | PropertyInstance<number>;
|
|
93
95
|
declare type PrimaryKeyType = string | number;
|
|
94
96
|
declare type ModelMethods<T extends FunctionalModel> = ValueIsOfType<T, ModelMethod | ModelMethodTyped<T>>;
|
|
@@ -100,12 +102,12 @@ declare type ModelDefinition<T extends FunctionalModel> = {
|
|
|
100
102
|
};
|
|
101
103
|
readonly instanceMethods?: InstanceMethods<T>;
|
|
102
104
|
readonly modelMethods?: ModelMethods<T>;
|
|
103
|
-
readonly modelValidators?: readonly ModelComponentValidator[];
|
|
105
|
+
readonly modelValidators?: readonly ModelComponentValidator<T>[];
|
|
104
106
|
};
|
|
105
107
|
declare type ModelFactory = <T extends FunctionalModel>(modelName: string, modelDefinition: ModelDefinition<T>, options?: OptionalModelOptions<T>) => Model<T>;
|
|
106
|
-
declare type CreateParams<T extends FunctionalModel> = (ModelInstanceInputData<T> & {
|
|
108
|
+
declare type CreateParams<T extends FunctionalModel> = ModelInstanceInputData<T> | (ModelInstanceInputData<T> & {
|
|
107
109
|
readonly id?: PrimaryKeyType;
|
|
108
|
-
})
|
|
110
|
+
});
|
|
109
111
|
declare type Model<T extends FunctionalModel> = {
|
|
110
112
|
readonly getName: () => string;
|
|
111
113
|
readonly getPrimaryKeyName: () => string;
|
|
@@ -118,8 +120,8 @@ declare type Model<T extends FunctionalModel> = {
|
|
|
118
120
|
declare type ReferenceFunctions = {
|
|
119
121
|
readonly [s: string]: () => ReferenceValueType<any>;
|
|
120
122
|
};
|
|
121
|
-
declare type PropertyValidators = {
|
|
122
|
-
readonly [s: string]: PropertyValidator
|
|
123
|
+
declare type PropertyValidators<T extends FunctionalModel> = {
|
|
124
|
+
readonly [s: string]: PropertyValidator<T>;
|
|
123
125
|
};
|
|
124
126
|
declare type ModelInstance<T extends FunctionalModel> = {
|
|
125
127
|
readonly get: PropertyGetters<T> & {
|
|
@@ -130,10 +132,15 @@ declare type ModelInstance<T extends FunctionalModel> = {
|
|
|
130
132
|
readonly toObj: toObj;
|
|
131
133
|
readonly getPrimaryKeyName: () => string;
|
|
132
134
|
readonly getPrimaryKey: () => PrimaryKeyType;
|
|
133
|
-
readonly validators: PropertyValidators
|
|
135
|
+
readonly validators: PropertyValidators<T>;
|
|
134
136
|
readonly validate: (options?: {}) => Promise<ModelErrors>;
|
|
135
137
|
readonly getModel: () => Model<T>;
|
|
136
138
|
};
|
|
139
|
+
declare type ValueRequired<T extends FunctionalType | Arrayable<FunctionalType>> = NonNullable<T>;
|
|
140
|
+
declare type ValueOptional<T extends FunctionalType | Arrayable<FunctionalType>> = Maybe<T>;
|
|
141
|
+
declare type ValueOptionalR<T extends FunctionalModel> = ValueOptional<ReferenceValueType<T>>;
|
|
142
|
+
declare type ValueRequiredR<T extends FunctionalModel> = ValueRequired<ReferenceValueType<T>>;
|
|
143
|
+
declare type PropertyModifier<T extends Arrayable<FunctionalType>> = ValueRequired<T> | ValueOptional<T> | T;
|
|
137
144
|
declare type ModelMethodTyped<T extends FunctionalModel> = (model: Model<T>, args?: readonly any[]) => any;
|
|
138
145
|
declare type ModelMethod = ModelMethodTyped<any>;
|
|
139
146
|
declare type ModelMethodClient = (...args: readonly any[]) => any;
|
|
@@ -148,4 +155,4 @@ declare type OptionalModelOptions<T extends FunctionalModel> = {
|
|
|
148
155
|
readonly instanceCreatedCallback?: Nullable<Arrayable<(instance: ModelInstance<T>) => void>>;
|
|
149
156
|
readonly [s: string]: any;
|
|
150
157
|
} | undefined;
|
|
151
|
-
export { MaybeFunction, Maybe, MaybePromise, Nullable, Arrayable, MaybeLazy, JsonAble, toObj, ModelInstance, Model, PropertyValidatorComponent, PropertyValidatorComponentSync, PropertyValidatorComponentAsync, PropertyValidatorComponentType, PropertyValidator, ModelComponentValidator, PropertyInstance, PropertyConfig, FunctionalType, ValueGetter, ReferenceValueType, ModelDefinition, ModelOptions, ModelMethod, OptionalModelOptions, ReferencePropertyInstance, PropertyGetters, PropertyValidators, PropertyValidatorComponentTypeAdvanced, ModelInstanceMethod, ModelInstanceMethodTyped, FunctionalModel, ModelInstanceInputData, ModelMethodTyped, ModelMethodGetters, InstanceMethodGetters, ReferenceFunctions, ModelErrors,
|
|
158
|
+
export { MaybeFunction, Maybe, MaybePromise, Nullable, Arrayable, MaybeLazy, JsonAble, toObj, ModelInstance, Model, PropertyValidatorComponent, PropertyValidatorComponentSync, PropertyValidatorComponentAsync, PropertyValidatorComponentType, PropertyValidator, ModelComponentValidator, PropertyInstance, PropertyConfig, FunctionalType, ValueGetter, ReferenceValueType, ModelDefinition, ModelOptions, ModelMethod, OptionalModelOptions, ReferencePropertyInstance, PropertyGetters, PropertyValidators, PropertyValidatorComponentTypeAdvanced, ModelInstanceMethod, ModelInstanceMethodTyped, FunctionalModel, ModelInstanceInputData, ModelMethodTyped, ModelMethodGetters, InstanceMethodGetters, ReferenceFunctions, ModelErrors, PrimaryKeyType, ModelFactory, ModelFetcher, CreateParams, ValidatorConfiguration, ValuePropertyValidatorComponent, ValueRequired, ValueOptional, ValueOptionalR, ValueRequiredR, PropertyModifier, ValidationErrors, };
|
package/interfaces.js
CHANGED
package/interfaces.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";;AAoXA,kCAAkC"}
|
package/models.js
CHANGED
|
@@ -86,7 +86,9 @@ const BaseModel = (modelName, modelDefinition, options) => {
|
|
|
86
86
|
const getModel = () => model;
|
|
87
87
|
const toObj = (0, serialization_1.toJsonAble)(loadedInternals.get);
|
|
88
88
|
const validate = (options = {}) => {
|
|
89
|
-
return (
|
|
89
|
+
return Promise.resolve().then(() => {
|
|
90
|
+
return (0, validation_1.createModelValidator)(loadedInternals.validators, modelDefinition.modelValidators || [])(instance, options);
|
|
91
|
+
});
|
|
90
92
|
};
|
|
91
93
|
instance = (0, merge_1.default)(loadedInternals, {
|
|
92
94
|
getModel,
|
package/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":";;;;;;AAAA,yDAAgC;AAChC,mDAA4C;AAC5C,6CAAmD;AACnD,6CAAuC;AAsBvC,MAAM,eAAe,GAAG,GAA+C,EAAE,CAAC,CAAC;IACzE,uBAAuB,EAAE,IAAI;CAC9B,CAAC,CAAA;AAEF,MAAM,eAAe,GAAG,
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "functional-models",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.18",
|
|
4
4
|
"description": "A library for creating JavaScript function based models.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"test:coverage": "nyc npm run test",
|
|
10
10
|
"feature-tests": "./node_modules/.bin/cucumber-js -p default",
|
|
11
11
|
"coverage": "nyc --all --reporter=lcov npm test",
|
|
12
|
-
"dist": "tsc && cp package.json ./dist && cp README.md ./dist && cd dist && npm publish"
|
|
12
|
+
"dist": "tsc -p ./tsconfig.build.json && cp package.json ./dist && cp README.md ./dist && cd dist && npm publish"
|
|
13
13
|
},
|
|
14
14
|
"repository": {
|
|
15
15
|
"type": "git",
|
package/properties.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const Property: <T extends Arrayable<FunctionalType>>(type: string, config?: PropertyConfig
|
|
3
|
-
declare const DateProperty: (config?: PropertyConfig
|
|
1
|
+
import { ReferenceValueType, Model, PropertyInstance, FunctionalType, PropertyConfig, MaybeFunction, Arrayable, ReferencePropertyInstance, FunctionalModel, JsonAble, PropertyModifier } from './interfaces';
|
|
2
|
+
declare const Property: <T extends Arrayable<FunctionalType>>(type: string, config?: PropertyConfig<T>, additionalMetadata?: {}) => PropertyInstance<T>;
|
|
3
|
+
declare const DateProperty: <TModifier extends PropertyModifier<string | Date>>(config?: PropertyConfig<TModifier>, additionalMetadata?: {}) => PropertyInstance<TModifier>;
|
|
4
4
|
declare const ArrayProperty: <T extends FunctionalType>(config?: {}, additionalMetadata?: {}) => PropertyInstance<readonly T[]>;
|
|
5
|
-
declare const ObjectProperty:
|
|
5
|
+
declare const ObjectProperty: <TModifier extends PropertyModifier<{
|
|
6
6
|
readonly [s: string]: JsonAble;
|
|
7
|
-
}>;
|
|
8
|
-
declare const TextProperty: (config?: PropertyConfig
|
|
9
|
-
declare const IntegerProperty: (config?: PropertyConfig
|
|
10
|
-
declare const NumberProperty: (config?: PropertyConfig
|
|
11
|
-
declare const ConstantValueProperty: (value:
|
|
12
|
-
declare const EmailProperty: (config?: PropertyConfig
|
|
13
|
-
declare const BooleanProperty: (config?: PropertyConfig
|
|
14
|
-
declare const UniqueId: (config?: PropertyConfig
|
|
15
|
-
declare const ReferenceProperty: <T extends FunctionalModel
|
|
7
|
+
}>>(config?: {}, additionalMetadata?: {}) => PropertyInstance<TModifier>;
|
|
8
|
+
declare const TextProperty: <TModifier extends PropertyModifier<string>>(config?: PropertyConfig<TModifier>, additionalMetadata?: {}) => PropertyInstance<TModifier>;
|
|
9
|
+
declare const IntegerProperty: <TModifier extends PropertyModifier<number>>(config?: PropertyConfig<TModifier>, additionalMetadata?: {}) => PropertyInstance<TModifier>;
|
|
10
|
+
declare const NumberProperty: <TModifier extends PropertyModifier<number>>(config?: PropertyConfig<TModifier>, additionalMetadata?: {}) => PropertyInstance<TModifier>;
|
|
11
|
+
declare const ConstantValueProperty: <TModifier extends PropertyModifier<Arrayable<FunctionalType>>>(value: TModifier, config?: PropertyConfig<TModifier>, additionalMetadata?: {}) => PropertyInstance<TModifier>;
|
|
12
|
+
declare const EmailProperty: <TModifier extends PropertyModifier<string>>(config?: PropertyConfig<TModifier>, additionalMetadata?: {}) => PropertyInstance<TModifier>;
|
|
13
|
+
declare const BooleanProperty: <TModifier extends PropertyModifier<boolean>>(config?: PropertyConfig<TModifier>, additionalMetadata?: {}) => PropertyInstance<TModifier>;
|
|
14
|
+
declare const UniqueId: <TModifier extends PropertyModifier<string>>(config?: PropertyConfig<TModifier>, additionalMetadata?: {}) => PropertyInstance<TModifier>;
|
|
15
|
+
declare const ReferenceProperty: <T extends FunctionalModel, TModifier extends PropertyModifier<ReferenceValueType<T>>>(model: MaybeFunction<Model<T>>, config?: PropertyConfig<TModifier>, additionalMetadata?: {}) => ReferencePropertyInstance<T, TModifier>;
|
|
16
16
|
export { Property, UniqueId, DateProperty, ArrayProperty, ReferenceProperty, IntegerProperty, TextProperty, ConstantValueProperty, NumberProperty, ObjectProperty, EmailProperty, BooleanProperty, };
|
package/properties.js
CHANGED
|
@@ -13,22 +13,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.BooleanProperty = exports.EmailProperty = exports.ObjectProperty = exports.NumberProperty = exports.ConstantValueProperty = exports.TextProperty = exports.IntegerProperty = exports.ReferenceProperty = exports.ArrayProperty = exports.DateProperty = exports.UniqueId = exports.Property = void 0;
|
|
16
|
-
const identity_1 = __importDefault(require("lodash/identity"));
|
|
17
16
|
const merge_1 = __importDefault(require("lodash/merge"));
|
|
18
17
|
const validation_1 = require("./validation");
|
|
19
18
|
const constants_1 = require("./constants");
|
|
20
19
|
const lazy_1 = require("./lazy");
|
|
21
20
|
const utils_1 = require("./utils");
|
|
22
21
|
const EMAIL_REGEX = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/u;
|
|
23
|
-
|
|
22
|
+
const _getValidatorFromConfigElseEmpty = (input,
|
|
24
23
|
// eslint-disable-next-line no-unused-vars
|
|
25
|
-
validatorGetter) {
|
|
24
|
+
validatorGetter) => {
|
|
26
25
|
if (input !== undefined) {
|
|
27
26
|
const validator = validatorGetter(input);
|
|
28
27
|
return validator;
|
|
29
28
|
}
|
|
30
29
|
return validation_1.emptyValidator;
|
|
31
|
-
}
|
|
30
|
+
};
|
|
32
31
|
const _mergeValidators = (config, validators) => {
|
|
33
32
|
return [...validators, ...((config === null || config === void 0 ? void 0 : config.validators) ? config.validators : [])];
|
|
34
33
|
};
|
|
@@ -43,7 +42,7 @@ const Property = (type, config = {}, additionalMetadata = {}) => {
|
|
|
43
42
|
const getDefaultValue = () => ((config === null || config === void 0 ? void 0 : config.defaultValue) !== undefined ? config.defaultValue : undefined);
|
|
44
43
|
const getChoices = () => (config === null || config === void 0 ? void 0 : config.choices) || [];
|
|
45
44
|
const lazyLoadMethod = (config === null || config === void 0 ? void 0 : config.lazyLoadMethod) || false;
|
|
46
|
-
const valueSelector = (config === null || config === void 0 ? void 0 : config.valueSelector) ||
|
|
45
|
+
const valueSelector = (config === null || config === void 0 ? void 0 : config.valueSelector) || (x => x);
|
|
47
46
|
if (typeof valueSelector !== 'function') {
|
|
48
47
|
throw new Error(`valueSelector must be a function`);
|
|
49
48
|
}
|
|
@@ -65,13 +64,15 @@ const Property = (type, config = {}, additionalMetadata = {}) => {
|
|
|
65
64
|
: typeof instanceValue === 'function'
|
|
66
65
|
? instanceValue
|
|
67
66
|
: () => instanceValue;
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
const r = () => {
|
|
68
|
+
const result = method(instanceValue);
|
|
69
|
+
return valueSelector(result);
|
|
70
70
|
};
|
|
71
|
-
|
|
71
|
+
return r;
|
|
72
|
+
}, getValidator: (valueGetter) => {
|
|
72
73
|
const validator = (0, validation_1.createPropertyValidator)(valueGetter, config);
|
|
73
|
-
const _propertyValidatorWrapper = (instance, instanceData) => __awaiter(void 0, void 0, void 0, function* () {
|
|
74
|
-
return validator(instance, instanceData);
|
|
74
|
+
const _propertyValidatorWrapper = (instance, instanceData, propertyConfiguration) => __awaiter(void 0, void 0, void 0, function* () {
|
|
75
|
+
return validator(instance, instanceData, propertyConfiguration);
|
|
75
76
|
});
|
|
76
77
|
return _propertyValidatorWrapper;
|
|
77
78
|
} });
|
|
@@ -83,6 +84,9 @@ const DateProperty = (config = {}, additionalMetadata = {}) => Property(constant
|
|
|
83
84
|
if (!value && (config === null || config === void 0 ? void 0 : config.autoNow)) {
|
|
84
85
|
return new Date();
|
|
85
86
|
}
|
|
87
|
+
if (typeof value === 'string') {
|
|
88
|
+
return new Date(value);
|
|
89
|
+
}
|
|
86
90
|
return value;
|
|
87
91
|
},
|
|
88
92
|
}, config), additionalMetadata);
|
|
@@ -117,8 +121,7 @@ const NumberProperty = (config = {}, additionalMetadata = {}) => Property(consta
|
|
|
117
121
|
]),
|
|
118
122
|
}), additionalMetadata);
|
|
119
123
|
exports.NumberProperty = NumberProperty;
|
|
120
|
-
const ConstantValueProperty = (value, config = {}, additionalMetadata = {}) =>
|
|
121
|
-
type: constants_1.PROPERTY_TYPES.ConstantValueProperty,
|
|
124
|
+
const ConstantValueProperty = (value, config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.ConstantValueProperty, (0, merge_1.default)(config, {
|
|
122
125
|
value,
|
|
123
126
|
}), additionalMetadata);
|
|
124
127
|
exports.ConstantValueProperty = ConstantValueProperty;
|
|
@@ -172,8 +175,9 @@ const ReferenceProperty = (model, config = {}, additionalMetadata = {}) => {
|
|
|
172
175
|
const lazyLoadMethod = (instanceValues) => __awaiter(void 0, void 0, void 0, function* () {
|
|
173
176
|
const valueIsModelInstance = instanceValues && instanceValues.getPrimaryKeyName;
|
|
174
177
|
const _getInstanceReturn = (objToUse) => {
|
|
175
|
-
// We need to determine if the object we just
|
|
178
|
+
// We need to determine if the object we just got is an actual model instance to determine if we need to make one.
|
|
176
179
|
const objIsModelInstance = instanceValues && instanceValues.getPrimaryKeyName;
|
|
180
|
+
// @ts-ignore
|
|
177
181
|
const instance = objIsModelInstance
|
|
178
182
|
? objToUse
|
|
179
183
|
: _getModel().create(objToUse);
|
|
@@ -182,6 +186,7 @@ const ReferenceProperty = (model, config = {}, additionalMetadata = {}) => {
|
|
|
182
186
|
toObj: _getId(instanceValues),
|
|
183
187
|
});
|
|
184
188
|
};
|
|
189
|
+
// @ts-ignore
|
|
185
190
|
if (valueIsModelInstance) {
|
|
186
191
|
return _getInstanceReturn(instanceValues);
|
|
187
192
|
}
|
package/properties.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../src/properties.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../src/properties.ts"],"names":[],"mappings":"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"}
|
package/validation.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FunctionalModel, ModelInstance, Model, ModelComponentValidator, PropertyValidatorComponent,
|
|
1
|
+
import { FunctionalModel, ModelInstance, Model, ModelComponentValidator, PropertyValidatorComponent, PropertyValidatorComponentSync, PropertyValidatorComponentTypeAdvanced, JsonAble, PropertyValidator, PropertyConfig, MaybeFunction, PropertyValidators, ValueGetter, Arrayable, FunctionalType, ModelErrors, ValidatorConfiguration, ValuePropertyValidatorComponent, ValidationErrors } from './interfaces';
|
|
2
2
|
declare const TYPE_PRIMITIVES: {
|
|
3
3
|
boolean: string;
|
|
4
4
|
string: string;
|
|
@@ -6,24 +6,24 @@ declare const TYPE_PRIMITIVES: {
|
|
|
6
6
|
number: string;
|
|
7
7
|
integer: string;
|
|
8
8
|
};
|
|
9
|
-
declare const isType: (type: string) =>
|
|
10
|
-
declare const isNumber:
|
|
11
|
-
declare const isInteger:
|
|
12
|
-
declare const isBoolean:
|
|
13
|
-
declare const isString:
|
|
14
|
-
declare const isArray:
|
|
15
|
-
declare const arrayType: (type: string) =>
|
|
16
|
-
declare const meetsRegex: (regex: string | RegExp, flags?: string | undefined, errorMessage?: string) =>
|
|
17
|
-
declare const choices: (choiceArray: readonly
|
|
18
|
-
declare const isDate:
|
|
19
|
-
declare const isRequired:
|
|
20
|
-
declare const maxNumber: (max: Number) =>
|
|
21
|
-
declare const minNumber: (min: Number) =>
|
|
22
|
-
declare const maxTextLength: (max: Number) =>
|
|
23
|
-
declare const minTextLength: (min: Number) =>
|
|
9
|
+
declare const isType: <T extends Arrayable<FunctionalType>>(type: string) => ValuePropertyValidatorComponent<T>;
|
|
10
|
+
declare const isNumber: ValuePropertyValidatorComponent<number>;
|
|
11
|
+
declare const isInteger: ValuePropertyValidatorComponent<number>;
|
|
12
|
+
declare const isBoolean: ValuePropertyValidatorComponent<boolean>;
|
|
13
|
+
declare const isString: ValuePropertyValidatorComponent<string>;
|
|
14
|
+
declare const isArray: ValuePropertyValidatorComponent<readonly FunctionalType[]>;
|
|
15
|
+
declare const arrayType: <T extends FunctionalType>(type: string) => ValuePropertyValidatorComponent<readonly T[]>;
|
|
16
|
+
declare const meetsRegex: <T extends FunctionalType>(regex: string | RegExp, flags?: string | undefined, errorMessage?: string) => ValuePropertyValidatorComponent<T>;
|
|
17
|
+
declare const choices: <T extends FunctionalType>(choiceArray: readonly T[]) => ValuePropertyValidatorComponent<T>;
|
|
18
|
+
declare const isDate: ValuePropertyValidatorComponent<Date>;
|
|
19
|
+
declare const isRequired: ValuePropertyValidatorComponent<any>;
|
|
20
|
+
declare const maxNumber: (max: Number) => ValuePropertyValidatorComponent<number>;
|
|
21
|
+
declare const minNumber: (min: Number) => ValuePropertyValidatorComponent<number>;
|
|
22
|
+
declare const maxTextLength: (max: Number) => ValuePropertyValidatorComponent<string>;
|
|
23
|
+
declare const minTextLength: (min: Number) => ValuePropertyValidatorComponent<string>;
|
|
24
24
|
declare const referenceTypeMatch: <TModel extends FunctionalModel>(referencedModel: MaybeFunction<Model<TModel>>) => PropertyValidatorComponentTypeAdvanced<ModelInstance<TModel>, TModel>;
|
|
25
|
-
declare const aggregateValidator: (value: any, methodOrMethods: PropertyValidatorComponent | readonly PropertyValidatorComponent[]) => PropertyValidator
|
|
26
|
-
declare const emptyValidator: PropertyValidatorComponentSync
|
|
27
|
-
declare const createPropertyValidator: (valueGetter: ValueGetter
|
|
28
|
-
declare const createModelValidator: (validators: PropertyValidators
|
|
25
|
+
declare const aggregateValidator: <T extends FunctionalModel>(value: any, methodOrMethods: PropertyValidatorComponent<T> | readonly PropertyValidatorComponent<T>[]) => PropertyValidator<T>;
|
|
26
|
+
declare const emptyValidator: PropertyValidatorComponentSync<any>;
|
|
27
|
+
declare const createPropertyValidator: <T extends Arrayable<FunctionalType>>(valueGetter: ValueGetter<T>, config: PropertyConfig<T>) => <TModel extends FunctionalModel>(instance: ModelInstance<TModel>, instanceData: JsonAble | TModel, propertyConfiguration: ValidatorConfiguration) => Promise<ValidationErrors>;
|
|
28
|
+
declare const createModelValidator: <T extends FunctionalModel>(validators: PropertyValidators<T>, modelValidators?: readonly ModelComponentValidator<T>[] | undefined) => (instance: ModelInstance<T>, propertyConfiguration: ValidatorConfiguration) => Promise<ModelErrors>;
|
|
29
29
|
export { isNumber, isBoolean, isString, isInteger, isType, isDate, isArray, isRequired, maxNumber, minNumber, choices, maxTextLength, minTextLength, meetsRegex, aggregateValidator, emptyValidator, createPropertyValidator, createModelValidator, arrayType, referenceTypeMatch, TYPE_PRIMITIVES, };
|
package/validation.js
CHANGED
|
@@ -197,9 +197,9 @@ const aggregateValidator = (value, methodOrMethods) => {
|
|
|
197
197
|
const toDo = Array.isArray(methodOrMethods)
|
|
198
198
|
? methodOrMethods
|
|
199
199
|
: [methodOrMethods];
|
|
200
|
-
const _aggregativeValidator = (instance, instanceData) => __awaiter(void 0, void 0, void 0, function* () {
|
|
200
|
+
const _aggregativeValidator = (instance, instanceData, propertyConfiguration) => __awaiter(void 0, void 0, void 0, function* () {
|
|
201
201
|
const values = yield Promise.all(toDo.map(method => {
|
|
202
|
-
return method(value, instance, instanceData);
|
|
202
|
+
return method(value, instance, instanceData, propertyConfiguration);
|
|
203
203
|
}));
|
|
204
204
|
return filterEmpty(values);
|
|
205
205
|
});
|
|
@@ -210,15 +210,15 @@ const emptyValidator = () => undefined;
|
|
|
210
210
|
exports.emptyValidator = emptyValidator;
|
|
211
211
|
const _boolChoice = (method) => (configValue) => {
|
|
212
212
|
const func = method(configValue);
|
|
213
|
-
const validatorWrapper = (value, modelInstance, modelData) => {
|
|
214
|
-
return func(value, modelInstance, modelData);
|
|
213
|
+
const validatorWrapper = (value, modelInstance, modelData, configurations) => {
|
|
214
|
+
return func(value, modelInstance, modelData, configurations);
|
|
215
215
|
};
|
|
216
216
|
return validatorWrapper;
|
|
217
217
|
};
|
|
218
218
|
const simpleFuncWrap = (validator) => () => {
|
|
219
219
|
return validator;
|
|
220
220
|
};
|
|
221
|
-
const CONFIG_TO_VALIDATE_METHOD = {
|
|
221
|
+
const CONFIG_TO_VALIDATE_METHOD = () => ({
|
|
222
222
|
required: _boolChoice(simpleFuncWrap(isRequired)),
|
|
223
223
|
isInteger: _boolChoice(simpleFuncWrap(isInteger)),
|
|
224
224
|
isNumber: _boolChoice(simpleFuncWrap(isNumber)),
|
|
@@ -226,38 +226,41 @@ const CONFIG_TO_VALIDATE_METHOD = {
|
|
|
226
226
|
isArray: _boolChoice(simpleFuncWrap(isArray)),
|
|
227
227
|
isBoolean: _boolChoice(simpleFuncWrap(isBoolean)),
|
|
228
228
|
choices: _boolChoice(choices),
|
|
229
|
-
};
|
|
229
|
+
});
|
|
230
230
|
const createPropertyValidator = (valueGetter, config) => {
|
|
231
|
-
const _propertyValidator = (instance, instanceData) => __awaiter(void 0, void 0, void 0, function* () {
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
231
|
+
const _propertyValidator = (instance, instanceData, propertyConfiguration) => __awaiter(void 0, void 0, void 0, function* () {
|
|
232
|
+
return Promise.resolve().then(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
233
|
+
const configToValidateMethod = CONFIG_TO_VALIDATE_METHOD();
|
|
234
|
+
if (!config) {
|
|
235
|
+
config = {};
|
|
236
|
+
}
|
|
237
|
+
const validators = [
|
|
238
|
+
...Object.entries(config).map(([key, value]) => {
|
|
239
|
+
const method = configToValidateMethod[key];
|
|
240
|
+
if (method) {
|
|
241
|
+
return method(value);
|
|
242
|
+
}
|
|
243
|
+
return emptyValidator;
|
|
244
|
+
}),
|
|
245
|
+
...(config.validators ? config.validators : []),
|
|
246
|
+
].filter(x => x);
|
|
247
|
+
const value = yield valueGetter();
|
|
248
|
+
const isRequiredValue = config.required
|
|
249
|
+
? true
|
|
250
|
+
: validators.includes(isRequired);
|
|
251
|
+
if (!value && !isRequiredValue) {
|
|
252
|
+
return [];
|
|
253
|
+
}
|
|
254
|
+
const validator = aggregateValidator(value, validators);
|
|
255
|
+
const errors = yield validator(instance, instanceData, propertyConfiguration);
|
|
256
|
+
return [...new Set((0, flatMap_1.default)(errors))];
|
|
257
|
+
}));
|
|
255
258
|
});
|
|
256
259
|
return _propertyValidator;
|
|
257
260
|
};
|
|
258
261
|
exports.createPropertyValidator = createPropertyValidator;
|
|
259
262
|
const createModelValidator = (validators, modelValidators) => {
|
|
260
|
-
const _modelValidator = (instance,
|
|
263
|
+
const _modelValidator = (instance, propertyConfiguration) => __awaiter(void 0, void 0, void 0, function* () {
|
|
261
264
|
return Promise.resolve().then(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
262
265
|
if (!instance) {
|
|
263
266
|
throw new Error(`Instance cannot be empty`);
|
|
@@ -265,10 +268,13 @@ const createModelValidator = (validators, modelValidators) => {
|
|
|
265
268
|
const keysAndFunctions = Object.entries(validators);
|
|
266
269
|
const instanceData = yield instance.toObj();
|
|
267
270
|
const propertyValidationErrors = yield Promise.all(keysAndFunctions.map(([key, validator]) => __awaiter(void 0, void 0, void 0, function* () {
|
|
268
|
-
return [
|
|
271
|
+
return [
|
|
272
|
+
key,
|
|
273
|
+
yield validator(instance, instanceData, propertyConfiguration),
|
|
274
|
+
];
|
|
269
275
|
})));
|
|
270
276
|
const modelValidationErrors = (yield Promise.all(modelValidators
|
|
271
|
-
? modelValidators.map(validator => validator(instance, instanceData,
|
|
277
|
+
? modelValidators.map(validator => validator(instance, instanceData, propertyConfiguration))
|
|
272
278
|
: [])).filter(x => x);
|
|
273
279
|
const propertyErrors = propertyValidationErrors
|
|
274
280
|
.filter(([, errors]) => Boolean(errors) && errors.length > 0)
|
package/validation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAAoC;AACpC,yDAAgC;AAChC,6DAAoC;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAAoC;AACpC,yDAAgC;AAChC,6DAAoC;AAuBpC,MAAM,eAAe,GAAG;IACtB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;CACnB,CAAA;AAuYC,0CAAe;AArYjB,MAAM,WAAW,GAAG,CAClB,KAAwC,EAC1B,EAAE;IAChB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAiB,CAAA;AAC7C,CAAC,CAAA;AAED,MAAM,YAAY,GAChB,CACE,MAAyB,EACzB,KAAa,EACuB,EAAE,CACxC,CAAC,KAAQ,EAAE,EAAE;IACX,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;QAC3B,OAAO,KAAK,CAAA;KACb;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAEH,MAAM,YAAY,GAChB,CACE,IAAY,EACZ,YAAoB,EACgB,EAAE,CACxC,CAAC,KAAQ,EAAE,EAAE;IACX,IAAI,OAAO,KAAK,KAAK,IAAI,EAAE;QACzB,OAAO,YAAY,CAAA;KACpB;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAEH,MAAM,MAAM,GACV,CACE,IAAY,EACwB,EAAE,CACxC,CAAC,KAAQ,EAAE,EAAE;IACX,aAAa;IACb,OAAO,YAAY,CAAC,IAAI,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;AACvD,CAAC,CAAA;AAgVD,wBAAM;AA/UR,MAAM,QAAQ,GAAG,MAAM,CAAS,QAAQ,CAAC,CAAA;AA2UvC,4BAAQ;AA1UV,MAAM,SAAS,GAAG,YAAY,CAAS,MAAM,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAA;AA6U5E,8BAAS;AA3UX,MAAM,SAAS,GAAG,MAAM,CAAU,SAAS,CAAC,CAAA;AAyU1C,8BAAS;AAxUX,MAAM,QAAQ,GAAG,MAAM,CAAS,QAAQ,CAAC,CAAA;AAyUvC,4BAAQ;AAxUV,MAAM,OAAO,GAAG,YAAY,CAC1B,CAAC,CAAM,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAC5B,uBAAuB,CACxB,CAAA;AAyUC,0BAAO;AAvUT,MAAM,mCAAmC,GAAG;IAC1C,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,SAAS;IACpC,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,QAAQ;IAClC,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,SAAS;IACpC,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,QAAQ;CACnC,CAAA;AAED,MAAM,SAAS,GACb,CACE,IAAY,EACmC,EAAE,CACnD,CAAC,KAAmB,EAAE,EAAE;IACtB,aAAa;IACb,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IACjC,IAAI,UAAU,EAAE;QACd,OAAO,UAAU,CAAA;KAClB;IACD,MAAM,SAAS,GAAG,mCAAmC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAA;IAC3E,OAAQ,KAAqB,CAAC,MAAM,CAClC,CAAC,GAAuB,EAAE,CAAiB,EAAE,EAAE;QAC7C,IAAI,GAAG,EAAE;YACP,OAAO,GAAG,CAAA;SACX;QACD,aAAa;QACb,OAAO,SAAS,CAAC,CAAC,CAAC,CAAA;IACrB,CAAC,EACD,SAAS,CACV,CAAA;AACH,CAAC,CAAA;AAuTD,8BAAS;AArTX,MAAM,UAAU,GACd,CACE,KAAsB,EACtB,KAAc,EACd,eAAuB,oBAAoB,EACP,EAAE,CACxC,CAAC,KAAQ,EAAE,EAAE;IACX,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACpC,aAAa;IACb,OAAO,YAAY,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,CAAA;AACtE,CAAC,CAAA;AAsSD,gCAAU;AApSZ,MAAM,OAAO,GACX,CACE,WAAyB,EACW,EAAE,CACxC,CAAC,KAAuB,EAAE,EAAE;IAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QACrD,IAAI,GAAG,EAAE;YACP,OAAO,GAAG,GAAG,wBAAwB,CAAA;SACtC;KACF;SAAM;QACL,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAU,CAAC,EAAE;YACrC,OAAO,GAAG,KAAK,wBAAwB,CAAA;SACxC;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAiRD,0BAAO;AA/QT,MAAM,MAAM,GAA0C,CAAC,KAAW,EAAE,EAAE;IACpE,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,qBAAqB,CAAA;KAC7B;IACD,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;QACtB,OAAO,qBAAqB,CAAA;KAC7B;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAkQC,wBAAM;AAhQR,MAAM,UAAU,GAAyC,CAAC,KAAW,EAAE,EAAE;IACvE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE;QACrC,OAAO,SAAS,CAAA;KACjB;IACD,aAAa;IACb,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;QACjC,OAAO,SAAS,CAAA;KACjB;IACD,MAAM,KAAK,GAAG,IAAA,iBAAO,EAAC,KAAK,CAAC,CAAA;IAC5B,IAAI,KAAK,EAAE;QACT,aAAa;QACb,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;YACjB,OAAO,qBAAqB,CAAA;SAC7B;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAkPC,gCAAU;AAhPZ,MAAM,SAAS,GACb,CAAC,GAAW,EAA2C,EAAE,CACzD,CAAC,KAAa,EAAE,EAAE;IAChB,aAAa;IACb,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnC,IAAI,WAAW,EAAE;QACf,OAAO,WAAW,CAAA;KACnB;IACD,IAAI,KAAK,IAAI,KAAK,GAAG,GAAG,EAAE;QACxB,OAAO,kBAAkB,GAAG,EAAE,CAAA;KAC/B;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAqOD,8BAAS;AAnOX,MAAM,SAAS,GACb,CAAC,GAAW,EAA2C,EAAE,CACzD,CAAC,KAAa,EAAE,EAAE;IAChB,aAAa;IACb,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnC,IAAI,WAAW,EAAE;QACf,OAAO,WAAW,CAAA;KACnB;IACD,IAAI,KAAK,IAAI,KAAK,GAAG,GAAG,EAAE;QACxB,OAAO,kBAAkB,GAAG,EAAE,CAAA;KAC/B;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAwND,8BAAS;AAtNX,MAAM,aAAa,GACjB,CAAC,GAAW,EAA2C,EAAE,CACzD,CAAC,KAAa,EAAE,EAAE;IAChB,aAAa;IACb,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnC,IAAI,WAAW,EAAE;QACf,OAAO,WAAW,CAAA;KACnB;IACD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE;QAC/B,OAAO,yBAAyB,GAAG,EAAE,CAAA;KACtC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AA4MD,sCAAa;AA1Mf,MAAM,aAAa,GACjB,CAAC,GAAW,EAA2C,EAAE,CACzD,CAAC,KAAa,EAAE,EAAE;IAChB,aAAa;IACb,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnC,IAAI,WAAW,EAAE;QACf,OAAO,WAAW,CAAA;KACnB;IACD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE;QAC/B,OAAO,yBAAyB,GAAG,EAAE,CAAA;KACtC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AA+LD,sCAAa;AA7Lf,MAAM,kBAAkB,GAAG,CACzB,eAA6C,EAC0B,EAAE;IACzE,OAAO,CAAC,KAA6B,EAAE,EAAE;QACvC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,sBAAsB,CAAA;SAC9B;QACD,qEAAqE;QACrE,0BAA0B;QAC1B,MAAM,KAAK,GACT,OAAO,eAAe,KAAK,UAAU;YACnC,CAAC,CAAC,eAAe,EAAE;YACnB,CAAC,CAAC,eAAe,CAAA;QACrB,wEAAwE;QACxE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;QAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAA;QACzC,IAAI,MAAM,KAAK,MAAM,EAAE;YACrB,OAAO,mBAAmB,MAAM,sBAAsB,MAAM,EAAE,CAAA;SAC/D;QACD,OAAO,SAAS,CAAA;IAClB,CAAC,CAAA;AACH,CAAC,CAAA;AA+KC,gDAAkB;AA7KpB,MAAM,kBAAkB,GAAG,CACzB,KAAU,EACV,eAE4C,EAC5C,EAAE;IACF,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;QACzC,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;IAErB,MAAM,qBAAqB,GAAyB,CAClD,QAA0B,EAC1B,YAA0B,EAC1B,qBAAqB,EACrB,EAAE;QACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAChB,OAAO,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAA;QACrE,CAAC,CAAC,CACH,CAAA;QACD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC,CAAA,CAAA;IACD,OAAO,qBAAqB,CAAA;AAC9B,CAAC,CAAA;AAiJC,gDAAkB;AA/IpB,MAAM,cAAc,GAAwC,GAAG,EAAE,CAAC,SAAS,CAAA;AAgJzE,wCAAc;AA9IhB,MAAM,WAAW,GACf,CACE,MAA+D,EAC/D,EAAE,CACJ,CAAC,WAAgB,EAAE,EAAE;IACnB,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;IAChC,MAAM,gBAAgB,GAAsC,CAC1D,KAAU,EACV,aAA+B,EAC/B,SAAuB,EACvB,cAAsC,EACtC,EAAE;QACF,OAAO,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,CAAC,CAAA;IAC9D,CAAC,CAAA;IACD,OAAO,gBAAgB,CAAA;AACzB,CAAC,CAAA;AAMH,MAAM,cAAc,GAClB,CAA4B,SAA4C,EAAE,EAAE,CAC5E,GAAG,EAAE;IACH,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAEH,MAAM,yBAAyB,GAAG,GAET,EAAE,CAAC,CAAC;IAC3B,QAAQ,EAAE,WAAW,CAAI,cAAc,CAAC,UAAU,CAAC,CAAC;IACpD,SAAS,EAAE,WAAW,CAAI,cAAc,CAAC,SAAS,CAAC,CAAC;IACpD,QAAQ,EAAE,WAAW,CAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;IAClD,QAAQ,EAAE,WAAW,CAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;IAClD,OAAO,EAAE,WAAW,CAAI,cAAc,CAAC,OAAO,CAAC,CAAC;IAChD,SAAS,EAAE,WAAW,CAAI,cAAc,CAAC,SAAS,CAAC,CAAC;IACpD,OAAO,EAAE,WAAW,CAAI,OAAO,CAAC;CACjC,CAAC,CAAA;AAEF,MAAM,uBAAuB,GAAG,CAC9B,WAA2B,EAC3B,MAAyB,EACzB,EAAE;IACF,MAAM,kBAAkB,GAAG,CACzB,QAA+B,EAC/B,YAA+B,EAC/B,qBAA6C,EAClB,EAAE;QAC7B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAS,EAAE;YACvC,MAAM,sBAAsB,GAAG,yBAAyB,EAAU,CAAA;YAClE,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,GAAG,EAAE,CAAA;aACZ;YACD,MAAM,UAAU,GAAkD;gBAChE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;oBAC7C,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;oBAC1C,IAAI,MAAM,EAAE;wBACV,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;qBACrB;oBACD,OAAO,cAAc,CAAA;gBACvB,CAAC,CAAC;gBACF,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;aAChD,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAChB,MAAM,KAAK,GAAG,MAAM,WAAW,EAAE,CAAA;YACjC,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ;gBACrC,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;YACnC,IAAI,CAAC,KAAK,IAAI,CAAC,eAAe,EAAE;gBAC9B,OAAO,EAAE,CAAA;aACV;YACD,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;YACvD,MAAM,MAAM,GAAG,MAAM,SAAS,CAC5B,QAAQ,EACR,YAAY,EACZ,qBAAqB,CACtB,CAAA;YACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,IAAA,iBAAO,EAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACtC,CAAC,CAAA,CAAC,CAAA;IACJ,CAAC,CAAA,CAAA;IACD,OAAO,kBAAkB,CAAA;AAC3B,CAAC,CAAA;AA+DC,0DAAuB;AA7DzB,MAAM,oBAAoB,GAAG,CAC3B,UAAiC,EACjC,eAAuD,EACvD,EAAE;IACF,MAAM,eAAe,GAAG,CACtB,QAA0B,EAC1B,qBAA6C,EACvB,EAAE;QACxB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAS,EAAE;YACvC,IAAI,CAAC,QAAQ,EAAE;gBACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;aAC5C;YACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YACnD,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAA;YAC3C,MAAM,wBAAwB,GAAG,MAAM,OAAO,CAAC,GAAG,CAChD,gBAAgB,CAAC,GAAG,CAAC,CAAO,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE;gBAC9C,OAAO;oBACL,GAAG;oBACH,MAAM,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,qBAAqB,CAAC;iBAC/D,CAAA;YACH,CAAC,CAAA,CAAC,CACH,CAAA;YACD,MAAM,qBAAqB,GAAG,CAC5B,MAAM,OAAO,CAAC,GAAG,CACf,eAAe;gBACb,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAC9B,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,qBAAqB,CAAC,CACzD;gBACH,CAAC,CAAC,EAAE,CACP,CACF,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAChB,MAAM,cAAc,GAAG,wBAAwB;iBAC5C,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;iBAC5D,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE;gBAC7B,OAAO,IAAA,eAAK,EAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;YAC9C,CAAC,EAAE,EAAE,CAAC,CAAA;YACR,OAAO,qBAAqB,CAAC,MAAM,GAAG,CAAC;gBACrC,CAAC,CAAC,IAAA,eAAK,EAAC,cAAc,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;gBAC3D,CAAC,CAAC,cAAc,CAAA;QACpB,CAAC,CAAA,CAAC,CAAA;IACJ,CAAC,CAAA,CAAA;IACD,OAAO,eAAe,CAAA;AACxB,CAAC,CAAA;AAoBC,oDAAoB"}
|