@@ -3,7 +3,8 @@ import {ChannelCredentials} from "@grpc/grpc-js";
33import { RpcOptions } from "@protobuf-ts/runtime-rpc" ;
44import {
55 ActionSdk , HerculesActionConfigurationDefinition ,
6- HerculesActionProjectConfiguration , HerculesFunctionContext , SdkState , RuntimeErrorException
6+ HerculesActionProjectConfiguration , HerculesFunctionContext , SdkState , RuntimeErrorException ,
7+ HerculesRegisterRuntimeFunctionParameter , HerculesRegisterFunctionDefinition
78} from "./types.js" ;
89import {
910 ActionTransferServiceClient ,
@@ -52,6 +53,73 @@ const createSdk = (config: ActionSdk["config"], configDefinitions?: HerculesActi
5253 fullyConnected : false
5354 }
5455
56+ const registerFunctionDefinitions = async ( ...functionDefinitions : Array < HerculesRegisterFunctionDefinition > ) => {
57+ for ( const functionDefinition of functionDefinitions ) {
58+ state . functions . push ( {
59+ identifier : functionDefinition . runtimeName ,
60+ definition : {
61+ displayMessage : functionDefinition . displayMessage || [ ] ,
62+ name : functionDefinition . name || [ ] ,
63+ documentation : functionDefinition . documentation || [ ] ,
64+ description : functionDefinition . description || [ ] ,
65+ deprecationMessage : functionDefinition . deprecationMessage || [ ] ,
66+ displayIcon : functionDefinition . displayIcon || "" ,
67+ alias : functionDefinition . alias || [ ] ,
68+ linkedDataTypeIdentifiers : functionDefinition . linkedDataTypes || [ ] ,
69+ definitionSource : "action" ,
70+ version : functionDefinition . version || config . version ,
71+ runtimeName : functionDefinition . runtimeName ,
72+ parameterDefinitions : ( functionDefinition . parameters || [ ] ) . map ( param => ( {
73+ runtimeName : param . runtimeName ,
74+ name : param . name || [ ] ,
75+ description : param . description || [ ] ,
76+ documentation : param . documentation || [ ] ,
77+ defaultValue : constructValue ( param . defaultValue || null ) ,
78+ hidden : param . hidden || false ,
79+ optional : param . hidden || false ,
80+ runtimeDefinitionName : param . runtimeDefinitionName || param . runtimeName
81+ } ) ) ,
82+ signature : functionDefinition . signature ,
83+ throwsError : functionDefinition . throwsError || false ,
84+ runtimeDefinitionName : functionDefinition . runtimeDefinitionName
85+ }
86+ } ) ;
87+ }
88+ return Promise . resolve ( )
89+ } ;
90+ const registerRuntimeFunctionDefinitions = async ( ...runtimeFunctionDefinitions : HerculesRegisterRuntimeFunctionParameter [ ] ) => {
91+ for ( const registeredFunction of runtimeFunctionDefinitions ) {
92+ const handler = registeredFunction . handler ;
93+ const functionDefinition = registeredFunction . definition ;
94+ state . runtimeFunctions . push ( {
95+ identifier : functionDefinition . runtimeName ,
96+ definition : {
97+ displayMessage : functionDefinition . displayMessage || [ ] ,
98+ name : functionDefinition . name || [ ] ,
99+ documentation : functionDefinition . documentation || [ ] ,
100+ description : functionDefinition . description || [ ] ,
101+ deprecationMessage : functionDefinition . deprecationMessage || [ ] ,
102+ displayIcon : functionDefinition . displayIcon || "" ,
103+ alias : functionDefinition . alias || [ ] ,
104+ linkedDataTypeIdentifiers : functionDefinition . linkedDataTypes || [ ] ,
105+ definitionSource : "action" ,
106+ version : functionDefinition . version || config . version ,
107+ runtimeName : functionDefinition . runtimeName ,
108+ runtimeParameterDefinitions : ( functionDefinition . parameters || [ ] ) . map ( param => ( {
109+ runtimeName : param . runtimeName ,
110+ name : param . name || [ ] ,
111+ description : param . description || [ ] ,
112+ documentation : param . documentation || [ ] ,
113+ defaultValue : constructValue ( param . defaultValue || null ) ,
114+ } ) ) ,
115+ signature : functionDefinition . signature ,
116+ throwsError : functionDefinition . throwsError || false ,
117+ } ,
118+ handler : handler ,
119+ } ) ;
120+ }
121+ return Promise . resolve ( )
122+ } ;
55123 return {
56124 fullyConnected ( ) : boolean {
57125 return state . fullyConnected ;
@@ -140,69 +208,29 @@ const createSdk = (config: ActionSdk["config"], configDefinitions?: HerculesActi
140208 } )
141209 return Promise . resolve ( )
142210 } ,
143- registerRuntimeFunctionDefinitions : async ( ...runtimeFunctionDefinitions ) => {
144- for ( const registeredFunction of runtimeFunctionDefinitions ) {
145- const handler = registeredFunction . handler ;
146- const functionDefinition = registeredFunction . definition ;
147- state . runtimeFunctions . push ( {
148- identifier : functionDefinition . runtimeName ,
149- definition : {
150- displayMessage : functionDefinition . displayMessage || [ ] ,
151- name : functionDefinition . name || [ ] ,
152- documentation : functionDefinition . documentation || [ ] ,
153- description : functionDefinition . description || [ ] ,
154- deprecationMessage : functionDefinition . deprecationMessage || [ ] ,
155- displayIcon : functionDefinition . displayIcon || "" ,
156- alias : functionDefinition . alias || [ ] ,
157- linkedDataTypeIdentifiers : functionDefinition . linkedDataTypes || [ ] ,
158- definitionSource : "action" ,
159- version : functionDefinition . version || config . version ,
160- runtimeName : functionDefinition . runtimeName ,
161- runtimeParameterDefinitions : ( functionDefinition . parameters || [ ] ) . map ( param => ( {
162- runtimeName : param . runtimeName ,
163- name : param . name || [ ] ,
164- description : param . description || [ ] ,
165- documentation : param . documentation || [ ] ,
166- defaultValue : constructValue ( param . defaultValue || null ) ,
167- } ) ) ,
168- signature : functionDefinition . signature ,
169- throwsError : functionDefinition . throwsError || false ,
170- } ,
171- handler : handler ,
172- } ) ;
173- }
174- return Promise . resolve ( )
175- } ,
176- registerFunctionDefinitions : async ( ...functionDefinitions ) => {
177- for ( const functionDefinition of functionDefinitions ) {
178- state . functions . push ( {
179- identifier : functionDefinition . runtimeName ,
180- definition : {
181- displayMessage : functionDefinition . displayMessage || [ ] ,
182- name : functionDefinition . name || [ ] ,
183- documentation : functionDefinition . documentation || [ ] ,
184- description : functionDefinition . description || [ ] ,
185- deprecationMessage : functionDefinition . deprecationMessage || [ ] ,
186- displayIcon : functionDefinition . displayIcon || "" ,
187- alias : functionDefinition . alias || [ ] ,
188- linkedDataTypeIdentifiers : functionDefinition . linkedDataTypes || [ ] ,
189- definitionSource : "action" ,
190- version : functionDefinition . version || config . version ,
191- runtimeName : functionDefinition . runtimeName ,
192- parameterDefinitions : ( functionDefinition . parameters || [ ] ) . map ( param => ( {
193- runtimeName : param . runtimeName ,
194- name : param . name || [ ] ,
195- description : param . description || [ ] ,
196- documentation : param . documentation || [ ] ,
197- defaultValue : constructValue ( param . defaultValue || null ) ,
198- } ) ) ,
199- signature : functionDefinition . signature ,
200- throwsError : functionDefinition . throwsError || false ,
201- }
202- } ) ;
203- }
204- return Promise . resolve ( )
211+ registerRuntimeFunctionDefinitionsAndFunctionDefinitions : async ( ...runtimeFunctionDefinitions ) => {
212+ await Promise . all ( runtimeFunctionDefinitions . map ( async ( register ) => {
213+ await Promise . all ( [
214+ registerRuntimeFunctionDefinitions (
215+ register
216+ ) ,
217+ registerFunctionDefinitions (
218+ {
219+ ...register . definition ,
220+ runtimeDefinitionName : register . definition . runtimeName ,
221+ parameters : register . definition . parameters ?. map ( param => {
222+ return {
223+ ...param ,
224+ runtimeDefinitionName : param . runtimeName ,
225+ }
226+ } )
227+ }
228+ )
229+ ] )
230+ } ) ) ;
205231 } ,
232+ registerRuntimeFunctionDefinitions : registerRuntimeFunctionDefinitions ,
233+ registerFunctionDefinitions : registerFunctionDefinitions ,
206234 dispatchEvent : async ( eventType , projectId , payload ) => {
207235 if ( ! state . stream ) {
208236 return Promise . reject ( "SDK is not connected. Call connect() before dispatching events." ) ;
0 commit comments