From 43983cb811173fef08b73ad4123e28bcc8c3a982 Mon Sep 17 00:00:00 2001 From: iyobo Date: Sat, 21 Oct 2023 13:20:29 -0500 Subject: [PATCH] throw error to warn no metadata --- src/util/tools.ts | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/util/tools.ts b/src/util/tools.ts index 90c9cc0..e9c553e 100644 --- a/src/util/tools.ts +++ b/src/util/tools.ts @@ -21,14 +21,18 @@ export function ensureArray(item: T | T[]): T[] { } export function getPropertiesOfClassValidator(targetConstructor: Function): Record { - const metadataStorage = getMetadataStorage(); - const targetMetadatas = metadataStorage - .getTargetValidationMetadatas(targetConstructor, undefined, false, false, undefined); - const groupedMetadatas = metadataStorage.groupByPropertyName(targetMetadatas); - return Object.fromEntries(Object.entries(groupedMetadatas).map(([property, decorators]) => { - const CM = decorators.map(decorator => metadataStorage.getTargetValidatorConstraints(decorator.constraintCls).map(v => v.name)); - return [property, CM.flat()]; - })); + try { + const metadataStorage = getMetadataStorage(); + const targetMetadatas = metadataStorage + .getTargetValidationMetadatas(targetConstructor, undefined, false, false, undefined); + const groupedMetadatas = metadataStorage.groupByPropertyName(targetMetadatas); + return Object.fromEntries(Object.entries(groupedMetadatas).map(([property, decorators]) => { + const CM = decorators.map(decorator => metadataStorage.getTargetValidatorConstraints(decorator.constraintCls).map(v => v.name)); + return [property, CM.flat()]; + })); + }catch(e){ + throw new Error('There was an error trying to read decorator metadata. This typically happens when you build your TS code with a compiler like EsBuild that does not respect the "emitDecorators:true" configuration. Please recompile your amala project with tsc or a derivative/combination that involves tsc.') + } } const cvCodex = {