@phystack/hub-device 4.4.30

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 (82) hide show
  1. package/.prettierignore +10 -0
  2. package/.prettierrc +10 -0
  3. package/CHANGELOG.md +1202 -0
  4. package/README.md +12 -0
  5. package/dist/index.d.ts +114 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +967 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/storage/browser.d.ts +2 -0
  10. package/dist/storage/browser.d.ts.map +1 -0
  11. package/dist/storage/browser.js +20 -0
  12. package/dist/storage/browser.js.map +1 -0
  13. package/dist/storage/index.d.ts +6 -0
  14. package/dist/storage/index.d.ts.map +1 -0
  15. package/dist/storage/index.js +31 -0
  16. package/dist/storage/index.js.map +1 -0
  17. package/dist/storage/node.d.ts +2 -0
  18. package/dist/storage/node.d.ts.map +1 -0
  19. package/dist/storage/node.js +47 -0
  20. package/dist/storage/node.js.map +1 -0
  21. package/dist/sysinfo/browser.d.ts +3 -0
  22. package/dist/sysinfo/browser.d.ts.map +1 -0
  23. package/dist/sysinfo/browser.js +194 -0
  24. package/dist/sysinfo/browser.js.map +1 -0
  25. package/dist/sysinfo/index.d.ts +3 -0
  26. package/dist/sysinfo/index.d.ts.map +1 -0
  27. package/dist/sysinfo/index.js +34 -0
  28. package/dist/sysinfo/index.js.map +1 -0
  29. package/dist/sysinfo/node.d.ts +3 -0
  30. package/dist/sysinfo/node.d.ts.map +1 -0
  31. package/dist/sysinfo/node.js +53 -0
  32. package/dist/sysinfo/node.js.map +1 -0
  33. package/dist/sysinfo/tizen.d.ts +8 -0
  34. package/dist/sysinfo/tizen.d.ts.map +1 -0
  35. package/dist/sysinfo/tizen.js +168 -0
  36. package/dist/sysinfo/tizen.js.map +1 -0
  37. package/dist/types/command.types.d.ts +8 -0
  38. package/dist/types/command.types.d.ts.map +1 -0
  39. package/dist/types/command.types.js +8 -0
  40. package/dist/types/command.types.js.map +1 -0
  41. package/dist/types/container.types.d.ts +10 -0
  42. package/dist/types/container.types.d.ts.map +1 -0
  43. package/dist/types/container.types.js +3 -0
  44. package/dist/types/container.types.js.map +1 -0
  45. package/dist/types/job.types.d.ts +31 -0
  46. package/dist/types/job.types.d.ts.map +1 -0
  47. package/dist/types/job.types.js +15 -0
  48. package/dist/types/job.types.js.map +1 -0
  49. package/dist/types/twin.types.d.ts +653 -0
  50. package/dist/types/twin.types.d.ts.map +1 -0
  51. package/dist/types/twin.types.js +21 -0
  52. package/dist/types/twin.types.js.map +1 -0
  53. package/dist/utilities/get-device-identifier.utility.d.ts +2 -0
  54. package/dist/utilities/get-device-identifier.utility.d.ts.map +1 -0
  55. package/dist/utilities/get-device-identifier.utility.js +140 -0
  56. package/dist/utilities/get-device-identifier.utility.js.map +1 -0
  57. package/dist/utilities/get-hub-credentials.utility.d.ts +8 -0
  58. package/dist/utilities/get-hub-credentials.utility.d.ts.map +1 -0
  59. package/dist/utilities/get-hub-credentials.utility.js +47 -0
  60. package/dist/utilities/get-hub-credentials.utility.js.map +1 -0
  61. package/dist/utilities/get-provisioning-code.utility.d.ts +3 -0
  62. package/dist/utilities/get-provisioning-code.utility.d.ts.map +1 -0
  63. package/dist/utilities/get-provisioning-code.utility.js +49 -0
  64. package/dist/utilities/get-provisioning-code.utility.js.map +1 -0
  65. package/package.json +39 -0
  66. package/src/hub-device.d.ts +0 -0
  67. package/src/index.ts +1228 -0
  68. package/src/storage/browser.ts +16 -0
  69. package/src/storage/index.ts +46 -0
  70. package/src/storage/node.ts +42 -0
  71. package/src/sysinfo/browser.ts +217 -0
  72. package/src/sysinfo/index.ts +29 -0
  73. package/src/sysinfo/node.ts +387 -0
  74. package/src/sysinfo/tizen.ts +203 -0
  75. package/src/types/command.types.ts +8 -0
  76. package/src/types/container.types.ts +12 -0
  77. package/src/types/job.types.ts +36 -0
  78. package/src/types/twin.types.ts +751 -0
  79. package/src/utilities/get-device-identifier.utility.ts +179 -0
  80. package/src/utilities/get-hub-credentials.utility.ts +56 -0
  81. package/src/utilities/get-provisioning-code.utility.ts +55 -0
  82. package/tsconfig.json +45 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-device-identifier.utility.d.ts","sourceRoot":"","sources":["../../src/utilities/get-device-identifier.utility.ts"],"names":[],"mappings":"AA2HA,wBAA8B,mBAAmB,iBAuDhD"}
