Skip to content

Commit b2a8bd7

Browse files
authored
Merge pull request #17 from code0-tech/update-tucana-again
Update to tucana 0.0.67
2 parents 63f22c0 + 82f9fd9 commit b2a8bd7

6 files changed

Lines changed: 135 additions & 74 deletions

File tree

ts/examples/simple-example-ts/index.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ sdk.registerDataTypes({
2323
type: "any",
2424
})
2525

26-
sdk.registerFunctionDefinitions({
26+
sdk.registerRuntimeFunctionDefinitionsAndFunctionDefinitions({
2727
definition: {
2828
signature: "(n: NUMBER) => NUMBER",
2929
linkedDataTypes: ["NUMBER"],
@@ -55,8 +55,9 @@ sdk.registerFunctionDefinitions({
5555

5656
sdk.registerFlowTypes(
5757
{
58+
signature: "(): TEXT",
59+
linkedDataTypes: ["TEXT"],
5860
editable: false,
59-
inputType: "STRING",
6061
identifier: "test_flow",
6162
}
6263
)

ts/examples/simple-example-ts/package-lock.json

Lines changed: 8 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ts/package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ts/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"license": "ISC",
3131
"type": "module",
3232
"dependencies": {
33-
"@code0-tech/tucana": "^0.0.66",
33+
"@code0-tech/tucana": "^0.0.67",
3434
"@grpc/grpc-js": "^1.14.3",
3535
"@protobuf-ts/grpc-backend": "^2.11.1",
3636
"@protobuf-ts/grpc-transport": "^2.11.1",

ts/src/action_sdk.ts

Lines changed: 91 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import {ChannelCredentials} from "@grpc/grpc-js";
33
import {RpcOptions} from "@protobuf-ts/runtime-rpc";
44
import {
55
ActionSdk, HerculesActionConfigurationDefinition,
6-
HerculesActionProjectConfiguration, HerculesFunctionContext, SdkState, RuntimeErrorException
6+
HerculesActionProjectConfiguration, HerculesFunctionContext, SdkState, RuntimeErrorException,
7+
HerculesRegisterRuntimeFunctionParameter, HerculesRegisterFunctionDefinition
78
} from "./types.js";
89
import {
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.");

ts/src/types.ts

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import {PlainValue} from "@code0-tech/tucana/helpers";
1212
import {ActionTransferServiceClient, TransferRequest, TransferResponse} from "@code0-tech/tucana/aquila";
1313

1414

15-
1615
export interface HerculesFunctionContext {
1716
projectId: number | bigint,
1817
executionId: string,
@@ -65,6 +64,8 @@ export interface HerculesRuntimeFunctionDefinition {
6564
name?: Translation[],
6665
description?: Translation[],
6766
documentation?: Translation[],
67+
hidden?: boolean,
68+
optional?: boolean
6869
}[],
6970
signature: string,
7071
throwsError?: boolean,
@@ -79,7 +80,31 @@ export interface HerculesRuntimeFunctionDefinition {
7980
displayIcon?: string,
8081
}
8182

82-
export type HerculesRegisterFunctionDefinition = HerculesRuntimeFunctionDefinition
83+
export interface HerculesRegisterFunctionDefinition {
84+
runtimeDefinitionName: string,
85+
runtimeName: string,
86+
parameters?: {
87+
runtimeName: string,
88+
defaultValue?: PlainValue,
89+
name?: Translation[],
90+
description?: Translation[],
91+
documentation?: Translation[],
92+
hidden?: boolean,
93+
optional?: boolean,
94+
runtimeDefinitionName?: string
95+
}[],
96+
signature: string,
97+
throwsError?: boolean,
98+
name?: Translation[],
99+
description?: Translation[],
100+
documentation?: Translation[],
101+
deprecationMessage?: Translation[],
102+
displayMessage?: Translation[],
103+
alias?: Translation[],
104+
linkedDataTypes?: string[],
105+
version?: string,
106+
displayIcon?: string,
107+
}
83108

84109
export interface HerculesActionProjectConfiguration {
85110
projectId: number | bigint,
@@ -120,6 +145,7 @@ export interface ActionSdk {
120145
registerConfigDefinitions: (...actionConfigurations: Array<HerculesActionConfigurationDefinition>) => Promise<void>,
121146
registerDataTypes: (...dataType: Array<HerculesDataType>) => Promise<void>,
122147
registerFlowTypes: (...flowTypes: Array<HerculesFlowType>) => Promise<void>,
148+
registerRuntimeFunctionDefinitionsAndFunctionDefinitions: (...runtimeFunctionDefinitions: Array<HerculesRegisterRuntimeFunctionParameter>) => Promise<void>,
123149
registerFunctionDefinitions: (...functionDefinitions: Array<HerculesRegisterFunctionDefinition>) => Promise<void>,
124150
registerRuntimeFunctionDefinitions: (...runtimeFunctionDefinitions: Array<HerculesRegisterRuntimeFunctionParameter>) => Promise<void>,
125151
dispatchEvent: (eventType: string, projectId: number | bigint, payload: PlainValue) => Promise<void>,

0 commit comments

Comments
 (0)