@golemio/waze-ccp 1.2.8 → 1.2.9-dev.2484306206

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 (63) hide show
  1. package/dist/integration-engine/index.d.ts +2 -5
  2. package/dist/integration-engine/index.js +4 -5
  3. package/dist/integration-engine/index.js.map +1 -1
  4. package/dist/integration-engine/{WazeCCPAlertsTransformation.d.ts → transformations/WazeCCPAlertsTransformation.d.ts} +2 -2
  5. package/dist/integration-engine/{WazeCCPAlertsTransformation.js → transformations/WazeCCPAlertsTransformation.js} +3 -3
  6. package/dist/integration-engine/transformations/WazeCCPAlertsTransformation.js.map +1 -0
  7. package/dist/integration-engine/transformations/WazeCCPIrregularitiesTransformation.d.ts +12 -0
  8. package/dist/integration-engine/{WazeCCPIrregularitiesTransformation.js → transformations/WazeCCPIrregularitiesTransformation.js} +10 -38
  9. package/dist/integration-engine/transformations/WazeCCPIrregularitiesTransformation.js.map +1 -0
  10. package/dist/integration-engine/transformations/WazeCCPJamsTransformation.d.ts +12 -0
  11. package/dist/integration-engine/transformations/WazeCCPJamsTransformation.js +41 -0
  12. package/dist/integration-engine/transformations/WazeCCPJamsTransformation.js.map +1 -0
  13. package/dist/integration-engine/transformations/index.d.ts +3 -0
  14. package/dist/integration-engine/transformations/index.js +20 -0
  15. package/dist/integration-engine/transformations/index.js.map +1 -0
  16. package/dist/integration-engine/workers/WazeCCPWorker.d.ts +5 -0
  17. package/dist/integration-engine/workers/WazeCCPWorker.js +21 -0
  18. package/dist/integration-engine/workers/WazeCCPWorker.js.map +1 -0
  19. package/dist/integration-engine/workers/index.d.ts +2 -0
  20. package/dist/integration-engine/workers/index.js +6 -0
  21. package/dist/integration-engine/workers/index.js.map +1 -0
  22. package/dist/integration-engine/workers/tasks/RefreshAlertsInDBTask.d.ts +9 -0
  23. package/dist/integration-engine/workers/tasks/RefreshAlertsInDBTask.js +37 -0
  24. package/dist/integration-engine/workers/tasks/RefreshAlertsInDBTask.js.map +1 -0
  25. package/dist/integration-engine/workers/tasks/RefreshAllDataInDBTask.d.ts +6 -0
  26. package/dist/integration-engine/workers/tasks/RefreshAllDataInDBTask.js +22 -0
  27. package/dist/integration-engine/workers/tasks/RefreshAllDataInDBTask.js.map +1 -0
  28. package/dist/integration-engine/workers/tasks/RefreshIrregularitiesInDBTask.d.ts +10 -0
  29. package/dist/integration-engine/workers/tasks/RefreshIrregularitiesInDBTask.js +46 -0
  30. package/dist/integration-engine/workers/tasks/RefreshIrregularitiesInDBTask.js.map +1 -0
  31. package/dist/integration-engine/workers/tasks/RefreshJamsInDBTask.d.ts +10 -0
  32. package/dist/integration-engine/workers/tasks/RefreshJamsInDBTask.js +46 -0
  33. package/dist/integration-engine/workers/tasks/RefreshJamsInDBTask.js.map +1 -0
  34. package/dist/integration-engine/workers/tasks/index.d.ts +4 -0
  35. package/dist/integration-engine/workers/tasks/index.js +21 -0
  36. package/dist/integration-engine/workers/tasks/index.js.map +1 -0
  37. package/dist/schema-definitions/datasources/InputIrregularitiesJsonSchema.d.ts +3 -116
  38. package/dist/schema-definitions/datasources/InputIrregularitiesJsonSchema.js +2 -0
  39. package/dist/schema-definitions/datasources/InputIrregularitiesJsonSchema.js.map +1 -1
  40. package/dist/schema-definitions/datasources/InputJamsJsonSchema.d.ts +3 -92
  41. package/dist/schema-definitions/datasources/InputJamsJsonSchema.js +7 -0
  42. package/dist/schema-definitions/datasources/InputJamsJsonSchema.js.map +1 -1
  43. package/dist/schema-definitions/datasources/interfaces/IInputIrregularities.d.ts +39 -0
  44. package/dist/schema-definitions/datasources/interfaces/IInputIrregularities.js +3 -0
  45. package/dist/schema-definitions/datasources/interfaces/IInputIrregularities.js.map +1 -0
  46. package/dist/schema-definitions/datasources/interfaces/IInputJams.d.ts +34 -0
  47. package/dist/schema-definitions/datasources/interfaces/IInputJams.js +3 -0
  48. package/dist/schema-definitions/datasources/interfaces/IInputJams.js.map +1 -0
  49. package/docs/asyncapi.yaml +1 -1
  50. package/docs/implementation_documentation.md +45 -1
  51. package/package.json +1 -1
  52. package/dist/integration-engine/WazeCCPAlertsTransformation.js.map +0 -1
  53. package/dist/integration-engine/WazeCCPIrregularitiesTransformation.d.ts +0 -10
  54. package/dist/integration-engine/WazeCCPIrregularitiesTransformation.js.map +0 -1
  55. package/dist/integration-engine/WazeCCPJamsTransformation.d.ts +0 -10
  56. package/dist/integration-engine/WazeCCPJamsTransformation.js +0 -69
  57. package/dist/integration-engine/WazeCCPJamsTransformation.js.map +0 -1
  58. package/dist/integration-engine/WazeCCPWorker.d.ts +0 -17
  59. package/dist/integration-engine/WazeCCPWorker.js +0 -84
  60. package/dist/integration-engine/WazeCCPWorker.js.map +0 -1
  61. package/dist/integration-engine/queueDefinitions.d.ts +0 -3
  62. package/dist/integration-engine/queueDefinitions.js +0 -56
  63. package/dist/integration-engine/queueDefinitions.js.map +0 -1
