@alwaysai/device-agent 1.3.0 → 1.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.
Files changed (89) hide show
  1. package/lib/application-control/environment-variables.d.ts +1 -0
  2. package/lib/application-control/environment-variables.d.ts.map +1 -1
  3. package/lib/application-control/environment-variables.js +22 -20
  4. package/lib/application-control/environment-variables.js.map +1 -1
  5. package/lib/application-control/environment-variables.test.js +37 -2
  6. package/lib/application-control/environment-variables.test.js.map +1 -1
  7. package/lib/application-control/install.js +1 -1
  8. package/lib/application-control/install.js.map +1 -1
  9. package/lib/cloud-connection/device-agent-cloud-connection.d.ts +2 -2
  10. package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -1
  11. package/lib/cloud-connection/device-agent-cloud-connection.js +116 -99
  12. package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -1
  13. package/lib/cloud-connection/live-updates-handler.d.ts.map +1 -1
  14. package/lib/cloud-connection/live-updates-handler.js +30 -25
  15. package/lib/cloud-connection/live-updates-handler.js.map +1 -1
  16. package/lib/cloud-connection/live-updates-handler.test.js +15 -0
  17. package/lib/cloud-connection/live-updates-handler.test.js.map +1 -1
  18. package/lib/cloud-connection/messages.d.ts +1 -3
  19. package/lib/cloud-connection/messages.d.ts.map +1 -1
  20. package/lib/cloud-connection/messages.js +1 -9
  21. package/lib/cloud-connection/messages.js.map +1 -1
  22. package/lib/cloud-connection/publisher.d.ts +1 -0
  23. package/lib/cloud-connection/publisher.d.ts.map +1 -1
  24. package/lib/cloud-connection/publisher.js +3 -0
  25. package/lib/cloud-connection/publisher.js.map +1 -1
  26. package/lib/cloud-connection/shadow-handler.d.ts.map +1 -1
  27. package/lib/cloud-connection/shadow-handler.js +10 -3
  28. package/lib/cloud-connection/shadow-handler.js.map +1 -1
  29. package/lib/cloud-connection/shadow-handler.test.js +79 -28
  30. package/lib/cloud-connection/shadow-handler.test.js.map +1 -1
  31. package/lib/cloud-connection/transaction-manager.d.ts +26 -6
  32. package/lib/cloud-connection/transaction-manager.d.ts.map +1 -1
  33. package/lib/cloud-connection/transaction-manager.js +103 -22
  34. package/lib/cloud-connection/transaction-manager.js.map +1 -1
  35. package/lib/cloud-connection/transaction-manager.test.js +179 -13
  36. package/lib/cloud-connection/transaction-manager.test.js.map +1 -1
  37. package/lib/subcommands/app/analytics.d.ts +10 -0
  38. package/lib/subcommands/app/analytics.d.ts.map +1 -0
  39. package/lib/subcommands/app/analytics.js +83 -0
  40. package/lib/subcommands/app/analytics.js.map +1 -0
  41. package/lib/subcommands/app/index.d.ts.map +1 -1
  42. package/lib/subcommands/app/index.js +3 -1
  43. package/lib/subcommands/app/index.js.map +1 -1
  44. package/lib/subcommands/app/models.d.ts +0 -5
  45. package/lib/subcommands/app/models.d.ts.map +1 -1
  46. package/lib/subcommands/app/models.js +11 -47
  47. package/lib/subcommands/app/models.js.map +1 -1
  48. package/lib/subcommands/app/status.d.ts +1 -0
  49. package/lib/subcommands/app/status.d.ts.map +1 -1
  50. package/lib/subcommands/app/status.js +14 -3
  51. package/lib/subcommands/app/status.js.map +1 -1
  52. package/lib/subcommands/app/version.d.ts +2 -1
  53. package/lib/subcommands/app/version.d.ts.map +1 -1
  54. package/lib/subcommands/app/version.js +16 -3
  55. package/lib/subcommands/app/version.js.map +1 -1
  56. package/lib/util/parsing.d.ts +2 -0
  57. package/lib/util/parsing.d.ts.map +1 -0
  58. package/lib/util/parsing.js +17 -0
  59. package/lib/util/parsing.js.map +1 -0
  60. package/package.json +4 -6
  61. package/readme.md +146 -92
  62. package/src/application-control/environment-variables.test.ts +43 -3
  63. package/src/application-control/environment-variables.ts +29 -19
  64. package/src/application-control/install.ts +1 -1
  65. package/src/cloud-connection/device-agent-cloud-connection.ts +155 -141
  66. package/src/cloud-connection/live-updates-handler.test.ts +20 -0
  67. package/src/cloud-connection/live-updates-handler.ts +45 -52
  68. package/src/cloud-connection/messages.ts +1 -14
  69. package/src/cloud-connection/publisher.ts +4 -0
  70. package/src/cloud-connection/shadow-handler.test.ts +88 -28
  71. package/src/cloud-connection/shadow-handler.ts +13 -3
  72. package/src/cloud-connection/transaction-manager.test.ts +193 -18
  73. package/src/cloud-connection/transaction-manager.ts +174 -26
  74. package/src/subcommands/app/analytics.ts +99 -0
  75. package/src/subcommands/app/index.ts +4 -3
  76. package/src/subcommands/app/models.ts +13 -49
  77. package/src/subcommands/app/status.ts +20 -3
  78. package/src/subcommands/app/version.ts +19 -4
  79. package/src/util/parsing.ts +11 -0
  80. package/lib/cloud-connection/cmd-status.d.ts +0 -8
  81. package/lib/cloud-connection/cmd-status.d.ts.map +0 -1
  82. package/lib/cloud-connection/cmd-status.js +0 -62
  83. package/lib/cloud-connection/cmd-status.js.map +0 -1
  84. package/lib/cloud-connection/message-builder.d.ts +0 -7
  85. package/lib/cloud-connection/message-builder.d.ts.map +0 -1
  86. package/lib/cloud-connection/message-builder.js +0 -63
  87. package/lib/cloud-connection/message-builder.js.map +0 -1
  88. package/src/cloud-connection/cmd-status.ts +0 -71
  89. package/src/cloud-connection/message-builder.ts +0 -117
