@cdp-forge/plugin-pipeline-sdk 1.1.4

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.
Files changed (51) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +352 -0
  3. package/config/config.yml +7 -0
  4. package/config/plugin.yml +4 -0
  5. package/dist/ConfigListener.d.ts +11 -0
  6. package/dist/ConfigListener.d.ts.map +1 -0
  7. package/dist/ConfigListener.js +32 -0
  8. package/dist/ConfigListener.js.map +1 -0
  9. package/dist/ConfigReader.d.ts +6 -0
  10. package/dist/ConfigReader.d.ts.map +1 -0
  11. package/dist/ConfigReader.js +51 -0
  12. package/dist/ConfigReader.js.map +1 -0
  13. package/dist/PipelineStage.d.ts +19 -0
  14. package/dist/PipelineStage.d.ts.map +1 -0
  15. package/dist/PipelineStage.js +68 -0
  16. package/dist/PipelineStage.js.map +1 -0
  17. package/dist/config/config.yml +7 -0
  18. package/dist/config/plugin.yml +4 -0
  19. package/dist/config.d.ts +8 -0
  20. package/dist/config.d.ts.map +1 -0
  21. package/dist/config.js +66 -0
  22. package/dist/config.js.map +1 -0
  23. package/dist/gTopics.d.ts +472 -0
  24. package/dist/gTopics.d.ts.map +1 -0
  25. package/dist/gTopics.js +476 -0
  26. package/dist/gTopics.js.map +1 -0
  27. package/dist/index.d.ts +7 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +30 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/plugin/PipelinePluginI.d.ts +6 -0
  32. package/dist/plugin/PipelinePluginI.d.ts.map +1 -0
  33. package/dist/plugin/PipelinePluginI.js +3 -0
  34. package/dist/plugin/PipelinePluginI.js.map +1 -0
  35. package/dist/plugin/Plugin.d.ts +7 -0
  36. package/dist/plugin/Plugin.d.ts.map +1 -0
  37. package/dist/plugin/Plugin.js +12 -0
  38. package/dist/plugin/Plugin.js.map +1 -0
  39. package/dist/server.d.ts +2 -0
  40. package/dist/server.d.ts.map +1 -0
  41. package/dist/server.js +38 -0
  42. package/dist/server.js.map +1 -0
  43. package/dist/startServer.d.ts +9 -0
  44. package/dist/startServer.d.ts.map +1 -0
  45. package/dist/startServer.js +41 -0
  46. package/dist/startServer.js.map +1 -0
  47. package/dist/types.d.ts +79 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +3 -0
  50. package/dist/types.js.map +1 -0
  51. package/package.json +53 -0
