matterbridge-example-dynamic-platform 3.0.3-dev-20260829-d83e6fe → 3.0.3
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/CHANGELOG.md +5 -2
- package/dist/module.js +30 -47
- package/npm-shrinkwrap.json +10 -10
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -29,12 +29,12 @@ If you like this project and find it useful, please consider giving it a star on
|
|
|
29
29
|
|
|
30
30
|
<a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="120"></a>
|
|
31
31
|
|
|
32
|
-
## [3.0.3] -
|
|
32
|
+
## [3.0.3] - 2026-08-30
|
|
33
33
|
|
|
34
34
|
### Breaking changes
|
|
35
35
|
|
|
36
36
|
- [matterbridge]: Require matterbridge v.3.10.7 with matter v.1.6.0.
|
|
37
|
-
- [fanControl]: Matterbridge v.3.10.
|
|
37
|
+
- [fanControl]: Matterbridge v.3.10.7 now manages the compliant FanControl `fanMode` and `percentSetting` synchronization; plugins now only update `percentCurrent` as physical device feedback from `fanMode` and `percentSetting`.
|
|
38
38
|
|
|
39
39
|
### Added
|
|
40
40
|
|
|
@@ -48,6 +48,8 @@ If you like this project and find it useful, please consider giving it a star on
|
|
|
48
48
|
- [package]: Bump `@types/node` to v.26.4.0.
|
|
49
49
|
- [package]: Bump `oxfmt` to v.0.65.0.
|
|
50
50
|
- [package]: Bump `oxlint` to v.1.80.0.
|
|
51
|
+
- [package]: Bump `node-ansi-logger` to v.3.3.1.
|
|
52
|
+
- [package]: Bump `node-persist-manager` to v.2.1.1.
|
|
51
53
|
|
|
52
54
|
### Fixed
|
|
53
55
|
|
|
@@ -57,6 +59,7 @@ If you like this project and find it useful, please consider giving it a star on
|
|
|
57
59
|
- [devices]: Update `RoboticVacuumCleaner`, `Oven.addCabinet`, `Cooktop.addSurface`, and `Refrigerator.addCabinet` to the options object form, removing the last `typescript/no-deprecated` oxlint suppressions in the platform.
|
|
58
60
|
- [platform]: Make the local `addDevice` helper generic (`addDevice<T extends MatterbridgeEndpoint>`) so it returns the same subclass it was given, removing 9 `typescript/no-unsafe-type-assertion` oxlint suppressions at its call sites.
|
|
59
61
|
- [platform]: Type `initializePlugin`'s `config` parameter directly as `DynamicPlatformConfig`, matching the pattern used in production plugins, removing the last `typescript/no-unsafe-type-assertion` cast on plugin startup.
|
|
62
|
+
- [illuminance]: `luxToMatter`/`matterToLux` were missing the `+ 1` offset required by the Matter spec's `MeasuredValue = 10,000 x log10(illuminance) + 1` formula (Matter 1.6.0 § 2.2.5.1); every encoded illuminance value was off by 1. Fixed and aligned with the corrected implementation in matterbridge's `packages/utils`.
|
|
60
63
|
|
|
61
64
|
<a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a>
|
|
62
65
|
|
package/dist/module.js
CHANGED
|
@@ -2,26 +2,20 @@ import { aggregator, airPurifier, airQualitySensor, bridgedNode, closure, colorT
|
|
|
2
2
|
import { AirConditioner, BasicVideoPlayer, BatteryStorage, Closure, Cooktop, Dishwasher, Evse, ExtractorHood, HeatPump, IrrigationSystem, LaundryDryer, LaundryWasher, MatterbridgeClosureControlServer, MicrowaveOven, Oven, Refrigerator, RoboticVacuumCleaner, SoilSensor, SolarPower, Speaker, WaterHeater, } from 'matterbridge/devices';
|
|
3
3
|
import { debugStringify } from 'matterbridge/logger';
|
|
4
4
|
import { ClosureCoveringTag, ClosurePanelTag, ClosureTag, ClosureWindowTag, CommonAreaNamespaceTag, CommonLocationTag, CommonNumberTag, CommonPositionTag, RefrigeratorTag, SwitchesTag, UINT16_MAX, UINT32_MAX, } from 'matterbridge/matter';
|
|
5
|
-
import { AirQuality, BooleanState, BridgedDeviceBasicInformation, CarbonDioxideConcentrationMeasurement, CarbonMonoxideConcentrationMeasurement, ClosureControl, ClosureDimension, ColorControl,
|
|
5
|
+
import { AirQuality, BooleanState, BridgedDeviceBasicInformation, CarbonDioxideConcentrationMeasurement, CarbonMonoxideConcentrationMeasurement, ClosureControl, ClosureDimension, ColorControl, DeviceEnergyManagement, DoorLock, ElectricalEnergyMeasurement, ElectricalPowerMeasurement, EnergyEvse, EnergyEvseMode, FanControl, FlowMeasurement, FormaldehydeConcentrationMeasurement, Identify, IlluminanceMeasurement, LevelControl, NitrogenDioxideConcentrationMeasurement, OccupancySensing, OnOff, OperationalState, OvenMode, OzoneConcentrationMeasurement, Pm1ConcentrationMeasurement, Pm10ConcentrationMeasurement, Pm25ConcentrationMeasurement, PowerSource, PressureMeasurement, RadonConcentrationMeasurement, RelativeHumidityMeasurement, RvcCleanMode, RvcOperationalState, RvcRunMode, SmokeCoAlarm, TemperatureMeasurement, Thermostat, TotalVolatileOrganicCompoundsConcentrationMeasurement, WindowCovering, } from 'matterbridge/matter/clusters';
|
|
6
6
|
import { ThreeLevelAuto } from 'matterbridge/matter/types';
|
|
7
|
-
import { fireAndForget, getEnumDescription, isValidBoolean, isValidNumber, isValidObject, isValidString } from 'matterbridge/utils';
|
|
7
|
+
import { fireAndForget, getEnumDescription, isValidBoolean, isValidNumber, isValidObject, isValidString, parseVersionString } from 'matterbridge/utils';
|
|
8
8
|
function luxToMatter(lux) {
|
|
9
|
-
if (!Number.isFinite(lux) || lux
|
|
9
|
+
if (!Number.isFinite(lux) || lux < 1)
|
|
10
10
|
return 0;
|
|
11
|
-
const encoded = 10000 * Math.log10(lux);
|
|
12
|
-
|
|
13
|
-
return 0;
|
|
14
|
-
return Math.round(Math.min(encoded, 0xfffe));
|
|
11
|
+
const encoded = Math.round(10000 * Math.log10(lux) + 1);
|
|
12
|
+
return Math.min(encoded, 0xfffe);
|
|
15
13
|
}
|
|
16
14
|
function matterToLux(value) {
|
|
17
15
|
if (!Number.isFinite(value) || value <= 0)
|
|
18
16
|
return 0;
|
|
19
17
|
const v = Math.min(value, 0xfffe);
|
|
20
|
-
|
|
21
|
-
return Math.round(lux < 0 ? 0 : lux);
|
|
22
|
-
}
|
|
23
|
-
function isDeviceTypeList(value) {
|
|
24
|
-
return Array.isArray(value);
|
|
18
|
+
return Math.round(Math.pow(10, (v - 1) / 10000));
|
|
25
19
|
}
|
|
26
20
|
export default function initializePlugin(matterbridge, log, config) {
|
|
27
21
|
return new ExampleMatterbridgeDynamicPlatform(matterbridge, log, config);
|
|
@@ -1319,16 +1313,16 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
|
|
|
1319
1313
|
const lookupSystemMode = ['Off', 'Auto', '', 'Cool', 'Heat', 'EmergencyHeat', 'Precooling', 'FanOnly', 'Dry', 'Sleep'];
|
|
1320
1314
|
this.thermoAutoSchedules?.log.info(`Subscribe systemMode called with: ${lookupSystemMode[newValue]} (old value: ${lookupSystemMode[oldValue]})`);
|
|
1321
1315
|
}, this.thermoAutoSchedules.log);
|
|
1322
|
-
this.thermoAutoSchedules?.subscribeAttribute(Thermostat
|
|
1316
|
+
this.thermoAutoSchedules?.subscribeAttribute(Thermostat, 'occupiedHeatingSetpoint', (newValue, oldValue) => {
|
|
1323
1317
|
this.thermoAutoSchedules?.log.info(`Subscribe occupiedHeatingSetpoint called with: ${newValue / 100} (old value: ${oldValue / 100})`);
|
|
1324
1318
|
}, this.thermoAutoSchedules.log);
|
|
1325
|
-
this.thermoAutoSchedules?.subscribeAttribute(Thermostat
|
|
1319
|
+
this.thermoAutoSchedules?.subscribeAttribute(Thermostat, 'occupiedCoolingSetpoint', (newValue, oldValue) => {
|
|
1326
1320
|
this.thermoAutoSchedules?.log.info(`Subscribe occupiedCoolingSetpoint called with: ${newValue / 100} (old value: ${oldValue / 100})`);
|
|
1327
1321
|
}, this.thermoAutoSchedules.log);
|
|
1328
|
-
this.thermoAutoSchedules?.subscribeAttribute(Thermostat
|
|
1322
|
+
this.thermoAutoSchedules?.subscribeAttribute(Thermostat, 'activeScheduleHandle', (newValue, oldValue) => {
|
|
1329
1323
|
this.thermoAutoSchedules?.log.info(`Subscribe activeScheduleHandle called with: ${newValue ? `0x${Buffer.from(newValue).toString('hex')}` : 'null'} (old value: ${oldValue ? `0x${Buffer.from(oldValue).toString('hex')}` : 'null'})`);
|
|
1330
1324
|
}, this.thermoAutoSchedules.log);
|
|
1331
|
-
this.thermoAutoSchedules?.subscribeAttribute(Thermostat
|
|
1325
|
+
this.thermoAutoSchedules?.subscribeAttribute(Thermostat, 'schedules', (newValue, oldValue) => {
|
|
1332
1326
|
this.thermoAutoSchedules?.log.info(`Subscribe schedules called with: ${debugStringify(newValue)} (old value: ${debugStringify(oldValue)})`);
|
|
1333
1327
|
}, this.thermoAutoSchedules.log);
|
|
1334
1328
|
this.thermoHeat = new MatterbridgeEndpoint([thermostat, bridgedNode, powerSource], { id: 'Thermostat (Heat)' }, this.config.debug)
|
|
@@ -1366,7 +1360,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
|
|
|
1366
1360
|
const lookupSystemMode = ['Off', 'Auto', '', 'Cool', 'Heat', 'EmergencyHeat', 'Precooling', 'FanOnly', 'Dry', 'Sleep'];
|
|
1367
1361
|
this.thermoHeat?.log.info('Subscribe systemMode called with:', lookupSystemMode[value]);
|
|
1368
1362
|
}, this.thermoHeat.log);
|
|
1369
|
-
this.thermoHeat?.subscribeAttribute(Thermostat
|
|
1363
|
+
this.thermoHeat?.subscribeAttribute(Thermostat, 'occupiedHeatingSetpoint', (value) => {
|
|
1370
1364
|
this.thermoHeat?.log.info('Subscribe occupiedHeatingSetpoint called with:', value / 100);
|
|
1371
1365
|
}, this.thermoHeat.log);
|
|
1372
1366
|
this.thermoCool = new MatterbridgeEndpoint([thermostat, bridgedNode, powerSource], { id: 'Thermostat (Cool)' }, this.config.debug)
|
|
@@ -1386,7 +1380,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
|
|
|
1386
1380
|
const lookupSystemMode = ['Off', 'Auto', '', 'Cool', 'Heat', 'EmergencyHeat', 'Precooling', 'FanOnly', 'Dry', 'Sleep'];
|
|
1387
1381
|
this.thermoCool?.log.info('Subscribe systemMode called with:', lookupSystemMode[value]);
|
|
1388
1382
|
}, this.thermoCool.log);
|
|
1389
|
-
this.thermoCool?.subscribeAttribute(Thermostat
|
|
1383
|
+
this.thermoCool?.subscribeAttribute(Thermostat, 'occupiedCoolingSetpoint', (value) => {
|
|
1390
1384
|
this.thermoCool?.log.info('Subscribe occupiedCoolingSetpoint called with:', value / 100);
|
|
1391
1385
|
}, this.thermoCool.log);
|
|
1392
1386
|
this.airPurifier = new MatterbridgeEndpoint([airPurifier, bridgedNode, powerSource], { id: 'Air purifier' }, this.config.debug)
|
|
@@ -1411,10 +1405,10 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
|
|
|
1411
1405
|
this.airPurifier?.addCommandHandler('identify', ({ request: { identifyTime } }) => {
|
|
1412
1406
|
this.airPurifier?.log.info(`Command identify called identifyTime:${identifyTime}`);
|
|
1413
1407
|
});
|
|
1414
|
-
this.airPurifier?.subscribeAttribute(FanControl
|
|
1408
|
+
this.airPurifier?.subscribeAttribute(FanControl, 'fanMode', (newValue, oldValue, context) => {
|
|
1415
1409
|
this.airPurifier?.log.info(`Fan mode changed from ${this.fanModeLookup[oldValue]} to ${this.fanModeLookup[newValue]} context: ${context.fabric === undefined ? 'offline' : 'online'}`);
|
|
1416
1410
|
}, this.airPurifier.log);
|
|
1417
|
-
this.airPurifier?.subscribeAttribute(FanControl
|
|
1411
|
+
this.airPurifier?.subscribeAttribute(FanControl, 'percentSetting', (newValue, oldValue, context) => void (async () => {
|
|
1418
1412
|
this.airPurifier?.log.info(`Percent setting changed from ${oldValue} to ${newValue} context: ${context.fabric === undefined ? 'offline' : 'online'}`);
|
|
1419
1413
|
if (context.fabric === undefined)
|
|
1420
1414
|
return;
|
|
@@ -1941,10 +1935,10 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
|
|
|
1941
1935
|
await this.airConditioner?.setAttribute(RelativeHumidityMeasurement.id, 'measuredValue', null, this.airConditioner?.log);
|
|
1942
1936
|
await this.airConditioner?.setAttribute(FanControl.id, 'percentSetting', 0, this.airConditioner?.log);
|
|
1943
1937
|
});
|
|
1944
|
-
this.airConditioner?.subscribeAttribute(FanControl
|
|
1938
|
+
this.airConditioner?.subscribeAttribute(FanControl, 'fanMode', (newValue, oldValue, context) => {
|
|
1945
1939
|
this.airConditioner?.log.info(`Fan mode changed from ${this.fanModeLookup[oldValue]} to ${this.fanModeLookup[newValue]} context: ${context.fabric === undefined ? 'offline' : 'online'}`);
|
|
1946
1940
|
}, this.airConditioner?.log);
|
|
1947
|
-
this.airConditioner?.subscribeAttribute(FanControl
|
|
1941
|
+
this.airConditioner?.subscribeAttribute(FanControl, 'percentSetting', (newValue, oldValue, context) => void (async () => {
|
|
1948
1942
|
this.airConditioner?.log.info(`Percent setting changed from ${oldValue} to ${newValue} context: ${context.fabric === undefined ? 'offline' : 'online'}`);
|
|
1949
1943
|
if (context.fabric === undefined)
|
|
1950
1944
|
return;
|
|
@@ -2564,18 +2558,18 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
|
|
|
2564
2558
|
if (this.config.useInterval) {
|
|
2565
2559
|
this.addInterval(async () => {
|
|
2566
2560
|
let mode = this.fanDefault?.getAttribute(FanControl, 'fanMode', this.fanDefault.log);
|
|
2567
|
-
let
|
|
2568
|
-
if (isValidNumber(mode, FanControl.FanMode.Off, FanControl.FanMode.Auto) && mode === FanControl.FanMode.Auto && isValidNumber(
|
|
2569
|
-
|
|
2570
|
-
await this.fanDefault?.setAttribute(FanControl, 'percentCurrent',
|
|
2571
|
-
this.fanDefault?.log.info(`Set fan percentCurrent to ${
|
|
2561
|
+
let current = this.fanDefault?.getAttribute(FanControl, 'percentCurrent', this.fanDefault.log);
|
|
2562
|
+
if (isValidNumber(mode, FanControl.FanMode.Off, FanControl.FanMode.Auto) && mode === FanControl.FanMode.Auto && isValidNumber(current, 0, 100)) {
|
|
2563
|
+
current = current + 10 >= 100 ? 0 : current + 10;
|
|
2564
|
+
await this.fanDefault?.setAttribute(FanControl, 'percentCurrent', current, this.fanDefault.log);
|
|
2565
|
+
this.fanDefault?.log.info(`Set fan percentCurrent to ${current}`);
|
|
2572
2566
|
}
|
|
2573
2567
|
mode = this.fanComplete?.getAttribute(FanControl, 'fanMode', this.fanComplete.log);
|
|
2574
|
-
|
|
2575
|
-
if (isValidNumber(mode, FanControl.FanMode.Off, FanControl.FanMode.Auto) && mode === FanControl.FanMode.Auto && isValidNumber(
|
|
2576
|
-
|
|
2577
|
-
await this.fanComplete?.setAttribute(FanControl, 'percentCurrent',
|
|
2578
|
-
this.fanComplete?.log.info(`Set fan percentCurrent to ${
|
|
2568
|
+
current = this.fanComplete?.getAttribute(FanControl, 'percentCurrent', this.fanComplete.log);
|
|
2569
|
+
if (isValidNumber(mode, FanControl.FanMode.Off, FanControl.FanMode.Auto) && mode === FanControl.FanMode.Auto && isValidNumber(current, 0, 100)) {
|
|
2570
|
+
current = current + 10 >= 100 ? 0 : current + 10;
|
|
2571
|
+
await this.fanComplete?.setAttribute(FanControl, 'percentCurrent', current, this.fanComplete.log);
|
|
2572
|
+
this.fanComplete?.log.info(`Set fan percentCurrent to ${current}`);
|
|
2579
2573
|
}
|
|
2580
2574
|
}, 60 * 1000 + 700);
|
|
2581
2575
|
}
|
|
@@ -2699,14 +2693,14 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
|
|
|
2699
2693
|
return undefined;
|
|
2700
2694
|
this.setSelectDevice(device.serialNumber, device.deviceName, undefined, 'hub');
|
|
2701
2695
|
if (this.validateDevice(device.deviceName)) {
|
|
2702
|
-
device.softwareVersion =
|
|
2696
|
+
device.softwareVersion = parseVersionString(this.version);
|
|
2703
2697
|
device.softwareVersionString = this.version === '' ? 'Unknown' : this.version;
|
|
2704
|
-
device.hardwareVersion =
|
|
2698
|
+
device.hardwareVersion = parseVersionString(this.matterbridge.matterbridgeVersion);
|
|
2705
2699
|
device.hardwareVersionString = this.matterbridge.matterbridgeVersion;
|
|
2706
2700
|
device.softwareVersion = isValidNumber(device.softwareVersion, 0, UINT32_MAX) ? device.softwareVersion : undefined;
|
|
2707
|
-
device.softwareVersionString = isValidString(device.softwareVersionString) ? device.softwareVersionString.slice(0, 64) : undefined;
|
|
2701
|
+
device.softwareVersionString = isValidString(device.softwareVersionString, 1) ? device.softwareVersionString.slice(0, 64) : undefined;
|
|
2708
2702
|
device.hardwareVersion = isValidNumber(device.hardwareVersion, 0, UINT16_MAX) ? device.hardwareVersion : undefined;
|
|
2709
|
-
device.hardwareVersionString = isValidString(device.hardwareVersionString) ? device.hardwareVersionString.slice(0, 64) : undefined;
|
|
2703
|
+
device.hardwareVersionString = isValidString(device.hardwareVersionString, 1) ? device.hardwareVersionString.slice(0, 64) : undefined;
|
|
2710
2704
|
const options = device.getClusterServerOptions(BridgedDeviceBasicInformation.id);
|
|
2711
2705
|
if (options) {
|
|
2712
2706
|
options.softwareVersion = device.softwareVersion ?? 1;
|
|
@@ -2714,17 +2708,6 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
|
|
|
2714
2708
|
options.hardwareVersion = device.hardwareVersion ?? 1;
|
|
2715
2709
|
options.hardwareVersionString = device.hardwareVersionString ?? '1.0.0';
|
|
2716
2710
|
}
|
|
2717
|
-
if (device.mode === undefined && !device.deviceTypes.has(bridgedNode.code)) {
|
|
2718
|
-
device.deviceTypes.set(bridgedNode.code, bridgedNode);
|
|
2719
|
-
const options = device.getClusterServerOptions(Descriptor);
|
|
2720
|
-
const deviceTypeList = options?.deviceTypeList;
|
|
2721
|
-
if (isDeviceTypeList(deviceTypeList)) {
|
|
2722
|
-
if (!deviceTypeList.find((dt) => dt.deviceType === bridgedNode.code)) {
|
|
2723
|
-
deviceTypeList.push({ deviceType: bridgedNode.code, revision: bridgedNode.revision });
|
|
2724
|
-
}
|
|
2725
|
-
}
|
|
2726
|
-
device.createDefaultBridgedDeviceBasicInformationClusterServer(device.deviceName, device.serialNumber, device.vendorId, device.vendorName, device.productName, device.softwareVersion, device.softwareVersionString, device.hardwareVersion, device.hardwareVersionString);
|
|
2727
|
-
}
|
|
2728
2711
|
await this.registerDevice(device);
|
|
2729
2712
|
return device;
|
|
2730
2713
|
}
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "matterbridge-example-dynamic-platform",
|
|
3
|
-
"version": "3.0.3
|
|
3
|
+
"version": "3.0.3",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "matterbridge-example-dynamic-platform",
|
|
9
|
-
"version": "3.0.3
|
|
9
|
+
"version": "3.0.3",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"node-ansi-logger": "3.3.
|
|
13
|
-
"node-persist-manager": "2.1.
|
|
12
|
+
"node-ansi-logger": "3.3.1",
|
|
13
|
+
"node-persist-manager": "2.1.1"
|
|
14
14
|
},
|
|
15
15
|
"engines": {
|
|
16
16
|
"node": ">=20.19.0 <21.0.0 || >=22.13.0 <23.0.0 || >=24.0.0 <25.0.0 || >=26.0.0 <27.0.0"
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
"node_modules/node-ansi-logger": {
|
|
24
|
-
"version": "3.3.
|
|
25
|
-
"resolved": "https://registry.npmjs.org/node-ansi-logger/-/node-ansi-logger-3.3.
|
|
26
|
-
"integrity": "sha512-
|
|
24
|
+
"version": "3.3.1",
|
|
25
|
+
"resolved": "https://registry.npmjs.org/node-ansi-logger/-/node-ansi-logger-3.3.1.tgz",
|
|
26
|
+
"integrity": "sha512-JjkQHtVKgyd5Ua4AkYCFsZZiUYMrPsj/S9k2VY8/FjYuFJFRjDawsuxMwaThhWu4oU7zwuqvDG2uoDnjUyApVw==",
|
|
27
27
|
"hasShrinkwrap": true,
|
|
28
28
|
"license": "Apache-2.0",
|
|
29
29
|
"engines": {
|
|
@@ -35,9 +35,9 @@
|
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
37
|
"node_modules/node-persist-manager": {
|
|
38
|
-
"version": "2.1.
|
|
39
|
-
"resolved": "https://registry.npmjs.org/node-persist-manager/-/node-persist-manager-2.1.
|
|
40
|
-
"integrity": "sha512-
|
|
38
|
+
"version": "2.1.1",
|
|
39
|
+
"resolved": "https://registry.npmjs.org/node-persist-manager/-/node-persist-manager-2.1.1.tgz",
|
|
40
|
+
"integrity": "sha512-cAqF2spTnzDSAQeORHy/OYdD1VROGZ6UiLjmq/gVxQ4EglB0Ro0QX83U+xHEh2G6b7HTvGFqjS/R9LTOGkcayw==",
|
|
41
41
|
"hasShrinkwrap": true,
|
|
42
42
|
"license": "Apache-2.0",
|
|
43
43
|
"dependencies": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "matterbridge-example-dynamic-platform",
|
|
3
|
-
"version": "3.0.3
|
|
3
|
+
"version": "3.0.3",
|
|
4
4
|
"description": "Matterbridge dynamic plugin",
|
|
5
5
|
"author": "https://github.com/Luligu",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"*.schema.json"
|
|
69
69
|
],
|
|
70
70
|
"dependencies": {
|
|
71
|
-
"node-ansi-logger": "3.3.
|
|
72
|
-
"node-persist-manager": "2.1.
|
|
71
|
+
"node-ansi-logger": "3.3.1",
|
|
72
|
+
"node-persist-manager": "2.1.1"
|
|
73
73
|
}
|
|
74
74
|
}
|