@@ -1,40 +1,121 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TransactionManager = void 0;
4
+ const device_agent_schemas_1 = require("@alwaysai/device-agent-schemas");
5
+ const logger_1 = require("../util/logger");
6
+ const util_1 = require("alwaysai/lib/util");
7
+ const coded_error_1 = require("@carnesen/coded-error");
4
8
  class TransactionManager {
5
- constructor() {
6
- this.txToProject = {};
7
- this.projectToTx = {};
8
- this.txToProject = {};
9
- this.projectToTx = {};
9
+ constructor(publisher, liveUpdatesHandler) {
10
+ this.detailsByTx = {};
11
+ this.detailsByProject = {};
12
+ this.Errors = (0, util_1.keyMirror)({
13
+ TRANSACTION_ONGOING: null,
14
+ PROJECT_ONGOING: null,
15
+ TRANSACTION_NOT_ONGOING: null
16
+ });
17
+ this.detailsByTx = {};
18
+ this.detailsByProject = {};
19
+ this.publisher = publisher;
20
+ this.liveUpdatesHandler = liveUpdatesHandler;
10
21
  }
11
- addTransaction(txId, projectId) {
12
- // Check if the Transaction already exists
13
- if (this.txToProject[txId]) {
14
- throw new Error(`Transaction ID ${txId} already exists for this projectId ${projectId}!`);
22
+ startTransaction(txId, projectId, stepName) {
23
+ // Check if the transaction already exists
24
+ if (this.detailsByTx[txId]) {
25
+ const txnDetails = this.detailsByTx[txId];
26
+ throw new coded_error_1.CodedError(`Transaction ${txId} already ongoing!\n${JSON.stringify(txnDetails, null, 2)}`, this.Errors.TRANSACTION_ONGOING);
27
+ }
28
+ // Check if there is any ongoing transactions for project
29
+ if (this.detailsByProject[projectId]) {
30
+ const txnDetails = this.detailsByProject[projectId];
31
+ throw new coded_error_1.CodedError(`Project ${projectId} already has an ongoing transaction!\n${JSON.stringify(txnDetails, null, 2)}`, this.Errors.PROJECT_ONGOING);
32
+ }
33
+ // Map the Transaction ID with Project ID
34
+ const txDetails = {
35
+ txId,
36
+ projectId,
37
+ stepName,
38
+ start: new Date().toLocaleString()
39
+ };
40
+ this.detailsByTx[txId] = txDetails;
41
+ this.detailsByProject[projectId] = txDetails;
42
+ logger_1.logger.info(`Started transaction:\n${JSON.stringify(txDetails, null, 2)}`);
43
+ // send live updates
44
+ void this.liveUpdatesHandler.enableTransactionStatus({
45
+ txId
46
+ });
47
+ }
48
+ updateTransaction(txId, stepName) {
49
+ const txDetails = this.detailsByTx[txId];
50
+ if (!txDetails) {
51
+ throw new coded_error_1.CodedError(`Cannot update transaction ${txId} since it doesn't exist!`, this.Errors.TRANSACTION_NOT_ONGOING);
52
+ }
53
+ txDetails.stepName = stepName;
54
+ txDetails.update = new Date().toLocaleString();
55
+ logger_1.logger.info(`Updated transaction:\n${JSON.stringify(txDetails, null, 2)}`);
56
+ }
57
+ async runTransactionStep(props) {
58
+ const { func, projectId, txId, start, stepName } = props;
59
+ if (start) {
60
+ this.startTransaction(txId, projectId, stepName);
15
61
  }
16
62
  else {
17
- // Check if there is any ongoing Transactions for Project ID
18
- if (this.projectToTx[projectId]) {
19
- throw new Error(`This Project ID ${projectId} already has an ongoing transaction!`);
20
- }
21
- else {
22
- // Map the Transaction ID with Project ID
23
- this.txToProject[txId] = projectId;
24
- this.projectToTx[projectId] = txId;
63
+ this.updateTransaction(txId, stepName);
64
+ }
65
+ try {
66
+ const completed = await func();
67
+ if (completed) {
68
+ this.completeTransaction(txId);
69
+ const successStatusResponsePayload = {
70
+ status: device_agent_schemas_1.keyMirrors.statusResponse.success
71
+ };
72
+ // Send final status message
73
+ const message = (0, device_agent_schemas_1.buildToClientStatusResponseMessage)(this.publisher.getClientId(), successStatusResponsePayload, txId);
74
+ this.publisher.publishToClient(message);
25
75
  }
26
76
  }
77
+ catch (e) {
78
+ const message = e.message;
79
+ logger_1.logger.error(`Failed to execute cmd for ${projectId}:\n${message}\n${e.stack}`);
80
+ this.completeTransaction(txId);
81
+ const failureStatusResponsePayload = {
82
+ status: device_agent_schemas_1.keyMirrors.statusResponse.failure,
83
+ message
84
+ };
85
+ // Send final status message
86
+ const failureStatusResponseMessage = (0, device_agent_schemas_1.buildToClientStatusResponseMessage)(this.publisher.getClientId(), failureStatusResponsePayload, txId);
87
+ this.publisher.publishToClient(failureStatusResponseMessage);
88
+ }
27
89
  }
28
90
  getTransactionFromProject(projectId) {
29
- return this.projectToTx[projectId];
91
+ const txnDetails = this.detailsByProject[projectId];
92
+ return txnDetails === null || txnDetails === void 0 ? void 0 : txnDetails.txId;
93
+ }
94
+ isOngoingTransactionForProjectID(projectId) {
95
+ return projectId in this.detailsByProject;
96
+ }
97
+ isOngoingTransaction(txId) {
98
+ return txId in this.detailsByTx;
99
+ }
100
+ isAnyOngoingTransaction() {
101
+ return Object.keys(this.detailsByTx).length > 0;
30
102
  }
31
103
  getProjectFromTransaction(txId) {
32
- return this.txToProject[txId];
104
+ const txnDetails = this.detailsByTx[txId];
105
+ return txnDetails === null || txnDetails === void 0 ? void 0 : txnDetails.projectId;
33
106
  }
34
107
  completeTransaction(txId) {
35
- const projectId = this.txToProject[txId];
36
- delete this.txToProject[txId];
37
- delete this.projectToTx[projectId];
108
+ const txDetails = this.detailsByTx[txId];
109
+ if (txDetails === undefined) {
110
+ throw new coded_error_1.CodedError(`Cannot complete transaction ${txId} since it doesn't exist!`, this.Errors.TRANSACTION_NOT_ONGOING);
111
+ }
112
+ txDetails.stop = new Date().toLocaleString();
113
+ logger_1.logger.info(`Completed transaction:\n${JSON.stringify(txDetails, null, 2)}`);
114
+ delete this.detailsByTx[txId];
115
+ delete this.detailsByProject[txDetails.projectId];
116
+ void this.liveUpdatesHandler.disableTransactionStatus({
117
+ txId
118
+ });
38
119
  }
39
120
  }
40
121
  exports.TransactionManager = TransactionManager;
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-manager.js","sourceRoot":"","sources":["../../src/cloud-connection/transaction-manager.ts"],"names":[],"mappings":";;;AAAA,MAAa,kBAAkB;IAI7B;QAHQ,gBAAW,GAA2B,EAAE,CAAC;QACzC,gBAAW,GAA2B,EAAE,CAAC;QAG/C,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAEM,cAAc,CAAC,IAAY,EAAE,SAAiB;QACnD,0CAA0C;QAC1C,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,sCAAsC,SAAS,GAAG,CACzE,CAAC;SACH;aAAM;YACL,4DAA4D;YAC5D,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;gBAC/B,MAAM,IAAI,KAAK,CACb,mBAAmB,SAAS,sCAAsC,CACnE,CAAC;aACH;iBAAM;gBACL,yCAAyC;gBACzC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;gBACnC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;aACpC;SACF;IACH,CAAC;IAEM,yBAAyB,CAAC,SAAiB;QAChD,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAEM,yBAAyB,CAAC,IAAY;QAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEM,mBAAmB,CAAC,IAAY;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;CACF;AA1CD,gDA0CC"}
1
+ {"version":3,"file":"transaction-manager.js","sourceRoot":"","sources":["../../src/cloud-connection/transaction-manager.ts"],"names":[],"mappings":";;;AAAA,yEAIwC;AAGxC,2CAAwC;AACxC,4CAA8C;AAC9C,uDAAmD;AAWnD,MAAa,kBAAkB;IAkE7B,YAAY,SAAoB,EAAE,kBAAsC;QAjEhE,gBAAW,GAAuC,EAAE,CAAC;QACrD,qBAAgB,GAAuC,EAAE,CAAC;QAuE3D,WAAM,GAAG,IAAA,gBAAS,EAAC;YACxB,mBAAmB,EAAE,IAAI;YACzB,eAAe,EAAE,IAAI;YACrB,uBAAuB,EAAE,IAAI;SAC9B,CAAC,CAAC;QAVD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IAC/C,CAAC;IAjEO,gBAAgB,CACtB,IAAY,EACZ,SAAiB,EACjB,QAAiB;QAEjB,0CAA0C;QAC1C,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,IAAI,wBAAU,CAClB,eAAe,IAAI,sBAAsB,IAAI,CAAC,SAAS,CACrD,UAAU,EACV,IAAI,EACJ,CAAC,CACF,EAAE,EACH,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAChC,CAAC;SACH;QAED,yDAAyD;QACzD,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;YACpC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACpD,MAAM,IAAI,wBAAU,CAClB,WAAW,SAAS,yCAAyC,IAAI,CAAC,SAAS,CACzE,UAAU,EACV,IAAI,EACJ,CAAC,CACF,EAAE,EACH,IAAI,CAAC,MAAM,CAAC,eAAe,CAC5B,CAAC;SACH;QAED,yCAAyC;QACzC,MAAM,SAAS,GAAG;YAChB,IAAI;YACJ,SAAS;YACT,QAAQ;YACR,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE;SACnC,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;QAC7C,eAAM,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3E,oBAAoB;QACpB,KAAK,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC;YACnD,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,IAAY,EAAE,QAAiB;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,IAAI,wBAAU,CAClB,6BAA6B,IAAI,0BAA0B,EAC3D,IAAI,CAAC,MAAM,CAAC,uBAAuB,CACpC,CAAC;SACH;QACD,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC9B,SAAS,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE,CAAC;QAC/C,eAAM,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IAeM,KAAK,CAAC,kBAAkB,CAAC,KAM/B;QACC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QACzD,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;SAClD;aAAM;YACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SACxC;QACD,IAAI;YACF,MAAM,SAAS,GAAG,MAAM,IAAI,EAAE,CAAC;YAC/B,IAAI,SAAS,EAAE;gBACb,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM,4BAA4B,GAA0B;oBAC1D,MAAM,EAAE,iCAAU,CAAC,cAAc,CAAC,OAAO;iBAC1C,CAAC;gBACF,4BAA4B;gBAC5B,MAAM,OAAO,GAAG,IAAA,yDAAkC,EAChD,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAC5B,4BAA4B,EAC5B,IAAI,CACL,CAAC;gBACF,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;aACzC;SACF;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,OAAO,GAAW,CAAC,CAAC,OAAO,CAAC;YAClC,eAAM,CAAC,KAAK,CACV,6BAA6B,SAAS,MAAM,OAAO,KAAK,CAAC,CAAC,KAAK,EAAE,CAClE,CAAC;YAEF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAE/B,MAAM,4BAA4B,GAA0B;gBAC1D,MAAM,EAAE,iCAAU,CAAC,cAAc,CAAC,OAAO;gBACzC,OAAO;aACR,CAAC;YACF,4BAA4B;YAC5B,MAAM,4BAA4B,GAAG,IAAA,yDAAkC,EACrE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAC5B,4BAA4B,EAC5B,IAAI,CACL,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;SAC9D;IACH,CAAC;IAEM,yBAAyB,CAAC,SAAiB;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACpD,OAAO,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC;IAC1B,CAAC;IAEM,gCAAgC,CAAC,SAAiB;QACvD,OAAO,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC;IAC5C,CAAC;IAEM,oBAAoB,CAAC,IAAY;QACtC,OAAO,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC;IAClC,CAAC;IAEM,uBAAuB;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAClD,CAAC;IAEM,yBAAyB,CAAC,IAAY;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC;IAC/B,CAAC;IAEM,mBAAmB,CAAC,IAAY;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,SAAS,KAAK,SAAS,EAAE;YAC3B,MAAM,IAAI,wBAAU,CAClB,+BAA+B,IAAI,0BAA0B,EAC7D,IAAI,CAAC,MAAM,CAAC,uBAAuB,CACpC,CAAC;SACH;QACD,SAAS,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE,CAAC;QAC7C,eAAM,CAAC,IAAI,CACT,2BAA2B,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAChE,CAAC;QACF,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAElD,KAAK,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,CAAC;YACpD,IAAI;SACL,CAAC,CAAC;IACL,CAAC;CACF;AA1KD,gDA0KC"}
@@ -3,61 +3,227 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const device_agent_schemas_1 = require("@alwaysai/device-agent-schemas");
4
4
  const transaction_manager_1 = require("./transaction-manager");
5
5
  const uuid_1 = require("uuid");
6
+ const publisher_1 = require("./publisher");
7
+ const mockClient = {
8
+ publish: jest.fn()
9
+ };
10
+ const clientId = 'test-client';
11
+ const mockLiveUpdatesHandler = {
12
+ enableTransactionStatus: jest.fn(),
13
+ disableTransactionStatus: jest.fn()
14
+ };
6
15
  describe('Test Transaction Manager', () => {
7
16
  let txnMgr;
17
+ let publisher;
18
+ const func_complete = jest
19
+ .fn()
20
+ .mockResolvedValue(true);
21
+ const func_incomplete = jest
22
+ .fn()
23
+ .mockResolvedValue(false);
8
24
  beforeEach(() => {
9
- txnMgr = new transaction_manager_1.TransactionManager();
25
+ publisher = new publisher_1.Publisher(mockClient, clientId);
26
+ txnMgr = new transaction_manager_1.TransactionManager(publisher, mockLiveUpdatesHandler);
10
27
  jest.clearAllMocks();
11
28
  });
12
29
  function generateRandomProjectId() {
13
30
  return (0, uuid_1.v4)();
14
31
  }
15
- test('Add a new transaction', async () => {
32
+ test('Start a new transaction', async () => {
16
33
  const txId = (0, device_agent_schemas_1.generateTxId)();
17
34
  const projectId = generateRandomProjectId();
18
- txnMgr.addTransaction(txId, projectId);
35
+ await txnMgr.runTransactionStep({
36
+ func: func_incomplete,
37
+ projectId,
38
+ txId,
39
+ start: true
40
+ });
19
41
  expect(txnMgr.getProjectFromTransaction(txId)).toEqual(projectId);
20
42
  expect(txnMgr.getTransactionFromProject(projectId)).toEqual(txId);
43
+ expect(txnMgr.isOngoingTransaction(txId)).toBe(true);
44
+ expect(txnMgr.isOngoingTransactionForProjectID(projectId)).toBe(true);
45
+ expect(txnMgr.isAnyOngoingTransaction()).toBe(true);
46
+ });
47
+ test('Start a new transaction which completes in one step', async () => {
48
+ const txId = (0, device_agent_schemas_1.generateTxId)();
49
+ const projectId = generateRandomProjectId();
50
+ await txnMgr.runTransactionStep({
51
+ func: func_complete,
52
+ projectId,
53
+ txId,
54
+ start: true
55
+ });
56
+ expect(txnMgr.isOngoingTransaction(txId)).toBe(false);
57
+ expect(txnMgr.isOngoingTransactionForProjectID(projectId)).toBe(false);
58
+ expect(txnMgr.isAnyOngoingTransaction()).toBe(false);
59
+ const msg = JSON.parse(mockClient.publish.mock.calls[0][1]);
60
+ expect(msg.payload.status).toBe(device_agent_schemas_1.keyMirrors.statusResponse.success);
61
+ });
62
+ test('Start a new transaction and complete in second step', async () => {
63
+ const txId = (0, device_agent_schemas_1.generateTxId)();
64
+ const projectId = generateRandomProjectId();
65
+ await txnMgr.runTransactionStep({
66
+ func: func_incomplete,
67
+ projectId,
68
+ txId,
69
+ start: true,
70
+ stepName: 'step1'
71
+ });
72
+ await txnMgr.runTransactionStep({
73
+ func: func_complete,
74
+ projectId,
75
+ txId,
76
+ start: false,
77
+ stepName: 'step2'
78
+ });
79
+ expect(txnMgr.isOngoingTransaction(txId)).toBe(false);
80
+ expect(txnMgr.isOngoingTransactionForProjectID(projectId)).toBe(false);
81
+ expect(txnMgr.isAnyOngoingTransaction()).toBe(false);
21
82
  });
22
- test('Add multiple transactions to different projects', async () => {
83
+ test('Start multiple transactions for different projects', async () => {
23
84
  const numTransactions = 3;
24
85
  const projectTxIdList = [];
25
86
  for (let i = 0; i < numTransactions; i++) {
26
87
  const txId = (0, device_agent_schemas_1.generateTxId)();
27
88
  const projectId = generateRandomProjectId();
28
- txnMgr.addTransaction(txId, projectId);
89
+ await txnMgr.runTransactionStep({
90
+ func: func_incomplete,
91
+ projectId,
92
+ txId,
93
+ start: true
94
+ });
29
95
  projectTxIdList.push({ projectId, txId });
30
96
  }
31
97
  projectTxIdList.forEach(({ txId, projectId }) => {
32
98
  expect(txnMgr.getProjectFromTransaction(txId)).toEqual(projectId);
33
99
  expect(txnMgr.getTransactionFromProject(projectId)).toEqual(txId);
100
+ expect(txnMgr.isOngoingTransaction(txId)).toBe(true);
101
+ expect(txnMgr.isOngoingTransactionForProjectID(projectId)).toBe(true);
102
+ expect(txnMgr.isAnyOngoingTransaction()).toBe(true);
34
103
  });
35
104
  });
36
- test('Attempt to add existing transaction to a project, results in failure', async () => {
105
+ test('Attempt to start an ongoing transaction, results in failure', async () => {
37
106
  const txId = (0, device_agent_schemas_1.generateTxId)();
38
107
  const projectId = generateRandomProjectId();
39
- txnMgr.addTransaction(txId, projectId);
40
- expect(() => txnMgr.addTransaction(txId, projectId)).toThrow(`Transaction ID ${txId} already exists for this projectId ${projectId}!`);
108
+ await txnMgr.runTransactionStep({
109
+ func: func_incomplete,
110
+ projectId,
111
+ txId,
112
+ start: true,
113
+ stepName: 'step1'
114
+ });
115
+ try {
116
+ await txnMgr.runTransactionStep({
117
+ func: func_incomplete,
118
+ projectId,
119
+ txId,
120
+ start: true,
121
+ stepName: 'step2'
122
+ });
123
+ throw new Error('Expected starting transaction to fail!');
124
+ }
125
+ catch (e) {
126
+ console.log(e);
127
+ expect(e.code).toBe(txnMgr.Errors.TRANSACTION_ONGOING);
128
+ }
41
129
  expect(txnMgr.getTransactionFromProject(projectId)).toEqual(txId);
42
130
  expect(txnMgr.getProjectFromTransaction(txId)).toEqual(projectId);
43
131
  });
44
- test('Attempt to add a transaction to a project with an ongoing transaction, results in failure', async () => {
132
+ test('Attempt to continue a transaction that is not ongoing', async () => {
133
+ const txId = (0, device_agent_schemas_1.generateTxId)();
134
+ const projectId = generateRandomProjectId();
135
+ try {
136
+ await txnMgr.runTransactionStep({
137
+ func: func_incomplete,
138
+ projectId,
139
+ txId,
140
+ start: false,
141
+ stepName: 'step1'
142
+ });
143
+ throw new Error('Expected continue transaction to fail!');
144
+ }
145
+ catch (e) {
146
+ console.log(e);
147
+ expect(e.code).toBe(txnMgr.Errors.TRANSACTION_NOT_ONGOING);
148
+ }
149
+ expect(txnMgr.isOngoingTransaction(txId)).toBe(false);
150
+ expect(txnMgr.isOngoingTransactionForProjectID(projectId)).toBe(false);
151
+ expect(txnMgr.isAnyOngoingTransaction()).toBe(false);
152
+ });
153
+ test('Attempt to start a transaction for a project with an ongoing transaction, results in failure', async () => {
45
154
  const txId = (0, device_agent_schemas_1.generateTxId)();
46
155
  const txId2 = (0, device_agent_schemas_1.generateTxId)();
47
156
  const projectId = generateRandomProjectId();
48
- txnMgr.addTransaction(txId, projectId);
49
- expect(() => txnMgr.addTransaction(txId2, projectId)).toThrow(`This Project ID ${projectId} already has an ongoing transaction!`);
157
+ await txnMgr.runTransactionStep({
158
+ func: func_incomplete,
159
+ projectId,
160
+ txId,
161
+ start: true,
162
+ stepName: 'step1'
163
+ });
164
+ try {
165
+ await txnMgr.runTransactionStep({
166
+ func: func_incomplete,
167
+ projectId,
168
+ txId: txId2,
169
+ start: true,
170
+ stepName: 'step2'
171
+ });
172
+ throw new Error('Expected start transaction to fail!');
173
+ }
174
+ catch (e) {
175
+ console.log(e);
176
+ expect(e.code).toBe(txnMgr.Errors.PROJECT_ONGOING);
177
+ }
50
178
  expect(txnMgr.getTransactionFromProject(projectId)).toEqual(txId);
51
179
  expect(txnMgr.getProjectFromTransaction(txId)).toEqual(projectId);
52
180
  expect(txnMgr.getProjectFromTransaction(txId2)).toBeUndefined();
53
181
  });
54
- test('Test remove transaction from queue', async () => {
182
+ test('Handle error in step function', async () => {
55
183
  const txId = (0, device_agent_schemas_1.generateTxId)();
56
184
  const projectId = generateRandomProjectId();
57
- txnMgr.addTransaction(txId, projectId);
185
+ await txnMgr.runTransactionStep({
186
+ func: jest.fn().mockImplementation(() => {
187
+ throw new Error('Test error!');
188
+ }),
189
+ projectId,
190
+ txId,
191
+ start: true,
192
+ stepName: 'step1'
193
+ });
194
+ expect(txnMgr.isOngoingTransaction(txId)).toBe(false);
195
+ expect(txnMgr.isOngoingTransactionForProjectID(projectId)).toBe(false);
196
+ expect(txnMgr.isAnyOngoingTransaction()).toBe(false);
197
+ const msg = JSON.parse(mockClient.publish.mock.calls[0][1]);
198
+ expect(msg.payload.status).toBe(device_agent_schemas_1.keyMirrors.statusResponse.failure);
199
+ });
200
+ test('Complete ongoing transaction', async () => {
201
+ const txId = (0, device_agent_schemas_1.generateTxId)();
202
+ const projectId = generateRandomProjectId();
203
+ await txnMgr.runTransactionStep({
204
+ func: func_incomplete,
205
+ projectId,
206
+ txId,
207
+ start: true,
208
+ stepName: 'step1'
209
+ });
58
210
  txnMgr.completeTransaction(txId);
59
211
  expect(txnMgr.getTransactionFromProject(projectId)).toBeUndefined();
60
212
  expect(txnMgr.getProjectFromTransaction(txId)).toBeUndefined();
213
+ expect(txnMgr.isOngoingTransactionForProjectID(projectId)).toBe(false);
214
+ expect(txnMgr.isAnyOngoingTransaction()).toBe(false);
215
+ });
216
+ test('Test remove non-existing transaction from queue', async () => {
217
+ const txId = (0, device_agent_schemas_1.generateTxId)();
218
+ try {
219
+ txnMgr.completeTransaction(txId);
220
+ throw new Error('Expected completTransaction to fail!');
221
+ }
222
+ catch (e) {
223
+ console.log(e);
224
+ expect(e.code).toBe(txnMgr.Errors.TRANSACTION_NOT_ONGOING);
225
+ }
226
+ expect(txnMgr.getProjectFromTransaction(txId)).toBeUndefined();
61
227
  });
62
228
  });
63
229
  //# sourceMappingURL=transaction-manager.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-manager.test.js","sourceRoot":"","sources":["../../src/cloud-connection/transaction-manager.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction-manager.test.js","sourceRoot":"","sources":["../../src/cloud-connection/transaction-manager.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare const getAnalyticsCfgCliLeaf: import("@alwaysai/alwayscli/lib/types").CliLeaf<import("@alwaysai/alwayscli").CliInput<undefined, false>, {
2
+ project: import("@alwaysai/alwayscli").CliInput<string, true>;
3
+ }, import("@alwaysai/alwayscli").CliInput<undefined, false>>;
4
+ export declare const setAnalyticsCfgCliLeaf: import("@alwaysai/alwayscli/lib/types").CliLeaf<import("@alwaysai/alwayscli").CliInput<undefined, false>, {
5
+ project: import("@alwaysai/alwayscli").CliInput<string, true>;
6
+ 'enable-cloud-publish': import("@alwaysai/alwayscli").CliInput<boolean, false>;
7
+ 'enable-file-publish': import("@alwaysai/alwayscli").CliInput<boolean, false>;
8
+ 'file-size-bytes': import("@alwaysai/alwayscli").CliInput<number | undefined, boolean>;
9
+ }, import("@alwaysai/alwayscli").CliInput<undefined, false>>;
10
+ //# sourceMappingURL=analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/analytics.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,sBAAsB;;4DAkBjC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;4DAkEjC,CAAC"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setAnalyticsCfgCliLeaf = exports.getAnalyticsCfgCliLeaf = void 0;
4
+ const alwayscli_1 = require("@alwaysai/alwayscli");
5
+ const application_control_1 = require("../../application-control");
6
+ const device_agent_cloud_connection_1 = require("../../cloud-connection/device-agent-cloud-connection");
7
+ const sleep_1 = require("../../util/sleep");
8
+ const logger_1 = require("../../util/logger");
9
+ const lodash_1 = require("lodash");
10
+ exports.getAnalyticsCfgCliLeaf = (0, alwayscli_1.CliLeaf)({
11
+ name: 'get-analytics-cfg',
12
+ description: 'Get analytics configuration for an application',
13
+ namedInputs: {
14
+ project: (0, alwayscli_1.CliStringInput)({
15
+ description: 'Project Id',
16
+ required: true
17
+ })
18
+ },
19
+ async action(_, opts) {
20
+ const { project } = opts;
21
+ const appCfg = await (0, application_control_1.readAppCfgFile)({ projectId: project });
22
+ if (appCfg.analytics !== undefined) {
23
+ console.log(JSON.stringify(appCfg.analytics, null, 2));
24
+ }
25
+ else {
26
+ console.log('No analytics configuration for app!');
27
+ }
28
+ }
29
+ });
30
+ exports.setAnalyticsCfgCliLeaf = (0, alwayscli_1.CliLeaf)({
31
+ name: 'set-analytics-cfg',
32
+ description: 'Set analytics configuration for an application. Note that this resets the config so all desired options must be set',
33
+ namedInputs: {
34
+ project: (0, alwayscli_1.CliStringInput)({
35
+ description: 'Project Id',
36
+ required: true
37
+ }),
38
+ 'enable-cloud-publish': (0, alwayscli_1.CliFlagInput)({
39
+ description: 'Enable publishing analytics to cloud'
40
+ }),
41
+ 'enable-file-publish': (0, alwayscli_1.CliFlagInput)({
42
+ description: 'Enable publishing analytics to file'
43
+ }),
44
+ 'file-size-bytes': (0, alwayscli_1.CliNumberInput)({
45
+ description: 'Set the max file size in bytes for analytics file writing',
46
+ required: false
47
+ })
48
+ },
49
+ async action(_, { project, 'enable-cloud-publish': enableCLoudPublish, 'enable-file-publish': enableFilePublish, 'file-size-bytes': fileSizeBytes }) {
50
+ const deviceAgent = new device_agent_cloud_connection_1.DeviceAgentCloudConnection();
51
+ await deviceAgent.setupHandlers();
52
+ const newAppCfg = {
53
+ analytics: {
54
+ enable_cloud_publish: enableCLoudPublish,
55
+ enable_file_publish: enableFilePublish,
56
+ file_size_bytes: fileSizeBytes
57
+ }
58
+ };
59
+ const existingAppCfg = await (0, application_control_1.readAppCfgFile)({ projectId: project });
60
+ const appCfg = (0, lodash_1.assign)(existingAppCfg, (0, lodash_1.merge)(existingAppCfg, newAppCfg));
61
+ // Update the shadow as a client
62
+ const topic = deviceAgent.getShadowTopics().projects.update;
63
+ const packet = {
64
+ state: {
65
+ desired: {
66
+ [project]: {
67
+ appConfig: JSON.stringify(appCfg) // Pack app config as string as dictated by schema
68
+ }
69
+ }
70
+ },
71
+ clientToken: 'client'
72
+ };
73
+ logger_1.logger.debug(`Publishing message:\n${JSON.stringify({ topic, packet }, null, 2)}`);
74
+ deviceAgent.publisher.publish(topic, JSON.stringify(packet));
75
+ // Sleep for extra time to ensure time for shadow response
76
+ await (0, sleep_1.default)(10000);
77
+ while (deviceAgent.isCmdInProgress(project)) {
78
+ await (0, sleep_1.default)(1000);
79
+ }
80
+ await deviceAgent.stop();
81
+ }
82
+ });
83
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../../src/subcommands/app/analytics.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/index.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,YAAY,mDAwBvB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/index.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,YAAY,mDAyBvB,CAAC"}
@@ -7,6 +7,7 @@ const models_1 = require("./models");
7
7
  const status_1 = require("./status");
8
8
  const version_1 = require("./version");
9
9
  const shadow_1 = require("./shadow");
10
+ const analytics_1 = require("./analytics");
10
11
  exports.appCliBranch = (0, alwayscli_1.CliBranch)({
11
12
  name: 'app',
12
13
  description: 'Manage alwaysAI applications',
@@ -24,10 +25,11 @@ exports.appCliBranch = (0, alwayscli_1.CliBranch)({
24
25
  models_1.addModelCliLeaf,
25
26
  models_1.removeModelCliLeaf,
26
27
  models_1.replaceModelsCliLeaf,
27
- models_1.installModelCliLeaf,
28
28
  models_1.updateModelsCliLeaf,
29
29
  env_vars_1.getAllEnvsCliLeaf,
30
30
  env_vars_1.setEnvCliLeaf,
31
+ analytics_1.getAnalyticsCfgCliLeaf,
32
+ analytics_1.setAnalyticsCfgCliLeaf,
31
33
  shadow_1.getShadowCliLeaf,
32
34
  shadow_1.updateShadowCliLeaf
33
35
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/subcommands/app/index.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAChD,yCAA8D;AAC9D,qCAOkB;AAClB,qCAMkB;AAClB,uCAKmB;AACnB,qCAAiE;AAEpD,QAAA,YAAY,GAAG,IAAA,qBAAS,EAAC;IACpC,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,8BAA8B;IAC3C,WAAW,EAAE;QACX,yBAAe;QACf,2BAAiB;QACjB,4BAAmB;QACnB,wBAAe;QACf,uBAAc;QACd,0BAAiB;QACjB,0BAAiB;QACjB,6BAAmB;QACnB,4BAAkB;QAClB,6BAAoB;QACpB,wBAAe;QACf,2BAAkB;QAClB,6BAAoB;QACpB,4BAAmB;QACnB,4BAAmB;QACnB,4BAAiB;QACjB,wBAAa;QACb,yBAAgB;QAChB,4BAAmB;KACpB;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/subcommands/app/index.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAChD,yCAA8D;AAC9D,qCAMkB;AAClB,qCAMkB;AAClB,uCAKmB;AACnB,qCAAiE;AACjE,2CAA6E;AAEhE,QAAA,YAAY,GAAG,IAAA,qBAAS,EAAC;IACpC,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,8BAA8B;IAC3C,WAAW,EAAE;QACX,yBAAe;QACf,2BAAiB;QACjB,4BAAmB;QACnB,wBAAe;QACf,uBAAc;QACd,0BAAiB;QACjB,0BAAiB;QACjB,6BAAmB;QACnB,4BAAkB;QAClB,6BAAoB;QACpB,wBAAe;QACf,2BAAkB;QAClB,6BAAoB;QACpB,4BAAmB;QACnB,4BAAiB;QACjB,wBAAa;QACb,kCAAsB;QACtB,kCAAsB;QACtB,yBAAgB;QAChB,4BAAmB;KACpB;CACF,CAAC,CAAC"}
@@ -6,11 +6,6 @@ export declare const addModelCliLeaf: import("@alwaysai/alwayscli/lib/types").Cl
6
6
  model: import("@alwaysai/alwayscli").CliInput<string, true>;
7
7
  version: import("@alwaysai/alwayscli").CliInput<string, true>;
8
8
  }, import("@alwaysai/alwayscli").CliInput<undefined, false>>;
9
- export declare const installModelCliLeaf: import("@alwaysai/alwayscli/lib/types").CliLeaf<import("@alwaysai/alwayscli").CliInput<undefined, false>, {
10
- project: import("@alwaysai/alwayscli").CliInput<string, true>;
11
- modelName: import("@alwaysai/alwayscli").CliInput<string, true>;
12
- modelVersion: import("@alwaysai/alwayscli").CliInput<number, true>;
13
- }, import("@alwaysai/alwayscli").CliInput<undefined, false>>;
14
9
  export declare const removeModelCliLeaf: import("@alwaysai/alwayscli/lib/types").CliLeaf<import("@alwaysai/alwayscli").CliInput<undefined, false>, {
15
10
  project: import("@alwaysai/alwayscli").CliInput<string, true>;
16
11
  model: import("@alwaysai/alwayscli").CliInput<string, true>;
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/models.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,oBAAoB;;4DAc/B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;4DA4C1B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;4DAyC9B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;4DAkB7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;4DAqB/B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;4DAiB9B,CAAC"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/models.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,oBAAoB;;4DAc/B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;4DAkD1B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;4DAkB7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;4DAqB/B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;4DAiB9B,CAAC"}