package/dist/server.js ADDED
@@ -0,0 +1,38 @@
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 Plugin_1 = __importDefault(require("./plugin/Plugin"));
7
+ const config_1 = __importDefault(require("./config"));
8
+ const PipelineStage_1 = __importDefault(require("./PipelineStage"));
9
+ const ConfigListener_1 = __importDefault(require("./ConfigListener"));
10
+ const stage = new PipelineStage_1.default(new Plugin_1.default());
11
+ const configListener = new ConfigListener_1.default(stage);
12
+ configListener.start().then(() => {
13
+ fetch(`${config_1.default.getInstance().config.pluginManagerUrl}/register`, {
14
+ method: 'POST',
15
+ headers: {
16
+ 'Content-Type': 'application/json',
17
+ },
18
+ body: JSON.stringify(config_1.default.getInstance().config.plugin),
19
+ }).then(res => {
20
+ if (!res.ok) {
21
+ throw new Error(`Failed to register plugin with Template Manager: ${res.statusText}`);
22
+ }
23
+ return res.json();
24
+ }).then(json => {
25
+ if (!json || !json.inputTopic || !json.outputTopic) {
26
+ throw new Error('Failed to fetch plugin configuration from Template Manager.');
27
+ }
28
+ stage.start(json.inputTopic, json.outputTopic);
29
+ });
30
+ });
31
+ const handleExit = async () => {
32
+ console.log('Arresto del server in corso...');
33
+ await stage.stop();
34
+ process.exit(0);
35
+ };
36
+ process.on('SIGINT', handleExit);
37
+ process.on('SIGTERM', handleExit);
38
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;AAAA,6DAAuC;AACvC,sDAA8B;AAC9B,oEAA4C;AAC5C,sEAA8C;AAE9C,MAAM,KAAK,GAAG,IAAI,uBAAa,CAAC,IAAI,gBAAQ,EAAE,CAAC,CAAC;AAEhD,MAAM,cAAc,GAAG,IAAI,wBAAc,CAAC,KAAK,CAAC,CAAC;AACjD,cAAc,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;IAC/B,KAAK,CAAC,GAAG,gBAAM,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,gBAAgB,WAAW,EAAE;QAChE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAM,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;KACzD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACZ,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,oDAAoD,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACb,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;IAC5B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AACjC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import PipelinePluginI from './plugin/PipelinePluginI';
2
+ import { Config } from '@cdp-forge/types';
3
+ import PipelineStage from './PipelineStage';
4
+ import ConfigListener from './ConfigListener';
5
+ export declare function start(plugin: PipelinePluginI, config: Config): Promise<{
6
+ stage: PipelineStage;
7
+ configListener: ConfigListener;
8
+ }>;
9
+ //# sourceMappingURL=startServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startServer.d.ts","sourceRoot":"","sources":["../src/startServer.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,wBAAsB,KAAK,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM;;;GAgChE"}
@@ -0,0 +1,41 @@
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
+ exports.start = start;
7
+ const PipelineStage_1 = __importDefault(require("./PipelineStage"));
8
+ const ConfigListener_1 = __importDefault(require("./ConfigListener"));
9
+ async function start(plugin, config) {
10
+ const stage = new PipelineStage_1.default(plugin, config);
11
+ const configListener = new ConfigListener_1.default(stage, config);
12
+ configListener.start().then(() => {
13
+ fetch(`${config.manager.url}/register`, {
14
+ method: 'POST',
15
+ headers: {
16
+ 'Content-Type': 'application/json',
17
+ },
18
+ body: JSON.stringify(config.plugin),
19
+ }).then(res => {
20
+ if (!res.ok) {
21
+ throw new Error(`Failed to register plugin with Template Manager: ${res.statusText}`);
22
+ }
23
+ return res.json();
24
+ }).then(json => {
25
+ if (!json || !json.inputTopic || !json.outputTopic) {
26
+ throw new Error('Failed to fetch plugin configuration from Template Manager.');
27
+ }
28
+ stage.start(json.inputTopic, json.outputTopic);
29
+ });
30
+ });
31
+ const handleExit = async () => {
32
+ console.log('Arresto del server in corso...');
33
+ await stage.stop();
34
+ process.exit(0);
35
+ };
36
+ process.on('SIGINT', handleExit);
37
+ process.on('SIGTERM', handleExit);
38
+ console.log('Server avviato con successo con plugin personalizzato');
39
+ return { stage, configListener };
40
+ }
41
+ //# sourceMappingURL=startServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startServer.js","sourceRoot":"","sources":["../src/startServer.ts"],"names":[],"mappings":";;;;;AAKA,sBAgCG;AAnCH,oEAA4C;AAC5C,sEAA8C;AAEvC,KAAK,UAAU,KAAK,CAAC,MAAuB,EAAE,MAAc;IAC/D,MAAM,KAAK,GAAG,IAAI,uBAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,IAAI,wBAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzD,cAAc,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAC/B,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,oDAAoD,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YACxF,CAAC;YACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACb,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;YACjF,CAAC;YACD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAC5B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAElC,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACrE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1,79 @@
1
+ import { GoogleTopicsMap } from "./gTopics";
2
+ export interface Product {
3
+ id: string;
4
+ price: number;
5
+ brand?: string;
6
+ category?: string;
7
+ quantity: number;
8
+ currency?: string;
9
+ }
10
+ export interface Log {
11
+ client: number;
12
+ date: string;
13
+ device: {
14
+ browser?: string;
15
+ id: string;
16
+ ip?: string;
17
+ os?: string;
18
+ type?: string;
19
+ userAgent?: string;
20
+ [key: string]: any;
21
+ };
22
+ event: string;
23
+ geo?: {
24
+ city?: string;
25
+ country?: string;
26
+ point?: {
27
+ type: string;
28
+ coordinates: number[];
29
+ };
30
+ region?: string;
31
+ zipCode?: string;
32
+ timeZone?: string;
33
+ [key: string]: any;
34
+ };
35
+ googleTopics?: GoogleTopic[];
36
+ instance: number;
37
+ page: {
38
+ description?: string;
39
+ href?: string;
40
+ image?: string;
41
+ title: string;
42
+ type?: string;
43
+ [key: string]: any;
44
+ };
45
+ product?: Product[];
46
+ referrer?: string;
47
+ session: string;
48
+ target?: string;
49
+ order?: string;
50
+ [key: string]: any;
51
+ }
52
+ export interface GoogleTopic {
53
+ id: keyof typeof GoogleTopicsMap;
54
+ name: (typeof GoogleTopicsMap)[keyof typeof GoogleTopicsMap];
55
+ }
56
+ export interface ConfigMessage {
57
+ inputTopic: string;
58
+ outputTopic: string | null;
59
+ plugin: string;
60
+ }
61
+ export interface Config {
62
+ manager: {
63
+ url: string;
64
+ config_topic: string;
65
+ };
66
+ plugin: {
67
+ name: string;
68
+ priority: number;
69
+ type: 'parallel' | 'blocking';
70
+ };
71
+ kafkaConfig: {
72
+ brokers: string[];
73
+ };
74
+ mysqlConfig?: {
75
+ uri: string;
76
+ };
77
+ [key: string]: any;
78
+ }
79
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,GAAG;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QACJ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACtB,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE;QACF,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE;YACJ,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,MAAM,EAAE,CAAC;SACzB,CAAC;QACF,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACtB,CAAC;IACF,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE;QACF,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACtB,CAAC;IACF,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,OAAO,eAAe,CAAC;IACjC,IAAI,EAAE,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,aAAa;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,MAAM;IACnB,OAAO,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,YAAY,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,MAAM,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;KACjC,CAAC;IACF,WAAW,EAAE;QACT,OAAO,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,WAAW,CAAC,EAAE;QACV,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@cdp-forge/plugin-pipeline-sdk",
3
+ "version": "1.1.4",
4
+ "description": "SDK for pipeline plugins for CDP Forge platform",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist/**/*",
9
+ "config/**/*",
10
+ "README.md",
11
+ "LICENSE"
12
+ ],
13
+ "scripts": {
14
+ "test": "npx jest",
15
+ "test:build": "tsc -p tsconfig.test.json",
16
+ "build": "tsc",
17
+ "postbuild": "cp -R ./config ./dist",
18
+ "prepublishOnly": "npm run build",
19
+ "clean": "rm -rf dist"
20
+ },
21
+ "keywords": [
22
+ "plugin-pipeline",
23
+ "CDP",
24
+ "Forge"
25
+ ],
26
+ "author": "CDP Forge",
27
+ "license": "GPL-3.0",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git+https://github.com/CDPForge/plugin-pipeline-template.git"
31
+ },
32
+ "bugs": {
33
+ "url": "https://github.com/CDPForge/plugin-pipeline-template/issues"
34
+ },
35
+ "homepage": "https://github.com/CDPForge/plugin-pipeline-template#readme",
36
+ "dependencies": {
37
+ "@cdp-forge/types": "^1.0.0",
38
+ "kafkajs": "^2.2.4",
39
+ "node-fetch": "^3.3.2",
40
+ "yaml": "^2.7.0"
41
+ },
42
+ "devDependencies": {
43
+ "@types/jest": "^29.5.14",
44
+ "@types/node": "^20.12.12",
45
+ "jest": "^29.7.0",
46
+ "nodemon": "^3.1.0",
47
+ "ts-jest": "^29.2.5",
48
+ "typescript": "^5.7.3"
49
+ },
50
+ "engines": {
51
+ "node": ">=16.0.0"
52
+ }
53
+ }