matterbridge 3.4.6 → 3.4.7-dev-20260104-6b10cee
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 +17 -0
- package/README-DOCKER.md +8 -0
- package/dist/broadcastServer.js +0 -117
- package/dist/broadcastServerTypes.js +0 -24
- package/dist/cli.js +1 -97
- package/dist/cliEmitter.js +0 -37
- package/dist/cliHistory.js +0 -38
- package/dist/clusters/export.js +0 -2
- package/dist/deviceManager.js +1 -113
- package/dist/devices/airConditioner.js +0 -57
- package/dist/devices/batteryStorage.js +1 -48
- package/dist/devices/cooktop.js +0 -56
- package/dist/devices/dishwasher.js +0 -57
- package/dist/devices/evse.js +10 -74
- package/dist/devices/export.js +0 -5
- package/dist/devices/extractorHood.js +0 -43
- package/dist/devices/heatPump.js +2 -50
- package/dist/devices/laundryDryer.js +3 -62
- package/dist/devices/laundryWasher.js +4 -70
- package/dist/devices/microwaveOven.js +5 -88
- package/dist/devices/oven.js +0 -85
- package/dist/devices/refrigerator.js +0 -102
- package/dist/devices/roboticVacuumCleaner.js +9 -100
- package/dist/devices/solarPower.js +0 -38
- package/dist/devices/speaker.js +0 -84
- package/dist/devices/temperatureControl.js +3 -24
- package/dist/devices/waterHeater.js +2 -82
- package/dist/dgram/coap.js +13 -126
- package/dist/dgram/dgram.js +6 -114
- package/dist/dgram/mb_coap.js +3 -41
- package/dist/dgram/mb_mdns.js +23 -77
- package/dist/dgram/mdns.js +139 -371
- package/dist/dgram/mdnsReflectorClient.js +5 -71
- package/dist/dgram/mdnsReflectorServer.js +8 -73
- package/dist/dgram/mdnsReflectorTypes.js +1 -24
- package/dist/dgram/multicast.js +1 -62
- package/dist/dgram/unicast.js +0 -60
- package/dist/frontend.js +38 -485
- package/dist/frontendTypes.js +0 -45
- package/dist/helpers.js +0 -53
- package/dist/index.js +0 -25
- package/dist/jestutils/export.js +0 -1
- package/dist/jestutils/jestHelpers.js +14 -371
- package/dist/logger/export.js +0 -1
- package/dist/matter/behaviors.js +0 -2
- package/dist/matter/clusters.js +0 -2
- package/dist/matter/devices.js +0 -2
- package/dist/matter/endpoints.js +0 -2
- package/dist/matter/export.js +0 -3
- package/dist/matter/types.js +0 -3
- package/dist/matterNode.js +8 -369
- package/dist/matterbridge.js +46 -824
- package/dist/matterbridgeAccessoryPlatform.js +0 -38
- package/dist/matterbridgeBehaviors.js +5 -68
- package/dist/matterbridgeDeviceTypes.js +14 -635
- package/dist/matterbridgeDynamicPlatform.js +0 -38
- package/dist/matterbridgeEndpoint.js +53 -1457
- package/dist/matterbridgeEndpointHelpers.js +20 -483
- package/dist/matterbridgeEndpointTypes.js +0 -25
- package/dist/matterbridgePlatform.js +1 -451
- package/dist/matterbridgeTypes.js +0 -26
- package/dist/pluginManager.js +5 -341
- package/dist/shelly.js +7 -178
- package/dist/storage/export.js +0 -1
- package/dist/update.js +1 -93
- package/dist/utils/colorUtils.js +2 -97
- package/dist/utils/commandLine.js +0 -60
- package/dist/utils/copyDirectory.js +0 -37
- package/dist/utils/createDirectory.js +0 -33
- package/dist/utils/createZip.js +2 -47
- package/dist/utils/deepCopy.js +0 -39
- package/dist/utils/deepEqual.js +1 -72
- package/dist/utils/error.js +0 -42
- package/dist/utils/export.js +0 -1
- package/dist/utils/format.js +0 -49
- package/dist/utils/hex.js +0 -124
- package/dist/utils/inspector.js +1 -69
- package/dist/utils/isValid.js +0 -93
- package/dist/utils/network.js +5 -125
- package/dist/utils/spawn.js +1 -71
- package/dist/utils/tracker.js +1 -64
- package/dist/utils/wait.js +8 -60
- package/dist/workerGlobalPrefix.js +5 -37
- package/dist/workerTypes.js +0 -24
- package/dist/workers.js +4 -68
- package/npm-shrinkwrap.json +25 -25
- package/package.json +1 -2
- package/packages/mb-lib-test/dist/jestutils/jestHelpers.d.ts +21 -0
- package/packages/mb-lib-test/dist/jestutils/jestHelpers.js +77 -0
- package/packages/mb-lib-test/dist/module.d.ts +2 -0
- package/packages/mb-lib-test/dist/module.js +2 -0
- package/packages/mb-lib-test/dist/vitestutils/vitestHelpers.d.ts +21 -0
- package/packages/mb-lib-test/dist/vitestutils/vitestHelpers.js +77 -0
- package/packages/mb-lib-test/package.json +12 -11
- package/reflector/DockerDesktopSetup.png +0 -0
- package/reflector/Reflector.md +158 -0
- package/reflector/ReflectorClient.png +0 -0
- package/reflector/ReflectorServer.png +0 -0
- package/reflector/docker-compose.yml +32 -0
- package/reflector/mDnsPacket.png +0 -0
- package/dist/broadcastServer.d.ts +0 -144
- package/dist/broadcastServer.d.ts.map +0 -1
- package/dist/broadcastServer.js.map +0 -1
- package/dist/broadcastServerTypes.d.ts +0 -841
- package/dist/broadcastServerTypes.d.ts.map +0 -1
- package/dist/broadcastServerTypes.js.map +0 -1
- package/dist/cli.d.ts +0 -30
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/cliEmitter.d.ts +0 -50
- package/dist/cliEmitter.d.ts.map +0 -1
- package/dist/cliEmitter.js.map +0 -1
- package/dist/cliHistory.d.ts +0 -48
- package/dist/cliHistory.d.ts.map +0 -1
- package/dist/cliHistory.js.map +0 -1
- package/dist/clusters/export.d.ts +0 -2
- package/dist/clusters/export.d.ts.map +0 -1
- package/dist/clusters/export.js.map +0 -1
- package/dist/deviceManager.d.ts +0 -135
- package/dist/deviceManager.d.ts.map +0 -1
- package/dist/deviceManager.js.map +0 -1
- package/dist/devices/airConditioner.d.ts +0 -98
- package/dist/devices/airConditioner.d.ts.map +0 -1
- package/dist/devices/airConditioner.js.map +0 -1
- package/dist/devices/batteryStorage.d.ts +0 -48
- package/dist/devices/batteryStorage.d.ts.map +0 -1
- package/dist/devices/batteryStorage.js.map +0 -1
- package/dist/devices/cooktop.d.ts +0 -61
- package/dist/devices/cooktop.d.ts.map +0 -1
- package/dist/devices/cooktop.js.map +0 -1
- package/dist/devices/dishwasher.d.ts +0 -71
- package/dist/devices/dishwasher.d.ts.map +0 -1
- package/dist/devices/dishwasher.js.map +0 -1
- package/dist/devices/evse.d.ts +0 -76
- package/dist/devices/evse.d.ts.map +0 -1
- package/dist/devices/evse.js.map +0 -1
- package/dist/devices/export.d.ts +0 -17
- package/dist/devices/export.d.ts.map +0 -1
- package/dist/devices/export.js.map +0 -1
- package/dist/devices/extractorHood.d.ts +0 -46
- package/dist/devices/extractorHood.d.ts.map +0 -1
- package/dist/devices/extractorHood.js.map +0 -1
- package/dist/devices/heatPump.d.ts +0 -47
- package/dist/devices/heatPump.d.ts.map +0 -1
- package/dist/devices/heatPump.js.map +0 -1
- package/dist/devices/laundryDryer.d.ts +0 -67
- package/dist/devices/laundryDryer.d.ts.map +0 -1
- package/dist/devices/laundryDryer.js.map +0 -1
- package/dist/devices/laundryWasher.d.ts +0 -81
- package/dist/devices/laundryWasher.d.ts.map +0 -1
- package/dist/devices/laundryWasher.js.map +0 -1
- package/dist/devices/microwaveOven.d.ts +0 -168
- package/dist/devices/microwaveOven.d.ts.map +0 -1
- package/dist/devices/microwaveOven.js.map +0 -1
- package/dist/devices/oven.d.ts +0 -105
- package/dist/devices/oven.d.ts.map +0 -1
- package/dist/devices/oven.js.map +0 -1
- package/dist/devices/refrigerator.d.ts +0 -118
- package/dist/devices/refrigerator.d.ts.map +0 -1
- package/dist/devices/refrigerator.js.map +0 -1
- package/dist/devices/roboticVacuumCleaner.d.ts +0 -112
- package/dist/devices/roboticVacuumCleaner.d.ts.map +0 -1
- package/dist/devices/roboticVacuumCleaner.js.map +0 -1
- package/dist/devices/solarPower.d.ts +0 -40
- package/dist/devices/solarPower.d.ts.map +0 -1
- package/dist/devices/solarPower.js.map +0 -1
- package/dist/devices/speaker.d.ts +0 -87
- package/dist/devices/speaker.d.ts.map +0 -1
- package/dist/devices/speaker.js.map +0 -1
- package/dist/devices/temperatureControl.d.ts +0 -166
- package/dist/devices/temperatureControl.d.ts.map +0 -1
- package/dist/devices/temperatureControl.js.map +0 -1
- package/dist/devices/waterHeater.d.ts +0 -111
- package/dist/devices/waterHeater.d.ts.map +0 -1
- package/dist/devices/waterHeater.js.map +0 -1
- package/dist/dgram/coap.d.ts +0 -205
- package/dist/dgram/coap.d.ts.map +0 -1
- package/dist/dgram/coap.js.map +0 -1
- package/dist/dgram/dgram.d.ts +0 -143
- package/dist/dgram/dgram.d.ts.map +0 -1
- package/dist/dgram/dgram.js.map +0 -1
- package/dist/dgram/mb_coap.d.ts +0 -24
- package/dist/dgram/mb_coap.d.ts.map +0 -1
- package/dist/dgram/mb_coap.js.map +0 -1
- package/dist/dgram/mb_mdns.d.ts +0 -24
- package/dist/dgram/mb_mdns.d.ts.map +0 -1
- package/dist/dgram/mb_mdns.js.map +0 -1
- package/dist/dgram/mdns.d.ts +0 -371
- package/dist/dgram/mdns.d.ts.map +0 -1
- package/dist/dgram/mdns.js.map +0 -1
- package/dist/dgram/mdnsReflectorClient.d.ts +0 -88
- package/dist/dgram/mdnsReflectorClient.d.ts.map +0 -1
- package/dist/dgram/mdnsReflectorClient.js.map +0 -1
- package/dist/dgram/mdnsReflectorServer.d.ts +0 -78
- package/dist/dgram/mdnsReflectorServer.d.ts.map +0 -1
- package/dist/dgram/mdnsReflectorServer.js.map +0 -1
- package/dist/dgram/mdnsReflectorTypes.d.ts +0 -28
- package/dist/dgram/mdnsReflectorTypes.d.ts.map +0 -1
- package/dist/dgram/mdnsReflectorTypes.js.map +0 -1
- package/dist/dgram/multicast.d.ts +0 -67
- package/dist/dgram/multicast.d.ts.map +0 -1
- package/dist/dgram/multicast.js.map +0 -1
- package/dist/dgram/unicast.d.ts +0 -64
- package/dist/dgram/unicast.d.ts.map +0 -1
- package/dist/dgram/unicast.js.map +0 -1
- package/dist/frontend.d.ts +0 -245
- package/dist/frontend.d.ts.map +0 -1
- package/dist/frontend.js.map +0 -1
- package/dist/frontendTypes.d.ts +0 -529
- package/dist/frontendTypes.d.ts.map +0 -1
- package/dist/frontendTypes.js.map +0 -1
- package/dist/helpers.d.ts +0 -48
- package/dist/helpers.d.ts.map +0 -1
- package/dist/helpers.js.map +0 -1
- package/dist/index.d.ts +0 -34
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/jestutils/export.d.ts +0 -2
- package/dist/jestutils/export.d.ts.map +0 -1
- package/dist/jestutils/export.js.map +0 -1
- package/dist/jestutils/jestHelpers.d.ts +0 -345
- package/dist/jestutils/jestHelpers.d.ts.map +0 -1
- package/dist/jestutils/jestHelpers.js.map +0 -1
- package/dist/logger/export.d.ts +0 -2
- package/dist/logger/export.d.ts.map +0 -1
- package/dist/logger/export.js.map +0 -1
- package/dist/matter/behaviors.d.ts +0 -2
- package/dist/matter/behaviors.d.ts.map +0 -1
- package/dist/matter/behaviors.js.map +0 -1
- package/dist/matter/clusters.d.ts +0 -2
- package/dist/matter/clusters.d.ts.map +0 -1
- package/dist/matter/clusters.js.map +0 -1
- package/dist/matter/devices.d.ts +0 -2
- package/dist/matter/devices.d.ts.map +0 -1
- package/dist/matter/devices.js.map +0 -1
- package/dist/matter/endpoints.d.ts +0 -2
- package/dist/matter/endpoints.d.ts.map +0 -1
- package/dist/matter/endpoints.js.map +0 -1
- package/dist/matter/export.d.ts +0 -5
- package/dist/matter/export.d.ts.map +0 -1
- package/dist/matter/export.js.map +0 -1
- package/dist/matter/types.d.ts +0 -3
- package/dist/matter/types.d.ts.map +0 -1
- package/dist/matter/types.js.map +0 -1
- package/dist/matterNode.d.ts +0 -342
- package/dist/matterNode.d.ts.map +0 -1
- package/dist/matterNode.js.map +0 -1
- package/dist/matterbridge.d.ts +0 -505
- package/dist/matterbridge.d.ts.map +0 -1
- package/dist/matterbridge.js.map +0 -1
- package/dist/matterbridgeAccessoryPlatform.d.ts +0 -41
- package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
- package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
- package/dist/matterbridgeBehaviors.d.ts +0 -2404
- package/dist/matterbridgeBehaviors.d.ts.map +0 -1
- package/dist/matterbridgeBehaviors.js.map +0 -1
- package/dist/matterbridgeDeviceTypes.d.ts +0 -698
- package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
- package/dist/matterbridgeDeviceTypes.js.map +0 -1
- package/dist/matterbridgeDynamicPlatform.d.ts +0 -41
- package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
- package/dist/matterbridgeDynamicPlatform.js.map +0 -1
- package/dist/matterbridgeEndpoint.d.ts +0 -1507
- package/dist/matterbridgeEndpoint.d.ts.map +0 -1
- package/dist/matterbridgeEndpoint.js.map +0 -1
- package/dist/matterbridgeEndpointHelpers.d.ts +0 -787
- package/dist/matterbridgeEndpointHelpers.d.ts.map +0 -1
- package/dist/matterbridgeEndpointHelpers.js.map +0 -1
- package/dist/matterbridgeEndpointTypes.d.ts +0 -166
- package/dist/matterbridgeEndpointTypes.d.ts.map +0 -1
- package/dist/matterbridgeEndpointTypes.js.map +0 -1
- package/dist/matterbridgePlatform.d.ts +0 -539
- package/dist/matterbridgePlatform.d.ts.map +0 -1
- package/dist/matterbridgePlatform.js.map +0 -1
- package/dist/matterbridgeTypes.d.ts +0 -252
- package/dist/matterbridgeTypes.d.ts.map +0 -1
- package/dist/matterbridgeTypes.js.map +0 -1
- package/dist/pluginManager.d.ts +0 -372
- package/dist/pluginManager.d.ts.map +0 -1
- package/dist/pluginManager.js.map +0 -1
- package/dist/shelly.d.ts +0 -181
- package/dist/shelly.d.ts.map +0 -1
- package/dist/shelly.js.map +0 -1
- package/dist/storage/export.d.ts +0 -2
- package/dist/storage/export.d.ts.map +0 -1
- package/dist/storage/export.js.map +0 -1
- package/dist/update.d.ts +0 -84
- package/dist/update.d.ts.map +0 -1
- package/dist/update.js.map +0 -1
- package/dist/utils/colorUtils.d.ts +0 -101
- package/dist/utils/colorUtils.d.ts.map +0 -1
- package/dist/utils/colorUtils.js.map +0 -1
- package/dist/utils/commandLine.d.ts +0 -66
- package/dist/utils/commandLine.d.ts.map +0 -1
- package/dist/utils/commandLine.js.map +0 -1
- package/dist/utils/copyDirectory.d.ts +0 -35
- package/dist/utils/copyDirectory.d.ts.map +0 -1
- package/dist/utils/copyDirectory.js.map +0 -1
- package/dist/utils/createDirectory.d.ts +0 -34
- package/dist/utils/createDirectory.d.ts.map +0 -1
- package/dist/utils/createDirectory.js.map +0 -1
- package/dist/utils/createZip.d.ts +0 -39
- package/dist/utils/createZip.d.ts.map +0 -1
- package/dist/utils/createZip.js.map +0 -1
- package/dist/utils/deepCopy.d.ts +0 -32
- package/dist/utils/deepCopy.d.ts.map +0 -1
- package/dist/utils/deepCopy.js.map +0 -1
- package/dist/utils/deepEqual.d.ts +0 -54
- package/dist/utils/deepEqual.d.ts.map +0 -1
- package/dist/utils/deepEqual.js.map +0 -1
- package/dist/utils/error.d.ts +0 -45
- package/dist/utils/error.d.ts.map +0 -1
- package/dist/utils/error.js.map +0 -1
- package/dist/utils/export.d.ts +0 -13
- package/dist/utils/export.d.ts.map +0 -1
- package/dist/utils/export.js.map +0 -1
- package/dist/utils/format.d.ts +0 -53
- package/dist/utils/format.d.ts.map +0 -1
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/hex.d.ts +0 -89
- package/dist/utils/hex.d.ts.map +0 -1
- package/dist/utils/hex.js.map +0 -1
- package/dist/utils/inspector.d.ts +0 -87
- package/dist/utils/inspector.d.ts.map +0 -1
- package/dist/utils/inspector.js.map +0 -1
- package/dist/utils/isValid.d.ts +0 -103
- package/dist/utils/isValid.d.ts.map +0 -1
- package/dist/utils/isValid.js.map +0 -1
- package/dist/utils/network.d.ts +0 -140
- package/dist/utils/network.d.ts.map +0 -1
- package/dist/utils/network.js.map +0 -1
- package/dist/utils/spawn.d.ts +0 -33
- package/dist/utils/spawn.d.ts.map +0 -1
- package/dist/utils/spawn.js.map +0 -1
- package/dist/utils/tracker.d.ts +0 -108
- package/dist/utils/tracker.d.ts.map +0 -1
- package/dist/utils/tracker.js.map +0 -1
- package/dist/utils/wait.d.ts +0 -54
- package/dist/utils/wait.d.ts.map +0 -1
- package/dist/utils/wait.js.map +0 -1
- package/dist/workerGlobalPrefix.d.ts +0 -25
- package/dist/workerGlobalPrefix.d.ts.map +0 -1
- package/dist/workerGlobalPrefix.js.map +0 -1
- package/dist/workerTypes.d.ts +0 -52
- package/dist/workerTypes.d.ts.map +0 -1
- package/dist/workerTypes.js.map +0 -1
- package/dist/workers.d.ts +0 -69
- package/dist/workers.d.ts.map +0 -1
- package/dist/workers.js.map +0 -1
- package/scripts/data_model.mjs +0 -2058
- package/scripts/fetch-chip.mjs +0 -102
- package/scripts/marked.mjs +0 -133
- package/scripts/markedFooter.html +0 -42
- package/scripts/markedHeader.html +0 -78
package/scripts/fetch-chip.mjs
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
2
|
-
import { mkdir, writeFile } from 'node:fs/promises';
|
|
3
|
-
import { dirname, join as pathJoin, sep as pathSep } from 'node:path';
|
|
4
|
-
import https from 'node:https';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Fetch the canonical Matter ZCL JSON file from the connectedhomeip repository
|
|
8
|
-
* and store it locally for offline / deterministic revision checks.
|
|
9
|
-
*
|
|
10
|
-
* Environment overrides:
|
|
11
|
-
* - ZCL_OUT: output path for zcl.json (default: chip/zcl.json)
|
|
12
|
-
* - ZCL_BRANCH: connectedhomeip branch to fetch from (default: v1.4-branch)
|
|
13
|
-
*/
|
|
14
|
-
// Single branch strategy from online only
|
|
15
|
-
const BRANCH = process.env.ZCL_BRANCH || 'v1.4.2-branch';
|
|
16
|
-
const OUT_ZCL_PATH = process.env.ZCL_OUT || `chip/${BRANCH}/zcl.json`;
|
|
17
|
-
const OUT_MANUFACTURERS_PATH = process.env.MANUFACTURERS_OUT || `chip/${BRANCH}/manufacturers.xml`;
|
|
18
|
-
const ZCL_BASE_URL = `https://raw.githubusercontent.com/project-chip/connectedhomeip/${BRANCH}/src/app/zap-templates/zcl/`;
|
|
19
|
-
const ZCL_JSON_URL = ZCL_BASE_URL + 'zcl.json';
|
|
20
|
-
const MANUFACTURERS_URL = ZCL_BASE_URL + 'data-model/manufacturers.xml';
|
|
21
|
-
const XML_BASE_URL = ZCL_BASE_URL + 'data-model/chip/';
|
|
22
|
-
|
|
23
|
-
function fetchUrl(url) {
|
|
24
|
-
return new Promise((resolve, reject) => {
|
|
25
|
-
https
|
|
26
|
-
.get(url, (res) => {
|
|
27
|
-
if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
|
|
28
|
-
// Follow redirect
|
|
29
|
-
return resolve(fetchUrl(res.headers.location));
|
|
30
|
-
}
|
|
31
|
-
if (res.statusCode !== 200) {
|
|
32
|
-
return reject(new Error(`Failed to fetch ${url}: ${res.statusCode}`));
|
|
33
|
-
}
|
|
34
|
-
const chunks = [];
|
|
35
|
-
res.on('data', (c) => chunks.push(c));
|
|
36
|
-
res.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
|
|
37
|
-
})
|
|
38
|
-
.on('error', reject);
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
async function main() {
|
|
43
|
-
await mkdir(dirname(OUT_ZCL_PATH), { recursive: true });
|
|
44
|
-
// Always fetch online from the specified branch
|
|
45
|
-
const data = await fetchUrl(ZCL_JSON_URL);
|
|
46
|
-
|
|
47
|
-
// Structural sanity check: this is a ZAP ZCL properties file, expected to include xml roots and files
|
|
48
|
-
let parsed;
|
|
49
|
-
try {
|
|
50
|
-
parsed = JSON.parse(data);
|
|
51
|
-
} catch (e) {
|
|
52
|
-
throw new Error(`Downloaded content is not valid JSON: ${e.message}`);
|
|
53
|
-
}
|
|
54
|
-
if (!parsed || typeof parsed !== 'object' || !Array.isArray(parsed.xmlFile)) {
|
|
55
|
-
process.stderr.write('Warning: zcl.json does not contain expected ZAP ZCL properties (xmlFile). Saving anyway for manual inspection.\n');
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
await writeFile(OUT_ZCL_PATH, JSON.stringify(parsed, null, 2));
|
|
59
|
-
process.stderr.write(`Saved ${OUT_ZCL_PATH}. Branch=${BRANCH}\n`);
|
|
60
|
-
|
|
61
|
-
// Also fetch manufacturers.xml to chip/manufacturers.xml from the same branch
|
|
62
|
-
try {
|
|
63
|
-
const manuContent = await fetchUrl(MANUFACTURERS_URL);
|
|
64
|
-
await writeFile(OUT_MANUFACTURERS_PATH, manuContent);
|
|
65
|
-
process.stderr.write(`Saved ${OUT_MANUFACTURERS_PATH}. Branch=${BRANCH}\n`);
|
|
66
|
-
} catch (e) {
|
|
67
|
-
process.stderr.write(`Warning: failed to fetch manufacturers.xml (${e.message}).\n`);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// Always fetch XMLs referenced by zcl.json from the same branch under data-model/chip
|
|
71
|
-
const xmlFiles = Array.isArray(parsed.xmlFile) ? parsed.xmlFile : [];
|
|
72
|
-
if (xmlFiles.length === 0) {
|
|
73
|
-
process.stderr.write('No xmlFile entries found; skipping XML fetch.\n');
|
|
74
|
-
} else {
|
|
75
|
-
const outXmlBase = `chip/${BRANCH}/xml`;
|
|
76
|
-
await mkdir(outXmlBase, { recursive: true });
|
|
77
|
-
let ok = 0;
|
|
78
|
-
let fail = 0;
|
|
79
|
-
for (const fileName of xmlFiles) {
|
|
80
|
-
const relative = fileName.trim();
|
|
81
|
-
try {
|
|
82
|
-
const url = XML_BASE_URL + relative;
|
|
83
|
-
const content = await fetchUrl(url);
|
|
84
|
-
const outPath = pathJoin(outXmlBase, relative.replaceAll('/', pathSep));
|
|
85
|
-
await mkdir(dirname(outPath), { recursive: true });
|
|
86
|
-
await writeFile(outPath, content);
|
|
87
|
-
ok++;
|
|
88
|
-
} catch (e) {
|
|
89
|
-
fail++;
|
|
90
|
-
process.stderr.write(`Failed XML: ${relative} (${e.message})\n`);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
process.stderr.write(`Fetched XML files: ${ok} ok, ${fail} failed. Output under ${outXmlBase}. Branch=${BRANCH}\n`);
|
|
94
|
-
}
|
|
95
|
-
// Ensure success exit unless an unhandled error occurred
|
|
96
|
-
process.exit(0);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
main().catch((err) => {
|
|
100
|
-
process.stderr.write(`Error: ${err.message}\n`);
|
|
101
|
-
process.exitCode = 1;
|
|
102
|
-
});
|
package/scripts/marked.mjs
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-console */
|
|
2
|
-
import { readFile, writeFile } from 'node:fs/promises';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
import { fileURLToPath } from 'node:url';
|
|
5
|
-
|
|
6
|
-
import { Marked, TextRenderer } from 'marked';
|
|
7
|
-
|
|
8
|
-
const ROOT_DIR = fileURLToPath(new URL('.', import.meta.url));
|
|
9
|
-
const MD_DIR = join(ROOT_DIR, '..');
|
|
10
|
-
console.log(`Generating marked HTML files from ${MD_DIR}`);
|
|
11
|
-
const DOCS_DIR = join(ROOT_DIR, '..', 'docs');
|
|
12
|
-
console.log(`Generating marked HTML files in ${DOCS_DIR}`);
|
|
13
|
-
const HEADER_PATH = join(ROOT_DIR, 'markedHeader.html');
|
|
14
|
-
const FOOTER_PATH = join(ROOT_DIR, 'markedFooter.html');
|
|
15
|
-
|
|
16
|
-
const HEADING_FALLBACK_PREFIX = 'heading';
|
|
17
|
-
|
|
18
|
-
const slugifyHeading = (text) => {
|
|
19
|
-
const normalized = text
|
|
20
|
-
.normalize('NFKD')
|
|
21
|
-
.replace(/[\u0300-\u036f]/gu, '')
|
|
22
|
-
.toLowerCase();
|
|
23
|
-
|
|
24
|
-
return normalized
|
|
25
|
-
.replace(/[^a-z0-9\s-]/g, '')
|
|
26
|
-
.trim()
|
|
27
|
-
.replace(/[\s_-]+/g, '-')
|
|
28
|
-
.replace(/^-+|-+$/g, '');
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const createSlugGenerator = () => {
|
|
32
|
-
const counts = new Map();
|
|
33
|
-
|
|
34
|
-
return (rawText) => {
|
|
35
|
-
const base = slugifyHeading(rawText) || HEADING_FALLBACK_PREFIX;
|
|
36
|
-
const usage = counts.get(base) ?? 0;
|
|
37
|
-
counts.set(base, usage + 1);
|
|
38
|
-
return usage > 0 ? `${base}-${usage}` : base;
|
|
39
|
-
};
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
const createMarkdownParser = () => {
|
|
43
|
-
const textRenderer = new TextRenderer();
|
|
44
|
-
const nextSlug = createSlugGenerator();
|
|
45
|
-
|
|
46
|
-
return new Marked({
|
|
47
|
-
gfm: true,
|
|
48
|
-
mangle: false,
|
|
49
|
-
renderer: {
|
|
50
|
-
heading(token) {
|
|
51
|
-
const inlineHtml = this.parser.parseInline(token.tokens);
|
|
52
|
-
const plainText = this.parser.parseInline(token.tokens, textRenderer).trim();
|
|
53
|
-
const slug = nextSlug(plainText);
|
|
54
|
-
return `<h${token.depth} id="${slug}">${inlineHtml}</h${token.depth}>\n`;
|
|
55
|
-
},
|
|
56
|
-
},
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
// Replicates marked.ps1 targets for cross-platform doc generation.
|
|
61
|
-
const FILES_TO_RENDER = [
|
|
62
|
-
{ source: 'README-DEV.md', target: 'README-DEV.html' },
|
|
63
|
-
{ source: 'README-DOCKER.md', target: 'README-DOCKER.html' },
|
|
64
|
-
{ source: 'README-MACOS-PLIST.md', target: 'README-MACOS-PLIST.html' },
|
|
65
|
-
{ source: 'README-NGINX.md', target: 'README-NGINX.html' },
|
|
66
|
-
{ source: 'README-PODMAN.md', target: 'README-PODMAN.html' },
|
|
67
|
-
{ source: 'README-SERVICE-LOCAL.md', target: 'README-SERVICE-LOCAL.html' },
|
|
68
|
-
{ source: 'README-SERVICE-OPT.md', target: 'README-SERVICE-OPT.html' },
|
|
69
|
-
{ source: 'README-SERVICE.md', target: 'README-SERVICE.html' },
|
|
70
|
-
{ source: 'README.md', target: 'README.html' },
|
|
71
|
-
{ source: 'CHANGELOG.md', target: 'CHANGELOG.html' },
|
|
72
|
-
{ source: 'docker-reflector/Docker reflector.md', target: 'docker-reflector/Docker reflector.html' },
|
|
73
|
-
];
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Render configured markdown documents with the shared header and footer.
|
|
77
|
-
*
|
|
78
|
-
* @param {string} header HTML header template.
|
|
79
|
-
* @param {string} footer HTML footer template.
|
|
80
|
-
* @returns {Promise<void>} Resolves once all files are written.
|
|
81
|
-
*/
|
|
82
|
-
async function renderMarkdownFiles(header, footer) {
|
|
83
|
-
for (const { source, target } of FILES_TO_RENDER) {
|
|
84
|
-
const markdownPath = join(MD_DIR, source);
|
|
85
|
-
const targetPath = join(DOCS_DIR, target);
|
|
86
|
-
const markdown = await readFile(markdownPath, 'utf8');
|
|
87
|
-
const parser = createMarkdownParser();
|
|
88
|
-
const body = await parser.parse(markdown);
|
|
89
|
-
|
|
90
|
-
await writeFile(targetPath, `${header}${body}${footer}`, 'utf8');
|
|
91
|
-
console.log(`Rendered ${source} to ${target}`);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Apply post-processing replacements to generated HTML files.
|
|
97
|
-
*
|
|
98
|
-
* @param {string[]} htmlFiles HTML files to update.
|
|
99
|
-
* @returns {Promise<void>} Resolves when replacements are applied.
|
|
100
|
-
*/
|
|
101
|
-
async function applyReplacements(htmlFiles) {
|
|
102
|
-
for (const filePath of htmlFiles) {
|
|
103
|
-
const originalContent = await readFile(filePath, 'utf8');
|
|
104
|
-
let updatedContent = originalContent.replace(/\.md/g, '.html');
|
|
105
|
-
updatedContent = updatedContent.replace(/→/g, '->');
|
|
106
|
-
updatedContent = updatedContent.replace(/Γ£à/g, '✔');
|
|
107
|
-
|
|
108
|
-
if (updatedContent !== originalContent) {
|
|
109
|
-
await writeFile(filePath, updatedContent, 'utf8');
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Build HTML documentation mirroring the original PowerShell workflow.
|
|
116
|
-
*
|
|
117
|
-
* @returns {Promise<void>} Resolves on success.
|
|
118
|
-
*/
|
|
119
|
-
async function main() {
|
|
120
|
-
const header = await readFile(HEADER_PATH, 'utf8');
|
|
121
|
-
const footer = await readFile(FOOTER_PATH, 'utf8');
|
|
122
|
-
|
|
123
|
-
await renderMarkdownFiles(header, footer);
|
|
124
|
-
|
|
125
|
-
const htmlFiles = FILES_TO_RENDER.map(({ target }) => join(DOCS_DIR, target));
|
|
126
|
-
await applyReplacements(htmlFiles);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
main().catch((error) => {
|
|
130
|
-
const message = error instanceof Error ? (error.stack ?? error.message) : String(error);
|
|
131
|
-
process.stderr.write(`Failed to generate marked HTML files: ${message}\n`);
|
|
132
|
-
process.exitCode = 1;
|
|
133
|
-
});
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
const copyIcon = '<svg viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path d="M11 1H3c-.6 0-1 .4-1 1v10h2V3h7V1zm2 3H6c-.6 0-1 .4-1 1v10c0 .6.4 1 1 1h7c.6 0 1-.4 1-1V5c0-.6-.4-1-1-1zm-1 10H7V6h5v8z"></path></svg>';
|
|
3
|
-
const successIcon = '<svg viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path d="M6.5 10.7L4.3 8.5 3 9.8l3.5 3.5 6.5-6.5-1.3-1.3z"></path></svg>';
|
|
4
|
-
|
|
5
|
-
document.querySelectorAll('pre').forEach(block => {
|
|
6
|
-
const button = document.createElement('button');
|
|
7
|
-
button.type = 'button';
|
|
8
|
-
button.className = 'copy-btn';
|
|
9
|
-
button.setAttribute('aria-label', 'Copy code snippet');
|
|
10
|
-
button.innerHTML = copyIcon;
|
|
11
|
-
|
|
12
|
-
let resetTimer;
|
|
13
|
-
button.addEventListener('click', async () => {
|
|
14
|
-
const code = block.querySelector('code')?.innerText ?? '';
|
|
15
|
-
try {
|
|
16
|
-
await navigator.clipboard.writeText(code);
|
|
17
|
-
} catch {
|
|
18
|
-
const textarea = document.createElement('textarea');
|
|
19
|
-
textarea.value = code;
|
|
20
|
-
textarea.style.position = 'fixed';
|
|
21
|
-
textarea.style.opacity = '0';
|
|
22
|
-
document.body.appendChild(textarea);
|
|
23
|
-
textarea.focus();
|
|
24
|
-
textarea.select();
|
|
25
|
-
document.execCommand('copy');
|
|
26
|
-
textarea.remove();
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
clearTimeout(resetTimer);
|
|
30
|
-
button.innerHTML = successIcon;
|
|
31
|
-
button.classList.add('copied');
|
|
32
|
-
resetTimer = setTimeout(() => {
|
|
33
|
-
button.innerHTML = copyIcon;
|
|
34
|
-
button.classList.remove('copied');
|
|
35
|
-
}, 2000);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
block.appendChild(button);
|
|
39
|
-
});
|
|
40
|
-
</script>
|
|
41
|
-
</body>
|
|
42
|
-
</html>
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<title>Matterbridge</title>
|
|
6
|
-
<link rel="icon" type="image/svg+xml" href="matterbridge.svg">
|
|
7
|
-
<style>
|
|
8
|
-
body {
|
|
9
|
-
font-family: Roboto, Arial, 'Helvetica Neue', sans-serif;
|
|
10
|
-
line-height: 1.6;
|
|
11
|
-
margin: 40px;
|
|
12
|
-
}
|
|
13
|
-
h1, h2, h3 {
|
|
14
|
-
font-family: 'Roboto Slab', Roboto, Arial, 'Helvetica Neue', sans-serif;
|
|
15
|
-
color: #263238;
|
|
16
|
-
scroll-margin-top: 90px;
|
|
17
|
-
margin-top: 2.5rem;
|
|
18
|
-
margin-bottom: 1rem;
|
|
19
|
-
}
|
|
20
|
-
h1 {
|
|
21
|
-
font-size: 2.4rem;
|
|
22
|
-
font-weight: 700;
|
|
23
|
-
letter-spacing: -0.01em;
|
|
24
|
-
position: relative;
|
|
25
|
-
padding-bottom: 1.1rem;
|
|
26
|
-
}
|
|
27
|
-
h2 {
|
|
28
|
-
font-size: 1.8rem;
|
|
29
|
-
font-weight: 600;
|
|
30
|
-
border-bottom: 2px solid #e0e0e0;
|
|
31
|
-
padding-bottom: 0.35rem;
|
|
32
|
-
color: #41535b;
|
|
33
|
-
}
|
|
34
|
-
h3 {
|
|
35
|
-
font-size: 1.10rem;
|
|
36
|
-
font-weight: 600;
|
|
37
|
-
text-transform: uppercase;
|
|
38
|
-
letter-spacing: 0.06em;
|
|
39
|
-
color: #455a64;
|
|
40
|
-
}
|
|
41
|
-
pre {
|
|
42
|
-
background: #e4e7ec;
|
|
43
|
-
color: #000000;
|
|
44
|
-
padding: 10px 56px 10px 10px;
|
|
45
|
-
border-radius: 0.5rem;
|
|
46
|
-
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
|
|
47
|
-
font-size: 0.875rem;
|
|
48
|
-
margin: 10px 20px 10px 0px;
|
|
49
|
-
position: relative;
|
|
50
|
-
}
|
|
51
|
-
.copy-btn {
|
|
52
|
-
display: flex;
|
|
53
|
-
align-items: center;
|
|
54
|
-
justify-content: center;
|
|
55
|
-
width: 24px;
|
|
56
|
-
height: 24px;
|
|
57
|
-
padding: 0;
|
|
58
|
-
cursor: pointer;
|
|
59
|
-
border: none;
|
|
60
|
-
border-radius: 4px;
|
|
61
|
-
background: #eee;
|
|
62
|
-
color: #333;
|
|
63
|
-
position: absolute;
|
|
64
|
-
top: 8px;
|
|
65
|
-
right: 8px;
|
|
66
|
-
transition: color 0.2s ease;
|
|
67
|
-
}
|
|
68
|
-
.copy-btn svg {
|
|
69
|
-
width: 16px;
|
|
70
|
-
height: 16px;
|
|
71
|
-
fill: currentColor;
|
|
72
|
-
}
|
|
73
|
-
.copy-btn.copied {
|
|
74
|
-
color: #1b5e20;
|
|
75
|
-
}
|
|
76
|
-
</style>
|
|
77
|
-
</head>
|
|
78
|
-
<body>
|