diff --git a/package-lock.json b/package-lock.json index e5df44a2..eb4cc5d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "uhk-agent", - "version": "1.2.1", + "version": "1.2.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -96,6 +96,21 @@ "@types/node": "8.0.53" } }, + "@types/lodash": { + "version": "4.14.109", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.109.tgz", + "integrity": "sha512-hop8SdPUEzbcJm6aTsmuwjIYQo1tqLseKCM+s2bBqTU2gErwI4fE+aqUVOlscPSQbKHKgtMMPoC+h4AIGOJYvw==", + "dev": true + }, + "@types/lodash-es": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.0.tgz", + "integrity": "sha512-h8lkWQSgT4qjs9PcIhcL2nWubZeXRVzjZxYlRFmcX9BW1PIk5qRc0djtRWZqtM+GDDFhwBt0ztRu72D/YxIcEw==", + "dev": true, + "requires": { + "@types/lodash": "4.14.109" + } + }, "@types/node": { "version": "8.0.53", "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.53.tgz", @@ -8353,6 +8368,12 @@ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, + "lodash-es": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.4.tgz", + "integrity": "sha1-3MHXVS4VCgZABzupyzHXDwMpUOc=", + "dev": true + }, "lodash._arraymap": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._arraymap/-/lodash._arraymap-3.0.0.tgz", diff --git a/package.json b/package.json index c06e2f68..c3e14393 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "@types/jasmine": "2.6.0", "@types/jquery": "3.3.1", "@types/jsonfile": "4.0.1", + "@types/lodash-es": "4.17.0", "@types/node": "8.0.53", "@types/node-hid": "0.5.2", "@types/request": "2.0.8", @@ -53,6 +54,7 @@ "gh-pages": "1.1.0", "jsonfile": "4.0.0", "lerna": "2.9.0", + "lodash-es": "4.17.4", "mkdirp": "0.5.1", "node-hid": "0.5.7", "npm-run-all": "4.0.2", diff --git a/packages/uhk-common/src/util/index.ts b/packages/uhk-common/src/util/index.ts index 43044bb7..9add7e2a 100644 --- a/packages/uhk-common/src/util/index.ts +++ b/packages/uhk-common/src/util/index.ts @@ -2,6 +2,7 @@ export { IpcEvents } from './ipcEvents'; export * from './log'; export * from './constants'; export * from './helpers'; +export * from './is-equal-array'; // Source: http://stackoverflow.com/questions/13720256/javascript-regex-camelcase-to-sentence export function camelCaseToSentence(camelCasedText: string): string { diff --git a/packages/uhk-common/src/util/is-equal-array.ts b/packages/uhk-common/src/util/is-equal-array.ts new file mode 100644 index 00000000..bbca101a --- /dev/null +++ b/packages/uhk-common/src/util/is-equal-array.ts @@ -0,0 +1,15 @@ +import { isEqual } from 'lodash'; + +export const isEqualArray = (arr1: Array, arr2: Array): boolean => { + if (arr1.length !== arr2.length) { + return false; + } + + for (const a of arr1) { + if (!arr2.some(b => isEqual(a, b))) { + return false; + } + } + + return true; +}; diff --git a/packages/uhk-usb/package-lock.json b/packages/uhk-usb/package-lock.json index 9d364cab..c9063373 100644 --- a/packages/uhk-usb/package-lock.json +++ b/packages/uhk-usb/package-lock.json @@ -144,11 +144,6 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, - "lodash-es": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.10.tgz", - "integrity": "sha512-iesFYPmxYYGTcmQK0sL8bX3TGHyM6b2qREaB4kamHfQyfPJP0xgoGxp19nsH16nsfquLdiyKyX3mQkfiSGV8Rg==" - }, "mimic-response": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", diff --git a/packages/uhk-usb/package.json b/packages/uhk-usb/package.json index 65320df2..11a813de 100644 --- a/packages/uhk-usb/package.json +++ b/packages/uhk-usb/package.json @@ -11,7 +11,6 @@ "@types/node": "8.0.28" }, "dependencies": { - "lodash-es": "^4.17.10", "node-hid": "0.5.7", "uhk-common": "1.0.0" } diff --git a/packages/uhk-usb/src/uhk-hid-device.ts b/packages/uhk-usb/src/uhk-hid-device.ts index c32fb33e..77beb1eb 100644 --- a/packages/uhk-usb/src/uhk-hid-device.ts +++ b/packages/uhk-usb/src/uhk-hid-device.ts @@ -1,6 +1,5 @@ -import { isEqual } from 'lodash'; import { Device, devices, HID } from 'node-hid'; -import { CommandLineArgs, DeviceConnectionState, LogService } from 'uhk-common'; +import { CommandLineArgs, DeviceConnectionState, isEqualArray, LogService } from 'uhk-common'; import { ConfigBufferId, @@ -25,7 +24,7 @@ export class UhkHidDevice { * Internal variable that represent the USB UHK device * @private */ - private _prevDevices = {}; + private _prevDevices = []; private _device: HID; private _hasPermission = false; @@ -158,7 +157,7 @@ export class UhkHidDevice { } public resetDeviceCache(): void { - this._prevDevices = {}; + this._prevDevices = []; } async reenumerate(enumerationMode: EnumerationModes): Promise { @@ -252,8 +251,11 @@ export class UhkHidDevice { private connectToDevice(): HID { try { const devs = devices(); - if (!isEqual(this._prevDevices, devs)) { - this.logService.debug('[UhkHidDevice] Available devices:', devs); + if (!isEqualArray(this._prevDevices, devs)) { + this.logService.debug('[UhkHidDevice] Available devices:'); + for (const logDevice of devs) { + this.logService.debug(JSON.stringify(logDevice)); + } this._prevDevices = devs; } else { this.logService.debug('[UhkHidDevice] Available devices unchanged'); @@ -266,7 +268,7 @@ export class UhkHidDevice { return null; } const device = new HID(dev.path); - this.logService.debug('[UhkHidDevice] Used device:', dev); + this.logService.debug('[UhkHidDevice] Used device:', JSON.stringify(dev)); return device; } catch (err) { @@ -288,7 +290,7 @@ function kbootCommandName(module: ModuleSlotToI2cAddress): string { case ModuleSlotToI2cAddress.rightAddon: return 'rightAddon'; - default : + default: return 'Unknown'; } } diff --git a/packages/uhk-web/package-lock.json b/packages/uhk-web/package-lock.json index c0c4fab5..480086bf 100644 --- a/packages/uhk-web/package-lock.json +++ b/packages/uhk-web/package-lock.json @@ -1260,19 +1260,6 @@ "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.2.9.tgz", "integrity": "sha512-AmYGadmTv+Xh6re2CH5ruyvV3znvtJbhxyT00JQAGFP2U+xgqhf+C2xfjdP/GgK5d9YmSif/UYs2ssMl4gW6fw==" }, - "@types/lodash": { - "version": "4.14.106", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.106.tgz", - "integrity": "sha512-tOSvCVrvSqFZ4A/qrqqm6p37GZoawsZtoR0SJhlF7EonNZUgrn8FfT+RNQ11h+NUpMt6QVe36033f3qEKBwfWA==" - }, - "@types/lodash-es": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.0.tgz", - "integrity": "sha512-h8lkWQSgT4qjs9PcIhcL2nWubZeXRVzjZxYlRFmcX9BW1PIk5qRc0djtRWZqtM+GDDFhwBt0ztRu72D/YxIcEw==", - "requires": { - "@types/lodash": "4.14.106" - } - }, "@types/node": { "version": "9.6.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.2.tgz", @@ -6075,11 +6062,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" }, - "lodash-es": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.4.tgz", - "integrity": "sha1-3MHXVS4VCgZABzupyzHXDwMpUOc=" - }, "lodash.assign": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", diff --git a/packages/uhk-web/package.json b/packages/uhk-web/package.json index 89e33a6a..ffdba520 100644 --- a/packages/uhk-web/package.json +++ b/packages/uhk-web/package.json @@ -39,7 +39,6 @@ "@types/jasmine": "2.5.53", "@types/jasminewd2": "2.0.2", "@types/jquery": "3.2.9", - "@types/lodash-es": "4.17.0", "@types/usb": "1.1.3", "angular-confirmation-popover": "3.2.0", "angular-notifier": "2.0.0", @@ -60,7 +59,6 @@ "karma-coverage-istanbul-reporter": "1.2.1", "karma-jasmine": "1.1.0", "karma-jasmine-html-reporter": "0.2.2", - "lodash-es": "4.17.4", "ng2-dragula": "1.5.0", "ng2-nouislider": "^1.7.7", "ng2-select2": "1.0.0-beta.10",