@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
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BaseToDeviceAgentMessage } from './common';
|
|
2
|
+
import { StatusResponseMessageType, StatusResponseValue } from './constants';
|
|
3
|
+
import { BaseToClientMessage } from './common';
|
|
4
|
+
|
|
5
|
+
export interface StatusResponsePayload {
|
|
6
|
+
status: StatusResponseValue;
|
|
7
|
+
message?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface ToClientStatusResponseMessage extends BaseToClientMessage {
|
|
11
|
+
messageType: StatusResponseMessageType;
|
|
12
|
+
payload: StatusResponsePayload;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface ToDeviceStatusResponseMessage
|
|
16
|
+
extends BaseToDeviceAgentMessage {
|
|
17
|
+
messageType: StatusResponseMessageType;
|
|
18
|
+
payload: StatusResponsePayload;
|
|
19
|
+
}
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import Ajv2019 from 'ajv/dist/2019';
|
|
2
|
+
import {
|
|
3
|
+
CLIENT_TOPIC_PREFIX,
|
|
4
|
+
CLOUD_TOPIC_PREFIX,
|
|
5
|
+
DEVICE_TOPIC_PREFIX,
|
|
6
|
+
DEVICE_TYPE
|
|
7
|
+
} from './constants';
|
|
8
|
+
import * as commonSchema from './schemas/common-schema.json';
|
|
9
|
+
import * as deviceStatsSchema from './schemas/device-stats-schema.json';
|
|
10
|
+
import * as appStateSchema from './schemas/app-state-schema.json';
|
|
11
|
+
import * as appLogsSchema from './schemas/app-logs-schema.json';
|
|
12
|
+
import * as statusResponseSchema from './schemas/status-response-schema.json';
|
|
13
|
+
import * as signedUrlsRequestSchema from './schemas/signed-urls-request-schema.json';
|
|
14
|
+
import * as toDeviceAgentMessageSchema from './schemas/to-device-agent-message-schema.json';
|
|
15
|
+
import * as modelsInstallPayloadSchema from './schemas/models-install-payload-schema.json';
|
|
16
|
+
import * as appInstallSchema from './schemas/app-install-schema.json';
|
|
17
|
+
import * as appUpdateConfigSchema from './schemas/app-update-config-schema.json';
|
|
18
|
+
import * as appUninstallSchema from './schemas/app-uninstall-schema.json';
|
|
19
|
+
import * as toClientMessageSchema from './schemas/to-client-message-schema.json';
|
|
20
|
+
import * as toCloudMessageSchema from './schemas/to-cloud-message-schema.json';
|
|
21
|
+
import * as appStateControlSchema from './schemas/app-state-control-schema.json';
|
|
22
|
+
import * as appVersionControlSchema from './schemas/app-version-control-schema.json';
|
|
23
|
+
import * as appInstallResponseSchema from './schemas/app-install-response-schema.json';
|
|
24
|
+
import * as modelsInstallResponseSchema from './schemas/models-install-response-schema.json';
|
|
25
|
+
import * as liveUpdatesTogglesSchema from './schemas/live-updates-toggle-schema.json';
|
|
26
|
+
import * as deviceActionSchema from './schemas/device-action-schema.json';
|
|
27
|
+
import { AppLogsMessage, AppLogsPayload } from './app-logs-schema';
|
|
28
|
+
import {
|
|
29
|
+
AppInstallResponseMessage,
|
|
30
|
+
AppInstallResponsePayload,
|
|
31
|
+
AppStateControlMessage,
|
|
32
|
+
AppStateControlPayload,
|
|
33
|
+
AppVersionControlInstallPayload,
|
|
34
|
+
AppVersionControlUpdateConfigPayload,
|
|
35
|
+
AppVersionControlMessage,
|
|
36
|
+
AppVersionControlUninstallPayload,
|
|
37
|
+
ModelsInstallResponseMessage,
|
|
38
|
+
ModelsInstallResponsePayload
|
|
39
|
+
} from './app-action-schema';
|
|
40
|
+
import {
|
|
41
|
+
LiveStateUpdatesToggleMessage,
|
|
42
|
+
LiveStateUpdatesTogglePayload
|
|
43
|
+
} from './device-agent-action-schema';
|
|
44
|
+
import {
|
|
45
|
+
StatusResponsePayload,
|
|
46
|
+
ToClientStatusResponseMessage,
|
|
47
|
+
ToDeviceStatusResponseMessage
|
|
48
|
+
} from './status-response-schema';
|
|
49
|
+
import { AppStateMessage, AppStatePayload } from './app-state-schema';
|
|
50
|
+
import {
|
|
51
|
+
SignedUrlsRequestMessage,
|
|
52
|
+
SignedUrlsRequestPayload
|
|
53
|
+
} from './signed-urls-request-schema';
|
|
54
|
+
import { DeviceStatsMessage, DeviceStatsPayload } from './device-stats-schema';
|
|
55
|
+
import {
|
|
56
|
+
DeviceActionMessage,
|
|
57
|
+
DeviceActionPayload
|
|
58
|
+
} from './device-action-schema';
|
|
59
|
+
|
|
60
|
+
// Note: the other schemas do not need to be added, because they will
|
|
61
|
+
// automatically be added in the compile step due to $ref usage (and $id lookup)
|
|
62
|
+
const ajv = new Ajv2019({
|
|
63
|
+
allErrors: true,
|
|
64
|
+
verbose: true,
|
|
65
|
+
schemas: [commonSchema]
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
export const getToClientTopic = (
|
|
69
|
+
deviceUuid: string,
|
|
70
|
+
deviceType: string = DEVICE_TYPE
|
|
71
|
+
) => `${CLIENT_TOPIC_PREFIX}/${deviceType}/${deviceUuid}`;
|
|
72
|
+
|
|
73
|
+
export const getToCloudTopic = (
|
|
74
|
+
deviceUuid: string,
|
|
75
|
+
deviceType: string = DEVICE_TYPE
|
|
76
|
+
) => `${CLOUD_TOPIC_PREFIX}/${deviceType}/${deviceUuid}`;
|
|
77
|
+
|
|
78
|
+
export const getToDeviceTopic = (
|
|
79
|
+
deviceUuid: string,
|
|
80
|
+
deviceType: string = DEVICE_TYPE
|
|
81
|
+
) => `${DEVICE_TOPIC_PREFIX}/${deviceType}/${deviceUuid}`;
|
|
82
|
+
|
|
83
|
+
/* ============================================================================
|
|
84
|
+
To Client Message
|
|
85
|
+
============================================================================ */
|
|
86
|
+
|
|
87
|
+
export type ToClientMessage =
|
|
88
|
+
| AppLogsMessage
|
|
89
|
+
| ToClientStatusResponseMessage
|
|
90
|
+
| AppStateMessage
|
|
91
|
+
| DeviceStatsMessage;
|
|
92
|
+
|
|
93
|
+
export type ToClientMessagePayload =
|
|
94
|
+
| AppLogsPayload
|
|
95
|
+
| AppStatePayload
|
|
96
|
+
| DeviceStatsPayload
|
|
97
|
+
| StatusResponsePayload;
|
|
98
|
+
|
|
99
|
+
ajv.addSchema(deviceStatsSchema, 'device-stats-schema.json');
|
|
100
|
+
ajv.addSchema(appStateSchema, 'app-state-schema.json');
|
|
101
|
+
ajv.addSchema(appLogsSchema, 'app-logs-schema.json');
|
|
102
|
+
ajv.addSchema(statusResponseSchema, 'status-response-schema.json');
|
|
103
|
+
ajv.addSchema(toClientMessageSchema, 'to-client-message-schema.json');
|
|
104
|
+
export const validateToClientMessage = ajv.compile<ToClientMessage>(
|
|
105
|
+
toClientMessageSchema
|
|
106
|
+
);
|
|
107
|
+
|
|
108
|
+
/* ============================================================================
|
|
109
|
+
ToCloud Message
|
|
110
|
+
============================================================================ */
|
|
111
|
+
|
|
112
|
+
export type ToCloudMessage = SignedUrlsRequestMessage;
|
|
113
|
+
|
|
114
|
+
export type ToCloudMessagePayload = SignedUrlsRequestPayload;
|
|
115
|
+
|
|
116
|
+
ajv.addSchema(signedUrlsRequestSchema, 'signed-urls-request-schema.json');
|
|
117
|
+
export const validateToCloudMessage =
|
|
118
|
+
ajv.compile<ToCloudMessage>(toCloudMessageSchema);
|
|
119
|
+
|
|
120
|
+
/* ============================================================================
|
|
121
|
+
To Device Agent Message
|
|
122
|
+
============================================================================ */
|
|
123
|
+
|
|
124
|
+
export type ToDeviceAgentMessage =
|
|
125
|
+
| AppStateControlMessage
|
|
126
|
+
| AppVersionControlMessage
|
|
127
|
+
| LiveStateUpdatesToggleMessage
|
|
128
|
+
| ToDeviceStatusResponseMessage
|
|
129
|
+
| AppInstallResponseMessage
|
|
130
|
+
| ModelsInstallResponseMessage
|
|
131
|
+
| DeviceActionMessage;
|
|
132
|
+
|
|
133
|
+
export type ToDeviceAgentMessagePayload =
|
|
134
|
+
| AppStateControlPayload
|
|
135
|
+
| AppVersionControlInstallPayload
|
|
136
|
+
| AppVersionControlUninstallPayload
|
|
137
|
+
| AppVersionControlUpdateConfigPayload
|
|
138
|
+
| LiveStateUpdatesTogglePayload
|
|
139
|
+
| StatusResponsePayload
|
|
140
|
+
| AppInstallResponsePayload
|
|
141
|
+
| ModelsInstallResponsePayload
|
|
142
|
+
| DeviceActionPayload;
|
|
143
|
+
|
|
144
|
+
ajv.addSchema(modelsInstallPayloadSchema, 'models-install-payload-schema.json');
|
|
145
|
+
ajv.addSchema(appInstallSchema, 'app-install-schema.json');
|
|
146
|
+
ajv.addSchema(appUpdateConfigSchema, 'app-update-config-schema.json');
|
|
147
|
+
ajv.addSchema(appUninstallSchema, 'app-uninstall-schema.json');
|
|
148
|
+
ajv.addSchema(appStateControlSchema, 'app-state-control-schema.json');
|
|
149
|
+
ajv.addSchema(appVersionControlSchema, 'app-version-control-schema.json');
|
|
150
|
+
ajv.addSchema(appInstallResponseSchema, 'app-install-response-schema.json');
|
|
151
|
+
ajv.addSchema(
|
|
152
|
+
modelsInstallResponseSchema,
|
|
153
|
+
'models-install-response-schema.json'
|
|
154
|
+
);
|
|
155
|
+
ajv.addSchema(liveUpdatesTogglesSchema, 'live-updates-toggle-schema.json');
|
|
156
|
+
ajv.addSchema(deviceActionSchema, 'device-action-schema.json');
|
|
157
|
+
|
|
158
|
+
export const validateToDeviceAgentMessage = ajv.compile<ToDeviceAgentMessage>(
|
|
159
|
+
toDeviceAgentMessageSchema
|
|
160
|
+
);
|
package/src/utils.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
2
|
+
|
|
3
|
+
export function loadSchemaAsObject(schema: object) {
|
|
4
|
+
return JSON.parse(JSON.stringify(schema));
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/* eslint-disable */
|
|
8
|
+
export function keyMirror<T extends object>(obj: T): { [K in keyof T]: K } {
|
|
9
|
+
const newObj = {};
|
|
10
|
+
for (const key in obj) {
|
|
11
|
+
if (obj.hasOwnProperty(key)) {
|
|
12
|
+
newObj[String(key)] = key;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return newObj as { [K in keyof T]: K };
|
|
16
|
+
}
|
|
17
|
+
/* eslint-enable */
|
|
18
|
+
|
|
19
|
+
export function generateTxId(): string {
|
|
20
|
+
return uuidv4();
|
|
21
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "@alwaysai/tsconfig/nodejs/tsconfig.json",
|
|
3
|
+
"include": ["src"],
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"rootDir": "./src",
|
|
6
|
+
"outDir": "./lib",
|
|
7
|
+
// "allowJs": false,
|
|
8
|
+
"allowSyntheticDefaultImports": true,
|
|
9
|
+
// "allowUnreachableCode": false,
|
|
10
|
+
// "allowUnusedLabels": false,
|
|
11
|
+
"alwaysStrict": false,
|
|
12
|
+
// "baseUrl": ".",
|
|
13
|
+
// "build": false,
|
|
14
|
+
// "charset": "utf8",
|
|
15
|
+
// "checkJs": false,
|
|
16
|
+
// "composite": true,
|
|
17
|
+
"declaration": true,
|
|
18
|
+
// "declarationDir": ".",
|
|
19
|
+
"declarationMap": true,
|
|
20
|
+
// "diagnostics": false,
|
|
21
|
+
// "disableSizeLimit": false,
|
|
22
|
+
"downlevelIteration": true,
|
|
23
|
+
// "emitBOM": false,
|
|
24
|
+
// "emitDeclarationOnly": false,
|
|
25
|
+
// "emitDecoratorMetadata": false,
|
|
26
|
+
// "esModuleInterop": false,
|
|
27
|
+
// "experimentalDecorators": false,
|
|
28
|
+
"forceConsistentCasingInFileNames": true,
|
|
29
|
+
// "importHelpers": false,
|
|
30
|
+
// "inlineSourceMap": false,
|
|
31
|
+
// "inlineSources": false,
|
|
32
|
+
// "isolatedModules": false,
|
|
33
|
+
// "jsx": "preserve",
|
|
34
|
+
// "jsxFactory": "React.createElement",
|
|
35
|
+
// "keyofStringsOnly": false,
|
|
36
|
+
// "lib": [],
|
|
37
|
+
// "listEmittedFiles": false,
|
|
38
|
+
// "listFiles": false,
|
|
39
|
+
// "locale": "en",
|
|
40
|
+
// "mapRoot": ".",
|
|
41
|
+
// "maxNodeModuleJsDepth": 0,
|
|
42
|
+
"module": "commonjs",
|
|
43
|
+
"moduleResolution": "node",
|
|
44
|
+
"newLine": "lf",
|
|
45
|
+
// "noEmit": false,
|
|
46
|
+
// "noEmitHelpers": false,
|
|
47
|
+
"noEmitOnError": false,
|
|
48
|
+
"noErrorTruncation": true,
|
|
49
|
+
// "noFallthroughCasesInSwitch": false,
|
|
50
|
+
"noImplicitAny": false,
|
|
51
|
+
"noImplicitReturns": false,
|
|
52
|
+
"noImplicitThis": false,
|
|
53
|
+
// "noImplicitUseStrict": false,
|
|
54
|
+
// "noLib": false,
|
|
55
|
+
// "noStrictGenericChecks": false,
|
|
56
|
+
// "noResolve": false,
|
|
57
|
+
// "noUnusedLocals": false,
|
|
58
|
+
// "noUnusedParameters": false,
|
|
59
|
+
// "out": DEPRECATED
|
|
60
|
+
// "outDir": "lib",
|
|
61
|
+
// "outFile": "dist/lib.js",
|
|
62
|
+
// "paths": [],
|
|
63
|
+
// "preserveConstEnums": false,
|
|
64
|
+
// "preserveSymlinks": false,
|
|
65
|
+
// "preserveWatchOutput": false,
|
|
66
|
+
// "pretty": true,
|
|
67
|
+
// "reactNamespace": DEPRECATED
|
|
68
|
+
// "removeComments": false,
|
|
69
|
+
"resolveJsonModule": true,
|
|
70
|
+
// "rootDir": "src",
|
|
71
|
+
// "rootDirs": ["src"],
|
|
72
|
+
// "skipDefaultLibCheck": DEPRECATED
|
|
73
|
+
// "skipLibCheck": false,
|
|
74
|
+
"sourceMap": true,
|
|
75
|
+
// "sourceRoot": ".",
|
|
76
|
+
"strict": false,
|
|
77
|
+
"strictFunctionTypes": false,
|
|
78
|
+
"strictNullChecks": true,
|
|
79
|
+
"strictPropertyInitialization": false
|
|
80
|
+
// "stripInternal": false,
|
|
81
|
+
// "suppressExcessPropertyErrors": false,
|
|
82
|
+
// "suppressImplicitAnyIndexErrors": false,
|
|
83
|
+
// "target": "esnext",
|
|
84
|
+
// "traceResolution": false,
|
|
85
|
+
// "types": [],
|
|
86
|
+
// "typeRoots": [],
|
|
87
|
+
}
|
|
88
|
+
}
|