@@ -35,7 +35,9 @@ export function filterUDAParamsValidTypes(type: number | number[]): number[] {
3535 return typesArray . filter ( validTypes . has , validTypes ) ;
3636}
3737
38- export function getUDAParamType ( type : ParamFieldType ) : string | string [ ] {
38+ export function getUDAParamType (
39+ type : ParamFieldType | ParamFieldType [ ] ,
40+ ) : string | string [ ] {
3941 if ( Array . isArray ( type ) ) {
4042 return type . map (
4143 ( t ) => ext . constants . dataTypes . get ( t . toString ( ) ) ?? t . toString ( ) ,
@@ -150,35 +152,55 @@ export function convertTypesToString(returnType: number[]): string[] {
150152 ) ;
151153}
152154
155+ export function getIncompatibleError (
156+ metadata : any ,
157+ parsedParams : any ,
158+ ) : InvalidParamFieldErrors | undefined {
159+ if ( ! metadata ) {
160+ return InvalidParamFieldErrors . NoMetadata ;
161+ }
162+ if ( parsedParams === ParamFieldType . Invalid ) {
163+ return InvalidParamFieldErrors . BadField ;
164+ }
165+ return undefined ;
166+ }
167+
168+ export function createUDAReturn ( metadata : any ) : UDAReturn {
169+ return {
170+ type : convertTypesToString ( metadata ?. return . type || [ ] ) ,
171+ description : metadata ?. return . description || "" ,
172+ } ;
173+ }
174+
175+ export function createUDAObject (
176+ uda : any ,
177+ parsedParams : any ,
178+ incompatibleError : any ,
179+ ) : UDA {
180+ return {
181+ name : uda . api ,
182+ description : uda . metadata ?. description || "" ,
183+ params : Array . isArray ( parsedParams ) ? parsedParams : [ ] ,
184+ return : createUDAReturn ( uda . metadata ) ,
185+ incompatibleError,
186+ } ;
187+ }
188+
153189export function parseUDAList ( getMeta : MetaObjectPayload ) : UDA [ ] {
154190 const UDAs : UDA [ ] = [ ] ;
155191 if ( getMeta . api !== undefined ) {
156192 const getMetaUDAs = getMeta . api . filter ( ( api ) => api . custom === true ) ;
157193 if ( getMetaUDAs . length !== 0 ) {
158194 for ( const uda of getMetaUDAs ) {
159195 const parsedParams = parseUDAParams ( uda . metadata ?. params ) ;
160- let incompatibleError = undefined ;
161- if ( ! uda . metadata ) {
162- incompatibleError = InvalidParamFieldErrors . NoMetadata ;
163- }
164- if ( parsedParams === ParamFieldType . Invalid ) {
165- incompatibleError = InvalidParamFieldErrors . BadField ;
166- }
167- const returnData : UDAReturn = {
168- type : convertTypesToString ( uda . metadata ?. return . type || [ ] ) ,
169- description : uda . metadata ?. return . description || "" ,
170- } ;
171- UDAs . push ( {
172- name : uda . api ,
173- description : uda . metadata ?. description || "" ,
174- params : Array . isArray ( parsedParams ) ? parsedParams : [ ] ,
175- return : returnData ,
176- incompatibleError,
177- } ) ;
196+ const incompatibleError = getIncompatibleError (
197+ uda . metadata ,
198+ parsedParams ,
199+ ) ;
200+ UDAs . push ( createUDAObject ( uda , parsedParams , incompatibleError ) ) ;
178201 }
179202 }
180203 }
181-
182204 return UDAs ;
183205}
184206
0 commit comments