functional-models 1.1.20 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/.eslintignore +4 -0
  2. package/.eslintrc +186 -0
  3. package/.github/workflows/feature.yml +26 -0
  4. package/.github/workflows/ut.yml +32 -0
  5. package/.prettierignore +7 -0
  6. package/.prettierrc.json +14 -0
  7. package/LICENSE +674 -0
  8. package/features/arrayFields.feature +52 -0
  9. package/features/functions.feature +11 -0
  10. package/features/model.feature +7 -0
  11. package/features/stepDefinitions/steps.js +193 -0
  12. package/features/validation.feature +12 -0
  13. package/index.js +1 -41
  14. package/package.json +10 -35
  15. package/src/constants.js +19 -0
  16. package/src/errors.js +16 -0
  17. package/src/functions.js +7 -0
  18. package/src/index.js +10 -0
  19. package/src/lazy.js +26 -0
  20. package/src/models.js +152 -0
  21. package/src/properties.js +313 -0
  22. package/src/serialization.js +50 -0
  23. package/src/utils.js +52 -0
  24. package/src/validation.js +285 -0
  25. package/test/base/index.test.js +5 -0
  26. package/test/src/functions.test.js +45 -0
  27. package/test/src/index.test.js +5 -0
  28. package/test/src/lazy.test.js +15 -0
  29. package/test/src/models.test.js +380 -0
  30. package/test/src/properties.test.js +554 -0
  31. package/test/src/serialization.test.js +127 -0
  32. package/test/src/utils.test.js +54 -0
  33. package/test/src/validation.test.js +614 -0
  34. package/constants.d.ts +0 -14
  35. package/constants.js +0 -19
  36. package/constants.js.map +0 -1
  37. package/errors.d.ts +0 -9
  38. package/errors.js +0 -15
  39. package/errors.js.map +0 -1
  40. package/index.d.ts +0 -10
  41. package/index.js.map +0 -1
  42. package/interfaces.d.ts +0 -160
  43. package/interfaces.js +0 -4
  44. package/interfaces.js.map +0 -1
  45. package/lazy.d.ts +0 -2
  46. package/lazy.js +0 -37
  47. package/lazy.js.map +0 -1
  48. package/methods.d.ts +0 -4
  49. package/methods.js +0 -18
  50. package/methods.js.map +0 -1
  51. package/models.d.ts +0 -3
  52. package/models.js +0 -129
  53. package/models.js.map +0 -1
  54. package/properties.d.ts +0 -16
  55. package/properties.js +0 -214
  56. package/properties.js.map +0 -1
  57. package/serialization.d.ts +0 -3
  58. package/serialization.js +0 -49
  59. package/serialization.js.map +0 -1
  60. package/utils.d.ts +0 -4
  61. package/utils.js +0 -44
  62. package/utils.js.map +0 -1
  63. package/validation.d.ts +0 -29
  64. package/validation.js +0 -292
  65. package/validation.js.map +0 -1
