From 02f9eb4f3c8a0de323f34fed09024663b6aed677 Mon Sep 17 00:00:00 2001 From: Philip Hell Date: Fri, 26 Nov 2021 03:38:31 +0100 Subject: [PATCH] fix: added argsFromObj error handling --- package.json | 2 +- src/ctor-validator.ts | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 4505349..d919f44 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ctor-ensure", "author": "BlvckBytes", - "version": "1.0.13", + "version": "1.0.14", "license": "GPL-3.0", "repository": { "type": "git", diff --git a/src/ctor-validator.ts b/src/ctor-validator.ts index c6b1fad..7234829 100644 --- a/src/ctor-validator.ts +++ b/src/ctor-validator.ts @@ -7,9 +7,13 @@ import { getActiveControls, classRegistry, validateClassCtor } from './ctor-ensu * @param value Plain object to extract from * @returns List of arguments in right order */ -export const argsFromObj = (clazz: Constructable, value: any): any[] => { +export const argsFromObj = (clazz: Constructable, value: any): any[] | null => { // Get all controls of this class and find the highest validated ctor index const className = Reflect.getOwnMetadata(META_KEY_DISPLAYNAME, clazz); + + // Not a @CtorEnsure class + if (!className) return null; + const ctls = getActiveControls(clazz, className, []); const maxCtorInd = ctls.reduce((acc, curr) => (curr.ctorInd > acc ? curr.ctorInd : acc), 0); @@ -35,6 +39,9 @@ export const validateCtor = (className: string, value: any, templateLang = ''): const clazz = classRegistry[className]?.clazz; if (!clazz) return null; + const args = argsFromObj(clazz, value); + if (!args) return null; + // Call validation - return validateClassCtor(className, argsFromObj(clazz, value), templateLang); + return validateClassCtor(className, args, templateLang); }; \ No newline at end of file