@@ -0,0 +1,140 @@
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.default = getDeviceIdentifier;
7
+ const child_process_1 = require("child_process");
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const sysinfo_1 = __importDefault(require("../sysinfo"));
10
+ const uuid_1 = require("uuid");
11
+ const logger = console;
12
+ function getSerialFromDmidecode() {
13
+ try {
14
+ const result = (0, child_process_1.spawnSync)('sudo', ['dmidecode', '-s', 'system-serial-number'], {
15
+ encoding: 'utf-8',
16
+ });
17
+ const deviceSerialNumber = result.stdout?.trim() || '';
18
+ if (deviceSerialNumber === '0' ||
19
+ deviceSerialNumber === '' ||
20
+ deviceSerialNumber.includes(' ')) {
21
+ return undefined;
22
+ }
23
+ return deviceSerialNumber;
24
+ }
25
+ catch (error) {
26
+ logger.info('No serial number in dmidecode, trying other options');
27
+ return undefined;
28
+ }
29
+ }
30
+ function getSerialFromKernelCmdline() {
31
+ try {
32
+ if (fs_1.default.existsSync('/proc/device-tree/chosen/bootargs')) {
33
+ const bootArgs = fs_1.default.readFileSync('/proc/device-tree/chosen/bootargs', 'utf8');
34
+ const bootArgsMatch = bootArgs.match(/phygrid\.serial=([^\s\0]+)/);
35
+ if (bootArgsMatch && bootArgsMatch[1]) {
36
+ return bootArgsMatch[1].trim();
37
+ }
38
+ }
39
+ const cmdline = fs_1.default.readFileSync('/proc/cmdline', 'utf8');
40
+ const cmdlineMatch = cmdline.match(/phygrid\.serial=([^\s]+)/);
41
+ if (cmdlineMatch && cmdlineMatch[1]) {
42
+ return cmdlineMatch[1].trim();
43
+ }
44
+ }
45
+ catch (error) {
46
+ logger.info('No serial number in kernel command line, trying other options');
47
+ }
48
+ return undefined;
49
+ }
50
+ function getSerialFromCPU() {
51
+ const getRockchipSN = (buffer, offset) => {
52
+ const serialNumber = buffer.toString('hex', offset, offset + 16);
53
+ return serialNumber || undefined;
54
+ };
55
+ if (fs_1.default.existsSync('/sys/bus/nvmem/devices/rockchip-otp0/nvmem')) {
56
+ try {
57
+ const data = fs_1.default.readFileSync('/sys/bus/nvmem/devices/rockchip-otp0/nvmem');
58
+ return getRockchipSN(data, 10);
59
+ }
60
+ catch (error) {
61
+ logger.info('No serial number in rockchip-otp0, trying other options');
62
+ }
63
+ }
64
+ if (fs_1.default.existsSync('/sys/bus/nvmem/devices/rockchip-efuse0/nvmem')) {
65
+ try {
66
+ const data = fs_1.default.readFileSync('/sys/bus/nvmem/devices/rockchip-efuse0/nvmem');
67
+ return getRockchipSN(data, 7);
68
+ }
69
+ catch (error) {
70
+ logger.info('No serial number in rockchip-efuse0, trying other options');
71
+ }
72
+ }
73
+ try {
74
+ const cpuInfo = fs_1.default.readFileSync('/proc/cpuinfo', 'utf8');
75
+ const lines = cpuInfo.split('\n');
76
+ for (const line of lines) {
77
+ if (line.startsWith('Serial')) {
78
+ return line.slice(10, 26).trim();
79
+ }
80
+ }
81
+ }
82
+ catch (error) {
83
+ logger.info('No serial number in /proc/cpuinfo, trying other options');
84
+ }
85
+ return undefined;
86
+ }
87
+ function getSerialFromMachineId() {
88
+ try {
89
+ if (fs_1.default.existsSync('/var/lib/dbus/machine-id')) {
90
+ const dbusMachineId = fs_1.default.readFileSync('/var/lib/dbus/machine-id', 'utf8').trim();
91
+ if (dbusMachineId && dbusMachineId.length === 32 && /^[0-9a-f]{32}$/i.test(dbusMachineId)) {
92
+ return dbusMachineId.toUpperCase();
93
+ }
94
+ }
95
+ }
96
+ catch (error) {
97
+ logger.info('No machine-id found, trying other options');
98
+ }
99
+ return undefined;
100
+ }
101
+ async function getDeviceIdentifier() {
102
+ if (typeof window !== 'undefined') {
103
+ const generatedUuid = (0, uuid_1.v4)();
104
+ logger.info('Browser environment detected, generating UUID:', generatedUuid);
105
+ return generatedUuid;
106
+ }
107
+ const serialFromKernel = getSerialFromKernelCmdline();
108
+ if (serialFromKernel && serialFromKernel !== '-' && serialFromKernel.trim() !== '') {
109
+ return serialFromKernel.trim();
110
+ }
111
+ const serialFromDmidecode = getSerialFromDmidecode();
112
+ if (serialFromDmidecode && serialFromDmidecode !== '-' && serialFromDmidecode.trim() !== '') {
113
+ return serialFromDmidecode.trim();
114
+ }
115
+ const serialFromCpu = getSerialFromCPU();
116
+ if (serialFromCpu && serialFromCpu !== '-' && serialFromCpu.trim() !== '') {
117
+ return serialFromCpu.trim();
118
+ }
119
+ const serialFromMachineId = getSerialFromMachineId();
120
+ if (serialFromMachineId && serialFromMachineId !== '-' && serialFromMachineId.trim() !== '') {
121
+ return serialFromMachineId.trim();
122
+ }
123
+ const { system = {}, net = [] } = await (0, sysinfo_1.default)();
124
+ for (const iface of net) {
125
+ if ((iface.type === 'wired' || iface.type === 'wireless') &&
126
+ iface.mac && iface.mac !== '-' && iface.mac.trim() !== '') {
127
+ return iface.mac.trim();
128
+ }
129
+ }
130
+ if (system.serial && system.serial !== '-' && system.serial.trim() !== '') {
131
+ return system.serial.trim();
132
+ }
133
+ if (system.uuid && system.uuid !== '-' && system.uuid.trim() !== '') {
134
+ return system.uuid.trim();
135
+ }
136
+ const generatedUuid = (0, uuid_1.v4)();
137
+ logger.info('No valid device identifier found, generating UUID:', generatedUuid);
138
+ return generatedUuid;
139
+ }
140
+ //# sourceMappingURL=get-device-identifier.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-device-identifier.utility.js","sourceRoot":"","sources":["../../src/utilities/get-device-identifier.utility.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ declare const getHubCredentials: (apiUrl: string) => Promise<{
2
+ accessKey: string;
3
+ deviceId: string;
4
+ phyhubUrl: string;
5
+ region: string;
6
+ } | undefined>;
7
+ export default getHubCredentials;
8
+ //# sourceMappingURL=get-hub-credentials.utility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-hub-credentials.utility.d.ts","sourceRoot":"","sources":["../../src/utilities/get-hub-credentials.utility.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,iBAAiB,GACrB,QAAQ,MAAM,KACb,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CA8ChG,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,47 @@
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
+ const storage_1 = __importDefault(require("../storage"));
7
+ const axios_proxy_1 = __importDefault(require("@phystack/axios-proxy"));
8
+ const logger = console;
9
+ const getHubCredentials = async (apiUrl) => {
10
+ console.log('getHubCredentials(): calling getAxiosInstanceWithProxy()');
11
+ const axios = await (0, axios_proxy_1.default)();
12
+ console.log('getHubCredentials(): axios', axios);
13
+ const storage = await (0, storage_1.default)();
14
+ const deviceSerial = await storage.get('deviceSerial');
15
+ let accessKey = await storage.get('accessKey');
16
+ let deviceId = await storage.get('deviceId');
17
+ let phyhubUrl = await storage.get('phyhubUrl');
18
+ let region = await storage.get('region');
19
+ if (accessKey && deviceId && phyhubUrl) {
20
+ return { accessKey, deviceId, phyhubUrl, region };
21
+ }
22
+ try {
23
+ logger.info(`getHubCredentials(): Fetching hub credentials for device ${deviceSerial} [${apiUrl}/provision]`);
24
+ const res = await axios.post(`${apiUrl}/v1/provision`, {
25
+ deviceSerial,
26
+ });
27
+ accessKey = res.data?.data?.accessKey;
28
+ deviceId = res.data?.data?._id;
29
+ phyhubUrl = res.data?.data?.parentDevice?.phyhubUrl;
30
+ region = res.data?.data?.parentDevice?.region;
31
+ if (!accessKey || !deviceId || !phyhubUrl || !region) {
32
+ throw new Error(`Credentials missing missing from response: ${JSON.stringify(res.data ?? {})}`);
33
+ }
34
+ await storage.set('accessKey', accessKey);
35
+ await storage.set('deviceId', deviceId);
36
+ await storage.set('phyhubUrl', phyhubUrl);
37
+ await storage.set('region', region);
38
+ logger.info(`getHubCredentials(): Device ${deviceId} provisioned 🟢-🟢-⚪-⚪-⚪`);
39
+ return { accessKey, deviceId, phyhubUrl, region };
40
+ }
41
+ catch (err) {
42
+ logger.error(`getHubCredentials(): Cannot fetch hub credentials for device ${deviceSerial} [${apiUrl}/provision] 🟢-🔴-⚪-⚪-⚪`, err.toString());
43
+ return undefined;
44
+ }
45
+ };
46
+ exports.default = getHubCredentials;
47
+ //# sourceMappingURL=get-hub-credentials.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-hub-credentials.utility.js","sourceRoot":"","sources":["../../src/utilities/get-hub-credentials.utility.ts"],"names":[],"mappings":";;;;;AAAA,yDAAoC;AACpC,wEAA8D;AAE9D,MAAM,MAAM,GAAG,OAAO,CAAC;AAEvB,MAAM,iBAAiB,GAAG,KAAK,EAC7B,MAAc,EACmF,EAAE;IACnG,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,MAAM,IAAA,qBAAyB,GAAE,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,IAAA,iBAAU,GAAE,CAAC;IACnC,MAAM,YAAY,GAAW,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC/D,IAAI,SAAS,GAAW,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvD,IAAI,QAAQ,GAAW,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACrD,IAAI,SAAS,GAAW,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvD,IAAI,MAAM,GAAW,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;QACvC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CACT,4DAA4D,YAAY,KAAK,MAAM,aAAa,CACjG,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAC1B,GAAG,MAAM,eAAe,EACxB;YACE,YAAY;SACb,CACF,CAAC;QAEF,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC;QACtC,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;QAC/B,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC;QACpD,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC;QAC9C,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;QACjG,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC1C,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxC,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC1C,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,+BAA+B,QAAQ,2BAA2B,CAAC,CAAC;QAChF,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,CACV,gEAAgE,YAAY,KAAK,MAAM,0BAA0B,EACjH,GAAG,CAAC,QAAQ,EAAE,CACf,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF,kBAAe,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const getProvisioningCode: (apiUrl: string) => Promise<any>;
2
+ export default getProvisioningCode;
3
+ //# sourceMappingURL=get-provisioning-code.utility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-provisioning-code.utility.d.ts","sourceRoot":"","sources":["../../src/utilities/get-provisioning-code.utility.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,mBAAmB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,GAAG,CA+C9D,CAAA;AAED,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,49 @@
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
+ const storage_1 = __importDefault(require("../storage"));
7
+ const axios_proxy_1 = __importDefault(require("@phystack/axios-proxy"));
8
+ const logger = console;
9
+ const getProvisioningCode = async (apiUrl) => {
10
+ const axios = await (0, axios_proxy_1.default)();
11
+ const storage = await (0, storage_1.default)();
12
+ const deviceSerial = await storage.get('deviceSerial');
13
+ const deviceId = await storage.get('deviceId');
14
+ const accessKey = await storage.get('accessKey');
15
+ const gridEnv = await storage.get('gridEnv') || 'PROD';
16
+ if (deviceId && accessKey) {
17
+ logger.info(`getProvisioningCode(): Device already provisioned, skipping code fetch`);
18
+ return undefined;
19
+ }
20
+ const lastProvisioningCheckKey = `lastProvisioningCheck_${gridEnv}`;
21
+ const provisioningCodeKey = `provisioningCode_${gridEnv}`;
22
+ const lastProvisioningCheck = await storage.get(lastProvisioningCheckKey);
23
+ const currentTime = Date.now();
24
+ if (lastProvisioningCheck && (currentTime - parseInt(lastProvisioningCheck)) < 270000) {
25
+ const existingCode = await storage.get(provisioningCodeKey);
26
+ if (existingCode) {
27
+ logger.info(`getProvisioningCode(): Using cached provisioning code ${existingCode} for env ${gridEnv}`);
28
+ return { provisioningCode: existingCode, deviceSerial };
29
+ }
30
+ }
31
+ try {
32
+ const provisioningUrl = `${apiUrl}/v1/codes`;
33
+ const res = await axios.post(provisioningUrl, { deviceSerial });
34
+ const provisioningCode = res.data?.data?.code;
35
+ if (!provisioningCode) {
36
+ throw new Error(`Provisioning code missing from response: ${JSON.stringify(res.data ?? {})}`);
37
+ }
38
+ logger.info(`getProvisioningCode(): Fetched provisioning code ${provisioningCode} for env ${gridEnv} 🟢-🟢-🟢-⚪-⚪`);
39
+ await storage.set(provisioningCodeKey, provisioningCode);
40
+ await storage.set(lastProvisioningCheckKey, currentTime.toString());
41
+ return { provisioningCode, deviceSerial };
42
+ }
43
+ catch (err) {
44
+ logger.error(`getProvisioningCode(): Cannot fetch provisioning code for env ${gridEnv} 🟢-🟢-🔴-⚪-⚪`, err.toString());
45
+ return undefined;
46
+ }
47
+ };
48
+ exports.default = getProvisioningCode;
49
+ //# sourceMappingURL=get-provisioning-code.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-provisioning-code.utility.js","sourceRoot":"","sources":["../../src/utilities/get-provisioning-code.utility.ts"],"names":[],"mappings":";;;;;AAAA,yDAAoC;AACpC,wEAA8D;AAE9D,MAAM,MAAM,GAAG,OAAO,CAAC;AAEvB,MAAM,mBAAmB,GAAG,KAAK,EAAE,MAAc,EAAgB,EAAE;IACjE,MAAM,KAAK,GAAG,MAAM,IAAA,qBAAyB,GAAE,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,IAAA,iBAAU,GAAE,CAAC;IACnC,MAAM,YAAY,GAAW,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC;IAGvD,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;QACtF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,wBAAwB,GAAG,yBAAyB,OAAO,EAAE,CAAC;IACpE,MAAM,mBAAmB,GAAG,oBAAoB,OAAO,EAAE,CAAC;IAE1D,MAAM,qBAAqB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAG/B,IAAI,qBAAqB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;QACtF,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC5D,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,yDAAyD,YAAY,YAAY,OAAO,EAAE,CAAC,CAAC;YACxG,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,GAAG,MAAM,WAAW,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;QAChE,MAAM,gBAAgB,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QAC9C,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;QAC/F,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,oDAAoD,gBAAgB,YAAY,OAAO,eAAe,CAAC,CAAC;QAGpH,MAAM,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;QACzD,MAAM,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEpE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,iEAAiE,OAAO,eAAe,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtH,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAA;AAED,kBAAe,mBAAmB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@phystack/hub-device",
3
+ "version": "4.4.30",
4
+ "main": "dist/index.js",
5
+ "license": "UNLICENSED",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "scripts": {
10
+ "build": "rimraf dist && tsc",
11
+ "format": "prettier --write \"src/**/*.{ts,js,json,md}\"",
12
+ "format:check": "prettier --check \"src/**/*.{ts,js,json,md}\""
13
+ },
14
+ "dependencies": {
15
+ "@phystack/axios-proxy": "4.4.30",
16
+ "@phystack/socket.io-proxy": "4.4.30",
17
+ "async-mutex": "^0.5.0",
18
+ "axios-retry": "^4.4.1",
19
+ "bufferutil": "^4.0.8",
20
+ "exponential-backoff": "^3.1.1",
21
+ "https-proxy-agent": "^7.0.6",
22
+ "socket.io": "^4.7.5",
23
+ "socket.io-client": "^4.7.5",
24
+ "socket.io-proxy": "^1.0.3",
25
+ "ua-parser-js": "^1.0.38",
26
+ "utf-8-validate": "^6.0.4",
27
+ "uuid": "^11.1.0"
28
+ },
29
+ "devDependencies": {
30
+ "@types/ua-parser-js": "^0.7.39",
31
+ "@types/uuid": "^10.0.0",
32
+ "prettier": "^3.4.2",
33
+ "rimraf": "^5.0.7",
34
+ "typescript": "^5.4.5"
35
+ },
36
+ "test": "react-scripts test",
37
+ "test:coverage": "npm run test -- --coverage --watchAll=false",
38
+ "gitHead": "7ace51c4b57b6330aa5a26cd341dea96b9a6a080"
39
+ }
File without changes