odsl-javascript-sdk 1.0.3 → 1.0.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 (2) hide show
  1. package/package.json +5 -3
  2. package/src/process.js +86 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "odsl-javascript-sdk",
3
3
  "type": "module",
4
- "version": "1.0.3",
4
+ "version": "1.0.4",
5
5
  "description": "Javascript SDK for OpenDataDSL",
6
6
  "main": "src/sdk.js",
7
7
  "scripts": {
@@ -26,11 +26,13 @@
26
26
  },
27
27
  "homepage": "https://github.com/OpenDataDSL/odsl-javascript-sdk#readme",
28
28
  "dependencies": {
29
+ "@azure/identity": "^4.13.0",
29
30
  "@azure/msal-node": "^2.6.6",
31
+ "@azure/service-bus": "^7.9.5",
30
32
  "xmlhttprequest": "^1.8.0"
31
33
  },
32
34
  "devDependencies": {
33
- "mocha": "^10.4.0",
34
- "dotenv": "^16.4.5"
35
+ "dotenv": "^16.4.5",
36
+ "mocha": "^10.4.0"
35
37
  }
36
38
  }
package/src/process.js ADDED
@@ -0,0 +1,86 @@
1
+ const { ServiceBusClient, ServiceBusMessage } = require("@azure/service-bus");
2
+
3
+ export default class PROCESS {
4
+ constructor(p, task) {
5
+ this.process = p;
6
+ this.task = task;
7
+ var cstr = process.env.ODSL_SB_URL;
8
+ this.serviceBusClient = new ServiceBusClient(cstr);
9
+ this.started = false;
10
+ this.queue_name = process.env.ODSL_STAGE + "/process-execution";
11
+ }
12
+
13
+ async startProcess() {
14
+ if (!this.started) {
15
+ console.log("Starting process for task: " + this.task._id);
16
+ var message = new ProcessMessage(this.process, this.task);
17
+ message.status = "start";
18
+ message.message = "Initialising Process";
19
+ await this.updateProcess(message);
20
+ }
21
+ }
22
+
23
+ async endProcess(status, mess) {
24
+ var message = new ProcessMessage(this.process, this.task);
25
+ message.status = status;
26
+ message.message = mess;
27
+ await this.updateProcess(message);
28
+ }
29
+
30
+ async startPhase(name) {
31
+ self.phase = new ProcessMessage(this.process, this.task);
32
+ self.phase.status = "running";
33
+ self.phase.message = "Initialising Phase: " + name;
34
+ self.phase.setPhase(name);
35
+ await this.updateProcess(message);
36
+ }
37
+
38
+ async endPhase(status, mess) {
39
+ self.phase.status = status;
40
+ self.phase.message = mess;
41
+ self.phase.timestamp = new Date().toISOString();
42
+ let level = status == "failed" ? "fatal" : "info"
43
+ let lm = new Date().toISOString() + " " + level + " " + mess;
44
+ self.phase.log.push(lm);
45
+ await this.updateProcess(message);
46
+ }
47
+
48
+ async logMessage(level, mess) {
49
+ let lm = new Date().toISOString() + " " + level + " " + mess;
50
+ self.phase.log.push(lm);
51
+ await this.updateProcess(message);
52
+ }
53
+
54
+ async updateProcess(message) {
55
+ var sbm = new ServiceBusMessage(JSON.stringify(message));
56
+ sbm.application_properties = {
57
+ tenantid: this.task.tid,
58
+ environment: this.task.environment
59
+ };
60
+ sender = this.serviceBusClient.createSender(this.queue_name);
61
+ await sender.sendMessages(sbm);
62
+ }
63
+ }
64
+
65
+ class ProcessMessage {
66
+ constructor(p, t) {
67
+ this.log = [];
68
+ this.timestamp = new Date().toISOString();
69
+ this.type = "ProcessMessage";
70
+ this.id = t._id;
71
+ this.tenantid = t.tid;
72
+ this.service = p.service;
73
+ this.name = p.name;
74
+ this.stage = process.env.ODSL_STAGE;
75
+ this.environment = t.environment;
76
+ this.trigger = t.trigger;
77
+ this.triggerTime = t.triggerTime;
78
+ this.reason = t.reason;
79
+ this.status = "triggered";
80
+ this.message = "";
81
+ }
82
+
83
+ setPhase(name) {
84
+ this.phase = name;
85
+ }
86
+ }