1+ import { InternalError } from '../utils/errors' ;
12import { RemoveMethods } from '../utils/types' ;
23import { validateAllowedObjectKeys , validateNameString , validateTypeRecordStringUnknown , } from '../utils/validator' ;
34import { ResourceParameterDefinition } from './resource-parameter' ;
45
56type Name = string ;
7+ export type ResourceDefinitions = Map < Name , ResourceDefinition >
68
79/**
810 * Example json def:
@@ -17,7 +19,6 @@ type Name = string;
1719 * }
1820 * }
1921 */
20-
2122export class ResourceDefinition {
2223 name ! : string ;
2324 parameters ! : Map < Name , ResourceParameterDefinition > ;
@@ -26,7 +27,7 @@ export class ResourceDefinition {
2627 Object . assign ( this , props ) ;
2728 }
2829
29- static fromJson ( json : unknown ) : ResourceDefinition {
30+ static fromJson ( pluginName : string , json : unknown ) : ResourceDefinition {
3031 if ( this . validateDefinition ( json ) ) {
3132 const entries = Object . entries ( json . parameters ) . map ( ( [ name , value ] ) => {
3233 const resourceParameterDefinition = ResourceParameterDefinition . fromJson ( name , value ) ;
@@ -35,27 +36,27 @@ export class ResourceDefinition {
3536 } )
3637
3738 const parametersMap = new Map ( entries ) ;
38- return new ResourceDefinition ( { name : json . name , parameters : parametersMap } )
39+ return new ResourceDefinition ( { name : ` ${ pluginName } _ ${ json . name } ` , parameters : parametersMap } )
3940 }
4041
41- throw new Error ( 'Unable to parse resource definition' ) ;
42+ throw new InternalError ( 'Unable to parse resource definition' ) ;
4243 }
4344
4445 private static validateDefinition ( json : unknown ) : json is { name : string ; parameters : Record < string , unknown > } {
4546 if ( ! validateTypeRecordStringUnknown ( json ) ) {
46- return false ;
47+ throw new Error ( `Unable to validate definition is type object ${ json } ` ) ;
4748 }
4849
4950 if ( ! validateAllowedObjectKeys ( json , [ 'name' , 'parameters' ] ) ) {
50- return false ;
51+ throw new Error ( `Only keys name and parameters is allowed. ${ json } ` ) ;
5152 }
5253
5354 if ( ! validateNameString ( json . name ) ) {
54- return false ;
55+ throw new Error ( `Unable find definition name. ${ json } ` ) ;
5556 }
5657
5758 if ( ! validateTypeRecordStringUnknown ( json . parameters ) ) {
58- return false ;
59+ throw new Error ( `Unable to parse parameters. ${ json } ` ) ;
5960 }
6061
6162 return true ;
0 commit comments