homebridge 2.0.0-beta.4 → 2.0.0-beta.40
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.
- package/README.md +16 -17
- package/bin/homebridge.js +22 -0
- package/config-sample.json +3 -3
- package/dist/api.d.ts +499 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +223 -0
- package/dist/api.js.map +1 -0
- package/dist/api.spec.d.ts +2 -0
- package/dist/api.spec.d.ts.map +1 -0
- package/dist/api.spec.js +413 -0
- package/dist/api.spec.js.map +1 -0
- package/{lib → dist}/bridgeService.d.ts +19 -10
- package/dist/bridgeService.d.ts.map +1 -0
- package/{lib → dist}/bridgeService.js +85 -117
- package/dist/bridgeService.js.map +1 -0
- package/{lib → dist}/childBridgeFork.d.ts +11 -5
- package/dist/childBridgeFork.d.ts.map +1 -0
- package/{lib → dist}/childBridgeFork.js +93 -44
- package/dist/childBridgeFork.js.map +1 -0
- package/{lib → dist}/childBridgeService.d.ts +37 -7
- package/dist/childBridgeService.d.ts.map +1 -0
- package/{lib → dist}/childBridgeService.js +127 -69
- package/dist/childBridgeService.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +90 -0
- package/dist/cli.js.map +1 -0
- package/dist/externalPortService.d.ts +47 -0
- package/dist/externalPortService.d.ts.map +1 -0
- package/dist/externalPortService.js +105 -0
- package/dist/externalPortService.js.map +1 -0
- package/dist/index.d.ts +141 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/ipcService.d.ts +48 -0
- package/dist/ipcService.d.ts.map +1 -0
- package/{lib → dist}/ipcService.js +12 -14
- package/dist/ipcService.js.map +1 -0
- package/{lib → dist}/logger.d.ts +12 -6
- package/dist/logger.d.ts.map +1 -0
- package/{lib → dist}/logger.js +27 -28
- package/dist/logger.js.map +1 -0
- package/dist/logger.spec.d.ts +2 -0
- package/dist/logger.spec.d.ts.map +1 -0
- package/dist/logger.spec.js +95 -0
- package/dist/logger.spec.js.map +1 -0
- package/dist/matter/ChildBridgeMatterManager.d.ts +96 -0
- package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -0
- package/dist/matter/ChildBridgeMatterManager.js +399 -0
- package/dist/matter/ChildBridgeMatterManager.js.map +1 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.d.ts +48 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.d.ts.map +1 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.js +73 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.js.map +1 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts +2 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts.map +1 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.spec.js +293 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.spec.js.map +1 -0
- package/dist/matter/MatterAPIImpl.d.ts +504 -0
- package/dist/matter/MatterAPIImpl.d.ts.map +1 -0
- package/dist/matter/MatterAPIImpl.js +305 -0
- package/dist/matter/MatterAPIImpl.js.map +1 -0
- package/dist/matter/MatterBridgeManager.d.ts +87 -0
- package/dist/matter/MatterBridgeManager.d.ts.map +1 -0
- package/dist/matter/MatterBridgeManager.js +413 -0
- package/dist/matter/MatterBridgeManager.js.map +1 -0
- package/dist/matter/MatterConfigCollector.d.ts +26 -0
- package/dist/matter/MatterConfigCollector.d.ts.map +1 -0
- package/dist/matter/MatterConfigCollector.js +78 -0
- package/dist/matter/MatterConfigCollector.js.map +1 -0
- package/dist/matter/accessoryCache.d.ts +105 -0
- package/dist/matter/accessoryCache.d.ts.map +1 -0
- package/dist/matter/accessoryCache.js +214 -0
- package/dist/matter/accessoryCache.js.map +1 -0
- package/dist/matter/accessoryCache.spec.d.ts +2 -0
- package/dist/matter/accessoryCache.spec.d.ts.map +1 -0
- package/dist/matter/accessoryCache.spec.js +452 -0
- package/dist/matter/accessoryCache.spec.js.map +1 -0
- package/dist/matter/behaviors/BehaviorRegistry.d.ts +65 -0
- package/dist/matter/behaviors/BehaviorRegistry.d.ts.map +1 -0
- package/dist/matter/behaviors/BehaviorRegistry.js +139 -0
- package/dist/matter/behaviors/BehaviorRegistry.js.map +1 -0
- package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts +2 -0
- package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts.map +1 -0
- package/dist/matter/behaviors/BehaviorRegistry.spec.js +307 -0
- package/dist/matter/behaviors/BehaviorRegistry.spec.js.map +1 -0
- package/dist/matter/behaviors/ColorControlBehavior.d.ts +63 -0
- package/dist/matter/behaviors/ColorControlBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/ColorControlBehavior.js +223 -0
- package/dist/matter/behaviors/ColorControlBehavior.js.map +1 -0
- package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts +2 -0
- package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts.map +1 -0
- package/dist/matter/behaviors/ColorControlBehavior.spec.js +29 -0
- package/dist/matter/behaviors/ColorControlBehavior.spec.js.map +1 -0
- package/dist/matter/behaviors/DoorLockBehavior.d.ts +20 -0
- package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/DoorLockBehavior.js +71 -0
- package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -0
- package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts +2 -0
- package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts.map +1 -0
- package/dist/matter/behaviors/DoorLockBehavior.spec.js +120 -0
- package/dist/matter/behaviors/DoorLockBehavior.spec.js.map +1 -0
- package/dist/matter/behaviors/FanControlBehavior.d.ts +20 -0
- package/dist/matter/behaviors/FanControlBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/FanControlBehavior.js +71 -0
- package/dist/matter/behaviors/FanControlBehavior.js.map +1 -0
- package/dist/matter/behaviors/FanControlBehavior.spec.d.ts +2 -0
- package/dist/matter/behaviors/FanControlBehavior.spec.d.ts.map +1 -0
- package/dist/matter/behaviors/FanControlBehavior.spec.js +23 -0
- package/dist/matter/behaviors/FanControlBehavior.spec.js.map +1 -0
- package/dist/matter/behaviors/IdentifyBehavior.d.ts +20 -0
- package/dist/matter/behaviors/IdentifyBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/IdentifyBehavior.js +41 -0
- package/dist/matter/behaviors/IdentifyBehavior.js.map +1 -0
- package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts +2 -0
- package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts.map +1 -0
- package/dist/matter/behaviors/IdentifyBehavior.spec.js +64 -0
- package/dist/matter/behaviors/IdentifyBehavior.spec.js.map +1 -0
- package/dist/matter/behaviors/LevelControlBehavior.d.ts +33 -0
- package/dist/matter/behaviors/LevelControlBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/LevelControlBehavior.js +138 -0
- package/dist/matter/behaviors/LevelControlBehavior.js.map +1 -0
- package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts +2 -0
- package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts.map +1 -0
- package/dist/matter/behaviors/LevelControlBehavior.spec.js +145 -0
- package/dist/matter/behaviors/LevelControlBehavior.spec.js.map +1 -0
- package/dist/matter/behaviors/OnOffBehavior.d.ts +27 -0
- package/dist/matter/behaviors/OnOffBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/OnOffBehavior.js +95 -0
- package/dist/matter/behaviors/OnOffBehavior.js.map +1 -0
- package/dist/matter/behaviors/OnOffBehavior.spec.d.ts +2 -0
- package/dist/matter/behaviors/OnOffBehavior.spec.d.ts.map +1 -0
- package/dist/matter/behaviors/OnOffBehavior.spec.js +128 -0
- package/dist/matter/behaviors/OnOffBehavior.spec.js.map +1 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts +19 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.js +41 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.js.map +1 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts +2 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts.map +1 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js +57 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js.map +1 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts +22 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.js +86 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.js.map +1 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts +2 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts.map +1 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js +55 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js.map +1 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.d.ts +19 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.js +41 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.js.map +1 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts +2 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts.map +1 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.spec.js +57 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.spec.js.map +1 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.d.ts +21 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.js +61 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.js.map +1 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts +2 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts.map +1 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.spec.js +53 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.spec.js.map +1 -0
- package/dist/matter/behaviors/ThermostatBehavior.d.ts +22 -0
- package/dist/matter/behaviors/ThermostatBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/ThermostatBehavior.js +127 -0
- package/dist/matter/behaviors/ThermostatBehavior.js.map +1 -0
- package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts +2 -0
- package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts.map +1 -0
- package/dist/matter/behaviors/ThermostatBehavior.spec.js +23 -0
- package/dist/matter/behaviors/ThermostatBehavior.spec.js.map +1 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.d.ts +31 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.js +158 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.js.map +1 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts +2 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts.map +1 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.spec.js +27 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.spec.js.map +1 -0
- package/dist/matter/behaviors/index.d.ts +20 -0
- package/dist/matter/behaviors/index.d.ts.map +1 -0
- package/dist/matter/behaviors/index.js +21 -0
- package/dist/matter/behaviors/index.js.map +1 -0
- package/dist/matter/configValidator.d.ts +81 -0
- package/dist/matter/configValidator.d.ts.map +1 -0
- package/dist/matter/configValidator.js +240 -0
- package/dist/matter/configValidator.js.map +1 -0
- package/dist/matter/configValidator.spec.d.ts +2 -0
- package/dist/matter/configValidator.spec.d.ts.map +1 -0
- package/dist/matter/configValidator.spec.js +390 -0
- package/dist/matter/configValidator.spec.js.map +1 -0
- package/dist/matter/errorHandler.d.ts +33 -0
- package/dist/matter/errorHandler.d.ts.map +1 -0
- package/dist/matter/errorHandler.js +113 -0
- package/dist/matter/errorHandler.js.map +1 -0
- package/dist/matter/errorHandler.spec.d.ts +2 -0
- package/dist/matter/errorHandler.spec.d.ts.map +1 -0
- package/dist/matter/errorHandler.spec.js +159 -0
- package/dist/matter/errorHandler.spec.js.map +1 -0
- package/dist/matter/errors.d.ts +178 -0
- package/dist/matter/errors.d.ts.map +1 -0
- package/dist/matter/errors.js +200 -0
- package/dist/matter/errors.js.map +1 -0
- package/dist/matter/index.d.ts +127 -0
- package/dist/matter/index.d.ts.map +1 -0
- package/dist/matter/index.js +23 -0
- package/dist/matter/index.js.map +1 -0
- package/dist/matter/logFormatter.d.ts +19 -0
- package/dist/matter/logFormatter.d.ts.map +1 -0
- package/dist/matter/logFormatter.js +158 -0
- package/dist/matter/logFormatter.js.map +1 -0
- package/dist/matter/logFormatter.spec.d.ts +2 -0
- package/dist/matter/logFormatter.spec.d.ts.map +1 -0
- package/dist/matter/logFormatter.spec.js +252 -0
- package/dist/matter/logFormatter.spec.js.map +1 -0
- package/dist/matter/server.d.ts +336 -0
- package/dist/matter/server.d.ts.map +1 -0
- package/dist/matter/server.js +1810 -0
- package/dist/matter/server.js.map +1 -0
- package/dist/matter/serverHelpers.d.ts +81 -0
- package/dist/matter/serverHelpers.d.ts.map +1 -0
- package/dist/matter/serverHelpers.js +326 -0
- package/dist/matter/serverHelpers.js.map +1 -0
- package/dist/matter/serverHelpers.spec.d.ts +2 -0
- package/dist/matter/serverHelpers.spec.d.ts.map +1 -0
- package/dist/matter/serverHelpers.spec.js +521 -0
- package/dist/matter/serverHelpers.spec.js.map +1 -0
- package/dist/matter/sharedTypes.d.ts +164 -0
- package/dist/matter/sharedTypes.d.ts.map +1 -0
- package/dist/matter/sharedTypes.js +46 -0
- package/dist/matter/sharedTypes.js.map +1 -0
- package/dist/matter/storage.d.ts +135 -0
- package/dist/matter/storage.d.ts.map +1 -0
- package/dist/matter/storage.js +424 -0
- package/dist/matter/storage.js.map +1 -0
- package/dist/matter/storage.spec.d.ts +2 -0
- package/dist/matter/storage.spec.d.ts.map +1 -0
- package/dist/matter/storage.spec.js +570 -0
- package/dist/matter/storage.spec.js.map +1 -0
- package/dist/matter/typeHelpers.d.ts +45 -0
- package/dist/matter/typeHelpers.d.ts.map +1 -0
- package/dist/matter/typeHelpers.js +57 -0
- package/dist/matter/typeHelpers.js.map +1 -0
- package/dist/matter/typeHelpers.spec.d.ts +2 -0
- package/dist/matter/typeHelpers.spec.d.ts.map +1 -0
- package/dist/matter/typeHelpers.spec.js +127 -0
- package/dist/matter/typeHelpers.spec.js.map +1 -0
- package/dist/matter/types.d.ts +826 -0
- package/dist/matter/types.d.ts.map +1 -0
- package/dist/matter/types.js +204 -0
- package/dist/matter/types.js.map +1 -0
- package/{lib → dist}/platformAccessory.d.ts +8 -6
- package/dist/platformAccessory.d.ts.map +1 -0
- package/{lib → dist}/platformAccessory.js +19 -16
- package/dist/platformAccessory.js.map +1 -0
- package/dist/platformAccessory.spec.d.ts +2 -0
- package/dist/platformAccessory.spec.d.ts.map +1 -0
- package/dist/platformAccessory.spec.js +126 -0
- package/dist/platformAccessory.spec.js.map +1 -0
- package/{lib → dist}/plugin.d.ts +2 -3
- package/dist/plugin.d.ts.map +1 -0
- package/{lib → dist}/plugin.js +39 -51
- package/dist/plugin.js.map +1 -0
- package/{lib → dist}/pluginManager.d.ts +3 -3
- package/dist/pluginManager.d.ts.map +1 -0
- package/{lib → dist}/pluginManager.js +76 -81
- package/dist/pluginManager.js.map +1 -0
- package/dist/pluginManager.spec.d.ts +2 -0
- package/dist/pluginManager.spec.d.ts.map +1 -0
- package/dist/pluginManager.spec.js +43 -0
- package/dist/pluginManager.spec.js.map +1 -0
- package/{lib → dist}/server.d.ts +14 -1
- package/dist/server.d.ts.map +1 -0
- package/{lib → dist}/server.js +193 -123
- package/dist/server.js.map +1 -0
- package/dist/server.spec.d.ts +2 -0
- package/dist/server.spec.d.ts.map +1 -0
- package/dist/server.spec.js +57 -0
- package/dist/server.spec.js.map +1 -0
- package/{lib → dist}/storageService.d.ts.map +1 -1
- package/dist/storageService.js +41 -0
- package/dist/storageService.js.map +1 -0
- package/{lib → dist}/user.d.ts +1 -0
- package/dist/user.d.ts.map +1 -0
- package/dist/user.js +32 -0
- package/dist/user.js.map +1 -0
- package/dist/user.spec.d.ts +2 -0
- package/dist/user.spec.d.ts.map +1 -0
- package/dist/user.spec.js +31 -0
- package/dist/user.spec.js.map +1 -0
- package/{lib → dist}/util/mac.d.ts +1 -0
- package/dist/util/mac.d.ts.map +1 -0
- package/dist/util/mac.js +14 -0
- package/dist/util/mac.js.map +1 -0
- package/dist/util/mac.spec.d.ts +2 -0
- package/dist/util/mac.spec.d.ts.map +1 -0
- package/dist/util/mac.spec.js +36 -0
- package/dist/util/mac.spec.js.map +1 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +16 -0
- package/dist/version.js.map +1 -0
- package/dist/version.spec.d.ts +2 -0
- package/dist/version.spec.d.ts.map +1 -0
- package/dist/version.spec.js +20 -0
- package/dist/version.spec.js.map +1 -0
- package/package.json +49 -50
- package/bin/homebridge +0 -17
- package/lib/api.d.ts +0 -210
- package/lib/api.d.ts.map +0 -1
- package/lib/api.js +0 -155
- package/lib/api.js.map +0 -1
- package/lib/bridgeService.d.ts.map +0 -1
- package/lib/bridgeService.js.map +0 -1
- package/lib/childBridgeFork.d.ts.map +0 -1
- package/lib/childBridgeFork.js.map +0 -1
- package/lib/childBridgeService.d.ts.map +0 -1
- package/lib/childBridgeService.js.map +0 -1
- package/lib/cli.d.ts +0 -4
- package/lib/cli.d.ts.map +0 -1
- package/lib/cli.js +0 -111
- package/lib/cli.js.map +0 -1
- package/lib/externalPortService.d.ts +0 -33
- package/lib/externalPortService.d.ts.map +0 -1
- package/lib/externalPortService.js +0 -64
- package/lib/externalPortService.js.map +0 -1
- package/lib/index.d.ts +0 -76
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -72
- package/lib/index.js.map +0 -1
- package/lib/ipcService.d.ts +0 -33
- package/lib/ipcService.d.ts.map +0 -1
- package/lib/ipcService.js.map +0 -1
- package/lib/logger.d.ts.map +0 -1
- package/lib/logger.js.map +0 -1
- package/lib/platformAccessory.d.ts.map +0 -1
- package/lib/platformAccessory.js.map +0 -1
- package/lib/plugin.d.ts.map +0 -1
- package/lib/plugin.js.map +0 -1
- package/lib/pluginManager.d.ts.map +0 -1
- package/lib/pluginManager.js.map +0 -1
- package/lib/server.d.ts.map +0 -1
- package/lib/server.js.map +0 -1
- package/lib/storageService.js +0 -70
- package/lib/storageService.js.map +0 -1
- package/lib/user.d.ts.map +0 -1
- package/lib/user.js +0 -36
- package/lib/user.js.map +0 -1
- package/lib/util/mac.d.ts.map +0 -1
- package/lib/util/mac.js +0 -20
- package/lib/util/mac.js.map +0 -1
- package/lib/version.d.ts.map +0 -1
- package/lib/version.js +0 -21
- package/lib/version.js.map +0 -1
- /package/{lib → dist}/storageService.d.ts +0 -0
- /package/{lib → dist}/version.d.ts +0 -0
package/{lib → dist}/server.js
RENAMED
|
@@ -1,46 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.Server = exports.ServerStatus = void 0;
|
|
30
|
-
const fs_1 = __importDefault(require("fs"));
|
|
31
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
32
|
-
const qrcode_terminal_1 = __importDefault(require("qrcode-terminal"));
|
|
33
|
-
const api_1 = require("./api");
|
|
34
|
-
const bridgeService_1 = require("./bridgeService");
|
|
35
|
-
const childBridgeService_1 = require("./childBridgeService");
|
|
36
|
-
const externalPortService_1 = require("./externalPortService");
|
|
37
|
-
const ipcService_1 = require("./ipcService");
|
|
38
|
-
const logger_1 = require("./logger");
|
|
39
|
-
const pluginManager_1 = require("./pluginManager");
|
|
40
|
-
const user_1 = require("./user");
|
|
41
|
-
const mac = __importStar(require("./util/mac"));
|
|
42
|
-
const log = logger_1.Logger.internal;
|
|
43
|
-
var ServerStatus;
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import process from 'node:process';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import qrcode from 'qrcode-terminal';
|
|
5
|
+
import { HomebridgeAPI } from './api.js';
|
|
6
|
+
import { BridgeService } from './bridgeService.js';
|
|
7
|
+
import { ChildBridgeService } from './childBridgeService.js';
|
|
8
|
+
import { ExternalPortService } from './externalPortService.js';
|
|
9
|
+
import { IpcService } from './ipcService.js';
|
|
10
|
+
import { Logger } from './logger.js';
|
|
11
|
+
import { MatterBridgeManager, MatterConfigCollector } from './matter/index.js';
|
|
12
|
+
import { PluginManager } from './pluginManager.js';
|
|
13
|
+
import { User } from './user.js';
|
|
14
|
+
import { validMacAddress } from './util/mac.js';
|
|
15
|
+
const log = Logger.internal;
|
|
16
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
17
|
+
export var ServerStatus;
|
|
44
18
|
(function (ServerStatus) {
|
|
45
19
|
/**
|
|
46
20
|
* When the server is starting up
|
|
@@ -54,8 +28,8 @@ var ServerStatus;
|
|
|
54
28
|
* When the server is shutting down
|
|
55
29
|
*/
|
|
56
30
|
ServerStatus["DOWN"] = "down";
|
|
57
|
-
})(ServerStatus || (
|
|
58
|
-
class Server {
|
|
31
|
+
})(ServerStatus || (ServerStatus = {}));
|
|
32
|
+
export class Server {
|
|
59
33
|
options;
|
|
60
34
|
api;
|
|
61
35
|
pluginManager;
|
|
@@ -64,16 +38,22 @@ class Server {
|
|
|
64
38
|
externalPortService;
|
|
65
39
|
config;
|
|
66
40
|
// used to keep track of child bridges
|
|
41
|
+
// Key is HAP username (MAC address)
|
|
67
42
|
childBridges = new Map();
|
|
43
|
+
// Matter bridge manager (handles Matter server lifecycle)
|
|
44
|
+
// Made optional to handle initialization order - gets created in constructor after first setServerStatus call
|
|
45
|
+
matterManager;
|
|
68
46
|
// current server status
|
|
69
47
|
serverStatus = "pending" /* ServerStatus.PENDING */;
|
|
70
48
|
constructor(options = {}) {
|
|
71
49
|
this.options = options;
|
|
72
50
|
this.config = Server.loadConfig();
|
|
73
51
|
// object we feed to Plugins and BridgeService
|
|
74
|
-
this.api = new
|
|
75
|
-
this.ipcService = new
|
|
76
|
-
|
|
52
|
+
this.api = new HomebridgeAPI();
|
|
53
|
+
this.ipcService = new IpcService();
|
|
54
|
+
// Collect all configured Matter ports to avoid conflicts
|
|
55
|
+
const configuredMatterPorts = MatterBridgeManager.collectConfiguredMatterPorts(this.config);
|
|
56
|
+
this.externalPortService = new ExternalPortService(this.config.ports, this.config.matterPorts, configuredMatterPorts);
|
|
77
57
|
// set status to pending
|
|
78
58
|
this.setServerStatus("pending" /* ServerStatus.PENDING */);
|
|
79
59
|
// create new plugin manager
|
|
@@ -83,15 +63,31 @@ class Server {
|
|
|
83
63
|
customPluginPath: options.customPluginPath,
|
|
84
64
|
strictPluginResolution: options.strictPluginResolution,
|
|
85
65
|
};
|
|
86
|
-
this.pluginManager = new
|
|
66
|
+
this.pluginManager = new PluginManager(this.api, pluginManagerOptions);
|
|
87
67
|
// create new bridge service
|
|
88
68
|
const bridgeConfig = {
|
|
89
|
-
cachedAccessoriesDir:
|
|
90
|
-
cachedAccessoriesItemName:
|
|
69
|
+
cachedAccessoriesDir: User.cachedAccessoryPath(),
|
|
70
|
+
cachedAccessoriesItemName: 'cachedAccessories',
|
|
91
71
|
};
|
|
92
72
|
// shallow copy the homebridge options to the bridge options object
|
|
93
73
|
Object.assign(bridgeConfig, this.options);
|
|
94
|
-
this.bridgeService = new
|
|
74
|
+
this.bridgeService = new BridgeService(this.api, this.pluginManager, this.externalPortService, bridgeConfig, this.config.bridge);
|
|
75
|
+
// Create Matter bridge manager
|
|
76
|
+
this.matterManager = new MatterBridgeManager(this.config, this.api, this.externalPortService, this.pluginManager, this.options);
|
|
77
|
+
// Set manager reference on API for getAccessoryState
|
|
78
|
+
this.api._setMatterManager(this.matterManager);
|
|
79
|
+
// Handle platform accessory registration
|
|
80
|
+
this.api.on("registerPlatformAccessories" /* InternalAPIEvent.REGISTER_PLATFORM_ACCESSORIES */, this.handleRegisterPlatformAccessories.bind(this));
|
|
81
|
+
this.api.on("unregisterPlatformAccessories" /* InternalAPIEvent.UNREGISTER_PLATFORM_ACCESSORIES */, this.handleUnregisterPlatformAccessories.bind(this));
|
|
82
|
+
// Handle external accessories (cameras, etc.)
|
|
83
|
+
this.api.on("publishExternalAccessories" /* InternalAPIEvent.PUBLISH_EXTERNAL_ACCESSORIES */, this.handlePublishExternalAccessories.bind(this));
|
|
84
|
+
// Handle Matter accessory registration (matching HAP pattern)
|
|
85
|
+
this.api.on("publishExternalMatterAccessories" /* InternalAPIEvent.PUBLISH_EXTERNAL_MATTER_ACCESSORIES */, this.handlePublishExternalMatterAccessories.bind(this));
|
|
86
|
+
this.api.on("registerMatterPlatformAccessories" /* InternalAPIEvent.REGISTER_MATTER_PLATFORM_ACCESSORIES */, this.handleRegisterMatterPlatformAccessories.bind(this));
|
|
87
|
+
this.api.on("updateMatterPlatformAccessories" /* InternalAPIEvent.UPDATE_MATTER_PLATFORM_ACCESSORIES */, this.handleUpdateMatterPlatformAccessories.bind(this));
|
|
88
|
+
this.api.on("unregisterMatterPlatformAccessories" /* InternalAPIEvent.UNREGISTER_MATTER_PLATFORM_ACCESSORIES */, this.handleUnregisterMatterPlatformAccessories.bind(this));
|
|
89
|
+
this.api.on("unregisterExternalMatterAccessories" /* InternalAPIEvent.UNREGISTER_EXTERNAL_MATTER_ACCESSORIES */, this.handleUnregisterExternalMatterAccessories.bind(this));
|
|
90
|
+
this.api.on("updateMatterAccessoryState" /* InternalAPIEvent.UPDATE_MATTER_ACCESSORY_STATE */, this.handleUpdateMatterAccessoryState.bind(this));
|
|
95
91
|
// watch bridge events to check when server is online
|
|
96
92
|
this.bridgeService.bridge.on("advertised" /* AccessoryEventTypes.ADVERTISED */, () => {
|
|
97
93
|
this.setServerStatus("ok" /* ServerStatus.OK */);
|
|
@@ -111,14 +107,16 @@ class Server {
|
|
|
111
107
|
*/
|
|
112
108
|
setServerStatus(status) {
|
|
113
109
|
this.serverStatus = status;
|
|
114
|
-
|
|
110
|
+
const statusUpdate = {
|
|
115
111
|
status: this.serverStatus,
|
|
116
112
|
paired: this.bridgeService?.bridge?._accessoryInfo?.paired() ?? null,
|
|
117
113
|
setupUri: this.bridgeService?.bridge?.setupURI() ?? null,
|
|
118
|
-
name: this.
|
|
114
|
+
name: this.config.bridge.name,
|
|
119
115
|
username: this.config.bridge.username,
|
|
120
116
|
pin: this.config.bridge.pin,
|
|
121
|
-
|
|
117
|
+
matter: this.matterManager?.getMatterStatus() ?? { enabled: false },
|
|
118
|
+
};
|
|
119
|
+
this.ipcService.sendMessage("serverStatusUpdate" /* IpcOutgoingEvent.SERVER_STATUS_UPDATE */, statusUpdate);
|
|
122
120
|
}
|
|
123
121
|
async start() {
|
|
124
122
|
if (this.config.bridge.disableIpc !== true) {
|
|
@@ -129,6 +127,8 @@ class Server {
|
|
|
129
127
|
await this.bridgeService.loadCachedPlatformAccessoriesFromDisk();
|
|
130
128
|
// initialize plugins
|
|
131
129
|
await this.pluginManager.initializeInstalledPlugins();
|
|
130
|
+
// Initialize Matter server for main bridge if enabled
|
|
131
|
+
await this.matterManager?.initialize();
|
|
132
132
|
if (this.config.platforms.length > 0) {
|
|
133
133
|
promises.push(...this.loadPlatforms());
|
|
134
134
|
}
|
|
@@ -141,29 +141,80 @@ class Server {
|
|
|
141
141
|
}
|
|
142
142
|
// restore cached accessories
|
|
143
143
|
this.bridgeService.restoreCachedPlatformAccessories();
|
|
144
|
+
this.matterManager?.restoreCachedAccessories(this.options.keepOrphanedCachedAccessories ?? false);
|
|
144
145
|
this.api.signalFinished();
|
|
145
146
|
// wait for all platforms to publish their accessories before we publish the bridge
|
|
146
147
|
await Promise.all(promises)
|
|
147
148
|
.then(() => this.publishBridge());
|
|
148
149
|
}
|
|
149
|
-
teardown() {
|
|
150
|
+
async teardown() {
|
|
150
151
|
this.bridgeService.teardown();
|
|
152
|
+
// Teardown Matter servers (main bridge and external accessories)
|
|
153
|
+
await this.matterManager?.teardown();
|
|
151
154
|
this.setServerStatus("down" /* ServerStatus.DOWN */);
|
|
152
155
|
}
|
|
153
156
|
publishBridge() {
|
|
154
157
|
this.bridgeService.publishBridge();
|
|
155
158
|
this.printSetupInfo(this.config.bridge.pin);
|
|
156
159
|
}
|
|
160
|
+
handlePublishExternalAccessories(accessories) {
|
|
161
|
+
// External accessories are published via HAP
|
|
162
|
+
// Plugins should use api.matter to register Matter accessories explicitly
|
|
163
|
+
log.info(`Publishing ${accessories.length} external accessories`);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Handle external Matter accessories - delegates to MatterBridgeManager
|
|
167
|
+
*/
|
|
168
|
+
handlePublishExternalMatterAccessories(accessories, registrationId) {
|
|
169
|
+
this.matterManager?.handlePublishExternalAccessories(accessories, registrationId).catch((error) => {
|
|
170
|
+
log.error('Failed to publish external Matter accessories:', error);
|
|
171
|
+
// Make sure to resolve the registration even on error
|
|
172
|
+
this.api._resolveExternalRegistration(registrationId);
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
handleRegisterPlatformAccessories(accessories) {
|
|
176
|
+
// Route to HAP bridge
|
|
177
|
+
this.bridgeService.handleRegisterPlatformAccessories(accessories);
|
|
178
|
+
}
|
|
179
|
+
handleUnregisterPlatformAccessories(accessories) {
|
|
180
|
+
// Route to HAP bridge
|
|
181
|
+
this.bridgeService.handleUnregisterPlatformAccessories(accessories);
|
|
182
|
+
}
|
|
183
|
+
handleRegisterMatterPlatformAccessories(pluginIdentifier, platformName, accessories) {
|
|
184
|
+
this.matterManager?.handleRegisterPlatformAccessories(pluginIdentifier, platformName, accessories).catch((error) => {
|
|
185
|
+
log.error(`Failed to register Matter accessories for ${pluginIdentifier}:`, error);
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
handleUpdateMatterPlatformAccessories(accessories) {
|
|
189
|
+
this.matterManager?.handleUpdatePlatformAccessories(accessories).catch((error) => {
|
|
190
|
+
log.error('Failed to update Matter platform accessories:', error);
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
handleUnregisterMatterPlatformAccessories(pluginIdentifier, platformName, accessories) {
|
|
194
|
+
this.matterManager?.handleUnregisterPlatformAccessories(pluginIdentifier, platformName, accessories).catch((error) => {
|
|
195
|
+
log.error(`Failed to unregister Matter accessories for ${pluginIdentifier}:`, error);
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
handleUnregisterExternalMatterAccessories(accessories) {
|
|
199
|
+
this.matterManager?.handleUnregisterExternalAccessories(accessories).catch((error) => {
|
|
200
|
+
log.error('Failed to unregister external Matter accessories:', error);
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
handleUpdateMatterAccessoryState(uuid, cluster, attributes, partId) {
|
|
204
|
+
this.matterManager?.handleUpdateAccessoryState(uuid, cluster, attributes, partId).catch((error) => {
|
|
205
|
+
log.error(`Failed to update Matter accessory state for ${uuid}:`, error);
|
|
206
|
+
});
|
|
207
|
+
}
|
|
157
208
|
static loadConfig() {
|
|
158
209
|
// Look for the configuration file
|
|
159
|
-
const configPath =
|
|
210
|
+
const configPath = User.configPath();
|
|
160
211
|
const defaultBridge = {
|
|
161
|
-
name:
|
|
162
|
-
username:
|
|
163
|
-
pin:
|
|
212
|
+
name: 'Homebridge',
|
|
213
|
+
username: 'CC:22:3D:E3:CE:30',
|
|
214
|
+
pin: '031-45-154',
|
|
164
215
|
};
|
|
165
|
-
if (!
|
|
166
|
-
log.warn(
|
|
216
|
+
if (!existsSync(configPath)) {
|
|
217
|
+
log.warn('config.json (%s) not found.', configPath);
|
|
167
218
|
return {
|
|
168
219
|
bridge: defaultBridge,
|
|
169
220
|
accessories: [],
|
|
@@ -172,46 +223,60 @@ class Server {
|
|
|
172
223
|
}
|
|
173
224
|
let config;
|
|
174
225
|
try {
|
|
175
|
-
config = JSON.parse(
|
|
226
|
+
config = JSON.parse(readFileSync(configPath, { encoding: 'utf8' }));
|
|
176
227
|
}
|
|
177
|
-
catch (
|
|
178
|
-
log.error(
|
|
179
|
-
log.error(
|
|
180
|
-
log.error(
|
|
181
|
-
throw
|
|
228
|
+
catch (error) {
|
|
229
|
+
log.error('There was a problem reading your config.json file.');
|
|
230
|
+
log.error('Please try pasting your config.json file here to validate it: https://jsonlint.com');
|
|
231
|
+
log.error('');
|
|
232
|
+
throw error;
|
|
182
233
|
}
|
|
183
234
|
if (config.ports !== undefined) {
|
|
184
235
|
if (config.ports.start && config.ports.end) {
|
|
185
236
|
if (config.ports.start > config.ports.end) {
|
|
186
|
-
log.error(
|
|
237
|
+
log.error('Invalid port pool configuration. End should be greater than or equal to start.');
|
|
187
238
|
config.ports = undefined;
|
|
188
239
|
}
|
|
189
240
|
}
|
|
190
241
|
else {
|
|
191
|
-
log.error(
|
|
242
|
+
log.error('Invalid configuration for \'ports\'. Missing \'start\' and \'end\' properties! Ignoring it!');
|
|
192
243
|
config.ports = undefined;
|
|
193
244
|
}
|
|
194
245
|
}
|
|
246
|
+
if (config.matterPorts !== undefined) {
|
|
247
|
+
if (config.matterPorts.start && config.matterPorts.end) {
|
|
248
|
+
if (config.matterPorts.start > config.matterPorts.end) {
|
|
249
|
+
log.error('Invalid Matter port pool configuration. End should be greater than or equal to start.');
|
|
250
|
+
config.matterPorts = undefined;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
log.error('Invalid configuration for \'matterPorts\'. Missing \'start\' and \'end\' properties! Ignoring it!');
|
|
255
|
+
config.matterPorts = undefined;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
195
258
|
const bridge = config.bridge || defaultBridge;
|
|
196
259
|
bridge.name = bridge.name || defaultBridge.name;
|
|
197
260
|
bridge.username = bridge.username || defaultBridge.username;
|
|
198
261
|
bridge.pin = bridge.pin || defaultBridge.pin;
|
|
199
262
|
config.bridge = bridge;
|
|
200
263
|
const username = config.bridge.username;
|
|
201
|
-
if (!
|
|
264
|
+
if (!validMacAddress(username)) {
|
|
202
265
|
throw new Error(`Not a valid username: ${username}. Must be 6 pairs of colon-separated hexadecimal chars (A-F 0-9), like a MAC address.`);
|
|
203
266
|
}
|
|
204
267
|
config.accessories = config.accessories || [];
|
|
205
268
|
config.platforms = config.platforms || [];
|
|
206
269
|
if (!Array.isArray(config.accessories)) {
|
|
207
|
-
log.error(
|
|
270
|
+
log.error('Value provided for accessories must be an array[]');
|
|
208
271
|
config.accessories = [];
|
|
209
272
|
}
|
|
210
273
|
if (!Array.isArray(config.platforms)) {
|
|
211
|
-
log.error(
|
|
274
|
+
log.error('Value provided for platforms must be an array[]');
|
|
212
275
|
config.platforms = [];
|
|
213
276
|
}
|
|
214
|
-
log.info(
|
|
277
|
+
log.info('Loaded config.json with %s accessories and %s platforms.', config.accessories.length, config.platforms.length);
|
|
278
|
+
// Validate Matter configuration for port conflicts
|
|
279
|
+
MatterConfigCollector.validateMatterConfig(config);
|
|
215
280
|
if (config.bridge.advertiser) {
|
|
216
281
|
if (![
|
|
217
282
|
"bonjour-hap" /* MDNSAdvertiser.BONJOUR */,
|
|
@@ -220,7 +285,7 @@ class Server {
|
|
|
220
285
|
"resolved" /* MDNSAdvertiser.RESOLVED */,
|
|
221
286
|
].includes(config.bridge.advertiser)) {
|
|
222
287
|
config.bridge.advertiser = undefined;
|
|
223
|
-
log.error(
|
|
288
|
+
log.error('Value provided in bridge.advertiser is not valid, reverting to platform default.');
|
|
224
289
|
}
|
|
225
290
|
}
|
|
226
291
|
else {
|
|
@@ -229,17 +294,17 @@ class Server {
|
|
|
229
294
|
return config;
|
|
230
295
|
}
|
|
231
296
|
loadAccessories() {
|
|
232
|
-
log.info(
|
|
297
|
+
log.info(`Loading ${this.config.accessories.length} accessories...`);
|
|
233
298
|
this.config.accessories.forEach((accessoryConfig, index) => {
|
|
234
299
|
if (!accessoryConfig.accessory) {
|
|
235
|
-
log.warn(
|
|
236
|
-
|
|
300
|
+
log.warn('Your config.json contains an illegal accessory configuration object at position %d. '
|
|
301
|
+
+ 'Missing property \'accessory\'. Skipping entry...', index + 1); // we rather count from 1 for the normal people?
|
|
237
302
|
return;
|
|
238
303
|
}
|
|
239
304
|
const accessoryIdentifier = accessoryConfig.accessory;
|
|
240
305
|
const displayName = accessoryConfig.name;
|
|
241
306
|
if (!displayName) {
|
|
242
|
-
log.warn(
|
|
307
|
+
log.warn('Could not load accessory %s at position %d as it is missing the required \'name\' property!', accessoryIdentifier, index + 1);
|
|
243
308
|
return;
|
|
244
309
|
}
|
|
245
310
|
let plugin;
|
|
@@ -264,8 +329,8 @@ class Server {
|
|
|
264
329
|
log.error(error); // error message contains more information and full stack trace
|
|
265
330
|
return;
|
|
266
331
|
}
|
|
267
|
-
const logger =
|
|
268
|
-
logger(
|
|
332
|
+
const logger = Logger.withPrefix(displayName);
|
|
333
|
+
logger('Initializing %s accessory...', accessoryIdentifier);
|
|
269
334
|
if (accessoryConfig._bridge) {
|
|
270
335
|
// ensure the username is always uppercase
|
|
271
336
|
accessoryConfig._bridge.username = accessoryConfig._bridge.username.toUpperCase();
|
|
@@ -283,7 +348,7 @@ class Server {
|
|
|
283
348
|
}
|
|
284
349
|
else {
|
|
285
350
|
logger(`Initializing child bridge ${accessoryConfig._bridge.username}`);
|
|
286
|
-
childBridge = new
|
|
351
|
+
childBridge = new ChildBridgeService("accessory" /* PluginType.ACCESSORY */, accessoryIdentifier, plugin, accessoryConfig._bridge, this.config, this.options, this.api, this.ipcService, this.externalPortService);
|
|
287
352
|
this.childBridges.set(accessoryConfig._bridge.username, childBridge);
|
|
288
353
|
}
|
|
289
354
|
// add config to child bridge service
|
|
@@ -291,29 +356,28 @@ class Server {
|
|
|
291
356
|
return;
|
|
292
357
|
}
|
|
293
358
|
const accessoryInstance = new constructor(logger, accessoryConfig, this.api);
|
|
294
|
-
//pass accessoryIdentifier for UUID generation, and optional parameter uuid_base which can be used instead of displayName for UUID generation
|
|
359
|
+
// pass accessoryIdentifier for UUID generation, and optional parameter uuid_base which can be used instead of displayName for UUID generation
|
|
295
360
|
const accessory = this.bridgeService.createHAPAccessory(plugin, accessoryInstance, displayName, accessoryIdentifier, accessoryConfig.uuid_base);
|
|
296
361
|
if (accessory) {
|
|
297
362
|
try {
|
|
298
363
|
this.bridgeService.bridge.addBridgedAccessory(accessory);
|
|
299
364
|
}
|
|
300
|
-
catch (
|
|
301
|
-
logger.error(`Error loading the accessory "${accessoryIdentifier}" from "${plugin.getPluginIdentifier()}" requested in your config.json:`,
|
|
302
|
-
return;
|
|
365
|
+
catch (error) {
|
|
366
|
+
logger.error(`Error loading the accessory "${accessoryIdentifier}" from "${plugin.getPluginIdentifier()}" requested in your config.json:`, error.message);
|
|
303
367
|
}
|
|
304
368
|
}
|
|
305
369
|
else {
|
|
306
|
-
logger.info(
|
|
370
|
+
logger.info('Accessory %s returned empty set of services; not adding it to the bridge.', accessoryIdentifier);
|
|
307
371
|
}
|
|
308
372
|
});
|
|
309
373
|
}
|
|
310
374
|
loadPlatforms() {
|
|
311
|
-
log.info(
|
|
375
|
+
log.info(`Loading ${this.config.platforms.length} platforms...`);
|
|
312
376
|
const promises = [];
|
|
313
377
|
this.config.platforms.forEach((platformConfig, index) => {
|
|
314
378
|
if (!platformConfig.platform) {
|
|
315
|
-
log.warn(
|
|
316
|
-
|
|
379
|
+
log.warn('Your config.json contains an illegal platform configuration object at position %d. '
|
|
380
|
+
+ 'Missing property \'platform\'. Skipping entry...', index + 1); // we rather count from 1 for the normal people?
|
|
317
381
|
return;
|
|
318
382
|
}
|
|
319
383
|
const platformIdentifier = platformConfig.platform;
|
|
@@ -321,7 +385,7 @@ class Server {
|
|
|
321
385
|
let plugin;
|
|
322
386
|
let constructor;
|
|
323
387
|
// do not load homebridge-config-ui-x when running in service mode
|
|
324
|
-
if (platformIdentifier ===
|
|
388
|
+
if (platformIdentifier === 'config' && process.env.UIX_SERVICE_MODE === '1') {
|
|
325
389
|
return;
|
|
326
390
|
}
|
|
327
391
|
try {
|
|
@@ -344,8 +408,8 @@ class Server {
|
|
|
344
408
|
log.error(error); // error message contains more information and full stack trace
|
|
345
409
|
return;
|
|
346
410
|
}
|
|
347
|
-
const logger =
|
|
348
|
-
logger(
|
|
411
|
+
const logger = Logger.withPrefix(displayName);
|
|
412
|
+
logger('Initializing %s platform...', platformIdentifier);
|
|
349
413
|
if (platformConfig._bridge) {
|
|
350
414
|
// ensure the username is always uppercase
|
|
351
415
|
platformConfig._bridge.username = platformConfig._bridge.username.toUpperCase();
|
|
@@ -357,17 +421,17 @@ class Server {
|
|
|
357
421
|
return;
|
|
358
422
|
}
|
|
359
423
|
logger(`Initializing child bridge ${platformConfig._bridge.username}`);
|
|
360
|
-
const childBridge = new
|
|
424
|
+
const childBridge = new ChildBridgeService("platform" /* PluginType.PLATFORM */, platformIdentifier, plugin, platformConfig._bridge, this.config, this.options, this.api, this.ipcService, this.externalPortService);
|
|
361
425
|
this.childBridges.set(platformConfig._bridge.username, childBridge);
|
|
362
426
|
// add config to child bridge service
|
|
363
427
|
childBridge.addConfig(platformConfig);
|
|
364
428
|
return;
|
|
365
429
|
}
|
|
366
430
|
const platform = new constructor(logger, platformConfig, this.api);
|
|
367
|
-
if (
|
|
431
|
+
if (HomebridgeAPI.isDynamicPlatformPlugin(platform)) {
|
|
368
432
|
plugin.assignDynamicPlatform(platformIdentifier, platform);
|
|
369
433
|
}
|
|
370
|
-
else if (
|
|
434
|
+
else if (HomebridgeAPI.isStaticPlatformPlugin(platform)) { // Plugin 1.0, load accessories
|
|
371
435
|
promises.push(this.bridgeService.loadPlatformAccessories(plugin, platform, platformIdentifier, logger));
|
|
372
436
|
}
|
|
373
437
|
else {
|
|
@@ -381,26 +445,31 @@ class Server {
|
|
|
381
445
|
* Validate an external bridge config
|
|
382
446
|
*/
|
|
383
447
|
validateChildBridgeConfig(type, identifier, bridgeConfig) {
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
448
|
+
// All child bridges require username
|
|
449
|
+
if (!bridgeConfig.username) {
|
|
450
|
+
throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - `
|
|
451
|
+
+ 'Missing required field "_bridge.username".');
|
|
452
|
+
}
|
|
453
|
+
if (!validMacAddress(bridgeConfig.username)) {
|
|
454
|
+
throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - `
|
|
455
|
+
+ `not a valid username in _bridge.username: "${bridgeConfig.username}". Must be 6 pairs of colon-separated hexadecimal chars (A-F 0-9), like a MAC address.`);
|
|
387
456
|
}
|
|
388
457
|
if (this.childBridges.has(bridgeConfig.username)) {
|
|
389
458
|
const childBridge = this.childBridges.get(bridgeConfig.username);
|
|
390
459
|
if (type === "platform" /* PluginType.PLATFORM */) {
|
|
391
460
|
// only a single platform can exist on one child bridge
|
|
392
|
-
throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - `
|
|
393
|
-
`Duplicate username found in _bridge.username: "${bridgeConfig.username}". Each platform child bridge must have it's own unique username.`);
|
|
461
|
+
throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - `
|
|
462
|
+
+ `Duplicate username found in _bridge.username: "${bridgeConfig.username}". Each platform child bridge must have it's own unique username.`);
|
|
394
463
|
}
|
|
395
464
|
else if (childBridge?.identifier !== identifier) {
|
|
396
465
|
// only accessories of the same type can be added to the same child bridge
|
|
397
|
-
throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - `
|
|
398
|
-
`Duplicate username found in _bridge.username: "${bridgeConfig.username}". You can only group accessories of the same type in a child bridge.`);
|
|
466
|
+
throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - `
|
|
467
|
+
+ `Duplicate username found in _bridge.username: "${bridgeConfig.username}". You can only group accessories of the same type in a child bridge.`);
|
|
399
468
|
}
|
|
400
469
|
}
|
|
401
470
|
if (bridgeConfig.username === this.config.bridge.username.toUpperCase()) {
|
|
402
|
-
throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - `
|
|
403
|
-
`Username found in _bridge.username: "${bridgeConfig.username}" is the same as the main bridge. Each child bridge platform/accessory must have it's own unique username.`);
|
|
471
|
+
throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - `
|
|
472
|
+
+ `Username found in _bridge.username: "${bridgeConfig.username}" is the same as the main bridge. Each child bridge platform/accessory must have it's own unique username.`);
|
|
404
473
|
}
|
|
405
474
|
}
|
|
406
475
|
/**
|
|
@@ -411,47 +480,48 @@ class Server {
|
|
|
411
480
|
this.ipcService.start();
|
|
412
481
|
// handle restart child bridge event
|
|
413
482
|
this.ipcService.on("restartChildBridge" /* IpcIncomingEvent.RESTART_CHILD_BRIDGE */, (username) => {
|
|
414
|
-
|
|
483
|
+
// noinspection SuspiciousTypeOfGuard
|
|
484
|
+
if (typeof username === 'string') {
|
|
415
485
|
const childBridge = this.childBridges.get(username.toUpperCase());
|
|
416
486
|
childBridge?.restartChildBridge();
|
|
417
487
|
}
|
|
418
488
|
});
|
|
419
489
|
// handle stop child bridge event
|
|
420
490
|
this.ipcService.on("stopChildBridge" /* IpcIncomingEvent.STOP_CHILD_BRIDGE */, (username) => {
|
|
421
|
-
|
|
491
|
+
// noinspection SuspiciousTypeOfGuard
|
|
492
|
+
if (typeof username === 'string') {
|
|
422
493
|
const childBridge = this.childBridges.get(username.toUpperCase());
|
|
423
494
|
childBridge?.stopChildBridge();
|
|
424
495
|
}
|
|
425
496
|
});
|
|
426
497
|
// handle start child bridge event
|
|
427
498
|
this.ipcService.on("startChildBridge" /* IpcIncomingEvent.START_CHILD_BRIDGE */, (username) => {
|
|
428
|
-
|
|
499
|
+
// noinspection SuspiciousTypeOfGuard
|
|
500
|
+
if (typeof username === 'string') {
|
|
429
501
|
const childBridge = this.childBridges.get(username.toUpperCase());
|
|
430
502
|
childBridge?.startChildBridge();
|
|
431
503
|
}
|
|
432
504
|
});
|
|
433
|
-
this.ipcService.on("childBridgeMetadataRequest" /* IpcIncomingEvent.CHILD_BRIDGE_METADATA_REQUEST */, () => {
|
|
434
|
-
this.ipcService.sendMessage("childBridgeMetadataResponse" /* IpcOutgoingEvent.CHILD_BRIDGE_METADATA_RESPONSE */, Array.from(this.childBridges.values()).map(x => x.getMetadata()));
|
|
435
|
-
});
|
|
436
505
|
}
|
|
437
506
|
printSetupInfo(pin) {
|
|
438
|
-
console
|
|
507
|
+
/* eslint-disable no-console */
|
|
508
|
+
console.log('Setup Payload:');
|
|
439
509
|
console.log(this.bridgeService.bridge.setupURI());
|
|
440
510
|
if (!this.options.hideQRCode) {
|
|
441
|
-
console.log(
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
console.log(
|
|
511
|
+
console.log('Scan this code with your HomeKit app on your iOS device to pair with Homebridge:');
|
|
512
|
+
qrcode.setErrorLevel('M'); // HAP specifies level M or higher for ECC
|
|
513
|
+
qrcode.generate(this.bridgeService.bridge.setupURI());
|
|
514
|
+
console.log('Or enter this code with your HomeKit app on your iOS device to pair with Homebridge:');
|
|
445
515
|
}
|
|
446
516
|
else {
|
|
447
|
-
console.log(
|
|
517
|
+
console.log('Enter this code with your HomeKit app on your iOS device to pair with Homebridge:');
|
|
448
518
|
}
|
|
449
|
-
console.log(
|
|
450
|
-
console.log(
|
|
451
|
-
console.log(
|
|
452
|
-
console.log(
|
|
453
|
-
console.log(
|
|
519
|
+
console.log(chalk.black.bgWhite(' '));
|
|
520
|
+
console.log(chalk.black.bgWhite(' ┌────────────┐ '));
|
|
521
|
+
console.log(chalk.black.bgWhite(` │ ${pin} │ `));
|
|
522
|
+
console.log(chalk.black.bgWhite(' └────────────┘ '));
|
|
523
|
+
console.log(chalk.black.bgWhite(' '));
|
|
524
|
+
/* eslint-enable no-console */
|
|
454
525
|
}
|
|
455
526
|
}
|
|
456
|
-
exports.Server = Server;
|
|
457
527
|
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,MAAM,MAAM,iBAAiB,CAAA;AAEpC,OAAO,EAAE,aAAa,EAAgC,MAAM,UAAU,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAsC,UAAU,EAAsB,MAAM,iBAAiB,CAAA;AACpG,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAA;AAc3B,gDAAgD;AAChD,MAAM,CAAN,IAAkB,YAejB;AAfD,WAAkB,YAAY;IAC5B;;OAEG;IACH,mCAAmB,CAAA;IAEnB;;OAEG;IACH,yBAAS,CAAA;IAET;;OAEG;IACH,6BAAa,CAAA;AACf,CAAC,EAfiB,YAAY,KAAZ,YAAY,QAe7B;AAED,MAAM,OAAO,MAAM;IAqBP;IApBO,GAAG,CAAe;IAClB,aAAa,CAAe;IAC5B,aAAa,CAAe;IAC5B,UAAU,CAAY;IACtB,mBAAmB,CAAqB;IAExC,MAAM,CAAkB;IAEzC,sCAAsC;IACtC,oCAAoC;IACnB,YAAY,GAAoC,IAAI,GAAG,EAAE,CAAA;IAE1E,0DAA0D;IAC1D,8GAA8G;IACtG,aAAa,CAAsB;IAE3C,wBAAwB;IAChB,YAAY,wCAAqC;IAEzD,YACU,UAA6B,EAAE;QAA/B,YAAO,GAAP,OAAO,CAAwB;QAEvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;QAEjC,8CAA8C;QAC9C,IAAI,CAAC,GAAG,GAAG,IAAI,aAAa,EAAE,CAAA;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;QAElC,yDAAyD;QACzD,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE3F,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAA;QAErH,wBAAwB;QACxB,IAAI,CAAC,eAAe,sCAAsB,CAAA;QAE1C,4BAA4B;QAC5B,MAAM,oBAAoB,GAAyB;YACjD,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAClC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;YAC5C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;SACvD,CAAA;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;QAEtE,4BAA4B;QAC5B,MAAM,YAAY,GAAkB;YAClC,oBAAoB,EAAE,IAAI,CAAC,mBAAmB,EAAE;YAChD,yBAAyB,EAAE,mBAAmB;SAC/C,CAAA;QAED,mEAAmE;QACnE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAEzC,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CACpC,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,mBAAmB,EACxB,YAAY,EACZ,IAAI,CAAC,MAAM,CAAC,MAAM,CACnB,CAAA;QAED,+BAA+B;QAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,mBAAmB,CAC1C,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,OAAO,CACb,CAAA;QAED,qDAAqD;QACrD,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAE9C,yCAAyC;QACzC,IAAI,CAAC,GAAG,CAAC,EAAE,qFAAiD,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9G,IAAI,CAAC,GAAG,CAAC,EAAE,yFAAmD,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAElH,8CAA8C;QAC9C,IAAI,CAAC,GAAG,CAAC,EAAE,mFAAgD,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAE5G,8DAA8D;QAC9D,IAAI,CAAC,GAAG,CAAC,EAAE,gGAAuD,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACzH,IAAI,CAAC,GAAG,CAAC,EAAE,kGAAwD,IAAI,CAAC,uCAAuC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC3H,IAAI,CAAC,GAAG,CAAC,EAAE,8FAAsD,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACvH,IAAI,CAAC,GAAG,CAAC,EAAE,sGAA0D,IAAI,CAAC,yCAAyC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC/H,IAAI,CAAC,GAAG,CAAC,EAAE,sGAA0D,IAAI,CAAC,yCAAyC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC/H,IAAI,CAAC,GAAG,CAAC,EAAE,oFAAiD,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAE7G,qDAAqD;QACrD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,oDAAiC,GAAG,EAAE;YAChE,IAAI,CAAC,eAAe,4BAAiB,CAAA;QACvC,CAAC,CAAC,CAAA;QAEF,yDAAyD;QACzD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,4CAA6B,GAAG,EAAE;YAC5D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;QAEF,2DAA2D;QAC3D,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,gDAA+B,GAAG,EAAE;YAC9D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;OAGG;IACK,eAAe,CAAC,MAAoB;QAC1C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAA;QAE1B,MAAM,YAAY,GAAuB;YACvC,MAAM,EAAE,IAAI,CAAC,YAAY;YACzB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,IAAI;YACpE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,IAAI;YACxD,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;YAC7B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ;YACrC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;YAC3B,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;SACpE,CAAA;QAED,IAAI,CAAC,UAAU,CAAC,WAAW,mEAAwC,YAAY,CAAC,CAAA;IAClF,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3C,IAAI,CAAC,0BAA0B,EAAE,CAAA;QACnC,CAAC;QAED,MAAM,QAAQ,GAAoB,EAAE,CAAA;QAEpC,8BAA8B;QAC9B,MAAM,IAAI,CAAC,aAAa,CAAC,qCAAqC,EAAE,CAAA;QAEhE,qBAAqB;QACrB,MAAM,IAAI,CAAC,aAAa,CAAC,0BAA0B,EAAE,CAAA;QAErD,sDAAsD;QACtD,MAAM,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,CAAA;QAEtC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAA;QACxC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,eAAe,EAAE,CAAA;QACxB,CAAC;QAED,sBAAsB;QACtB,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YACrD,WAAW,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,aAAa,CAAC,gCAAgC,EAAE,CAAA;QACrD,IAAI,CAAC,aAAa,EAAE,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,6BAA6B,IAAI,KAAK,CAAC,CAAA;QAEjG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAA;QAEzB,mFAAmF;QACnF,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;aACxB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;QAE7B,iEAAiE;QACjE,MAAM,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAA;QAEpC,IAAI,CAAC,eAAe,gCAAmB,CAAA;IACzC,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAA;QAClC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC7C,CAAC;IAEO,gCAAgC,CAAC,WAAgC;QACvE,6CAA6C;QAC7C,0EAA0E;QAC1E,GAAG,CAAC,IAAI,CAAC,cAAc,WAAW,CAAC,MAAM,uBAAuB,CAAC,CAAA;IACnE,CAAC;IAED;;OAEG;IACK,sCAAsC,CAAC,WAA8B,EAAE,cAAsB;QACnG,IAAI,CAAC,aAAa,EAAE,gCAAgC,CAAC,WAAwC,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC7H,GAAG,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAA;YAClE,sDAAsD;YACtD,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,iCAAiC,CAAC,WAAgC;QACxE,sBAAsB;QACtB,IAAI,CAAC,aAAa,CAAC,iCAAiC,CAAC,WAAW,CAAC,CAAA;IACnE,CAAC;IAEO,mCAAmC,CAAC,WAAgC;QAC1E,sBAAsB;QACtB,IAAI,CAAC,aAAa,CAAC,mCAAmC,CAAC,WAAW,CAAC,CAAA;IACrE,CAAC;IAEO,uCAAuC,CAAC,gBAAwB,EAAE,YAAoB,EAAE,WAA8B;QAC5H,IAAI,CAAC,aAAa,EAAE,iCAAiC,CAAC,gBAAgB,EAAE,YAAY,EAAE,WAAwC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9I,GAAG,CAAC,KAAK,CAAC,6CAA6C,gBAAgB,GAAG,EAAE,KAAK,CAAC,CAAA;QACpF,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,qCAAqC,CAAC,WAA8B;QAC1E,IAAI,CAAC,aAAa,EAAE,+BAA+B,CAAC,WAAwC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5G,GAAG,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAA;QACnE,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,yCAAyC,CAAC,gBAAwB,EAAE,YAAoB,EAAE,WAA8B;QAC9H,IAAI,CAAC,aAAa,EAAE,mCAAmC,CAAC,gBAAgB,EAAE,YAAY,EAAE,WAAwC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAChJ,GAAG,CAAC,KAAK,CAAC,+CAA+C,gBAAgB,GAAG,EAAE,KAAK,CAAC,CAAA;QACtF,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,yCAAyC,CAAC,WAA8B;QAC9E,IAAI,CAAC,aAAa,EAAE,mCAAmC,CAAC,WAAwC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAChH,GAAG,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAA;QACvE,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,gCAAgC,CAAC,IAAY,EAAE,OAAe,EAAE,UAA+B,EAAE,MAAe;QACtH,IAAI,CAAC,aAAa,EAAE,0BAA0B,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAChG,GAAG,CAAC,KAAK,CAAC,+CAA+C,IAAI,GAAG,EAAE,KAAK,CAAC,CAAA;QAC1E,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,MAAM,CAAC,UAAU;QACvB,kCAAkC;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAEpC,MAAM,aAAa,GAAwB;YACzC,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,mBAAmB;YAC7B,GAAG,EAAE,YAAY;SAClB,CAAA;QAED,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAA;YACnD,OAAO;gBACL,MAAM,EAAE,aAAa;gBACrB,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,EAAE;aACd,CAAA;QACH,CAAC;QAED,IAAI,MAAiC,CAAA;QACrC,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QACrE,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAA;YAC/D,GAAG,CAAC,KAAK,CAAC,oFAAoF,CAAC,CAAA;YAC/F,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACb,MAAM,KAAK,CAAA;QACb,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBAC3C,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;oBAC1C,GAAG,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAA;oBAC3F,MAAM,CAAC,KAAK,GAAG,SAAS,CAAA;gBAC1B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,6FAA6F,CAAC,CAAA;gBACxG,MAAM,CAAC,KAAK,GAAG,SAAS,CAAA;YAC1B,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;gBACvD,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;oBACtD,GAAG,CAAC,KAAK,CAAC,uFAAuF,CAAC,CAAA;oBAClG,MAAM,CAAC,WAAW,GAAG,SAAS,CAAA;gBAChC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,mGAAmG,CAAC,CAAA;gBAC9G,MAAM,CAAC,WAAW,GAAG,SAAS,CAAA;YAChC,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAwB,MAAM,CAAC,MAAM,IAAI,aAAa,CAAA;QAClE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAA;QAC/C,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAA;QAC3D,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,aAAa,CAAC,GAAG,CAAA;QAC5C,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QAEtB,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAA;QACvC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,uFAAuF,CAAC,CAAA;QAC3I,CAAC;QAED,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAA;QAC7C,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAA;QAEzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAA;YAC9D,MAAM,CAAC,WAAW,GAAG,EAAE,CAAA;QACzB,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAA;YAC5D,MAAM,CAAC,SAAS,GAAG,EAAE,CAAA;QACvB,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,0DAA0D,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAExH,mDAAmD;QACnD,qBAAqB,CAAC,oBAAoB,CAAC,MAA0B,CAAC,CAAA;QAEtE,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC;;;;;aAKJ,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrC,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,SAAS,CAAA;gBACpC,GAAG,CAAC,KAAK,CAAC,kFAAkF,CAAC,CAAA;YAC/F,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,SAAS,CAAA;QACtC,CAAC;QAED,OAAO,MAA0B,CAAA;IACnC,CAAC;IAEO,eAAe;QACrB,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,iBAAiB,CAAC,CAAA;QAEpE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE;YACzD,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;gBAC/B,GAAG,CAAC,IAAI,CAAC,sFAAsF;sBAC3F,mDAAmD,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA,CAAC,gDAAgD;gBACpH,OAAM;YACR,CAAC;YAED,MAAM,mBAAmB,GAAwC,eAAe,CAAC,SAAS,CAAA;YAC1F,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAA;YACxC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,GAAG,CAAC,IAAI,CAAC,6FAA6F,EAAE,mBAAmB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBACvI,OAAM;YACR,CAAC;YAED,IAAI,MAAc,CAAA;YAClB,IAAI,WAAuC,CAAA;YAE3C,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAA;YACxE,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBACxB,OAAM;YACR,CAAC;YAED,mCAAmC;YACnC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,GAAG,CAAC,IAAI,CAAC,sCAAsC,mBAAmB,wCAAwC,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,CAAA;gBAC7J,OAAM;YACR,CAAC;YAED,IAAI,CAAC;gBACH,WAAW,GAAG,MAAM,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAA;YACnE,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,GAAG,CAAC,KAAK,CAAC,gCAAgC,mBAAmB,+CAA+C,KAAK,GAAG,CAAC,wCAAwC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAA;gBACrM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA,CAAC,+DAA+D;gBAChF,OAAM;YACR,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;YAC7C,MAAM,CAAC,8BAA8B,EAAE,mBAAmB,CAAC,CAAA;YAE3D,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;gBAC5B,0CAA0C;gBAC1C,eAAe,CAAC,OAAO,CAAC,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;gBAEjF,IAAI,CAAC;oBACH,IAAI,CAAC,yBAAyB,yCAAuB,mBAAmB,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;gBACpG,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;oBACxB,OAAM;gBACR,CAAC;gBAED,IAAI,WAA+B,CAAA;gBAEnC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5D,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAE,CAAA;oBACtE,MAAM,CAAC,mCAAmC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC/E,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,6BAA6B,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;oBACvE,WAAW,GAAG,IAAI,kBAAkB,yCAElC,mBAAmB,EACnB,MAAM,EACN,eAAe,CAAC,OAAO,EACvB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,mBAAmB,CACzB,CAAA;oBAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;gBACtE,CAAC;gBAED,qCAAqC;gBACrC,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;gBAEtC,OAAM;YACR,CAAC;YAED,MAAM,iBAAiB,GAAoB,IAAI,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;YAE7F,8IAA8I;YAC9I,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;YAE/I,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC;oBACH,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAA;gBAC1D,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,MAAM,CAAC,KAAK,CAAC,gCAAgC,mBAAmB,WAAW,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC3J,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,2EAA2E,EAAE,mBAAmB,CAAC,CAAA;YAC/G,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,aAAa;QACnB,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,eAAe,CAAC,CAAA;QAEhE,MAAM,QAAQ,GAAoB,EAAE,CAAA;QACpC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,KAAK,EAAE,EAAE;YACtD,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;gBAC7B,GAAG,CAAC,IAAI,CAAC,qFAAqF;sBAC1F,kDAAkD,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA,CAAC,gDAAgD;gBACnH,OAAM;YACR,CAAC;YAED,MAAM,kBAAkB,GAAsC,cAAc,CAAC,QAAQ,CAAA;YACrF,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,IAAI,kBAAkB,CAAA;YAE7D,IAAI,MAAc,CAAA;YAClB,IAAI,WAAsC,CAAA;YAE1C,kEAAkE;YAClE,IAAI,kBAAkB,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,GAAG,EAAE,CAAC;gBAC5E,OAAM;YACR,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAA;YACtE,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBACxB,OAAM;YACR,CAAC;YAED,mCAAmC;YACnC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,GAAG,CAAC,IAAI,CAAC,qCAAqC,kBAAkB,wCAAwC,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,CAAA;gBAC3J,OAAM;YACR,CAAC;YAED,IAAI,CAAC;gBACH,WAAW,GAAG,MAAM,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,CAAA;YACjE,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,GAAG,CAAC,KAAK,CAAC,+BAA+B,kBAAkB,+CAA+C,KAAK,GAAG,CAAC,wCAAwC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAA;gBACnM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA,CAAC,+DAA+D;gBAChF,OAAM;YACR,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;YAC7C,MAAM,CAAC,6BAA6B,EAAE,kBAAkB,CAAC,CAAA;YAEzD,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC3B,0CAA0C;gBAC1C,cAAc,CAAC,OAAO,CAAC,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;gBAE/E,IAAI,CAAC;oBACH,IAAI,CAAC,yBAAyB,uCAAsB,kBAAkB,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;gBACjG,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;oBACxB,OAAM;gBACR,CAAC;gBAED,MAAM,CAAC,6BAA6B,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;gBACtE,MAAM,WAAW,GAAG,IAAI,kBAAkB,uCAExC,kBAAkB,EAClB,MAAM,EACN,cAAc,CAAC,OAAO,EACtB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,mBAAmB,CACzB,CAAA;gBAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;gBAEnE,qCAAqC;gBACrC,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;gBACrC,OAAM;YACR,CAAC;YAED,MAAM,QAAQ,GAAmB,IAAI,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;YAElF,IAAI,aAAa,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpD,MAAM,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAA;YAC5D,CAAC;iBAAM,IAAI,aAAa,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,+BAA+B;gBAC1F,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAA;YACzG,CAAC;iBAAM,CAAC;gBACN,sFAAsF;gBACtF,sDAAsD;YACxD,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED;;OAEG;IACK,yBAAyB,CAAC,IAAgB,EAAE,UAAkB,EAAE,YAAiC;QACvG,qCAAqC;QACrC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,KAAK,UAAU,oCAAoC;kBAC1E,4CAA4C,CAC/C,CAAA;QACH,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,KAAK,UAAU,oCAAoC;kBAC1E,8CAA8C,YAAY,CAAC,QAAQ,wFAAwF,CAC9J,CAAA;QACH,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;YAChE,IAAI,IAAI,yCAAwB,EAAE,CAAC;gBACjC,uDAAuD;gBACvD,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,KAAK,UAAU,oCAAoC;sBAC1E,kDAAkD,YAAY,CAAC,QAAQ,mEAAmE,CAC7I,CAAA;YACH,CAAC;iBAAM,IAAI,WAAW,EAAE,UAAU,KAAK,UAAU,EAAE,CAAC;gBAClD,0EAA0E;gBAC1E,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,KAAK,UAAU,oCAAoC;sBAC1E,kDAAkD,YAAY,CAAC,QAAQ,uEAAuE,CACjJ,CAAA;YACH,CAAC;QACH,CAAC;QAED,IAAI,YAAY,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;YACxE,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,KAAK,UAAU,oCAAoC;kBAC1E,wCAAwC,YAAY,CAAC,QAAQ,4GAA4G,CAC5K,CAAA;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,0BAA0B;QAChC,oBAAoB;QACpB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAEvB,oCAAoC;QACpC,IAAI,CAAC,UAAU,CAAC,EAAE,mEAAwC,CAAC,QAAQ,EAAE,EAAE;YACrE,qCAAqC;YACrC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;gBACjE,WAAW,EAAE,kBAAkB,EAAE,CAAA;YACnC,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,iCAAiC;QACjC,IAAI,CAAC,UAAU,CAAC,EAAE,6DAAqC,CAAC,QAAQ,EAAE,EAAE;YAClE,qCAAqC;YACrC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;gBACjE,WAAW,EAAE,eAAe,EAAE,CAAA;YAChC,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,kCAAkC;QAClC,IAAI,CAAC,UAAU,CAAC,EAAE,+DAAsC,CAAC,QAAQ,EAAE,EAAE;YACnE,qCAAqC;YACrC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;gBACjE,WAAW,EAAE,gBAAgB,EAAE,CAAA;YACjC,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,cAAc,CAAC,GAAW;QAChC,+BAA+B;QAC/B,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;QAC7B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QAEjD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAA;YAC/F,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA,CAAC,0CAA0C;YACpE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;YACrD,OAAO,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAA;QACrG,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAA;QAClG,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAA;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAA;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAA;QACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAA;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAA;QAC3D,8BAA8B;IAChC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.spec.d.ts","sourceRoot":"","sources":["../src/server.spec.ts"],"names":[],"mappings":""}
|