1- import { Plugin } from '../entities/plugin .js' ;
1+ import Ajv2020 , { SchemaObject , ValidateFunction } from 'ajv/dist/2020 .js' ;
22import addFormats from 'ajv-formats' ;
33import {
44 ApplyRequestDataSchema ,
@@ -14,32 +14,33 @@ import {
1414 ValidateRequestDataSchema ,
1515 ValidateResponseDataSchema
1616} from 'codify-schemas' ;
17- import Ajv2020 , { SchemaObject , ValidateFunction } from 'ajv/dist/2020.js' ;
17+
1818import { SudoError } from '../entities/errors.js' ;
19+ import { Plugin } from '../entities/plugin.js' ;
1920
20- const SupportedRequests : Record < string , { requestValidator : SchemaObject ; responseValidator : SchemaObject ; handler : ( plugin : Plugin , data : any ) => Promise < unknown > } > = {
21+ const SupportedRequests : Record < string , { handler : ( plugin : Plugin , data : any ) => Promise < unknown > ; requestValidator : SchemaObject ; responseValidator : SchemaObject } > = {
22+ 'apply' : {
23+ async handler ( plugin : Plugin , data : any ) {
24+ await plugin . apply ( data ) ;
25+ return null ;
26+ } ,
27+ requestValidator : ApplyRequestDataSchema ,
28+ responseValidator : ApplyResponseDataSchema
29+ } ,
2130 'initialize' : {
31+ handler : async ( plugin : Plugin ) => plugin . initialize ( ) ,
2232 requestValidator : InitializeRequestDataSchema ,
23- responseValidator : InitializeResponseDataSchema ,
24- handler : async ( plugin : Plugin ) => plugin . initialize ( )
25- } ,
26- 'validate' : {
27- requestValidator : ValidateRequestDataSchema ,
28- responseValidator : ValidateResponseDataSchema ,
29- handler : async ( plugin : Plugin , data : any ) => plugin . validate ( data )
33+ responseValidator : InitializeResponseDataSchema
3034 } ,
3135 'plan' : {
36+ handler : async ( plugin : Plugin , data : any ) => plugin . plan ( data ) ,
3237 requestValidator : PlanRequestDataSchema ,
33- responseValidator : PlanResponseDataSchema ,
34- handler : async ( plugin : Plugin , data : any ) => plugin . plan ( data )
38+ responseValidator : PlanResponseDataSchema
3539 } ,
36- 'apply' : {
37- requestValidator : ApplyRequestDataSchema ,
38- responseValidator : ApplyResponseDataSchema ,
39- handler : async ( plugin : Plugin , data : any ) => {
40- await plugin . apply ( data ) ;
41- return null ;
42- }
40+ 'validate' : {
41+ handler : async ( plugin : Plugin , data : any ) => plugin . validate ( data ) ,
42+ requestValidator : ValidateRequestDataSchema ,
43+ responseValidator : ValidateResponseDataSchema
4344 }
4445}
4546
@@ -51,7 +52,7 @@ export class MessageHandler {
5152 private responseValidators : Map < string , ValidateFunction > ;
5253
5354 constructor ( plugin : Plugin ) {
54- this . ajv = new Ajv2020 . default ( { strict : true } ) ;
55+ this . ajv = new Ajv2020 . default ( { strict : true , strictRequired : false } ) ;
5556 addFormats . default ( this . ajv ) ;
5657 this . ajv . addSchema ( ResourceSchema ) ;
5758 this . plugin = plugin ;
@@ -91,12 +92,12 @@ export class MessageHandler {
9192
9293 process . send ! ( {
9394 cmd : message . cmd + '_Response' ,
94- status : MessageStatus . SUCCESS ,
9595 data : result ,
96+ status : MessageStatus . SUCCESS ,
9697 } )
9798
98- } catch ( e : unknown ) {
99- this . handleErrors ( message , e as Error ) ;
99+ } catch ( error : unknown ) {
100+ this . handleErrors ( message , error as Error ) ;
100101 }
101102 }
102103
@@ -119,17 +120,17 @@ export class MessageHandler {
119120 if ( e instanceof SudoError ) {
120121 return process . send ?.( {
121122 cmd,
122- status : MessageStatus . ERROR ,
123123 data : `Plugin: '${ this . plugin . name } '. Forbidden usage of sudo for command '${ e . command } '. Please contact the plugin developer to fix this.` ,
124+ status : MessageStatus . ERROR ,
124125 } )
125126 }
126127
127128 const isDebug = process . env . DEBUG ?. includes ( '*' ) ?? false ;
128129
129130 process . send ?.( {
130131 cmd,
131- status : MessageStatus . ERROR ,
132132 data : isDebug ? e . stack : e . message ,
133+ status : MessageStatus . ERROR ,
133134 } )
134135 }
135136}
0 commit comments