@blokjs/trigger-grpc 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +8 -0
- package/CHANGELOG.md +143 -0
- package/README.md +25 -0
- package/__tests__/unit/GRpcTrigger.test.ts +313 -0
- package/__tests__/unit/GrpcClient.test.ts +138 -0
- package/__tests__/unit/GrpcServer.test.ts +127 -0
- package/__tests__/unit/MessageDecode.test.ts +314 -0
- package/__tests__/unit/NanoSDK.test.ts +162 -0
- package/__tests__/unit/Nodes.test.ts +16 -0
- package/buf.gen.yaml +11 -0
- package/buf.yaml +9 -0
- package/dist/GRpcTrigger.d.ts +18 -0
- package/dist/GRpcTrigger.js +219 -0
- package/dist/GRpcTrigger.js.map +1 -0
- package/dist/GrpcClient.d.ts +28 -0
- package/dist/GrpcClient.js +72 -0
- package/dist/GrpcClient.js.map +1 -0
- package/dist/GrpcServer.d.ts +14 -0
- package/dist/GrpcServer.js +54 -0
- package/dist/GrpcServer.js.map +1 -0
- package/dist/MessageDecode.d.ts +12 -0
- package/dist/MessageDecode.js +133 -0
- package/dist/MessageDecode.js.map +1 -0
- package/dist/NanoSDK.d.ts +13 -0
- package/dist/NanoSDK.js +169 -0
- package/dist/NanoSDK.js.map +1 -0
- package/dist/Nodes.d.ts +5 -0
- package/dist/Nodes.js +13 -0
- package/dist/Nodes.js.map +1 -0
- package/dist/Workflows.d.ts +3 -0
- package/dist/Workflows.js +5 -0
- package/dist/Workflows.js.map +1 -0
- package/dist/gen/workflow_pb.d.ts +113 -0
- package/dist/gen/workflow_pb.js +76 -0
- package/dist/gen/workflow_pb.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/opentelemetry_metrics.d.ts +1 -0
- package/dist/opentelemetry_metrics.js +21 -0
- package/dist/opentelemetry_metrics.js.map +1 -0
- package/dist/proto/workflow.proto +33 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.js +12 -0
- package/dist/server.js.map +1 -0
- package/dist/types/Message.d.ts +0 -0
- package/dist/types/Message.js +2 -0
- package/dist/types/Message.js.map +1 -0
- package/dist/types/RuntimeWorkflow.d.ts +5 -0
- package/dist/types/RuntimeWorkflow.js +3 -0
- package/dist/types/RuntimeWorkflow.js.map +1 -0
- package/dist/types/Workflows.d.ts +5 -0
- package/dist/types/Workflows.js +3 -0
- package/dist/types/Workflows.js.map +1 -0
- package/localhost+2-key.pem +28 -0
- package/localhost+2.pem +27 -0
- package/package.json +60 -0
- package/proto/workflow.proto +33 -0
- package/src/GRpcTrigger.ts +252 -0
- package/src/GrpcClient.ts +87 -0
- package/src/GrpcServer.ts +63 -0
- package/src/MessageDecode.ts +142 -0
- package/src/NanoSDK.ts +146 -0
- package/src/Nodes.ts +12 -0
- package/src/Workflows.ts +5 -0
- package/src/gen/workflow_pb.ts +142 -0
- package/src/index.ts +22 -0
- package/src/opentelemetry_metrics.ts +26 -0
- package/src/server.ts +8 -0
- package/src/types/Message.ts +0 -0
- package/src/types/RuntimeWorkflow.ts +7 -0
- package/src/types/Workflows.ts +7 -0
- package/tsconfig.json +34 -0
- package/vitest.config.ts +29 -0
- package/workflows/countries.json +31 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const runner_1 = require("@blok/runner");
|
|
7
|
+
const shared_1 = require("@blok/shared");
|
|
8
|
+
const api_1 = require("@opentelemetry/api");
|
|
9
|
+
const fastify_1 = __importDefault(require("fastify"));
|
|
10
|
+
const uuid_1 = require("uuid");
|
|
11
|
+
const MessageDecode_1 = __importDefault(require("./MessageDecode"));
|
|
12
|
+
const Nodes_1 = __importDefault(require("./Nodes"));
|
|
13
|
+
const Workflows_1 = __importDefault(require("./Workflows"));
|
|
14
|
+
const helper_1 = require("@blok/helper");
|
|
15
|
+
const workflow_pb_1 = require("./gen/workflow_pb");
|
|
16
|
+
var NodeTypes;
|
|
17
|
+
(function (NodeTypes) {
|
|
18
|
+
NodeTypes["MODULE"] = "module";
|
|
19
|
+
NodeTypes["LOCAL"] = "local";
|
|
20
|
+
NodeTypes["PYTHON3"] = "runtime.python3";
|
|
21
|
+
})(NodeTypes || (NodeTypes = {}));
|
|
22
|
+
class GRpcTrigger extends runner_1.TriggerBase {
|
|
23
|
+
server = (0, fastify_1.default)({
|
|
24
|
+
http2: true,
|
|
25
|
+
// https: {
|
|
26
|
+
// key: readFileSync("localhost+2-key.pem", "utf8"),
|
|
27
|
+
// cert: readFileSync("localhost+2.pem", "utf8"),
|
|
28
|
+
// }
|
|
29
|
+
});
|
|
30
|
+
nodeMap = {};
|
|
31
|
+
tracer = api_1.trace.getTracer(process.env.PROJECT_NAME || "trigger-grpc-workflow", process.env.PROJECT_VERSION || "0.0.1");
|
|
32
|
+
logger = new runner_1.DefaultLogger();
|
|
33
|
+
constructor() {
|
|
34
|
+
super();
|
|
35
|
+
this.loadNodes();
|
|
36
|
+
this.loadWorkflows();
|
|
37
|
+
}
|
|
38
|
+
getApp() {
|
|
39
|
+
return this.server;
|
|
40
|
+
}
|
|
41
|
+
async listen() {
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
44
|
+
loadNodes() {
|
|
45
|
+
this.nodeMap.nodes = new runner_1.NodeMap();
|
|
46
|
+
const nodeKeys = Object.keys(Nodes_1.default);
|
|
47
|
+
for (const key of nodeKeys) {
|
|
48
|
+
this.nodeMap.nodes.addNode(key, Nodes_1.default[key]);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
loadWorkflows() {
|
|
52
|
+
this.nodeMap.workflows = Workflows_1.default;
|
|
53
|
+
}
|
|
54
|
+
processRequest(router, trigger) {
|
|
55
|
+
router.service(workflow_pb_1.WorkflowService, {
|
|
56
|
+
executeWorkflow: (request) => trigger.executeWorkflow(request),
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
async executeWorkflow(request) {
|
|
60
|
+
const start = performance.now();
|
|
61
|
+
const coder = new MessageDecode_1.default();
|
|
62
|
+
let name = request.Name;
|
|
63
|
+
const messageContext = coder.requestDecode(request);
|
|
64
|
+
const runtimeWorkflow = messageContext;
|
|
65
|
+
const id = messageContext.request.query?.requestId || (0, uuid_1.v4)();
|
|
66
|
+
let remoteNodeExecution = false;
|
|
67
|
+
const defaultMeter = api_1.metrics.getMeter("default");
|
|
68
|
+
const workflow_runner_errors = defaultMeter.createCounter("workflow_errors", {
|
|
69
|
+
description: "Workflow runner errors",
|
|
70
|
+
});
|
|
71
|
+
return await this.tracer.startActiveSpan(`${name}`, async (span) => {
|
|
72
|
+
try {
|
|
73
|
+
if (runtimeWorkflow !== undefined) {
|
|
74
|
+
const workflowModel = runtimeWorkflow.workflow;
|
|
75
|
+
const node_type = workflowModel.steps[0].type;
|
|
76
|
+
let set_node_type = NodeTypes.MODULE;
|
|
77
|
+
switch (node_type) {
|
|
78
|
+
case "runtime.python3":
|
|
79
|
+
set_node_type = NodeTypes.PYTHON3;
|
|
80
|
+
break;
|
|
81
|
+
case "local":
|
|
82
|
+
set_node_type = NodeTypes.LOCAL;
|
|
83
|
+
break;
|
|
84
|
+
default:
|
|
85
|
+
set_node_type = NodeTypes.MODULE;
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
const trigger = Object.keys(workflowModel.trigger)[0];
|
|
89
|
+
const trigger_config = workflowModel.trigger[trigger] || {};
|
|
90
|
+
const step = (0, helper_1.Workflow)({
|
|
91
|
+
name: `Remote Node: ${name}`,
|
|
92
|
+
version: "1.0.0",
|
|
93
|
+
description: "Remote Node",
|
|
94
|
+
})
|
|
95
|
+
.addTrigger(trigger || "grpc", trigger_config)
|
|
96
|
+
.addStep({
|
|
97
|
+
name: "node",
|
|
98
|
+
node: name,
|
|
99
|
+
type: set_node_type,
|
|
100
|
+
inputs: workflowModel.nodes.node.inputs,
|
|
101
|
+
});
|
|
102
|
+
this.nodeMap.workflows[id] = step;
|
|
103
|
+
name = id;
|
|
104
|
+
remoteNodeExecution = true;
|
|
105
|
+
}
|
|
106
|
+
await this.configuration.init(name, this.nodeMap);
|
|
107
|
+
let ctx = this.createContext(undefined, name, id);
|
|
108
|
+
ctx.request = messageContext.request;
|
|
109
|
+
ctx.logger.log(`Workflow: ${name}, Version: ${this.configuration.version}`);
|
|
110
|
+
const response = await this.run(ctx);
|
|
111
|
+
ctx = response.ctx;
|
|
112
|
+
const average = response.metrics;
|
|
113
|
+
if (ctx.response.contentType === undefined || ctx.response.contentType === "")
|
|
114
|
+
ctx.response.contentType = "application/json";
|
|
115
|
+
const end = performance.now();
|
|
116
|
+
ctx.logger.log(`Completed in ${(end - start).toFixed(2)}ms`);
|
|
117
|
+
span.setAttribute("success", true);
|
|
118
|
+
span.setAttribute("Content-Type", ctx.response.contentType);
|
|
119
|
+
span.setAttribute("workflow_request_id", `${ctx.id}`);
|
|
120
|
+
span.setAttribute("workflow_elapsed_time", `${end - start}`);
|
|
121
|
+
span.setAttribute("workflow_version", `${this.configuration.version}`);
|
|
122
|
+
span.setAttribute("workflow_name", `${this.configuration.name}`);
|
|
123
|
+
span.setAttribute("workflow_memory_avg_mb", `${average.memory.total}`);
|
|
124
|
+
span.setAttribute("workflow_memory_min_mb", `${average.memory.min}`);
|
|
125
|
+
span.setAttribute("workflow_memory_max_mb", `${average.memory.max}`);
|
|
126
|
+
span.setAttribute("workflow_cpu_percentage", `${average.cpu.average}`);
|
|
127
|
+
span.setAttribute("workflow_cpu_total", `${average.cpu.total}`);
|
|
128
|
+
span.setAttribute("workflow_cpu_usage", `${average.cpu.usage}`);
|
|
129
|
+
span.setAttribute("workflow_cpu_model", `${average.cpu.model}`);
|
|
130
|
+
span.setStatus({ code: api_1.SpanStatusCode.OK });
|
|
131
|
+
return coder.responseEncode(ctx, request.Encoding, request.Type);
|
|
132
|
+
}
|
|
133
|
+
catch (e) {
|
|
134
|
+
span.setAttribute("success", false);
|
|
135
|
+
span.setAttribute("workflow_request_id", `${id}`);
|
|
136
|
+
span.recordException(e);
|
|
137
|
+
let message = {};
|
|
138
|
+
const base64Key = workflow_pb_1.MessageEncoding[workflow_pb_1.MessageEncoding.BASE64];
|
|
139
|
+
const textKey = workflow_pb_1.MessageType[workflow_pb_1.MessageType.TEXT];
|
|
140
|
+
const jsonKey = workflow_pb_1.MessageType[workflow_pb_1.MessageType.JSON];
|
|
141
|
+
if (e instanceof shared_1.GlobalError) {
|
|
142
|
+
const error_context = e;
|
|
143
|
+
if (error_context.context.message === "{}" && error_context.context.json instanceof DOMException) {
|
|
144
|
+
workflow_runner_errors.add(1, {
|
|
145
|
+
env: process.env.NODE_ENV,
|
|
146
|
+
workflow_version: `${this.configuration.version || "unknown"}`,
|
|
147
|
+
workflow_name: `${name || this.configuration.name}`,
|
|
148
|
+
});
|
|
149
|
+
span.setStatus({
|
|
150
|
+
code: api_1.SpanStatusCode.ERROR,
|
|
151
|
+
message: error_context.context.json.toString(),
|
|
152
|
+
});
|
|
153
|
+
this.logger.error(`${error_context.context.json.toString()}`);
|
|
154
|
+
message = {
|
|
155
|
+
Message: coder.responseErrorEncode(error_context.context.json.toString(), base64Key, textKey),
|
|
156
|
+
Encoding: base64Key,
|
|
157
|
+
Type: textKey,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
if (error_context.context.code === undefined)
|
|
162
|
+
error_context.setCode(500);
|
|
163
|
+
if (error_context.hasJson()) {
|
|
164
|
+
workflow_runner_errors.add(1, {
|
|
165
|
+
env: process.env.NODE_ENV,
|
|
166
|
+
workflow_version: `${this.configuration.version || "unknown"}`,
|
|
167
|
+
workflow_name: `${name || this.configuration.name}`,
|
|
168
|
+
});
|
|
169
|
+
span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: JSON.stringify(error_context.context.json) });
|
|
170
|
+
this.logger.error(`${JSON.stringify(error_context.context.json)}`);
|
|
171
|
+
message = {
|
|
172
|
+
Message: coder.responseErrorEncode(JSON.stringify(error_context.context.json), base64Key, textKey),
|
|
173
|
+
Encoding: base64Key,
|
|
174
|
+
Type: jsonKey,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
workflow_runner_errors.add(1, {
|
|
179
|
+
env: process.env.NODE_ENV,
|
|
180
|
+
workflow_version: `${this.configuration.version || "unknown"}`,
|
|
181
|
+
workflow_name: `${name || this.configuration.name}`,
|
|
182
|
+
});
|
|
183
|
+
span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: error_context.message });
|
|
184
|
+
this.logger.error(`${error_context.message}`, error_context.stack?.replace(/\n/g, " "));
|
|
185
|
+
message = {
|
|
186
|
+
Message: coder.responseErrorEncode(error_context.message, base64Key, textKey),
|
|
187
|
+
Encoding: workflow_pb_1.MessageEncoding[workflow_pb_1.MessageEncoding.BASE64],
|
|
188
|
+
Type: textKey,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
workflow_runner_errors.add(1, {
|
|
195
|
+
env: process.env.NODE_ENV,
|
|
196
|
+
workflow_version: `${this.configuration.version || "unknown"}`,
|
|
197
|
+
workflow_name: `${name || this.configuration.name}`,
|
|
198
|
+
});
|
|
199
|
+
span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: e.message });
|
|
200
|
+
this.logger.error(`${e.message}`, `${e.stack?.replace(/\n/g, " ")}`);
|
|
201
|
+
message = {
|
|
202
|
+
Message: coder.responseErrorEncode(e.message, base64Key, textKey),
|
|
203
|
+
Encoding: base64Key,
|
|
204
|
+
Type: textKey,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
return message;
|
|
208
|
+
}
|
|
209
|
+
finally {
|
|
210
|
+
if (remoteNodeExecution) {
|
|
211
|
+
delete this.nodeMap.workflows[id];
|
|
212
|
+
}
|
|
213
|
+
span.end();
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
exports.default = GRpcTrigger;
|
|
219
|
+
//# sourceMappingURL=GRpcTrigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GRpcTrigger.js","sourceRoot":"","sources":["../src/GRpcTrigger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type Transport } from "@connectrpc/connect";
|
|
2
|
+
import { type WorkflowRequest, type WorkflowResponse } from "./gen/workflow_pb";
|
|
3
|
+
export type RpcOptions = {
|
|
4
|
+
host: string;
|
|
5
|
+
port: number;
|
|
6
|
+
protocol: string;
|
|
7
|
+
httpVersion: HttpVersionEnum;
|
|
8
|
+
transport: TransportEnum;
|
|
9
|
+
};
|
|
10
|
+
export type CallOptions = {
|
|
11
|
+
headers: Record<string, string>;
|
|
12
|
+
};
|
|
13
|
+
export declare enum TransportEnum {
|
|
14
|
+
GRPC = "grpc",
|
|
15
|
+
GRPC_WEB = "grpc-web",
|
|
16
|
+
CONNECT = "connect"
|
|
17
|
+
}
|
|
18
|
+
export declare enum HttpVersionEnum {
|
|
19
|
+
HTTP1 = "1.1",
|
|
20
|
+
HTTP2 = "2"
|
|
21
|
+
}
|
|
22
|
+
export type { WorkflowRequest, WorkflowResponse };
|
|
23
|
+
export default class GrpcClient {
|
|
24
|
+
protected opts: RpcOptions;
|
|
25
|
+
constructor(options: RpcOptions);
|
|
26
|
+
call(message: WorkflowRequest, opts?: CallOptions): Promise<WorkflowResponse>;
|
|
27
|
+
transport(): Transport;
|
|
28
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpVersionEnum = exports.TransportEnum = void 0;
|
|
4
|
+
const connect_1 = require("@connectrpc/connect");
|
|
5
|
+
const connect_node_1 = require("@connectrpc/connect-node");
|
|
6
|
+
const connect_node_2 = require("@connectrpc/connect-node");
|
|
7
|
+
const connect_node_3 = require("@connectrpc/connect-node");
|
|
8
|
+
const workflow_pb_1 = require("./gen/workflow_pb");
|
|
9
|
+
var TransportEnum;
|
|
10
|
+
(function (TransportEnum) {
|
|
11
|
+
TransportEnum["GRPC"] = "grpc";
|
|
12
|
+
TransportEnum["GRPC_WEB"] = "grpc-web";
|
|
13
|
+
TransportEnum["CONNECT"] = "connect";
|
|
14
|
+
})(TransportEnum || (exports.TransportEnum = TransportEnum = {}));
|
|
15
|
+
var HttpVersionEnum;
|
|
16
|
+
(function (HttpVersionEnum) {
|
|
17
|
+
HttpVersionEnum["HTTP1"] = "1.1";
|
|
18
|
+
HttpVersionEnum["HTTP2"] = "2";
|
|
19
|
+
})(HttpVersionEnum || (exports.HttpVersionEnum = HttpVersionEnum = {}));
|
|
20
|
+
class GrpcClient {
|
|
21
|
+
opts;
|
|
22
|
+
constructor(options) {
|
|
23
|
+
this.opts = options;
|
|
24
|
+
}
|
|
25
|
+
async call(message, opts) {
|
|
26
|
+
const transport = this.transport();
|
|
27
|
+
const client = (0, connect_1.createClient)(workflow_pb_1.WorkflowService, transport);
|
|
28
|
+
return await client.executeWorkflow(message, opts);
|
|
29
|
+
}
|
|
30
|
+
transport() {
|
|
31
|
+
switch (this.opts.transport) {
|
|
32
|
+
case TransportEnum.GRPC:
|
|
33
|
+
return (0, connect_node_1.createGrpcTransport)({
|
|
34
|
+
baseUrl: `${this.opts.protocol}://${this.opts.host}:${this.opts.port}/`,
|
|
35
|
+
interceptors: [],
|
|
36
|
+
});
|
|
37
|
+
case TransportEnum.GRPC_WEB:
|
|
38
|
+
return (0, connect_node_3.createGrpcWebTransport)({
|
|
39
|
+
baseUrl: `${this.opts.protocol}://${this.opts.host}:${this.opts.port}/`,
|
|
40
|
+
httpVersion: this.opts.httpVersion,
|
|
41
|
+
interceptors: [],
|
|
42
|
+
});
|
|
43
|
+
case TransportEnum.CONNECT:
|
|
44
|
+
return (0, connect_node_2.createConnectTransport)({
|
|
45
|
+
baseUrl: `${this.opts.protocol}://${this.opts.host}:${this.opts.port}/`,
|
|
46
|
+
httpVersion: this.opts.httpVersion,
|
|
47
|
+
interceptors: [],
|
|
48
|
+
});
|
|
49
|
+
default:
|
|
50
|
+
throw new Error("Invalid transport type");
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.default = GrpcClient;
|
|
55
|
+
// let client = new GrpcClient({
|
|
56
|
+
// host: "localhost",
|
|
57
|
+
// port: 8433,
|
|
58
|
+
// protocol: "http",
|
|
59
|
+
// httpVersion: HttpVersionEnum.HTTP2,
|
|
60
|
+
// transport: TransportEnum.GRPC,
|
|
61
|
+
// });
|
|
62
|
+
// client.call({
|
|
63
|
+
// "Name": "countries",
|
|
64
|
+
// "Message": "ewogICAgInJlcXVlc3QiOiB7CiAgICAgICAgImJvZHkiOiB7CiAgICAgICAgICAgICJjb3VudHJ5X25hbWUiOiAiQ2FuYWRhIgogICAgICAgIH0KICAgIH0KfQ==",
|
|
65
|
+
// "Encoding": "BASE64",
|
|
66
|
+
// "Type": "JSON"
|
|
67
|
+
// } as WorkflowRequest).then((response) => {
|
|
68
|
+
// console.log(response);
|
|
69
|
+
// }).catch((error) => {
|
|
70
|
+
// console.error(error);
|
|
71
|
+
// });
|
|
72
|
+
//# sourceMappingURL=GrpcClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrpcClient.js","sourceRoot":"","sources":["../src/GrpcClient.ts"],"names":[],"mappings":";;;AAAA,iDAAmE;AACnE,2DAA+D;AAC/D,2DAAkE;AAClE,2DAAkE;AAClE,mDAAiG;AAcjG,IAAY,aAIX;AAJD,WAAY,aAAa;IACxB,8BAAa,CAAA;IACb,sCAAqB,CAAA;IACrB,oCAAmB,CAAA;AACpB,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB;AAED,IAAY,eAGX;AAHD,WAAY,eAAe;IAC1B,gCAAa,CAAA;IACb,8BAAW,CAAA;AACZ,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B;AAID,MAAqB,UAAU;IACpB,IAAI,CAAa;IAE3B,YAAY,OAAmB;QAC9B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAwB,EAAE,IAAkB;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,IAAA,sBAAY,EAAC,6BAAe,EAAE,SAAS,CAAC,CAAC;QACxD,OAAO,MAAM,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,SAAS;QACR,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7B,KAAK,aAAa,CAAC,IAAI;gBACtB,OAAO,IAAA,kCAAmB,EAAC;oBAC1B,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG;oBACvE,YAAY,EAAE,EAAE;iBAChB,CAAC,CAAC;YACJ,KAAK,aAAa,CAAC,QAAQ;gBAC1B,OAAO,IAAA,qCAAsB,EAAC;oBAC7B,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG;oBACvE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;oBAClC,YAAY,EAAE,EAAE;iBAChB,CAAC,CAAC;YACJ,KAAK,aAAa,CAAC,OAAO;gBACzB,OAAO,IAAA,qCAAsB,EAAC;oBAC7B,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG;oBACvE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;oBAClC,YAAY,EAAE,EAAE;iBAChB,CAAC,CAAC;YACJ;gBACC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;IACF,CAAC;CACD;AApCD,6BAoCC;AAED,gCAAgC;AAChC,yBAAyB;AACzB,kBAAkB;AAClB,wBAAwB;AACxB,0CAA0C;AAC1C,qCAAqC;AACrC,MAAM;AAEN,gBAAgB;AAChB,2BAA2B;AAC3B,iJAAiJ;AACjJ,4BAA4B;AAC5B,qBAAqB;AACrB,6CAA6C;AAC7C,6BAA6B;AAC7B,wBAAwB;AACxB,4BAA4B;AAC5B,MAAM"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DefaultLogger } from "@blok/runner";
|
|
2
|
+
export type GrpcServerOptions = {
|
|
3
|
+
host: string;
|
|
4
|
+
port: number;
|
|
5
|
+
};
|
|
6
|
+
export default class GrpcServer {
|
|
7
|
+
protected opts: GrpcServerOptions;
|
|
8
|
+
protected tracer: import("@opentelemetry/api").Tracer;
|
|
9
|
+
protected app_cold_start: import("@opentelemetry/api").Gauge<import("@opentelemetry/api").Attributes>;
|
|
10
|
+
protected initializer: number;
|
|
11
|
+
protected logger: DefaultLogger;
|
|
12
|
+
constructor(opts: GrpcServerOptions);
|
|
13
|
+
start(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const connect_fastify_1 = require("@connectrpc/connect-fastify");
|
|
7
|
+
const runner_1 = require("@blok/runner");
|
|
8
|
+
const api_1 = require("@opentelemetry/api");
|
|
9
|
+
const GRpcTrigger_1 = __importDefault(require("./GRpcTrigger"));
|
|
10
|
+
class GrpcServer {
|
|
11
|
+
opts;
|
|
12
|
+
tracer = api_1.trace.getTracer(process.env.PROJECT_NAME || "trigger-grpc-server", process.env.PROJECT_VERSION || "0.0.1");
|
|
13
|
+
app_cold_start = api_1.metrics.getMeter("default").createGauge("initialization", {
|
|
14
|
+
description: "Application cold start",
|
|
15
|
+
});
|
|
16
|
+
initializer = 0;
|
|
17
|
+
logger = new runner_1.DefaultLogger();
|
|
18
|
+
constructor(opts) {
|
|
19
|
+
this.opts = opts;
|
|
20
|
+
if (this.opts.host === undefined) {
|
|
21
|
+
this.opts.host = "0.0.0.0";
|
|
22
|
+
}
|
|
23
|
+
if (this.opts.port === undefined) {
|
|
24
|
+
this.opts.port = 8443;
|
|
25
|
+
}
|
|
26
|
+
this.initializer = performance.now();
|
|
27
|
+
}
|
|
28
|
+
async start() {
|
|
29
|
+
this.tracer.startActiveSpan("initialization", async (span) => {
|
|
30
|
+
const trigger = new GRpcTrigger_1.default();
|
|
31
|
+
const server = trigger.getApp();
|
|
32
|
+
const host = process.env.GRPC_HOST || this.opts.host;
|
|
33
|
+
let port = process.env.GRPC_PORT || this.opts.port;
|
|
34
|
+
if (typeof port === "string") {
|
|
35
|
+
port = Number.parseInt(port, 10);
|
|
36
|
+
}
|
|
37
|
+
await server.register(connect_fastify_1.fastifyConnectPlugin, {
|
|
38
|
+
routes: (router) => trigger.processRequest(router, trigger),
|
|
39
|
+
});
|
|
40
|
+
await server.listen({ host, port: port });
|
|
41
|
+
this.logger.log(`Server is listening at ${JSON.stringify(server.addresses())}`);
|
|
42
|
+
this.initializer = performance.now() - this.initializer;
|
|
43
|
+
this.logger.log(`Server initialized in ${(this.initializer).toFixed(2)}ms`);
|
|
44
|
+
this.app_cold_start.record(this.initializer, {
|
|
45
|
+
pid: process.pid,
|
|
46
|
+
env: process.env.NODE_ENV,
|
|
47
|
+
app: process.env.APP_NAME,
|
|
48
|
+
});
|
|
49
|
+
span.end();
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.default = GrpcServer;
|
|
54
|
+
//# sourceMappingURL=GrpcServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrpcServer.js","sourceRoot":"","sources":["../src/GrpcServer.ts"],"names":[],"mappings":";;;;;AACA,iEAAmE;AACnE,yCAA6C;AAC7C,4CAA+D;AAC/D,gEAAwC;AAOxC,MAAqB,UAAU;IACpB,IAAI,CAAoB;IACxB,MAAM,GAAG,WAAK,CAAC,SAAS,CACjC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,qBAAqB,EACjD,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CACtC,CAAC;IACQ,cAAc,GAAG,aAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,gBAAgB,EAAE;QACpF,WAAW,EAAE,wBAAwB;KACrC,CAAC,CAAC;IACO,WAAW,GAAG,CAAC,CAAC;IAChB,MAAM,GAAG,IAAI,sBAAa,EAAE,CAAC;IAEvC,YAAY,IAAuB;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QAC5B,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,KAAK;QACV,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,gBAAgB,EAAE,KAAK,EAAE,IAAU,EAAE,EAAE;YAClE,MAAM,OAAO,GAAG,IAAI,qBAAW,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACrD,IAAI,IAAI,GAAoB,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACpE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC9B,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClC,CAAC;YACD,MAAM,MAAM,CAAC,QAAQ,CAAC,sCAAoB,EAAE;gBAC3C,MAAM,EAAE,CAAC,MAAqB,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC;aAC1E,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;YAEhF,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;YACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5E,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE;gBAC5C,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;gBACzB,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;aACzB,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AAnDD,6BAmDC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { JsonLikeObject } from "@blok/runner";
|
|
2
|
+
import type { Context } from "@blok/shared";
|
|
3
|
+
import { MessageType, type WorkflowRequest, type WorkflowResponse } from "./gen/workflow_pb";
|
|
4
|
+
export default class MessageDecode {
|
|
5
|
+
requestDecode(request: WorkflowRequest): Context;
|
|
6
|
+
decodeType(message: string, type: string): Context;
|
|
7
|
+
responseEncode(ctx: Context, encoding: string, type: string): WorkflowResponse;
|
|
8
|
+
responseErrorEncode(e: string | JsonLikeObject, encoding: string, type: string): string;
|
|
9
|
+
responseDecode(response: WorkflowResponse): JsonLikeObject;
|
|
10
|
+
encodeType(message: string | object | Buffer<ArrayBuffer>, type: string): string;
|
|
11
|
+
mapContentType(contentType: string): MessageType;
|
|
12
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const workflow_pb_1 = require("./gen/workflow_pb");
|
|
4
|
+
const { XMLParser, XMLBuilder } = require("fast-xml-parser");
|
|
5
|
+
class MessageDecode {
|
|
6
|
+
requestDecode(request) {
|
|
7
|
+
let message = {};
|
|
8
|
+
switch (request.Encoding) {
|
|
9
|
+
case workflow_pb_1.MessageEncoding[workflow_pb_1.MessageEncoding.BASE64]: {
|
|
10
|
+
const messageStr = Buffer.from(request.Message, "base64").toString("utf-8");
|
|
11
|
+
message = this.decodeType(messageStr, request.Type);
|
|
12
|
+
break;
|
|
13
|
+
}
|
|
14
|
+
case workflow_pb_1.MessageEncoding[workflow_pb_1.MessageEncoding.STRING]: {
|
|
15
|
+
message = this.decodeType(request.Message, request.Type);
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
default:
|
|
19
|
+
throw new Error(`Unsupported encoding: ${request.Encoding}`);
|
|
20
|
+
}
|
|
21
|
+
return message;
|
|
22
|
+
}
|
|
23
|
+
decodeType(message, type) {
|
|
24
|
+
switch (type) {
|
|
25
|
+
case workflow_pb_1.MessageType[workflow_pb_1.MessageType.JSON]: {
|
|
26
|
+
return JSON.parse(message);
|
|
27
|
+
}
|
|
28
|
+
case workflow_pb_1.MessageType[workflow_pb_1.MessageType.XML]: {
|
|
29
|
+
return new XMLParser().parse(message);
|
|
30
|
+
}
|
|
31
|
+
default:
|
|
32
|
+
throw new Error(`Unsupported type: ${type}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
responseEncode(ctx, encoding, type) {
|
|
36
|
+
let message;
|
|
37
|
+
const responseType = this.mapContentType(ctx.response.contentType);
|
|
38
|
+
switch (encoding) {
|
|
39
|
+
case workflow_pb_1.MessageEncoding[workflow_pb_1.MessageEncoding.BASE64]: {
|
|
40
|
+
if (responseType === workflow_pb_1.MessageType.JSON) {
|
|
41
|
+
message = this.encodeType(ctx.response.data, type);
|
|
42
|
+
message = Buffer.from(message).toString("base64");
|
|
43
|
+
}
|
|
44
|
+
if (responseType === workflow_pb_1.MessageType.XML) {
|
|
45
|
+
message = this.encodeType(ctx.response.data, type);
|
|
46
|
+
message = Buffer.from(message).toString("base64");
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
message = this.encodeType(ctx.response.data, type);
|
|
50
|
+
message = Buffer.from(message).toString("base64");
|
|
51
|
+
}
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
case workflow_pb_1.MessageEncoding[workflow_pb_1.MessageEncoding.STRING]: {
|
|
55
|
+
if (responseType === workflow_pb_1.MessageType.JSON) {
|
|
56
|
+
message = this.encodeType(ctx.response.data, type);
|
|
57
|
+
}
|
|
58
|
+
if (responseType === workflow_pb_1.MessageType.XML) {
|
|
59
|
+
message = this.encodeType(ctx.response.data, type);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
message = this.encodeType(ctx.response.data, type);
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
default:
|
|
67
|
+
throw new Error(`Unsupported encoding: ${encoding}`);
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
Message: message,
|
|
71
|
+
Encoding: encoding,
|
|
72
|
+
Type: workflow_pb_1.MessageType[responseType],
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
responseErrorEncode(e, encoding, type) {
|
|
76
|
+
let message;
|
|
77
|
+
switch (encoding) {
|
|
78
|
+
case workflow_pb_1.MessageEncoding[workflow_pb_1.MessageEncoding.BASE64]:
|
|
79
|
+
message = Buffer.from(this.encodeType(e, type)).toString("base64");
|
|
80
|
+
break;
|
|
81
|
+
case workflow_pb_1.MessageEncoding[workflow_pb_1.MessageEncoding.STRING]:
|
|
82
|
+
message = this.encodeType(e, type);
|
|
83
|
+
break;
|
|
84
|
+
default:
|
|
85
|
+
throw new Error(`Unsupported encoding: ${encoding}`);
|
|
86
|
+
}
|
|
87
|
+
return message;
|
|
88
|
+
}
|
|
89
|
+
responseDecode(response) {
|
|
90
|
+
let message = {};
|
|
91
|
+
switch (response.Encoding) {
|
|
92
|
+
case workflow_pb_1.MessageEncoding[workflow_pb_1.MessageEncoding.BASE64]: {
|
|
93
|
+
const messageStr = Buffer.from(response.Message, "base64").toString("utf-8");
|
|
94
|
+
message = this.decodeType(messageStr, response.Type);
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
case workflow_pb_1.MessageEncoding[workflow_pb_1.MessageEncoding.STRING]: {
|
|
98
|
+
message = this.decodeType(response.Message, response.Type);
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
default:
|
|
102
|
+
throw new Error(`Unsupported encoding: ${response.Encoding}`);
|
|
103
|
+
}
|
|
104
|
+
return message;
|
|
105
|
+
}
|
|
106
|
+
encodeType(message, type) {
|
|
107
|
+
switch (type) {
|
|
108
|
+
case workflow_pb_1.MessageType[workflow_pb_1.MessageType.JSON]:
|
|
109
|
+
return JSON.stringify(message);
|
|
110
|
+
case workflow_pb_1.MessageType[workflow_pb_1.MessageType.TEXT]:
|
|
111
|
+
case workflow_pb_1.MessageType[workflow_pb_1.MessageType.HTML]:
|
|
112
|
+
return message.toString();
|
|
113
|
+
case workflow_pb_1.MessageType[workflow_pb_1.MessageType.XML]:
|
|
114
|
+
return new XMLBuilder().build(message);
|
|
115
|
+
default:
|
|
116
|
+
throw new Error(`Unsupported type: ${type}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
mapContentType(contentType) {
|
|
120
|
+
switch (contentType) {
|
|
121
|
+
case "application/json":
|
|
122
|
+
return workflow_pb_1.MessageType.JSON;
|
|
123
|
+
case "text/html":
|
|
124
|
+
return workflow_pb_1.MessageType.HTML;
|
|
125
|
+
case "text/xml":
|
|
126
|
+
return workflow_pb_1.MessageType.XML;
|
|
127
|
+
default:
|
|
128
|
+
return workflow_pb_1.MessageType.TEXT;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
exports.default = MessageDecode;
|
|
133
|
+
//# sourceMappingURL=MessageDecode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageDecode.js","sourceRoot":"","sources":["../src/MessageDecode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { JsonLikeObject } from "@blok/runner";
|
|
2
|
+
import { type RpcOptions, type WorkflowRequest } from "./GrpcClient";
|
|
3
|
+
export default class NanoSDK {
|
|
4
|
+
createClient(host?: string, token?: string): NanoSDKClient;
|
|
5
|
+
}
|
|
6
|
+
export declare class NanoSDKClient {
|
|
7
|
+
private client;
|
|
8
|
+
private token;
|
|
9
|
+
constructor(options: RpcOptions, token: string);
|
|
10
|
+
python3(nodeName: string, inputs: JsonLikeObject): Promise<JsonLikeObject>;
|
|
11
|
+
nodejs(nodeName: string, inputs: JsonLikeObject, type?: string): Promise<JsonLikeObject>;
|
|
12
|
+
protected call(message: WorkflowRequest): Promise<JsonLikeObject>;
|
|
13
|
+
}
|