package/properties.js DELETED
@@ -1,214 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
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 merge_1 = __importDefault(require("lodash/merge"));
17
- const validation_1 = require("./validation");
18
- const constants_1 = require("./constants");
19
- const lazy_1 = require("./lazy");
20
- const utils_1 = require("./utils");
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;
22
- const _getValidatorFromConfigElseEmpty = (input,
23
- // eslint-disable-next-line no-unused-vars
24
- validatorGetter) => {
25
- if (input !== undefined) {
26
- const validator = validatorGetter(input);
27
- return validator;
28
- }
29
- return validation_1.emptyValidator;
30
- };
31
- const _mergeValidators = (config, validators) => {
32
- return [...validators, ...((config === null || config === void 0 ? void 0 : config.validators) ? config.validators : [])];
33
- };
34
- const Property = (type, config = {}, additionalMetadata = {}) => {
35
- if (!type && !(config === null || config === void 0 ? void 0 : config.type)) {
36
- throw new Error(`Property type must be provided.`);
37
- }
38
- if (config === null || config === void 0 ? void 0 : config.type) {
39
- type = config.type;
40
- }
41
- const getConstantValue = () => ((config === null || config === void 0 ? void 0 : config.value) !== undefined ? config.value : undefined);
42
- const getDefaultValue = () => ((config === null || config === void 0 ? void 0 : config.defaultValue) !== undefined ? config.defaultValue : undefined);
43
- const getChoices = () => (config === null || config === void 0 ? void 0 : config.choices) || [];
44
- const lazyLoadMethod = (config === null || config === void 0 ? void 0 : config.lazyLoadMethod) || false;
45
- const valueSelector = (config === null || config === void 0 ? void 0 : config.valueSelector) || (x => x);
46
- if (typeof valueSelector !== 'function') {
47
- throw new Error(`valueSelector must be a function`);
48
- }
49
- const r = Object.assign(Object.assign({}, additionalMetadata), { getConfig: () => config || {}, getChoices,
50
- getDefaultValue,
51
- getConstantValue, getPropertyType: () => type, createGetter: (instanceValue) => {
52
- const value = getConstantValue();
53
- if (value !== undefined) {
54
- return () => value;
55
- }
56
- const defaultValue = getDefaultValue();
57
- if (defaultValue !== undefined &&
58
- (instanceValue === null || instanceValue === undefined)) {
59
- return () => defaultValue;
60
- }
61
- const method = lazyLoadMethod
62
- ? // eslint-disable-next-line no-unused-vars
63
- (0, lazy_1.lazyValue)(lazyLoadMethod)
64
- : typeof instanceValue === 'function'
65
- ? instanceValue
66
- : () => instanceValue;
67
- const r = () => {
68
- const result = method(instanceValue);
69
- return valueSelector(result);
70
- };
71
- return r;
72
- }, getValidator: (valueGetter) => {
73
- const validator = (0, validation_1.createPropertyValidator)(valueGetter, config);
74
- const _propertyValidatorWrapper = (instance, instanceData, propertyConfiguration) => __awaiter(void 0, void 0, void 0, function* () {
75
- return validator(instance, instanceData, propertyConfiguration);
76
- });
77
- return _propertyValidatorWrapper;
78
- } });
79
- return r;
80
- };
81
- exports.Property = Property;
82
- const DateProperty = (config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.DateProperty, (0, merge_1.default)({
83
- lazyLoadMethod: (value) => {
84
- if (!value && (config === null || config === void 0 ? void 0 : config.autoNow)) {
85
- return new Date();
86
- }
87
- if (typeof value === 'string') {
88
- return new Date(value);
89
- }
90
- return value;
91
- },
92
- }, config), additionalMetadata);
93
- exports.DateProperty = DateProperty;
94
- const ArrayProperty = (config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.ArrayProperty, Object.assign(Object.assign({ defaultValue: [] }, config), { isArray: true }), additionalMetadata);
95
- exports.ArrayProperty = ArrayProperty;
96
- const ObjectProperty = (config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.ObjectProperty, (0, merge_1.default)(config, {
97
- validators: _mergeValidators(config, [(0, validation_1.isType)('object')]),
98
- }), additionalMetadata);
99
- exports.ObjectProperty = ObjectProperty;
100
- const TextProperty = (config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.TextProperty, (0, merge_1.default)(config, {
101
- isString: true,
102
- validators: _mergeValidators(config, [
103
- _getValidatorFromConfigElseEmpty(config === null || config === void 0 ? void 0 : config.maxLength, (value) => (0, validation_1.maxTextLength)(value)),
104
- _getValidatorFromConfigElseEmpty(config === null || config === void 0 ? void 0 : config.minLength, (value) => (0, validation_1.minTextLength)(value)),
105
- ]),
106
- }), additionalMetadata);
107
- exports.TextProperty = TextProperty;
108
- const IntegerProperty = (config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.IntegerProperty, (0, merge_1.default)(config, {
109
- isInteger: true,
110
- validators: _mergeValidators(config, [
111
- _getValidatorFromConfigElseEmpty(config === null || config === void 0 ? void 0 : config.minValue, value => (0, validation_1.minNumber)(value)),
112
- _getValidatorFromConfigElseEmpty(config === null || config === void 0 ? void 0 : config.maxValue, value => (0, validation_1.maxNumber)(value)),
113
- ]),
114
- }), additionalMetadata);
115
- exports.IntegerProperty = IntegerProperty;
116
- const NumberProperty = (config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.NumberProperty, (0, merge_1.default)(config, {
117
- isNumber: true,
118
- validators: _mergeValidators(config, [
119
- _getValidatorFromConfigElseEmpty(config === null || config === void 0 ? void 0 : config.minValue, value => (0, validation_1.minNumber)(value)),
120
- _getValidatorFromConfigElseEmpty(config === null || config === void 0 ? void 0 : config.maxValue, value => (0, validation_1.maxNumber)(value)),
121
- ]),
122
- }), additionalMetadata);
123
- exports.NumberProperty = NumberProperty;
124
- const ConstantValueProperty = (value, config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.ConstantValueProperty, (0, merge_1.default)(config, {
125
- value,
126
- }), additionalMetadata);
127
- exports.ConstantValueProperty = ConstantValueProperty;
128
- const EmailProperty = (config = {}, additionalMetadata = {}) => TextProperty((0, merge_1.default)(config, {
129
- type: constants_1.PROPERTY_TYPES.EmailProperty,
130
- validators: _mergeValidators(config, [(0, validation_1.meetsRegex)(EMAIL_REGEX)]),
131
- }), additionalMetadata);
132
- exports.EmailProperty = EmailProperty;
133
- const BooleanProperty = (config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.BooleanProperty, (0, merge_1.default)(config, {
134
- isBoolean: true,
135
- }), additionalMetadata);
136
- exports.BooleanProperty = BooleanProperty;
137
- const UniqueId = (config = {}, additionalMetadata = {}) => Property(constants_1.PROPERTY_TYPES.UniqueId, (0, merge_1.default)({
138
- lazyLoadMethod: (value) => {
139
- if (!value) {
140
- return (0, utils_1.createUuid)();
141
- }
142
- return value;
143
- },
144
- }, config), additionalMetadata);
145
- exports.UniqueId = UniqueId;
146
- const ReferenceProperty = (model, config = {}, additionalMetadata = {}) => {
147
- if (!model) {
148
- throw new Error('Must include the referenced model');
149
- }
150
- const _getModel = () => {
151
- if (typeof model === 'function') {
152
- return model();
153
- }
154
- return model;
155
- };
156
- const validators = _mergeValidators(config, [(0, validation_1.referenceTypeMatch)(model)]);
157
- const _getId = (instanceValues) => () => {
158
- if (!instanceValues) {
159
- return null;
160
- }
161
- if (typeof instanceValues === 'number') {
162
- return instanceValues;
163
- }
164
- if (typeof instanceValues === 'string') {
165
- return instanceValues;
166
- }
167
- if (instanceValues.getPrimaryKey) {
168
- return instanceValues.getPrimaryKey();
169
- }
170
- const theModel = _getModel();
171
- const primaryKey = theModel.getPrimaryKeyName();
172
- // @ts-ignore
173
- return instanceValues[primaryKey];
174
- };
175
- const lazyLoadMethod = (instanceValues) => __awaiter(void 0, void 0, void 0, function* () {
176
- const valueIsModelInstance = instanceValues && instanceValues.getPrimaryKeyName;
177
- const _getInstanceReturn = (objToUse) => {
178
- // We need to determine if the object we just got is an actual model instance to determine if we need to make one.
179
- const objIsModelInstance = instanceValues && instanceValues.getPrimaryKeyName;
180
- // @ts-ignore
181
- const instance = objIsModelInstance
182
- ? objToUse
183
- : _getModel().create(objToUse);
184
- // We are replacing the toObj function, because the reference type in the end should be the primary key when serialized.
185
- return (0, merge_1.default)({}, instance, {
186
- toObj: _getId(instanceValues),
187
- });
188
- };
189
- // @ts-ignore
190
- if (valueIsModelInstance) {
191
- return _getInstanceReturn(instanceValues);
192
- }
193
- if (config === null || config === void 0 ? void 0 : config.fetcher) {
194
- const id = yield _getId(instanceValues)();
195
- const model = _getModel();
196
- if (id !== null && id !== undefined) {
197
- const obj = yield config.fetcher(model, id);
198
- return _getInstanceReturn(obj);
199
- }
200
- return null;
201
- }
202
- return _getId(instanceValues)();
203
- });
204
- const p = (0, merge_1.default)(Property(constants_1.PROPERTY_TYPES.ReferenceProperty, (0, merge_1.default)({}, config, {
205
- validators,
206
- lazyLoadMethod,
207
- }), additionalMetadata), {
208
- getReferencedId: (instanceValues) => _getId(instanceValues)(),
209
- getReferencedModel: _getModel,
210
- });
211
- return p;
212
- };
213
- exports.ReferenceProperty = ReferenceProperty;
214
- //# sourceMappingURL=properties.js.map
package/properties.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"properties.js","sourceRoot":"","sources":["../src/properties.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { PropertyGetters, toObj } from './interfaces';
2
- declare const toJsonAble: (keyToFunc: PropertyGetters<any>) => toObj;
3
- export { toJsonAble };
package/serialization.js DELETED
@@ -1,49 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.toJsonAble = void 0;
16
- const merge_1 = __importDefault(require("lodash/merge"));
17
- const _getValue = (value) => __awaiter(void 0, void 0, void 0, function* () {
18
- if (value === undefined) {
19
- return null;
20
- }
21
- if (value === null) {
22
- return null;
23
- }
24
- const type = typeof value;
25
- const asFunction = value;
26
- if (type === 'function') {
27
- return _getValue(yield asFunction());
28
- }
29
- // Nested Object
30
- const asModel = value.toObj;
31
- if (asModel) {
32
- return _getValue(yield asModel());
33
- }
34
- // Dates
35
- const asDate = value;
36
- if (type === 'object' && asDate.toISOString) {
37
- return _getValue(asDate.toISOString());
38
- }
39
- return value;
40
- });
41
- const toJsonAble = (keyToFunc) => () => __awaiter(void 0, void 0, void 0, function* () {
42
- return Object.entries(keyToFunc).reduce((acc, [key, value]) => __awaiter(void 0, void 0, void 0, function* () {
43
- const realAcc = yield acc;
44
- const trueValue = yield _getValue(yield value);
45
- return (0, merge_1.default)(realAcc, { [key]: trueValue });
46
- }), Promise.resolve({}));
47
- });
48
- exports.toJsonAble = toJsonAble;
49
- //# sourceMappingURL=serialization.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serialization.js","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yDAAgC;AAGhC,MAAM,SAAS,GAAG,CAAO,KAAU,EAAqB,EAAE;IACxD,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,OAAO,IAAI,CAAA;KACZ;IACD,IAAI,KAAK,KAAK,IAAI,EAAE;QAClB,OAAO,IAAI,CAAA;KACZ;IACD,MAAM,IAAI,GAAG,OAAO,KAAK,CAAA;IACzB,MAAM,UAAU,GAAG,KAAiB,CAAA;IACpC,IAAI,IAAI,KAAK,UAAU,EAAE;QACvB,OAAO,SAAS,CAAC,MAAM,UAAU,EAAE,CAAC,CAAA;KACrC;IACD,gBAAgB;IAChB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAA;IAC3B,IAAI,OAAO,EAAE;QACX,OAAO,SAAS,CAAC,MAAM,OAAO,EAAE,CAAC,CAAA;KAClC;IACD,QAAQ;IACR,MAAM,MAAM,GAAG,KAAa,CAAA;IAC5B,IAAI,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE;QAC3C,OAAO,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;KACvC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA,CAAA;AAED,MAAM,UAAU,GACd,CAAC,SAA+B,EAAS,EAAE,CAC3C,GAAS,EAAE;IACT,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAO,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAClE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAA;QACzB,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,MAAM,KAAK,CAAC,CAAA;QAC9C,OAAO,IAAA,eAAK,EAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;IAC7C,CAAC,CAAA,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;AACzB,CAAC,CAAA,CAAA;AAEM,gCAAU"}
package/utils.d.ts DELETED
@@ -1,4 +0,0 @@
1
- declare const createUuid: () => string;
2
- declare const toTitleCase: (string: string) => string;
3
- declare const loweredTitleCase: (string: string) => string;
4
- export { loweredTitleCase, toTitleCase, createUuid };
package/utils.js DELETED
@@ -1,44 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createUuid = exports.toTitleCase = exports.loweredTitleCase = void 0;
7
- // @ts-ignore
8
- const get_random_values_1 = __importDefault(require("get-random-values"));
9
- const HEX = 16;
10
- const FOUR = 4;
11
- const FIFTEEN = 15;
12
- const getRandomValues = () => {
13
- const array = new Uint8Array(1);
14
- if (typeof window !== 'undefined') {
15
- if (window.crypto) {
16
- return window.crypto.getRandomValues(array);
17
- }
18
- // @ts-ignore
19
- if (window.msCrypto) {
20
- // @ts-ignore
21
- return window.msCrypto.getRandomValues(array);
22
- }
23
- }
24
- return (0, get_random_values_1.default)(array);
25
- };
26
- const createUuid = () => {
27
- // eslint-disable-next-line no-magic-numbers,require-unicode-regexp
28
- // @ts-ignore
29
- // eslint-disable-next-line no-magic-numbers,require-unicode-regexp
30
- return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) => {
31
- const value = getRandomValues()[0] & (FIFTEEN >> (c / FOUR));
32
- return (c ^ value).toString(HEX);
33
- });
34
- };
35
- exports.createUuid = createUuid;
36
- const toTitleCase = (string) => {
37
- return `${string.slice(0, 1).toUpperCase()}${string.slice(1)}`;
38
- };
39
- exports.toTitleCase = toTitleCase;
40
- const loweredTitleCase = (string) => {
41
- return `${string.slice(0, 1).toLowerCase()}${string.slice(1)}`;
42
- };
43
- exports.loweredTitleCase = loweredTitleCase;
44
- //# sourceMappingURL=utils.js.map
package/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;AAAA,aAAa;AACb,0EAAmD;AAEnD,MAAM,GAAG,GAAG,EAAE,CAAA;AACd,MAAM,IAAI,GAAG,CAAC,CAAA;AACd,MAAM,OAAO,GAAG,EAAE,CAAA;AAElB,MAAM,eAAe,GAAG,GAAe,EAAE;IACvC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;IAC/B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,IAAI,MAAM,CAAC,MAAM,EAAE;YACjB,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;SAC5C;QACD,aAAa;QACb,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,aAAa;YACb,OAAO,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;SAC9C;KACF;IAED,OAAO,IAAA,2BAAmB,EAAC,KAAK,CAAC,CAAA;AACnC,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,GAAW,EAAE;IAC9B,mEAAmE;IACnE,aAAa;IACb,mEAAmE;IACnE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAM,EAAE,EAAE;QACvE,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QAC5D,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAUuC,gCAAU;AARlD,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,EAAE;IACrC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AAChE,CAAC,CAAA;AAM0B,kCAAW;AAJtC,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAE,EAAE;IAC1C,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AAChE,CAAC,CAAA;AAEQ,4CAAgB"}
package/validation.d.ts DELETED
@@ -1,29 +0,0 @@
1
- import { FunctionalModel, ModelInstance, Model, ModelValidatorComponent, PropertyValidatorComponent, PropertyValidatorComponentSync, PropertyValidatorComponentTypeAdvanced, JsonAble, PropertyValidator, PropertyConfig, MaybeFunction, PropertyValidators, ValueGetter, Arrayable, FunctionalType, ModelErrors, ValidatorConfiguration, ValuePropertyValidatorComponent, ValidationErrors } from './interfaces';
2
- declare const TYPE_PRIMITIVES: {
3
- boolean: string;
4
- string: string;
5
- object: string;
6
- number: string;
7
- integer: string;
8
- };
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
- declare const referenceTypeMatch: <TModel extends FunctionalModel>(referencedModel: MaybeFunction<Model<TModel>>) => PropertyValidatorComponentTypeAdvanced<ModelInstance<TModel>, TModel>;
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 ModelValidatorComponent<T>[] | undefined) => (instance: ModelInstance<T>, propertyConfiguration: ValidatorConfiguration) => Promise<ModelErrors<T>>;
29
- export { isNumber, isBoolean, isString, isInteger, isType, isDate, isArray, isRequired, maxNumber, minNumber, choices, maxTextLength, minTextLength, meetsRegex, aggregateValidator, emptyValidator, createPropertyValidator, createModelValidator, arrayType, referenceTypeMatch, TYPE_PRIMITIVES, };