@alwaysai/device-agent-schemas 3.3.0 → 3.3.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/.eslintignore +4 -0
- package/.eslintrc +14 -0
- package/.gitattributes +2 -0
- package/.nvmrc +1 -0
- package/bitbucket-pipelines.yml +54 -0
- package/development.md +53 -0
- package/jest.config.js +3 -0
- package/lib/app-action-schema.d.ts +7 -1
- package/lib/app-action-schema.d.ts.map +1 -0
- package/lib/app-action-schema.js.map +1 -0
- package/lib/app-logs-schema.d.ts.map +1 -0
- package/lib/app-logs-schema.js.map +1 -0
- package/lib/app-state-schema.d.ts.map +1 -0
- package/lib/app-state-schema.js.map +1 -0
- package/lib/common.d.ts.map +1 -0
- package/lib/common.js.map +1 -0
- package/lib/constants.d.ts +2 -1
- package/lib/constants.d.ts.map +1 -0
- package/lib/constants.js +2 -1
- package/lib/constants.js.map +1 -0
- package/lib/device-action-schema.d.ts.map +1 -0
- package/lib/device-action-schema.js.map +1 -0
- package/lib/device-agent-action-schema.d.ts.map +1 -0
- package/lib/device-agent-action-schema.js.map +1 -0
- package/lib/device-stats-schema.d.ts.map +1 -0
- package/lib/device-stats-schema.js.map +1 -0
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js.map +1 -0
- package/lib/message-builders.d.ts +2 -2
- package/lib/message-builders.d.ts.map +1 -0
- package/lib/message-builders.js.map +1 -0
- package/lib/schemas/app-update-config-schema.json +22 -0
- package/lib/schemas/app-version-control-schema.json +3 -0
- package/lib/shadow-schema.d.ts.map +1 -0
- package/lib/shadow-schema.js.map +1 -0
- package/lib/signed-urls-request-schema.d.ts.map +1 -0
- package/lib/signed-urls-request-schema.js.map +1 -0
- package/lib/status-response-schema.d.ts.map +1 -0
- package/lib/status-response-schema.js.map +1 -0
- package/lib/types.d.ts +2 -2
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +2 -0
- package/lib/types.js.map +1 -0
- package/lib/utils.d.ts.map +1 -0
- package/lib/utils.js.map +1 -0
- package/package.json +1 -6
- package/src/app-action-schema.ts +83 -0
- package/src/app-logs-schema.ts +13 -0
- package/src/app-state-schema.ts +27 -0
- package/src/common.ts +19 -0
- package/src/constants.ts +141 -0
- package/src/device-action-schema.ts +11 -0
- package/src/device-agent-action-schema.ts +17 -0
- package/src/device-stats-schema.ts +33 -0
- package/src/index.ts +192 -0
- package/src/message-builders.ts +269 -0
- package/src/schemas/app-install-response-schema.json +38 -0
- package/src/schemas/app-install-schema.json +25 -0
- package/src/schemas/app-logs-schema.json +15 -0
- package/src/schemas/app-state-control-schema.json +16 -0
- package/src/schemas/app-state-schema.json +45 -0
- package/src/schemas/app-uninstall-schema.json +16 -0
- package/src/schemas/app-update-config-schema.json +22 -0
- package/src/schemas/app-version-control-schema.json +17 -0
- package/src/schemas/common-schema.json +27 -0
- package/src/schemas/device-action-schema.json +13 -0
- package/src/schemas/device-agent-status-schema.json +33 -0
- package/src/schemas/device-stats-schema.json +57 -0
- package/src/schemas/env-var-schema.json +18 -0
- package/src/schemas/live-updates-toggle-schema.json +27 -0
- package/src/schemas/models-install-payload-schema.json +21 -0
- package/src/schemas/models-install-response-schema.json +21 -0
- package/src/schemas/secure-tunnel-schema.json +31 -0
- package/src/schemas/shadow-project-update-legacy-schema.json +30 -0
- package/src/schemas/shadow-project-update-schema.json +16 -0
- package/src/schemas/shadow-projects-update-all-schema.json +20 -0
- package/src/schemas/signed-urls-request-schema.json +39 -0
- package/src/schemas/status-response-schema.json +15 -0
- package/src/schemas/system-information-schema.json +149 -0
- package/src/schemas/to-client-message-schema.json +92 -0
- package/src/schemas/to-cloud-message-schema.json +53 -0
- package/src/schemas/to-device-agent-message-schema.json +127 -0
- package/src/shadow-schema.ts +258 -0
- package/src/signed-urls-request-schema.ts +22 -0
- package/src/status-response-schema.ts +19 -0
- package/src/types.ts +160 -0
- package/src/utils.ts +21 -0
- package/tsconfig.build.json +4 -0
- package/tsconfig.eslint.json +5 -0
- package/tsconfig.json +88 -0
package/src/common.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface BaseToCloudMessage {
|
|
2
|
+
deviceId: string;
|
|
3
|
+
timestamp: string;
|
|
4
|
+
topic?: string;
|
|
5
|
+
txId: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface BaseToClientMessage {
|
|
9
|
+
deviceId: string;
|
|
10
|
+
timestamp: string;
|
|
11
|
+
topic?: string;
|
|
12
|
+
txId: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface BaseToDeviceAgentMessage {
|
|
16
|
+
timestamp: string;
|
|
17
|
+
topic?: string;
|
|
18
|
+
txId: string;
|
|
19
|
+
}
|
package/src/constants.ts
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { keyMirror } from './utils';
|
|
2
|
+
|
|
3
|
+
export const PROJECT_ID_PATTERN =
|
|
4
|
+
'[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$';
|
|
5
|
+
export const DEVICE_ID_PATTERN =
|
|
6
|
+
'[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$';
|
|
7
|
+
export const APP_RELEASE_ID_PATTERN = '[0-9a-z]{64}';
|
|
8
|
+
export const MODEL_ID_PATTERN = '[A-Za-z0-9_]+/[A-Za-z0-9_]*';
|
|
9
|
+
|
|
10
|
+
export const CLIENT_TOPIC_PREFIX = 'to-client';
|
|
11
|
+
export const CLOUD_TOPIC_PREFIX = 'to-cloud';
|
|
12
|
+
export const DEVICE_TOPIC_PREFIX = 'to-device';
|
|
13
|
+
export const DEVICE_TYPE = 'aai-device';
|
|
14
|
+
|
|
15
|
+
const toCloudMessageTypeEnum = keyMirror({
|
|
16
|
+
signed_urls_request: null
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
const toClientMessageTypeEnum = keyMirror({
|
|
20
|
+
app_logs: null,
|
|
21
|
+
app_state: null,
|
|
22
|
+
device_stats: null,
|
|
23
|
+
status_response: null
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const toDeviceAgentMessageTypeEnum = keyMirror({
|
|
27
|
+
app_state_control: null,
|
|
28
|
+
app_version_control: null,
|
|
29
|
+
app_install_response: null,
|
|
30
|
+
models_install_response: null,
|
|
31
|
+
live_state_updates: null,
|
|
32
|
+
status_response: null,
|
|
33
|
+
device_action: null
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
const appStateEnum = keyMirror({
|
|
37
|
+
up: null,
|
|
38
|
+
stopped: null,
|
|
39
|
+
restarting: null
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
const appStateControlEnum = keyMirror({
|
|
43
|
+
start: null,
|
|
44
|
+
stop: null,
|
|
45
|
+
restart: null
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
const appVersionControlEnum = keyMirror({
|
|
49
|
+
install: null,
|
|
50
|
+
uninstall: null,
|
|
51
|
+
update_config: null
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
const liveUpdatesEnum = keyMirror({
|
|
55
|
+
live_updates: null
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
const statusEnum = keyMirror({
|
|
59
|
+
requested: null,
|
|
60
|
+
in_progress: null,
|
|
61
|
+
failure: null,
|
|
62
|
+
success: null,
|
|
63
|
+
connection_lost: null
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
const deviceActionEnum = keyMirror({
|
|
67
|
+
system_restart: null
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
export const keyMirrors = {
|
|
71
|
+
toDeviceAgentMessageType: toDeviceAgentMessageTypeEnum,
|
|
72
|
+
toClientMessageType: toClientMessageTypeEnum,
|
|
73
|
+
toCloudMessageType: toCloudMessageTypeEnum,
|
|
74
|
+
appState: appStateEnum,
|
|
75
|
+
appStateControl: appStateControlEnum,
|
|
76
|
+
appVersionControl: appVersionControlEnum,
|
|
77
|
+
liveUpdates: liveUpdatesEnum,
|
|
78
|
+
statusResponse: statusEnum,
|
|
79
|
+
deviceAction: deviceActionEnum
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export const toCloudMessageTypeValues = Object.values(
|
|
83
|
+
keyMirrors.toCloudMessageType
|
|
84
|
+
);
|
|
85
|
+
export type ToCloudMessageTypeValue =
|
|
86
|
+
keyof typeof keyMirrors.toCloudMessageType;
|
|
87
|
+
|
|
88
|
+
export const toClientMessageTypeValues = Object.values(
|
|
89
|
+
keyMirrors.toClientMessageType
|
|
90
|
+
);
|
|
91
|
+
export type ToClientMessageTypeValue =
|
|
92
|
+
keyof typeof keyMirrors.toClientMessageType;
|
|
93
|
+
|
|
94
|
+
export type AppLogsMessageType = typeof toClientMessageTypeEnum.app_logs;
|
|
95
|
+
export type AppStateMessageType = typeof toClientMessageTypeEnum.app_state;
|
|
96
|
+
export type DeviceStatsMessageType =
|
|
97
|
+
typeof toClientMessageTypeEnum.device_stats;
|
|
98
|
+
export type StatusResponseMessageType =
|
|
99
|
+
typeof toClientMessageTypeEnum.status_response;
|
|
100
|
+
export type SignedUrlsRequestMessageType =
|
|
101
|
+
typeof toCloudMessageTypeEnum.signed_urls_request;
|
|
102
|
+
|
|
103
|
+
export const toDeviceAgentMessageTypeValues = Object.values(
|
|
104
|
+
keyMirrors.toDeviceAgentMessageType
|
|
105
|
+
);
|
|
106
|
+
export type ToDeviceAgentMessageTypeValue =
|
|
107
|
+
keyof typeof keyMirrors.toDeviceAgentMessageType;
|
|
108
|
+
|
|
109
|
+
export type AppStateControlMessageType =
|
|
110
|
+
typeof toDeviceAgentMessageTypeEnum.app_state_control;
|
|
111
|
+
|
|
112
|
+
export type AppVersionControlMessageType =
|
|
113
|
+
typeof toDeviceAgentMessageTypeEnum.app_version_control;
|
|
114
|
+
export type AppInstallResponseMessageType =
|
|
115
|
+
typeof toDeviceAgentMessageTypeEnum.app_install_response;
|
|
116
|
+
export type ModelsInstallResponseMessageType =
|
|
117
|
+
typeof toDeviceAgentMessageTypeEnum.models_install_response;
|
|
118
|
+
export type LiveStateUpdatesTogglesMessageType =
|
|
119
|
+
typeof toDeviceAgentMessageTypeEnum.live_state_updates;
|
|
120
|
+
export type DeviceActionMessageType =
|
|
121
|
+
typeof toDeviceAgentMessageTypeEnum.device_action;
|
|
122
|
+
|
|
123
|
+
export const appStateValues = Object.values(keyMirrors.appState);
|
|
124
|
+
export type AppStateValue = keyof typeof keyMirrors.appState;
|
|
125
|
+
|
|
126
|
+
export const appStateControlValues = Object.values(keyMirrors.appStateControl);
|
|
127
|
+
export type AppStateControlValue = keyof typeof keyMirrors.appStateControl;
|
|
128
|
+
|
|
129
|
+
export const appVersionControlValues = Object.values(
|
|
130
|
+
keyMirrors.appVersionControl
|
|
131
|
+
);
|
|
132
|
+
export type AppVersionControlValue = keyof typeof keyMirrors.appVersionControl;
|
|
133
|
+
|
|
134
|
+
export const liveUpdatesValues = Object.values(keyMirrors.liveUpdates);
|
|
135
|
+
export type LiveUpdatesValue = keyof typeof keyMirrors.liveUpdates;
|
|
136
|
+
|
|
137
|
+
export const statusResponseValues = Object.values(keyMirrors.statusResponse);
|
|
138
|
+
export type StatusResponseValue = keyof typeof keyMirrors.statusResponse;
|
|
139
|
+
|
|
140
|
+
export const deviceActionValues = Object.values(keyMirrors.deviceAction);
|
|
141
|
+
export type DeviceActionValue = keyof typeof keyMirrors.deviceAction;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DeviceActionMessageType, DeviceActionValue } from './constants';
|
|
2
|
+
import { BaseToDeviceAgentMessage } from './common';
|
|
3
|
+
|
|
4
|
+
export interface DeviceActionPayload {
|
|
5
|
+
action: DeviceActionValue;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface DeviceActionMessage extends BaseToDeviceAgentMessage {
|
|
9
|
+
messageType: DeviceActionMessageType;
|
|
10
|
+
payload: DeviceActionPayload;
|
|
11
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { LiveStateUpdatesTogglesMessageType } from './constants';
|
|
2
|
+
import { BaseToDeviceAgentMessage } from './common';
|
|
3
|
+
|
|
4
|
+
export interface LiveStateUpdatesTogglePayload {
|
|
5
|
+
deviceStats?: boolean;
|
|
6
|
+
appState?: boolean;
|
|
7
|
+
appLogs?: {
|
|
8
|
+
projectId: string;
|
|
9
|
+
toggle: boolean;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface LiveStateUpdatesToggleMessage
|
|
14
|
+
extends BaseToDeviceAgentMessage {
|
|
15
|
+
messageType: LiveStateUpdatesTogglesMessageType;
|
|
16
|
+
payload: LiveStateUpdatesTogglePayload;
|
|
17
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// To Device Status Structures
|
|
2
|
+
|
|
3
|
+
import { DeviceStatsMessageType } from './constants';
|
|
4
|
+
import { BaseToClientMessage } from './common';
|
|
5
|
+
|
|
6
|
+
interface CpuDetails {
|
|
7
|
+
usedPerc?: number;
|
|
8
|
+
temperature?: number;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface DiskDetails {
|
|
12
|
+
usedGb?: number;
|
|
13
|
+
freeGb?: number;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
interface MemDetails {
|
|
17
|
+
usedMb?: number;
|
|
18
|
+
freeMb?: number;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface DeviceStatsPayload {
|
|
22
|
+
cpuUsage?: number;
|
|
23
|
+
diskUtil?: number;
|
|
24
|
+
usedMemoryPercentage?: number;
|
|
25
|
+
cpuDetails?: CpuDetails;
|
|
26
|
+
diskDetails?: DiskDetails;
|
|
27
|
+
memDetails?: MemDetails;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface DeviceStatsMessage extends BaseToClientMessage {
|
|
31
|
+
messageType: DeviceStatsMessageType;
|
|
32
|
+
payload: DeviceStatsPayload;
|
|
33
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
// export types here
|
|
2
|
+
import {
|
|
3
|
+
validateToDeviceAgentMessage,
|
|
4
|
+
validateToClientMessage,
|
|
5
|
+
ToDeviceAgentMessage,
|
|
6
|
+
ToDeviceAgentMessagePayload,
|
|
7
|
+
ToClientMessage,
|
|
8
|
+
ToClientMessagePayload,
|
|
9
|
+
ToCloudMessage,
|
|
10
|
+
ToCloudMessagePayload,
|
|
11
|
+
getToClientTopic,
|
|
12
|
+
getToCloudTopic,
|
|
13
|
+
getToDeviceTopic,
|
|
14
|
+
validateToCloudMessage
|
|
15
|
+
} from './types';
|
|
16
|
+
import { generateTxId } from './utils';
|
|
17
|
+
import {
|
|
18
|
+
AppDetails,
|
|
19
|
+
AppState,
|
|
20
|
+
ServiceStatus,
|
|
21
|
+
AppStatePayload,
|
|
22
|
+
AppStateMessage
|
|
23
|
+
} from './app-state-schema';
|
|
24
|
+
import { AppLogsPayload, AppLogsMessage } from './app-logs-schema';
|
|
25
|
+
import {
|
|
26
|
+
AppInstallResponsePayload,
|
|
27
|
+
ModelsInstallResponsePayload,
|
|
28
|
+
AppStateControlMessage,
|
|
29
|
+
AppStateControlPayload,
|
|
30
|
+
AppVersionControlInstallPayload,
|
|
31
|
+
AppVersionControlUninstallPayload,
|
|
32
|
+
AppVersionControlUpdateConfigPayload,
|
|
33
|
+
AppVersionControlMessage,
|
|
34
|
+
ModelInstallPayload
|
|
35
|
+
} from './app-action-schema';
|
|
36
|
+
import {
|
|
37
|
+
ToClientMessageTypeValue,
|
|
38
|
+
ToDeviceAgentMessageTypeValue,
|
|
39
|
+
AppStateControlValue,
|
|
40
|
+
AppStateValue,
|
|
41
|
+
keyMirrors,
|
|
42
|
+
AppStateControlMessageType,
|
|
43
|
+
AppLogsMessageType,
|
|
44
|
+
DeviceStatsMessageType,
|
|
45
|
+
AppStateMessageType,
|
|
46
|
+
SignedUrlsRequestMessageType,
|
|
47
|
+
StatusResponseMessageType,
|
|
48
|
+
StatusResponseValue,
|
|
49
|
+
ToCloudMessageTypeValue
|
|
50
|
+
} from './constants';
|
|
51
|
+
import {
|
|
52
|
+
LiveStateUpdatesTogglePayload,
|
|
53
|
+
LiveStateUpdatesToggleMessage
|
|
54
|
+
} from './device-agent-action-schema';
|
|
55
|
+
import { DeviceStatsPayload, DeviceStatsMessage } from './device-stats-schema';
|
|
56
|
+
import {
|
|
57
|
+
StatusResponsePayload,
|
|
58
|
+
ToClientStatusResponseMessage,
|
|
59
|
+
ToDeviceStatusResponseMessage
|
|
60
|
+
} from './status-response-schema';
|
|
61
|
+
import {
|
|
62
|
+
SignedUrlsRequestPayload,
|
|
63
|
+
SignedUrlsRequestMessage
|
|
64
|
+
} from './signed-urls-request-schema';
|
|
65
|
+
import { DeviceActionPayload } from './device-action-schema';
|
|
66
|
+
import {
|
|
67
|
+
buildAppLogsMessage,
|
|
68
|
+
buildAppStateMessage,
|
|
69
|
+
buildAppVersionControlMessage,
|
|
70
|
+
buildLiveStateUpdatesToggleMessage,
|
|
71
|
+
buildAppStateControlMessage,
|
|
72
|
+
buildDeviceActionMessage,
|
|
73
|
+
buildDeviceStatsMessage,
|
|
74
|
+
buildSignedUrlsRequestMessage,
|
|
75
|
+
buildToClientStatusResponseMessage,
|
|
76
|
+
buildToDeviceStatusResponseMessage
|
|
77
|
+
} from './message-builders';
|
|
78
|
+
import {
|
|
79
|
+
ProjectShadowUpdate,
|
|
80
|
+
ShadowProjectsUpdateAll,
|
|
81
|
+
validateProjectShadowUpdate,
|
|
82
|
+
validateShadowProjectsUpdateAll,
|
|
83
|
+
SystemInformationShadowUpdate,
|
|
84
|
+
SecureTunnelPortInfo,
|
|
85
|
+
SecureTunnelShadowUpdate,
|
|
86
|
+
validateSecureTunnelShadowUpdate,
|
|
87
|
+
validateSystemInformationShadowUpdate,
|
|
88
|
+
buildBaseShadowMessage,
|
|
89
|
+
buildUpdateShadowMessage,
|
|
90
|
+
ShadowTopics,
|
|
91
|
+
ShadowNames,
|
|
92
|
+
getShadowTopic,
|
|
93
|
+
getDesiredFromMessage,
|
|
94
|
+
getReportedFromMessage,
|
|
95
|
+
getUpdateDeltaStateFromMessage,
|
|
96
|
+
ShadowUpdateTypes,
|
|
97
|
+
EnvVars,
|
|
98
|
+
validateEnvVarSchemaShadowUpdate
|
|
99
|
+
} from './shadow-schema';
|
|
100
|
+
|
|
101
|
+
export {
|
|
102
|
+
// getters
|
|
103
|
+
getToClientTopic,
|
|
104
|
+
getToCloudTopic,
|
|
105
|
+
getToDeviceTopic,
|
|
106
|
+
getShadowTopic,
|
|
107
|
+
getDesiredFromMessage,
|
|
108
|
+
getReportedFromMessage,
|
|
109
|
+
getUpdateDeltaStateFromMessage,
|
|
110
|
+
// types
|
|
111
|
+
AppDetails,
|
|
112
|
+
ServiceStatus,
|
|
113
|
+
AppState,
|
|
114
|
+
AppStateControlValue,
|
|
115
|
+
AppStateValue,
|
|
116
|
+
ProjectShadowUpdate,
|
|
117
|
+
ShadowProjectsUpdateAll,
|
|
118
|
+
SystemInformationShadowUpdate,
|
|
119
|
+
SecureTunnelPortInfo,
|
|
120
|
+
SecureTunnelShadowUpdate,
|
|
121
|
+
EnvVars,
|
|
122
|
+
// messageTypes
|
|
123
|
+
ToCloudMessageTypeValue,
|
|
124
|
+
AppStateControlMessageType,
|
|
125
|
+
AppLogsMessageType,
|
|
126
|
+
DeviceStatsMessageType,
|
|
127
|
+
AppStateMessageType,
|
|
128
|
+
SignedUrlsRequestMessageType,
|
|
129
|
+
StatusResponseMessageType,
|
|
130
|
+
ShadowUpdateTypes,
|
|
131
|
+
// messages and payloads
|
|
132
|
+
ModelInstallPayload,
|
|
133
|
+
ToClientStatusResponseMessage,
|
|
134
|
+
ToDeviceStatusResponseMessage,
|
|
135
|
+
StatusResponseValue,
|
|
136
|
+
AppStateControlMessage,
|
|
137
|
+
LiveStateUpdatesTogglePayload,
|
|
138
|
+
LiveStateUpdatesToggleMessage,
|
|
139
|
+
DeviceStatsPayload,
|
|
140
|
+
DeviceStatsMessage,
|
|
141
|
+
AppStatePayload,
|
|
142
|
+
AppStateMessage,
|
|
143
|
+
AppLogsPayload,
|
|
144
|
+
AppLogsMessage,
|
|
145
|
+
StatusResponsePayload,
|
|
146
|
+
AppStateControlPayload,
|
|
147
|
+
AppVersionControlInstallPayload,
|
|
148
|
+
AppVersionControlUninstallPayload,
|
|
149
|
+
AppVersionControlUpdateConfigPayload,
|
|
150
|
+
AppVersionControlMessage,
|
|
151
|
+
AppInstallResponsePayload,
|
|
152
|
+
ModelsInstallResponsePayload,
|
|
153
|
+
SignedUrlsRequestPayload,
|
|
154
|
+
SignedUrlsRequestMessage,
|
|
155
|
+
ToDeviceAgentMessage,
|
|
156
|
+
ToDeviceAgentMessagePayload,
|
|
157
|
+
ToDeviceAgentMessageTypeValue,
|
|
158
|
+
ToClientMessage,
|
|
159
|
+
ToClientMessagePayload,
|
|
160
|
+
ToClientMessageTypeValue,
|
|
161
|
+
ToCloudMessage,
|
|
162
|
+
ToCloudMessagePayload,
|
|
163
|
+
DeviceActionPayload,
|
|
164
|
+
// message validators
|
|
165
|
+
validateToDeviceAgentMessage,
|
|
166
|
+
validateToClientMessage,
|
|
167
|
+
validateToCloudMessage,
|
|
168
|
+
validateShadowProjectsUpdateAll,
|
|
169
|
+
validateProjectShadowUpdate,
|
|
170
|
+
validateSystemInformationShadowUpdate,
|
|
171
|
+
validateSecureTunnelShadowUpdate,
|
|
172
|
+
validateEnvVarSchemaShadowUpdate,
|
|
173
|
+
// message builders
|
|
174
|
+
buildAppLogsMessage,
|
|
175
|
+
buildAppStateMessage,
|
|
176
|
+
buildDeviceStatsMessage,
|
|
177
|
+
buildSignedUrlsRequestMessage,
|
|
178
|
+
buildToClientStatusResponseMessage,
|
|
179
|
+
buildToDeviceStatusResponseMessage,
|
|
180
|
+
buildAppVersionControlMessage,
|
|
181
|
+
buildLiveStateUpdatesToggleMessage,
|
|
182
|
+
buildAppStateControlMessage,
|
|
183
|
+
buildDeviceActionMessage,
|
|
184
|
+
buildBaseShadowMessage,
|
|
185
|
+
buildUpdateShadowMessage,
|
|
186
|
+
// key mirrors
|
|
187
|
+
keyMirrors,
|
|
188
|
+
ShadowTopics,
|
|
189
|
+
ShadowNames,
|
|
190
|
+
// utilities
|
|
191
|
+
generateTxId
|
|
192
|
+
};
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AppStateControlMessage,
|
|
3
|
+
AppStateControlPayload,
|
|
4
|
+
AppVersionControlInstallPayload,
|
|
5
|
+
AppVersionControlMessage,
|
|
6
|
+
AppVersionControlUninstallPayload,
|
|
7
|
+
AppVersionControlUpdateConfigPayload
|
|
8
|
+
} from './app-action-schema';
|
|
9
|
+
import { AppLogsMessage, AppLogsPayload } from './app-logs-schema';
|
|
10
|
+
import { AppStateMessage, AppStatePayload } from './app-state-schema';
|
|
11
|
+
import {
|
|
12
|
+
BaseToClientMessage,
|
|
13
|
+
BaseToCloudMessage,
|
|
14
|
+
BaseToDeviceAgentMessage
|
|
15
|
+
} from './common';
|
|
16
|
+
import {
|
|
17
|
+
AppLogsMessageType,
|
|
18
|
+
AppStateMessageType,
|
|
19
|
+
DeviceStatsMessageType,
|
|
20
|
+
SignedUrlsRequestMessageType,
|
|
21
|
+
StatusResponseMessageType,
|
|
22
|
+
keyMirrors
|
|
23
|
+
} from './constants';
|
|
24
|
+
import {
|
|
25
|
+
DeviceActionMessage,
|
|
26
|
+
DeviceActionPayload
|
|
27
|
+
} from './device-action-schema';
|
|
28
|
+
import {
|
|
29
|
+
LiveStateUpdatesToggleMessage,
|
|
30
|
+
LiveStateUpdatesTogglePayload
|
|
31
|
+
} from './device-agent-action-schema';
|
|
32
|
+
import { DeviceStatsMessage, DeviceStatsPayload } from './device-stats-schema';
|
|
33
|
+
import { SignedUrlsRequestMessage } from './signed-urls-request-schema';
|
|
34
|
+
import {
|
|
35
|
+
StatusResponsePayload,
|
|
36
|
+
ToClientStatusResponseMessage,
|
|
37
|
+
ToDeviceStatusResponseMessage
|
|
38
|
+
} from './status-response-schema';
|
|
39
|
+
import {
|
|
40
|
+
ToCloudMessagePayload,
|
|
41
|
+
getToClientTopic,
|
|
42
|
+
getToCloudTopic,
|
|
43
|
+
getToDeviceTopic
|
|
44
|
+
} from './types';
|
|
45
|
+
|
|
46
|
+
function buildBaseToClientMessage(
|
|
47
|
+
clientId: string,
|
|
48
|
+
txId: string
|
|
49
|
+
): BaseToClientMessage {
|
|
50
|
+
const baseClientMessage = {
|
|
51
|
+
timestamp: new Date().toUTCString(),
|
|
52
|
+
deviceId: clientId,
|
|
53
|
+
topic: getToClientTopic(clientId),
|
|
54
|
+
txId
|
|
55
|
+
};
|
|
56
|
+
return baseClientMessage;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function buildBaseToDeviceMessage(
|
|
60
|
+
deviceId: string,
|
|
61
|
+
txId: string
|
|
62
|
+
): BaseToDeviceAgentMessage {
|
|
63
|
+
const baseToDeviceMessage = {
|
|
64
|
+
timestamp: new Date().toUTCString(),
|
|
65
|
+
topic: getToDeviceTopic(deviceId),
|
|
66
|
+
txId
|
|
67
|
+
};
|
|
68
|
+
return baseToDeviceMessage;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function buildBaseToCloudMessage(
|
|
72
|
+
deviceId: string,
|
|
73
|
+
txId: string
|
|
74
|
+
): BaseToCloudMessage {
|
|
75
|
+
const baseToCloudMessage = {
|
|
76
|
+
deviceId,
|
|
77
|
+
timestamp: new Date().toUTCString(),
|
|
78
|
+
topic: getToCloudTopic(deviceId),
|
|
79
|
+
txId
|
|
80
|
+
};
|
|
81
|
+
return baseToCloudMessage;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// toClient Message Builders
|
|
85
|
+
|
|
86
|
+
// app logs
|
|
87
|
+
function buildAppLogsMessage(
|
|
88
|
+
clientId: string,
|
|
89
|
+
payload: AppLogsPayload,
|
|
90
|
+
txId: string
|
|
91
|
+
): AppLogsMessage {
|
|
92
|
+
const baseMessage = buildBaseToClientMessage(clientId, txId);
|
|
93
|
+
const messageType: AppLogsMessageType =
|
|
94
|
+
keyMirrors.toClientMessageType.app_logs;
|
|
95
|
+
const message = {
|
|
96
|
+
...baseMessage,
|
|
97
|
+
messageType,
|
|
98
|
+
payload
|
|
99
|
+
};
|
|
100
|
+
return message;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// app state
|
|
104
|
+
function buildAppStateMessage(
|
|
105
|
+
clientId: string,
|
|
106
|
+
payload: AppStatePayload,
|
|
107
|
+
txId: string
|
|
108
|
+
): AppStateMessage {
|
|
109
|
+
const baseMessage = buildBaseToClientMessage(clientId, txId);
|
|
110
|
+
const messageType: AppStateMessageType =
|
|
111
|
+
keyMirrors.toClientMessageType.app_state;
|
|
112
|
+
const message = {
|
|
113
|
+
...baseMessage,
|
|
114
|
+
messageType,
|
|
115
|
+
payload
|
|
116
|
+
};
|
|
117
|
+
return message;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// status response
|
|
121
|
+
function buildToClientStatusResponseMessage(
|
|
122
|
+
clientId: string,
|
|
123
|
+
payload: StatusResponsePayload,
|
|
124
|
+
txId: string
|
|
125
|
+
): ToClientStatusResponseMessage {
|
|
126
|
+
const baseMessage = buildBaseToClientMessage(clientId, txId);
|
|
127
|
+
const messageType: StatusResponseMessageType =
|
|
128
|
+
keyMirrors.toClientMessageType.status_response;
|
|
129
|
+
const message = {
|
|
130
|
+
...baseMessage,
|
|
131
|
+
messageType,
|
|
132
|
+
payload
|
|
133
|
+
};
|
|
134
|
+
return message;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// device stats
|
|
138
|
+
function buildDeviceStatsMessage(
|
|
139
|
+
clientId: string,
|
|
140
|
+
payload: DeviceStatsPayload,
|
|
141
|
+
txId: string
|
|
142
|
+
): DeviceStatsMessage {
|
|
143
|
+
const messageType: DeviceStatsMessageType =
|
|
144
|
+
keyMirrors.toClientMessageType.device_stats;
|
|
145
|
+
const baseMessage = buildBaseToClientMessage(clientId, txId);
|
|
146
|
+
const message = {
|
|
147
|
+
...baseMessage,
|
|
148
|
+
messageType,
|
|
149
|
+
payload
|
|
150
|
+
};
|
|
151
|
+
return message;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// toDevice Message Builders
|
|
155
|
+
|
|
156
|
+
// status response
|
|
157
|
+
function buildToDeviceStatusResponseMessage(
|
|
158
|
+
clientId: string,
|
|
159
|
+
payload: StatusResponsePayload,
|
|
160
|
+
txId: string
|
|
161
|
+
): ToDeviceStatusResponseMessage {
|
|
162
|
+
const baseMessage = buildBaseToDeviceMessage(clientId, txId);
|
|
163
|
+
const messageType: StatusResponseMessageType =
|
|
164
|
+
keyMirrors.toClientMessageType.status_response;
|
|
165
|
+
const message = {
|
|
166
|
+
...baseMessage,
|
|
167
|
+
messageType,
|
|
168
|
+
payload
|
|
169
|
+
};
|
|
170
|
+
return message;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// app version control
|
|
174
|
+
function buildAppVersionControlMessage(
|
|
175
|
+
deviceId: string,
|
|
176
|
+
payload:
|
|
177
|
+
| AppVersionControlInstallPayload
|
|
178
|
+
| AppVersionControlUninstallPayload
|
|
179
|
+
| AppVersionControlUpdateConfigPayload,
|
|
180
|
+
txId: string
|
|
181
|
+
): AppVersionControlMessage {
|
|
182
|
+
const messageType = keyMirrors.toDeviceAgentMessageType.app_version_control;
|
|
183
|
+
const baseMessage = buildBaseToDeviceMessage(deviceId, txId);
|
|
184
|
+
const message = {
|
|
185
|
+
...baseMessage,
|
|
186
|
+
messageType,
|
|
187
|
+
payload
|
|
188
|
+
};
|
|
189
|
+
return message;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// live state updates toggle
|
|
193
|
+
function buildLiveStateUpdatesToggleMessage(
|
|
194
|
+
deviceId: string,
|
|
195
|
+
payload: LiveStateUpdatesTogglePayload,
|
|
196
|
+
txId: string
|
|
197
|
+
): LiveStateUpdatesToggleMessage {
|
|
198
|
+
const messageType = keyMirrors.toDeviceAgentMessageType.live_state_updates;
|
|
199
|
+
const baseMessage = buildBaseToDeviceMessage(deviceId, txId);
|
|
200
|
+
const message = {
|
|
201
|
+
...baseMessage,
|
|
202
|
+
messageType,
|
|
203
|
+
payload
|
|
204
|
+
};
|
|
205
|
+
return message;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// app state control
|
|
209
|
+
function buildAppStateControlMessage(
|
|
210
|
+
deviceId: string,
|
|
211
|
+
payload: AppStateControlPayload,
|
|
212
|
+
txId: string
|
|
213
|
+
): AppStateControlMessage {
|
|
214
|
+
const messageType = keyMirrors.toDeviceAgentMessageType.app_state_control;
|
|
215
|
+
const baseMessage = buildBaseToDeviceMessage(deviceId, txId);
|
|
216
|
+
const message = {
|
|
217
|
+
...baseMessage,
|
|
218
|
+
messageType,
|
|
219
|
+
payload
|
|
220
|
+
};
|
|
221
|
+
return message;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
function buildDeviceActionMessage(
|
|
225
|
+
deviceId: string,
|
|
226
|
+
payload: DeviceActionPayload,
|
|
227
|
+
txId: string
|
|
228
|
+
): DeviceActionMessage {
|
|
229
|
+
const messageType = keyMirrors.toDeviceAgentMessageType.device_action;
|
|
230
|
+
const baseMessage = buildBaseToDeviceMessage(deviceId, txId);
|
|
231
|
+
const message = {
|
|
232
|
+
...baseMessage,
|
|
233
|
+
messageType,
|
|
234
|
+
payload
|
|
235
|
+
};
|
|
236
|
+
return message;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// toCloud Message Builders
|
|
240
|
+
|
|
241
|
+
// signed URLs
|
|
242
|
+
function buildSignedUrlsRequestMessage(
|
|
243
|
+
clientId: string,
|
|
244
|
+
payload: ToCloudMessagePayload,
|
|
245
|
+
txId: string
|
|
246
|
+
): SignedUrlsRequestMessage {
|
|
247
|
+
const baseMessage = buildBaseToCloudMessage(clientId, txId);
|
|
248
|
+
const messageType: SignedUrlsRequestMessageType =
|
|
249
|
+
keyMirrors.toCloudMessageType.signed_urls_request;
|
|
250
|
+
const message = {
|
|
251
|
+
...baseMessage,
|
|
252
|
+
messageType,
|
|
253
|
+
payload
|
|
254
|
+
};
|
|
255
|
+
return message;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
export {
|
|
259
|
+
buildAppLogsMessage,
|
|
260
|
+
buildAppStateMessage,
|
|
261
|
+
buildSignedUrlsRequestMessage,
|
|
262
|
+
buildToClientStatusResponseMessage,
|
|
263
|
+
buildToDeviceStatusResponseMessage,
|
|
264
|
+
buildDeviceStatsMessage,
|
|
265
|
+
buildAppVersionControlMessage,
|
|
266
|
+
buildLiveStateUpdatesToggleMessage,
|
|
267
|
+
buildAppStateControlMessage,
|
|
268
|
+
buildDeviceActionMessage
|
|
269
|
+
};
|