zwave-js 15.25.0 → 15.25.2

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.
Files changed (65) hide show
  1. package/build/cjs/lib/_version.d.ts +1 -1
  2. package/build/cjs/lib/_version.js +1 -1
  3. package/build/cjs/lib/_version.js.map +1 -1
  4. package/build/cjs/lib/controller/Controller.d.ts +3 -0
  5. package/build/cjs/lib/controller/Controller.js +134 -72
  6. package/build/cjs/lib/controller/Controller.js.map +2 -2
  7. package/build/cjs/lib/controller/FirmwareUpdateService.js +24 -17
  8. package/build/cjs/lib/controller/FirmwareUpdateService.js.map +2 -2
  9. package/build/cjs/lib/controller/ZWaveSDKVersions.js +1 -1
  10. package/build/cjs/lib/controller/ZWaveSDKVersions.js.map +2 -2
  11. package/build/cjs/lib/driver/Driver.d.ts +16 -5
  12. package/build/cjs/lib/driver/Driver.js +84 -104
  13. package/build/cjs/lib/driver/Driver.js.map +2 -2
  14. package/build/cjs/lib/driver/MessageGenerators.js +20 -1
  15. package/build/cjs/lib/driver/MessageGenerators.js.map +2 -2
  16. package/build/cjs/lib/driver/Task.d.ts +13 -0
  17. package/build/cjs/lib/driver/Task.js.map +2 -2
  18. package/build/cjs/lib/node/Node.d.ts +3 -1
  19. package/build/cjs/lib/node/Node.js +281 -133
  20. package/build/cjs/lib/node/Node.js.map +2 -2
  21. package/build/cjs/lib/node/feature-apis/AccessControl.js +82 -21
  22. package/build/cjs/lib/node/feature-apis/AccessControl.js.map +2 -2
  23. package/build/cjs/lib/node/mixins/40_Values.d.ts +1 -1
  24. package/build/cjs/lib/node/mixins/40_Values.js.map +2 -2
  25. package/build/cjs/lib/test/assertCC.d.ts +2 -2
  26. package/build/cjs/lib/test/assertCC.js.map +2 -2
  27. package/build/cjs/lib/test/integrationTestSuiteMulti.d.ts +1 -2
  28. package/build/cjs/lib/test/integrationTestSuiteMulti.js.map +1 -1
  29. package/build/esm/lib/_version.d.ts +1 -1
  30. package/build/esm/lib/_version.js +1 -1
  31. package/build/esm/lib/controller/Controller.d.ts +3 -0
  32. package/build/esm/lib/controller/Controller.d.ts.map +1 -1
  33. package/build/esm/lib/controller/Controller.js +176 -110
  34. package/build/esm/lib/controller/Controller.js.map +1 -1
  35. package/build/esm/lib/controller/FirmwareUpdateService.d.ts.map +1 -1
  36. package/build/esm/lib/controller/FirmwareUpdateService.js +32 -22
  37. package/build/esm/lib/controller/FirmwareUpdateService.js.map +1 -1
  38. package/build/esm/lib/controller/ZWaveSDKVersions.js +1 -1
  39. package/build/esm/lib/controller/ZWaveSDKVersions.js.map +1 -1
  40. package/build/esm/lib/driver/Driver.d.ts +16 -5
  41. package/build/esm/lib/driver/Driver.d.ts.map +1 -1
  42. package/build/esm/lib/driver/Driver.js +121 -143
  43. package/build/esm/lib/driver/Driver.js.map +1 -1
  44. package/build/esm/lib/driver/MessageGenerators.d.ts.map +1 -1
  45. package/build/esm/lib/driver/MessageGenerators.js +28 -4
  46. package/build/esm/lib/driver/MessageGenerators.js.map +1 -1
  47. package/build/esm/lib/driver/Task.d.ts +13 -0
  48. package/build/esm/lib/driver/Task.d.ts.map +1 -1
  49. package/build/esm/lib/driver/Task.js.map +1 -1
  50. package/build/esm/lib/node/Node.d.ts +3 -1
  51. package/build/esm/lib/node/Node.d.ts.map +1 -1
  52. package/build/esm/lib/node/Node.js +374 -177
  53. package/build/esm/lib/node/Node.js.map +1 -1
  54. package/build/esm/lib/node/feature-apis/AccessControl.d.ts.map +1 -1
  55. package/build/esm/lib/node/feature-apis/AccessControl.js +129 -30
  56. package/build/esm/lib/node/feature-apis/AccessControl.js.map +1 -1
  57. package/build/esm/lib/node/mixins/40_Values.d.ts +1 -1
  58. package/build/esm/lib/node/mixins/40_Values.d.ts.map +1 -1
  59. package/build/esm/lib/node/mixins/40_Values.js.map +1 -1
  60. package/build/esm/lib/test/assertCC.d.ts +2 -2
  61. package/build/esm/lib/test/assertCC.d.ts.map +1 -1
  62. package/build/esm/lib/test/assertCC.js.map +1 -1
  63. package/build/esm/lib/test/integrationTestSuiteMulti.d.ts +1 -2
  64. package/build/esm/lib/test/integrationTestSuiteMulti.d.ts.map +1 -1
  65. package/package.json +10 -10
