@allgemein/schema-api 1.4.5 → 1.5.3
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/api/ILookupRegistry.d.ts +1 -0
- package/api/ILookupRegistry.js +4 -4
- package/api/ILookupRegistry.js.map +1 -1
- package/decorators/Property.js +6 -6
- package/decorators/Property.js.map +1 -1
- package/decorators/PropertyOf.js +1 -1
- package/decorators/PropertyOf.js.map +1 -1
- package/decorators/validate/Hostname.js +3 -3
- package/decorators/validate/Hostname.js.map +1 -1
- package/decorators/validate/Ip4.js +3 -3
- package/decorators/validate/Ip4.js.map +1 -1
- package/decorators/validate/Ip6.js +3 -3
- package/decorators/validate/Ip6.js.map +1 -1
- package/decorators/validate/IsEmail.js +2 -2
- package/decorators/validate/IsEmail.js.map +1 -1
- package/decorators/validate/IsNotEmpty.js +5 -5
- package/decorators/validate/IsNotEmpty.js.map +1 -1
- package/decorators/validate/MaxLength.js +3 -3
- package/decorators/validate/MaxLength.js.map +1 -1
- package/decorators/validate/MinLength.js +3 -3
- package/decorators/validate/MinLength.js.map +1 -1
- package/decorators/validate/Regex.js +4 -4
- package/decorators/validate/Regex.js.map +1 -1
- package/decorators/validate/Required.js +3 -3
- package/decorators/validate/Required.js.map +1 -1
- package/lib/AbstractRef.js +9 -9
- package/lib/AbstractRef.js.map +1 -1
- package/lib/AnnotationsHelper.js +13 -13
- package/lib/AnnotationsHelper.js.map +1 -1
- package/lib/ClassRef.js +18 -18
- package/lib/ClassRef.js.map +1 -1
- package/lib/Constants.d.ts +5 -1
- package/lib/Constants.js +14 -2
- package/lib/Constants.js.map +1 -1
- package/lib/DataContainer.js +9 -9
- package/lib/DataContainer.js.map +1 -1
- package/lib/LookupRegistry.js +13 -13
- package/lib/LookupRegistry.js.map +1 -1
- package/lib/SchemaRef.js +2 -2
- package/lib/SchemaRef.js.map +1 -1
- package/lib/SchemaUtils.js +11 -11
- package/lib/SchemaUtils.js.map +1 -1
- package/lib/json-schema/IJsonSchemaSerializeOptions.d.ts +5 -0
- package/lib/json-schema/IJsonSchemaSerializeOptions.js.map +1 -1
- package/lib/json-schema/JsonSchema.js +6 -6
- package/lib/json-schema/JsonSchema.js.map +1 -1
- package/lib/json-schema/JsonSchema7Serializer.d.ts +1 -0
- package/lib/json-schema/JsonSchema7Serializer.js +46 -33
- package/lib/json-schema/JsonSchema7Serializer.js.map +1 -1
- package/lib/json-schema/JsonSchema7Unserializer.js +50 -50
- package/lib/json-schema/JsonSchema7Unserializer.js.map +1 -1
- package/lib/options/IPropertyOptions.d.ts +4 -0
- package/lib/options/IPropertyOptions.js.map +1 -1
- package/lib/registry/AbstractRegistry.d.ts +7 -1
- package/lib/registry/AbstractRegistry.js +10 -2
- package/lib/registry/AbstractRegistry.js.map +1 -1
- package/lib/registry/DefaultEntityRef.js +1 -1
- package/lib/registry/DefaultEntityRef.js.map +1 -1
- package/lib/registry/DefaultNamespacedRegistry.d.ts +16 -1
- package/lib/registry/DefaultNamespacedRegistry.js +165 -91
- package/lib/registry/DefaultNamespacedRegistry.js.map +1 -1
- package/lib/registry/DefaultPropertyRef.js +26 -20
- package/lib/registry/DefaultPropertyRef.js.map +1 -1
- package/lib/registry/IRegistryOptions.d.ts +8 -0
- package/lib/registry/IRegistryOptions.js +4 -0
- package/lib/registry/IRegistryOptions.js.map +1 -0
- package/lib/registry/MetadataRegistry.d.ts +14 -0
- package/lib/registry/MetadataRegistry.js +32 -18
- package/lib/registry/MetadataRegistry.js.map +1 -1
- package/lib/registry/RegistryFactory.d.ts +2 -1
- package/lib/registry/RegistryFactory.js +10 -10
- package/lib/registry/RegistryFactory.js.map +1 -1
- package/lib/validation/DefaultValidator.js +19 -19
- package/lib/validation/DefaultValidator.js.map +1 -1
- package/lib/validation/Validator.js +2 -2
- package/lib/validation/Validator.js.map +1 -1
- package/package.json +17 -17
|
@@ -17,25 +17,25 @@ class RegistryFactory {
|
|
|
17
17
|
*
|
|
18
18
|
* @param namespace
|
|
19
19
|
*/
|
|
20
|
-
static get(namespace = Constants_1.DEFAULT_NAMESPACE) {
|
|
20
|
+
static get(namespace = Constants_1.DEFAULT_NAMESPACE, options) {
|
|
21
21
|
if (!this.$handles[namespace]) {
|
|
22
22
|
for (const type of this.$types) {
|
|
23
|
-
if (lodash_1.isString(type.pattern)) {
|
|
23
|
+
if ((0, lodash_1.isString)(type.pattern)) {
|
|
24
24
|
if (namespace === type.pattern) {
|
|
25
|
-
this.$handles[namespace] = Reflect.construct(type.registryClass, [namespace]);
|
|
25
|
+
this.$handles[namespace] = Reflect.construct(type.registryClass, [namespace, options]);
|
|
26
26
|
break;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
else {
|
|
30
|
-
if (lodash_1.isRegExp(type.pattern) && type.pattern.test(namespace)) {
|
|
31
|
-
this.$handles[namespace] = Reflect.construct(type.registryClass, [namespace]);
|
|
30
|
+
if ((0, lodash_1.isRegExp)(type.pattern) && type.pattern.test(namespace)) {
|
|
31
|
+
this.$handles[namespace] = Reflect.construct(type.registryClass, [namespace, options]);
|
|
32
32
|
break;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
if (!this.$handles[namespace]) {
|
|
37
37
|
// create default as fallback if nothing passes
|
|
38
|
-
this.$handles[namespace] = new DefaultNamespacedRegistry_1.DefaultNamespacedRegistry(namespace);
|
|
38
|
+
this.$handles[namespace] = new DefaultNamespacedRegistry_1.DefaultNamespacedRegistry(namespace, options);
|
|
39
39
|
}
|
|
40
40
|
if (this.$handles[namespace].prepare) {
|
|
41
41
|
this.$handles[namespace].prepare();
|
|
@@ -49,7 +49,7 @@ class RegistryFactory {
|
|
|
49
49
|
* @param namespace
|
|
50
50
|
*/
|
|
51
51
|
static remove(namespace) {
|
|
52
|
-
if (lodash_1.has(this.$handles, namespace)) {
|
|
52
|
+
if ((0, lodash_1.has)(this.$handles, namespace)) {
|
|
53
53
|
this.get(namespace).reset();
|
|
54
54
|
}
|
|
55
55
|
delete this.$handles[namespace];
|
|
@@ -61,8 +61,8 @@ class RegistryFactory {
|
|
|
61
61
|
* @param registry
|
|
62
62
|
*/
|
|
63
63
|
static register(namespace, registryClass) {
|
|
64
|
-
const existsAlready = this.$types.find(x => lodash_1.isString(x.pattern) && lodash_1.isString(namespace) ? x.pattern === namespace :
|
|
65
|
-
lodash_1.isRegExp(x.pattern) && lodash_1.isRegExp(namespace) ? x.pattern.source === namespace.source :
|
|
64
|
+
const existsAlready = this.$types.find(x => (0, lodash_1.isString)(x.pattern) && (0, lodash_1.isString)(namespace) ? x.pattern === namespace :
|
|
65
|
+
(0, lodash_1.isRegExp)(x.pattern) && (0, lodash_1.isRegExp)(namespace) ? x.pattern.source === namespace.source :
|
|
66
66
|
x.pattern === namespace);
|
|
67
67
|
if (!existsAlready) {
|
|
68
68
|
this.$types.unshift({
|
|
@@ -75,7 +75,7 @@ class RegistryFactory {
|
|
|
75
75
|
* Return active and registered namespaces
|
|
76
76
|
*/
|
|
77
77
|
static getNamespaces() {
|
|
78
|
-
return lodash_1.keys(this.$handles);
|
|
78
|
+
return (0, lodash_1.keys)(this.$handles);
|
|
79
79
|
}
|
|
80
80
|
static getTargets() {
|
|
81
81
|
return MetadataRegistry_1.MetadataRegistry.$().getTargets();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/registry/RegistryFactory.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,mCAAqD;AAErD,4CAA2E;AAC3E,2EAAsE;AACtE,yDAAoD;AACpD,0CAA0C;
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/registry/RegistryFactory.ts"],"names":[],"mappings":"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","file":"RegistryFactory.js","sourcesContent":["/**\n * Schema definitions can be different depending by handled structure.\n * We want use one api for use and accessing objects. The registry handle for a namespace can be\n * registered here.\n */\nimport {has, isRegExp, isString, keys} from 'lodash';\nimport {ILookupRegistry} from '../../api/ILookupRegistry';\nimport {ClassType, DEFAULT_NAMESPACE, METATYPE_ENTITY} from '../Constants';\nimport {DefaultNamespacedRegistry} from './DefaultNamespacedRegistry';\nimport {MetadataRegistry} from './MetadataRegistry';\nimport {C_DEFAULT} from '@allgemein/base';\nimport {IRegistryOptions} from './IRegistryOptions';\n\nexport class RegistryFactory {\n\n static $types: { pattern: string | RegExp, registryClass: ClassType<ILookupRegistry> }[] = [\n {\n pattern: /.*/,\n registryClass: DefaultNamespacedRegistry\n }\n ];\n\n\n static $handles: { [key: string]: ILookupRegistry } = {};\n\n\n /**\n * Return the registry handling schema/objects of given context or if not exists the generic default namescaped registry\n *\n * @param namespace\n */\n static get<T extends ILookupRegistry>(namespace: string = DEFAULT_NAMESPACE, options?: IRegistryOptions): T {\n if (!this.$handles[namespace]) {\n for (const type of this.$types) {\n if (isString(type.pattern)) {\n if (namespace === type.pattern) {\n this.$handles[namespace] = Reflect.construct(type.registryClass, [namespace, options]);\n break;\n }\n } else {\n if (isRegExp(type.pattern) && type.pattern.test(namespace)) {\n this.$handles[namespace] = Reflect.construct(type.registryClass, [namespace, options]);\n break;\n }\n }\n }\n\n if (!this.$handles[namespace]) {\n // create default as fallback if nothing passes\n this.$handles[namespace] = new DefaultNamespacedRegistry(namespace, options);\n }\n\n if (this.$handles[namespace].prepare) {\n this.$handles[namespace].prepare();\n }\n }\n return this.$handles[namespace] as T;\n }\n\n /**\n * Remove registry from handles list\n *\n * @param namespace\n */\n static remove(namespace: string) {\n if (has(this.$handles, namespace)) {\n this.get(namespace).reset();\n }\n delete this.$handles[namespace];\n }\n\n\n /**\n * Register a special registry for a given namespace or pattern, remove previous if existed\n *\n * @param namespace\n * @param registry\n */\n static register(namespace: string | RegExp, registryClass: ClassType<ILookupRegistry>) {\n const existsAlready = this.$types.find(x =>\n isString(x.pattern) && isString(namespace) ? x.pattern === namespace :\n isRegExp(x.pattern) && isRegExp(namespace) ? x.pattern.source === namespace.source :\n x.pattern === namespace);\n if (!existsAlready) {\n this.$types.unshift({\n pattern: namespace,\n registryClass: registryClass\n });\n }\n }\n\n /**\n * Return active and registered namespaces\n */\n static getNamespaces() {\n return keys(this.$handles);\n }\n\n static getTargets() {\n return MetadataRegistry.$().getTargets();\n }\n\n /**\n * Return all declared namespaces\n */\n static getDeclaredNamespaces(): { target: Function, namespace: string }[] {\n return [].concat(...MetadataRegistry.$().getTargets().map(x => {\n const entries = MetadataRegistry.$().getByContextAndTarget(METATYPE_ENTITY, x, 'merge');\n return entries.map(x => {\n return {target: x.target, namespace: x.namespace ? x.namespace : C_DEFAULT};\n });\n }));\n }\n\n\n static reset() {\n for (const ns of this.getNamespaces()) {\n this.remove(ns);\n }\n }\n\n}\n"],"sourceRoot":"../.."}
|
|
@@ -22,16 +22,16 @@ class DefaultValidator {
|
|
|
22
22
|
this.validators.push(validator);
|
|
23
23
|
if (validator.involveOnOptionKey) {
|
|
24
24
|
this.lookupKeys.unshift(validator.involveOnOptionKey);
|
|
25
|
-
this.lookupKeys = lodash_1.uniq(this.lookupKeys);
|
|
25
|
+
this.lookupKeys = (0, lodash_1.uniq)(this.lookupKeys);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
static validationInfo(ref) {
|
|
29
29
|
return __awaiter(this, void 0, void 0, function* () {
|
|
30
30
|
let clazz = null;
|
|
31
|
-
if (IEntityRef_1.isEntityRef(ref) || IClassRef_1.isClassRef(ref)) {
|
|
31
|
+
if ((0, IEntityRef_1.isEntityRef)(ref) || (0, IClassRef_1.isClassRef)(ref)) {
|
|
32
32
|
clazz = ref.getClass();
|
|
33
33
|
}
|
|
34
|
-
else if (lodash_1.isFunction(ref)) {
|
|
34
|
+
else if ((0, lodash_1.isFunction)(ref)) {
|
|
35
35
|
clazz = ref;
|
|
36
36
|
}
|
|
37
37
|
else {
|
|
@@ -44,7 +44,7 @@ class DefaultValidator {
|
|
|
44
44
|
return __awaiter(this, void 0, void 0, function* () {
|
|
45
45
|
let classRef = null;
|
|
46
46
|
if (ref) {
|
|
47
|
-
if (IEntityRef_1.isEntityRef(ref)) {
|
|
47
|
+
if ((0, IEntityRef_1.isEntityRef)(ref)) {
|
|
48
48
|
classRef = ref.getClassRef();
|
|
49
49
|
}
|
|
50
50
|
else {
|
|
@@ -75,12 +75,12 @@ class DefaultValidator {
|
|
|
75
75
|
else {
|
|
76
76
|
value = instance;
|
|
77
77
|
}
|
|
78
|
-
let instanceOptions = lodash_1.clone(toValidateEntry.options[handle.name]);
|
|
78
|
+
let instanceOptions = (0, lodash_1.clone)(toValidateEntry.options[handle.name]);
|
|
79
79
|
if (isPropertyCheck) {
|
|
80
80
|
instanceOptions.property = toValidateEntry.property;
|
|
81
81
|
}
|
|
82
82
|
if (handle.defaultOptions) {
|
|
83
|
-
lodash_1.defaults(instanceOptions, handle.defaultOptions);
|
|
83
|
+
(0, lodash_1.defaults)(instanceOptions, handle.defaultOptions);
|
|
84
84
|
}
|
|
85
85
|
if (!(yield handle.fn(value, instanceOptions, instance))) {
|
|
86
86
|
const error = {
|
|
@@ -90,12 +90,12 @@ class DefaultValidator {
|
|
|
90
90
|
constraints: {}
|
|
91
91
|
};
|
|
92
92
|
classErrors.push(error);
|
|
93
|
-
let msg = lodash_1.get(instanceOptions, 'message', null);
|
|
93
|
+
let msg = (0, lodash_1.get)(instanceOptions, 'message', null);
|
|
94
94
|
if (msg) {
|
|
95
95
|
msg = msg.replace('%propertyName', error.property).replace('%value', value);
|
|
96
|
-
lodash_1.keys(instanceOptions).forEach(k => {
|
|
96
|
+
(0, lodash_1.keys)(instanceOptions).forEach(k => {
|
|
97
97
|
let v = instanceOptions[k];
|
|
98
|
-
if (lodash_1.isObjectLike(v) || lodash_1.isArray(v)) {
|
|
98
|
+
if ((0, lodash_1.isObjectLike)(v) || (0, lodash_1.isArray)(v)) {
|
|
99
99
|
v = JSON.stringify(v);
|
|
100
100
|
}
|
|
101
101
|
msg = msg.replace('%options.' + k, v);
|
|
@@ -140,13 +140,13 @@ class DefaultValidator {
|
|
|
140
140
|
//
|
|
141
141
|
static getValidationHandlesForFn(fn) {
|
|
142
142
|
const entries = [];
|
|
143
|
-
const entriesSecond = MetadataRegistry_1.MetadataRegistry.$().getCached().filter(x => x.target === fn && lodash_1.intersection(this.lookupKeys, lodash_1.keys(x)).length > 0);
|
|
143
|
+
const entriesSecond = MetadataRegistry_1.MetadataRegistry.$().getCached().filter(x => x.target === fn && (0, lodash_1.intersection)(this.lookupKeys, (0, lodash_1.keys)(x)).length > 0);
|
|
144
144
|
for (const e of entriesSecond) {
|
|
145
145
|
const handlesAndOptions = this.extractValidationInfox(e);
|
|
146
146
|
const validationEntry = {
|
|
147
147
|
target: fn,
|
|
148
148
|
};
|
|
149
|
-
lodash_1.assign(validationEntry, handlesAndOptions);
|
|
149
|
+
(0, lodash_1.assign)(validationEntry, handlesAndOptions);
|
|
150
150
|
if (e.propertyName) {
|
|
151
151
|
validationEntry.property = e.propertyName;
|
|
152
152
|
}
|
|
@@ -154,7 +154,7 @@ class DefaultValidator {
|
|
|
154
154
|
}
|
|
155
155
|
const entriesFirst = base_1.MetadataStorage
|
|
156
156
|
.key(Constants_1.XS_ANNOTATION_OPTIONS_CACHE)
|
|
157
|
-
.filter((x) => x.object === fn && lodash_1.intersection(this.lookupKeys, lodash_1.keys(x.options)).length > 0);
|
|
157
|
+
.filter((x) => x.object === fn && (0, lodash_1.intersection)(this.lookupKeys, (0, lodash_1.keys)(x.options)).length > 0);
|
|
158
158
|
for (const e of entriesFirst) {
|
|
159
159
|
const alreadyAsProperty = entries.find(x => x.property === e.property);
|
|
160
160
|
const handlesAndOptions = this.extractValidationInfox(e.options);
|
|
@@ -166,14 +166,14 @@ class DefaultValidator {
|
|
|
166
166
|
continue;
|
|
167
167
|
}
|
|
168
168
|
alreadyAsProperty.handles.push(handle);
|
|
169
|
-
lodash_1.set(alreadyAsProperty.options, handle.name, lodash_1.get(handlesAndOptions.options, handle.name, {}));
|
|
169
|
+
(0, lodash_1.set)(alreadyAsProperty.options, handle.name, (0, lodash_1.get)(handlesAndOptions.options, handle.name, {}));
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
else {
|
|
173
173
|
const validationEntry = {
|
|
174
174
|
target: fn,
|
|
175
175
|
};
|
|
176
|
-
lodash_1.assign(validationEntry, handlesAndOptions);
|
|
176
|
+
(0, lodash_1.assign)(validationEntry, handlesAndOptions);
|
|
177
177
|
if (e.property) {
|
|
178
178
|
validationEntry.property = e.property;
|
|
179
179
|
}
|
|
@@ -183,28 +183,28 @@ class DefaultValidator {
|
|
|
183
183
|
return entries;
|
|
184
184
|
}
|
|
185
185
|
static extractValidationInfox(entryOptions) {
|
|
186
|
-
const intersect = lodash_1.intersection(this.lookupKeys, lodash_1.keys(entryOptions));
|
|
186
|
+
const intersect = (0, lodash_1.intersection)(this.lookupKeys, (0, lodash_1.keys)(entryOptions));
|
|
187
187
|
const handles = [];
|
|
188
188
|
const options = {};
|
|
189
189
|
for (const k of intersect) {
|
|
190
190
|
const isLookupKey = ['validate', 'format'].includes(k);
|
|
191
|
-
const valueForKey = lodash_1.get(entryOptions, k, null);
|
|
191
|
+
const valueForKey = (0, lodash_1.get)(entryOptions, k, null);
|
|
192
192
|
const handle = this.validators.find(x => x.name === valueForKey || x.involveOnOptionKey === k);
|
|
193
193
|
if (handle) {
|
|
194
194
|
const handleAlreadySet = handles.find(x => x.name === handle.name);
|
|
195
195
|
if (!handleAlreadySet) {
|
|
196
196
|
handles.push(handle);
|
|
197
197
|
}
|
|
198
|
-
let v = lodash_1.clone(lodash_1.get(entryOptions, 'validateOptions.' + handle.name, {}));
|
|
198
|
+
let v = (0, lodash_1.clone)((0, lodash_1.get)(entryOptions, 'validateOptions.' + handle.name, {}));
|
|
199
199
|
if (!isLookupKey) {
|
|
200
200
|
// pass additional value
|
|
201
|
-
v[handle.involveOnOptionKey] = lodash_1.get(entryOptions, handle.involveOnOptionKey, null);
|
|
201
|
+
v[handle.involveOnOptionKey] = (0, lodash_1.get)(entryOptions, handle.involveOnOptionKey, null);
|
|
202
202
|
}
|
|
203
203
|
if (v) {
|
|
204
204
|
if (!options[handle.name]) {
|
|
205
205
|
options[handle.name] = {};
|
|
206
206
|
}
|
|
207
|
-
lodash_1.merge(options[handle.name], v);
|
|
207
|
+
(0, lodash_1.merge)(options[handle.name], v);
|
|
208
208
|
}
|
|
209
209
|
}
|
|
210
210
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/validation/DefaultValidator.ts"],"names":[],"mappings":"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","file":"DefaultValidator.js","sourcesContent":["import {\n assign,\n clone,\n defaults,\n get,\n intersection,\n isArray,\n isFunction,\n isObjectLike,\n keys,\n merge,\n set,\n uniq\n} from 'lodash';\n\nimport {IClassRef, isClassRef} from '../../api/IClassRef';\nimport {IEntityRef, isEntityRef} from '../../api/IEntityRef';\nimport {ClassUtils, MetadataStorage, NotYetImplementedError} from '@allgemein/base';\nimport {IValidationError} from './IValidationError';\nimport {ClassRef} from '../ClassRef';\nimport {IPropertyExtentions} from '../../api/IPropertyExtentions';\nimport {XS_ANNOTATION_OPTIONS_CACHE} from '../Constants';\nimport {MetadataRegistry} from '../registry/MetadataRegistry';\nimport {IValidator} from './IValidator';\nimport {IValidatorEntry} from './IValidatorEntry';\n\n\nexport class DefaultValidator {\n\n private static validators: IValidator[] = [];\n\n private static lookupKeys = ['format', 'validate'];\n\n\n static define(validator: IValidator) {\n this.validators.push(validator);\n if (validator.involveOnOptionKey) {\n this.lookupKeys.unshift(validator.involveOnOptionKey);\n this.lookupKeys = uniq(this.lookupKeys);\n }\n }\n\n\n static async validationInfo(ref: Function | IClassRef | IEntityRef) {\n let clazz: Function = null;\n if (isEntityRef(ref) || isClassRef(ref)) {\n clazz = ref.getClass();\n } else if (isFunction(ref)) {\n clazz = ref;\n } else {\n throw new Error('not implemented for ' + ref);\n }\n return this.getValidationHandlesForFn(clazz);\n }\n\n\n static async validate(instance: any, ref?: IClassRef | IEntityRef): Promise<IValidationError[]> {\n let classRef: IClassRef = null;\n if (ref) {\n if (isEntityRef(ref)) {\n classRef = ref.getClassRef();\n } else {\n classRef = ref;\n }\n } else {\n const target = ClassUtils.getFunction(instance);\n if (!target) {\n throw new NotYetImplementedError();\n }\n classRef = ClassRef.get(target);\n }\n\n // const entries:IPropertyExtentions[] = MetadataStorage\n // .key(XS_ANNOTATION_OPTIONS_CACHE)\n // .filter((x:IPropertyExtentions) =>\n // x.object === classRef.getClass() && (has(x.options, 'format') || has(x.options, 'format'))\n // );\n const classErrors: IValidationError[] = [];\n const toValidateList = this.getValidationHandlesForFn(classRef.getClass());\n for (const toValidateEntry of toValidateList) {\n for (const handle of toValidateEntry.handles) {\n let value = null;\n let isPropertyCheck = toValidateEntry.property ? true : false;\n\n if (isPropertyCheck) {\n value = instance[toValidateEntry.property];\n } else {\n value = instance;\n }\n\n let instanceOptions = clone(toValidateEntry.options[handle.name]);\n if (isPropertyCheck) {\n instanceOptions.property = toValidateEntry.property;\n }\n if (handle.defaultOptions) {\n defaults(instanceOptions, handle.defaultOptions);\n }\n\n if (!(await handle.fn(value, instanceOptions, instance))) {\n const error: IValidationError = {\n metaType: toValidateEntry.property ? 'property' : 'entity',\n property: toValidateEntry.property,\n value: value,\n constraints: {}\n };\n classErrors.push(error);\n\n let msg = get(instanceOptions, 'message', null);\n if (msg) {\n msg = msg.replace('%propertyName', error.property).replace('%value', value);\n keys(instanceOptions).forEach(k => {\n let v = instanceOptions[k];\n if (isObjectLike(v) || isArray(v)) {\n v = JSON.stringify(v);\n }\n msg = msg.replace('%options.' + k, v);\n });\n error.constraints[handle.name] = msg;\n }\n }\n\n }\n }\n\n\n // validate entity\n // const classErrors = await this.validateHandles(classRef, instance);\n // for (const ref of classRef.getPropertyRefs()) {\n // if (ref.isReference()) {\n // // TODO\n // } else {\n // classErrors.push(...await this.validateHandles(ref, ref.get(instance)));\n // }\n // }\n\n return classErrors;\n }\n\n //\n //\n // static async validateHandles(ref: IBaseRef, value: any) {\n // const handleKeys = this.getHandleKeys(ref);\n // if (isEmpty(handleKeys)) {\n // return [];\n // }\n // const handles = this.getHandles(handleKeys);\n // const errors: IValidationError[] = [];\n // for (const handle of handles) {\n // if (handle) {\n // }\n // }\n // return errors;\n // }\n //\n //\n // static getHandles(handleKeys: string[]): { name: string, fn: (value: any) => boolean, opts?: { message?: string } }[] {\n // return [].concat(...handleKeys.map(k => this.validators.filter(y => y.name === k)));\n // }\n //\n\n static getValidationHandlesForFn(fn: Function) {\n const entries: IValidatorEntry[] = [];\n const entriesSecond = MetadataRegistry.$().getCached().filter(x =>\n x.target === fn && intersection(this.lookupKeys, keys(x)).length > 0\n );\n\n for (const e of entriesSecond) {\n const handlesAndOptions = this.extractValidationInfox(e);\n const validationEntry: IValidatorEntry = {\n target: fn,\n };\n assign(validationEntry, handlesAndOptions);\n if (e.propertyName) {\n validationEntry.property = e.propertyName;\n }\n entries.push(validationEntry);\n }\n\n\n const entriesFirst: IPropertyExtentions[] = MetadataStorage\n .key(XS_ANNOTATION_OPTIONS_CACHE)\n .filter((x: IPropertyExtentions) =>\n x.object === fn && intersection(this.lookupKeys, keys(x.options)).length > 0\n );\n\n for (const e of entriesFirst) {\n const alreadyAsProperty = entries.find(x => x.property === e.property) as IValidatorEntry;\n const handlesAndOptions = this.extractValidationInfox(e.options);\n if (alreadyAsProperty) {\n for (let i = 0; i < handlesAndOptions.handles.length; i++) {\n const handle = handlesAndOptions.handles[i];\n if (alreadyAsProperty.handles.find(x => x.name === handle.name)) {\n // ignore double declarations\n continue;\n }\n alreadyAsProperty.handles.push(handle);\n set(alreadyAsProperty.options, handle.name, get(handlesAndOptions.options, handle.name, {}));\n }\n } else {\n const validationEntry: IValidatorEntry = {\n target: fn,\n };\n assign(validationEntry, handlesAndOptions);\n if (e.property) {\n validationEntry.property = e.property;\n }\n entries.push(validationEntry);\n }\n }\n return entries;\n }\n\n\n private static extractValidationInfox(entryOptions: any) {\n const intersect = intersection(this.lookupKeys, keys(entryOptions));\n const handles: any[] = [];\n const options = {};\n for (const k of intersect) {\n const isLookupKey = ['validate', 'format'].includes(k);\n const valueForKey = get(entryOptions, k, null);\n const handle = this.validators.find(x => x.name === valueForKey || x.involveOnOptionKey === k);\n if (handle) {\n const handleAlreadySet = handles.find(x => x.name === handle.name);\n if (!handleAlreadySet) {\n handles.push(handle);\n }\n\n let v = clone(get(entryOptions, 'validateOptions.' + handle.name, {}));\n if (!isLookupKey) {\n // pass additional value\n v[handle.involveOnOptionKey] = get(entryOptions, handle.involveOnOptionKey, null);\n }\n\n if (v) {\n if (!options[handle.name]) {\n options[handle.name] = {};\n }\n merge(options[handle.name], v);\n }\n }\n }\n return {\n handles: handles,\n options: options\n };\n }\n\n}\n"],"sourceRoot":"../.."}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/validation/DefaultValidator.ts"],"names":[],"mappings":"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","file":"DefaultValidator.js","sourcesContent":["import {\n assign,\n clone,\n defaults,\n get,\n intersection,\n isArray,\n isFunction,\n isObjectLike,\n keys,\n merge,\n set,\n uniq\n} from 'lodash';\n\nimport {IClassRef, isClassRef} from '../../api/IClassRef';\nimport {IEntityRef, isEntityRef} from '../../api/IEntityRef';\nimport {ClassUtils, MetadataStorage, NotYetImplementedError} from '@allgemein/base';\nimport {IValidationError} from './IValidationError';\nimport {ClassRef} from '../ClassRef';\nimport {IPropertyExtentions} from '../../api/IPropertyExtentions';\nimport {XS_ANNOTATION_OPTIONS_CACHE} from '../Constants';\nimport {MetadataRegistry} from '../registry/MetadataRegistry';\nimport {IValidator} from './IValidator';\nimport {IValidatorEntry} from './IValidatorEntry';\n\n\nexport class DefaultValidator {\n\n private static validators: IValidator[] = [];\n\n private static lookupKeys = ['format', 'validate'];\n\n\n static define(validator: IValidator) {\n this.validators.push(validator);\n if (validator.involveOnOptionKey) {\n this.lookupKeys.unshift(validator.involveOnOptionKey);\n this.lookupKeys = uniq(this.lookupKeys);\n }\n }\n\n\n static async validationInfo(ref: Function | IClassRef | IEntityRef) {\n let clazz: Function = null;\n if (isEntityRef(ref) || isClassRef(ref)) {\n clazz = ref.getClass();\n } else if (isFunction(ref)) {\n clazz = ref;\n } else {\n throw new Error('not implemented for ' + ref);\n }\n return this.getValidationHandlesForFn(clazz);\n }\n\n\n static async validate(instance: any, ref?: IClassRef | IEntityRef): Promise<IValidationError[]> {\n let classRef: IClassRef = null;\n if (ref) {\n if (isEntityRef(ref)) {\n classRef = ref.getClassRef();\n } else {\n classRef = ref;\n }\n } else {\n const target = ClassUtils.getFunction(instance);\n if (!target) {\n throw new NotYetImplementedError();\n }\n classRef = ClassRef.get(target);\n }\n\n // const entries:IPropertyExtentions[] = MetadataStorage\n // .key(XS_ANNOTATION_OPTIONS_CACHE)\n // .filter((x:IPropertyExtentions) =>\n // x.object === classRef.getClass() && (has(x.options, 'format') || has(x.options, 'format'))\n // );\n const classErrors: IValidationError[] = [];\n const toValidateList = this.getValidationHandlesForFn(classRef.getClass());\n for (const toValidateEntry of toValidateList) {\n for (const handle of toValidateEntry.handles) {\n let value = null;\n let isPropertyCheck = toValidateEntry.property ? true : false;\n\n if (isPropertyCheck) {\n value = instance[toValidateEntry.property];\n } else {\n value = instance;\n }\n\n let instanceOptions = clone(toValidateEntry.options[handle.name]);\n if (isPropertyCheck) {\n instanceOptions.property = toValidateEntry.property;\n }\n if (handle.defaultOptions) {\n defaults(instanceOptions, handle.defaultOptions);\n }\n\n if (!(await handle.fn(value, instanceOptions, instance))) {\n const error: IValidationError = {\n metaType: toValidateEntry.property ? 'property' : 'entity',\n property: toValidateEntry.property,\n value: value,\n constraints: {}\n };\n classErrors.push(error);\n\n let msg = get(instanceOptions, 'message', null);\n if (msg) {\n msg = msg.replace('%propertyName', error.property).replace('%value', value);\n keys(instanceOptions).forEach(k => {\n let v = instanceOptions[k];\n if (isObjectLike(v) || isArray(v)) {\n v = JSON.stringify(v);\n }\n msg = msg.replace('%options.' + k, v);\n });\n error.constraints[handle.name] = msg;\n }\n }\n\n }\n }\n\n\n // validate entity\n // const classErrors = await this.validateHandles(classRef, instance);\n // for (const ref of classRef.getPropertyRefs()) {\n // if (ref.isReference()) {\n // // TODO\n // } else {\n // classErrors.push(...await this.validateHandles(ref, ref.get(instance)));\n // }\n // }\n\n return classErrors;\n }\n\n //\n //\n // static async validateHandles(ref: IBaseRef, value: any) {\n // const handleKeys = this.getHandleKeys(ref);\n // if (isEmpty(handleKeys)) {\n // return [];\n // }\n // const handles = this.getHandles(handleKeys);\n // const errors: IValidationError[] = [];\n // for (const handle of handles) {\n // if (handle) {\n // }\n // }\n // return errors;\n // }\n //\n //\n // static getHandles(handleKeys: string[]): { name: string, fn: (value: any) => boolean, opts?: { message?: string } }[] {\n // return [].concat(...handleKeys.map(k => this.validators.filter(y => y.name === k)));\n // }\n //\n\n static getValidationHandlesForFn(fn: Function) {\n const entries: IValidatorEntry[] = [];\n const entriesSecond = MetadataRegistry.$().getCached().filter(x =>\n x.target === fn && intersection(this.lookupKeys, keys(x)).length > 0\n );\n\n for (const e of entriesSecond) {\n const handlesAndOptions = this.extractValidationInfox(e);\n const validationEntry: IValidatorEntry = {\n target: fn,\n };\n assign(validationEntry, handlesAndOptions);\n if (e.propertyName) {\n validationEntry.property = e.propertyName;\n }\n entries.push(validationEntry);\n }\n\n\n const entriesFirst: IPropertyExtentions[] = MetadataStorage\n .key(XS_ANNOTATION_OPTIONS_CACHE)\n .filter((x: IPropertyExtentions) =>\n x.object === fn && intersection(this.lookupKeys, keys(x.options)).length > 0\n );\n\n for (const e of entriesFirst) {\n const alreadyAsProperty = entries.find(x => x.property === e.property) as IValidatorEntry;\n const handlesAndOptions = this.extractValidationInfox(e.options);\n if (alreadyAsProperty) {\n for (let i = 0; i < handlesAndOptions.handles.length; i++) {\n const handle = handlesAndOptions.handles[i];\n if (alreadyAsProperty.handles.find(x => x.name === handle.name)) {\n // ignore double declarations\n continue;\n }\n alreadyAsProperty.handles.push(handle);\n set(alreadyAsProperty.options, handle.name, get(handlesAndOptions.options, handle.name, {}));\n }\n } else {\n const validationEntry: IValidatorEntry = {\n target: fn,\n };\n assign(validationEntry, handlesAndOptions);\n if (e.property) {\n validationEntry.property = e.property;\n }\n entries.push(validationEntry);\n }\n }\n return entries;\n }\n\n\n private static extractValidationInfox(entryOptions: any) {\n const intersect = intersection(this.lookupKeys, keys(entryOptions));\n const handles: any[] = [];\n const options = {};\n for (const k of intersect) {\n const isLookupKey = ['validate', 'format'].includes(k);\n const valueForKey = get(entryOptions, k, null);\n const handle = this.validators.find(x => x.name === valueForKey || x.involveOnOptionKey === k);\n if (handle) {\n const handleAlreadySet = handles.find(x => x.name === handle.name);\n if (!handleAlreadySet) {\n handles.push(handle);\n }\n\n let v = clone(get(entryOptions, 'validateOptions.' + handle.name, {}));\n if (!isLookupKey) {\n // pass additional value\n v[handle.involveOnOptionKey] = get(entryOptions, handle.involveOnOptionKey, null);\n }\n\n if (v) {\n if (!options[handle.name]) {\n options[handle.name] = {};\n }\n merge(options[handle.name], v);\n }\n }\n }\n return {\n handles: handles,\n options: options\n };\n }\n\n}\n"],"sourceRoot":"../.."}
|
|
@@ -26,7 +26,7 @@ class Validator {
|
|
|
26
26
|
}
|
|
27
27
|
static getValidationEntries(fn) {
|
|
28
28
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
-
if (lodash_1.isEmpty(this.info)) {
|
|
29
|
+
if ((0, lodash_1.isEmpty)(this.info)) {
|
|
30
30
|
return [];
|
|
31
31
|
}
|
|
32
32
|
const data = yield Promise.all(this.info.map(x => x(fn)));
|
|
@@ -35,7 +35,7 @@ class Validator {
|
|
|
35
35
|
}
|
|
36
36
|
static validate(instance, ref) {
|
|
37
37
|
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
-
if (lodash_1.isEmpty(this.fn)) {
|
|
38
|
+
if ((0, lodash_1.isEmpty)(this.fn)) {
|
|
39
39
|
return [];
|
|
40
40
|
}
|
|
41
41
|
const data = yield Promise.all(this.fn.map(x => x(instance, ref)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/validation/Validator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAA+B;AAI/B,yDAAoD;AAOpD;;GAEG;AACH,MAAa,SAAS;IAUpB,MAAM,CAAC,GAAG,CAAC,EAAqB,EAAE,MAA8B;QAC9D,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,KAAK;QACV,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,MAAM,CAAO,oBAAoB,CAAC,EAAqC;;YACrE,IAAI,gBAAO,
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/validation/Validator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAA+B;AAI/B,yDAAoD;AAOpD;;GAEG;AACH,MAAa,SAAS;IAUpB,MAAM,CAAC,GAAG,CAAC,EAAqB,EAAE,MAA8B;QAC9D,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,KAAK;QACV,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,MAAM,CAAO,oBAAoB,CAAC,EAAqC;;YACrE,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACtB,OAAO,EAAE,CAAC;aACX;YACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1D,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5B,CAAC;KAAA;IAED,MAAM,CAAO,QAAQ,CAAC,QAAa,EAAE,GAA4B;;YAC/D,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBACpB,OAAO,EAAE,CAAC;aACX;YACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACnE,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5B,CAAC;KAAA;;AAlCH,8BAmCC;AAjCgB,YAAE,GAAwB;IACvC,mCAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,mCAAgB,CAAC;CACjD,CAAC;AAEa,cAAI,GAA6B;IAC9C,mCAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,mCAAgB,CAAC;CACvD,CAAC","file":"Validator.js","sourcesContent":["import {isEmpty} from 'lodash';\nimport {IValidationError} from './IValidationError';\nimport {IClassRef} from '../../api/IClassRef';\nimport {IEntityRef} from '../../api/IEntityRef';\nimport {DefaultValidator} from './DefaultValidator';\nimport {IValidatorEntry} from './IValidatorEntry';\n\n\nexport type validate_function = (instance: any, ref?: IClassRef | IEntityRef) => Promise<IValidationError[]>;\nexport type validate_info_function = (ref?: Function | IClassRef | IEntityRef) => Promise<IValidatorEntry[]>;\n\n/**\n * Abstraction for defualt validator functions\n */\nexport class Validator {\n\n private static fn: validate_function[] = [\n DefaultValidator.validate.bind(DefaultValidator)\n ];\n\n private static info: validate_info_function[] = [\n DefaultValidator.validationInfo.bind(DefaultValidator)\n ];\n\n static add(fn: validate_function, fnInfo: validate_info_function) {\n this.fn.push(fn);\n this.info.push(fnInfo);\n }\n\n static reset() {\n this.fn = [];\n this.info = [];\n }\n\n static async getValidationEntries(fn: Function | IClassRef | IEntityRef) {\n if (isEmpty(this.info)) {\n return [];\n }\n const data = await Promise.all(this.info.map(x => x(fn)));\n return [].concat(...data);\n }\n\n static async validate(instance: any, ref?: IClassRef | IEntityRef): Promise<IValidationError[]> {\n if (isEmpty(this.fn)) {\n return [];\n }\n const data = await Promise.all(this.fn.map(x => x(instance, ref)));\n return [].concat(...data);\n }\n}\n"],"sourceRoot":"../.."}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@allgemein/schema-api",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.3",
|
|
4
4
|
"description": "Library for schema api",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"private": false,
|
|
@@ -33,22 +33,22 @@
|
|
|
33
33
|
},
|
|
34
34
|
"homepage": "https://github.com/allgemein-node/schema-api#readme",
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@allgemein/packaging": "^1.
|
|
36
|
+
"@allgemein/packaging": "^1.2.14",
|
|
37
37
|
"@testdeck/mocha": "^0.1.2",
|
|
38
|
-
"@types/chai": "^4.2.
|
|
39
|
-
"@types/glob": "^7.
|
|
40
|
-
"@types/json-schema": "^7.0.
|
|
41
|
-
"@types/lodash": "^4.14.
|
|
42
|
-
"@types/mocha": "^
|
|
43
|
-
"@types/node": "^
|
|
44
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
45
|
-
"@typescript-eslint/parser": "^
|
|
38
|
+
"@types/chai": "^4.2.22",
|
|
39
|
+
"@types/glob": "^7.2.0",
|
|
40
|
+
"@types/json-schema": "^7.0.9",
|
|
41
|
+
"@types/lodash": "^4.14.176",
|
|
42
|
+
"@types/mocha": "^9.0.0",
|
|
43
|
+
"@types/node": "^16.11.2",
|
|
44
|
+
"@typescript-eslint/eslint-plugin": "^5.1.0",
|
|
45
|
+
"@typescript-eslint/parser": "^5.1.0",
|
|
46
46
|
"chai": "^4.3.4",
|
|
47
|
-
"codecov": "^3.8.
|
|
47
|
+
"codecov": "^3.8.3",
|
|
48
48
|
"codelyzer": "^6.0.2",
|
|
49
49
|
"del": "6.0.0",
|
|
50
|
-
"eslint": "^
|
|
51
|
-
"eslint-plugin-import": "^2.
|
|
50
|
+
"eslint": "^8.0.1",
|
|
51
|
+
"eslint-plugin-import": "^2.25.2",
|
|
52
52
|
"got": "^11.8.2",
|
|
53
53
|
"gulp": "4.0.2",
|
|
54
54
|
"gulp-bump": "^3.2.0",
|
|
@@ -58,14 +58,14 @@
|
|
|
58
58
|
"gulp-sourcemaps": "3.0.0",
|
|
59
59
|
"gulp-typescript": "5.0.1",
|
|
60
60
|
"merge-stream": "^2.0.0",
|
|
61
|
-
"mocha": "^
|
|
61
|
+
"mocha": "^9.1.3",
|
|
62
62
|
"nyc": "^15.1.0",
|
|
63
63
|
"reflect-metadata": "^0.1.13",
|
|
64
|
-
"ts-node": "^10.
|
|
65
|
-
"typescript": "4.
|
|
64
|
+
"ts-node": "^10.3.1",
|
|
65
|
+
"typescript": "4.4.4"
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@allgemein/base": "^1.
|
|
68
|
+
"@allgemein/base": "^1.6.2"
|
|
69
69
|
},
|
|
70
70
|
"peerDependencies": {
|
|
71
71
|
"reflect-metadata": "^0.1.13"
|