* feat: Live loading of external JS (converters/extensions)
* Fix imports
* Improve error message on MQTT save
* Handle non-existing base path
* Throw on bad converter
* Add tests
* Fix use of ext conv in network map tests.
* More coverage.
* Dont mock zhc for basics, tests actual live loading
* Update
* feat: Live loading of external JS (converters/extensions)
* Fix imports
* Improve error message on MQTT save
* Handle non-existing base path
* Throw on bad converter
* Add tests
* Fix use of ext conv in network map tests.
* More coverage.
* Dont mock zhc for basics, tests actual live loading
* Update
* Fix rebase
* Fix
* Bump zhc
* pretty
* fix typing
* Cleanup `external_converters` setting remnants.
---------
Co-authored-by: Koen Kanters <koenkanters94@gmail.com>
* fix: Use async for mqtt.
* Update mocks, fix expects
* Prettier.
* Use appropriate error for publish
* Set max listeners immediately after connect
* Add mqtt v5+ `disconnect` event handler
* Set maximum packet size in `CONNECT` packet
* Fix tests.
* Add setting for maximum packet size.
* Add `reasonString` to disconnect logs
* Fix tests
* Fix
* Prettier
* exclude homeassistant entries from null cleanup
* Add a test
* Don't hardcode the exclude list, add one more test
* implement suggested changes as per review
* Add endpoint matching based on the endpoint names list in the device definition
* Cleanup debug prints
* Correct creating endpoint names list, filter out null elements
* Correct test due to slightly changed behavior
* Fix endpoint name lookup when converter does not provide full name-to-id mapping
* Simplify topic name matching
* Remove obsolete branches, improve code coverage
* Make linter happy
* Make linter happy
* Remove dependency on endpoint names while removing device from all groups
* Get rid of predefined list of endpoints when processing group state update
---------
Co-authored-by: Koen Kanters <koenkanters94@gmail.com>
* fix for TypeError: The "path" argument must be of type string in writeDevicesOrGroups
* added test case that produces the error when running on old implementation
Summary of all failing tests
FAIL test/settings.test.js
● Settings › Should add devices even when devices exist empty
TypeError: The "path" argument must be of type string. Received undefined
275 |
276 | jest.mock('../../lib/util/data', () => ({
> 277 | joinPath: (file) => require('path').join(mockDir, file),
| ^
278 | getPath: () => mockDir,
279 | }));
280 |
at Object.join [as joinPath] (test/stub/data.js:277:41)
at joinPath (lib/util/settings.ts:245:38)
at writeDevicesOrGroups (lib/util/settings.ts:250:5)
at Object.write [as addDevice] (lib/util/settings.ts:555:5)
at Object.addDevice (test/settings.test.js:128:18)
* Extract parsing of value reference '!' in settings into a function
* Allow to specify full file name in value reference '!'
This `network_key: '!secret network_key'` is really confusing because
it looks like a YAML tag named 'secret' and a value "network_key".
When we write `network_key: '!secret.yaml network_key'` instead, it's
a little clearer what's going on. Also, it's more consistent with file
references in 'devices' and 'groups'.
* add server, pan_id, ext_pan_id to secrets
* fix tests
* clean secrets before every test run
* add interpolation of mqtt.server, advanced.pan_id, advanced.ext_pan_id and split mqtt.user, mqtt.pass requirement
* remove pan_id and ext_pan_id from secrets processing