sinricpro 2.12.1 → 4.0.0

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 (142) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +132 -15
  3. package/dist/capabilities/AirQualitySensor.js +23 -0
  4. package/dist/capabilities/AirQualitySensor.js.map +1 -0
  5. package/dist/capabilities/BrightnessController.js +76 -0
  6. package/dist/capabilities/BrightnessController.js.map +1 -0
  7. package/dist/capabilities/CameraController.js +29 -0
  8. package/dist/capabilities/CameraController.js.map +1 -0
  9. package/dist/capabilities/ChannelController.js +52 -0
  10. package/dist/capabilities/ChannelController.js.map +1 -0
  11. package/dist/capabilities/ColorController.js +53 -0
  12. package/dist/capabilities/ColorController.js.map +1 -0
  13. package/dist/capabilities/ColorTemperatureController.js +53 -0
  14. package/dist/capabilities/ColorTemperatureController.js.map +1 -0
  15. package/dist/capabilities/ContactSensor.js +23 -0
  16. package/dist/capabilities/ContactSensor.js.map +1 -0
  17. package/dist/capabilities/Doorbell.js +23 -0
  18. package/dist/capabilities/Doorbell.js.map +1 -0
  19. package/dist/capabilities/EqualizerController.js +103 -0
  20. package/dist/capabilities/EqualizerController.js.map +1 -0
  21. package/dist/capabilities/InputController.js +51 -0
  22. package/dist/capabilities/InputController.js.map +1 -0
  23. package/dist/capabilities/KeypadController.js +23 -0
  24. package/dist/capabilities/KeypadController.js.map +1 -0
  25. package/dist/capabilities/LockController.js +40 -0
  26. package/dist/capabilities/LockController.js.map +1 -0
  27. package/dist/capabilities/MediaController.js +40 -0
  28. package/dist/capabilities/MediaController.js.map +1 -0
  29. package/dist/capabilities/ModeController.js +51 -0
  30. package/dist/capabilities/ModeController.js.map +1 -0
  31. package/dist/capabilities/MotionSensor.js +23 -0
  32. package/dist/capabilities/MotionSensor.js.map +1 -0
  33. package/dist/capabilities/MuteController.js +51 -0
  34. package/dist/capabilities/MuteController.js.map +1 -0
  35. package/dist/capabilities/OpenCloseController.js +40 -0
  36. package/dist/capabilities/OpenCloseController.js.map +1 -0
  37. package/dist/capabilities/PercentageController.js +52 -0
  38. package/dist/capabilities/PercentageController.js.map +1 -0
  39. package/dist/capabilities/PowerLevelController.js +52 -0
  40. package/dist/capabilities/PowerLevelController.js.map +1 -0
  41. package/dist/capabilities/PowerSensor.js +23 -0
  42. package/dist/capabilities/PowerSensor.js.map +1 -0
  43. package/dist/capabilities/PowerStateController.js +53 -0
  44. package/dist/capabilities/PowerStateController.js.map +1 -0
  45. package/dist/capabilities/PushNotification.js +23 -0
  46. package/dist/capabilities/PushNotification.js.map +1 -0
  47. package/dist/capabilities/RangeController.js +52 -0
  48. package/dist/capabilities/RangeController.js.map +1 -0
  49. package/dist/capabilities/SettingController.js +33 -0
  50. package/dist/capabilities/SettingController.js.map +1 -0
  51. package/dist/capabilities/StartStopController.js +51 -0
  52. package/dist/capabilities/StartStopController.js.map +1 -0
  53. package/dist/capabilities/TemperatureSensor.js +29 -0
  54. package/dist/capabilities/TemperatureSensor.js.map +1 -0
  55. package/dist/capabilities/ThermostatController.js +70 -0
  56. package/dist/capabilities/ThermostatController.js.map +1 -0
  57. package/dist/capabilities/ToggleController.js +51 -0
  58. package/dist/capabilities/ToggleController.js.map +1 -0
  59. package/dist/capabilities/VolumeController.js +74 -0
  60. package/dist/capabilities/VolumeController.js.map +1 -0
  61. package/dist/capabilities/index.js +56 -0
  62. package/dist/capabilities/index.js.map +1 -0
  63. package/dist/core/EventLimiter.js +50 -0
  64. package/dist/core/EventLimiter.js.map +1 -0
  65. package/dist/core/MessageQueue.js +28 -0
  66. package/dist/core/MessageQueue.js.map +1 -0
  67. package/dist/core/Signature.js +68 -0
  68. package/dist/core/Signature.js.map +1 -0
  69. package/dist/core/SinricPro.js +332 -0
  70. package/dist/core/SinricPro.js.map +1 -0
  71. package/dist/core/SinricProDevice.js +82 -0
  72. package/dist/core/SinricProDevice.js.map +1 -0
  73. package/dist/core/WebSocketClient.js +156 -0
  74. package/dist/core/WebSocketClient.js.map +1 -0
  75. package/dist/core/types.js +30 -0
  76. package/dist/core/types.js.map +1 -0
  77. package/dist/devices/SinricProAirQualitySensor.js +29 -0
  78. package/dist/devices/SinricProAirQualitySensor.js.map +1 -0
  79. package/dist/devices/SinricProBlinds.js +29 -0
  80. package/dist/devices/SinricProBlinds.js.map +1 -0
  81. package/dist/devices/SinricProCamera.js +29 -0
  82. package/dist/devices/SinricProCamera.js.map +1 -0
  83. package/dist/devices/SinricProContactSensor.js +28 -0
  84. package/dist/devices/SinricProContactSensor.js.map +1 -0
  85. package/dist/devices/SinricProDimSwitch.js +29 -0
  86. package/dist/devices/SinricProDimSwitch.js.map +1 -0
  87. package/dist/devices/SinricProDoorbell.js +29 -0
  88. package/dist/devices/SinricProDoorbell.js.map +1 -0
  89. package/dist/devices/SinricProFan.js +29 -0
  90. package/dist/devices/SinricProFan.js.map +1 -0
  91. package/dist/devices/SinricProFanUS.js +29 -0
  92. package/dist/devices/SinricProFanUS.js.map +1 -0
  93. package/dist/devices/SinricProGarageDoor.js +28 -0
  94. package/dist/devices/SinricProGarageDoor.js.map +1 -0
  95. package/dist/devices/SinricProLight.js +30 -0
  96. package/dist/devices/SinricProLight.js.map +1 -0
  97. package/dist/devices/SinricProLock.js +28 -0
  98. package/dist/devices/SinricProLock.js.map +1 -0
  99. package/dist/devices/SinricProMotionSensor.js +28 -0
  100. package/dist/devices/SinricProMotionSensor.js.map +1 -0
  101. package/dist/devices/SinricProPowerSensor.js +28 -0
  102. package/dist/devices/SinricProPowerSensor.js.map +1 -0
  103. package/dist/devices/SinricProSpeaker.js +33 -0
  104. package/dist/devices/SinricProSpeaker.js.map +1 -0
  105. package/dist/devices/SinricProSwitch.js +24 -0
  106. package/dist/devices/SinricProSwitch.js.map +1 -0
  107. package/dist/devices/SinricProTV.js +33 -0
  108. package/dist/devices/SinricProTV.js.map +1 -0
  109. package/dist/devices/SinricProThermostat.js +30 -0
  110. package/dist/devices/SinricProThermostat.js.map +1 -0
  111. package/dist/devices/SinricProWindowAC.js +31 -0
  112. package/dist/devices/SinricProWindowAC.js.map +1 -0
  113. package/dist/devices/index.js +44 -0
  114. package/dist/devices/index.js.map +1 -0
  115. package/dist/index.js +43 -0
  116. package/dist/index.js.map +1 -0
  117. package/dist/utils/SinricProSdkLogger.js +42 -0
  118. package/dist/utils/SinricProSdkLogger.js.map +1 -0
  119. package/package.json +78 -38
  120. package/.github/workflows/npm-publish.yml +0 -32
  121. package/.nvmrc +0 -1
  122. package/.prettierrc +0 -5
  123. package/CHANGELOG.md +0 -45
  124. package/index.js +0 -1
  125. package/lib/cbhandler.js +0 -182
  126. package/lib/contorllers/brightness_controller.js +0 -40
  127. package/lib/contorllers/camera_stream_controller.js +0 -39
  128. package/lib/contorllers/color_controller.js +0 -23
  129. package/lib/contorllers/color_temperature.js +0 -23
  130. package/lib/contorllers/mode_controller.js +0 -22
  131. package/lib/contorllers/power_controller.js +0 -53
  132. package/lib/contorllers/range_value_controller.js +0 -38
  133. package/lib/contorllers/sensors_controller.js +0 -54
  134. package/lib/contorllers/speaker_controller.js +0 -51
  135. package/lib/contorllers/toggle_state_controller.js +0 -21
  136. package/lib/contorllers/tv_controller.js +0 -93
  137. package/lib/errors/errors.js +0 -8
  138. package/lib/events/event_handler.js +0 -108
  139. package/lib/signature.js +0 -26
  140. package/lib/sinrcpro.js +0 -129
  141. package/lib/sinricproudp.js +0 -60
  142. package/lib/storage.js +0 -31
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ /**
3
+ * Export all device types
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ // Basic devices
21
+ __exportStar(require("./SinricProSwitch"), exports);
22
+ __exportStar(require("./SinricProDimSwitch"), exports);
23
+ __exportStar(require("./SinricProLight"), exports);
24
+ // Climate control
25
+ __exportStar(require("./SinricProThermostat"), exports);
26
+ __exportStar(require("./SinricProWindowAC"), exports);
27
+ __exportStar(require("./SinricProFan"), exports);
28
+ __exportStar(require("./SinricProFanUS"), exports);
29
+ // Entertainment
30
+ __exportStar(require("./SinricProTV"), exports);
31
+ __exportStar(require("./SinricProSpeaker"), exports);
32
+ // Security & Access
33
+ __exportStar(require("./SinricProLock"), exports);
34
+ __exportStar(require("./SinricProGarageDoor"), exports);
35
+ __exportStar(require("./SinricProCamera"), exports);
36
+ __exportStar(require("./SinricProDoorbell"), exports);
37
+ // Sensors
38
+ __exportStar(require("./SinricProMotionSensor"), exports);
39
+ __exportStar(require("./SinricProContactSensor"), exports);
40
+ __exportStar(require("./SinricProAirQualitySensor"), exports);
41
+ __exportStar(require("./SinricProPowerSensor"), exports);
42
+ // Window treatments
43
+ __exportStar(require("./SinricProBlinds"), exports);
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/devices/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,gBAAgB;AAChB,oDAAkC;AAClC,uDAAqC;AACrC,mDAAiC;AAEjC,kBAAkB;AAClB,wDAAsC;AACtC,sDAAoC;AACpC,iDAA+B;AAC/B,mDAAiC;AAEjC,gBAAgB;AAChB,gDAA8B;AAC9B,qDAAmC;AAEnC,oBAAoB;AACpB,kDAAgC;AAChC,wDAAsC;AACtC,oDAAkC;AAClC,sDAAoC;AAEpC,UAAU;AACV,0DAAwC;AACxC,2DAAyC;AACzC,8DAA4C;AAC5C,yDAAuC;AAEvC,oBAAoB;AACpB,oDAAkC"}
package/dist/index.js ADDED
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /**
3
+ * SinricPro SDK for Node.js and TypeScript
4
+ * Main entry point
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
+ };
20
+ var __importDefault = (this && this.__importDefault) || function (mod) {
21
+ return (mod && mod.__esModule) ? mod : { "default": mod };
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.LogLevel = exports.SinricProSdkLogger = exports.SinricProDevice = exports.default = exports.SinricPro = void 0;
25
+ // Export main SDK class
26
+ var SinricPro_1 = require("./core/SinricPro");
27
+ Object.defineProperty(exports, "SinricPro", { enumerable: true, get: function () { return SinricPro_1.SinricPro; } });
28
+ var SinricPro_2 = require("./core/SinricPro");
29
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(SinricPro_2).default; } });
30
+ // Export base device class
31
+ var SinricProDevice_1 = require("./core/SinricProDevice");
32
+ Object.defineProperty(exports, "SinricProDevice", { enumerable: true, get: function () { return SinricProDevice_1.SinricProDevice; } });
33
+ // Export types
34
+ __exportStar(require("./core/types"), exports);
35
+ // Export capabilities
36
+ __exportStar(require("./capabilities"), exports);
37
+ // Export devices
38
+ __exportStar(require("./devices"), exports);
39
+ // Export utilities
40
+ var SinricProSdkLogger_1 = require("./utils/SinricProSdkLogger");
41
+ Object.defineProperty(exports, "SinricProSdkLogger", { enumerable: true, get: function () { return SinricProSdkLogger_1.SinricProSdkLogger; } });
42
+ Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return SinricProSdkLogger_1.LogLevel; } });
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;AAEH,wBAAwB;AACxB,8CAA6C;AAApC,sGAAA,SAAS,OAAA;AAClB,8CAA2C;AAAlC,qHAAA,OAAO,OAAA;AAEhB,2BAA2B;AAC3B,0DAAyD;AAAhD,kHAAA,eAAe,OAAA;AAExB,eAAe;AACf,+CAA6B;AAE7B,sBAAsB;AACtB,iDAA+B;AAE/B,iBAAiB;AACjB,4CAA0B;AAE1B,mBAAmB;AACnB,iEAA0E;AAAjE,wHAAA,kBAAkB,OAAA;AAAE,8GAAA,QAAQ,OAAA"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /**
3
+ * Simple logger utility for SinricPro SDK
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SinricProSdkLogger = exports.LogLevel = void 0;
7
+ var LogLevel;
8
+ (function (LogLevel) {
9
+ LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
10
+ LogLevel[LogLevel["INFO"] = 1] = "INFO";
11
+ LogLevel[LogLevel["WARN"] = 2] = "WARN";
12
+ LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
13
+ LogLevel[LogLevel["NONE"] = 4] = "NONE";
14
+ })(LogLevel || (exports.LogLevel = LogLevel = {}));
15
+ class SinricProSdkLogger {
16
+ static setLevel(level) {
17
+ SinricProSdkLogger.level = level;
18
+ }
19
+ static debug(message, ...args) {
20
+ if (SinricProSdkLogger.level <= LogLevel.DEBUG) {
21
+ console.log(`[SinricPro:DEBUG] ${message}`, ...args);
22
+ }
23
+ }
24
+ static info(message, ...args) {
25
+ if (SinricProSdkLogger.level <= LogLevel.INFO) {
26
+ console.log(`[SinricPro:INFO] ${message}`, ...args);
27
+ }
28
+ }
29
+ static warn(message, ...args) {
30
+ if (SinricProSdkLogger.level <= LogLevel.WARN) {
31
+ console.warn(`[SinricPro:WARN] ${message}`, ...args);
32
+ }
33
+ }
34
+ static error(message, ...args) {
35
+ if (SinricProSdkLogger.level <= LogLevel.ERROR) {
36
+ console.error(`[SinricPro:ERROR] ${message}`, ...args);
37
+ }
38
+ }
39
+ }
40
+ exports.SinricProSdkLogger = SinricProSdkLogger;
41
+ SinricProSdkLogger.level = LogLevel.INFO;
42
+ //# sourceMappingURL=SinricProSdkLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SinricProSdkLogger.js","sourceRoot":"","sources":["../../src/utils/SinricProSdkLogger.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,uCAAQ,CAAA;AACV,CAAC,EANW,QAAQ,wBAAR,QAAQ,QAMnB;AAED,MAAa,kBAAkB;IAG7B,MAAM,CAAC,QAAQ,CAAC,KAAe;QAC7B,kBAAkB,CAAC,KAAK,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QAC9C,IAAI,kBAAkB,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QAC7C,IAAI,kBAAkB,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QAC7C,IAAI,kBAAkB,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,oBAAoB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QAC9C,IAAI,kBAAkB,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC/C,OAAO,CAAC,KAAK,CAAC,qBAAqB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;;AA7BH,gDA8BC;AA7BgB,wBAAK,GAAa,QAAQ,CAAC,IAAI,CAAC"}
package/package.json CHANGED
@@ -1,38 +1,78 @@
1
- {
2
- "name": "sinricpro",
3
- "version": "2.12.1",
4
- "description": "Sinric Pro Nodejs SDK",
5
- "main": "index.js",
6
- "repository": {
7
- "type": "git",
8
- "url": "git+https://github.com/sinricpro/nodejs-sdk.git"
9
- },
10
- "author": "SinricPro",
11
- "license": "ISC",
12
- "bugs": {
13
- "url": "https://github.com/sinricpro/nodejs-sdk/issues"
14
- },
15
- "homepage": "https://github.com/sinricpro/nodejs-sdk#readme",
16
- "dependencies": {
17
- "dgram": "^1.0.1",
18
- "node-fetch": "^2.6.11",
19
- "process": "^0.11.10",
20
- "rate-limiter-flexible": "^2.3.6",
21
- "rxjs": "^6.6.3",
22
- "uuid": "^3.3.3",
23
- "ws": "^8.5.0"
24
- },
25
- "keywords": [
26
- "sinricpro",
27
- "sinric"
28
- ],
29
- "devDependencies": {
30
- "eslint": "^8.9.0",
31
- "eslint-config-airbnb-base": "^14.0.0",
32
- "eslint-config-standard": "^14.1.0",
33
- "eslint-plugin-import": "^2.18.2",
34
- "eslint-plugin-node": "^10.0.0",
35
- "eslint-plugin-promise": "^4.2.1",
36
- "eslint-plugin-standard": "^4.0.1"
37
- }
38
- }
1
+ {
2
+ "name": "sinricpro",
3
+ "version": "4.0.0",
4
+ "description": "Official SinricPro SDK for Node.js and TypeScript - Control IoT devices with Alexa and Google Home",
5
+ "main": "dist/index.js",
6
+ "exports": {
7
+ ".": "./dist/index.js",
8
+ "./devices": "./dist/devices/index.js",
9
+ "./capabilities": "./dist/capabilities/index.js"
10
+ },
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "build:watch": "tsc --watch",
14
+ "test": "jest",
15
+ "test:watch": "jest --watch",
16
+ "test:coverage": "jest --coverage",
17
+ "lint": "eslint src/**/*.ts",
18
+ "lint:fix": "eslint src/**/*.ts --fix",
19
+ "format": "prettier --write \"src/**/*.ts\" \"examples/**/*.ts\" \"test/**/*.ts\"",
20
+ "prepublishOnly": "npm run lint && npm run build && npm test",
21
+ "example:switch": "ts-node examples/switch/index.ts",
22
+ "example:light": "ts-node examples/light/index.ts",
23
+ "example:thermostat": "ts-node examples/thermostat/index.ts",
24
+ "example:tv": "ts-node examples/tv/index.ts",
25
+ "example:fan": "ts-node examples/fan/index.ts",
26
+ "example:lock": "ts-node examples/lock/index.ts",
27
+ "example:windowac": "ts-node examples/windowac/index.ts",
28
+ "example:speaker": "ts-node examples/speaker/index.ts"
29
+ },
30
+ "keywords": [
31
+ "sinricpro",
32
+ "alexa",
33
+ "google-home",
34
+ "smart-home",
35
+ "iot",
36
+ "typescript",
37
+ "nodejs",
38
+ "websocket",
39
+ "home-automation"
40
+ ],
41
+ "author": "SinricPro",
42
+ "license": "CC-BY-SA-4.0",
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "https://github.com/sinricpro/nodejs-sdk.git"
46
+ },
47
+ "bugs": {
48
+ "url": "https://github.com/sinricpro/nodejs-sdk/issues"
49
+ },
50
+ "homepage": "https://sinric.pro",
51
+ "engines": {
52
+ "node": ">=16.0.0"
53
+ },
54
+ "files": [
55
+ "dist",
56
+ "README.md",
57
+ "LICENSE"
58
+ ],
59
+ "sideEffects": false,
60
+ "dependencies": {
61
+ "ws": "^8.14.2"
62
+ },
63
+ "devDependencies": {
64
+ "@types/jest": "^29.5.5",
65
+ "@types/node": "^20.8.7",
66
+ "@types/ws": "^8.5.8",
67
+ "@typescript-eslint/eslint-plugin": "^6.9.0",
68
+ "@typescript-eslint/parser": "^6.9.0",
69
+ "eslint": "^8.52.0",
70
+ "eslint-config-prettier": "^9.0.0",
71
+ "eslint-plugin-prettier": "^5.0.1",
72
+ "jest": "^29.7.0",
73
+ "prettier": "^3.0.3",
74
+ "ts-jest": "^29.1.1",
75
+ "ts-node": "^10.9.1",
76
+ "typescript": "^5.2.2"
77
+ }
78
+ }
@@ -1,32 +0,0 @@
1
- # This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
2
- # For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
3
-
4
- name: Node.js Package
5
-
6
- on:
7
- release:
8
- types: [created]
9
-
10
- jobs:
11
- build:
12
- runs-on: ubuntu-latest
13
- steps:
14
- - uses: actions/checkout@v2
15
- - uses: actions/setup-node@v2
16
- with:
17
- node-version: 16
18
- - run: npm ci
19
-
20
- publish-npm:
21
- needs: build
22
- runs-on: ubuntu-latest
23
- steps:
24
- - uses: actions/checkout@v2
25
- - uses: actions/setup-node@v2
26
- with:
27
- node-version: 16
28
- registry-url: https://registry.npmjs.org/
29
- - run: npm ci
30
- - run: npm publish
31
- env:
32
- NODE_AUTH_TOKEN: ${{secrets.npm_token}}
package/.nvmrc DELETED
@@ -1 +0,0 @@
1
- 14
package/.prettierrc DELETED
@@ -1,5 +0,0 @@
1
- {
2
- "tabWidth": 2,
3
- "useTabs": false,
4
- "printWidth": 120
5
- }
package/CHANGELOG.md DELETED
@@ -1,45 +0,0 @@
1
- ## [2.6.1]
2
-
3
- ### Features
4
-
5
- * **Custom device types support**
6
- * **SR_DEBUG to support debug logs**
7
-
8
- ## [2.7.1]
9
-
10
- ### Features
11
- * **Push notification feature added**
12
-
13
- ## [2.8.1]
14
- * feat: Camera support.
15
-
16
- ## [2.9.1]
17
-
18
- ### Features
19
- * fix: setThermostatMode
20
-
21
- ## [2.10.1]
22
-
23
- ### Features
24
- * fix: adjustTargetTemperature
25
-
26
- ## [2.11.1]
27
-
28
- ### Features
29
- * fix: targetTemperature
30
-
31
- ## [2.11.2]
32
-
33
- ### Features
34
- * fix: adjustTargetTemperature response format.
35
-
36
- ## [2.11.4]
37
-
38
- ### Features
39
- * fix: power on, off event
40
-
41
- ## [2.12.1]
42
-
43
- ### Features
44
- * fix: error message when sending an event while connection not established yet
45
- * feat: add onConnected callback
package/index.js DELETED
@@ -1 +0,0 @@
1
- module.exports = require('./lib/sinrcpro');
package/lib/cbhandler.js DELETED
@@ -1,182 +0,0 @@
1
- /*
2
- * Copyright (c) 2019 Sinric. All rights reserved.
3
- * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
4
- *
5
- * This file is part of the Sinric Pro (https://github.com/sinricpro/)
6
- */
7
-
8
- const { getSignature, verifySignature } = require('./signature');
9
- const { powerState, powerLevel, powerLevelAdjust } = require('./contorllers/power_controller');
10
- const { Brightness, BrightnessAdjust } = require('./contorllers/brightness_controller');
11
- const { Color } = require('./contorllers/color_controller');
12
- const { ColorTemperature } = require('./contorllers/color_temperature');
13
- const { ThermoStatMode, ThermoStatTemperature, Lock, AdjustTargetTemperature } = require('./contorllers/sensors_controller');
14
- const { RangeValue, RangeValueAdjust } = require('./contorllers/range_value_controller');
15
- const { Volume, VolumeAdjust, Mute } = require('./contorllers/tv_controller');
16
- const { ChangeChannel, SkipChannel, Media } = require('./contorllers/tv_controller');
17
- const { Input } = require('./contorllers/tv_controller');
18
- const { Bands, BandReset } = require('./contorllers/speaker_controller');
19
- const { AdjustBands } = require('./contorllers/speaker_controller');
20
- const { ToggleState } = require('./contorllers/toggle_state_controller');
21
- const { Mode } = require('./contorllers/mode_controller');
22
- const { CameraStreamController } = require('./contorllers/camera_stream_controller');
23
- const { UndefinedCallbackError, InvalidResponseError } = require('./errors/errors');
24
-
25
- const jsonResponse = (client, defaultPayload, payloadValue, instanceId) => {
26
- const header = {
27
- payloadVersion: 2,
28
- signatureVersion: 1,
29
- };
30
-
31
- let payload = {
32
- action: defaultPayload.action,
33
- clientId: defaultPayload.clientId,
34
- createdAt: Math.floor(new Date() / 1000),
35
- deviceId: defaultPayload.deviceId,
36
- message: 'OK',
37
- replyToken: defaultPayload.replyToken,
38
- success: true,
39
- type: 'response',
40
- value: payloadValue,
41
- };
42
-
43
- if (instanceId) payload.instanceId = instanceId;
44
-
45
- const signature = {
46
- HMAC: getSignature(client, JSON.stringify(payload)),
47
- };
48
-
49
- return { header, payload, signature };
50
- };
51
-
52
- const handleError = (e) => {
53
- if (e instanceof UndefinedCallbackError || e instanceof InvalidResponseError) {
54
- console.error(e);
55
- } else if (process.env.SR_DEBUG) console.log(e.message);
56
- };
57
-
58
- const handlePayload = (client, payload, signature, callbacks) => verifySignature(client, payload, signature)
59
- .then((action) => {
60
- /* eslint no-else-return: ["error", {allowElseIf: true}] */
61
- if (action === 'setPowerState') {
62
- return powerState(payload, callbacks)
63
- .then((value) => jsonResponse(client, payload, value))
64
- .catch(handleError);
65
- } else if (action === 'setPowerLevel') {
66
- return powerLevel(payload, callbacks)
67
- .then((value) => jsonResponse(client, payload, value))
68
- .catch(handleError);
69
- } else if (action === 'adjustPowerLevel') {
70
- return powerLevelAdjust(payload, callbacks)
71
- .then((value) => jsonResponse(client, payload, value))
72
- .catch(handleError);
73
- } else if (action === 'setBrightness') {
74
- return Brightness(payload, callbacks)
75
- .then((value) => jsonResponse(client, payload, value))
76
- .catch(handleError);
77
- } else if (action === 'adjustBrightness') {
78
- return BrightnessAdjust(payload, callbacks)
79
- .then((value) => jsonResponse(client, payload, value))
80
- .catch(handleError);
81
- } else if (action === 'setColor') {
82
- return Color(payload, callbacks)
83
- .then((value) => jsonResponse(client, payload, value))
84
- .catch(handleError);
85
- } else if (action === 'setColorTemperature') {
86
- return ColorTemperature(payload, callbacks)
87
- .then((value) => jsonResponse(client, payload, value))
88
- .catch(handleError);
89
- } else if (action === 'setThermostatMode') {
90
- return ThermoStatMode(payload, callbacks)
91
- .then((value) => jsonResponse(client, payload, value))
92
- .catch(handleError);
93
- } else if (action === 'targetTemperature') {
94
- return ThermoStatTemperature(payload, callbacks)
95
- .then((value) => jsonResponse(client, payload, value))
96
- .catch(handleError);
97
- } else if (action === 'setRangeValue') {
98
- return RangeValue(payload, callbacks)
99
- .then(([value, instanceId]) => jsonResponse(client, payload, value, instanceId))
100
- .catch(handleError);
101
- } else if (action === 'adjustRangeValue') {
102
- return RangeValueAdjust(payload, callbacks)
103
- .then(([value, instanceId]) => jsonResponse(client, payload, value, instanceId))
104
- .catch(handleError);
105
- } else if (action === 'setVolume') {
106
- return Volume(payload, callbacks)
107
- .then((value) => jsonResponse(client, payload, value))
108
- .catch(handleError);
109
- } else if (action === 'adjustVolume') {
110
- return VolumeAdjust(payload, callbacks)
111
- .then((value) => jsonResponse(client, payload, value))
112
- .catch(handleError);
113
- } else if (action === 'selectInput') {
114
- return Input(payload, callbacks)
115
- .then((value) => jsonResponse(client, payload, value))
116
- .catch(handleError);
117
- } else if (action === 'mediaControl') {
118
- return Media(payload, callbacks)
119
- .then((value) => jsonResponse(client, payload, value))
120
- .catch(handleError);
121
- } else if (action === 'changeChannel') {
122
- return ChangeChannel(payload, callbacks)
123
- .then((value) => jsonResponse(client, payload, value))
124
- .catch(handleError);
125
- } else if (action === 'skipChannels') {
126
- return SkipChannel(payload, callbacks)
127
- .then((value) => jsonResponse(client, payload, value))
128
- .catch(handleError);
129
- } else if (action === 'setBands') {
130
- return Bands(payload, callbacks)
131
- .then((value) => jsonResponse(client, payload, value))
132
- .catch(handleError);
133
- } else if (action === 'adjustBands') {
134
- return AdjustBands(payload, callbacks)
135
- .then((value) => jsonResponse(client, payload, value))
136
- .catch(handleError);
137
- } else if (action === 'resetBands') {
138
- return BandReset(payload, callbacks)
139
- .then((value) => jsonResponse(client, payload, value))
140
- .catch(handleError);
141
- } else if (action === 'setMode') {
142
- return Mode(payload, callbacks)
143
- .then(([value, instanceId]) => jsonResponse(client, payload, value, instanceId))
144
- .catch(handleError);
145
- } else if (action === 'setLockState') {
146
- return Lock(payload, callbacks)
147
- .then((value) => jsonResponse(client, payload, value))
148
- .catch(handleError);
149
- } else if (action === 'setMute') {
150
- return Mute(payload, callbacks)
151
- .then((value) => jsonResponse(client, payload, value))
152
- .catch(handleError);
153
- } else if (action === 'setToggleState') {
154
- return ToggleState(payload, callbacks)
155
- .then(([value, instanceId]) => jsonResponse(client, payload, value, instanceId))
156
- .catch(handleError);
157
- } else if (action === 'getWebRTCAnswer') {
158
- return CameraStreamController(payload, callbacks)
159
- .then((answer) => jsonResponse(client, payload, { answer }))
160
- .catch(handleError);
161
- } else if (action === 'getCameraStreamUrl') {
162
- return CameraStreamController(payload, callbacks)
163
- .then((url) => jsonResponse(client, payload, { url }))
164
- .catch(handleError);
165
- } else if (action === 'getWebRTCOffer') {
166
- return CameraStreamController(payload, callbacks)
167
- .then((offer) => jsonResponse(client, payload, { offer }))
168
- .catch(handleError);
169
- } else if (action === 'adjustTargetTemperature') {
170
- return AdjustTargetTemperature(payload, callbacks)
171
- .then((resp) => {
172
- const { temperature } = resp;
173
- return jsonResponse(client, payload, { temperature });
174
- })
175
- .catch(handleError);
176
- }
177
- return {};
178
- })
179
- .catch((err) => {
180
- console.error(err);
181
- });
182
- module.exports = handlePayload;
@@ -1,40 +0,0 @@
1
- /*
2
- * Copyright (c) 2019 Sinric. All rights reserved.
3
- * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
4
- *
5
- * This file is part of the Sinric Pro (https://github.com/sinricpro/)
6
- */
7
-
8
- const sinricProData = require('../storage');
9
- const { UndefinedCallbackError, InvalidResponseError } = require('../errors/errors');
10
-
11
- const Brightness = async (payload, callback) => {
12
- sinricProData.brightness = payload.value.brightness;
13
-
14
- if (callback.setBrightness) {
15
- const resp = await callback.setBrightness(payload.deviceId, sinricProData.brightness);
16
- if (payload.value.brightness && resp) return payload.value;
17
- throw new InvalidResponseError('brightness is undefined');
18
- } else {
19
- throw new UndefinedCallbackError('setBrightness callback is undefined.');
20
- }
21
- };
22
-
23
- const BrightnessAdjust = async (payload, callback) => {
24
- sinricProData.brightness += payload.value.brightnessDelta;
25
- if (sinricProData.brightness < 0) {
26
- sinricProData.brightness = 0;
27
- } else if (sinricProData.brightness > 100) {
28
- sinricProData.brightness = 100;
29
- }
30
-
31
- if (callback.adjustBrightness) {
32
- const resp = await callback.adjustBrightness(payload.deviceId, sinricProData.brightness);
33
- if (payload.value.brightness && resp) return { brightness: sinricProData.brightness };
34
- throw new InvalidResponseError('brightness is undefined');
35
- } else {
36
- throw new UndefinedCallbackError('setBrightness callback is undefined');
37
- }
38
- };
39
-
40
- module.exports = { Brightness, BrightnessAdjust };
@@ -1,39 +0,0 @@
1
- /*
2
- * Copyright (c) 2019 Sinric. All rights reserved.
3
- * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
4
- *
5
- * This file is part of the Sinric Pro (https://github.com/sinricpro/)
6
- */
7
- const { UndefinedCallbackError, InvalidResponseError } = require("../errors/errors");
8
-
9
- const CameraStreamController = async (payload, callbacks) => {
10
- if (payload.action === "getWebRTCAnswer" && callbacks.getWebRTCAnswer) {
11
- const data = await callbacks.getWebRTCAnswer(payload.deviceId, payload.value.offer);
12
-
13
- if (data.answer) {
14
- return data.answer;
15
- }
16
- throw new InvalidResponseError(" error");
17
- }
18
- if (payload.action === "getWebRTCOffer" && callbacks.getWebRTCOffer) {
19
- const data = await callbacks.getWebRTCOffer(payload.deviceId);
20
-
21
- if (data.offer) {
22
- return data.offer;
23
- }
24
- throw new InvalidResponseError(" error");
25
- }
26
- else if (payload.action === "getCameraStreamUrl" && callbacks.getCameraStreamUrl) {
27
- const data = await callbacks.getCameraStreamUrl(payload.deviceId, payload.value.protocol);
28
- if (data.url) {
29
- return data.url;
30
- }
31
- throw new InvalidResponseError("getCameraStreamUrl error");
32
- } else {
33
- throw new UndefinedCallbackError("getCameraStreamUrl callback is undefined.");
34
- }
35
- };
36
-
37
- module.exports = {
38
- CameraStreamController,
39
- };
@@ -1,23 +0,0 @@
1
- /*
2
- * Copyright (c) 2019 Sinric. All rights reserved.
3
- * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
4
- *
5
- * This file is part of the Sinric Pro (https://github.com/sinricpro/)
6
- */
7
-
8
- const sinricProData = require('../storage');
9
- const { UndefinedCallbackError, InvalidResponseError } = require('../errors/errors');
10
-
11
- const Color = async (payload, callbacks) => {
12
- sinricProData.color = payload.value.color;
13
-
14
- if (callbacks.setColor) {
15
- const resp = await callbacks.setColor(payload.deviceId, payload.value.color);
16
- if (payload.value.color && resp) return payload.value;
17
- throw new InvalidResponseError('Colors undefined');
18
- } else {
19
- throw new UndefinedCallbackError('setColor callback is undefined');
20
- }
21
- };
22
-
23
- module.exports = { Color };
@@ -1,23 +0,0 @@
1
- /*
2
- * Copyright (c) 2019 Sinric. All rights reserved.
3
- * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
4
- *
5
- * This file is part of the Sinric Pro (https://github.com/sinricpro/)
6
- */
7
-
8
- const sinricProData = require('../storage');
9
- const { UndefinedCallbackError, InvalidResponseError } = require('../errors/errors');
10
-
11
- const ColorTemperature = async (payload, callbacks) => {
12
- sinricProData.colorTemperature = payload.value.colorTemperature;
13
-
14
- if (callbacks.setColorTemperature) {
15
- const resp = await callbacks.setColorTemperature(payload.deviceId, payload.value.colorTemperature);
16
- if (payload.value.colorTemperature && resp) return payload.value;
17
- throw new InvalidResponseError('color temperature is undefined');
18
- } else {
19
- throw new UndefinedCallbackError('setColorTemperature callback is undefined!');
20
- }
21
- };
22
-
23
- module.exports = { ColorTemperature };