matterbridge 3.4.7-dev-20260112-bd9e311 → 3.4.7
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 +4 -0
- package/README-MACOS-PLIST.md +2 -4
- package/dist/broadcastServer.d.ts +115 -0
- package/dist/broadcastServer.d.ts.map +1 -0
- package/dist/broadcastServer.js +117 -0
- package/dist/broadcastServer.js.map +1 -0
- package/dist/broadcastServerTypes.d.ts +43 -0
- package/dist/broadcastServerTypes.d.ts.map +1 -0
- package/dist/broadcastServerTypes.js +24 -0
- package/dist/broadcastServerTypes.js.map +1 -0
- package/dist/cli.d.ts +24 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +97 -1
- package/dist/cli.js.map +1 -0
- package/dist/cliEmitter.d.ts +36 -0
- package/dist/cliEmitter.d.ts.map +1 -0
- package/dist/cliEmitter.js +37 -0
- package/dist/cliEmitter.js.map +1 -0
- package/dist/cliHistory.d.ts +42 -0
- package/dist/cliHistory.d.ts.map +1 -0
- package/dist/cliHistory.js +38 -0
- package/dist/cliHistory.js.map +1 -0
- package/dist/clusters/export.d.ts +1 -0
- package/dist/clusters/export.d.ts.map +1 -0
- package/dist/clusters/export.js +2 -0
- package/dist/clusters/export.js.map +1 -0
- package/dist/deviceManager.d.ts +108 -0
- package/dist/deviceManager.d.ts.map +1 -0
- package/dist/deviceManager.js +113 -1
- package/dist/deviceManager.js.map +1 -0
- package/dist/devices/airConditioner.d.ts +75 -0
- package/dist/devices/airConditioner.d.ts.map +1 -0
- package/dist/devices/airConditioner.js +57 -0
- package/dist/devices/airConditioner.js.map +1 -0
- package/dist/devices/batteryStorage.d.ts +43 -0
- package/dist/devices/batteryStorage.d.ts.map +1 -0
- package/dist/devices/batteryStorage.js +48 -1
- package/dist/devices/batteryStorage.js.map +1 -0
- package/dist/devices/cooktop.d.ts +55 -0
- package/dist/devices/cooktop.d.ts.map +1 -0
- package/dist/devices/cooktop.js +56 -0
- package/dist/devices/cooktop.js.map +1 -0
- package/dist/devices/dishwasher.d.ts +55 -0
- package/dist/devices/dishwasher.d.ts.map +1 -0
- package/dist/devices/dishwasher.js +57 -0
- package/dist/devices/dishwasher.js.map +1 -0
- package/dist/devices/evse.d.ts +57 -0
- package/dist/devices/evse.d.ts.map +1 -0
- package/dist/devices/evse.js +74 -10
- package/dist/devices/evse.js.map +1 -0
- package/dist/devices/export.d.ts +1 -0
- package/dist/devices/export.d.ts.map +1 -0
- package/dist/devices/export.js +5 -0
- package/dist/devices/export.js.map +1 -0
- package/dist/devices/extractorHood.d.ts +41 -0
- package/dist/devices/extractorHood.d.ts.map +1 -0
- package/dist/devices/extractorHood.js +43 -0
- package/dist/devices/extractorHood.js.map +1 -0
- package/dist/devices/heatPump.d.ts +43 -0
- package/dist/devices/heatPump.d.ts.map +1 -0
- package/dist/devices/heatPump.js +50 -2
- package/dist/devices/heatPump.js.map +1 -0
- package/dist/devices/laundryDryer.d.ts +58 -0
- package/dist/devices/laundryDryer.d.ts.map +1 -0
- package/dist/devices/laundryDryer.js +62 -3
- package/dist/devices/laundryDryer.js.map +1 -0
- package/dist/devices/laundryWasher.d.ts +64 -0
- package/dist/devices/laundryWasher.d.ts.map +1 -0
- package/dist/devices/laundryWasher.js +70 -4
- package/dist/devices/laundryWasher.js.map +1 -0
- package/dist/devices/microwaveOven.d.ts +77 -1
- package/dist/devices/microwaveOven.d.ts.map +1 -0
- package/dist/devices/microwaveOven.js +88 -5
- package/dist/devices/microwaveOven.js.map +1 -0
- package/dist/devices/oven.d.ts +82 -0
- package/dist/devices/oven.d.ts.map +1 -0
- package/dist/devices/oven.js +85 -0
- package/dist/devices/oven.js.map +1 -0
- package/dist/devices/refrigerator.d.ts +100 -0
- package/dist/devices/refrigerator.d.ts.map +1 -0
- package/dist/devices/refrigerator.js +102 -0
- package/dist/devices/refrigerator.js.map +1 -0
- package/dist/devices/roboticVacuumCleaner.d.ts +83 -0
- package/dist/devices/roboticVacuumCleaner.d.ts.map +1 -0
- package/dist/devices/roboticVacuumCleaner.js +100 -9
- package/dist/devices/roboticVacuumCleaner.js.map +1 -0
- package/dist/devices/solarPower.d.ts +36 -0
- package/dist/devices/solarPower.d.ts.map +1 -0
- package/dist/devices/solarPower.js +38 -0
- package/dist/devices/solarPower.js.map +1 -0
- package/dist/devices/speaker.d.ts +79 -0
- package/dist/devices/speaker.d.ts.map +1 -0
- package/dist/devices/speaker.js +84 -0
- package/dist/devices/speaker.js.map +1 -0
- package/dist/devices/temperatureControl.d.ts +21 -0
- package/dist/devices/temperatureControl.d.ts.map +1 -0
- package/dist/devices/temperatureControl.js +24 -3
- package/dist/devices/temperatureControl.js.map +1 -0
- package/dist/devices/waterHeater.d.ts +74 -0
- package/dist/devices/waterHeater.d.ts.map +1 -0
- package/dist/devices/waterHeater.js +82 -2
- package/dist/devices/waterHeater.js.map +1 -0
- package/dist/dgram/coap.d.ts +171 -0
- package/dist/dgram/coap.d.ts.map +1 -0
- package/dist/dgram/coap.js +126 -13
- package/dist/dgram/coap.js.map +1 -0
- package/dist/dgram/dgram.d.ts +99 -0
- package/dist/dgram/dgram.d.ts.map +1 -0
- package/dist/dgram/dgram.js +114 -2
- package/dist/dgram/dgram.js.map +1 -0
- package/dist/dgram/mb_coap.d.ts +23 -0
- package/dist/dgram/mb_coap.d.ts.map +1 -0
- package/dist/dgram/mb_coap.js +41 -3
- package/dist/dgram/mb_coap.js.map +1 -0
- package/dist/dgram/mb_mdns.d.ts +23 -0
- package/dist/dgram/mb_mdns.d.ts.map +1 -0
- package/dist/dgram/mb_mdns.js +80 -24
- package/dist/dgram/mb_mdns.js.map +1 -0
- package/dist/dgram/mdns.d.ts +187 -4
- package/dist/dgram/mdns.d.ts.map +1 -0
- package/dist/dgram/mdns.js +371 -139
- package/dist/dgram/mdns.js.map +1 -0
- package/dist/dgram/multicast.d.ts +49 -0
- package/dist/dgram/multicast.d.ts.map +1 -0
- package/dist/dgram/multicast.js +62 -1
- package/dist/dgram/multicast.js.map +1 -0
- package/dist/dgram/unicast.d.ts +53 -0
- package/dist/dgram/unicast.d.ts.map +1 -0
- package/dist/dgram/unicast.js +60 -0
- package/dist/dgram/unicast.js.map +1 -0
- package/dist/frontend.d.ts +187 -0
- package/dist/frontend.d.ts.map +1 -0
- package/dist/frontend.js +485 -38
- package/dist/frontend.js.map +1 -0
- package/dist/frontendTypes.d.ts +57 -0
- package/dist/frontendTypes.d.ts.map +1 -0
- package/dist/frontendTypes.js +45 -0
- package/dist/frontendTypes.js.map +1 -0
- package/dist/helpers.d.ts +43 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +53 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/jestutils/export.d.ts +1 -0
- package/dist/jestutils/export.d.ts.map +1 -0
- package/dist/jestutils/export.js +1 -0
- package/dist/jestutils/export.js.map +1 -0
- package/dist/jestutils/jestHelpers.d.ts +255 -0
- package/dist/jestutils/jestHelpers.d.ts.map +1 -0
- package/dist/jestutils/jestHelpers.js +371 -14
- package/dist/jestutils/jestHelpers.js.map +1 -0
- package/dist/logger/export.d.ts +1 -0
- package/dist/logger/export.d.ts.map +1 -0
- package/dist/logger/export.js +1 -0
- package/dist/logger/export.js.map +1 -0
- package/dist/matter/behaviors.d.ts +1 -0
- package/dist/matter/behaviors.d.ts.map +1 -0
- package/dist/matter/behaviors.js +2 -0
- package/dist/matter/behaviors.js.map +1 -0
- package/dist/matter/clusters.d.ts +1 -0
- package/dist/matter/clusters.d.ts.map +1 -0
- package/dist/matter/clusters.js +2 -0
- package/dist/matter/clusters.js.map +1 -0
- package/dist/matter/devices.d.ts +1 -0
- package/dist/matter/devices.d.ts.map +1 -0
- package/dist/matter/devices.js +2 -0
- package/dist/matter/devices.js.map +1 -0
- package/dist/matter/endpoints.d.ts +1 -0
- package/dist/matter/endpoints.d.ts.map +1 -0
- package/dist/matter/endpoints.js +2 -0
- package/dist/matter/endpoints.js.map +1 -0
- package/dist/matter/export.d.ts +1 -0
- package/dist/matter/export.d.ts.map +1 -0
- package/dist/matter/export.js +3 -0
- package/dist/matter/export.js.map +1 -0
- package/dist/matter/types.d.ts +1 -0
- package/dist/matter/types.d.ts.map +1 -0
- package/dist/matter/types.js +3 -0
- package/dist/matter/types.js.map +1 -0
- package/dist/matterNode.d.ts +258 -0
- package/dist/matterNode.d.ts.map +1 -0
- package/dist/matterNode.js +369 -8
- package/dist/matterNode.js.map +1 -0
- package/dist/matterbridge.d.ts +353 -0
- package/dist/matterbridge.d.ts.map +1 -0
- package/dist/matterbridge.js +824 -46
- package/dist/matterbridge.js.map +1 -0
- package/dist/matterbridgeAccessoryPlatform.d.ts +36 -0
- package/dist/matterbridgeAccessoryPlatform.d.ts.map +1 -0
- package/dist/matterbridgeAccessoryPlatform.js +38 -0
- package/dist/matterbridgeAccessoryPlatform.js.map +1 -0
- package/dist/matterbridgeBehaviors.d.ts +24 -0
- package/dist/matterbridgeBehaviors.d.ts.map +1 -0
- package/dist/matterbridgeBehaviors.js +68 -5
- package/dist/matterbridgeBehaviors.js.map +1 -0
- package/dist/matterbridgeDeviceTypes.d.ts +603 -0
- package/dist/matterbridgeDeviceTypes.d.ts.map +1 -0
- package/dist/matterbridgeDeviceTypes.js +635 -14
- package/dist/matterbridgeDeviceTypes.js.map +1 -0
- package/dist/matterbridgeDynamicPlatform.d.ts +36 -0
- package/dist/matterbridgeDynamicPlatform.d.ts.map +1 -0
- package/dist/matterbridgeDynamicPlatform.js +38 -0
- package/dist/matterbridgeDynamicPlatform.js.map +1 -0
- package/dist/matterbridgeEndpoint.d.ts +1332 -0
- package/dist/matterbridgeEndpoint.d.ts.map +1 -0
- package/dist/matterbridgeEndpoint.js +1457 -53
- package/dist/matterbridgeEndpoint.js.map +1 -0
- package/dist/matterbridgeEndpointHelpers.d.ts +425 -0
- package/dist/matterbridgeEndpointHelpers.d.ts.map +1 -0
- package/dist/matterbridgeEndpointHelpers.js +483 -20
- package/dist/matterbridgeEndpointHelpers.js.map +1 -0
- package/dist/matterbridgeEndpointTypes.d.ts +70 -0
- package/dist/matterbridgeEndpointTypes.d.ts.map +1 -0
- package/dist/matterbridgeEndpointTypes.js +25 -0
- package/dist/matterbridgeEndpointTypes.js.map +1 -0
- package/dist/matterbridgePlatform.d.ts +425 -0
- package/dist/matterbridgePlatform.d.ts.map +1 -0
- package/dist/matterbridgePlatform.js +451 -1
- package/dist/matterbridgePlatform.js.map +1 -0
- package/dist/matterbridgeTypes.d.ts +46 -0
- package/dist/matterbridgeTypes.d.ts.map +1 -0
- package/dist/matterbridgeTypes.js +26 -0
- package/dist/matterbridgeTypes.js.map +1 -0
- package/dist/pluginManager.d.ts +305 -0
- package/dist/pluginManager.d.ts.map +1 -0
- package/dist/pluginManager.js +341 -5
- package/dist/pluginManager.js.map +1 -0
- package/dist/shelly.d.ts +157 -0
- package/dist/shelly.d.ts.map +1 -0
- package/dist/shelly.js +178 -7
- package/dist/shelly.js.map +1 -0
- package/dist/storage/export.d.ts +1 -0
- package/dist/storage/export.d.ts.map +1 -0
- package/dist/storage/export.js +1 -0
- package/dist/storage/export.js.map +1 -0
- package/dist/update.d.ts +75 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +93 -1
- package/dist/update.js.map +1 -0
- package/dist/utils/colorUtils.d.ts +77 -0
- package/dist/utils/colorUtils.d.ts.map +1 -0
- package/dist/utils/colorUtils.js +97 -2
- package/dist/utils/colorUtils.js.map +1 -0
- package/dist/utils/commandLine.d.ts +60 -0
- package/dist/utils/commandLine.d.ts.map +1 -0
- package/dist/utils/commandLine.js +60 -0
- package/dist/utils/commandLine.js.map +1 -0
- package/dist/utils/copyDirectory.d.ts +33 -0
- package/dist/utils/copyDirectory.d.ts.map +1 -0
- package/dist/utils/copyDirectory.js +37 -0
- package/dist/utils/copyDirectory.js.map +1 -0
- package/dist/utils/createDirectory.d.ts +32 -0
- package/dist/utils/createDirectory.d.ts.map +1 -0
- package/dist/utils/createDirectory.js +33 -0
- package/dist/utils/createDirectory.js.map +1 -0
- package/dist/utils/createZip.d.ts +38 -0
- package/dist/utils/createZip.d.ts.map +1 -0
- package/dist/utils/createZip.js +47 -2
- package/dist/utils/createZip.js.map +1 -0
- package/dist/utils/deepCopy.d.ts +31 -0
- package/dist/utils/deepCopy.d.ts.map +1 -0
- package/dist/utils/deepCopy.js +39 -0
- package/dist/utils/deepCopy.js.map +1 -0
- package/dist/utils/deepEqual.d.ts +53 -0
- package/dist/utils/deepEqual.d.ts.map +1 -0
- package/dist/utils/deepEqual.js +72 -1
- package/dist/utils/deepEqual.js.map +1 -0
- package/dist/utils/error.d.ts +42 -0
- package/dist/utils/error.d.ts.map +1 -0
- package/dist/utils/error.js +42 -0
- package/dist/utils/error.js.map +1 -0
- package/dist/utils/export.d.ts +1 -0
- package/dist/utils/export.d.ts.map +1 -0
- package/dist/utils/export.js +1 -0
- package/dist/utils/export.js.map +1 -0
- package/dist/utils/format.d.ts +49 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +49 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/hex.d.ts +85 -0
- package/dist/utils/hex.d.ts.map +1 -0
- package/dist/utils/hex.js +124 -0
- package/dist/utils/hex.js.map +1 -0
- package/dist/utils/inspector.d.ts +63 -0
- package/dist/utils/inspector.d.ts.map +1 -0
- package/dist/utils/inspector.js +69 -1
- package/dist/utils/inspector.js.map +1 -0
- package/dist/utils/isValid.d.ts +93 -0
- package/dist/utils/isValid.d.ts.map +1 -0
- package/dist/utils/isValid.js +93 -0
- package/dist/utils/isValid.js.map +1 -0
- package/dist/utils/network.d.ts +116 -0
- package/dist/utils/network.d.ts.map +1 -0
- package/dist/utils/network.js +126 -5
- package/dist/utils/network.js.map +1 -0
- package/dist/utils/spawn.d.ts +32 -0
- package/dist/utils/spawn.d.ts.map +1 -0
- package/dist/utils/spawn.js +71 -1
- package/dist/utils/spawn.js.map +1 -0
- package/dist/utils/tracker.d.ts +56 -0
- package/dist/utils/tracker.d.ts.map +1 -0
- package/dist/utils/tracker.js +64 -1
- package/dist/utils/tracker.js.map +1 -0
- package/dist/utils/wait.d.ts +51 -0
- package/dist/utils/wait.d.ts.map +1 -0
- package/dist/utils/wait.js +60 -8
- package/dist/utils/wait.js.map +1 -0
- package/dist/workerGlobalPrefix.d.ts +24 -0
- package/dist/workerGlobalPrefix.d.ts.map +1 -0
- package/dist/workerGlobalPrefix.js +37 -5
- package/dist/workerGlobalPrefix.js.map +1 -0
- package/dist/workerTypes.d.ts +25 -0
- package/dist/workerTypes.d.ts.map +1 -0
- package/dist/workerTypes.js +24 -0
- package/dist/workerTypes.js.map +1 -0
- package/dist/workers.d.ts +61 -0
- package/dist/workers.d.ts.map +1 -0
- package/dist/workers.js +68 -4
- package/dist/workers.js.map +1 -0
- package/npm-shrinkwrap.json +115 -115
- package/package.json +2 -1
- package/packages/dgram/dist/coap.d.ts +171 -0
- package/packages/dgram/dist/coap.d.ts.map +1 -0
- package/packages/dgram/dist/coap.js +126 -13
- package/packages/dgram/dist/coap.js.map +1 -0
- package/packages/dgram/dist/dgram.d.ts +99 -0
- package/packages/dgram/dist/dgram.d.ts.map +1 -0
- package/packages/dgram/dist/dgram.js +115 -3
- package/packages/dgram/dist/dgram.js.map +1 -0
- package/packages/dgram/dist/export.d.ts +1 -0
- package/packages/dgram/dist/export.d.ts.map +1 -0
- package/packages/dgram/dist/export.js +1 -0
- package/packages/dgram/dist/export.js.map +1 -0
- package/packages/dgram/dist/mdns.d.ts +187 -4
- package/packages/dgram/dist/mdns.d.ts.map +1 -0
- package/packages/dgram/dist/mdns.js +371 -139
- package/packages/dgram/dist/mdns.js.map +1 -0
- package/packages/dgram/dist/multicast.d.ts +49 -0
- package/packages/dgram/dist/multicast.d.ts.map +1 -0
- package/packages/dgram/dist/multicast.js +62 -1
- package/packages/dgram/dist/multicast.js.map +1 -0
- package/packages/dgram/dist/unicast.d.ts +53 -0
- package/packages/dgram/dist/unicast.d.ts.map +1 -0
- package/packages/dgram/dist/unicast.js +60 -0
- package/packages/dgram/dist/unicast.js.map +1 -0
- package/packages/jest-utils/dist/export.d.ts +1 -0
- package/packages/jest-utils/dist/export.d.ts.map +1 -0
- package/packages/jest-utils/dist/export.js +1 -0
- package/packages/jest-utils/dist/export.js.map +1 -0
- package/packages/jest-utils/dist/jestHelpers.d.ts +56 -0
- package/packages/jest-utils/dist/jestHelpers.d.ts.map +1 -0
- package/packages/jest-utils/dist/jestHelpers.js +62 -1
- package/packages/jest-utils/dist/jestHelpers.js.map +1 -0
- package/packages/utils/dist/colorUtils.d.ts +77 -0
- package/packages/utils/dist/colorUtils.d.ts.map +1 -0
- package/packages/utils/dist/colorUtils.js +97 -2
- package/packages/utils/dist/colorUtils.js.map +1 -0
- package/packages/utils/dist/commandLine.d.ts +60 -0
- package/packages/utils/dist/commandLine.d.ts.map +1 -0
- package/packages/utils/dist/commandLine.js +60 -0
- package/packages/utils/dist/commandLine.js.map +1 -0
- package/packages/utils/dist/copyDirectory.d.ts +33 -0
- package/packages/utils/dist/copyDirectory.d.ts.map +1 -0
- package/packages/utils/dist/copyDirectory.js +37 -0
- package/packages/utils/dist/copyDirectory.js.map +1 -0
- package/packages/utils/dist/createDirectory.d.ts +32 -0
- package/packages/utils/dist/createDirectory.d.ts.map +1 -0
- package/packages/utils/dist/createDirectory.js +33 -0
- package/packages/utils/dist/createDirectory.js.map +1 -0
- package/packages/utils/dist/createZip.d.ts +38 -0
- package/packages/utils/dist/createZip.d.ts.map +1 -0
- package/packages/utils/dist/createZip.js +47 -2
- package/packages/utils/dist/createZip.js.map +1 -0
- package/packages/utils/dist/deepCopy.d.ts +31 -0
- package/packages/utils/dist/deepCopy.d.ts.map +1 -0
- package/packages/utils/dist/deepCopy.js +39 -0
- package/packages/utils/dist/deepCopy.js.map +1 -0
- package/packages/utils/dist/deepEqual.d.ts +53 -0
- package/packages/utils/dist/deepEqual.d.ts.map +1 -0
- package/packages/utils/dist/deepEqual.js +73 -1
- package/packages/utils/dist/deepEqual.js.map +1 -0
- package/packages/utils/dist/error.d.ts +42 -0
- package/packages/utils/dist/error.d.ts.map +1 -0
- package/packages/utils/dist/error.js +42 -0
- package/packages/utils/dist/error.js.map +1 -0
- package/packages/utils/dist/export.d.ts +1 -0
- package/packages/utils/dist/export.d.ts.map +1 -0
- package/packages/utils/dist/export.js +1 -0
- package/packages/utils/dist/export.js.map +1 -0
- package/packages/utils/dist/format.d.ts +49 -0
- package/packages/utils/dist/format.d.ts.map +1 -0
- package/packages/utils/dist/format.js +49 -0
- package/packages/utils/dist/format.js.map +1 -0
- package/packages/utils/dist/githubVersion.d.ts +32 -0
- package/packages/utils/dist/githubVersion.d.ts.map +1 -0
- package/packages/utils/dist/githubVersion.js +34 -1
- package/packages/utils/dist/githubVersion.js.map +1 -0
- package/packages/utils/dist/hex.d.ts +85 -0
- package/packages/utils/dist/hex.d.ts.map +1 -0
- package/packages/utils/dist/hex.js +124 -0
- package/packages/utils/dist/hex.js.map +1 -0
- package/packages/utils/dist/inspector.d.ts +63 -0
- package/packages/utils/dist/inspector.d.ts.map +1 -0
- package/packages/utils/dist/inspector.js +69 -1
- package/packages/utils/dist/inspector.js.map +1 -0
- package/packages/utils/dist/isValid.d.ts +93 -0
- package/packages/utils/dist/isValid.d.ts.map +1 -0
- package/packages/utils/dist/isValid.js +93 -0
- package/packages/utils/dist/isValid.js.map +1 -0
- package/packages/utils/dist/network.d.ts +93 -0
- package/packages/utils/dist/network.d.ts.map +1 -0
- package/packages/utils/dist/network.js +99 -3
- package/packages/utils/dist/network.js.map +1 -0
- package/packages/utils/dist/npmRoot.d.ts +28 -0
- package/packages/utils/dist/npmRoot.d.ts.map +1 -0
- package/packages/utils/dist/npmRoot.js +28 -0
- package/packages/utils/dist/npmRoot.js.map +1 -0
- package/packages/utils/dist/npmVersion.d.ts +32 -0
- package/packages/utils/dist/npmVersion.d.ts.map +1 -0
- package/packages/utils/dist/npmVersion.js +34 -1
- package/packages/utils/dist/npmVersion.js.map +1 -0
- package/packages/utils/dist/tracker.d.ts +56 -0
- package/packages/utils/dist/tracker.d.ts.map +1 -0
- package/packages/utils/dist/tracker.js +64 -1
- package/packages/utils/dist/tracker.js.map +1 -0
- package/packages/utils/dist/wait.d.ts +51 -0
- package/packages/utils/dist/wait.d.ts.map +1 -0
- package/packages/utils/dist/wait.js +60 -8
- package/packages/utils/dist/wait.js.map +1 -0
- package/packages/vitest-utils/dist/export.d.ts +1 -0
- package/packages/vitest-utils/dist/export.d.ts.map +1 -0
- package/packages/vitest-utils/dist/export.js +1 -0
- package/packages/vitest-utils/dist/export.js.map +1 -0
- package/packages/vitest-utils/dist/vitestHelpers.d.ts +37 -0
- package/packages/vitest-utils/dist/vitestHelpers.d.ts.map +1 -0
- package/packages/vitest-utils/dist/vitestHelpers.js +43 -1
- package/packages/vitest-utils/dist/vitestHelpers.js.map +1 -0
- package/bmc-button.svg +0 -22
- package/packages/dgram/bmc-button.svg +0 -22
- package/packages/dgram/matterbridge.svg +0 -50
- package/packages/jest-utils/bmc-button.svg +0 -22
- package/packages/jest-utils/matterbridge.svg +0 -50
- package/packages/utils/bmc-button.svg +0 -22
- package/packages/utils/matterbridge.svg +0 -50
- package/packages/vitest-utils/bmc-button.svg +0 -22
- package/packages/vitest-utils/matterbridge.svg +0 -50
|
@@ -1,5 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description This file contains the network functions.
|
|
3
|
+
* @file network.ts
|
|
4
|
+
* @author Luca Liguori
|
|
5
|
+
* @created 2024-02-17
|
|
6
|
+
* @version 1.0.3
|
|
7
|
+
* @license Apache-2.0
|
|
8
|
+
*
|
|
9
|
+
* Copyright 2024, 2025, 2026 Luca Liguori.
|
|
10
|
+
*
|
|
11
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
+
* you may not use this file except in compliance with the License.
|
|
13
|
+
* You may obtain a copy of the License at
|
|
14
|
+
*
|
|
15
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
*
|
|
17
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
+
* See the License for the specific language governing permissions and
|
|
21
|
+
* limitations under the License.
|
|
22
|
+
*/
|
|
23
|
+
// Node.js modules
|
|
1
24
|
import os from 'node:os';
|
|
25
|
+
// AnsiLogger module
|
|
2
26
|
import { AnsiLogger, BLUE, CYAN, nf } from 'node-ansi-logger';
|
|
27
|
+
/**
|
|
28
|
+
* Retrieves the first non-internal network interface details.
|
|
29
|
+
*
|
|
30
|
+
* @returns {os.NetworkInterfaceInfo | undefined} The details of the selected network interface, or undefined if not found.
|
|
31
|
+
*/
|
|
3
32
|
export function getInterfaceDetails() {
|
|
4
33
|
const result = {
|
|
5
34
|
interfaceName: '',
|
|
@@ -26,6 +55,11 @@ export function getInterfaceDetails() {
|
|
|
26
55
|
if (result.interfaceName)
|
|
27
56
|
return result;
|
|
28
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Retrieves the first non-internal network interface name.
|
|
60
|
+
*
|
|
61
|
+
* @returns {string | undefined} The name of the selected network interface, or undefined if not found.
|
|
62
|
+
*/
|
|
29
63
|
export function getInterfaceName() {
|
|
30
64
|
for (const [interfaceName, interfaceDetails] of Object.entries(os.networkInterfaces())) {
|
|
31
65
|
if (!interfaceName || !interfaceDetails || interfaceDetails.length === 0)
|
|
@@ -36,6 +70,18 @@ export function getInterfaceName() {
|
|
|
36
70
|
}
|
|
37
71
|
}
|
|
38
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Retrieves the IPv4 address of the first non-internal network interface.
|
|
75
|
+
*
|
|
76
|
+
* @returns {string | undefined} The IPv4 address of the selected network interface, or undefined if not found.
|
|
77
|
+
*
|
|
78
|
+
* @remarks
|
|
79
|
+
* Type of ipv4 addresses:
|
|
80
|
+
* - 192.168.x.x, 10.x.x.x, 172.16–31.x.x: RFC 1918 = Private networks
|
|
81
|
+
* - 172.16.0.0 → 172.31.255.255: RFC 1918 = Private IP address used inside local networks, VMs, WSL2 and containers
|
|
82
|
+
* - 169.254.0.0 → 169.254.255.255: APIPA = Automatic Private IP Addressing used when a device fails to obtain an IP address via DHCP
|
|
83
|
+
* - 100.64.0.0 → 100.127.255.255: CGNAT = Carrier-Grade NAT RFC 6598 = Shared Address Space
|
|
84
|
+
*/
|
|
39
85
|
export function getIpv4InterfaceAddress() {
|
|
40
86
|
for (const [interfaceName, interfaceDetails] of Object.entries(os.networkInterfaces())) {
|
|
41
87
|
if (!interfaceName || !interfaceDetails || interfaceDetails.length === 0)
|
|
@@ -46,6 +92,34 @@ export function getIpv4InterfaceAddress() {
|
|
|
46
92
|
}
|
|
47
93
|
}
|
|
48
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Retrieves the IPv6 address of the first non-internal network interface.
|
|
97
|
+
*
|
|
98
|
+
* If `scope` is true, appends a zone id (scope) for link-local addresses when
|
|
99
|
+
* available:
|
|
100
|
+
* - On Windows: uses `%<scopeid>` (e.g. `...%11`)
|
|
101
|
+
* - On other platforms: uses `%<interfaceName>` (e.g. `...%eth0`)
|
|
102
|
+
*
|
|
103
|
+
* @param {boolean} [scope] - Whether to append a zone id when available.
|
|
104
|
+
* @returns {string | undefined} The IPv6 address of the selected network interface, or undefined if not found.
|
|
105
|
+
*
|
|
106
|
+
* @remarks
|
|
107
|
+
* Type of IPv6 addresses (preferred order for Matter)
|
|
108
|
+
*
|
|
109
|
+
* fd00::/8
|
|
110
|
+
* - IPv6 ULA (Unique Local Address)
|
|
111
|
+
* - Private IPv6 networks (RFC 4193)
|
|
112
|
+
* - ✔ PREFERRED
|
|
113
|
+
*
|
|
114
|
+
* 2000::/3
|
|
115
|
+
* - Global Unicast IPv6
|
|
116
|
+
* - Publicly routable IPv6
|
|
117
|
+
* - ⚠ OPTIONAL (advanced setups only)
|
|
118
|
+
*
|
|
119
|
+
* fe80::/10
|
|
120
|
+
* - IPv6 Link-Local
|
|
121
|
+
* - Interface-scoped only, non-routable
|
|
122
|
+
*/
|
|
49
123
|
export function getIpv6InterfaceAddress(scope = false) {
|
|
50
124
|
for (const [interfaceName, interfaceDetails] of Object.entries(os.networkInterfaces())) {
|
|
51
125
|
if (!interfaceName || !interfaceDetails || interfaceDetails.length === 0)
|
|
@@ -55,6 +129,7 @@ export function getIpv6InterfaceAddress(scope = false) {
|
|
|
55
129
|
const address = detail.address;
|
|
56
130
|
if (!scope)
|
|
57
131
|
return address;
|
|
132
|
+
// Defensive check: if already has a zone id, keep it. Should never happen from os.networkInterfaces().
|
|
58
133
|
if (address.includes('%'))
|
|
59
134
|
return address;
|
|
60
135
|
const isWindows = os.platform() === 'win32';
|
|
@@ -67,6 +142,11 @@ export function getIpv6InterfaceAddress(scope = false) {
|
|
|
67
142
|
}
|
|
68
143
|
}
|
|
69
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Retrieves the mac address of the first non-internal network interface.
|
|
147
|
+
*
|
|
148
|
+
* @returns {string | undefined} The mac address, or undefined if not found.
|
|
149
|
+
*/
|
|
70
150
|
export function getMacAddress() {
|
|
71
151
|
for (const [interfaceName, interfaceDetails] of Object.entries(os.networkInterfaces())) {
|
|
72
152
|
if (!interfaceName || !interfaceDetails || interfaceDetails.length === 0)
|
|
@@ -77,9 +157,14 @@ export function getMacAddress() {
|
|
|
77
157
|
}
|
|
78
158
|
}
|
|
79
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* Logs the available network interfaces and their details.
|
|
162
|
+
*
|
|
163
|
+
* @returns {void}
|
|
164
|
+
*/
|
|
80
165
|
export function logInterfaces() {
|
|
81
|
-
const log = new AnsiLogger({ logName: 'MatterbridgeUtils', logTimestampFormat: 4
|
|
82
|
-
log.logLevel = "info"
|
|
166
|
+
const log = new AnsiLogger({ logName: 'MatterbridgeUtils', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: "info" /* LogLevel.INFO */ });
|
|
167
|
+
log.logLevel = "info" /* LogLevel.INFO */;
|
|
83
168
|
log.logName = 'LogInterfaces';
|
|
84
169
|
log.info('Available Network Interfaces:');
|
|
85
170
|
const availableAddresses = Object.entries(os.networkInterfaces());
|
|
@@ -93,13 +178,24 @@ export function logInterfaces() {
|
|
|
93
178
|
}
|
|
94
179
|
}
|
|
95
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Resolves the given hostname to an IP address.
|
|
183
|
+
*
|
|
184
|
+
* @param {string} hostname - The hostname to resolve.
|
|
185
|
+
* @param {0 | 4 | 6} [family] - The address family to use (0 for any, 4 for IPv4, 6 for IPv6). Default is 4.
|
|
186
|
+
* @returns {Promise<string | null>} - A promise that resolves to the IP address or null if not found.
|
|
187
|
+
*
|
|
188
|
+
* @remarks
|
|
189
|
+
* This function uses DNS lookup to resolve the hostname, which can take some time to complete.
|
|
190
|
+
*/
|
|
96
191
|
export async function resolveHostname(hostname, family = 4) {
|
|
97
192
|
const dns = await import('node:dns');
|
|
98
193
|
try {
|
|
99
|
-
const addresses = await dns.promises.lookup(hostname.toLowerCase()
|
|
194
|
+
const addresses = await dns.promises.lookup(hostname.toLowerCase() /* + '.local'*/, { family });
|
|
100
195
|
return addresses.address;
|
|
101
196
|
}
|
|
102
197
|
catch (_error) {
|
|
103
198
|
return null;
|
|
104
199
|
}
|
|
105
200
|
}
|
|
201
|
+
//# sourceMappingURL=network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description This file contains the getGlobalNodeModules function.
|
|
3
|
+
* @file npmRoot.ts
|
|
4
|
+
* @author Luca Liguori
|
|
5
|
+
* @created 2024-02-17
|
|
6
|
+
* @version 1.0.0
|
|
7
|
+
* @license Apache-2.0
|
|
8
|
+
*
|
|
9
|
+
* Copyright 2024, 2025, 2026 Luca Liguori.
|
|
10
|
+
*
|
|
11
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
+
* you may not use this file except in compliance with the License.
|
|
13
|
+
* You may obtain a copy of the License at
|
|
14
|
+
*
|
|
15
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
*
|
|
17
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
+
* See the License for the specific language governing permissions and
|
|
21
|
+
* limitations under the License.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Retrieves the path to the global Node.js modules directory.
|
|
25
|
+
*
|
|
26
|
+
* @returns {Promise<string>} A promise that resolves to the path of the global Node.js modules directory.
|
|
27
|
+
*/
|
|
1
28
|
export declare function getGlobalNodeModules(): Promise<string>;
|
|
29
|
+
//# sourceMappingURL=npmRoot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npmRoot.d.ts","sourceRoot":"","sources":["../src/npmRoot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH;;;;GAIG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAW5D"}
|
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description This file contains the getGlobalNodeModules function.
|
|
3
|
+
* @file npmRoot.ts
|
|
4
|
+
* @author Luca Liguori
|
|
5
|
+
* @created 2024-02-17
|
|
6
|
+
* @version 1.0.0
|
|
7
|
+
* @license Apache-2.0
|
|
8
|
+
*
|
|
9
|
+
* Copyright 2024, 2025, 2026 Luca Liguori.
|
|
10
|
+
*
|
|
11
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
+
* you may not use this file except in compliance with the License.
|
|
13
|
+
* You may obtain a copy of the License at
|
|
14
|
+
*
|
|
15
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
*
|
|
17
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
+
* See the License for the specific language governing permissions and
|
|
21
|
+
* limitations under the License.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Retrieves the path to the global Node.js modules directory.
|
|
25
|
+
*
|
|
26
|
+
* @returns {Promise<string>} A promise that resolves to the path of the global Node.js modules directory.
|
|
27
|
+
*/
|
|
1
28
|
export async function getGlobalNodeModules() {
|
|
2
29
|
const { exec } = await import('node:child_process');
|
|
3
30
|
return new Promise((resolve, reject) => {
|
|
@@ -11,3 +38,4 @@ export async function getGlobalNodeModules() {
|
|
|
11
38
|
});
|
|
12
39
|
});
|
|
13
40
|
}
|
|
41
|
+
//# sourceMappingURL=npmRoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npmRoot.js","sourceRoot":"","sources":["../src/npmRoot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,CAAC,aAAa,EAAE,CAAC,KAA2B,EAAE,MAAc,EAAE,EAAE;YAClE,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description This file contains the getNpmPackageVersion function.
|
|
3
|
+
* @file npmVersion.ts
|
|
4
|
+
* @author Luca Liguori
|
|
5
|
+
* @created 2024-02-17
|
|
6
|
+
* @version 1.0.0
|
|
7
|
+
* @license Apache-2.0
|
|
8
|
+
*
|
|
9
|
+
* Copyright 2024, 2025, 2026 Luca Liguori.
|
|
10
|
+
*
|
|
11
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
+
* you may not use this file except in compliance with the License.
|
|
13
|
+
* You may obtain a copy of the License at
|
|
14
|
+
*
|
|
15
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
*
|
|
17
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
+
* See the License for the specific language governing permissions and
|
|
21
|
+
* limitations under the License.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Retrieves the version of an npm package from the npm registry.
|
|
25
|
+
*
|
|
26
|
+
* @param {string} packageName - The name of the npm package.
|
|
27
|
+
* @param {string} [tag] - The tag of the package version to retrieve (default is 'latest').
|
|
28
|
+
* @param {number} [timeout] - The timeout duration in milliseconds (default is 10000ms).
|
|
29
|
+
* @returns {Promise<string>} A promise that resolves to the version string of the package.
|
|
30
|
+
* @throws {Error} If the request fails or the tag is not found.
|
|
31
|
+
*/
|
|
1
32
|
export declare function getNpmPackageVersion(packageName: string, tag?: string, timeout?: number): Promise<string>;
|
|
33
|
+
//# sourceMappingURL=npmVersion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npmVersion.d.ts","sourceRoot":"","sources":["../src/npmVersion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,GAAE,MAAiB,EAAE,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA8ChI"}
|
|
@@ -1,3 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description This file contains the getNpmPackageVersion function.
|
|
3
|
+
* @file npmVersion.ts
|
|
4
|
+
* @author Luca Liguori
|
|
5
|
+
* @created 2024-02-17
|
|
6
|
+
* @version 1.0.0
|
|
7
|
+
* @license Apache-2.0
|
|
8
|
+
*
|
|
9
|
+
* Copyright 2024, 2025, 2026 Luca Liguori.
|
|
10
|
+
*
|
|
11
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
+
* you may not use this file except in compliance with the License.
|
|
13
|
+
* You may obtain a copy of the License at
|
|
14
|
+
*
|
|
15
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
*
|
|
17
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
+
* See the License for the specific language governing permissions and
|
|
21
|
+
* limitations under the License.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Retrieves the version of an npm package from the npm registry.
|
|
25
|
+
*
|
|
26
|
+
* @param {string} packageName - The name of the npm package.
|
|
27
|
+
* @param {string} [tag] - The tag of the package version to retrieve (default is 'latest').
|
|
28
|
+
* @param {number} [timeout] - The timeout duration in milliseconds (default is 10000ms).
|
|
29
|
+
* @returns {Promise<string>} A promise that resolves to the version string of the package.
|
|
30
|
+
* @throws {Error} If the request fails or the tag is not found.
|
|
31
|
+
*/
|
|
1
32
|
export async function getNpmPackageVersion(packageName, tag = 'latest', timeout = 10000) {
|
|
2
33
|
const https = await import('node:https');
|
|
3
34
|
return new Promise((resolve, reject) => {
|
|
@@ -11,7 +42,7 @@ export async function getNpmPackageVersion(packageName, tag = 'latest', timeout
|
|
|
11
42
|
let data = '';
|
|
12
43
|
if (res.statusCode !== 200) {
|
|
13
44
|
clearTimeout(timeoutId);
|
|
14
|
-
res.resume();
|
|
45
|
+
res.resume(); // Discard response data to close the socket properly
|
|
15
46
|
reject(new Error(`Failed to fetch data. Status code: ${res.statusCode}`));
|
|
16
47
|
return;
|
|
17
48
|
}
|
|
@@ -22,6 +53,7 @@ export async function getNpmPackageVersion(packageName, tag = 'latest', timeout
|
|
|
22
53
|
clearTimeout(timeoutId);
|
|
23
54
|
try {
|
|
24
55
|
const jsonData = JSON.parse(data);
|
|
56
|
+
// console.log(`Package ${packageName} tag ${tag}`, jsonData);
|
|
25
57
|
const version = jsonData['dist-tags']?.[tag];
|
|
26
58
|
if (version) {
|
|
27
59
|
resolve(version);
|
|
@@ -41,3 +73,4 @@ export async function getNpmPackageVersion(packageName, tag = 'latest', timeout
|
|
|
41
73
|
});
|
|
42
74
|
});
|
|
43
75
|
}
|
|
76
|
+
//# sourceMappingURL=npmVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npmVersion.js","sourceRoot":"","sources":["../src/npmVersion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAmB,EAAE,MAAc,QAAQ,EAAE,UAAkB,KAAK;IAC7G,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,8BAA8B,WAAW,EAAE,CAAC;QACxD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC;QACzE,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YAChE,IAAI,IAAI,GAAG,EAAE,CAAC;YAEd,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBAC3B,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,qDAAqD;gBACnE,MAAM,CAAC,IAAI,KAAK,CAAC,sCAAsC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gBAC1E,OAAO;YACT,CAAC;YAED,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvB,IAAI,IAAI,KAAK,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAClC,8DAA8D;oBAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;oBAC7C,IAAI,OAAO,EAAE,CAAC;wBACZ,OAAO,CAAC,OAAO,CAAC,CAAC;oBACnB,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,4BAA4B,WAAW,GAAG,CAAC,CAAC,CAAC;oBAC3E,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACxG,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACxB,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,3 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file contains the Tracker class.
|
|
3
|
+
*
|
|
4
|
+
* @file tracker.ts
|
|
5
|
+
* @author Luca Liguori
|
|
6
|
+
* @created 2025-10-10
|
|
7
|
+
* @version 1.0.0
|
|
8
|
+
* @license Apache-2.0
|
|
9
|
+
*
|
|
10
|
+
* Copyright 2025, 2026, 2027 Luca Liguori.
|
|
11
|
+
*
|
|
12
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
+
* you may not use this file except in compliance with the License.
|
|
14
|
+
* You may obtain a copy of the License at
|
|
15
|
+
*
|
|
16
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
+
*
|
|
18
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
19
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
+
* See the License for the specific language governing permissions and
|
|
22
|
+
* limitations under the License.
|
|
23
|
+
*/
|
|
1
24
|
import EventEmitter from 'node:events';
|
|
2
25
|
export type TrackerSnapshot = {
|
|
3
26
|
timestamp: number;
|
|
@@ -21,15 +44,25 @@ export type TrackerSnapshot = {
|
|
|
21
44
|
peakArrayBuffers: number;
|
|
22
45
|
};
|
|
23
46
|
interface TrackerEvents {
|
|
47
|
+
/** Start tracking */
|
|
24
48
|
start: [];
|
|
49
|
+
/** Stop tracking */
|
|
25
50
|
stop: [];
|
|
51
|
+
/** Uptime event */
|
|
26
52
|
uptime: [os: number, process: number];
|
|
53
|
+
/** CPU event */
|
|
27
54
|
cpu: [os: number, process: number];
|
|
55
|
+
/** Memory event */
|
|
28
56
|
memory: [free: number, total: number, rss: number, heapUsed: number, heapTotal: number, external: number, arrayBuffers: number];
|
|
57
|
+
/** Snapshot event */
|
|
29
58
|
snapshot: [snapshot: TrackerSnapshot];
|
|
59
|
+
/** Reset peaks */
|
|
30
60
|
reset_peaks: [];
|
|
61
|
+
/** Reset peaks done event */
|
|
31
62
|
reset_peaks_done: [];
|
|
63
|
+
/** Run garbage collection */
|
|
32
64
|
gc: [];
|
|
65
|
+
/** Garbage collection done event */
|
|
33
66
|
gc_done: [type: 'major' | 'minor', execution: 'sync' | 'async'];
|
|
34
67
|
}
|
|
35
68
|
export declare class Tracker extends EventEmitter<TrackerEvents> {
|
|
@@ -44,9 +77,32 @@ export declare class Tracker extends EventEmitter<TrackerEvents> {
|
|
|
44
77
|
private prevCpuUsage;
|
|
45
78
|
private log;
|
|
46
79
|
constructor(name?: string, debug?: boolean, verbose?: boolean);
|
|
80
|
+
/**
|
|
81
|
+
* Start tracking cpu and memory usage with a given interval in ms
|
|
82
|
+
*
|
|
83
|
+
* @param {number} sampleIntervalMs Sample interval in milliseconds. Default is 10000 (10 seconds).
|
|
84
|
+
*/
|
|
47
85
|
start(sampleIntervalMs?: number): void;
|
|
86
|
+
/**
|
|
87
|
+
* Reset peak values to the currently stored values
|
|
88
|
+
*/
|
|
48
89
|
resetPeaks(): void;
|
|
90
|
+
/**
|
|
91
|
+
* Manually trigger garbage collection to free memory (if exposed with --expose-gc)
|
|
92
|
+
*
|
|
93
|
+
* @param {'major' | 'minor'} type - The type of garbage collection to perform ('major' or 'minor'). Default is 'major'.
|
|
94
|
+
* @param {'sync' | 'async'} execution - The execution mode of garbage collection ('sync' or 'async'). Default is 'async'.
|
|
95
|
+
*
|
|
96
|
+
* @remarks
|
|
97
|
+
* - major collection refers to old-generation mark-sweep/mark-compact cycles.
|
|
98
|
+
* - minor collection refers to young-generation collections (scavenges).
|
|
99
|
+
* - sync execution blocks the main thread until GC is complete, which can cause pauses.
|
|
100
|
+
*/
|
|
49
101
|
runGarbageCollector(type?: 'major' | 'minor', execution?: 'sync' | 'async'): void;
|
|
102
|
+
/**
|
|
103
|
+
* Stop tracking, clear interval, log history
|
|
104
|
+
*/
|
|
50
105
|
stop(): void;
|
|
51
106
|
}
|
|
52
107
|
export {};
|
|
108
|
+
//# sourceMappingURL=tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAOH,OAAO,YAAY,MAAM,aAAa,CAAC;AAOvC,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAGF,UAAU,aAAa;IACrB,qBAAqB;IACrB,KAAK,EAAE,EAAE,CAAC;IACV,oBAAoB;IACpB,IAAI,EAAE,EAAE,CAAC;IACT,mBAAmB;IACnB,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACtC,gBAAgB;IAChB,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACnC,mBAAmB;IACnB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAChI,qBAAqB;IACrB,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACtC,kBAAkB;IAClB,WAAW,EAAE,EAAE,CAAC;IAChB,6BAA6B;IAC7B,gBAAgB,EAAE,EAAE,CAAC;IACrB,6BAA6B;IAC7B,EAAE,EAAE,EAAE,CAAC;IACP,oCAAoC;IACpC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CACjE;AAED,qBAAa,OAAQ,SAAQ,YAAY,CAAC,aAAa,CAAC;IAmCpD,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IApC1B,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,MAAM,CAAC,YAAY,SAAK;IAExB,MAAM,CAAC,QAAQ,CAAC,WAAW,QAAQ;IACnC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,CAwBxC;IACF,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,GAAG,CAAa;gBAGL,IAAI,GAAE,MAAkB,EACxB,KAAK,GAAE,OAAe,EACtB,OAAO,GAAE,OAAe;IAkC3C;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,GAAE,MAAc;IAiGtC;;OAEG;IACH,UAAU;IAaV;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,IAAI,GAAE,OAAO,GAAG,OAAiB,EAAE,SAAS,GAAE,MAAM,GAAG,OAAiB;IAgB5F;;OAEG;IACH,IAAI;CAgCL"}
|
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file contains the Tracker class.
|
|
3
|
+
*
|
|
4
|
+
* @file tracker.ts
|
|
5
|
+
* @author Luca Liguori
|
|
6
|
+
* @created 2025-10-10
|
|
7
|
+
* @version 1.0.0
|
|
8
|
+
* @license Apache-2.0
|
|
9
|
+
*
|
|
10
|
+
* Copyright 2025, 2026, 2027 Luca Liguori.
|
|
11
|
+
*
|
|
12
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
+
* you may not use this file except in compliance with the License.
|
|
14
|
+
* You may obtain a copy of the License at
|
|
15
|
+
*
|
|
16
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
+
*
|
|
18
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
19
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
+
* See the License for the specific language governing permissions and
|
|
22
|
+
* limitations under the License.
|
|
23
|
+
*/
|
|
24
|
+
/* eslint-disable no-console */
|
|
1
25
|
if (process.argv.includes('--loader') || process.argv.includes('-loader'))
|
|
2
26
|
console.log('\u001B[32mTracker loaded.\u001B[40;0m');
|
|
3
27
|
import os from 'node:os';
|
|
@@ -10,6 +34,7 @@ export class Tracker extends EventEmitter {
|
|
|
10
34
|
verbose;
|
|
11
35
|
trackerInterval;
|
|
12
36
|
static historyIndex = 0;
|
|
37
|
+
// History for 8h at 1 sample each 10 seconds = 2880 entries
|
|
13
38
|
static historySize = 2880;
|
|
14
39
|
static history = Array.from({ length: this.historySize }, () => ({
|
|
15
40
|
timestamp: 0,
|
|
@@ -46,7 +71,7 @@ export class Tracker extends EventEmitter {
|
|
|
46
71
|
if (process.argv.includes('--verbose') || process.argv.includes('-verbose')) {
|
|
47
72
|
this.verbose = true;
|
|
48
73
|
}
|
|
49
|
-
this.log = new AnsiLogger({ logName: name, logTimestampFormat: 4
|
|
74
|
+
this.log = new AnsiLogger({ logName: name, logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: this.debug ? "debug" /* LogLevel.DEBUG */ : "info" /* LogLevel.INFO */ });
|
|
50
75
|
this.log.logNameColor = YELLOW;
|
|
51
76
|
if (this.verbose) {
|
|
52
77
|
this.log.debug(`os.cpus():\n${RESET}`, os.cpus());
|
|
@@ -66,6 +91,11 @@ export class Tracker extends EventEmitter {
|
|
|
66
91
|
this.runGarbageCollector();
|
|
67
92
|
});
|
|
68
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Start tracking cpu and memory usage with a given interval in ms
|
|
96
|
+
*
|
|
97
|
+
* @param {number} sampleIntervalMs Sample interval in milliseconds. Default is 10000 (10 seconds).
|
|
98
|
+
*/
|
|
69
99
|
start(sampleIntervalMs = 10000) {
|
|
70
100
|
if (this.trackerInterval)
|
|
71
101
|
return;
|
|
@@ -74,15 +104,21 @@ export class Tracker extends EventEmitter {
|
|
|
74
104
|
this.prevCpus = os.cpus();
|
|
75
105
|
this.prevCpuUsage = process.cpuUsage();
|
|
76
106
|
this.trackerInterval = setInterval(() => {
|
|
107
|
+
// Increment tryGcCount and check if we can run garbage collector each hour cause memory might grow over time because of our even small allocations
|
|
77
108
|
tryGcCount += sampleIntervalMs / 1000;
|
|
78
109
|
if (tryGcCount > 60 * 60) {
|
|
79
110
|
this.runGarbageCollector();
|
|
80
111
|
tryGcCount = 0;
|
|
81
112
|
}
|
|
113
|
+
// Get current history entry in circular buffer
|
|
82
114
|
const entry = Tracker.history[Tracker.historyIndex];
|
|
115
|
+
// Get previous history entry in circular buffer
|
|
83
116
|
const prevEntry = Tracker.history[(Tracker.historyIndex + Tracker.historySize - 1) % Tracker.historySize];
|
|
117
|
+
// Set the timestamp
|
|
84
118
|
entry.timestamp = Date.now();
|
|
119
|
+
// Emit uptime event
|
|
85
120
|
this.emit('uptime', os.uptime(), process.uptime());
|
|
121
|
+
// Track CPU usage
|
|
86
122
|
const currentCpus = os.cpus();
|
|
87
123
|
const loads = currentCpus.map((cpu, idx) => {
|
|
88
124
|
const prev = this.prevCpus[idx]?.times;
|
|
@@ -94,6 +130,7 @@ export class Tracker extends EventEmitter {
|
|
|
94
130
|
const totalDelta = busyDelta + idleDelta;
|
|
95
131
|
if (totalDelta <= 0)
|
|
96
132
|
return 0;
|
|
133
|
+
// istanbul ignore next cause is practically impossible to hit this branch
|
|
97
134
|
return busyDelta / totalDelta;
|
|
98
135
|
});
|
|
99
136
|
this.prevCpus = currentCpus;
|
|
@@ -101,13 +138,16 @@ export class Tracker extends EventEmitter {
|
|
|
101
138
|
const osCpu = Number((avgLoad * 100).toFixed(2));
|
|
102
139
|
entry.osCpu = osCpu;
|
|
103
140
|
entry.peakOsCpu = Math.max(prevEntry.peakOsCpu, osCpu);
|
|
141
|
+
// Track process CPU usage
|
|
104
142
|
const diff = process.cpuUsage(this.prevCpuUsage);
|
|
105
143
|
this.prevCpuUsage = process.cpuUsage();
|
|
106
144
|
const totalMs = (diff.user + diff.system) / 1000;
|
|
107
145
|
const processCpu = Number((((totalMs / sampleIntervalMs) * 100) / currentCpus.length).toFixed(2));
|
|
108
146
|
entry.processCpu = processCpu;
|
|
109
147
|
entry.peakProcessCpu = Math.max(prevEntry.peakProcessCpu, processCpu);
|
|
148
|
+
// Emit cpu event
|
|
110
149
|
this.emit('cpu', entry.osCpu, entry.processCpu);
|
|
150
|
+
// Track memory usage
|
|
111
151
|
entry.freeMemory = os.freemem();
|
|
112
152
|
entry.peakFreeMemory = Math.max(prevEntry.peakFreeMemory, entry.freeMemory);
|
|
113
153
|
entry.totalMemory = os.totalmem();
|
|
@@ -124,7 +164,9 @@ export class Tracker extends EventEmitter {
|
|
|
124
164
|
entry.arrayBuffers = mem.arrayBuffers;
|
|
125
165
|
entry.peakArrayBuffers = Math.max(prevEntry.peakArrayBuffers, mem.arrayBuffers);
|
|
126
166
|
this.emit('memory', entry.freeMemory, entry.totalMemory, entry.rss, entry.heapUsed, entry.heapTotal, entry.external, entry.arrayBuffers);
|
|
167
|
+
// Emit tracker event with current snapshot
|
|
127
168
|
this.emit('snapshot', entry);
|
|
169
|
+
// Debug output
|
|
128
170
|
if (this.debug) {
|
|
129
171
|
this.log.debug(`Time: ${formatTimeStamp(entry.timestamp)} ` +
|
|
130
172
|
`os ${CYAN}${BRIGHT}${formatPercent(entry.osCpu)}${RESET}${db} (${entry.peakOsCpu > prevEntry.peakOsCpu ? RED : ''}${formatPercent(entry.peakOsCpu)}${db}) ` +
|
|
@@ -135,10 +177,14 @@ export class Tracker extends EventEmitter {
|
|
|
135
177
|
`external: ${CYAN}${BRIGHT}${formatBytes(entry.external)}${RESET}${db} (${entry.peakExternal > prevEntry.peakExternal ? RED : ''}${formatBytes(entry.peakExternal)}${db}) ` +
|
|
136
178
|
`arrayBuffers: ${CYAN}${BRIGHT}${formatBytes(entry.arrayBuffers)}${RESET}${db} (${entry.peakArrayBuffers > prevEntry.peakArrayBuffers ? RED : ''}${formatBytes(entry.peakArrayBuffers)}${db})`);
|
|
137
179
|
}
|
|
180
|
+
// Move to next history index of circular buffer
|
|
138
181
|
Tracker.historyIndex = (Tracker.historyIndex + 1) % Tracker.historySize;
|
|
139
182
|
}, sampleIntervalMs);
|
|
140
183
|
this.log.debug(`Tracker started`);
|
|
141
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* Reset peak values to the currently stored values
|
|
187
|
+
*/
|
|
142
188
|
resetPeaks() {
|
|
143
189
|
const prevHistoryIndex = (Tracker.historyIndex + Tracker.historySize - 1) % Tracker.historySize;
|
|
144
190
|
Tracker.history[prevHistoryIndex].peakOsCpu = 0;
|
|
@@ -152,6 +198,17 @@ export class Tracker extends EventEmitter {
|
|
|
152
198
|
this.log.debug(`${CYAN}${BRIGHT}Peaks reset at ${new Date(Date.now()).toLocaleString()}.${RESET}${db}`);
|
|
153
199
|
this.emit('reset_peaks_done');
|
|
154
200
|
}
|
|
201
|
+
/**
|
|
202
|
+
* Manually trigger garbage collection to free memory (if exposed with --expose-gc)
|
|
203
|
+
*
|
|
204
|
+
* @param {'major' | 'minor'} type - The type of garbage collection to perform ('major' or 'minor'). Default is 'major'.
|
|
205
|
+
* @param {'sync' | 'async'} execution - The execution mode of garbage collection ('sync' or 'async'). Default is 'async'.
|
|
206
|
+
*
|
|
207
|
+
* @remarks
|
|
208
|
+
* - major collection refers to old-generation mark-sweep/mark-compact cycles.
|
|
209
|
+
* - minor collection refers to young-generation collections (scavenges).
|
|
210
|
+
* - sync execution blocks the main thread until GC is complete, which can cause pauses.
|
|
211
|
+
*/
|
|
155
212
|
runGarbageCollector(type = 'major', execution = 'async') {
|
|
156
213
|
if (global.gc && typeof global.gc === 'function') {
|
|
157
214
|
try {
|
|
@@ -172,15 +229,20 @@ export class Tracker extends EventEmitter {
|
|
|
172
229
|
this.log.debug(`${CYAN}${BRIGHT}Garbage collection not exposed. Start Node.js with --expose-gc to enable manual garbage collection.${RESET}${db}`);
|
|
173
230
|
}
|
|
174
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* Stop tracking, clear interval, log history
|
|
234
|
+
*/
|
|
175
235
|
stop() {
|
|
176
236
|
this.log.debug(`Tracker stopping...`);
|
|
177
237
|
if (this.trackerInterval) {
|
|
178
238
|
clearInterval(this.trackerInterval);
|
|
179
239
|
this.trackerInterval = undefined;
|
|
180
240
|
}
|
|
241
|
+
// Log all history entries
|
|
181
242
|
if (this.debug) {
|
|
182
243
|
this.log.debug(`Tracker history for ${YELLOW}${BRIGHT}${this.name}:${RESET}`);
|
|
183
244
|
this.log.debug('Timestamp Host cpu Process cpu Rss Heap Used Heap Total External ArrayBuffers');
|
|
245
|
+
// 10/10/2025, 20:52:12 4.76 % ( 4.76 %) 0.16 % ( 0.16 %) 38.45 MB ( 38.45 MB) 3.75 MB ( 3.75 MB) 5.29 MB ( 5.29 MB) 1.66 MB ( 1.66 MB) 10.25 KB ( 10.25 KB)
|
|
184
246
|
for (let i = 0; i < Tracker.historySize; i++) {
|
|
185
247
|
const index = (Tracker.historyIndex + i) % Tracker.historySize;
|
|
186
248
|
const entry = Tracker.history[index];
|
|
@@ -199,3 +261,4 @@ export class Tracker extends EventEmitter {
|
|
|
199
261
|
this.log.debug(`Tracker stopped`);
|
|
200
262
|
}
|
|
201
263
|
}
|
|
264
|
+
//# sourceMappingURL=tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"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"}
|