@alwaysai/device-agent 0.2.0 → 1.0.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/LICENSE +12 -0
- package/lib/application-control/config.d.ts.map +1 -1
- package/lib/application-control/config.js +6 -1
- package/lib/application-control/config.js.map +1 -1
- package/lib/application-control/index.d.ts +2 -2
- package/lib/application-control/index.d.ts.map +1 -1
- package/lib/application-control/index.js +2 -2
- package/lib/application-control/index.js.map +1 -1
- package/lib/application-control/install.d.ts +2 -2
- package/lib/application-control/install.d.ts.map +1 -1
- package/lib/application-control/install.js +10 -0
- package/lib/application-control/install.js.map +1 -1
- package/lib/application-control/status.d.ts +3 -3
- package/lib/application-control/status.d.ts.map +1 -1
- package/lib/application-control/status.js +4 -4
- package/lib/application-control/status.js.map +1 -1
- package/lib/cloud-connection/device-agent-cloud-connection.d.ts +7 -7
- package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -1
- package/lib/cloud-connection/device-agent-cloud-connection.js +158 -100
- package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -1
- package/lib/cloud-connection/live-updates-handler.d.ts +9 -9
- package/lib/cloud-connection/live-updates-handler.d.ts.map +1 -1
- package/lib/cloud-connection/live-updates-handler.js +45 -42
- package/lib/cloud-connection/live-updates-handler.js.map +1 -1
- package/lib/cloud-connection/live-updates-handler.test.js +6 -5
- package/lib/cloud-connection/live-updates-handler.test.js.map +1 -1
- package/lib/cloud-connection/message-builder.d.ts +7 -0
- package/lib/cloud-connection/message-builder.d.ts.map +1 -0
- package/lib/cloud-connection/message-builder.js +63 -0
- package/lib/cloud-connection/message-builder.js.map +1 -0
- package/lib/cloud-connection/messages.d.ts +5 -15
- package/lib/cloud-connection/messages.d.ts.map +1 -1
- package/lib/cloud-connection/messages.js +22 -31
- package/lib/cloud-connection/messages.js.map +1 -1
- package/lib/cloud-connection/publisher.d.ts +4 -5
- package/lib/cloud-connection/publisher.d.ts.map +1 -1
- package/lib/cloud-connection/publisher.js +12 -21
- package/lib/cloud-connection/publisher.js.map +1 -1
- package/lib/cloud-connection/transaction-queue.d.ts +12 -0
- package/lib/cloud-connection/transaction-queue.d.ts.map +1 -0
- package/lib/cloud-connection/transaction-queue.js +38 -0
- package/lib/cloud-connection/transaction-queue.js.map +1 -0
- package/lib/cloud-connection/transaction-queue.test.d.ts +2 -0
- package/lib/cloud-connection/transaction-queue.test.d.ts.map +1 -0
- package/lib/cloud-connection/transaction-queue.test.js +46 -0
- package/lib/cloud-connection/transaction-queue.test.js.map +1 -0
- package/lib/local-connection/rabbitmq-connection.d.ts.map +1 -1
- package/lib/local-connection/rabbitmq-connection.js +5 -1
- package/lib/local-connection/rabbitmq-connection.js.map +1 -1
- package/lib/subcommands/app/index.d.ts.map +1 -1
- package/lib/subcommands/app/index.js +1 -0
- package/lib/subcommands/app/index.js.map +1 -1
- package/lib/subcommands/app/models.d.ts +5 -0
- package/lib/subcommands/app/models.d.ts.map +1 -1
- package/lib/subcommands/app/models.js +42 -1
- package/lib/subcommands/app/models.js.map +1 -1
- package/lib/subcommands/app/status.js +1 -1
- package/lib/subcommands/app/status.js.map +1 -1
- package/lib/subcommands/app/version.d.ts.map +1 -1
- package/lib/subcommands/app/version.js +9 -11
- package/lib/subcommands/app/version.js.map +1 -1
- package/lib/util/logger.d.ts.map +1 -1
- package/lib/util/logger.js +3 -1
- package/lib/util/logger.js.map +1 -1
- package/package.json +5 -4
- package/readme.md +30 -1
- package/src/application-control/config.ts +5 -1
- package/src/application-control/index.ts +2 -2
- package/src/application-control/install.ts +17 -4
- package/src/application-control/status.ts +9 -8
- package/src/cloud-connection/device-agent-cloud-connection.ts +225 -132
- package/src/cloud-connection/live-updates-handler.test.ts +6 -5
- package/src/cloud-connection/live-updates-handler.ts +90 -64
- package/src/cloud-connection/message-builder.ts +117 -0
- package/src/cloud-connection/messages.ts +27 -35
- package/src/cloud-connection/publisher.ts +17 -30
- package/src/cloud-connection/transaction-queue.test.ts +55 -0
- package/src/cloud-connection/transaction-queue.ts +40 -0
- package/src/local-connection/rabbitmq-connection.ts +5 -1
- package/src/subcommands/app/index.ts +3 -1
- package/src/subcommands/app/models.ts +44 -0
- package/src/subcommands/app/status.ts +2 -2
- package/src/subcommands/app/version.ts +16 -14
- package/src/util/logger.ts +5 -1
|
@@ -7,6 +7,7 @@ const logger_1 = require("../util/logger");
|
|
|
7
7
|
const sleep_1 = require("../util/sleep");
|
|
8
8
|
const messages_1 = require("./messages");
|
|
9
9
|
const environment_1 = require("../environment");
|
|
10
|
+
const message_builder_1 = require("./message-builder");
|
|
10
11
|
const LIVE_UPDATES_TIMEOUT = environment_1.ALWAYSAI_LIVE_UPDATES_TIMEOUT_MS
|
|
11
12
|
? parseInt(environment_1.ALWAYSAI_LIVE_UPDATES_TIMEOUT_MS)
|
|
12
13
|
: 60000;
|
|
@@ -14,22 +15,23 @@ class LiveUpdatesHandler {
|
|
|
14
15
|
/*=================================================================
|
|
15
16
|
Public interface
|
|
16
17
|
=================================================================*/
|
|
17
|
-
constructor(publisher) {
|
|
18
|
+
constructor(publisher, clientId) {
|
|
18
19
|
this.liveUpdatesAlive = {
|
|
19
|
-
[device_agent_schemas_1.keyMirrors.
|
|
20
|
-
[device_agent_schemas_1.keyMirrors.
|
|
21
|
-
[device_agent_schemas_1.keyMirrors.
|
|
22
|
-
[device_agent_schemas_1.keyMirrors.
|
|
20
|
+
[device_agent_schemas_1.keyMirrors.toClientMessageType.device_stats]: false,
|
|
21
|
+
[device_agent_schemas_1.keyMirrors.toClientMessageType.app_state]: false,
|
|
22
|
+
[device_agent_schemas_1.keyMirrors.toClientMessageType.app_logs]: false,
|
|
23
|
+
[device_agent_schemas_1.keyMirrors.toClientMessageType.status_response]: false
|
|
23
24
|
};
|
|
24
25
|
this.liveUpdatesSleepIntervals = {
|
|
25
|
-
[device_agent_schemas_1.keyMirrors.
|
|
26
|
-
[device_agent_schemas_1.keyMirrors.
|
|
27
|
-
[device_agent_schemas_1.keyMirrors.
|
|
28
|
-
[device_agent_schemas_1.keyMirrors.
|
|
26
|
+
[device_agent_schemas_1.keyMirrors.toClientMessageType.device_stats]: 5000,
|
|
27
|
+
[device_agent_schemas_1.keyMirrors.toClientMessageType.app_state]: 5000,
|
|
28
|
+
[device_agent_schemas_1.keyMirrors.toClientMessageType.app_logs]: 5000,
|
|
29
|
+
[device_agent_schemas_1.keyMirrors.toClientMessageType.status_response]: 5000
|
|
29
30
|
};
|
|
30
31
|
this.appLogStreams = new Set();
|
|
31
|
-
this.
|
|
32
|
+
this.transactionStatuses = new Set();
|
|
32
33
|
this.publisher = publisher;
|
|
34
|
+
this.clientId = clientId;
|
|
33
35
|
logger_1.logger.debug(`Toggle live updates timeout set to ${LIVE_UPDATES_TIMEOUT} ms`);
|
|
34
36
|
}
|
|
35
37
|
async startAppLogStream(projectId) {
|
|
@@ -39,7 +41,7 @@ class LiveUpdatesHandler {
|
|
|
39
41
|
projectId,
|
|
40
42
|
args: ['--tail', '100', '--no-log-prefix']
|
|
41
43
|
});
|
|
42
|
-
readable.on('data', (chunk) => {
|
|
44
|
+
readable.on('data', async (chunk) => {
|
|
43
45
|
if (!this.appLogStreams.has(projectId)) {
|
|
44
46
|
// why doesn't typescript know about this function?
|
|
45
47
|
// @ts-ignore
|
|
@@ -48,13 +50,11 @@ class LiveUpdatesHandler {
|
|
|
48
50
|
return;
|
|
49
51
|
}
|
|
50
52
|
const logStr = chunk.toString();
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
projectId,
|
|
55
|
-
logChunk: logStr
|
|
56
|
-
}
|
|
53
|
+
const payload = {
|
|
54
|
+
projectId,
|
|
55
|
+
logChunk: logStr
|
|
57
56
|
};
|
|
57
|
+
const message = await (0, message_builder_1.buildAppLogsMessage)(payload, this.clientId);
|
|
58
58
|
this.publisher.publishToClient(message);
|
|
59
59
|
});
|
|
60
60
|
readable.on('error', (error) => {
|
|
@@ -64,16 +64,16 @@ class LiveUpdatesHandler {
|
|
|
64
64
|
logger_1.logger.info(`App logs finished piping for project ${projectId}`);
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
|
-
continuePublishing(flag,
|
|
67
|
+
continuePublishing(flag, txId) {
|
|
68
68
|
switch (flag) {
|
|
69
|
-
case device_agent_schemas_1.keyMirrors.
|
|
70
|
-
case device_agent_schemas_1.keyMirrors.
|
|
69
|
+
case device_agent_schemas_1.keyMirrors.toClientMessageType.device_stats:
|
|
70
|
+
case device_agent_schemas_1.keyMirrors.toClientMessageType.app_state:
|
|
71
71
|
return this.liveUpdatesAlive[flag];
|
|
72
|
-
case device_agent_schemas_1.keyMirrors.
|
|
73
|
-
if (!
|
|
74
|
-
throw new Error(`
|
|
72
|
+
case device_agent_schemas_1.keyMirrors.toClientMessageType.status_response: {
|
|
73
|
+
if (!txId) {
|
|
74
|
+
throw new Error(`Transaction ID not provided to continuePublishing!`);
|
|
75
75
|
}
|
|
76
|
-
return this.
|
|
76
|
+
return this.transactionStatuses.has(txId);
|
|
77
77
|
}
|
|
78
78
|
default:
|
|
79
79
|
logger_1.logger.error(`Unrecognized publishable flag ${flag}`);
|
|
@@ -93,7 +93,7 @@ class LiveUpdatesHandler {
|
|
|
93
93
|
this.liveUpdatesAlive.device_stats = toggles.deviceStats;
|
|
94
94
|
}
|
|
95
95
|
if (toggles.appState !== undefined) {
|
|
96
|
-
this.liveUpdatesAlive.
|
|
96
|
+
this.liveUpdatesAlive.app_logs = toggles.appState;
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
restartLiveUpdatesTimeout() {
|
|
@@ -106,16 +106,19 @@ class LiveUpdatesHandler {
|
|
|
106
106
|
this.appLogStreams.clear();
|
|
107
107
|
}, LIVE_UPDATES_TIMEOUT);
|
|
108
108
|
}
|
|
109
|
-
async startPublishingLiveUpdates(messageType,
|
|
109
|
+
async startPublishingLiveUpdates(messageType, payloadBuilderFunction, messageBuilderFunction, args, txId) {
|
|
110
110
|
logger_1.logger.info(`Turned on live updates for ${messageType}`);
|
|
111
111
|
// eslint-disable-next-line no-constant-condition
|
|
112
112
|
while (true) {
|
|
113
113
|
try {
|
|
114
|
-
|
|
115
|
-
if (!this.continuePublishing(messageType, projectId)) {
|
|
114
|
+
if (!this.continuePublishing(messageType, txId)) {
|
|
116
115
|
logger_1.logger.info(`Turned off live updates for ${messageType}`);
|
|
117
116
|
break;
|
|
118
117
|
}
|
|
118
|
+
const payload = await payloadBuilderFunction(...args);
|
|
119
|
+
logger_1.logger.debug(`payload returned from builder: ${JSON.stringify(payload)}`);
|
|
120
|
+
const message = await messageBuilderFunction(payload, txId);
|
|
121
|
+
logger_1.logger.debug(`message returned from builder: ${JSON.stringify(message)}`);
|
|
119
122
|
this.publisher.publishToClient(message);
|
|
120
123
|
}
|
|
121
124
|
catch (e) {
|
|
@@ -133,23 +136,23 @@ class LiveUpdatesHandler {
|
|
|
133
136
|
getAppLogsLiveUpdates() {
|
|
134
137
|
return this.liveUpdatesAlive.app_logs;
|
|
135
138
|
}
|
|
136
|
-
async
|
|
137
|
-
const {
|
|
138
|
-
this.liveUpdatesAlive.
|
|
139
|
-
if (!this.
|
|
140
|
-
this.
|
|
139
|
+
async enableTransactionStatus(props) {
|
|
140
|
+
const { txId } = props;
|
|
141
|
+
this.liveUpdatesAlive.status_response = true;
|
|
142
|
+
if (!this.transactionStatuses.has(txId)) {
|
|
143
|
+
this.transactionStatuses.add(txId);
|
|
141
144
|
// Don't wait for this call to finish since it loops until disabled
|
|
142
|
-
void this.startPublishingLiveUpdates(device_agent_schemas_1.keyMirrors.
|
|
145
|
+
void this.startPublishingLiveUpdates(device_agent_schemas_1.keyMirrors.toClientMessageType.status_response, messages_1.getStatusResponsePayload, message_builder_1.buildStatusResponseMessage, [device_agent_schemas_1.keyMirrors.statusResponse.in_progress, ''], txId);
|
|
143
146
|
}
|
|
144
147
|
}
|
|
145
|
-
async
|
|
146
|
-
const {
|
|
147
|
-
this.
|
|
148
|
-
if (this.
|
|
149
|
-
this.liveUpdatesAlive.
|
|
148
|
+
async disableTransactionStatus(props) {
|
|
149
|
+
const { txId } = props;
|
|
150
|
+
this.transactionStatuses.delete(txId);
|
|
151
|
+
if (this.transactionStatuses.size === 0) {
|
|
152
|
+
this.liveUpdatesAlive.status_response = false;
|
|
150
153
|
}
|
|
151
154
|
}
|
|
152
|
-
async handleToggles(toggles) {
|
|
155
|
+
async handleToggles(toggles, txId) {
|
|
153
156
|
const { deviceStats, appState, appLogs } = toggles;
|
|
154
157
|
this.restartLiveUpdatesTimeout();
|
|
155
158
|
const currentDeviceStats = this.getDeviceStatsLiveUpdates();
|
|
@@ -157,7 +160,7 @@ class LiveUpdatesHandler {
|
|
|
157
160
|
this.liveUpdatesAlive.device_stats = deviceStats;
|
|
158
161
|
if (deviceStats && currentDeviceStats !== true) {
|
|
159
162
|
// Don't wait for this call to finish since it loops until disabled
|
|
160
|
-
void this.startPublishingLiveUpdates(device_agent_schemas_1.keyMirrors.
|
|
163
|
+
void this.startPublishingLiveUpdates(device_agent_schemas_1.keyMirrors.toClientMessageType.device_stats, messages_1.getDeviceStatsPayload, message_builder_1.buildDeviceStatsMessage, [], txId);
|
|
161
164
|
}
|
|
162
165
|
}
|
|
163
166
|
const currentAppState = this.getAppStateLiveUpdates();
|
|
@@ -165,7 +168,7 @@ class LiveUpdatesHandler {
|
|
|
165
168
|
this.liveUpdatesAlive.app_state = appState;
|
|
166
169
|
if (appState && currentAppState !== true) {
|
|
167
170
|
// Don't wait for this call to finish since it loops until disabled
|
|
168
|
-
void this.startPublishingLiveUpdates(device_agent_schemas_1.keyMirrors.
|
|
171
|
+
void this.startPublishingLiveUpdates(device_agent_schemas_1.keyMirrors.toClientMessageType.app_state, messages_1.getAppStatePayload, message_builder_1.buildAppStateMessage, [], txId);
|
|
169
172
|
}
|
|
170
173
|
}
|
|
171
174
|
const currentAppLogs = this.getAppLogsLiveUpdates();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-updates-handler.js","sourceRoot":"","sources":["../../src/cloud-connection/live-updates-handler.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"live-updates-handler.js","sourceRoot":"","sources":["../../src/cloud-connection/live-updates-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ const testFalseToggles = {
|
|
|
12
12
|
};
|
|
13
13
|
const mockClient = jest.fn();
|
|
14
14
|
const clientId = 'test-client';
|
|
15
|
+
const emptyTxId = '';
|
|
15
16
|
jest.spyOn(global, 'setTimeout');
|
|
16
17
|
// NOTE: this was the way I found to mock private class functions
|
|
17
18
|
const mockStartPublishingLiveUpdates = jest.spyOn(live_updates_handler_1.LiveUpdatesHandler.prototype, 'startPublishingLiveUpdates');
|
|
@@ -21,24 +22,24 @@ describe('Test Live Updates Handler', () => {
|
|
|
21
22
|
let publisher;
|
|
22
23
|
beforeEach(() => {
|
|
23
24
|
publisher = new publisher_1.Publisher(mockClient, clientId);
|
|
24
|
-
liveUpdatesHandler = new live_updates_handler_1.LiveUpdatesHandler(publisher);
|
|
25
|
+
liveUpdatesHandler = new live_updates_handler_1.LiveUpdatesHandler(publisher, clientId);
|
|
25
26
|
jest.clearAllMocks();
|
|
26
27
|
});
|
|
27
28
|
test('ignore subsequent enables', async () => {
|
|
28
|
-
void liveUpdatesHandler.handleToggles(testTrueToggles);
|
|
29
|
+
void liveUpdatesHandler.handleToggles(testTrueToggles, emptyTxId);
|
|
29
30
|
// called twice, once for device stats, once for app state
|
|
30
31
|
expect(mockStartPublishingLiveUpdates).toBeCalledTimes(2);
|
|
31
32
|
// restartLiveUpdatesTimeout is always called once when handleToggles is called
|
|
32
33
|
expect(jest.mocked(setTimeout)).toBeCalledTimes(1);
|
|
33
34
|
// Second call -> should not call startPublishingLiveUpdates should not be called
|
|
34
35
|
jest.clearAllMocks();
|
|
35
|
-
void liveUpdatesHandler.handleToggles(testTrueToggles);
|
|
36
|
+
void liveUpdatesHandler.handleToggles(testTrueToggles, emptyTxId);
|
|
36
37
|
expect(mockStartPublishingLiveUpdates).toBeCalledTimes(0);
|
|
37
38
|
expect(jest.mocked(setTimeout)).toHaveBeenCalledTimes(1);
|
|
38
39
|
});
|
|
39
40
|
test('test disable live updates', async () => {
|
|
40
41
|
// Test calling handleToggles one time, enabling it
|
|
41
|
-
void liveUpdatesHandler.handleToggles(testTrueToggles);
|
|
42
|
+
void liveUpdatesHandler.handleToggles(testTrueToggles, emptyTxId);
|
|
42
43
|
expect(mockStartPublishingLiveUpdates).toBeCalledTimes(2);
|
|
43
44
|
expect(jest.mocked(setTimeout)).toHaveBeenCalledTimes(1);
|
|
44
45
|
expect(liveUpdatesHandler.getDeviceStatsLiveUpdates()).toBe(true);
|
|
@@ -46,7 +47,7 @@ describe('Test Live Updates Handler', () => {
|
|
|
46
47
|
expect(liveUpdatesHandler.getAppLogsLiveUpdates()).toBe(false);
|
|
47
48
|
// Check to see that attributes are properly set to false when disabled
|
|
48
49
|
jest.clearAllMocks();
|
|
49
|
-
void liveUpdatesHandler.handleToggles(testFalseToggles);
|
|
50
|
+
void liveUpdatesHandler.handleToggles(testFalseToggles, emptyTxId);
|
|
50
51
|
expect(mockStartPublishingLiveUpdates).toBeCalledTimes(0);
|
|
51
52
|
expect(jest.mocked(setTimeout)).toHaveBeenCalledTimes(1);
|
|
52
53
|
expect(liveUpdatesHandler.getDeviceStatsLiveUpdates()).toBe(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-updates-handler.test.js","sourceRoot":"","sources":["../../src/cloud-connection/live-updates-handler.test.ts"],"names":[],"mappings":";;AAAA,iEAA4D;AAC5D,2CAAwC;AAExC,MAAM,eAAe,GAAG;IACtB,WAAW,EAAE,IAAI;IACjB,QAAQ,EAAE,IAAI;CACf,CAAC;AAEF,MAAM,gBAAgB,GAAG;IACvB,WAAW,EAAE,KAAK;IAClB,QAAQ,EAAE,KAAK;CAChB,CAAC;AAEF,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAC7B,MAAM,QAAQ,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"live-updates-handler.test.js","sourceRoot":"","sources":["../../src/cloud-connection/live-updates-handler.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AppLogsMessage, AppLogsPayload, AppStateMessage, AppStatePayload, DeviceStatsMessage, DeviceStatsPayload, SignedUrlsRequestMessage, SignedUrlsRequestPayload, StatusResponseMessage, StatusResponsePayload } from '@alwaysai/device-agent-schemas';
|
|
2
|
+
export declare function buildAppLogsMessage(payload: AppLogsPayload, txId?: string): Promise<AppLogsMessage>;
|
|
3
|
+
export declare function buildAppStateMessage(payload: AppStatePayload, txId?: string): Promise<AppStateMessage>;
|
|
4
|
+
export declare function buildSignedUrlsRequestMessage(payload: SignedUrlsRequestPayload, txId?: string): Promise<SignedUrlsRequestMessage>;
|
|
5
|
+
export declare function buildStatusResponseMessage(payload: StatusResponsePayload, txId?: string): Promise<StatusResponseMessage>;
|
|
6
|
+
export declare function buildDeviceStatsMessage(payload: DeviceStatsPayload, txId?: string): Promise<DeviceStatsMessage>;
|
|
7
|
+
//# sourceMappingURL=message-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-builder.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/message-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,cAAc,EACd,eAAe,EAEf,eAAe,EAEf,kBAAkB,EAElB,kBAAkB,EAClB,wBAAwB,EAExB,wBAAwB,EACxB,qBAAqB,EAErB,qBAAqB,EAKtB,MAAM,gCAAgC,CAAC;AAiBxC,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,cAAc,EACvB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,cAAc,CAAC,CAUzB;AAGD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,eAAe,EACxB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,eAAe,CAAC,CAU1B;AAGD,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,wBAAwB,EACjC,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,wBAAwB,CAAC,CAUnC;AAGD,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,qBAAqB,EAC9B,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,qBAAqB,CAAC,CAWhC;AAGD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,kBAAkB,EAC3B,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,CAAC,CAU7B"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildDeviceStatsMessage = exports.buildStatusResponseMessage = exports.buildSignedUrlsRequestMessage = exports.buildAppStateMessage = exports.buildAppLogsMessage = void 0;
|
|
4
|
+
const device_agent_schemas_1 = require("@alwaysai/device-agent-schemas");
|
|
5
|
+
const get_device_id_1 = require("../util/get-device-id");
|
|
6
|
+
function buildBaseClientMessage(txId) {
|
|
7
|
+
const clientId = (0, get_device_id_1.getDeviceUuid)();
|
|
8
|
+
const baseClientMessage = {
|
|
9
|
+
timestamp: new Date().toUTCString(),
|
|
10
|
+
deviceId: clientId,
|
|
11
|
+
topic: (0, device_agent_schemas_1.getToClientTopic)(clientId),
|
|
12
|
+
txId: txId || (0, device_agent_schemas_1.generateTxId)()
|
|
13
|
+
};
|
|
14
|
+
return baseClientMessage;
|
|
15
|
+
}
|
|
16
|
+
// Public Message Builders
|
|
17
|
+
// app logs
|
|
18
|
+
async function buildAppLogsMessage(payload, txId) {
|
|
19
|
+
const baseMessage = buildBaseClientMessage(txId);
|
|
20
|
+
const messageType = device_agent_schemas_1.keyMirrors.toClientMessageType.app_logs;
|
|
21
|
+
const message = Object.assign(Object.assign({}, baseMessage), { messageType,
|
|
22
|
+
payload });
|
|
23
|
+
return message;
|
|
24
|
+
}
|
|
25
|
+
exports.buildAppLogsMessage = buildAppLogsMessage;
|
|
26
|
+
// app state
|
|
27
|
+
async function buildAppStateMessage(payload, txId) {
|
|
28
|
+
const baseMessage = buildBaseClientMessage(txId);
|
|
29
|
+
const messageType = device_agent_schemas_1.keyMirrors.toClientMessageType.app_state;
|
|
30
|
+
const message = Object.assign(Object.assign({}, baseMessage), { messageType,
|
|
31
|
+
payload });
|
|
32
|
+
return message;
|
|
33
|
+
}
|
|
34
|
+
exports.buildAppStateMessage = buildAppStateMessage;
|
|
35
|
+
// signed URLs
|
|
36
|
+
async function buildSignedUrlsRequestMessage(payload, txId) {
|
|
37
|
+
const baseMessage = buildBaseClientMessage(txId);
|
|
38
|
+
const messageType = device_agent_schemas_1.keyMirrors.toCloudMessageType.signed_urls_request;
|
|
39
|
+
const message = Object.assign(Object.assign({}, baseMessage), { messageType,
|
|
40
|
+
payload });
|
|
41
|
+
return message;
|
|
42
|
+
}
|
|
43
|
+
exports.buildSignedUrlsRequestMessage = buildSignedUrlsRequestMessage;
|
|
44
|
+
// status response
|
|
45
|
+
async function buildStatusResponseMessage(payload, txId) {
|
|
46
|
+
const baseMessage = buildBaseClientMessage(txId);
|
|
47
|
+
const messageType = device_agent_schemas_1.keyMirrors.toClientMessageType.status_response;
|
|
48
|
+
const message = Object.assign(Object.assign({}, baseMessage), { messageType,
|
|
49
|
+
payload });
|
|
50
|
+
const valid = (0, device_agent_schemas_1.validateToDeviceAgentMessage)(message);
|
|
51
|
+
return message;
|
|
52
|
+
}
|
|
53
|
+
exports.buildStatusResponseMessage = buildStatusResponseMessage;
|
|
54
|
+
// device stats
|
|
55
|
+
async function buildDeviceStatsMessage(payload, txId) {
|
|
56
|
+
const messageType = device_agent_schemas_1.keyMirrors.toClientMessageType.device_stats;
|
|
57
|
+
const baseMessage = buildBaseClientMessage(txId);
|
|
58
|
+
const message = Object.assign(Object.assign({}, baseMessage), { messageType,
|
|
59
|
+
payload });
|
|
60
|
+
return message;
|
|
61
|
+
}
|
|
62
|
+
exports.buildDeviceStatsMessage = buildDeviceStatsMessage;
|
|
63
|
+
//# sourceMappingURL=message-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-builder.js","sourceRoot":"","sources":["../../src/cloud-connection/message-builder.ts"],"names":[],"mappings":";;;AAAA,yEAqBwC;AACxC,yDAAsD;AAEtD,SAAS,sBAAsB,CAAC,IAAa;IAC3C,MAAM,QAAQ,GAAG,IAAA,6BAAa,GAAE,CAAC;IACjC,MAAM,iBAAiB,GAAG;QACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,IAAA,uCAAgB,EAAC,QAAQ,CAAC;QACjC,IAAI,EAAE,IAAI,IAAI,IAAA,mCAAY,GAAE;KAC7B,CAAC;IACF,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,0BAA0B;AAE1B,WAAW;AACJ,KAAK,UAAU,mBAAmB,CACvC,OAAuB,EACvB,IAAa;IAEb,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,WAAW,GACf,iCAAU,CAAC,mBAAmB,CAAC,QAAQ,CAAC;IAC1C,MAAM,OAAO,mCACR,WAAW,KACd,WAAW;QACX,OAAO,GACR,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAbD,kDAaC;AAED,YAAY;AACL,KAAK,UAAU,oBAAoB,CACxC,OAAwB,EACxB,IAAa;IAEb,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,WAAW,GACf,iCAAU,CAAC,mBAAmB,CAAC,SAAS,CAAC;IAC3C,MAAM,OAAO,mCACR,WAAW,KACd,WAAW;QACX,OAAO,GACR,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAbD,oDAaC;AAED,cAAc;AACP,KAAK,UAAU,6BAA6B,CACjD,OAAiC,EACjC,IAAa;IAEb,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,WAAW,GACf,iCAAU,CAAC,kBAAkB,CAAC,mBAAmB,CAAC;IACpD,MAAM,OAAO,mCACR,WAAW,KACd,WAAW;QACX,OAAO,GACR,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAbD,sEAaC;AAED,kBAAkB;AACX,KAAK,UAAU,0BAA0B,CAC9C,OAA8B,EAC9B,IAAa;IAEb,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,WAAW,GACf,iCAAU,CAAC,mBAAmB,CAAC,eAAe,CAAC;IACjD,MAAM,OAAO,mCACR,WAAW,KACd,WAAW;QACX,OAAO,GACR,CAAC;IACF,MAAM,KAAK,GAAG,IAAA,mDAA4B,EAAC,OAAO,CAAC,CAAC;IACpD,OAAO,OAAO,CAAC;AACjB,CAAC;AAdD,gEAcC;AAED,eAAe;AACR,KAAK,UAAU,uBAAuB,CAC3C,OAA2B,EAC3B,IAAa;IAEb,MAAM,WAAW,GACf,iCAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC;IAC9C,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,OAAO,mCACR,WAAW,KACd,WAAW;QACX,OAAO,GACR,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAbD,0DAaC"}
|
|
@@ -1,16 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
export declare function
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}>;
|
|
7
|
-
export declare function getAppInstallStatusMessage(status: AppInstallStatusValue, message: string, appReleaseHash: string): Promise<AppInstallStatusMessage>;
|
|
8
|
-
export declare function getDeviceStatsMessage(): Promise<{
|
|
9
|
-
messageType: "device_stats";
|
|
10
|
-
deviceStats: {
|
|
11
|
-
cpuUsage: number;
|
|
12
|
-
diskUtil: number;
|
|
13
|
-
usedMemoryPercentage: number;
|
|
14
|
-
};
|
|
15
|
-
}>;
|
|
1
|
+
import { AppStatePayload, DeviceStatsPayload, StatusResponsePayload } from '@alwaysai/device-agent-schemas';
|
|
2
|
+
import { StatusResponseValue } from '@alwaysai/device-agent-schemas/lib/constants';
|
|
3
|
+
export declare function getAppStatePayload(): Promise<AppStatePayload>;
|
|
4
|
+
export declare function getStatusResponsePayload(status: StatusResponseValue, message: string): Promise<StatusResponsePayload>;
|
|
5
|
+
export declare function getDeviceStatsPayload(): Promise<DeviceStatsPayload>;
|
|
16
6
|
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/messages.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AASnF,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC,CAYnE;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,qBAAqB,CAAC,CAMhC;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAWzE"}
|
|
@@ -1,50 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const device_agent_schemas_1 = require("@alwaysai/device-agent-schemas");
|
|
3
|
+
exports.getDeviceStatsPayload = exports.getStatusResponsePayload = exports.getAppStatePayload = void 0;
|
|
5
4
|
const application_control_1 = require("../application-control");
|
|
6
5
|
const device_control_1 = require("../device-control/device-control");
|
|
7
6
|
const agent_config_1 = require("../infrastructure/agent-config");
|
|
8
|
-
async function
|
|
9
|
-
const
|
|
7
|
+
async function getAppStatePayload() {
|
|
8
|
+
const appState = [];
|
|
10
9
|
const apps = await (0, agent_config_1.AgentConfigFile)().getApps();
|
|
11
10
|
for (const app of apps) {
|
|
12
11
|
const projectId = app.projectId;
|
|
13
|
-
const status = await (0, application_control_1.
|
|
14
|
-
|
|
12
|
+
const status = await (0, application_control_1.getAppState)({ projectId });
|
|
13
|
+
appState.push(status);
|
|
15
14
|
}
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
appState: appStateMessage
|
|
15
|
+
const appStatePayload = {
|
|
16
|
+
appState: appState
|
|
19
17
|
};
|
|
20
|
-
return
|
|
18
|
+
return appStatePayload;
|
|
21
19
|
}
|
|
22
|
-
exports.
|
|
23
|
-
async function
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
status,
|
|
28
|
-
message,
|
|
29
|
-
appReleaseHash
|
|
30
|
-
}
|
|
20
|
+
exports.getAppStatePayload = getAppStatePayload;
|
|
21
|
+
async function getStatusResponsePayload(status, message) {
|
|
22
|
+
const statusResponsePayload = {
|
|
23
|
+
status,
|
|
24
|
+
message
|
|
31
25
|
};
|
|
32
|
-
return
|
|
26
|
+
return statusResponsePayload;
|
|
33
27
|
}
|
|
34
|
-
exports.
|
|
35
|
-
async function
|
|
28
|
+
exports.getStatusResponsePayload = getStatusResponsePayload;
|
|
29
|
+
async function getDeviceStatsPayload() {
|
|
36
30
|
const cpuUsage = await (0, device_control_1.getCpuUtil)();
|
|
37
31
|
const diskUtil = await (0, device_control_1.getDiskUtil)();
|
|
38
32
|
const memUtil = await (0, device_control_1.getMemUtil)();
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
diskUtil,
|
|
44
|
-
usedMemoryPercentage: memUtil
|
|
45
|
-
}
|
|
33
|
+
const deviceStatsPayload = {
|
|
34
|
+
cpuUsage,
|
|
35
|
+
diskUtil,
|
|
36
|
+
usedMemoryPercentage: memUtil
|
|
46
37
|
};
|
|
47
|
-
return
|
|
38
|
+
return deviceStatsPayload;
|
|
48
39
|
}
|
|
49
|
-
exports.
|
|
40
|
+
exports.getDeviceStatsPayload = getDeviceStatsPayload;
|
|
50
41
|
//# sourceMappingURL=messages.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/cloud-connection/messages.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/cloud-connection/messages.ts"],"names":[],"mappings":";;;AAOA,gEAAqD;AACrD,qEAI0C;AAC1C,iEAAiE;AAE1D,KAAK,UAAU,kBAAkB;IACtC,MAAM,QAAQ,GAAe,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,IAAA,8BAAe,GAAE,CAAC,OAAO,EAAE,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAW,EAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACvB;IACD,MAAM,eAAe,GAAG;QACtB,QAAQ,EAAE,QAAQ;KACnB,CAAC;IACF,OAAO,eAAe,CAAC;AACzB,CAAC;AAZD,gDAYC;AAEM,KAAK,UAAU,wBAAwB,CAC5C,MAA2B,EAC3B,OAAe;IAEf,MAAM,qBAAqB,GAA0B;QACnD,MAAM;QACN,OAAO;KACR,CAAC;IACF,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AATD,4DASC;AAEM,KAAK,UAAU,qBAAqB;IACzC,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAU,GAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,IAAA,4BAAW,GAAE,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAU,GAAE,CAAC;IAEnC,MAAM,kBAAkB,GAAuB;QAC7C,QAAQ;QACR,QAAQ;QACR,oBAAoB,EAAE,OAAO;KAC9B,CAAC;IACF,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAXD,sDAWC"}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ToClientMessage, ToCloudMessage } from '@alwaysai/device-agent-schemas';
|
|
2
2
|
export declare class Publisher {
|
|
3
3
|
private client;
|
|
4
4
|
private clientId;
|
|
5
5
|
private readonly toClientTopic;
|
|
6
6
|
private readonly toCloudTopic;
|
|
7
7
|
constructor(client: any, clientId: string);
|
|
8
|
-
private buildMessagePacket;
|
|
9
8
|
publish(topic: string, payload: string): void;
|
|
10
9
|
publishToCloudWithAck(payload: string, ackNackCallback: CallableFunction): void;
|
|
11
|
-
|
|
12
|
-
publishToClient(
|
|
13
|
-
publishToCloud(
|
|
10
|
+
publishDeviceAgentMessage(topic: string, message: ToClientMessage | ToCloudMessage): void;
|
|
11
|
+
publishToClient(message: ToClientMessage): void;
|
|
12
|
+
publishToCloud(message: ToCloudMessage): void;
|
|
14
13
|
}
|
|
15
14
|
//# sourceMappingURL=publisher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/publisher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/publisher.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,cAAc,EAGf,MAAM,gCAAgC,CAAC;AAExC,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM;IAOlC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAWtC,qBAAqB,CAC1B,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,gBAAgB;IAkB5B,yBAAyB,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,eAAe,GAAG,cAAc;IASpC,eAAe,CAAC,OAAO,EAAE,eAAe;IAIxC,cAAc,CAAC,OAAO,EAAE,cAAc;CAI9C"}
|
|
@@ -1,23 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Publisher = void 0;
|
|
4
|
-
const device_agent_schemas_1 = require("@alwaysai/device-agent-schemas");
|
|
5
4
|
const logger_1 = require("../util/logger");
|
|
5
|
+
const device_agent_schemas_1 = require("@alwaysai/device-agent-schemas");
|
|
6
6
|
class Publisher {
|
|
7
7
|
constructor(client, clientId) {
|
|
8
8
|
this.client = client;
|
|
9
9
|
this.clientId = clientId;
|
|
10
|
-
this.toClientTopic = (0, device_agent_schemas_1.
|
|
11
|
-
this.toCloudTopic = (0, device_agent_schemas_1.
|
|
12
|
-
}
|
|
13
|
-
buildMessagePacket(topic, payload) {
|
|
14
|
-
const packet = {
|
|
15
|
-
timestamp: new Date().toUTCString(),
|
|
16
|
-
deviceId: this.clientId,
|
|
17
|
-
topic,
|
|
18
|
-
payload
|
|
19
|
-
};
|
|
20
|
-
return packet;
|
|
10
|
+
this.toClientTopic = (0, device_agent_schemas_1.getToClientTopic)(this.clientId);
|
|
11
|
+
this.toCloudTopic = (0, device_agent_schemas_1.getToCloudTopic)(this.clientId);
|
|
21
12
|
}
|
|
22
13
|
publish(topic, payload) {
|
|
23
14
|
// TODO: topic validation
|
|
@@ -40,17 +31,17 @@ class Publisher {
|
|
|
40
31
|
}
|
|
41
32
|
});
|
|
42
33
|
}
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
this.publish(topic, packetStr);
|
|
34
|
+
publishDeviceAgentMessage(topic, message) {
|
|
35
|
+
const messageStr = JSON.stringify(message);
|
|
36
|
+
logger_1.logger.debug(`Publishing message:\n${JSON.stringify({ topic, message }, null, 2)}`);
|
|
37
|
+
this.publish(topic, messageStr);
|
|
48
38
|
}
|
|
49
|
-
publishToClient(
|
|
50
|
-
this.
|
|
39
|
+
publishToClient(message) {
|
|
40
|
+
this.publishDeviceAgentMessage(this.toClientTopic, message);
|
|
51
41
|
}
|
|
52
|
-
publishToCloud(
|
|
53
|
-
|
|
42
|
+
publishToCloud(message) {
|
|
43
|
+
// Can edit topic field in message here if we want
|
|
44
|
+
this.publishDeviceAgentMessage(this.toCloudTopic, message);
|
|
54
45
|
}
|
|
55
46
|
}
|
|
56
47
|
exports.Publisher = Publisher;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../src/cloud-connection/publisher.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../src/cloud-connection/publisher.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,yEAKwC;AAExC,MAAa,SAAS;IAMpB,YAAY,MAAW,EAAE,QAAgB;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,IAAA,uCAAgB,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,IAAA,sCAAe,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;IAEM,OAAO,CAAC,KAAa,EAAE,OAAe;QAC3C,yBAAyB;QACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;YAC/C,IAAI,GAAG,EAAE;gBACP,eAAM,CAAC,KAAK,CACV,sCAAsC,KAAK,cAAc,OAAO,YAAY,GAAG,EAAE,CAClF,CAAC;aACH;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,qBAAqB,CAC1B,OAAe,EACf,eAAiC;QAEjC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAQ,EAAE,IAAS,EAAE,EAAE;YACtE,IAAI,GAAG,EAAE;gBACP,eAAM,CAAC,KAAK,CACV,sCAAsC,KAAK,cAAc,OAAO,YAAY,GAAG,EAAE,CAClF,CAAC;gBACF,eAAe,CAAC,KAAK,CAAC,CAAC;aACxB;iBAAM,IAAI,IAAI,EAAE;gBACf,eAAM,CAAC,KAAK,CACV,4CAA4C,KAAK,cAAc,OAAO,EAAE,CACzE,CAAC;gBACF,eAAe,CAAC,IAAI,CAAC,CAAC;aACvB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,yBAAyB,CAC9B,KAAa,EACb,OAAyC;QAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC3C,eAAM,CAAC,KAAK,CACV,wBAAwB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CACtE,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAClC,CAAC;IAEM,eAAe,CAAC,OAAwB;QAC7C,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAEM,cAAc,CAAC,OAAuB;QAC3C,kDAAkD;QAClD,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;CACF;AA/DD,8BA+DC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class TransactionQueue {
|
|
2
|
+
private transactionList;
|
|
3
|
+
private txIdToProjectIdMap;
|
|
4
|
+
constructor();
|
|
5
|
+
addTxIdToQueue(txId: string, projectId: string): void;
|
|
6
|
+
getCurrentTxId(): string;
|
|
7
|
+
checkTxnInQueue(txId: string): boolean;
|
|
8
|
+
getProjectIdForTxnId(txId: string): string;
|
|
9
|
+
completeTxn(txId: string): void;
|
|
10
|
+
completeCurrentTxn(): void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=transaction-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-queue.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/transaction-queue.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,kBAAkB,CAAkC;;IAOrD,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAS9C,cAAc;IAId,eAAe,CAAC,IAAI,EAAE,MAAM;IAI5B,oBAAoB,CAAC,IAAI,EAAE,MAAM;IAIjC,WAAW,CAAC,IAAI,EAAE,MAAM;IAKxB,kBAAkB;CAI1B"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransactionQueue = void 0;
|
|
4
|
+
class TransactionQueue {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.txIdToProjectIdMap = {};
|
|
7
|
+
this.transactionList = [];
|
|
8
|
+
this.txIdToProjectIdMap = {};
|
|
9
|
+
}
|
|
10
|
+
addTxIdToQueue(txId, projectId) {
|
|
11
|
+
if (!this.checkTxnInQueue(txId)) {
|
|
12
|
+
this.transactionList.push(txId);
|
|
13
|
+
this.txIdToProjectIdMap[txId] = projectId;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
throw new Error(`txId ${txId} is already added to the queue!`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
getCurrentTxId() {
|
|
20
|
+
return this.transactionList[0];
|
|
21
|
+
}
|
|
22
|
+
checkTxnInQueue(txId) {
|
|
23
|
+
return this.transactionList.includes(txId);
|
|
24
|
+
}
|
|
25
|
+
getProjectIdForTxnId(txId) {
|
|
26
|
+
return this.txIdToProjectIdMap[txId];
|
|
27
|
+
}
|
|
28
|
+
completeTxn(txId) {
|
|
29
|
+
delete this.txIdToProjectIdMap[txId];
|
|
30
|
+
this.transactionList.splice(this.transactionList.indexOf(txId), 1);
|
|
31
|
+
}
|
|
32
|
+
completeCurrentTxn() {
|
|
33
|
+
delete this.txIdToProjectIdMap[this.transactionList[0]];
|
|
34
|
+
this.transactionList.shift();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.TransactionQueue = TransactionQueue;
|
|
38
|
+
//# sourceMappingURL=transaction-queue.js.map
|