@phystack/cli 4.3.40-dev

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 (192) hide show
  1. package/LICENSE.md +19 -0
  2. package/README.md +24 -0
  3. package/bin/index.js +2 -0
  4. package/dist/commands/app/build-apps.js +66 -0
  5. package/dist/commands/app/build-apps.js.map +1 -0
  6. package/dist/commands/app/build-container-remote.js +171 -0
  7. package/dist/commands/app/build-container-remote.js.map +1 -0
  8. package/dist/commands/app/build-container.js +330 -0
  9. package/dist/commands/app/build-container.js.map +1 -0
  10. package/dist/commands/app/build.js +393 -0
  11. package/dist/commands/app/build.js.map +1 -0
  12. package/dist/commands/app/create.js +451 -0
  13. package/dist/commands/app/create.js.map +1 -0
  14. package/dist/commands/app/deploy.js +176 -0
  15. package/dist/commands/app/deploy.js.map +1 -0
  16. package/dist/commands/app/device-picker.js +150 -0
  17. package/dist/commands/app/device-picker.js.map +1 -0
  18. package/dist/commands/app/import.js +303 -0
  19. package/dist/commands/app/import.js.map +1 -0
  20. package/dist/commands/app/list.js +26 -0
  21. package/dist/commands/app/list.js.map +1 -0
  22. package/dist/commands/app/publish.js +327 -0
  23. package/dist/commands/app/publish.js.map +1 -0
  24. package/dist/commands/app/settings.js +129 -0
  25. package/dist/commands/app/settings.js.map +1 -0
  26. package/dist/commands/app/types.js +13 -0
  27. package/dist/commands/app/types.js.map +1 -0
  28. package/dist/commands/app/upload-description.js +139 -0
  29. package/dist/commands/app/upload-description.js.map +1 -0
  30. package/dist/commands/app/upload-settings.js +29 -0
  31. package/dist/commands/app/upload-settings.js.map +1 -0
  32. package/dist/commands/app/utils.js +86 -0
  33. package/dist/commands/app/utils.js.map +1 -0
  34. package/dist/commands/auth/login.js +111 -0
  35. package/dist/commands/auth/login.js.map +1 -0
  36. package/dist/commands/auth/logout.js +19 -0
  37. package/dist/commands/auth/logout.js.map +1 -0
  38. package/dist/commands/descriptor/create.js +143 -0
  39. package/dist/commands/descriptor/create.js.map +1 -0
  40. package/dist/commands/descriptor/index.js +36 -0
  41. package/dist/commands/descriptor/index.js.map +1 -0
  42. package/dist/commands/descriptor/publish.js +163 -0
  43. package/dist/commands/descriptor/publish.js.map +1 -0
  44. package/dist/commands/descriptor/show.js +68 -0
  45. package/dist/commands/descriptor/show.js.map +1 -0
  46. package/dist/commands/dev/develop.js +175 -0
  47. package/dist/commands/dev/develop.js.map +1 -0
  48. package/dist/commands/dev/forward.js +118 -0
  49. package/dist/commands/dev/forward.js.map +1 -0
  50. package/dist/commands/dev/index.js +66 -0
  51. package/dist/commands/dev/index.js.map +1 -0
  52. package/dist/commands/dev/list.js +96 -0
  53. package/dist/commands/dev/list.js.map +1 -0
  54. package/dist/commands/dev/screen-devtools.js +156 -0
  55. package/dist/commands/dev/screen-devtools.js.map +1 -0
  56. package/dist/commands/dev/select.js +118 -0
  57. package/dist/commands/dev/select.js.map +1 -0
  58. package/dist/commands/dev/shell.js +171 -0
  59. package/dist/commands/dev/shell.js.map +1 -0
  60. package/dist/commands/dev/vnc.js +75 -0
  61. package/dist/commands/dev/vnc.js.map +1 -0
  62. package/dist/commands/device/select.js +118 -0
  63. package/dist/commands/device/select.js.map +1 -0
  64. package/dist/commands/flash.js +1120 -0
  65. package/dist/commands/flash.js.map +1 -0
  66. package/dist/commands/inst/create.js +55 -0
  67. package/dist/commands/inst/create.js.map +1 -0
  68. package/dist/commands/inst/index.js +15 -0
  69. package/dist/commands/inst/index.js.map +1 -0
  70. package/dist/commands/inst/list.js +26 -0
  71. package/dist/commands/inst/list.js.map +1 -0
  72. package/dist/commands/legacydev/debug.js +11 -0
  73. package/dist/commands/legacydev/debug.js.map +1 -0
  74. package/dist/commands/legacydev/deploy.js +15 -0
  75. package/dist/commands/legacydev/deploy.js.map +1 -0
  76. package/dist/commands/legacydev/dumpTwin.js +27 -0
  77. package/dist/commands/legacydev/dumpTwin.js.map +1 -0
  78. package/dist/commands/legacydev/forward.js +104 -0
  79. package/dist/commands/legacydev/forward.js.map +1 -0
  80. package/dist/commands/legacydev/index.js +188 -0
  81. package/dist/commands/legacydev/index.js.map +1 -0
  82. package/dist/commands/legacydev/invoke.js +29 -0
  83. package/dist/commands/legacydev/invoke.js.map +1 -0
  84. package/dist/commands/legacydev/js.js +69 -0
  85. package/dist/commands/legacydev/js.js.map +1 -0
  86. package/dist/commands/legacydev/list.js +196 -0
  87. package/dist/commands/legacydev/list.js.map +1 -0
  88. package/dist/commands/legacydev/logs.js +60 -0
  89. package/dist/commands/legacydev/logs.js.map +1 -0
  90. package/dist/commands/legacydev/modules.js +50 -0
  91. package/dist/commands/legacydev/modules.js.map +1 -0
  92. package/dist/commands/legacydev/move.js +23 -0
  93. package/dist/commands/legacydev/move.js.map +1 -0
  94. package/dist/commands/legacydev/ota.js +88 -0
  95. package/dist/commands/legacydev/ota.js.map +1 -0
  96. package/dist/commands/legacydev/patchTwin.js +21 -0
  97. package/dist/commands/legacydev/patchTwin.js.map +1 -0
  98. package/dist/commands/legacydev/pin.js +23 -0
  99. package/dist/commands/legacydev/pin.js.map +1 -0
  100. package/dist/commands/legacydev/pub.js +25 -0
  101. package/dist/commands/legacydev/pub.js.map +1 -0
  102. package/dist/commands/legacydev/rdp.js +64 -0
  103. package/dist/commands/legacydev/rdp.js.map +1 -0
  104. package/dist/commands/legacydev/screen-devtools.js +142 -0
  105. package/dist/commands/legacydev/screen-devtools.js.map +1 -0
  106. package/dist/commands/legacydev/settingsShow.js +89 -0
  107. package/dist/commands/legacydev/settingsShow.js.map +1 -0
  108. package/dist/commands/legacydev/settingsUpdate.js +114 -0
  109. package/dist/commands/legacydev/settingsUpdate.js.map +1 -0
  110. package/dist/commands/legacydev/shell.js +167 -0
  111. package/dist/commands/legacydev/shell.js.map +1 -0
  112. package/dist/commands/legacydev/showTwin.js +9 -0
  113. package/dist/commands/legacydev/showTwin.js.map +1 -0
  114. package/dist/commands/legacydev/statusLog.js +56 -0
  115. package/dist/commands/legacydev/statusLog.js.map +1 -0
  116. package/dist/commands/legacydev/sub.js +39 -0
  117. package/dist/commands/legacydev/sub.js.map +1 -0
  118. package/dist/commands/legacydev/vnc.js +61 -0
  119. package/dist/commands/legacydev/vnc.js.map +1 -0
  120. package/dist/commands/tenant/index.js +21 -0
  121. package/dist/commands/tenant/index.js.map +1 -0
  122. package/dist/commands/tenant/list.js +14 -0
  123. package/dist/commands/tenant/list.js.map +1 -0
  124. package/dist/commands/tenant/select.js +87 -0
  125. package/dist/commands/tenant/select.js.map +1 -0
  126. package/dist/commands/vm/create.js +718 -0
  127. package/dist/commands/vm/create.js.map +1 -0
  128. package/dist/commands/vm/index.js +130 -0
  129. package/dist/commands/vm/index.js.map +1 -0
  130. package/dist/commands/vm/list.js +124 -0
  131. package/dist/commands/vm/list.js.map +1 -0
  132. package/dist/commands/vm/logs.js +66 -0
  133. package/dist/commands/vm/logs.js.map +1 -0
  134. package/dist/commands/vm/remove.js +180 -0
  135. package/dist/commands/vm/remove.js.map +1 -0
  136. package/dist/commands/vm/shell.js +400 -0
  137. package/dist/commands/vm/shell.js.map +1 -0
  138. package/dist/commands/vm/start.js +861 -0
  139. package/dist/commands/vm/start.js.map +1 -0
  140. package/dist/commands/vm/stop.js +232 -0
  141. package/dist/commands/vm/stop.js.map +1 -0
  142. package/dist/index.js +158 -0
  143. package/dist/index.js.map +1 -0
  144. package/dist/services/admin-api/admin-api.types.js +3 -0
  145. package/dist/services/admin-api/admin-api.types.js.map +1 -0
  146. package/dist/services/admin-api/device-modules.admin-api.service.js +58 -0
  147. package/dist/services/admin-api/device-modules.admin-api.service.js.map +1 -0
  148. package/dist/services/admin-api/devices-admin-api.service.js +213 -0
  149. package/dist/services/admin-api/devices-admin-api.service.js.map +1 -0
  150. package/dist/services/admin-api/gridapps-admin-api.service.js +59 -0
  151. package/dist/services/admin-api/gridapps-admin-api.service.js.map +1 -0
  152. package/dist/services/admin-api/index.js +157 -0
  153. package/dist/services/admin-api/index.js.map +1 -0
  154. package/dist/services/admin-api/installations-admin-api.service.js +29 -0
  155. package/dist/services/admin-api/installations-admin-api.service.js.map +1 -0
  156. package/dist/services/admin-api/organizations-admin-api.service.js +53 -0
  157. package/dist/services/admin-api/organizations-admin-api.service.js.map +1 -0
  158. package/dist/services/auth/device-grant-auth.service.js +224 -0
  159. package/dist/services/auth/device-grant-auth.service.js.map +1 -0
  160. package/dist/services/phyhub/index.js +200 -0
  161. package/dist/services/phyhub/index.js.map +1 -0
  162. package/dist/services/phyhub/phyhub.types.js +3 -0
  163. package/dist/services/phyhub/phyhub.types.js.map +1 -0
  164. package/dist/utils/device-fetcher.js +92 -0
  165. package/dist/utils/device-fetcher.js.map +1 -0
  166. package/dist/utils/devices.js +41 -0
  167. package/dist/utils/devices.js.map +1 -0
  168. package/dist/utils/docker-credentials.js +720 -0
  169. package/dist/utils/docker-credentials.js.map +1 -0
  170. package/dist/utils/emulated-device.js +91 -0
  171. package/dist/utils/emulated-device.js.map +1 -0
  172. package/dist/utils/index.js +180 -0
  173. package/dist/utils/index.js.map +1 -0
  174. package/dist/utils/modules.js +36 -0
  175. package/dist/utils/modules.js.map +1 -0
  176. package/dist/utils/org-selector.js +108 -0
  177. package/dist/utils/org-selector.js.map +1 -0
  178. package/dist/utils/proxy.js +31 -0
  179. package/dist/utils/proxy.js.map +1 -0
  180. package/dist/utils/registry-credentials.js +113 -0
  181. package/dist/utils/registry-credentials.js.map +1 -0
  182. package/dist/utils/statuses.js +124 -0
  183. package/dist/utils/statuses.js.map +1 -0
  184. package/dist/utils/templates.js +197 -0
  185. package/dist/utils/templates.js.map +1 -0
  186. package/dist/utils/tenant-storage.js +88 -0
  187. package/dist/utils/tenant-storage.js.map +1 -0
  188. package/dist/utils/vm.js +434 -0
  189. package/dist/utils/vm.js.map +1 -0
  190. package/dist/utils/with-spinner.js +20 -0
  191. package/dist/utils/with-spinner.js.map +1 -0
  192. package/package.json +103 -0
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DevicesAdminApi = exports.DeviceStatusEnum = exports.ParentDeviceTypeEnum = void 0;
7
+ const inquirer_1 = __importDefault(require("inquirer"));
8
+ const fuzzy_1 = __importDefault(require("fuzzy"));
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const _1 = require(".");
11
+ var ParentDeviceTypeEnum;
12
+ (function (ParentDeviceTypeEnum) {
13
+ ParentDeviceTypeEnum["IOTHUB"] = "iothub";
14
+ ParentDeviceTypeEnum["SCREEN"] = "screen";
15
+ ParentDeviceTypeEnum["UNIVERSAL"] = "universal";
16
+ ParentDeviceTypeEnum["LEGACY_BALENA"] = "balena";
17
+ ParentDeviceTypeEnum["ANDROID"] = "android";
18
+ ParentDeviceTypeEnum["TIZEN"] = "tizen";
19
+ ParentDeviceTypeEnum["WINDOWS"] = "windows";
20
+ ParentDeviceTypeEnum["MACOS"] = "macos";
21
+ ParentDeviceTypeEnum["BROWSER"] = "browser";
22
+ })(ParentDeviceTypeEnum || (exports.ParentDeviceTypeEnum = ParentDeviceTypeEnum = {}));
23
+ var DeviceStatusEnum;
24
+ (function (DeviceStatusEnum) {
25
+ DeviceStatusEnum["OFFLINE"] = "OFFLINE";
26
+ DeviceStatusEnum["FAILING"] = "FAILING";
27
+ DeviceStatusEnum["OK"] = "OK";
28
+ })(DeviceStatusEnum || (exports.DeviceStatusEnum = DeviceStatusEnum = {}));
29
+ class DevicesAdminApi {
30
+ constructor({ axiosInstance }) {
31
+ this.listAllDevicesLegacyPhyhub = async (fields) => {
32
+ try {
33
+ const selectedOrg = await this.selectOrganization();
34
+ if (!selectedOrg) {
35
+ throw new Error('No organization selected');
36
+ }
37
+ // Get the phyhubUrl from the selected organization
38
+ const { phyhubUrl } = selectedOrg;
39
+ if (!phyhubUrl) {
40
+ throw new Error('No Phyhub URL found for this organization');
41
+ }
42
+ console.log('');
43
+ try {
44
+ const response = await (0, _1.adminApi)().organizations.fetchDevicesFromPhyhub(selectedOrg.id, phyhubUrl);
45
+ if (response.status === 404) {
46
+ console.log(chalk_1.default.yellow('No devices found for this organization.'));
47
+ return { data: [] };
48
+ }
49
+ if (!response?.data?.data?.docs) {
50
+ console.log(chalk_1.default.yellow('No devices data in response.'));
51
+ return { data: [] };
52
+ }
53
+ return {
54
+ data: response.data.data.docs,
55
+ };
56
+ }
57
+ catch (apiError) {
58
+ console.error(chalk_1.default.red(`API Error: ${apiError.message}`));
59
+ if (apiError.response) {
60
+ console.error(chalk_1.default.dim('Response:', JSON.stringify(apiError.response.data, null, 2)));
61
+ }
62
+ return { data: [] };
63
+ }
64
+ }
65
+ catch (error) {
66
+ console.error(chalk_1.default.red(`Error: ${error.message}`));
67
+ return { data: [] };
68
+ }
69
+ };
70
+ this.listAllDevicesLegacyEdge = async (fields) => {
71
+ const { data } = await this.axiosInstance.get(`cli/devices/all?fields=${fields}`);
72
+ return data;
73
+ };
74
+ this.listPaginatedDevices = async ({ limit, page, }) => {
75
+ const { data } = await this.axiosInstance.get(`v4/devices?limit=${limit}&page=${page}`);
76
+ return data;
77
+ };
78
+ this.getDeviceByName = async (deviceName) => {
79
+ const { data } = await this.axiosInstance.get(`v4/devices/find?deviceName=${deviceName}`);
80
+ return data;
81
+ };
82
+ this.getDeviceStatusLog = async (uuid) => {
83
+ const { data } = await this.axiosInstance.get(`v4/devices/${uuid}/status-history?start=0`);
84
+ return data;
85
+ };
86
+ this.startDeviceShellSession = async (deviceName, payload = {}) => {
87
+ const { data } = await this.axiosInstance.post(`cli/devices/${deviceName}/shell`, payload);
88
+ return data;
89
+ };
90
+ this.startPhyHubDeviceShellSession = async (deviceName, payload = {}) => {
91
+ const { data } = await this.axiosInstance.post(`phyhub/cli/devices/${deviceName}/shell`, payload);
92
+ return data;
93
+ };
94
+ this.getDeviceLogs = async (deviceName, payload = {}) => {
95
+ const { data } = await this.axiosInstance.post(`cli/devices/${deviceName}/logs`, payload);
96
+ return data;
97
+ };
98
+ this.startRdpSession = async (deviceName, payload = {}) => {
99
+ const { data } = await this.axiosInstance.post(`cli/devices/${deviceName}/rdp`, payload);
100
+ return data;
101
+ };
102
+ this.startVNCSession = async (deviceName, payload = {}) => {
103
+ const { data } = await this.axiosInstance.post(`cli/devices/${deviceName}/vnc`, payload);
104
+ return data;
105
+ };
106
+ this.subscribeMessageBus = async (deviceName, payload = {}) => {
107
+ const { data } = await this.axiosInstance.post(`cli/devices/${deviceName}/stream/message-bus`, payload);
108
+ return data;
109
+ };
110
+ this.createDeviceStreamSession = async ({ deviceName, moduleName, method, payload, }) => {
111
+ const { data } = await this.axiosInstance.post(`edge/devices/${deviceName}/modules/${moduleName}/stream/${method}`, { ...payload });
112
+ return data;
113
+ };
114
+ this.getDeviceReportedModulesEdge = async (deviceName) => {
115
+ const { data } = await this.axiosInstance.get(`edge/devices/${deviceName}/modules`);
116
+ return data;
117
+ };
118
+ // TODO: Why do we expose this????
119
+ this.getDeviceTwinEdge = async (deviceName) => {
120
+ const { data } = await this.axiosInstance.get(`edge/devices/${deviceName}/config`);
121
+ return data;
122
+ };
123
+ this.patchDeviceTwinEdge = async (deviceName, payload) => {
124
+ const { data } = await this.axiosInstance.post(`edge/devices/${deviceName}/config`, payload);
125
+ return data;
126
+ };
127
+ // TODO: Deprecate this! this is ancient endpoint
128
+ // Verify first if this is still being used or can be recreated in a better way
129
+ this.getDeviceInstalledModulesEdge = async (deviceId) => {
130
+ const { data } = await this.axiosInstance.get(`v2/devices/${deviceId}/modules`);
131
+ return data;
132
+ };
133
+ this.updateDeviceInstalledModulesEdge = async (iothubDeviceId, modules) => {
134
+ const { data } = await this.axiosInstance.put(`v2/devices/${iothubDeviceId}/modules`, modules);
135
+ return data;
136
+ };
137
+ this.invokeDeviceModuleEdge = async ({ deviceName, moduleName, method, payload, }) => {
138
+ const { data } = await this.axiosInstance.post(`edge/devices/${deviceName}/modules/${moduleName}/invoke/${method}`, payload);
139
+ return data;
140
+ };
141
+ this.deviceMove = async (deviceId, installationId) => {
142
+ const { data } = await this.axiosInstance.post(`v3/devices/${deviceId}/connect/${installationId}`, {});
143
+ return data;
144
+ };
145
+ this.getDeviceModuleLogs = async (deviceName, moduleName, payload) => {
146
+ const { data } = await this.axiosInstance.get(`edge/devices/${deviceName}/modules/${moduleName}/logs`, payload);
147
+ return data;
148
+ };
149
+ this.deployDeviceModules = async (deviceName, payload) => {
150
+ const { data } = await this.axiosInstance.post(`edge/devices/${deviceName}/deploy`, payload);
151
+ return data;
152
+ };
153
+ this.axiosInstance = axiosInstance;
154
+ }
155
+ async selectOrganization() {
156
+ try {
157
+ console.log('\nSelect the organization to list devices from:\n');
158
+ const organizations = await (0, _1.adminApi)().organizations.listOrganizations();
159
+ if (!organizations || !Array.isArray(organizations)) {
160
+ console.error(chalk_1.default.red('No organizations found or invalid response format'));
161
+ return undefined;
162
+ }
163
+ if (organizations.length === 0) {
164
+ console.error(chalk_1.default.yellow('No organizations available'));
165
+ return undefined;
166
+ }
167
+ const organizationList = [
168
+ {
169
+ type: 'autocomplete',
170
+ name: 'organizationLabel',
171
+ message: ' ',
172
+ source: undefined,
173
+ },
174
+ ];
175
+ const mappedOrganizations = organizations.map((org) => ({
176
+ name: org.displayName,
177
+ displayName: org.displayName,
178
+ organizationName: org.organizationName,
179
+ id: org.id,
180
+ phyhubUrl: org.phyhubUrl,
181
+ }));
182
+ // Setup autocomplete source
183
+ organizationList[0].source = (answers, input = '') => {
184
+ return new Promise((resolve) => {
185
+ const filtered = fuzzy_1.default.filter(input, mappedOrganizations, {
186
+ extract: (entry) => `${entry.name} (${entry.organizationName})`,
187
+ });
188
+ const organizationLabels = filtered.map((entry) => `${entry.original.name} (${entry.original.organizationName})`);
189
+ resolve(organizationLabels);
190
+ });
191
+ };
192
+ // Show prompt and get selected organization
193
+ const { organizationLabel } = await inquirer_1.default.prompt(organizationList);
194
+ const selectedOrg = mappedOrganizations.find((org) => `${org.name} (${org.organizationName})` === organizationLabel);
195
+ if (!selectedOrg) {
196
+ console.error(chalk_1.default.red('No organization selected'));
197
+ return undefined;
198
+ }
199
+ return selectedOrg;
200
+ }
201
+ catch (error) {
202
+ console.error(chalk_1.default.red(`Error fetching organizations: ${error.message}`));
203
+ if (error.response) {
204
+ console.error(chalk_1.default.dim('Response:', JSON.stringify(error.response.data, null, 2)));
205
+ }
206
+ console.error(chalk_1.default.dim('Full error:', error));
207
+ return undefined;
208
+ }
209
+ }
210
+ }
211
+ exports.DevicesAdminApi = DevicesAdminApi;
212
+ exports.default = DevicesAdminApi;
213
+ //# sourceMappingURL=devices-admin-api.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices-admin-api.service.js","sourceRoot":"","sources":["../../../src/services/admin-api/devices-admin-api.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class GridappsAdminApi {
4
+ constructor({ axiosInstance }) {
5
+ this.listGridappsByOrganizationId = async (organizationId) => {
6
+ const { data } = await this.axiosInstance.get(`/gridapps?organizationId=${organizationId}`);
7
+ return data;
8
+ };
9
+ this.listGridappBuilds = async (gridappId) => {
10
+ const { data } = await this.axiosInstance.get(`/gridapps/${gridappId}/builds`);
11
+ return data;
12
+ };
13
+ this.getBuildUploadToken = async () => {
14
+ const { data } = await this.axiosInstance.get(`/gridapps/token`);
15
+ return data;
16
+ };
17
+ this.createGridappBuild = async ({ filename, size, fileUuid, gridappId, }) => {
18
+ const { data } = await this.axiosInstance.post(`/gridapps/${gridappId}/builds`, {
19
+ filename,
20
+ size,
21
+ fileUuid,
22
+ gridappId,
23
+ });
24
+ return data;
25
+ };
26
+ this.createGridapp = async ({ packageName, displayName, description, organizationId, access, type, }) => {
27
+ const metaData = {
28
+ packageName,
29
+ type,
30
+ displayName,
31
+ description,
32
+ organizationId,
33
+ access,
34
+ };
35
+ console.log(`Creating gridapp call with metadata: ${JSON.stringify(metaData)}`);
36
+ const { data } = await this.axiosInstance.post(`/gridapps`, metaData);
37
+ return data;
38
+ };
39
+ // TODO: use patch instead of put
40
+ this.updateGridapp = async ({ displayName, packageName, author, access, description, screenshots, id, }) => {
41
+ const { data } = await this.axiosInstance.put(`/gridapps/${id}`, {
42
+ displayName,
43
+ packageName,
44
+ author,
45
+ access,
46
+ description,
47
+ screenshots,
48
+ });
49
+ return data;
50
+ };
51
+ this.listGridappBootReleases = async (deviceType) => {
52
+ const { data } = await this.axiosInstance.get(`schemas/releases?deviceType=${deviceType.toString()}`);
53
+ return data;
54
+ };
55
+ this.axiosInstance = axiosInstance;
56
+ }
57
+ }
58
+ exports.default = GridappsAdminApi;
59
+ //# sourceMappingURL=gridapps-admin-api.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gridapps-admin-api.service.js","sourceRoot":"","sources":["../../../src/services/admin-api/gridapps-admin-api.service.ts"],"names":[],"mappings":";;AAuBA,MAAM,gBAAgB;IAGpB,YAAY,EAAE,aAAa,EAAoC;QAIxD,iCAA4B,GAAG,KAAK,EAAE,cAAsB,EAAE,EAAE;YACrE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAC3C,4BAA4B,cAAc,EAAE,CAC7C,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEK,sBAAiB,GAAG,KAAK,EAAE,SAAiB,EAAE,EAAE;YACrD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,SAAS,SAAS,CAAC,CAAC;YAC/E,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEK,wBAAmB,GAAG,KAAK,IAAI,EAAE;YACtC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAqB,iBAAiB,CAAC,CAAC;YACrF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEK,uBAAkB,GAAG,KAAK,EAAE,EACjC,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,SAAS,GAMV,EAAE,EAAE;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,SAAS,SAAS,EAAE;gBAC9E,QAAQ;gBACR,IAAI;gBACJ,QAAQ;gBACR,SAAS;aACV,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEK,kBAAa,GAAG,KAAK,EAAE,EAC5B,WAAW,EACX,WAAW,EACX,WAAW,EACX,cAAc,EACd,MAAM,EACN,IAAI,GAQL,EAAE,EAAE;YACH,MAAM,QAAQ,GAAG;gBACf,WAAW;gBACX,IAAI;gBACJ,WAAW;gBACX,WAAW;gBACX,cAAc;gBACd,MAAM;aACP,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,wCAAwC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAChF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAU,WAAW,EAAE,QAAQ,CAAC,CAAC;YAE/E,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,iCAAiC;QAC1B,kBAAa,GAAG,KAAK,EAAE,EAC5B,WAAW,EACX,WAAW,EACX,MAAM,EACN,MAAM,EACN,WAAW,EACX,WAAW,EACX,EAAE,GASH,EAAE,EAAE;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAU,aAAa,EAAE,EAAE,EAAE;gBACxE,WAAW;gBACX,WAAW;gBACX,MAAM;gBACN,MAAM;gBACN,WAAW;gBACX,WAAW;aACZ,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEK,4BAAuB,GAAG,KAAK,EAAE,UAAsC,EAAE,EAAE;YAChF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAC3C,+BAA+B,UAAU,CAAC,QAAQ,EAAE,EAAE,CACvD,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAzGA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CAyGF;AAED,kBAAe,gBAAgB,CAAC"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.adminApi = void 0;
21
+ const axios_1 = __importDefault(require("axios"));
22
+ const axios_auth_refresh_1 = __importDefault(require("axios-auth-refresh"));
23
+ const https_proxy_agent_1 = require("https-proxy-agent");
24
+ const http_proxy_agent_1 = require("http-proxy-agent");
25
+ const http_1 = __importDefault(require("http"));
26
+ const https_1 = __importDefault(require("https"));
27
+ const gridapps_admin_api_service_1 = __importDefault(require("./gridapps-admin-api.service"));
28
+ const organizations_admin_api_service_1 = __importDefault(require("./organizations-admin-api.service"));
29
+ const devices_admin_api_service_1 = __importDefault(require("./devices-admin-api.service"));
30
+ const device_modules_admin_api_service_1 = __importDefault(require("./device-modules.admin-api.service"));
31
+ const installations_admin_api_service_1 = __importDefault(require("./installations-admin-api.service"));
32
+ const device_grant_auth_service_1 = __importDefault(require("../auth/device-grant-auth.service"));
33
+ __exportStar(require("./gridapps-admin-api.service"), exports);
34
+ __exportStar(require("./organizations-admin-api.service"), exports);
35
+ __exportStar(require("./devices-admin-api.service"), exports);
36
+ __exportStar(require("./device-modules.admin-api.service"), exports);
37
+ __exportStar(require("./installations-admin-api.service"), exports);
38
+ __exportStar(require("./admin-api.types"), exports);
39
+ class AdminApiService {
40
+ constructor() {
41
+ this.findModuleByName = async (name) => {
42
+ const [orgName, moduleName] = name.split('.');
43
+ const org = await this.organizations.getOrganizationBySlug(orgName);
44
+ if (!org)
45
+ throw new Error('Organisation not found');
46
+ const modules = await this.deviceModules.listModules();
47
+ return modules.find((mod) => mod.moduleName === moduleName && mod.organizationId === org.id);
48
+ };
49
+ const { PHYGRID_ENV, PHYGRID_ADMIN_API = 'https://api.omborigrid.com/api', } = process.env;
50
+ const authService = new device_grant_auth_service_1.default();
51
+ const token = authService.getAccessToken();
52
+ if (!token) {
53
+ throw new Error('Unauthorized. Please run "phy login" to use this command.');
54
+ }
55
+ let baseurl = PHYGRID_ADMIN_API;
56
+ if (PHYGRID_ENV) {
57
+ baseurl = process.env[`${PHYGRID_ENV}_PHYGRID_ADMIN_API`];
58
+ }
59
+ if (!baseurl) {
60
+ throw new Error(`${PHYGRID_ENV}_PHYGRID_ADMIN_API url is not specified, are you using wrong PHYGRID_ENV?`);
61
+ }
62
+ const proxyUrl = process.env.HTTPS_PROXY ||
63
+ process.env.HTTP_PROXY ||
64
+ process.env.https_proxy ||
65
+ process.env.http_proxy;
66
+ if (proxyUrl) {
67
+ const httpAgent = new http_proxy_agent_1.HttpProxyAgent(proxyUrl, {
68
+ keepAlive: true,
69
+ });
70
+ const httpsAgent = new https_proxy_agent_1.HttpsProxyAgent(proxyUrl, {
71
+ keepAlive: true,
72
+ rejectUnauthorized: true,
73
+ });
74
+ this.axiosInstance = axios_1.default.create({
75
+ proxy: false,
76
+ baseURL: baseurl,
77
+ headers: {
78
+ Authorization: `Bearer ${authService.getAccessToken()}`,
79
+ 'Content-Type': 'application/json',
80
+ },
81
+ maxBodyLength: Infinity,
82
+ maxContentLength: Infinity,
83
+ httpAgent,
84
+ httpsAgent,
85
+ timeout: 60000,
86
+ validateStatus(status) {
87
+ return status >= 200 && status < 300;
88
+ },
89
+ });
90
+ }
91
+ else {
92
+ this.axiosInstance = axios_1.default.create({
93
+ baseURL: baseurl,
94
+ headers: {
95
+ Authorization: `Bearer ${authService.getAccessToken()}`,
96
+ 'Content-Type': 'application/json',
97
+ },
98
+ maxBodyLength: Infinity,
99
+ maxContentLength: Infinity,
100
+ httpAgent: new http_1.default.Agent({ keepAlive: true }),
101
+ httpsAgent: new https_1.default.Agent({
102
+ keepAlive: true,
103
+ rejectUnauthorized: true,
104
+ }),
105
+ timeout: 60000,
106
+ validateStatus(status) {
107
+ return status >= 200 && status < 300;
108
+ },
109
+ });
110
+ }
111
+ this.axiosInstance.interceptors.response.use((response) => response, async (error) => {
112
+ if (error.code === 'EPIPE' || error.code === 'ECONNRESET') {
113
+ const { config } = error;
114
+ if (!config._retry) {
115
+ config._retry = true;
116
+ return this.axiosInstance(config);
117
+ }
118
+ }
119
+ return Promise.reject(error);
120
+ });
121
+ (0, axios_auth_refresh_1.default)(this.axiosInstance, async (failedRequest) => {
122
+ await authService.refreshToken();
123
+ failedRequest.response.config.headers.Authorization = `Bearer ${authService.getAccessToken()}`;
124
+ });
125
+ this.axiosInstance.interceptors.response.use((response) => {
126
+ return response;
127
+ }, (error) => {
128
+ // If the request failed with ECONNREFUSED, log 'Unauthorized'
129
+ let customError = null;
130
+ if (error.code === 'ECONNREFUSED') {
131
+ customError = new Error(`Unauthorized. Please run "phy login" to use this command. ${error.message}`);
132
+ }
133
+ // If you want to handle the error in the catch block of the request,
134
+ // you should reject the error here
135
+ return Promise.reject(customError || error);
136
+ });
137
+ this.gridapps = new gridapps_admin_api_service_1.default({
138
+ axiosInstance: this.axiosInstance,
139
+ });
140
+ this.organizations = new organizations_admin_api_service_1.default({
141
+ axiosInstance: this.axiosInstance,
142
+ });
143
+ this.deviceModules = new device_modules_admin_api_service_1.default({
144
+ axiosInstance: this.axiosInstance,
145
+ });
146
+ this.devices = new devices_admin_api_service_1.default({
147
+ axiosInstance: this.axiosInstance,
148
+ });
149
+ this.installations = new installations_admin_api_service_1.default({
150
+ axiosInstance: this.axiosInstance,
151
+ });
152
+ }
153
+ }
154
+ const adminApi = () => new AdminApiService();
155
+ exports.adminApi = adminApi;
156
+ exports.default = AdminApiService;
157
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/admin-api/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InstallationDeviceTypeEnum = void 0;
4
+ var InstallationDeviceTypeEnum;
5
+ (function (InstallationDeviceTypeEnum) {
6
+ InstallationDeviceTypeEnum["PWA"] = "wpa";
7
+ InstallationDeviceTypeEnum["MOBILE_PWA"] = "mobilewpa";
8
+ InstallationDeviceTypeEnum["IOT"] = "iot";
9
+ InstallationDeviceTypeEnum["CLOUD"] = "cloud";
10
+ })(InstallationDeviceTypeEnum || (exports.InstallationDeviceTypeEnum = InstallationDeviceTypeEnum = {}));
11
+ class InstallationsAdminApi {
12
+ constructor({ axiosInstance }) {
13
+ this.listInstallations = async () => {
14
+ const { data } = await this.axiosInstance.get(`/apps`);
15
+ return data;
16
+ };
17
+ this.updateInstallation = async (installation) => {
18
+ const { data } = await this.axiosInstance.put(`/apps/${installation.id}`, installation);
19
+ return data;
20
+ };
21
+ this.createInstallation = async (installation) => {
22
+ const { data } = await this.axiosInstance.post(`/apps`, installation);
23
+ return data;
24
+ };
25
+ this.axiosInstance = axiosInstance;
26
+ }
27
+ }
28
+ exports.default = InstallationsAdminApi;
29
+ //# sourceMappingURL=installations-admin-api.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installations-admin-api.service.js","sourceRoot":"","sources":["../../../src/services/admin-api/installations-admin-api.service.ts"],"names":[],"mappings":";;;AAEA,IAAY,0BAKX;AALD,WAAY,0BAA0B;IACpC,yCAAW,CAAA;IACX,sDAAwB,CAAA;IACxB,yCAAW,CAAA;IACX,6CAAe,CAAA;AACjB,CAAC,EALW,0BAA0B,0CAA1B,0BAA0B,QAKrC;AA+BD,MAAM,qBAAqB;IAGzB,YAAY,EAAE,aAAa,EAAoC;QAIxD,sBAAiB,GAAG,KAAK,IAAI,EAAE;YACpC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAiB,OAAO,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEK,uBAAkB,GAAG,KAAK,EAAE,YAA0B,EAAE,EAAE;YAC/D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAC3C,SAAS,YAAY,CAAC,EAAE,EAAE,EAC1B,YAAY,CACb,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEK,uBAAkB,GAAG,KAAK,EAAE,YAAuC,EAAE,EAAE;YAC5E,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAe,OAAO,EAAE,YAAY,CAAC,CAAC;YAEpF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QApBA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CAoBF;AAED,kBAAe,qBAAqB,CAAC"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class OrganizationsAdminApi {
4
+ constructor({ axiosInstance }) {
5
+ this.listOrganizations = async () => {
6
+ const { data } = await this.axiosInstance.get(`/organizations`);
7
+ return data;
8
+ };
9
+ this.getOrganization = async (id) => {
10
+ const { data } = await this.axiosInstance.get(`/organizations/${id}`);
11
+ return data;
12
+ };
13
+ this.getOrganizationBySlug = async (slug) => {
14
+ const { data } = await this.axiosInstance.get(`/organizations/${slug}`);
15
+ return data;
16
+ };
17
+ this.fetchDevicesFromPhyhub = async (organizationId, phyhubUrl, limit = 20, page = 1, search) => {
18
+ try {
19
+ // Get the Authorization header from the current axiosInstance configuration
20
+ const currentHeaders = this.axiosInstance.defaults.headers;
21
+ const authHeader = currentHeaders?.common?.Authorization || currentHeaders?.Authorization;
22
+ // Build URL with query parameters
23
+ let url = `/api/v1/admin/tenant/${organizationId}/devices?page=${page}&limit=${limit}`;
24
+ if (search) {
25
+ url += `&search=${encodeURIComponent(search)}`;
26
+ }
27
+ // Try a more direct approach by making a direct axios request with the auth header
28
+ let response;
29
+ response = await this.axiosInstance.get(url, {
30
+ baseURL: phyhubUrl,
31
+ headers: {
32
+ Accept: 'application/json',
33
+ 'Content-Type': 'application/json',
34
+ // Preserve authorization from the original instance
35
+ Authorization: authHeader,
36
+ },
37
+ validateStatus: (status) => status < 500,
38
+ });
39
+ return response;
40
+ }
41
+ catch (error) {
42
+ console.error(`Error fetching devices from PhyHub: ${error.message}`);
43
+ if (error.response) {
44
+ console.error(`Status: ${error.response.status}, Data:`, error.response.data);
45
+ }
46
+ throw error;
47
+ }
48
+ };
49
+ this.axiosInstance = axiosInstance;
50
+ }
51
+ }
52
+ exports.default = OrganizationsAdminApi;
53
+ //# sourceMappingURL=organizations-admin-api.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organizations-admin-api.service.js","sourceRoot":"","sources":["../../../src/services/admin-api/organizations-admin-api.service.ts"],"names":[],"mappings":";;AAUA,MAAM,qBAAqB;IAGzB,YAAY,EAAE,aAAa,EAAoC;QAIxD,sBAAiB,GAAG,KAAK,IAAI,EAAE;YACpC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAiB,gBAAgB,CAAC,CAAC;YAChF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEK,oBAAe,GAAG,KAAK,EAAE,EAAU,EAAE,EAAE;YAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAe,kBAAkB,EAAE,EAAE,CAAC,CAAC;YACpF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEK,0BAAqB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;YACpD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAe,kBAAkB,IAAI,EAAE,CAAC,CAAC;YACtF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEK,2BAAsB,GAAG,KAAK,EACnC,cAAsB,EACtB,SAAiB,EACjB,QAAgB,EAAE,EAClB,OAAe,CAAC,EAChB,MAAe,EACf,EAAE;YACF,IAAI,CAAC;gBACH,4EAA4E;gBAC5E,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC3D,MAAM,UAAU,GACd,cAAc,EAAE,MAAM,EAAE,aAAa,IAAI,cAAc,EAAE,aAAa,CAAC;gBAEzE,kCAAkC;gBAClC,IAAI,GAAG,GAAG,wBAAwB,cAAc,iBAAiB,IAAI,UAAU,KAAK,EAAE,CAAC;gBACvF,IAAI,MAAM,EAAE,CAAC;oBACX,GAAG,IAAI,WAAW,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjD,CAAC;gBAED,mFAAmF;gBACnF,IAAI,QAAQ,CAAC;gBAEb,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CACrC,GAAG,EACH;oBACE,OAAO,EAAE,SAAS;oBAClB,OAAO,EAAE;wBACP,MAAM,EAAE,kBAAkB;wBAC1B,cAAc,EAAE,kBAAkB;wBAClC,oDAAoD;wBACpD,aAAa,EAAE,UAAU;qBAC1B;oBACD,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,GAAG;iBACzC,CACF,CAAC;gBAEF,OAAO,QAAQ,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACtE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACnB,OAAO,CAAC,KAAK,CAAC,WAAW,KAAK,CAAC,QAAQ,CAAC,MAAM,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAChF,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC;QA9DA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CA8DF;AAED,kBAAe,qBAAqB,CAAC"}