@alwaysai/device-agent 1.3.0 → 1.3.1-2
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/lib/application-control/environment-variables.d.ts +1 -0
- package/lib/application-control/environment-variables.d.ts.map +1 -1
- package/lib/application-control/environment-variables.js +22 -20
- package/lib/application-control/environment-variables.js.map +1 -1
- package/lib/application-control/environment-variables.test.js +37 -2
- package/lib/application-control/environment-variables.test.js.map +1 -1
- package/lib/application-control/install.js +1 -1
- package/lib/application-control/install.js.map +1 -1
- package/lib/cloud-connection/device-agent-cloud-connection.d.ts +5 -5
- package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -1
- package/lib/cloud-connection/device-agent-cloud-connection.js +203 -178
- package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -1
- package/lib/cloud-connection/live-updates-handler.d.ts.map +1 -1
- package/lib/cloud-connection/live-updates-handler.js +30 -25
- package/lib/cloud-connection/live-updates-handler.js.map +1 -1
- package/lib/cloud-connection/live-updates-handler.test.js +15 -0
- package/lib/cloud-connection/live-updates-handler.test.js.map +1 -1
- package/lib/cloud-connection/messages.d.ts +1 -3
- package/lib/cloud-connection/messages.d.ts.map +1 -1
- package/lib/cloud-connection/messages.js +1 -9
- package/lib/cloud-connection/messages.js.map +1 -1
- package/lib/cloud-connection/publisher.d.ts +1 -0
- package/lib/cloud-connection/publisher.d.ts.map +1 -1
- package/lib/cloud-connection/publisher.js +3 -0
- package/lib/cloud-connection/publisher.js.map +1 -1
- package/lib/cloud-connection/shadow-handler.d.ts +10 -21
- package/lib/cloud-connection/shadow-handler.d.ts.map +1 -1
- package/lib/cloud-connection/shadow-handler.js +154 -100
- package/lib/cloud-connection/shadow-handler.js.map +1 -1
- package/lib/cloud-connection/shadow-handler.test.js +140 -72
- package/lib/cloud-connection/shadow-handler.test.js.map +1 -1
- package/lib/cloud-connection/transaction-manager.d.ts +26 -6
- package/lib/cloud-connection/transaction-manager.d.ts.map +1 -1
- package/lib/cloud-connection/transaction-manager.js +103 -22
- package/lib/cloud-connection/transaction-manager.js.map +1 -1
- package/lib/cloud-connection/transaction-manager.test.js +179 -13
- package/lib/cloud-connection/transaction-manager.test.js.map +1 -1
- package/lib/device-control/device-control.d.ts +2 -2
- package/lib/device-control/device-control.d.ts.map +1 -1
- package/lib/device-control/device-control.js.map +1 -1
- package/lib/secure-tunneling/secure-tunneling.d.ts +105 -0
- package/lib/secure-tunneling/secure-tunneling.d.ts.map +1 -0
- package/lib/secure-tunneling/secure-tunneling.js +435 -0
- package/lib/secure-tunneling/secure-tunneling.js.map +1 -0
- package/lib/secure-tunneling/secure-tunneling.test.d.ts +2 -0
- package/lib/secure-tunneling/secure-tunneling.test.d.ts.map +1 -0
- package/lib/secure-tunneling/secure-tunneling.test.js +1070 -0
- package/lib/secure-tunneling/secure-tunneling.test.js.map +1 -0
- package/lib/secure-tunneling/spawner-detached.d.ts +6 -0
- package/lib/secure-tunneling/spawner-detached.d.ts.map +1 -0
- package/lib/secure-tunneling/spawner-detached.js +107 -0
- package/lib/secure-tunneling/spawner-detached.js.map +1 -0
- package/lib/subcommands/app/analytics.d.ts +10 -0
- package/lib/subcommands/app/analytics.d.ts.map +1 -0
- package/lib/subcommands/app/analytics.js +79 -0
- package/lib/subcommands/app/analytics.js.map +1 -0
- package/lib/subcommands/app/env-vars.d.ts.map +1 -1
- package/lib/subcommands/app/env-vars.js +11 -16
- package/lib/subcommands/app/env-vars.js.map +1 -1
- package/lib/subcommands/app/index.d.ts.map +1 -1
- package/lib/subcommands/app/index.js +3 -1
- package/lib/subcommands/app/index.js.map +1 -1
- package/lib/subcommands/app/models.d.ts +0 -5
- package/lib/subcommands/app/models.d.ts.map +1 -1
- package/lib/subcommands/app/models.js +16 -56
- package/lib/subcommands/app/models.js.map +1 -1
- package/lib/subcommands/app/status.d.ts +1 -0
- package/lib/subcommands/app/status.d.ts.map +1 -1
- package/lib/subcommands/app/status.js +14 -3
- package/lib/subcommands/app/status.js.map +1 -1
- package/lib/subcommands/app/version.d.ts +2 -1
- package/lib/subcommands/app/version.d.ts.map +1 -1
- package/lib/subcommands/app/version.js +16 -3
- package/lib/subcommands/app/version.js.map +1 -1
- package/lib/util/cloud-mode-ready.d.ts +1 -0
- package/lib/util/cloud-mode-ready.d.ts.map +1 -1
- package/lib/util/cloud-mode-ready.js +36 -1
- package/lib/util/cloud-mode-ready.js.map +1 -1
- package/lib/util/parsing.d.ts +2 -0
- package/lib/util/parsing.d.ts.map +1 -0
- package/lib/util/parsing.js +17 -0
- package/lib/util/parsing.js.map +1 -0
- package/package.json +4 -6
- package/readme.md +146 -92
- package/src/application-control/environment-variables.test.ts +43 -3
- package/src/application-control/environment-variables.ts +29 -19
- package/src/application-control/install.ts +1 -1
- package/src/cloud-connection/device-agent-cloud-connection.ts +272 -247
- package/src/cloud-connection/live-updates-handler.test.ts +20 -0
- package/src/cloud-connection/live-updates-handler.ts +45 -52
- package/src/cloud-connection/messages.ts +1 -14
- package/src/cloud-connection/publisher.ts +4 -0
- package/src/cloud-connection/shadow-handler.test.ts +150 -73
- package/src/cloud-connection/shadow-handler.ts +247 -126
- package/src/cloud-connection/transaction-manager.test.ts +193 -18
- package/src/cloud-connection/transaction-manager.ts +174 -26
- package/src/device-control/device-control.ts +3 -3
- package/src/secure-tunneling/secure-tunneling.test.ts +1239 -0
- package/src/secure-tunneling/secure-tunneling.ts +606 -0
- package/src/secure-tunneling/spawner-detached.ts +123 -0
- package/src/subcommands/app/analytics.ts +102 -0
- package/src/subcommands/app/env-vars.ts +18 -16
- package/src/subcommands/app/index.ts +4 -3
- package/src/subcommands/app/models.ts +25 -57
- package/src/subcommands/app/status.ts +20 -3
- package/src/subcommands/app/version.ts +19 -4
- package/src/util/cloud-mode-ready.ts +36 -0
- package/src/util/parsing.ts +11 -0
- package/lib/cloud-connection/cmd-status.d.ts +0 -8
- package/lib/cloud-connection/cmd-status.d.ts.map +0 -1
- package/lib/cloud-connection/cmd-status.js +0 -62
- package/lib/cloud-connection/cmd-status.js.map +0 -1
- package/lib/cloud-connection/message-builder.d.ts +0 -7
- package/lib/cloud-connection/message-builder.d.ts.map +0 -1
- package/lib/cloud-connection/message-builder.js +0 -63
- package/lib/cloud-connection/message-builder.js.map +0 -1
- package/lib/secure-tunneling/index.d.ts +0 -5
- package/lib/secure-tunneling/index.d.ts.map +0 -1
- package/lib/secure-tunneling/index.js +0 -64
- package/lib/secure-tunneling/index.js.map +0 -1
- package/src/cloud-connection/cmd-status.ts +0 -71
- package/src/cloud-connection/message-builder.ts +0 -117
- package/src/secure-tunneling/index.ts +0 -74
|
@@ -4,6 +4,7 @@ import { buildApp, getAppDir, requireAppReady } from './utils';
|
|
|
4
4
|
import { logger } from '../util/logger';
|
|
5
5
|
import { AgentConfigFile } from '../infrastructure/agent-config';
|
|
6
6
|
import { isAppStarted, restartApp } from './status';
|
|
7
|
+
import { replaceFalseyWithNull } from '../util/parsing';
|
|
7
8
|
|
|
8
9
|
export interface EnvVars {
|
|
9
10
|
[service: string]: {
|
|
@@ -37,26 +38,32 @@ export async function setEnv(props: { projectId: string; envVars: EnvVars }) {
|
|
|
37
38
|
)}`
|
|
38
39
|
);
|
|
39
40
|
}
|
|
40
|
-
|
|
41
|
+
|
|
42
|
+
const service = composeParsed['services'][s];
|
|
43
|
+
const oldEnv: string[] | undefined = service['environment'];
|
|
44
|
+
|
|
45
|
+
const newEnvVarsObj = {};
|
|
46
|
+
oldEnv?.forEach((envVarStr: string) => {
|
|
47
|
+
const envVarSplit = envVarStr.split('=');
|
|
48
|
+
const key = envVarSplit[0];
|
|
49
|
+
const value = envVarSplit[1];
|
|
50
|
+
newEnvVarsObj[key] = value;
|
|
51
|
+
});
|
|
52
|
+
|
|
41
53
|
for (const envVar of Object.keys(envVars[s])) {
|
|
42
|
-
|
|
54
|
+
newEnvVarsObj[envVar] = envVars[s][envVar];
|
|
43
55
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
// environment variable list, which will override but not replace
|
|
51
|
-
// previous instances of the same environment variable.
|
|
52
|
-
if ('environment' in service) {
|
|
53
|
-
const environment: string[] = service['environment'];
|
|
54
|
-
composeParsed['services'][s]['environment'] =
|
|
55
|
-
environment.concat(envVarList);
|
|
56
|
-
} else {
|
|
57
|
-
composeParsed['services'][s]['environment'] = envVarList;
|
|
56
|
+
|
|
57
|
+
const envVarList: string[] = [];
|
|
58
|
+
for (const envVar of Object.keys(newEnvVarsObj)) {
|
|
59
|
+
envVarList.push(
|
|
60
|
+
`${envVar}=${newEnvVarsObj[envVar] ? newEnvVarsObj[envVar] : ''}`
|
|
61
|
+
);
|
|
58
62
|
}
|
|
63
|
+
|
|
64
|
+
service['environment'] = envVarList;
|
|
59
65
|
}
|
|
66
|
+
|
|
60
67
|
await writeDockerCompose({ projectId, dockerCompose: composeParsed });
|
|
61
68
|
|
|
62
69
|
const appDir = getAppDir(projectId);
|
|
@@ -79,7 +86,7 @@ export async function setEnv(props: { projectId: string; envVars: EnvVars }) {
|
|
|
79
86
|
);
|
|
80
87
|
}
|
|
81
88
|
|
|
82
|
-
|
|
89
|
+
export function convertStringEnvsToKeyVal(stringEnvs: string[]) {
|
|
83
90
|
const envVars = {};
|
|
84
91
|
stringEnvs.forEach((env: string) => {
|
|
85
92
|
const keyVal = env.split('=');
|
|
@@ -117,17 +124,20 @@ export async function getAllEnvs(props: {
|
|
|
117
124
|
envFileLines = envFileLines.filter((v) => {
|
|
118
125
|
return v !== '' && !v.includes('#');
|
|
119
126
|
});
|
|
120
|
-
const newEnvVars =
|
|
127
|
+
const newEnvVars = convertStringEnvsToKeyVal(envFileLines);
|
|
121
128
|
envVars[s] = { ...envVars[s], ...newEnvVars };
|
|
122
129
|
}
|
|
123
130
|
}
|
|
124
131
|
if ('environment' in service) {
|
|
125
132
|
const environment: string[] = service['environment'];
|
|
126
|
-
const newEnvVars =
|
|
133
|
+
const newEnvVars = convertStringEnvsToKeyVal(environment);
|
|
127
134
|
envVars[s] = { ...envVars[s], ...newEnvVars };
|
|
128
135
|
}
|
|
129
136
|
}
|
|
130
137
|
}
|
|
131
138
|
|
|
139
|
+
// Device shadow needs null to delete
|
|
140
|
+
replaceFalseyWithNull(envVars, true);
|
|
141
|
+
|
|
132
142
|
return envVars;
|
|
133
143
|
}
|
|
@@ -65,7 +65,7 @@ export async function installApp(props: {
|
|
|
65
65
|
if (!(await AgentConfigFile().isAppReady({ projectId }))) {
|
|
66
66
|
throw new Error('Application already has installation in progress!');
|
|
67
67
|
}
|
|
68
|
-
logger.info('Application is already installed, updating');
|
|
68
|
+
logger.info('Application is already installed, updating...');
|
|
69
69
|
|
|
70
70
|
// make sure the app is stopped if it's running, to clear the docker container.
|
|
71
71
|
if (await isAppStarted({ projectId })) {
|