@@ -1,3 +1,3 @@
1
- export declare const PACKAGE_VERSION = "15.25.0";
1
+ export declare const PACKAGE_VERSION = "15.25.2";
2
2
  export declare const PACKAGE_NAME = "zwave-js";
3
3
  //# sourceMappingURL=_version.d.ts.map
@@ -22,7 +22,7 @@ __export(version_exports, {
22
22
  PACKAGE_VERSION: () => PACKAGE_VERSION
23
23
  });
24
24
  module.exports = __toCommonJS(version_exports);
25
- const PACKAGE_VERSION = "15.25.0";
25
+ const PACKAGE_VERSION = "15.25.2";
26
26
  const PACKAGE_NAME = "zwave-js";
27
27
  // Annotate the CommonJS export names for ESM import in node:
28
28
  0 && (module.exports = {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/lib/_version.ts"],
4
- "sourcesContent": ["// This file is auto-generated by the codegen maintenance script\nexport const PACKAGE_VERSION = \"15.25.0\";\nexport const PACKAGE_NAME = \"zwave-js\";\n"],
4
+ "sourcesContent": ["// This file is auto-generated by the codegen maintenance script\nexport const PACKAGE_VERSION = \"15.25.2\";\nexport const PACKAGE_NAME = \"zwave-js\";\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;;;;;;AACO,MAAM,kBAAkB;AACxB,MAAM,eAAe;",
6
6
  "names": []
7
7
  }
@@ -735,6 +735,7 @@ export declare class ZWaveController extends TypedEventTarget<ControllerEventCal
735
735
  * @returns The raw NVM buffer
736
736
  */
737
737
  backupNVMRaw(onProgress?: (bytesRead: number, total: number) => void): Promise<BytesView>;
738
+ private getBackupNVMRawTask;
738
739
  private backupNVMRaw500;
739
740
  private backupNVMRaw700;
740
741
  /**
@@ -751,6 +752,7 @@ export declare class ZWaveController extends TypedEventTarget<ControllerEventCal
751
752
  * @param migrateOptions Influence which data should be preserved during a migration
752
753
  */
753
754
  restoreNVM(nvmData: BytesView, convertProgress?: (bytesRead: number, total: number) => void, restoreProgress?: (bytesWritten: number, total: number) => void, migrateOptions?: MigrateNVMOptions): Promise<void>;
755
+ private getRestoreNVMTask;
754
756
  /**
755
757
  * Restores an NVM backup that was created with `backupNVMRaw`. The Z-Wave radio is turned off/on automatically.
756
758
  *
@@ -761,6 +763,7 @@ export declare class ZWaveController extends TypedEventTarget<ControllerEventCal
761
763
  * @param onProgress Can be used to monitor the progress of the operation, which may take several seconds up to a few minutes depending on the NVM size
762
764
  */
763
765
  restoreNVMRaw(nvmData: BytesView, onProgress?: (bytesWritten: number, total: number) => void): Promise<void>;
766
+ private getRestoreNVMRawTask;
764
767
  private restoreNVMRaw500;
765
768
  private restoreNVMRaw700;
766
769
  /**
@@ -4620,25 +4620,45 @@ let ZWaveController = (() => {
4620
4620
  * @param onProgress Can be used to monitor the progress of the operation, which may take several seconds up to a few minutes depending on the NVM size
4621
4621
  * @returns The raw NVM buffer
4622
4622
  */
4623
- async backupNVMRaw(onProgress) {
4624
- this.driver.controllerLog.print("Backing up NVM...");
4625
- if (!await this.toggleRF(false)) {
4626
- throw new import_core.ZWaveError("Could not turn off the Z-Wave radio before creating NVM backup!", import_core.ZWaveErrorCodes.Controller_ResponseNOK);
4627
- }
4628
- await this.stopWatchdog();
4629
- let ret;
4630
- try {
4631
- if (this.sdkVersionGte("7.0")) {
4632
- ret = await this.backupNVMRaw700(onProgress);
4633
- await this.driver.trySoftReset();
4634
- } else {
4635
- ret = await this.backupNVMRaw500(onProgress);
4636
- }
4637
- this.driver.controllerLog.print("NVM backup completed");
4638
- } finally {
4639
- await this.toggleRF(true);
4640
- }
4641
- return ret;
4623
+ backupNVMRaw(onProgress) {
4624
+ return this.driver.scheduler.queueTask(this.getBackupNVMRawTask(onProgress));
4625
+ }
4626
+ getBackupNVMRawTask(onProgress) {
4627
+ const self = this;
4628
+ let rfRestored = false;
4629
+ return {
4630
+ priority: import_Task.TaskPriority.Normal,
4631
+ tag: { id: "nvm-backup" },
4632
+ group: { id: "controller-exclusive" },
4633
+ // The radio is off during the backup, so other tasks cannot communicate anyways
4634
+ interrupt: import_Task.TaskInterruptBehavior.Forbidden,
4635
+ task: /* @__PURE__ */ __name(async function* backupNVMRawTask() {
4636
+ self.driver.controllerLog.print("Backing up NVM...");
4637
+ if (!(yield* (0, import_waddle.waitFor)(self.toggleRF(false)))) {
4638
+ throw new import_core.ZWaveError("Could not turn off the Z-Wave radio before creating NVM backup!", import_core.ZWaveErrorCodes.Controller_ResponseNOK);
4639
+ }
4640
+ yield* (0, import_waddle.waitFor)(self.stopWatchdog());
4641
+ let ret;
4642
+ try {
4643
+ if (self.sdkVersionGte("7.0")) {
4644
+ ret = yield* (0, import_waddle.waitFor)(self.backupNVMRaw700(onProgress));
4645
+ yield* (0, import_waddle.waitFor)(self.driver.trySoftReset());
4646
+ } else {
4647
+ ret = yield* (0, import_waddle.waitFor)(self.backupNVMRaw500(onProgress));
4648
+ }
4649
+ self.driver.controllerLog.print("NVM backup completed");
4650
+ } finally {
4651
+ yield* (0, import_waddle.waitFor)(self.toggleRF(true));
4652
+ rfRestored = true;
4653
+ }
4654
+ return ret;
4655
+ }, "backupNVMRawTask"),
4656
+ cleanup: /* @__PURE__ */ __name(async () => {
4657
+ if (!rfRestored) {
4658
+ await self.toggleRF(true);
4659
+ }
4660
+ }, "cleanup")
4661
+ };
4642
4662
  }
4643
4663
  async backupNVMRaw500(onProgress) {
4644
4664
  const size = (0, import_serialapi.nvmSizeToBufferSize)((await this.getNVMId()).memorySize);
@@ -4718,45 +4738,67 @@ let ZWaveController = (() => {
4718
4738
  * @param restoreProgress Can be used to monitor the progress of the restore operation, which may take several seconds up to a few minutes depending on the NVM size
4719
4739
  * @param migrateOptions Influence which data should be preserved during a migration
4720
4740
  */
4721
- async restoreNVM(nvmData, convertProgress, restoreProgress, migrateOptions) {
4722
- if (!await this.toggleRF(false)) {
4723
- throw new import_core.ZWaveError("Could not turn off the Z-Wave radio before restoring NVM backup!", import_core.ZWaveErrorCodes.Controller_ResponseNOK);
4724
- }
4725
- await this.stopWatchdog();
4726
- this.driver.controllerLog.print("Converting NVM to target format...");
4727
- let targetNVM;
4728
- let convertedNVM;
4729
- try {
4730
- if (this.sdkVersionGte("7.0")) {
4731
- targetNVM = await this.backupNVMRaw700(convertProgress);
4732
- } else {
4733
- targetNVM = await this.backupNVMRaw500(convertProgress);
4734
- }
4735
- convertedNVM = await (0, import_nvmedit.migrateNVM)(nvmData, targetNVM, migrateOptions);
4736
- } catch (e) {
4737
- await this.toggleRF(true);
4738
- const message = "Failed to convert NVM to target format: " + e.message;
4739
- this.driver.controllerLog.print(message, "error");
4740
- e.message = message;
4741
- throw e;
4742
- }
4743
- try {
4744
- this.driver.controllerLog.print("Restoring NVM backup...");
4745
- if (this.sdkVersionGte("7.0")) {
4746
- await this.restoreNVMRaw700(convertedNVM, restoreProgress);
4747
- } else {
4748
- await this.restoreNVMRaw500(convertedNVM, restoreProgress);
4749
- }
4750
- this.driver.controllerLog.print("NVM backup restored. Restarting to activate the restored backup...");
4751
- } catch (e) {
4752
- await this.toggleRF(true);
4753
- const message = "Failed to restore NVM backup: " + e.message;
4754
- this.driver.controllerLog.print(message, "error");
4755
- e.message = message;
4756
- throw e;
4757
- }
4758
- this._nodes.clear();
4759
- await this.driver.softResetAndRestart();
4741
+ restoreNVM(nvmData, convertProgress, restoreProgress, migrateOptions) {
4742
+ return this.driver.scheduler.queueTask(this.getRestoreNVMTask(nvmData, convertProgress, restoreProgress, migrateOptions));
4743
+ }
4744
+ getRestoreNVMTask(nvmData, convertProgress, restoreProgress, migrateOptions) {
4745
+ const self = this;
4746
+ let rfRestored = false;
4747
+ return {
4748
+ priority: import_Task.TaskPriority.Normal,
4749
+ tag: { id: "nvm-restore" },
4750
+ group: { id: "controller-exclusive" },
4751
+ // The radio is off during the restore, so other tasks cannot communicate anyways
4752
+ interrupt: import_Task.TaskInterruptBehavior.Forbidden,
4753
+ task: /* @__PURE__ */ __name(async function* restoreNVMTask() {
4754
+ if (!(yield* (0, import_waddle.waitFor)(self.toggleRF(false)))) {
4755
+ throw new import_core.ZWaveError("Could not turn off the Z-Wave radio before restoring NVM backup!", import_core.ZWaveErrorCodes.Controller_ResponseNOK);
4756
+ }
4757
+ yield* (0, import_waddle.waitFor)(self.stopWatchdog());
4758
+ self.driver.controllerLog.print("Converting NVM to target format...");
4759
+ let targetNVM;
4760
+ let convertedNVM;
4761
+ try {
4762
+ if (self.sdkVersionGte("7.0")) {
4763
+ targetNVM = yield* (0, import_waddle.waitFor)(self.backupNVMRaw700(convertProgress));
4764
+ } else {
4765
+ targetNVM = yield* (0, import_waddle.waitFor)(self.backupNVMRaw500(convertProgress));
4766
+ }
4767
+ convertedNVM = yield* (0, import_waddle.waitFor)((0, import_nvmedit.migrateNVM)(nvmData, targetNVM, migrateOptions));
4768
+ } catch (e) {
4769
+ yield* (0, import_waddle.waitFor)(self.toggleRF(true));
4770
+ rfRestored = true;
4771
+ const message = "Failed to convert NVM to target format: " + e.message;
4772
+ self.driver.controllerLog.print(message, "error");
4773
+ e.message = message;
4774
+ throw e;
4775
+ }
4776
+ try {
4777
+ self.driver.controllerLog.print("Restoring NVM backup...");
4778
+ if (self.sdkVersionGte("7.0")) {
4779
+ yield* (0, import_waddle.waitFor)(self.restoreNVMRaw700(convertedNVM, restoreProgress));
4780
+ } else {
4781
+ yield* (0, import_waddle.waitFor)(self.restoreNVMRaw500(convertedNVM, restoreProgress));
4782
+ }
4783
+ self.driver.controllerLog.print("NVM backup restored. Restarting to activate the restored backup...");
4784
+ } catch (e) {
4785
+ yield* (0, import_waddle.waitFor)(self.toggleRF(true));
4786
+ rfRestored = true;
4787
+ const message = "Failed to restore NVM backup: " + e.message;
4788
+ self.driver.controllerLog.print(message, "error");
4789
+ e.message = message;
4790
+ throw e;
4791
+ }
4792
+ rfRestored = true;
4793
+ self._nodes.clear();
4794
+ yield* (0, import_waddle.waitFor)(self.driver.softResetAndRestart());
4795
+ }, "restoreNVMTask"),
4796
+ cleanup: /* @__PURE__ */ __name(async () => {
4797
+ if (!rfRestored) {
4798
+ await self.toggleRF(true);
4799
+ }
4800
+ }, "cleanup")
4801
+ };
4760
4802
  }
4761
4803
  /**
4762
4804
  * Restores an NVM backup that was created with `backupNVMRaw`. The Z-Wave radio is turned off/on automatically.
@@ -4768,24 +4810,44 @@ let ZWaveController = (() => {
4768
4810
  * @param onProgress Can be used to monitor the progress of the operation, which may take several seconds up to a few minutes depending on the NVM size
4769
4811
  */
4770
4812
  async restoreNVMRaw(nvmData, onProgress) {
4771
- this.driver.controllerLog.print("Restoring NVM...");
4772
- if (!await this.toggleRF(false)) {
4773
- throw new import_core.ZWaveError("Could not turn off the Z-Wave radio before restoring NVM backup!", import_core.ZWaveErrorCodes.Controller_ResponseNOK);
4774
- }
4775
- try {
4776
- if (this.sdkVersionGte("7.0")) {
4777
- await this.restoreNVMRaw700(nvmData, onProgress);
4778
- } else {
4779
- await this.restoreNVMRaw500(nvmData, onProgress);
4780
- }
4781
- this.driver.controllerLog.print("NVM backup restored");
4782
- } finally {
4783
- await this.toggleRF(true);
4784
- }
4813
+ await this.driver.scheduler.queueTask(this.getRestoreNVMRawTask(nvmData, onProgress));
4785
4814
  this.driver.controllerLog.print("Restarting driver to activate restored NVM backup...");
4786
4815
  this.driver.emit("error", new import_core.ZWaveError("Activating the NVM backup requires a driver restart!", import_core.ZWaveErrorCodes.Driver_Failed));
4787
4816
  await this.driver.destroy();
4788
4817
  }
4818
+ getRestoreNVMRawTask(nvmData, onProgress) {
4819
+ const self = this;
4820
+ let rfRestored = false;
4821
+ return {
4822
+ priority: import_Task.TaskPriority.Normal,
4823
+ tag: { id: "nvm-restore" },
4824
+ group: { id: "controller-exclusive" },
4825
+ // The radio is off during the restore, so other tasks cannot communicate anyways
4826
+ interrupt: import_Task.TaskInterruptBehavior.Forbidden,
4827
+ task: /* @__PURE__ */ __name(async function* restoreNVMRawTask() {
4828
+ self.driver.controllerLog.print("Restoring NVM...");
4829
+ if (!(yield* (0, import_waddle.waitFor)(self.toggleRF(false)))) {
4830
+ throw new import_core.ZWaveError("Could not turn off the Z-Wave radio before restoring NVM backup!", import_core.ZWaveErrorCodes.Controller_ResponseNOK);
4831
+ }
4832
+ try {
4833
+ if (self.sdkVersionGte("7.0")) {
4834
+ yield* (0, import_waddle.waitFor)(self.restoreNVMRaw700(nvmData, onProgress));
4835
+ } else {
4836
+ yield* (0, import_waddle.waitFor)(self.restoreNVMRaw500(nvmData, onProgress));
4837
+ }
4838
+ self.driver.controllerLog.print("NVM backup restored");
4839
+ } finally {
4840
+ yield* (0, import_waddle.waitFor)(self.toggleRF(true));
4841
+ rfRestored = true;
4842
+ }
4843
+ }, "restoreNVMRawTask"),
4844
+ cleanup: /* @__PURE__ */ __name(async () => {
4845
+ if (!rfRestored) {
4846
+ await self.toggleRF(true);
4847
+ }
4848
+ }, "cleanup")
4849
+ };
4850
+ }
4789
4851
  async restoreNVMRaw500(nvmData, onProgress) {
4790
4852
  const size = (0, import_serialapi.nvmSizeToBufferSize)((await this.getNVMId()).memorySize);
4791
4853
  if (!size) {