@@ -1,84 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WazeCCPWorker = void 0;
4
- const WazeAlertsRepository_1 = require("./repositories/WazeAlertsRepository");
5
- const index_1 = require("../schema-definitions/index");
6
- const IrregularityDto_1 = require("../schema-definitions/models/IrregularityDto");
7
- const JamDto_1 = require("../schema-definitions/models/JamDto");
8
- const config_1 = require("@golemio/core/dist/integration-engine/config");
9
- const datasources_1 = require("@golemio/core/dist/integration-engine/datasources");
10
- const HTTPFetchProtocolStrategy_1 = require("@golemio/core/dist/integration-engine/datasources/protocol-strategy/HTTPFetchProtocolStrategy");
11
- const models_1 = require("@golemio/core/dist/integration-engine/models");
12
- const workers_1 = require("@golemio/core/dist/integration-engine/workers");
13
- const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
14
- const _1 = require("./");
15
- const helpers_1 = require("@golemio/core/dist/integration-engine/helpers");
16
- class WazeCCPWorker extends workers_1.BaseWorker {
17
- constructor() {
18
- super();
19
- this.refreshAlertsInDB = async (msg) => {
20
- const data = await this.dataSourceAlerts.getAll();
21
- if (!data.alerts) {
22
- helpers_1.log.warn(`${index_1.WazeCCP.alerts.name}: Data source returned empty data.`);
23
- return;
24
- }
25
- const now = new Date();
26
- const transformationAlerts = new _1.WazeCCPAlertsTransformation(now);
27
- const transformedData = transformationAlerts.transformArray(data.alerts);
28
- await this.modelAlerts.saveAlerts(transformedData);
29
- };
30
- this.refreshIrregularitiesInDB = async (msg) => {
31
- const data = await this.dataSourceIrregularities.getAll();
32
- // enrich data by downloadedAt unix timestamp
33
- const dataWithDownloadAt = { ...data, downloadedAt: new Date() };
34
- const transformedData = await this.transformationIrregularities.transform(dataWithDownloadAt);
35
- await this.modelIrregularities.saveBySqlFunction(transformedData, ["id"]);
36
- };
37
- this.refreshJamsInDB = async (msg) => {
38
- const data = await this.dataSourceJams.getAll();
39
- // enrich data by downloadedAt unix timestamp
40
- const dataWithDownloadAt = { ...data, downloadedAt: new Date() };
41
- const transformedData = await this.transformationJams.transform(dataWithDownloadAt);
42
- await this.modelJams.saveBySqlFunction(transformedData, ["id", "pub_utc_date"]);
43
- };
44
- this.refreshAllDataInDB = async (msg) => {
45
- const queueNames = ["refreshAlertsInDB", "refreshIrregularitiesInDB", "refreshJamsInDB"];
46
- await Promise.all(queueNames.map((queueName) => {
47
- return this.sendMessageToExchange("workers." + this.queuePrefix + "." + queueName, "Just do it!");
48
- }));
49
- };
50
- this.dataSourceAlerts = new datasources_1.DataSource(index_1.WazeCCP.alerts.name + "DataSource", new HTTPFetchProtocolStrategy_1.HTTPFetchProtocolStrategy({
51
- headers: {},
52
- method: "GET",
53
- url: config_1.config.datasources.WazeCCP + "&types=alerts",
54
- }), new datasources_1.JSONDataTypeStrategy({ resultsPath: "" }), new golemio_validator_1.JSONSchemaValidator(index_1.WazeCCP.alerts.name + "DataSource", index_1.WazeCCP.alerts.datasourceJsonSchema));
55
- this.dataSourceIrregularities = new datasources_1.DataSource(index_1.WazeCCP.irregularities.name + "DataSource", new HTTPFetchProtocolStrategy_1.HTTPFetchProtocolStrategy({
56
- headers: {},
57
- method: "GET",
58
- url: config_1.config.datasources.WazeCCP + "&types=irregularities",
59
- }), new datasources_1.JSONDataTypeStrategy({ resultsPath: "" }), new golemio_validator_1.JSONSchemaValidator(index_1.WazeCCP.irregularities.name + "DataSource", index_1.WazeCCP.irregularities.datasourceJsonSchema));
60
- this.dataSourceJams = new datasources_1.DataSource(index_1.WazeCCP.jams.name + "DataSource", new HTTPFetchProtocolStrategy_1.HTTPFetchProtocolStrategy({
61
- headers: {},
62
- method: "GET",
63
- url: config_1.config.datasources.WazeCCP + "&types=traffic",
64
- }), new datasources_1.JSONDataTypeStrategy({ resultsPath: "" }), new golemio_validator_1.JSONSchemaValidator(index_1.WazeCCP.jams.name + "DataSource", index_1.WazeCCP.jams.datasourceJsonSchema));
65
- this.transformationIrregularities = new _1.WazeCCPIrregularitiesTransformation();
66
- this.transformationJams = new _1.WazeCCPJamsTransformation();
67
- this.modelAlerts = new WazeAlertsRepository_1.WazeAlertsRepository();
68
- this.modelIrregularities = new models_1.PostgresModel(index_1.WazeCCP.irregularities.name + "Model", {
69
- outputSequelizeAttributes: IrregularityDto_1.IrregularitiesDto.attributeModel,
70
- pgTableName: index_1.WazeCCP.irregularities.pgTableName,
71
- pgSchema: index_1.WazeCCP.pgSchema,
72
- savingType: "insertOrUpdate",
73
- }, new golemio_validator_1.JSONSchemaValidator(index_1.WazeCCP.irregularities.name + "ModelValidator", IrregularityDto_1.IrregularitiesDto.jsonSchema));
74
- this.modelJams = new models_1.PostgresModel(index_1.WazeCCP.jams.name + "Model", {
75
- outputSequelizeAttributes: JamDto_1.JamDto.attributeModel,
76
- pgTableName: index_1.WazeCCP.jams.pgTableName,
77
- pgSchema: index_1.WazeCCP.pgSchema,
78
- savingType: "insertOrUpdate",
79
- }, new golemio_validator_1.JSONSchemaValidator(index_1.WazeCCP.jams.name + "ModelValidator", JamDto_1.JamDto.jsonSchema));
80
- this.queuePrefix = config_1.config.RABBIT_EXCHANGE_NAME + "." + index_1.WazeCCP.name.toLowerCase();
81
- }
82
- }
83
- exports.WazeCCPWorker = WazeCCPWorker;
84
- //# sourceMappingURL=WazeCCPWorker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WazeCCPWorker.js","sourceRoot":"","sources":["../../src/integration-engine/WazeCCPWorker.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { IQueueDefinition } from "@golemio/core/dist/integration-engine/queueprocessors";
2
- declare const queueDefinitions: IQueueDefinition[];
3
- export { queueDefinitions };
@@ -1,56 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.queueDefinitions = void 0;
4
- const config_1 = require("@golemio/core/dist/integration-engine/config");
5
- const index_1 = require("../schema-definitions/index");
6
- const WazeCCPWorker_1 = require("./WazeCCPWorker");
7
- const queueDefinitions = [
8
- {
9
- name: index_1.WazeCCP.name,
10
- queuePrefix: config_1.config.RABBIT_EXCHANGE_NAME + "." + index_1.WazeCCP.name.toLowerCase(),
11
- queues: [
12
- {
13
- name: "refreshAllDataInDB",
14
- options: {
15
- deadLetterExchange: config_1.config.RABBIT_EXCHANGE_NAME,
16
- deadLetterRoutingKey: "dead",
17
- messageTtl: 4 * 60 * 1000, // 4 minutes
18
- },
19
- worker: WazeCCPWorker_1.WazeCCPWorker,
20
- workerMethod: "refreshAllDataInDB",
21
- },
22
- {
23
- name: "refreshAlertsInDB",
24
- options: {
25
- deadLetterExchange: config_1.config.RABBIT_EXCHANGE_NAME,
26
- deadLetterRoutingKey: "dead",
27
- messageTtl: 90 * 1000, // 90 seconds
28
- },
29
- worker: WazeCCPWorker_1.WazeCCPWorker,
30
- workerMethod: "refreshAlertsInDB",
31
- },
32
- {
33
- name: "refreshIrregularitiesInDB",
34
- options: {
35
- deadLetterExchange: config_1.config.RABBIT_EXCHANGE_NAME,
36
- deadLetterRoutingKey: "dead",
37
- messageTtl: 4 * 60 * 1000, // 4 minutes
38
- },
39
- worker: WazeCCPWorker_1.WazeCCPWorker,
40
- workerMethod: "refreshIrregularitiesInDB",
41
- },
42
- {
43
- name: "refreshJamsInDB",
44
- options: {
45
- deadLetterExchange: config_1.config.RABBIT_EXCHANGE_NAME,
46
- deadLetterRoutingKey: "dead",
47
- messageTtl: 4 * 60 * 1000, // 4 minutes
48
- },
49
- worker: WazeCCPWorker_1.WazeCCPWorker,
50
- workerMethod: "refreshJamsInDB",
51
- },
52
- ],
53
- },
54
- ];
55
- exports.queueDefinitions = queueDefinitions;
56
- //# sourceMappingURL=queueDefinitions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queueDefinitions.js","sourceRoot":"","sources":["../../src/integration-engine/queueDefinitions.ts"],"names":[],"mappings":";;;AAAA,yEAAsE;AAEtE,uDAAqC;AACrC,mDAAkD;AAElD,MAAM,gBAAgB,GAAuB;IACzC;QACI,IAAI,EAAE,eAAO,CAAC,IAAI;QAClB,WAAW,EAAE,eAAM,CAAC,oBAAoB,GAAG,GAAG,GAAG,eAAO,CAAC,IAAI,CAAC,WAAW,EAAE;QAC3E,MAAM,EAAE;YACJ;gBACI,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE;oBACL,kBAAkB,EAAE,eAAM,CAAC,oBAAoB;oBAC/C,oBAAoB,EAAE,MAAM;oBAC5B,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;iBAC1C;gBACD,MAAM,EAAE,6BAAa;gBACrB,YAAY,EAAE,oBAAoB;aACrC;YACD;gBACI,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE;oBACL,kBAAkB,EAAE,eAAM,CAAC,oBAAoB;oBAC/C,oBAAoB,EAAE,MAAM;oBAC5B,UAAU,EAAE,EAAE,GAAG,IAAI,EAAE,aAAa;iBACvC;gBACD,MAAM,EAAE,6BAAa;gBACrB,YAAY,EAAE,mBAAmB;aACpC;YACD;gBACI,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EAAE;oBACL,kBAAkB,EAAE,eAAM,CAAC,oBAAoB;oBAC/C,oBAAoB,EAAE,MAAM;oBAC5B,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;iBAC1C;gBACD,MAAM,EAAE,6BAAa;gBACrB,YAAY,EAAE,2BAA2B;aAC5C;YACD;gBACI,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE;oBACL,kBAAkB,EAAE,eAAM,CAAC,oBAAoB;oBAC/C,oBAAoB,EAAE,MAAM;oBAC5B,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;iBAC1C;gBACD,MAAM,EAAE,6BAAa;gBACrB,YAAY,EAAE,iBAAiB;aAClC;SACJ;KACJ;CACJ,CAAC;AAEO,4CAAgB"}