@transai/connector-runner-otto-fleet-manager-v2 0.6.1
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/CHANGELOG.md +73 -0
- package/README.md +11 -0
- package/index.cjs +2 -0
- package/index.cjs.map +7 -0
- package/index.js +2 -0
- package/index.js.map +7 -0
- package/libs/connector-runner-otto-fleet-manager-v2/src/index.d.ts +1 -0
- package/libs/connector-runner-otto-fleet-manager-v2/src/lib/actions/actions-handler.d.ts +8 -0
- package/libs/connector-runner-otto-fleet-manager-v2/src/lib/actions/base-action.d.ts +9 -0
- package/libs/connector-runner-otto-fleet-manager-v2/src/lib/actions/create-mission.action.d.ts +11 -0
- package/libs/connector-runner-otto-fleet-manager-v2/src/lib/connector-runner-otto-fleet-manager-v2.d.ts +8 -0
- package/libs/connector-runner-otto-fleet-manager-v2/src/lib/extractors/missions.extractor.d.ts +10 -0
- package/libs/connector-runner-otto-fleet-manager-v2/src/lib/types.d.ts +58 -0
- package/libs/connector-runtime-sdk/src/index.d.ts +4 -0
- package/libs/connector-runtime-sdk/src/lib/connector-runtime.d.ts +16 -0
- package/libs/connector-runtime-sdk/src/lib/connector-runtime.interface.d.ts +5 -0
- package/libs/connector-runtime-sdk/src/lib/sdk/files.sdk.interface.d.ts +19 -0
- package/libs/connector-runtime-sdk/src/lib/sdk/http-client.interface.d.ts +47 -0
- package/libs/connector-runtime-sdk/src/lib/sdk/index.d.ts +10 -0
- package/libs/connector-runtime-sdk/src/lib/sdk/logger.sdk.interface.d.ts +7 -0
- package/libs/connector-runtime-sdk/src/lib/sdk/offset-store.sdk.interface.d.ts +12 -0
- package/libs/connector-runtime-sdk/src/lib/sdk/processing.sdk.interface.d.ts +13 -0
- package/libs/connector-runtime-sdk/src/lib/sdk/receiver.sdk.interface.d.ts +14 -0
- package/libs/connector-runtime-sdk/src/lib/sdk/sdk.interface.d.ts +31 -0
- package/libs/connector-runtime-sdk/src/lib/sdk/sender.sdk.interface.d.ts +22 -0
- package/libs/connector-runtime-sdk/src/lib/sdk/telemetry.sdk.interface.d.ts +15 -0
- package/libs/connector-runtime-sdk/src/lib/sdk/templating.sdk.interface.d.ts +12 -0
- package/libs/connector-runtime-sdk/src/lib/support/index.d.ts +1 -0
- package/libs/connector-runtime-sdk/src/lib/support/null-logger.d.ts +8 -0
- package/libs/types/src/index.d.ts +7 -0
- package/libs/types/src/lib/cube-query-config.types.d.ts +20 -0
- package/libs/types/src/lib/file-action.types.d.ts +5 -0
- package/libs/types/src/lib/http-status-codes.enum.d.ts +64 -0
- package/libs/types/src/lib/management-api/action-definition.interface.d.ts +12 -0
- package/libs/types/src/lib/management-api/chart.interface.d.ts +9 -0
- package/libs/types/src/lib/management-api/connector/connector.interface.d.ts +52 -0
- package/libs/types/src/lib/management-api/connector/connectors.interface.d.ts +38 -0
- package/libs/types/src/lib/management-api/connector-orchestrator-config.interface.d.ts +14 -0
- package/libs/types/src/lib/management-api/cube-dataset.interface.d.ts +93 -0
- package/libs/types/src/lib/management-api/dashboard.interface.d.ts +35 -0
- package/libs/types/src/lib/management-api/dataset/collection.interface.d.ts +10 -0
- package/libs/types/src/lib/management-api/dataset/dataset-record.interface.d.ts +5 -0
- package/libs/types/src/lib/management-api/dataset/dataset.interface.d.ts +114 -0
- package/libs/types/src/lib/management-api/dataset/datasets.interface.d.ts +94 -0
- package/libs/types/src/lib/management-api/dataset/dimension.interface.d.ts +51 -0
- package/libs/types/src/lib/management-api/dataset/dimensions.interface.d.ts +32 -0
- package/libs/types/src/lib/management-api/dataset/filter-group.interface.d.ts +8 -0
- package/libs/types/src/lib/management-api/dataset/filter.interface.d.ts +14 -0
- package/libs/types/src/lib/management-api/dataset/filters.interface.d.ts +7 -0
- package/libs/types/src/lib/management-api/dataset/measure.interface.d.ts +25 -0
- package/libs/types/src/lib/management-api/dataset/measures.interface.d.ts +16 -0
- package/libs/types/src/lib/management-api/dataset/meta.interface.d.ts +9 -0
- package/libs/types/src/lib/management-api/dataset/pre-aggregate.interface.d.ts +41 -0
- package/libs/types/src/lib/management-api/dataset/pre-aggregations.interface.d.ts +26 -0
- package/libs/types/src/lib/management-api/dataset/relation.interface.d.ts +16 -0
- package/libs/types/src/lib/management-api/dataset/relations.interface.d.ts +12 -0
- package/libs/types/src/lib/management-api/dataset/segment.interface.d.ts +17 -0
- package/libs/types/src/lib/management-api/dataset/segments.interface.d.ts +15 -0
- package/libs/types/src/lib/management-api/dataset/switch.interface.d.ts +20 -0
- package/libs/types/src/lib/management-api/dataset/when-item.interface.d.ts +15 -0
- package/libs/types/src/lib/management-api/dataset/when-items.interface.d.ts +14 -0
- package/libs/types/src/lib/management-api/event-origin.interface.d.ts +24 -0
- package/libs/types/src/lib/management-api/index.d.ts +39 -0
- package/libs/types/src/lib/management-api/semantic-trigger/custom-cron-trigger-record.interface.d.ts +6 -0
- package/libs/types/src/lib/management-api/semantic-trigger/index.d.ts +6 -0
- package/libs/types/src/lib/management-api/semantic-trigger/semantic-trigger-filter.interface.d.ts +12 -0
- package/libs/types/src/lib/management-api/semantic-trigger/semantic-trigger-filters.interface.d.ts +10 -0
- package/libs/types/src/lib/management-api/semantic-trigger/semantic-trigger-record.interface.d.ts +6 -0
- package/libs/types/src/lib/management-api/semantic-trigger/semantic-trigger.interface.d.ts +35 -0
- package/libs/types/src/lib/management-api/semantic-trigger/semantic-triggers.interface.d.ts +22 -0
- package/libs/types/src/lib/management-api/template-implementation-overrides.interface.d.ts +148 -0
- package/libs/types/src/lib/management-api/template-implementation.interface.d.ts +309 -0
- package/libs/types/src/lib/management-api/template.interface.d.ts +177 -0
- package/libs/types/src/lib/management-api/tenant.interface.d.ts +8 -0
- package/libs/types/src/lib/management-api/type-enums.d.ts +85 -0
- package/libs/types/src/lib/management-api/web/generic-filter.dto.d.ts +37 -0
- package/libs/types/src/lib/management-api/web/index.d.ts +2 -0
- package/libs/types/src/lib/management-api/web/paginated-response.interface.d.ts +17 -0
- package/libs/types/src/lib/management-api/workflow/action.interface.d.ts +71 -0
- package/libs/types/src/lib/management-api/workflow/index.d.ts +6 -0
- package/libs/types/src/lib/management-api/workflow/offset.interface.d.ts +14 -0
- package/libs/types/src/lib/management-api/workflow/trigger-types.interface.d.ts +14 -0
- package/libs/types/src/lib/management-api/workflow/workflow-definition.interface.d.ts +64 -0
- package/libs/types/src/lib/management-api/workflow/workflow-run.d.ts +66 -0
- package/libs/types/src/lib/management-api/workflow/workflow.drawing.d.ts +94 -0
- package/libs/types/src/lib/message.types.d.ts +59 -0
- package/libs/types/src/lib/response.types.d.ts +27 -0
- package/libs/types/src/lib/types.d.ts +134 -0
- package/package.json +16 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
## 0.6.1 (2026-02-12)
|
|
2
|
+
|
|
3
|
+
### 🧱 Updated Dependencies
|
|
4
|
+
|
|
5
|
+
- Updated @transai/connector-runtime-sdk to 0.8.1
|
|
6
|
+
|
|
7
|
+
## 0.6.0 (2026-02-11)
|
|
8
|
+
|
|
9
|
+
### 🧱 Updated Dependencies
|
|
10
|
+
|
|
11
|
+
- Updated @transai/connector-runtime-sdk to 0.8.0
|
|
12
|
+
|
|
13
|
+
## 0.5.0 (2026-02-09)
|
|
14
|
+
|
|
15
|
+
### 🧱 Updated Dependencies
|
|
16
|
+
|
|
17
|
+
- Updated @transai/connector-runtime-sdk to 0.7.0
|
|
18
|
+
|
|
19
|
+
## 0.4.0 (2026-01-14)
|
|
20
|
+
|
|
21
|
+
### 🧱 Updated Dependencies
|
|
22
|
+
|
|
23
|
+
- Updated @transai/connector-runtime-sdk to 0.6.0
|
|
24
|
+
|
|
25
|
+
## 0.3.2 (2026-01-14)
|
|
26
|
+
|
|
27
|
+
### 🧱 Updated Dependencies
|
|
28
|
+
|
|
29
|
+
- Updated @transai/connector-runtime-sdk to 0.5.2
|
|
30
|
+
|
|
31
|
+
## 0.3.1 (2025-12-31)
|
|
32
|
+
|
|
33
|
+
### 🧱 Updated Dependencies
|
|
34
|
+
|
|
35
|
+
- Updated @transai/connector-runtime-sdk to 0.5.1
|
|
36
|
+
|
|
37
|
+
## 0.3.0 (2025-12-18)
|
|
38
|
+
|
|
39
|
+
### 🧱 Updated Dependencies
|
|
40
|
+
|
|
41
|
+
- Updated @transai/connector-runtime-sdk to 0.5.0
|
|
42
|
+
|
|
43
|
+
## 0.2.2 (2025-12-17)
|
|
44
|
+
|
|
45
|
+
### 🧱 Updated Dependencies
|
|
46
|
+
|
|
47
|
+
- Updated @transai/connector-runtime-sdk to 0.4.2
|
|
48
|
+
|
|
49
|
+
## 0.2.1 (2025-12-11)
|
|
50
|
+
|
|
51
|
+
### 🧱 Updated Dependencies
|
|
52
|
+
|
|
53
|
+
- Updated @transai/connector-runtime-sdk to 0.4.1
|
|
54
|
+
|
|
55
|
+
## 0.2.0 (2025-12-05)
|
|
56
|
+
|
|
57
|
+
### 🧱 Updated Dependencies
|
|
58
|
+
|
|
59
|
+
- Updated @transai/connector-runtime-sdk to 0.4.0
|
|
60
|
+
|
|
61
|
+
## 0.1.0 (2025-12-02)
|
|
62
|
+
|
|
63
|
+
### 🚀 Features
|
|
64
|
+
|
|
65
|
+
- **XODO-1184:** initial setup for Fraunhofer connectors ([#926](https://github.com/xip-online-applications/xod-core/pull/926))
|
|
66
|
+
|
|
67
|
+
### 🧱 Updated Dependencies
|
|
68
|
+
|
|
69
|
+
- Updated @transai/connector-runtime-sdk to 0.3.1
|
|
70
|
+
|
|
71
|
+
### ❤️ Thank You
|
|
72
|
+
|
|
73
|
+
- Youri Lefers @yourilefers
|
package/README.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# connector-runner-otto-fleet-manager-v2
|
|
2
|
+
|
|
3
|
+
This library was generated with [Nx](https://nx.dev).
|
|
4
|
+
|
|
5
|
+
## Building
|
|
6
|
+
|
|
7
|
+
Run `nx build connector-runner-otto-fleet-manager-v2` to build the library.
|
|
8
|
+
|
|
9
|
+
## Running unit tests
|
|
10
|
+
|
|
11
|
+
Run `nx test connector-runner-otto-fleet-manager-v2` to execute the unit tests via [Jest](https://jestjs.io).
|
package/index.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var I=Object.create;var l=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var K=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty;var x=(o,t)=>{for(var e in t)l(o,e,{get:t[e],enumerable:!0})},h=(o,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of A(t))!M.call(o,n)&&n!==e&&l(o,n,{get:()=>t[n],enumerable:!(r=b(t,n))||r.enumerable});return o};var y=(o,t,e)=>(e=o!=null?I(K(o)):{},h(t||!o||!o.__esModule?l(e,"default",{value:o,enumerable:!0}):e,o)),D=o=>h(l({},"__esModule",{value:!0}),o);var k={};x(k,{ConnectorRunnerOttoFleetManagerV2:()=>C});module.exports=D(k);var i=y(require("node:process")),m=class{constructor(t,e){this.#e="connector-runtime";this.init=()=>Promise.resolve();this.start=()=>Promise.resolve();this.stop=()=>Promise.resolve();this.#t=e,i.default.on?i.default.on("message",r=>{r.cmd===this.#e&&e.logger.verbose(`${i.default.pid} Received message from parent process:`,r)}):e.logger.warn("IPC channel is not available. process.on is undefined."),i.default.send||e.logger.warn("IPC channel is not available. process.send is undefined."),t.actions?.forEach(r=>{if(r.config.templates===void 0)return;let n={};Object.entries(r.config.templates).forEach(([a,p])=>{try{n[a]=e.templating.compile(p)}catch(d){e.logger.error(`Error compiling template ${a} for action ${r.identifier}`,d)}}),r.config.parsedTemplates=n})}#e;#t;set callbackFunction(t){this.connectorSDK.receiver.registerCallback(this.#o(t))}get connectorSDK(){return this.#t}#o(t){return async e=>{let r=await this.#t.receiver.getActionConfig(e);return r?t(e,r):this.#t.receiver.responses.badRequest("Action not found")(e)}}};var f=class{#e;constructor(t){this.#e=t}get jsonrpc(){return"2.0"}async execute(t){let e=Math.floor(1e7+Math.random()*9e7);return(await this.#e.post("/operations",{id:e,jsonrpc:this.jsonrpc,method:this.method,params:t})).data.result.id}};var s=class extends f{static{this.TYPE="create-mission"}get method(){return"createMission"}};var g=class{#e;#t;constructor(t,e){this.#e=t,this.#t={[s.TYPE]:new s(e)}}get callbackFunctionChain(){return this.#o(this.#e.receiver.emitEventType(this.#e.receiver.responses.created()))}#o(t){return async(e,r)=>{let n=r.config.parsedTemplates,a=n.action({inputs:e.payload}).trim(),p=this.#t[a];if(!p)return this.#e.receiver.responses.badRequest(`Action ${a} does not exist.`)(e);let d=n.params({inputs:e.payload}).trim(),u=await p.execute(JSON.parse(d));return this.#e.logger.info(`Action ${a} executed successfully with id: ${u}`),t(e)}}};var c=class o{static{this.NAME="otto-fleet-manager-v2-extractor-missions"}static{this.INTERVAL=60}#e;#t;constructor(t,e){this.#e=t,this.#t=e}get name(){return o.NAME}async onRun(){let t=new URLSearchParams({limit:"100",offset:"0"});for(;;){let e=await this.#t.get(`/missions?${t.toString()}`);if(await this.#e.sender.documents(e.data.results,{collection:"missions",keyField:"id"}),!e.data.next)break;let r=new URL(e.data.next);if(!r.searchParams.get("offset"))break;t.set("offset",r.searchParams.get("offset")||"0")}}};var C=class extends m{constructor(e,r){super(e,r);this.init=async()=>{await Promise.all([this.connectorSDK.processing.registerInterval(c.INTERVAL,new c(this.connectorSDK,this.#e))])};let{config:n}=this.connectorSDK;this.#e=this.connectorSDK.httpClient({baseUrl:`https://${n.hostname}/api/fleet/v2`});let a=new g(this.connectorSDK,this.#e);this.callbackFunction=a.callbackFunctionChain}#e};0&&(module.exports={ConnectorRunnerOttoFleetManagerV2});
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
package/index.cjs.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../libs/connector-runner-otto-fleet-manager-v2/src/index.ts", "../../../libs/connector-runtime-sdk/src/lib/connector-runtime.ts", "../../../libs/connector-runner-otto-fleet-manager-v2/src/lib/actions/base-action.ts", "../../../libs/connector-runner-otto-fleet-manager-v2/src/lib/actions/create-mission.action.ts", "../../../libs/connector-runner-otto-fleet-manager-v2/src/lib/actions/actions-handler.ts", "../../../libs/connector-runner-otto-fleet-manager-v2/src/lib/extractors/missions.extractor.ts", "../../../libs/connector-runner-otto-fleet-manager-v2/src/lib/connector-runner-otto-fleet-manager-v2.ts"],
|
|
4
|
+
"sourcesContent": ["export * from './lib/connector-runner-otto-fleet-manager-v2';\n", "import process from 'node:process';\n\nimport {\n KafkaCallbackResponse,\n BaseConnectorConfig,\n ActionInterface,\n ConnectorInterface,\n XodJobType,\n} from '@xip-online-data/types';\n\nimport { ConnectorRuntimeInterface } from './connector-runtime.interface';\nimport { CompileDelegate, ConnectorSDKInterface } from './sdk';\n\nexport interface IpcMessage {\n cmd: string;\n message: string;\n}\n\nexport abstract class ConnectorRuntimeSDK<\n T extends BaseConnectorConfig = BaseConnectorConfig,\n> implements ConnectorRuntimeInterface {\n readonly #IPC_CHANNEL = 'connector-runtime';\n\n readonly #connectorSDK: ConnectorSDKInterface<T>;\n\n constructor(\n connector: ConnectorInterface,\n connectorSDK: ConnectorSDKInterface,\n ) {\n this.#connectorSDK = connectorSDK as ConnectorSDKInterface<T>;\n\n if (process.on) {\n process.on('message', (message: IpcMessage) => {\n if (message.cmd === this.#IPC_CHANNEL) {\n connectorSDK.logger.verbose(\n `${process.pid} Received message from parent process:`,\n message,\n );\n }\n });\n } else {\n connectorSDK.logger.warn(\n 'IPC channel is not available. process.on is undefined.',\n );\n }\n\n if (!process.send) {\n // Check if process.send is available\n connectorSDK.logger.warn(\n 'IPC channel is not available. process.send is undefined.',\n );\n }\n\n // eslint-disable-next-line no-restricted-syntax\n connector.actions?.forEach((action: ActionInterface) => {\n if (action.config['templates'] === undefined) {\n return;\n }\n\n const containers: {\n [key: string]: CompileDelegate;\n } = {};\n\n Object.entries(action.config['templates']).forEach(([key, value]) => {\n try {\n // eslint-disable-next-line security/detect-object-injection\n containers[key] = connectorSDK.templating.compile(value);\n } catch (error: unknown) {\n connectorSDK.logger.error(\n `Error compiling template ${key} for action ${action.identifier}`,\n error,\n );\n }\n });\n\n // eslint-disable-next-line no-param-reassign\n action.config['parsedTemplates'] = containers;\n });\n }\n\n public init: () => Promise<void> = () => Promise.resolve();\n\n public start: () => Promise<void> = () => Promise.resolve();\n\n public stop: () => Promise<void> = () => Promise.resolve();\n\n set callbackFunction(\n callback: (\n message: XodJobType,\n action: ActionInterface,\n ) => Promise<KafkaCallbackResponse>,\n ) {\n this.connectorSDK.receiver.registerCallback(\n this.#enrichWithActionConfig(callback),\n );\n }\n\n protected get connectorSDK(): ConnectorSDKInterface<T> {\n return this.#connectorSDK;\n }\n\n #enrichWithActionConfig(\n callbackFunction: (\n message: XodJobType,\n action: ActionInterface,\n ) => Promise<KafkaCallbackResponse>,\n ): (message: XodJobType) => Promise<KafkaCallbackResponse> {\n return async (message: XodJobType) => {\n const action = await this.#connectorSDK.receiver.getActionConfig(message);\n if (!action) {\n return this.#connectorSDK.receiver.responses.badRequest(\n 'Action not found',\n )(message);\n }\n return callbackFunction(message, action);\n };\n }\n}\n", "import { HttpClientSDKInterface } from '@transai/connector-runtime-sdk';\n\nimport { OttoFleetManagerApiAction } from '../types';\n\nexport abstract class BaseAction<\n T = Record<string, string | number | unknown>,\n R = string,\n> implements OttoFleetManagerApiAction<T, R>\n{\n readonly #httpClient: HttpClientSDKInterface;\n\n constructor(httpClient: HttpClientSDKInterface) {\n this.#httpClient = httpClient;\n }\n\n get jsonrpc(): string {\n return '2.0';\n }\n\n abstract get method(): string;\n\n async execute(params: T): Promise<R> {\n // 8 digits random id\n const id = Math.floor(10000000 + Math.random() * 90000000);\n\n const response = await this.#httpClient.post<\n { id: number; result: { id: string } },\n {\n id: number;\n jsonrpc: string;\n method: string;\n params: T;\n }\n >('/operations', {\n id,\n jsonrpc: this.jsonrpc,\n method: this.method,\n params,\n });\n\n return response.data.result.id as R;\n }\n}\n", "import { OttoFleetManagerApiMission, OttoFleetManagerApiTask } from '../types';\n\nimport { BaseAction } from './base-action';\n\ntype CreateMissionParams = {\n mission: OttoFleetManagerApiMission;\n tasks?: Array<OttoFleetManagerApiTask>;\n};\n\nexport class CreateMissionAction extends BaseAction<CreateMissionParams> {\n static readonly TYPE = 'create-mission';\n\n get method(): string {\n return 'createMission';\n }\n}\n", "import {\n CompileDelegate,\n ConnectorSDKInterface,\n HttpClientSDKInterface,\n} from '@transai/connector-runtime-sdk';\nimport {\n ActionInterface,\n KafkaCallbackResponse,\n XodJobType,\n} from '@xip-online-data/types';\n\nimport { OttoFleetManagerApiAction, OttoFleetManagerV2Config } from '../types';\n\nimport { CreateMissionAction } from './create-mission.action';\n\nexport class ActionsHandler {\n readonly #sdk: ConnectorSDKInterface<OttoFleetManagerV2Config>;\n\n readonly #actionsMap: Record<string, OttoFleetManagerApiAction>;\n\n constructor(\n sdk: ConnectorSDKInterface<OttoFleetManagerV2Config>,\n httpClient: HttpClientSDKInterface,\n ) {\n this.#sdk = sdk;\n this.#actionsMap = {\n [CreateMissionAction.TYPE]: new CreateMissionAction(httpClient),\n };\n }\n\n get callbackFunctionChain(): (\n message: XodJobType,\n action: ActionInterface,\n ) => Promise<KafkaCallbackResponse> {\n return this.#actionCallbackFunction(\n this.#sdk.receiver.emitEventType(this.#sdk.receiver.responses.created()),\n );\n }\n\n #actionCallbackFunction(\n callbackFunction: (message: XodJobType) => Promise<KafkaCallbackResponse>,\n ) {\n return async (\n message: XodJobType,\n action: ActionInterface,\n ): Promise<KafkaCallbackResponse> => {\n const handleBars = action.config['parsedTemplates'] as {\n action: CompileDelegate;\n params: CompileDelegate;\n };\n\n const parsedAction = handleBars\n .action({\n inputs: message.payload,\n })\n .trim();\n\n const actionInstance = this.#actionsMap[parsedAction];\n if (!actionInstance) {\n return this.#sdk.receiver.responses.badRequest(\n `Action ${parsedAction} does not exist.`,\n )(message);\n }\n\n const parsedParams = handleBars\n .params({\n inputs: message.payload,\n })\n .trim();\n\n const id = await actionInstance.execute(JSON.parse(parsedParams));\n this.#sdk.logger.info(\n `Action ${parsedAction} executed successfully with id: ${id}`,\n );\n\n return callbackFunction(message);\n };\n }\n}\n", "import {\n ConnectorSDKInterface,\n HttpClientSDKInterface,\n IntervalHandler,\n} from '@transai/connector-runtime-sdk';\n\nimport {\n OttoFleetManagerApiMission,\n OttoFleetManagerApiResponse,\n OttoFleetManagerV2Config,\n} from '../types';\n\nexport class MissionsExtractor implements IntervalHandler {\n static readonly NAME = 'otto-fleet-manager-v2-extractor-missions';\n\n static readonly INTERVAL = 60;\n\n readonly #sdk: ConnectorSDKInterface<OttoFleetManagerV2Config>;\n\n readonly #httpClient: HttpClientSDKInterface;\n\n constructor(\n sdk: ConnectorSDKInterface<OttoFleetManagerV2Config>,\n httpClient: HttpClientSDKInterface,\n ) {\n this.#sdk = sdk;\n this.#httpClient = httpClient;\n }\n\n get name(): string {\n return MissionsExtractor.NAME;\n }\n\n async onRun(): Promise<void> {\n const searchParams = new URLSearchParams({\n limit: '100',\n offset: '0',\n });\n\n while (true) {\n const missions =\n // eslint-disable-next-line no-await-in-loop\n await this.#httpClient.get<\n OttoFleetManagerApiResponse<OttoFleetManagerApiMission>\n >(`/missions?${searchParams.toString()}`);\n\n // eslint-disable-next-line no-await-in-loop\n await this.#sdk.sender.documents<OttoFleetManagerApiMission>(\n missions.data.results,\n {\n collection: 'missions',\n keyField: 'id',\n },\n );\n\n if (!missions.data.next) {\n break;\n }\n\n const url = new URL(missions.data.next);\n if (!url.searchParams.get('offset')) {\n break;\n }\n\n searchParams.set('offset', url.searchParams.get('offset') || '0');\n }\n }\n}\n", "import {\n ConnectorRuntimeSDK,\n ConnectorSDKInterface,\n HttpClientSDKInterface,\n} from '@transai/connector-runtime-sdk';\nimport { ConnectorInterface } from '@xip-online-data/types';\n\nimport { ActionsHandler } from './actions/actions-handler';\nimport { MissionsExtractor } from './extractors/missions.extractor';\nimport { OttoFleetManagerV2Config } from './types';\n\nexport class ConnectorRunnerOttoFleetManagerV2 extends ConnectorRuntimeSDK<OttoFleetManagerV2Config> {\n readonly #httpClient: HttpClientSDKInterface;\n\n constructor(\n connector: ConnectorInterface,\n connectorSDK: ConnectorSDKInterface,\n ) {\n super(connector, connectorSDK);\n\n const { config } = this.connectorSDK;\n this.#httpClient = this.connectorSDK.httpClient({\n baseUrl: `https://${config.hostname}/api/fleet/v2`,\n });\n\n const actionsHandler = new ActionsHandler(\n this.connectorSDK,\n this.#httpClient,\n );\n\n this.callbackFunction = actionsHandler.callbackFunctionChain;\n }\n\n override init = async (): Promise<void> => {\n await Promise.all([\n this.connectorSDK.processing.registerInterval(\n MissionsExtractor.INTERVAL,\n new MissionsExtractor(this.connectorSDK, this.#httpClient),\n ),\n ]);\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["index_exports", "__export", "ConnectorRunnerOttoFleetManagerV2", "__toCommonJS", "import_node_process", "ConnectorRuntimeSDK", "connector", "connectorSDK", "#IPC_CHANNEL", "#connectorSDK", "process", "message", "action", "containers", "key", "value", "error", "callback", "#enrichWithActionConfig", "callbackFunction", "BaseAction", "#httpClient", "httpClient", "params", "id", "CreateMissionAction", "BaseAction", "ActionsHandler", "#sdk", "#actionsMap", "sdk", "httpClient", "CreateMissionAction", "#actionCallbackFunction", "callbackFunction", "message", "action", "handleBars", "parsedAction", "actionInstance", "parsedParams", "id", "MissionsExtractor", "_MissionsExtractor", "#sdk", "#httpClient", "sdk", "httpClient", "searchParams", "missions", "url", "ConnectorRunnerOttoFleetManagerV2", "ConnectorRuntimeSDK", "connector", "connectorSDK", "MissionsExtractor", "#httpClient", "config", "actionsHandler", "ActionsHandler"]
|
|
7
|
+
}
|
package/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import p from"node:process";var l=class{constructor(t,e){this.#e="connector-runtime";this.init=()=>Promise.resolve();this.start=()=>Promise.resolve();this.stop=()=>Promise.resolve();this.#t=e,p.on?p.on("message",o=>{o.cmd===this.#e&&e.logger.verbose(`${p.pid} Received message from parent process:`,o)}):e.logger.warn("IPC channel is not available. process.on is undefined."),p.send||e.logger.warn("IPC channel is not available. process.send is undefined."),t.actions?.forEach(o=>{if(o.config.templates===void 0)return;let n={};Object.entries(o.config.templates).forEach(([r,c])=>{try{n[r]=e.templating.compile(c)}catch(g){e.logger.error(`Error compiling template ${r} for action ${o.identifier}`,g)}}),o.config.parsedTemplates=n})}#e;#t;set callbackFunction(t){this.connectorSDK.receiver.registerCallback(this.#o(t))}get connectorSDK(){return this.#t}#o(t){return async e=>{let o=await this.#t.receiver.getActionConfig(e);return o?t(e,o):this.#t.receiver.responses.badRequest("Action not found")(e)}}};var m=class{#e;constructor(t){this.#e=t}get jsonrpc(){return"2.0"}async execute(t){let e=Math.floor(1e7+Math.random()*9e7);return(await this.#e.post("/operations",{id:e,jsonrpc:this.jsonrpc,method:this.method,params:t})).data.result.id}};var i=class extends m{static{this.TYPE="create-mission"}get method(){return"createMission"}};var f=class{#e;#t;constructor(t,e){this.#e=t,this.#t={[i.TYPE]:new i(e)}}get callbackFunctionChain(){return this.#o(this.#e.receiver.emitEventType(this.#e.receiver.responses.created()))}#o(t){return async(e,o)=>{let n=o.config.parsedTemplates,r=n.action({inputs:e.payload}).trim(),c=this.#t[r];if(!c)return this.#e.receiver.responses.badRequest(`Action ${r} does not exist.`)(e);let g=n.params({inputs:e.payload}).trim(),C=await c.execute(JSON.parse(g));return this.#e.logger.info(`Action ${r} executed successfully with id: ${C}`),t(e)}}};var s=class a{static{this.NAME="otto-fleet-manager-v2-extractor-missions"}static{this.INTERVAL=60}#e;#t;constructor(t,e){this.#e=t,this.#t=e}get name(){return a.NAME}async onRun(){let t=new URLSearchParams({limit:"100",offset:"0"});for(;;){let e=await this.#t.get(`/missions?${t.toString()}`);if(await this.#e.sender.documents(e.data.results,{collection:"missions",keyField:"id"}),!e.data.next)break;let o=new URL(e.data.next);if(!o.searchParams.get("offset"))break;t.set("offset",o.searchParams.get("offset")||"0")}}};var d=class extends l{constructor(e,o){super(e,o);this.init=async()=>{await Promise.all([this.connectorSDK.processing.registerInterval(s.INTERVAL,new s(this.connectorSDK,this.#e))])};let{config:n}=this.connectorSDK;this.#e=this.connectorSDK.httpClient({baseUrl:`https://${n.hostname}/api/fleet/v2`});let r=new f(this.connectorSDK,this.#e);this.callbackFunction=r.callbackFunctionChain}#e};export{d as ConnectorRunnerOttoFleetManagerV2};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../libs/connector-runtime-sdk/src/lib/connector-runtime.ts", "../../../libs/connector-runner-otto-fleet-manager-v2/src/lib/actions/base-action.ts", "../../../libs/connector-runner-otto-fleet-manager-v2/src/lib/actions/create-mission.action.ts", "../../../libs/connector-runner-otto-fleet-manager-v2/src/lib/actions/actions-handler.ts", "../../../libs/connector-runner-otto-fleet-manager-v2/src/lib/extractors/missions.extractor.ts", "../../../libs/connector-runner-otto-fleet-manager-v2/src/lib/connector-runner-otto-fleet-manager-v2.ts"],
|
|
4
|
+
"sourcesContent": ["import process from 'node:process';\n\nimport {\n KafkaCallbackResponse,\n BaseConnectorConfig,\n ActionInterface,\n ConnectorInterface,\n XodJobType,\n} from '@xip-online-data/types';\n\nimport { ConnectorRuntimeInterface } from './connector-runtime.interface';\nimport { CompileDelegate, ConnectorSDKInterface } from './sdk';\n\nexport interface IpcMessage {\n cmd: string;\n message: string;\n}\n\nexport abstract class ConnectorRuntimeSDK<\n T extends BaseConnectorConfig = BaseConnectorConfig,\n> implements ConnectorRuntimeInterface {\n readonly #IPC_CHANNEL = 'connector-runtime';\n\n readonly #connectorSDK: ConnectorSDKInterface<T>;\n\n constructor(\n connector: ConnectorInterface,\n connectorSDK: ConnectorSDKInterface,\n ) {\n this.#connectorSDK = connectorSDK as ConnectorSDKInterface<T>;\n\n if (process.on) {\n process.on('message', (message: IpcMessage) => {\n if (message.cmd === this.#IPC_CHANNEL) {\n connectorSDK.logger.verbose(\n `${process.pid} Received message from parent process:`,\n message,\n );\n }\n });\n } else {\n connectorSDK.logger.warn(\n 'IPC channel is not available. process.on is undefined.',\n );\n }\n\n if (!process.send) {\n // Check if process.send is available\n connectorSDK.logger.warn(\n 'IPC channel is not available. process.send is undefined.',\n );\n }\n\n // eslint-disable-next-line no-restricted-syntax\n connector.actions?.forEach((action: ActionInterface) => {\n if (action.config['templates'] === undefined) {\n return;\n }\n\n const containers: {\n [key: string]: CompileDelegate;\n } = {};\n\n Object.entries(action.config['templates']).forEach(([key, value]) => {\n try {\n // eslint-disable-next-line security/detect-object-injection\n containers[key] = connectorSDK.templating.compile(value);\n } catch (error: unknown) {\n connectorSDK.logger.error(\n `Error compiling template ${key} for action ${action.identifier}`,\n error,\n );\n }\n });\n\n // eslint-disable-next-line no-param-reassign\n action.config['parsedTemplates'] = containers;\n });\n }\n\n public init: () => Promise<void> = () => Promise.resolve();\n\n public start: () => Promise<void> = () => Promise.resolve();\n\n public stop: () => Promise<void> = () => Promise.resolve();\n\n set callbackFunction(\n callback: (\n message: XodJobType,\n action: ActionInterface,\n ) => Promise<KafkaCallbackResponse>,\n ) {\n this.connectorSDK.receiver.registerCallback(\n this.#enrichWithActionConfig(callback),\n );\n }\n\n protected get connectorSDK(): ConnectorSDKInterface<T> {\n return this.#connectorSDK;\n }\n\n #enrichWithActionConfig(\n callbackFunction: (\n message: XodJobType,\n action: ActionInterface,\n ) => Promise<KafkaCallbackResponse>,\n ): (message: XodJobType) => Promise<KafkaCallbackResponse> {\n return async (message: XodJobType) => {\n const action = await this.#connectorSDK.receiver.getActionConfig(message);\n if (!action) {\n return this.#connectorSDK.receiver.responses.badRequest(\n 'Action not found',\n )(message);\n }\n return callbackFunction(message, action);\n };\n }\n}\n", "import { HttpClientSDKInterface } from '@transai/connector-runtime-sdk';\n\nimport { OttoFleetManagerApiAction } from '../types';\n\nexport abstract class BaseAction<\n T = Record<string, string | number | unknown>,\n R = string,\n> implements OttoFleetManagerApiAction<T, R>\n{\n readonly #httpClient: HttpClientSDKInterface;\n\n constructor(httpClient: HttpClientSDKInterface) {\n this.#httpClient = httpClient;\n }\n\n get jsonrpc(): string {\n return '2.0';\n }\n\n abstract get method(): string;\n\n async execute(params: T): Promise<R> {\n // 8 digits random id\n const id = Math.floor(10000000 + Math.random() * 90000000);\n\n const response = await this.#httpClient.post<\n { id: number; result: { id: string } },\n {\n id: number;\n jsonrpc: string;\n method: string;\n params: T;\n }\n >('/operations', {\n id,\n jsonrpc: this.jsonrpc,\n method: this.method,\n params,\n });\n\n return response.data.result.id as R;\n }\n}\n", "import { OttoFleetManagerApiMission, OttoFleetManagerApiTask } from '../types';\n\nimport { BaseAction } from './base-action';\n\ntype CreateMissionParams = {\n mission: OttoFleetManagerApiMission;\n tasks?: Array<OttoFleetManagerApiTask>;\n};\n\nexport class CreateMissionAction extends BaseAction<CreateMissionParams> {\n static readonly TYPE = 'create-mission';\n\n get method(): string {\n return 'createMission';\n }\n}\n", "import {\n CompileDelegate,\n ConnectorSDKInterface,\n HttpClientSDKInterface,\n} from '@transai/connector-runtime-sdk';\nimport {\n ActionInterface,\n KafkaCallbackResponse,\n XodJobType,\n} from '@xip-online-data/types';\n\nimport { OttoFleetManagerApiAction, OttoFleetManagerV2Config } from '../types';\n\nimport { CreateMissionAction } from './create-mission.action';\n\nexport class ActionsHandler {\n readonly #sdk: ConnectorSDKInterface<OttoFleetManagerV2Config>;\n\n readonly #actionsMap: Record<string, OttoFleetManagerApiAction>;\n\n constructor(\n sdk: ConnectorSDKInterface<OttoFleetManagerV2Config>,\n httpClient: HttpClientSDKInterface,\n ) {\n this.#sdk = sdk;\n this.#actionsMap = {\n [CreateMissionAction.TYPE]: new CreateMissionAction(httpClient),\n };\n }\n\n get callbackFunctionChain(): (\n message: XodJobType,\n action: ActionInterface,\n ) => Promise<KafkaCallbackResponse> {\n return this.#actionCallbackFunction(\n this.#sdk.receiver.emitEventType(this.#sdk.receiver.responses.created()),\n );\n }\n\n #actionCallbackFunction(\n callbackFunction: (message: XodJobType) => Promise<KafkaCallbackResponse>,\n ) {\n return async (\n message: XodJobType,\n action: ActionInterface,\n ): Promise<KafkaCallbackResponse> => {\n const handleBars = action.config['parsedTemplates'] as {\n action: CompileDelegate;\n params: CompileDelegate;\n };\n\n const parsedAction = handleBars\n .action({\n inputs: message.payload,\n })\n .trim();\n\n const actionInstance = this.#actionsMap[parsedAction];\n if (!actionInstance) {\n return this.#sdk.receiver.responses.badRequest(\n `Action ${parsedAction} does not exist.`,\n )(message);\n }\n\n const parsedParams = handleBars\n .params({\n inputs: message.payload,\n })\n .trim();\n\n const id = await actionInstance.execute(JSON.parse(parsedParams));\n this.#sdk.logger.info(\n `Action ${parsedAction} executed successfully with id: ${id}`,\n );\n\n return callbackFunction(message);\n };\n }\n}\n", "import {\n ConnectorSDKInterface,\n HttpClientSDKInterface,\n IntervalHandler,\n} from '@transai/connector-runtime-sdk';\n\nimport {\n OttoFleetManagerApiMission,\n OttoFleetManagerApiResponse,\n OttoFleetManagerV2Config,\n} from '../types';\n\nexport class MissionsExtractor implements IntervalHandler {\n static readonly NAME = 'otto-fleet-manager-v2-extractor-missions';\n\n static readonly INTERVAL = 60;\n\n readonly #sdk: ConnectorSDKInterface<OttoFleetManagerV2Config>;\n\n readonly #httpClient: HttpClientSDKInterface;\n\n constructor(\n sdk: ConnectorSDKInterface<OttoFleetManagerV2Config>,\n httpClient: HttpClientSDKInterface,\n ) {\n this.#sdk = sdk;\n this.#httpClient = httpClient;\n }\n\n get name(): string {\n return MissionsExtractor.NAME;\n }\n\n async onRun(): Promise<void> {\n const searchParams = new URLSearchParams({\n limit: '100',\n offset: '0',\n });\n\n while (true) {\n const missions =\n // eslint-disable-next-line no-await-in-loop\n await this.#httpClient.get<\n OttoFleetManagerApiResponse<OttoFleetManagerApiMission>\n >(`/missions?${searchParams.toString()}`);\n\n // eslint-disable-next-line no-await-in-loop\n await this.#sdk.sender.documents<OttoFleetManagerApiMission>(\n missions.data.results,\n {\n collection: 'missions',\n keyField: 'id',\n },\n );\n\n if (!missions.data.next) {\n break;\n }\n\n const url = new URL(missions.data.next);\n if (!url.searchParams.get('offset')) {\n break;\n }\n\n searchParams.set('offset', url.searchParams.get('offset') || '0');\n }\n }\n}\n", "import {\n ConnectorRuntimeSDK,\n ConnectorSDKInterface,\n HttpClientSDKInterface,\n} from '@transai/connector-runtime-sdk';\nimport { ConnectorInterface } from '@xip-online-data/types';\n\nimport { ActionsHandler } from './actions/actions-handler';\nimport { MissionsExtractor } from './extractors/missions.extractor';\nimport { OttoFleetManagerV2Config } from './types';\n\nexport class ConnectorRunnerOttoFleetManagerV2 extends ConnectorRuntimeSDK<OttoFleetManagerV2Config> {\n readonly #httpClient: HttpClientSDKInterface;\n\n constructor(\n connector: ConnectorInterface,\n connectorSDK: ConnectorSDKInterface,\n ) {\n super(connector, connectorSDK);\n\n const { config } = this.connectorSDK;\n this.#httpClient = this.connectorSDK.httpClient({\n baseUrl: `https://${config.hostname}/api/fleet/v2`,\n });\n\n const actionsHandler = new ActionsHandler(\n this.connectorSDK,\n this.#httpClient,\n );\n\n this.callbackFunction = actionsHandler.callbackFunctionChain;\n }\n\n override init = async (): Promise<void> => {\n await Promise.all([\n this.connectorSDK.processing.registerInterval(\n MissionsExtractor.INTERVAL,\n new MissionsExtractor(this.connectorSDK, this.#httpClient),\n ),\n ]);\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["process", "ConnectorRuntimeSDK", "connector", "connectorSDK", "#IPC_CHANNEL", "#connectorSDK", "message", "action", "containers", "key", "value", "error", "callback", "#enrichWithActionConfig", "callbackFunction", "BaseAction", "#httpClient", "httpClient", "params", "id", "CreateMissionAction", "BaseAction", "ActionsHandler", "#sdk", "#actionsMap", "sdk", "httpClient", "CreateMissionAction", "#actionCallbackFunction", "callbackFunction", "message", "action", "handleBars", "parsedAction", "actionInstance", "parsedParams", "id", "MissionsExtractor", "_MissionsExtractor", "#sdk", "#httpClient", "sdk", "httpClient", "searchParams", "missions", "url", "ConnectorRunnerOttoFleetManagerV2", "ConnectorRuntimeSDK", "connector", "connectorSDK", "MissionsExtractor", "#httpClient", "config", "actionsHandler", "ActionsHandler"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './lib/connector-runner-otto-fleet-manager-v2';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ConnectorSDKInterface, HttpClientSDKInterface } from '@transai/connector-runtime-sdk';
|
|
2
|
+
import { ActionInterface, KafkaCallbackResponse, XodJobType } from '@xip-online-data/types';
|
|
3
|
+
import { OttoFleetManagerV2Config } from '../types';
|
|
4
|
+
export declare class ActionsHandler {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(sdk: ConnectorSDKInterface<OttoFleetManagerV2Config>, httpClient: HttpClientSDKInterface);
|
|
7
|
+
get callbackFunctionChain(): (message: XodJobType, action: ActionInterface) => Promise<KafkaCallbackResponse>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { HttpClientSDKInterface } from '@transai/connector-runtime-sdk';
|
|
2
|
+
import { OttoFleetManagerApiAction } from '../types';
|
|
3
|
+
export declare abstract class BaseAction<T = Record<string, string | number | unknown>, R = string> implements OttoFleetManagerApiAction<T, R> {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(httpClient: HttpClientSDKInterface);
|
|
6
|
+
get jsonrpc(): string;
|
|
7
|
+
abstract get method(): string;
|
|
8
|
+
execute(params: T): Promise<R>;
|
|
9
|
+
}
|
package/libs/connector-runner-otto-fleet-manager-v2/src/lib/actions/create-mission.action.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { OttoFleetManagerApiMission, OttoFleetManagerApiTask } from '../types';
|
|
2
|
+
import { BaseAction } from './base-action';
|
|
3
|
+
type CreateMissionParams = {
|
|
4
|
+
mission: OttoFleetManagerApiMission;
|
|
5
|
+
tasks?: Array<OttoFleetManagerApiTask>;
|
|
6
|
+
};
|
|
7
|
+
export declare class CreateMissionAction extends BaseAction<CreateMissionParams> {
|
|
8
|
+
static readonly TYPE = "create-mission";
|
|
9
|
+
get method(): string;
|
|
10
|
+
}
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ConnectorRuntimeSDK, ConnectorSDKInterface } from '@transai/connector-runtime-sdk';
|
|
2
|
+
import { ConnectorInterface } from '@xip-online-data/types';
|
|
3
|
+
import { OttoFleetManagerV2Config } from './types';
|
|
4
|
+
export declare class ConnectorRunnerOttoFleetManagerV2 extends ConnectorRuntimeSDK<OttoFleetManagerV2Config> {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(connector: ConnectorInterface, connectorSDK: ConnectorSDKInterface);
|
|
7
|
+
init: () => Promise<void>;
|
|
8
|
+
}
|
package/libs/connector-runner-otto-fleet-manager-v2/src/lib/extractors/missions.extractor.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ConnectorSDKInterface, HttpClientSDKInterface, IntervalHandler } from '@transai/connector-runtime-sdk';
|
|
2
|
+
import { OttoFleetManagerV2Config } from '../types';
|
|
3
|
+
export declare class MissionsExtractor implements IntervalHandler {
|
|
4
|
+
#private;
|
|
5
|
+
static readonly NAME = "otto-fleet-manager-v2-extractor-missions";
|
|
6
|
+
static readonly INTERVAL = 60;
|
|
7
|
+
constructor(sdk: ConnectorSDKInterface<OttoFleetManagerV2Config>, httpClient: HttpClientSDKInterface);
|
|
8
|
+
get name(): string;
|
|
9
|
+
onRun(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { BaseConnectorConfig } from '@xip-online-data/types';
|
|
2
|
+
export interface OttoFleetManagerV2Config extends BaseConnectorConfig {
|
|
3
|
+
hostname: string;
|
|
4
|
+
}
|
|
5
|
+
export type OttoFleetManagerApiResponse<T> = {
|
|
6
|
+
count?: number;
|
|
7
|
+
next?: string;
|
|
8
|
+
previous?: string;
|
|
9
|
+
results: Array<T>;
|
|
10
|
+
};
|
|
11
|
+
export interface OttoFleetManagerApiAction<T = Record<string, string | number | unknown>, R = string> {
|
|
12
|
+
/**
|
|
13
|
+
* Executes the action with the given parameters. Returns normally the ID
|
|
14
|
+
* of the created resource.
|
|
15
|
+
*/
|
|
16
|
+
execute(params: T): Promise<R>;
|
|
17
|
+
}
|
|
18
|
+
export type OttoFleetManagerApiMission = {
|
|
19
|
+
id: string;
|
|
20
|
+
name?: string;
|
|
21
|
+
description?: string;
|
|
22
|
+
due_state: 'UNDEFINED' | 'BELOW_NOMINAL' | 'ABOVE_NOMINAL' | 'ABOVE_MAXIMUM';
|
|
23
|
+
client_reference_id?: string;
|
|
24
|
+
assigned_robot: string;
|
|
25
|
+
current_task: number;
|
|
26
|
+
metadata?: string;
|
|
27
|
+
created: string;
|
|
28
|
+
mission_status: 'ASSIGNED' | 'BLOCKED' | 'CANCELLED' | 'CANCELLING' | 'EXECUTING' | 'FAILED' | 'QUEUED' | 'REASSIGNED' | 'RESTARTING' | 'REVOKED' | 'STARVED' | 'SUCCEEDED';
|
|
29
|
+
finalized?: boolean;
|
|
30
|
+
paused?: boolean;
|
|
31
|
+
nominal_duration?: string;
|
|
32
|
+
max_duration?: string;
|
|
33
|
+
priority: 100 | number;
|
|
34
|
+
result_text?: string;
|
|
35
|
+
};
|
|
36
|
+
export type OttoFleetManagerApiTask = {
|
|
37
|
+
description?: string;
|
|
38
|
+
task_type: 'CONTAINER_EMPTY' | 'CONTAINER_FILL' | 'LOAD' | 'MOVE' | 'MUTATE' | 'TRANSPORT' | 'UNLOAD' | 'WORK_IN_PLACE';
|
|
39
|
+
task_blocked_action?: 'BLOCK_MISSION' | 'CANCEL_MISSION';
|
|
40
|
+
task_stopped_action?: 'FAIL_MISSION' | 'CANCEL_MISSION';
|
|
41
|
+
place?: string;
|
|
42
|
+
place_group?: string;
|
|
43
|
+
payload?: string;
|
|
44
|
+
new_payload?: string;
|
|
45
|
+
container?: {
|
|
46
|
+
container_id: string;
|
|
47
|
+
container_type_id: string;
|
|
48
|
+
container_type?: string;
|
|
49
|
+
container_empty?: boolean;
|
|
50
|
+
};
|
|
51
|
+
new_container?: {
|
|
52
|
+
container_id: string;
|
|
53
|
+
container_type_id: string;
|
|
54
|
+
container_type?: string;
|
|
55
|
+
container_empty?: boolean;
|
|
56
|
+
};
|
|
57
|
+
steps?: Array<object>;
|
|
58
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { KafkaCallbackResponse, BaseConnectorConfig, ActionInterface, ConnectorInterface, XodJobType } from '@xip-online-data/types';
|
|
2
|
+
import { ConnectorRuntimeInterface } from './connector-runtime.interface';
|
|
3
|
+
import { ConnectorSDKInterface } from './sdk';
|
|
4
|
+
export interface IpcMessage {
|
|
5
|
+
cmd: string;
|
|
6
|
+
message: string;
|
|
7
|
+
}
|
|
8
|
+
export declare abstract class ConnectorRuntimeSDK<T extends BaseConnectorConfig = BaseConnectorConfig> implements ConnectorRuntimeInterface {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(connector: ConnectorInterface, connectorSDK: ConnectorSDKInterface);
|
|
11
|
+
init: () => Promise<void>;
|
|
12
|
+
start: () => Promise<void>;
|
|
13
|
+
stop: () => Promise<void>;
|
|
14
|
+
set callbackFunction(callback: (message: XodJobType, action: ActionInterface) => Promise<KafkaCallbackResponse>);
|
|
15
|
+
protected get connectorSDK(): ConnectorSDKInterface<T>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface FileInfo {
|
|
2
|
+
type: 'DIRECTORY' | 'FILE';
|
|
3
|
+
name: string;
|
|
4
|
+
size: number;
|
|
5
|
+
modifyTime: Date;
|
|
6
|
+
}
|
|
7
|
+
export interface FileHandleInterface {
|
|
8
|
+
readonly path: string;
|
|
9
|
+
get(): Buffer;
|
|
10
|
+
close(): boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface FilesSDKInterface {
|
|
13
|
+
list(path: string): Promise<Array<FileInfo>>;
|
|
14
|
+
read(filePath: string): Promise<FileHandleInterface>;
|
|
15
|
+
write(filePath: string, data: FileHandleInterface | Buffer | string): Promise<boolean>;
|
|
16
|
+
delete(path: string): Promise<boolean>;
|
|
17
|
+
exists(path: string): Promise<boolean>;
|
|
18
|
+
pathAsDsn(path: string): string;
|
|
19
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export interface HttpConfig {
|
|
2
|
+
baseUrl?: string;
|
|
3
|
+
contentType?: string;
|
|
4
|
+
timeout?: number;
|
|
5
|
+
}
|
|
6
|
+
export type HttpRequestOptions<D = string | object> = {
|
|
7
|
+
headers?: Record<string, string>;
|
|
8
|
+
params?: Record<string, string | number | boolean>;
|
|
9
|
+
data?: D;
|
|
10
|
+
withCredentials?: boolean;
|
|
11
|
+
responseType?: 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream' | 'formdata';
|
|
12
|
+
};
|
|
13
|
+
export type HttpRequestOptionsFormatter<D = string | object> = (requestOptions: HttpRequestOptions<D>, method: HttpMethod, url: string) => Promise<HttpRequestOptions<D>> | HttpRequestOptions<D>;
|
|
14
|
+
export type HttpErrorResponseCallbackRequest<D = string | object> = {
|
|
15
|
+
client: HttpClientSDKInterface;
|
|
16
|
+
method: HttpMethod;
|
|
17
|
+
url: string;
|
|
18
|
+
options?: HttpRequestOptions<D>;
|
|
19
|
+
};
|
|
20
|
+
export type HttpErrorResponseCallback<R = unknown, D = string | object> = (error: HttpError, request: HttpErrorResponseCallbackRequest<D>) => HttpClientPromise<R>;
|
|
21
|
+
export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
|
|
22
|
+
export type HttpResponseHeader = string | Array<string> | number | boolean | null;
|
|
23
|
+
export type HttpResponse<D = unknown> = {
|
|
24
|
+
status: number;
|
|
25
|
+
data: D;
|
|
26
|
+
headers?: Record<string, HttpResponseHeader>;
|
|
27
|
+
};
|
|
28
|
+
export type HttpError = {
|
|
29
|
+
status: number;
|
|
30
|
+
error?: string;
|
|
31
|
+
};
|
|
32
|
+
interface PromiseWithReason<T = unknown, R = unknown> extends Promise<T> {
|
|
33
|
+
then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: R) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>;
|
|
34
|
+
catch<TResult = never>(onrejected?: ((reason: R) => TResult | PromiseLike<TResult>) | undefined | null): Promise<T | TResult>;
|
|
35
|
+
}
|
|
36
|
+
export type HttpClientPromise<T> = PromiseWithReason<HttpResponse<T>, HttpError>;
|
|
37
|
+
export interface HttpClientSDKInterface {
|
|
38
|
+
get<R = unknown>(destination: string, options?: HttpRequestOptions): HttpClientPromise<R>;
|
|
39
|
+
post<R = unknown, D = string | object>(destination: string, data: D, options?: HttpRequestOptions<D>): HttpClientPromise<R>;
|
|
40
|
+
put<R = unknown, D = string | object>(destination: string, data: D, options?: HttpRequestOptions<D>): HttpClientPromise<R>;
|
|
41
|
+
patch<R = unknown, D = string | object>(destination: string, data: D, options?: HttpRequestOptions<D>): HttpClientPromise<R>;
|
|
42
|
+
delete<R = unknown>(destination: string, options?: HttpRequestOptions): HttpClientPromise<R>;
|
|
43
|
+
request<R = unknown, D = string | object>(method: HttpMethod, url: string, options?: HttpRequestOptions<D>): HttpClientPromise<R>;
|
|
44
|
+
setRequestOptionsFormatter<D = string | object>(formatter: HttpRequestOptionsFormatter<D>): HttpClientSDKInterface;
|
|
45
|
+
setErrorResponseHandler<R = unknown, D = string | object>(callback?: HttpErrorResponseCallback<R, D>): HttpClientSDKInterface;
|
|
46
|
+
}
|
|
47
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './sdk.interface';
|
|
2
|
+
export * from './http-client.interface';
|
|
3
|
+
export * from './logger.sdk.interface';
|
|
4
|
+
export * from './offset-store.sdk.interface';
|
|
5
|
+
export * from './processing.sdk.interface';
|
|
6
|
+
export * from './receiver.sdk.interface';
|
|
7
|
+
export * from './sender.sdk.interface';
|
|
8
|
+
export * from './telemetry.sdk.interface';
|
|
9
|
+
export * from './templating.sdk.interface';
|
|
10
|
+
export * from './files.sdk.interface';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface StoredOffset {
|
|
2
|
+
timestamp: number;
|
|
3
|
+
id: number | string;
|
|
4
|
+
isoDate?: string;
|
|
5
|
+
date?: string;
|
|
6
|
+
rawTimestamp?: number | string;
|
|
7
|
+
[key: string]: string | number | undefined;
|
|
8
|
+
}
|
|
9
|
+
export interface OffsetStoreSDKInterface {
|
|
10
|
+
getOffset(identifier: string): Promise<StoredOffset>;
|
|
11
|
+
setOffset(offset: StoredOffset, identifier: string): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface IntervalHandler {
|
|
2
|
+
name?: string;
|
|
3
|
+
onInit?: () => Promise<void> | void;
|
|
4
|
+
onRun: () => Promise<void> | void;
|
|
5
|
+
onStop?: () => Promise<void> | void;
|
|
6
|
+
}
|
|
7
|
+
export type RegisterIntervalOptions = {
|
|
8
|
+
immediate?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export interface ProcessingSDKInterface {
|
|
11
|
+
registerInterval(intervalSeconds: number, handler: IntervalHandler, options?: RegisterIntervalOptions): Promise<string>;
|
|
12
|
+
stopInterval(name: string): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ActionInterface, KafkaCallbackResponse, KafkaCallbackResponseType, XodJobType } from '@xip-online-data/types';
|
|
2
|
+
export interface ReceiverSDKInterface {
|
|
3
|
+
readonly responses: {
|
|
4
|
+
readonly ok: KafkaCallbackResponseType;
|
|
5
|
+
readonly created: KafkaCallbackResponseType;
|
|
6
|
+
readonly badRequest: KafkaCallbackResponseType;
|
|
7
|
+
readonly unprocessableEntity: KafkaCallbackResponseType;
|
|
8
|
+
readonly notFound: KafkaCallbackResponseType;
|
|
9
|
+
readonly internalServerError: KafkaCallbackResponseType;
|
|
10
|
+
};
|
|
11
|
+
registerCallback<T extends XodJobType = XodJobType>(callbackFunction: (message: T) => Promise<KafkaCallbackResponse>, eventType?: string, identifier?: string): void;
|
|
12
|
+
getActionConfig(message: XodJobType): Promise<ActionInterface | null>;
|
|
13
|
+
emitEventType<T extends XodJobType = XodJobType>(callbackFunction: (message: T) => Promise<KafkaCallbackResponse>): (message: T) => Promise<KafkaCallbackResponse>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { BaseConnectorConfig } from '@xip-online-data/types';
|
|
2
|
+
import { FilesSDKInterface } from './files.sdk.interface';
|
|
3
|
+
import { HttpClientSDKInterface, HttpConfig } from './http-client.interface';
|
|
4
|
+
import { LoggerSDKInterface } from './logger.sdk.interface';
|
|
5
|
+
import { OffsetStoreSDKInterface } from './offset-store.sdk.interface';
|
|
6
|
+
import { ProcessingSDKInterface } from './processing.sdk.interface';
|
|
7
|
+
import { ReceiverSDKInterface } from './receiver.sdk.interface';
|
|
8
|
+
import { SenderSDKInterface } from './sender.sdk.interface';
|
|
9
|
+
import { TelemetrySDKInterface } from './telemetry.sdk.interface';
|
|
10
|
+
import { TemplatingSDKInterface } from './templating.sdk.interface';
|
|
11
|
+
export interface ConnectorSDKInterface<T = BaseConnectorConfig> {
|
|
12
|
+
get config(): T;
|
|
13
|
+
get logger(): LoggerSDKInterface;
|
|
14
|
+
get sender(): SenderSDKInterface;
|
|
15
|
+
get receiver(): ReceiverSDKInterface;
|
|
16
|
+
get templating(): TemplatingSDKInterface;
|
|
17
|
+
/**
|
|
18
|
+
* Service to schedule and manage processing tasks that need monitoring and retries.
|
|
19
|
+
*/
|
|
20
|
+
get processing(): ProcessingSDKInterface;
|
|
21
|
+
get offsetStore(): OffsetStoreSDKInterface;
|
|
22
|
+
/**
|
|
23
|
+
* Ability to send telemetry data such as gauges and increments on how the connector is performing.
|
|
24
|
+
*/
|
|
25
|
+
get telemetry(): TelemetrySDKInterface;
|
|
26
|
+
/**
|
|
27
|
+
* Get file service instance to access files using a specified DSN. If no DSN is provided, defaults to local file system tmp dir.
|
|
28
|
+
*/
|
|
29
|
+
files(dsn?: string): FilesSDKInterface;
|
|
30
|
+
httpClient(httpConfig?: HttpConfig): HttpClientSDKInterface;
|
|
31
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface Metric {
|
|
2
|
+
key: string;
|
|
3
|
+
value: number;
|
|
4
|
+
}
|
|
5
|
+
export type Metadata = {
|
|
6
|
+
[key: string]: string;
|
|
7
|
+
};
|
|
8
|
+
export interface Context {
|
|
9
|
+
timestamp?: Date;
|
|
10
|
+
ttl?: number;
|
|
11
|
+
extraPayload?: {
|
|
12
|
+
[key: string]: string;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export type Result = boolean | {
|
|
16
|
+
[index: number]: boolean;
|
|
17
|
+
};
|
|
18
|
+
export interface SenderSDKInterface {
|
|
19
|
+
metrics(metrics: Array<Metric>, metadata?: Metadata, context?: Context): Promise<Result>;
|
|
20
|
+
metricsLegacy<T = never>(metrics: Array<T>, metadata?: Metadata, context?: Context, topic?: string): Promise<Result>;
|
|
21
|
+
documents<T = object>(documents: Array<T>, metadata?: Metadata, context?: Context): Promise<Result>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface TelemetrySDKInterface {
|
|
2
|
+
/**
|
|
3
|
+
* Increment a telemetry counter by 1.
|
|
4
|
+
*/
|
|
5
|
+
increment(key: string): void;
|
|
6
|
+
/**
|
|
7
|
+
* Increment a telemetry counter by a specified value. 0 doesn't send any telemetry.
|
|
8
|
+
* A negative value will decrement the counter.
|
|
9
|
+
*/
|
|
10
|
+
increment(key: string, value: number): void;
|
|
11
|
+
/**
|
|
12
|
+
* Send a gauge telemetry metric.
|
|
13
|
+
*/
|
|
14
|
+
gauge(key: string, value: number): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type RuntimeOptions = {
|
|
2
|
+
partial?: boolean;
|
|
3
|
+
};
|
|
4
|
+
export type CompileDelegate<T = unknown> = {
|
|
5
|
+
(context: T, options?: RuntimeOptions): string;
|
|
6
|
+
};
|
|
7
|
+
export type CompileOptions = {
|
|
8
|
+
strict?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export interface TemplatingSDKInterface {
|
|
11
|
+
compile<T = unknown>(input: string, options?: CompileOptions): CompileDelegate<T>;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './null-logger';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './lib/types';
|
|
2
|
+
export * from './lib/response.types';
|
|
3
|
+
export * from './lib/message.types';
|
|
4
|
+
export * from './lib/cube-query-config.types';
|
|
5
|
+
export * from './lib/file-action.types';
|
|
6
|
+
export * from './lib/management-api';
|
|
7
|
+
export * from './lib/http-status-codes.enum';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Query } from '@cubejs-client/core';
|
|
2
|
+
export interface CubeQueryConfig {
|
|
3
|
+
tenantId: string;
|
|
4
|
+
query: Query;
|
|
5
|
+
nullable?: boolean;
|
|
6
|
+
subqueries: Array<CubeSubQueryConfig>;
|
|
7
|
+
}
|
|
8
|
+
export interface CubeSubQueryConfig {
|
|
9
|
+
tenantId?: string;
|
|
10
|
+
query: Query;
|
|
11
|
+
nullable?: boolean;
|
|
12
|
+
field: string;
|
|
13
|
+
joinConditions: Array<CubeJoinCondition>;
|
|
14
|
+
}
|
|
15
|
+
export interface CubeJoinCondition {
|
|
16
|
+
selectField: string;
|
|
17
|
+
operator: string;
|
|
18
|
+
valueField: Array<string>;
|
|
19
|
+
valueMap?: Array<any>;
|
|
20
|
+
}
|