iobroker.eos-admin 7.9.68 → 7.9.70
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/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v54.js +1 -0
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v55.js +1 -0
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v56.js +1 -0
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v57.js +1 -0
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v58.js +1 -2
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v59.js +1 -2
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v60.js +1 -2
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v61.js +1 -2
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v62.js +1 -0
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v63.js +1 -0
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v64.js +1 -0
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v65.js +1 -0
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v66.js +1 -0
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v67.js +1 -2
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v68.js +1 -0
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v69.js +1 -0
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v70.js +2 -0
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf.js +2 -2
- package/adminWww/assets/Adapters-B5_jQ7DE-v54.js +1 -0
- package/adminWww/assets/Adapters-B5_jQ7DE-v55.js +1 -0
- package/adminWww/assets/Adapters-B5_jQ7DE-v56.js +1 -0
- package/adminWww/assets/Adapters-B5_jQ7DE-v57.js +1 -0
- package/adminWww/assets/Adapters-B5_jQ7DE-v58.js +1 -2
- package/adminWww/assets/Adapters-B5_jQ7DE-v59.js +1 -2
- package/adminWww/assets/Adapters-B5_jQ7DE-v60.js +1 -9
- package/adminWww/assets/Adapters-B5_jQ7DE-v61.js +1 -9
- package/adminWww/assets/Adapters-B5_jQ7DE-v62.js +1 -0
- package/adminWww/assets/Adapters-B5_jQ7DE-v63.js +1 -0
- package/adminWww/assets/Adapters-B5_jQ7DE-v64.js +1 -0
- package/adminWww/assets/Adapters-B5_jQ7DE-v65.js +1 -0
- package/adminWww/assets/Adapters-B5_jQ7DE-v66.js +1 -0
- package/adminWww/assets/Adapters-B5_jQ7DE-v67.js +1 -9
- package/adminWww/assets/Adapters-B5_jQ7DE-v68.js +1 -0
- package/adminWww/assets/Adapters-B5_jQ7DE-v69.js +1 -0
- package/adminWww/assets/Adapters-B5_jQ7DE-v70.js +9 -0
- package/adminWww/assets/Adapters-B5_jQ7DE.js +9 -2
- package/adminWww/assets/Config-hHK2UzGP-v54.js +1 -0
- package/adminWww/assets/Config-hHK2UzGP-v55.js +1 -0
- package/adminWww/assets/Config-hHK2UzGP-v56.js +1 -0
- package/adminWww/assets/Config-hHK2UzGP-v57.js +1 -0
- package/adminWww/assets/Config-hHK2UzGP-v58.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v59.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v60.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v61.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v62.js +1 -0
- package/adminWww/assets/Config-hHK2UzGP-v63.js +1 -0
- package/adminWww/assets/Config-hHK2UzGP-v64.js +1 -0
- package/adminWww/assets/Config-hHK2UzGP-v65.js +1 -0
- package/adminWww/assets/Config-hHK2UzGP-v66.js +1 -0
- package/adminWww/assets/Config-hHK2UzGP-v67.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v68.js +1 -0
- package/adminWww/assets/Config-hHK2UzGP-v69.js +1 -0
- package/adminWww/assets/Config-hHK2UzGP-v70.js +1 -0
- package/adminWww/assets/Config-hHK2UzGP.js +1 -2
- package/adminWww/assets/CustomTab-B0wqoazH-v54.js +1 -0
- package/adminWww/assets/CustomTab-B0wqoazH-v55.js +1 -0
- package/adminWww/assets/CustomTab-B0wqoazH-v56.js +1 -0
- package/adminWww/assets/CustomTab-B0wqoazH-v57.js +1 -0
- package/adminWww/assets/CustomTab-B0wqoazH-v58.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v59.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v60.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v61.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v62.js +1 -0
- package/adminWww/assets/CustomTab-B0wqoazH-v63.js +1 -0
- package/adminWww/assets/CustomTab-B0wqoazH-v64.js +1 -0
- package/adminWww/assets/CustomTab-B0wqoazH-v65.js +1 -0
- package/adminWww/assets/CustomTab-B0wqoazH-v66.js +1 -0
- package/adminWww/assets/CustomTab-B0wqoazH-v67.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v68.js +1 -0
- package/adminWww/assets/CustomTab-B0wqoazH-v69.js +1 -0
- package/adminWww/assets/CustomTab-B0wqoazH-v70.js +1 -0
- package/adminWww/assets/CustomTab-B0wqoazH.js +1 -2
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v54.js +1 -0
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v55.js +1 -0
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v56.js +1 -0
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v57.js +1 -0
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v58.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v59.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v60.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v61.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v62.js +1 -0
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v63.js +1 -0
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v64.js +1 -0
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v65.js +1 -0
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v66.js +1 -0
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v67.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v68.js +1 -0
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v69.js +1 -0
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v70.js +1 -0
- package/adminWww/assets/DeviceManager-BFmQeYQ1.js +1 -2
- package/adminWww/assets/EasyMode-B1d9Vdc4-v54.js +1 -0
- package/adminWww/assets/EasyMode-B1d9Vdc4-v55.js +1 -0
- package/adminWww/assets/EasyMode-B1d9Vdc4-v56.js +1 -0
- package/adminWww/assets/EasyMode-B1d9Vdc4-v57.js +1 -0
- package/adminWww/assets/EasyMode-B1d9Vdc4-v58.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v59.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v60.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v61.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v62.js +1 -0
- package/adminWww/assets/EasyMode-B1d9Vdc4-v63.js +1 -0
- package/adminWww/assets/EasyMode-B1d9Vdc4-v64.js +1 -0
- package/adminWww/assets/EasyMode-B1d9Vdc4-v65.js +1 -0
- package/adminWww/assets/EasyMode-B1d9Vdc4-v66.js +1 -0
- package/adminWww/assets/EasyMode-B1d9Vdc4-v67.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v68.js +1 -0
- package/adminWww/assets/EasyMode-B1d9Vdc4-v69.js +1 -0
- package/adminWww/assets/EasyMode-B1d9Vdc4-v70.js +1 -0
- package/adminWww/assets/EasyMode-B1d9Vdc4.js +1 -2
- package/adminWww/assets/Enums-DbWYxKOo-v54.js +1 -0
- package/adminWww/assets/Enums-DbWYxKOo-v55.js +1 -0
- package/adminWww/assets/Enums-DbWYxKOo-v56.js +1 -0
- package/adminWww/assets/Enums-DbWYxKOo-v57.js +1 -0
- package/adminWww/assets/Enums-DbWYxKOo-v58.js +1 -91
- package/adminWww/assets/Enums-DbWYxKOo-v59.js +1 -91
- package/adminWww/assets/Enums-DbWYxKOo-v60.js +1 -91
- package/adminWww/assets/Enums-DbWYxKOo-v61.js +1 -91
- package/adminWww/assets/Enums-DbWYxKOo-v62.js +1 -0
- package/adminWww/assets/Enums-DbWYxKOo-v63.js +1 -0
- package/adminWww/assets/Enums-DbWYxKOo-v64.js +1 -0
- package/adminWww/assets/Enums-DbWYxKOo-v65.js +1 -0
- package/adminWww/assets/Enums-DbWYxKOo-v66.js +1 -0
- package/adminWww/assets/Enums-DbWYxKOo-v67.js +1 -91
- package/adminWww/assets/Enums-DbWYxKOo-v68.js +1 -0
- package/adminWww/assets/Enums-DbWYxKOo-v69.js +1 -0
- package/adminWww/assets/Enums-DbWYxKOo-v70.js +91 -0
- package/adminWww/assets/Enums-DbWYxKOo.js +91 -2
- package/adminWww/assets/Fields-CX3rKuWb-v54.js +1 -0
- package/adminWww/assets/Fields-CX3rKuWb-v55.js +1 -0
- package/adminWww/assets/Fields-CX3rKuWb-v56.js +1 -0
- package/adminWww/assets/Fields-CX3rKuWb-v57.js +1 -0
- package/adminWww/assets/Fields-CX3rKuWb-v58.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v59.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v60.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v61.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v62.js +1 -0
- package/adminWww/assets/Fields-CX3rKuWb-v63.js +1 -0
- package/adminWww/assets/Fields-CX3rKuWb-v64.js +1 -0
- package/adminWww/assets/Fields-CX3rKuWb-v65.js +1 -0
- package/adminWww/assets/Fields-CX3rKuWb-v66.js +1 -0
- package/adminWww/assets/Fields-CX3rKuWb-v67.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v68.js +1 -0
- package/adminWww/assets/Fields-CX3rKuWb-v69.js +1 -0
- package/adminWww/assets/Fields-CX3rKuWb-v70.js +1 -0
- package/adminWww/assets/Fields-CX3rKuWb.js +1 -2
- package/adminWww/assets/Files-Cd2HOzIE-v54.js +1 -0
- package/adminWww/assets/Files-Cd2HOzIE-v55.js +1 -0
- package/adminWww/assets/Files-Cd2HOzIE-v56.js +1 -0
- package/adminWww/assets/Files-Cd2HOzIE-v57.js +1 -0
- package/adminWww/assets/Files-Cd2HOzIE-v58.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v59.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v60.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v61.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v62.js +1 -0
- package/adminWww/assets/Files-Cd2HOzIE-v63.js +1 -0
- package/adminWww/assets/Files-Cd2HOzIE-v64.js +1 -0
- package/adminWww/assets/Files-Cd2HOzIE-v65.js +1 -0
- package/adminWww/assets/Files-Cd2HOzIE-v66.js +1 -0
- package/adminWww/assets/Files-Cd2HOzIE-v67.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v68.js +1 -0
- package/adminWww/assets/Files-Cd2HOzIE-v69.js +1 -0
- package/adminWww/assets/Files-Cd2HOzIE-v70.js +1 -0
- package/adminWww/assets/Files-Cd2HOzIE.js +1 -2
- package/adminWww/assets/Hosts-Bg8QzW5i-v54.js +1 -0
- package/adminWww/assets/Hosts-Bg8QzW5i-v55.js +1 -0
- package/adminWww/assets/Hosts-Bg8QzW5i-v56.js +1 -0
- package/adminWww/assets/Hosts-Bg8QzW5i-v57.js +1 -0
- package/adminWww/assets/Hosts-Bg8QzW5i-v58.js +1 -121
- package/adminWww/assets/Hosts-Bg8QzW5i-v59.js +1 -121
- package/adminWww/assets/Hosts-Bg8QzW5i-v60.js +1 -121
- package/adminWww/assets/Hosts-Bg8QzW5i-v61.js +1 -121
- package/adminWww/assets/Hosts-Bg8QzW5i-v62.js +1 -0
- package/adminWww/assets/Hosts-Bg8QzW5i-v63.js +1 -0
- package/adminWww/assets/Hosts-Bg8QzW5i-v64.js +1 -0
- package/adminWww/assets/Hosts-Bg8QzW5i-v65.js +1 -0
- package/adminWww/assets/Hosts-Bg8QzW5i-v66.js +1 -0
- package/adminWww/assets/Hosts-Bg8QzW5i-v67.js +1 -121
- package/adminWww/assets/Hosts-Bg8QzW5i-v68.js +1 -0
- package/adminWww/assets/Hosts-Bg8QzW5i-v69.js +1 -0
- package/adminWww/assets/Hosts-Bg8QzW5i-v70.js +121 -0
- package/adminWww/assets/Hosts-Bg8QzW5i.js +121 -2
- package/adminWww/assets/Instances-YdaGnS5a-v54.js +1 -0
- package/adminWww/assets/Instances-YdaGnS5a-v55.js +1 -0
- package/adminWww/assets/Instances-YdaGnS5a-v56.js +1 -0
- package/adminWww/assets/Instances-YdaGnS5a-v57.js +1 -0
- package/adminWww/assets/Instances-YdaGnS5a-v58.js +1 -2
- package/adminWww/assets/Instances-YdaGnS5a-v59.js +1 -2
- package/adminWww/assets/Instances-YdaGnS5a-v60.js +1 -2
- package/adminWww/assets/Instances-YdaGnS5a-v61.js +1 -2
- package/adminWww/assets/Instances-YdaGnS5a-v62.js +1 -0
- package/adminWww/assets/Instances-YdaGnS5a-v63.js +1 -0
- package/adminWww/assets/Instances-YdaGnS5a-v64.js +1 -0
- package/adminWww/assets/Instances-YdaGnS5a-v65.js +1 -0
- package/adminWww/assets/Instances-YdaGnS5a-v66.js +1 -0
- package/adminWww/assets/Instances-YdaGnS5a-v67.js +1 -2
- package/adminWww/assets/Instances-YdaGnS5a-v68.js +1 -0
- package/adminWww/assets/Instances-YdaGnS5a-v69.js +1 -0
- package/adminWww/assets/Instances-YdaGnS5a-v70.js +2 -0
- package/adminWww/assets/Instances-YdaGnS5a.js +2 -2
- package/adminWww/assets/Intro-DkwRiz1n-v54.js +1 -0
- package/adminWww/assets/Intro-DkwRiz1n-v55.js +1 -0
- package/adminWww/assets/Intro-DkwRiz1n-v56.js +1 -0
- package/adminWww/assets/Intro-DkwRiz1n-v57.js +1 -0
- package/adminWww/assets/Intro-DkwRiz1n-v58.js +1 -2
- package/adminWww/assets/Intro-DkwRiz1n-v59.js +1 -2
- package/adminWww/assets/Intro-DkwRiz1n-v60.js +1 -2
- package/adminWww/assets/Intro-DkwRiz1n-v61.js +1 -2
- package/adminWww/assets/Intro-DkwRiz1n-v62.js +1 -0
- package/adminWww/assets/Intro-DkwRiz1n-v63.js +1 -0
- package/adminWww/assets/Intro-DkwRiz1n-v64.js +1 -0
- package/adminWww/assets/Intro-DkwRiz1n-v65.js +1 -0
- package/adminWww/assets/Intro-DkwRiz1n-v66.js +1 -0
- package/adminWww/assets/Intro-DkwRiz1n-v67.js +1 -2
- package/adminWww/assets/Intro-DkwRiz1n-v68.js +1 -0
- package/adminWww/assets/Intro-DkwRiz1n-v69.js +1 -0
- package/adminWww/assets/Intro-DkwRiz1n-v70.js +2 -0
- package/adminWww/assets/Intro-DkwRiz1n.js +2 -2
- package/adminWww/assets/Living Room-C7AE21A_.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v54.js +1 -0
- package/adminWww/assets/Logs-CsVPSLJH-v55.js +1 -0
- package/adminWww/assets/Logs-CsVPSLJH-v56.js +1 -0
- package/adminWww/assets/Logs-CsVPSLJH-v57.js +1 -0
- package/adminWww/assets/Logs-CsVPSLJH-v58.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v59.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v60.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v61.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v62.js +1 -0
- package/adminWww/assets/Logs-CsVPSLJH-v63.js +1 -0
- package/adminWww/assets/Logs-CsVPSLJH-v64.js +1 -0
- package/adminWww/assets/Logs-CsVPSLJH-v65.js +1 -0
- package/adminWww/assets/Logs-CsVPSLJH-v66.js +1 -0
- package/adminWww/assets/Logs-CsVPSLJH-v67.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v68.js +1 -0
- package/adminWww/assets/Logs-CsVPSLJH-v69.js +1 -0
- package/adminWww/assets/Logs-CsVPSLJH-v70.js +1 -0
- package/adminWww/assets/Logs-CsVPSLJH.js +1 -2
- package/adminWww/assets/Objects-DPan0bzw-v54.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v55.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v56.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v57.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v58.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v59.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v60.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v61.js +1 -878
- package/adminWww/assets/Objects-DPan0bzw-v62.js +1 -0
- package/adminWww/assets/Objects-DPan0bzw-v63.js +1 -0
- package/adminWww/assets/Objects-DPan0bzw-v64.js +1 -0
- package/adminWww/assets/Objects-DPan0bzw-v65.js +1 -0
- package/adminWww/assets/Objects-DPan0bzw-v66.js +1 -0
- package/adminWww/assets/Objects-DPan0bzw-v67.js +1 -878
- package/adminWww/assets/Objects-DPan0bzw-v68.js +1 -0
- package/adminWww/assets/Objects-DPan0bzw-v69.js +1 -0
- package/adminWww/assets/Objects-DPan0bzw-v70.js +878 -0
- package/adminWww/assets/Objects-DPan0bzw.js +878 -2
- package/adminWww/assets/Rear Wall-BNvjPc7z.js +1 -1
- package/adminWww/assets/Storeroom-DVXZ_Y0f.js +1 -1
- package/adminWww/assets/Tv-GicrNRwV.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v54.js +1 -0
- package/adminWww/assets/Users-BgnBRgwU-v55.js +1 -0
- package/adminWww/assets/Users-BgnBRgwU-v56.js +1 -0
- package/adminWww/assets/Users-BgnBRgwU-v57.js +1 -0
- package/adminWww/assets/Users-BgnBRgwU-v58.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v59.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v60.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v61.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v62.js +1 -0
- package/adminWww/assets/Users-BgnBRgwU-v63.js +1 -0
- package/adminWww/assets/Users-BgnBRgwU-v64.js +1 -0
- package/adminWww/assets/Users-BgnBRgwU-v65.js +1 -0
- package/adminWww/assets/Users-BgnBRgwU-v66.js +1 -0
- package/adminWww/assets/Users-BgnBRgwU-v67.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v68.js +1 -0
- package/adminWww/assets/Users-BgnBRgwU-v69.js +1 -0
- package/adminWww/assets/Users-BgnBRgwU-v70.js +1 -0
- package/adminWww/assets/Users-BgnBRgwU.js +1 -2
- package/adminWww/assets/bootstrap-COulQZax-v54.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v55.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v56.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v57.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v58.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v59.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v60.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v61.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v62.js +1 -0
- package/adminWww/assets/bootstrap-COulQZax-v63.js +1 -0
- package/adminWww/assets/bootstrap-COulQZax-v64.js +1 -0
- package/adminWww/assets/bootstrap-COulQZax-v65.js +1 -0
- package/adminWww/assets/bootstrap-COulQZax-v66.js +1 -0
- package/adminWww/assets/bootstrap-COulQZax-v67.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v68.js +1 -317
- package/adminWww/assets/bootstrap-COulQZax-v69.js +1 -0
- package/adminWww/assets/bootstrap-COulQZax-v70.js +317 -0
- package/adminWww/assets/bootstrap-COulQZax.js +2 -1
- package/adminWww/assets/hostInit-OBG53iVO.js +1 -1
- package/adminWww/assets/hostInit-v54.js +1 -1
- package/adminWww/assets/hostInit-v55.js +1 -1
- package/adminWww/assets/hostInit-v56.js +1 -1
- package/adminWww/assets/hostInit-v57.js +1 -1
- package/adminWww/assets/hostInit-v58.js +1 -1
- package/adminWww/assets/hostInit-v59.js +1 -1
- package/adminWww/assets/hostInit-v60.js +1 -1
- package/adminWww/assets/hostInit-v61.js +1 -2
- package/adminWww/assets/hostInit-v62.js +1 -0
- package/adminWww/assets/hostInit-v63.js +1 -0
- package/adminWww/assets/hostInit-v64.js +1 -0
- package/adminWww/assets/hostInit-v65.js +1 -0
- package/adminWww/assets/hostInit-v66.js +1 -0
- package/adminWww/assets/hostInit-v67.js +1 -0
- package/adminWww/assets/hostInit-v68.js +1 -0
- package/adminWww/assets/hostInit-v69.js +1 -0
- package/adminWww/assets/hostInit-v70.js +2 -0
- package/adminWww/assets/index-CQZugZ1z-v54.js +1 -0
- package/adminWww/assets/index-CQZugZ1z-v55.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v56.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v57.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v58.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v59.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v60.js +1 -2
- package/adminWww/assets/index-CQZugZ1z-v61.js +1 -2
- package/adminWww/assets/index-CQZugZ1z-v62.js +1 -0
- package/adminWww/assets/index-CQZugZ1z-v63.js +1 -0
- package/adminWww/assets/index-CQZugZ1z-v64.js +1 -0
- package/adminWww/assets/index-CQZugZ1z-v65.js +1 -0
- package/adminWww/assets/index-CQZugZ1z-v66.js +1 -0
- package/adminWww/assets/index-CQZugZ1z-v67.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v68.js +1 -2
- package/adminWww/assets/index-CQZugZ1z-v69.js +1 -0
- package/adminWww/assets/index-CQZugZ1z-v70.js +2 -0
- package/adminWww/assets/index-CQZugZ1z.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v54.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v55.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v56.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v57.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v58.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v59.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v60.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v61.js +1 -950
- package/adminWww/assets/index-D2ymscJA-v62.js +1 -0
- package/adminWww/assets/index-D2ymscJA-v63.js +1 -0
- package/adminWww/assets/index-D2ymscJA-v64.js +1 -0
- package/adminWww/assets/index-D2ymscJA-v65.js +1 -0
- package/adminWww/assets/index-D2ymscJA-v66.js +1 -0
- package/adminWww/assets/index-D2ymscJA-v67.js +1 -0
- package/adminWww/assets/index-D2ymscJA-v68.js +1 -0
- package/adminWww/assets/index-D2ymscJA-v69.js +1 -0
- package/adminWww/assets/index-D2ymscJA-v70.js +950 -0
- package/adminWww/assets/index-D2ymscJA.js +950 -2
- package/adminWww/css/eos-branding.css +23 -296
- package/adminWww/index.html +13 -13
- package/adminWww/js/eos-assistant.js +1 -1
- package/adminWww/js/eos-branding.js +77 -212
- package/adminWww/js/eos-console-quiet.js +4 -60
- package/adminWww/js/eos-objects-state-tools.js +1 -1
- package/adminWww/js/eos-performance-guard.js +1 -1
- package/adminWww/js/eos-policy-client.js +188 -0
- package/adminWww/js/eos-role-ui.js +27 -30
- package/adminWww/js/eos-runtime-fixes.js +1 -1
- package/adminWww/js/eos-security-ui.js +30 -23
- package/adminWww/js/eos-toolbar-ghost-cleanup.js +102 -0
- package/adminWww/mf-manifest.json +1 -1
- package/adminWww/remoteEntry-v54.js +1 -1
- package/adminWww/remoteEntry-v55.js +1 -1
- package/adminWww/remoteEntry-v56.js +1 -1
- package/adminWww/remoteEntry-v57.js +1 -1
- package/adminWww/remoteEntry-v58.js +1 -1
- package/adminWww/remoteEntry-v59.js +1 -1
- package/adminWww/remoteEntry-v60.js +1 -1
- package/adminWww/remoteEntry-v61.js +1 -2
- package/adminWww/remoteEntry-v62.js +1 -0
- package/adminWww/remoteEntry-v63.js +1 -0
- package/adminWww/remoteEntry-v64.js +1 -0
- package/adminWww/remoteEntry-v65.js +1 -0
- package/adminWww/remoteEntry-v66.js +1 -0
- package/adminWww/remoteEntry-v67.js +1 -0
- package/adminWww/remoteEntry-v68.js +1 -0
- package/adminWww/remoteEntry-v69.js +1 -0
- package/adminWww/remoteEntry-v70.js +2 -0
- package/adminWww/remoteEntry.js +1 -1
- package/build/lib/web.js +19 -17
- package/build/main.js +56 -7
- package/io-package.json +10 -5
- package/package.json +6 -5
- package/tools/nexowatt-validate-package.cjs +6 -100
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./assets/emotion-react.browser.esm-DrKG52pD.js","./assets/iobroker_admin__loadShare__react__loadShare__-LM7uyL45.js","./assets/_commonjsHelpers-CE1G-McA.js","./assets/iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js","./assets/emotion-cache.browser.esm-BgJfNZJN.js","./assets/extends-CF3RwP-h.js","./assets/emotion-use-insertion-effect-with-fallbacks.browser.esm-D9zECpgL.js","./assets/emotion-serialize.esm-Q4o_CgeF.js","./assets/emotion-styled.browser.esm-DOdpWCne.js","./assets/iobroker_admin__loadShare___mf_0_emotion_mf_1_react__loadShare__-BywLg1Xe.js","./assets/index-D2ymscJA-v70.js","./assets/createTheme-DFX8CY6F.js","./assets/blue-CagzI6CQ.js","./assets/sdk-C-e-e2gd.js","./assets/iobroker_admin__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__-CJO5yP3h.js","./assets/Google-Cq8JZDSn.js","./assets/index-DcK0RDrH.js","./assets/pl-Dib-_u5L.js","./assets/iobroker_admin__loadShare__react_mf_2_dropzone__loadShare__-CwjnV48g.js","./assets/useTheme-CUNq4tF-.js","./assets/defaultTheme-Cx_JJUAa.js","./assets/useTheme-Bl-M1DYp.js","./assets/index-bCuipom1.js","./assets/iobroker_admin__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__-LFZoiUTt.js","./assets/iobroker_admin__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__-CpA7pnS5.js","./assets/index-mSK_krgD.js","./assets/index-8HslT92O.js","./assets/_commonjs-dynamic-modules-TDtrdbi3.js","./assets/___vite-browser-external_commonjs-proxy-DMh1aSo_.js","./assets/iobroker_admin__loadShare__react_mf_2_dom__loadShare__-CVeAXnkk.js","./assets/ext-language_tools-ylAoucDh.js","./assets/preload-helper-BDBacUwf.js","./assets/index-jy_3EbfW.js","./assets/DefaultPropsProvider-BiXBMQYQ.js","./assets/createSvgIcon-CfRgdNUH.js","./assets/index-8JYjTPhv.js","./assets/amber-D7aVlNg3.js","./assets/TextField-CqVU6uzA.js","./assets/assertThisInitialized-B0aQ9eG_.js","./assets/ThemeProvider-BOFFjWAF.js","./assets/index-uASdmaE6.js","./assets/index-Cqq5gIUF.js","./assets/setYear-3ufv5yRD.js","./assets/en-US-DBFJNIH6.js","./assets/isSameWeek-DzRXk46v.js","./assets/locale-CLe3aX4T.js","./assets/leaflet-src-B651YTWC.js","./assets/geosearch.module-BA4ww39P.js","./assets/iobroker_admin__loadShare__leaflet__loadShare__-CNUAG3AH.js","./assets/index-4wMOc304.js","./assets/index-C_anklzA.js","./assets/ace-DEUjyTIn.js","./assets/index-D2Em8S_O.js","./assets/index-CXZCHHB6.js","./assets/index-CkI9667U.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{i as m,a as p}from"./assets/iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js";import s from"./assets/virtualExposes-BIHI7g3E.js";import{_ as a}from"./assets/preload-helper-BDBacUwf.js";const n={"@emotion/react":async()=>await a(()=>import("./assets/emotion-react.browser.esm-DrKG52pD.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url),"@emotion/styled":async()=>await a(()=>import("./assets/emotion-styled.browser.esm-DOdpWCne.js"),__vite__mapDeps([8,5,9,3,7,6,1,2]),import.meta.url),"@iobroker/adapter-react-v5":async()=>await a(()=>import("./assets/index-D2ymscJA-v70.js"),__vite__mapDeps([10,11,12,1,2,3,13,14,15,16,17,18,19,20,21,9]),import.meta.url),"@iobroker/dm-gui-components":async()=>await a(()=>import("./assets/index-bCuipom1.js"),__vite__mapDeps([22,1,2,3,14,23,24]),import.meta.url),"@iobroker/json-config":async()=>await a(()=>import("./assets/index-mSK_krgD.js"),__vite__mapDeps([25,1,2,3,26,27,28,14,23,29,12,15,16,30,18,31]),import.meta.url),"@mui/icons-material":async()=>await a(()=>import("./assets/index-jy_3EbfW.js"),__vite__mapDeps([32,33,2,3,7,9,1,34,11,12,20]),import.meta.url),"@mui/material":async()=>await a(()=>import("./assets/index-8JYjTPhv.js"),__vite__mapDeps([35,11,12,1,2,3,36,34,33,7,9,20,37,21,38,19,5,29,16,39,4]),import.meta.url),"@mui/x-date-pickers":async()=>await a(()=>import("./assets/index-uASdmaE6.js"),__vite__mapDeps([40,1,2,3,33,7,9,34,11,12,20,5,37,21,38,19,29,16]),import.meta.url),"date-fns":async()=>await a(()=>import("./assets/index-Cqq5gIUF.js"),__vite__mapDeps([41,42,43,44]),import.meta.url),"date-fns/locale":async()=>await a(()=>import("./assets/locale-CLe3aX4T.js"),__vite__mapDeps([45,43,44]),import.meta.url),leaflet:async()=>await a(()=>import("./assets/leaflet-src-B651YTWC.js").then(t=>t.l),__vite__mapDeps([46,2]),import.meta.url),"leaflet-geosearch":async()=>await a(()=>import("./assets/geosearch.module-BA4ww39P.js"),__vite__mapDeps([47,48,3]),import.meta.url),react:async()=>await a(()=>import("./assets/index-4wMOc304.js").then(t=>t.i),__vite__mapDeps([49,2]),import.meta.url),"react-ace":async()=>await a(()=>import("./assets/index-C_anklzA.js").then(t=>t.i),__vite__mapDeps([50,51,16,2,1,3]),import.meta.url),"react-dom":async()=>await a(()=>import("./assets/index-D2Em8S_O.js").then(t=>t.i),__vite__mapDeps([52,2,1,3]),import.meta.url),"react-dropzone":async()=>await a(()=>import("./assets/index-CXZCHHB6.js"),__vite__mapDeps([53,1,2,3,16]),import.meta.url),semver:async()=>await a(()=>import("./assets/index-CkI9667U.js").then(t=>t.i),__vite__mapDeps([54,2]),import.meta.url)},o={"@emotion/react":{name:"@emotion/react",version:"11.14.0",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["@emotion/react"].loaded=!0;const{"@emotion/react":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@emotion/styled":{name:"@emotion/styled",version:"11.14.1",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["@emotion/styled"].loaded=!0;const{"@emotion/styled":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@iobroker/adapter-react-v5":{name:"@iobroker/adapter-react-v5",version:"8.2.9",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["@iobroker/adapter-react-v5"].loaded=!0;const{"@iobroker/adapter-react-v5":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@iobroker/dm-gui-components":{name:"@iobroker/dm-gui-components",version:"9.1.0",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["@iobroker/dm-gui-components"].loaded=!0;const{"@iobroker/dm-gui-components":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@iobroker/json-config":{name:"@iobroker/json-config",version:"8.4.7",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["@iobroker/json-config"].loaded=!0;const{"@iobroker/json-config":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@mui/icons-material":{name:"@mui/icons-material",version:"6.5.0",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["@mui/icons-material"].loaded=!0;const{"@mui/icons-material":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@mui/material":{name:"@mui/material",version:"6.5.0",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["@mui/material"].loaded=!0;const{"@mui/material":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@mui/x-date-pickers":{name:"@mui/x-date-pickers",version:"7.29.4",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["@mui/x-date-pickers"].loaded=!0;const{"@mui/x-date-pickers":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"date-fns":{name:"date-fns",version:"4.1.0",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["date-fns"].loaded=!0;const{"date-fns":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"date-fns/locale":{name:"date-fns/locale",version:"4.1.0",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["date-fns/locale"].loaded=!0;const{"date-fns/locale":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},leaflet:{name:"leaflet",version:"1.9.4",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o.leaflet.loaded=!0;const{leaflet:e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"leaflet-geosearch":{name:"leaflet-geosearch",version:"4.2.2",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["leaflet-geosearch"].loaded=!0;const{"leaflet-geosearch":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},react:{name:"react",version:"18.3.1",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o.react.loaded=!0;const{react:e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"react-ace":{name:"react-ace",version:"13.0.0",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["react-ace"].loaded=!0;const{"react-ace":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"react-dom":{name:"react-dom",version:"18.3.1",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["react-dom"].loaded=!0;const{"react-dom":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"react-dropzone":{name:"react-dropzone",version:"15.0.0",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o["react-dropzone"].loaded=!0;const{"react-dropzone":e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},semver:{name:"semver",version:"7.7.4",scope:["default"],loaded:!1,from:"iobroker_admin",async get(){o.semver.loaded=!0;const{semver:e}=n,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}}},f=[],u={},l="default",d="iobroker_admin";async function y(e={},t=[]){const r=m({name:d,remotes:f,shared:o,plugins:[],shareStrategy:"version-first"});var i=u[l];if(i||(i=u[l]={from:d}),!(t.indexOf(i)>=0)){t.push(i),r.initShareScopeMap("default",e);try{await Promise.all(await r.initializeSharing("default",{strategy:"version-first",from:"build",initScope:t}))}catch(c){console.error(c)}return p.initResolve(r),r}}function b(e){if(!(e in s))throw new Error(`Module ${e} does not exist in container.`);return s[e]().then(t=>()=>t)}export{b as get,y as init};
|
package/adminWww/remoteEntry.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from "./remoteEntry-v70.js";
|
package/build/lib/web.js
CHANGED
|
@@ -895,23 +895,10 @@ class Web {
|
|
|
895
895
|
const sendSecuritySession = (req, res) => {
|
|
896
896
|
void this.sendEosSecuritySession(req, res).catch(e => {
|
|
897
897
|
this.adapter.log.warn(`Cannot read EOS security session: ${e instanceof Error ? e.message : e}`);
|
|
898
|
-
res.status(
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
adminGroups: ['system.group.administrator'],
|
|
903
|
-
installerGroups: this.getEosInstallerGroups(),
|
|
904
|
-
endUserGroups: this.getEosEndUserGroups(),
|
|
905
|
-
role: 'enduser',
|
|
906
|
-
isAdministrator: false,
|
|
907
|
-
isEosAdminGroup: false,
|
|
908
|
-
isInstaller: false,
|
|
909
|
-
isEndUser: true,
|
|
910
|
-
isAdmin: false,
|
|
911
|
-
hideLegacyAdminForNonAdmins: true,
|
|
912
|
-
hideLegacyAdminFromNonAdmins: true,
|
|
913
|
-
restrictProtectedAdapterControls: true,
|
|
914
|
-
protectedAdapters: this.getEosProtectedAdapterNames(),
|
|
898
|
+
res.status(503).json({
|
|
899
|
+
error: 'EOS security context temporarily unavailable',
|
|
900
|
+
transient: true,
|
|
901
|
+
role: 'unknown',
|
|
915
902
|
});
|
|
916
903
|
});
|
|
917
904
|
};
|
|
@@ -1141,6 +1128,21 @@ class Web {
|
|
|
1141
1128
|
this.server.app.get('/empty.html', (_req, res) => {
|
|
1142
1129
|
res.status(200).send('');
|
|
1143
1130
|
});
|
|
1131
|
+
// Stability release: entrypoints and module-federation manifests must always
|
|
1132
|
+
// revalidate. Hashed leaf assets remain cacheable through express.static.
|
|
1133
|
+
this.server.app.use((req, res, next) => {
|
|
1134
|
+
const pathName = req.path || req.url.split('?')[0];
|
|
1135
|
+
if (pathName === '/'
|
|
1136
|
+
|| pathName === '/index.html'
|
|
1137
|
+
|| pathName === '/mf-manifest.json'
|
|
1138
|
+
|| /^\/remoteEntry(?:-v\d+)?\.js$/.test(pathName)
|
|
1139
|
+
|| /^\/assets\/(?:hostInit|index-CQZugZ1z)-[^/]+\.js$/.test(pathName)) {
|
|
1140
|
+
res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, proxy-revalidate');
|
|
1141
|
+
res.setHeader('Pragma', 'no-cache');
|
|
1142
|
+
res.setHeader('Expires', '0');
|
|
1143
|
+
}
|
|
1144
|
+
next();
|
|
1145
|
+
});
|
|
1144
1146
|
this.server.app.get('/index.html', async (_req, res) => {
|
|
1145
1147
|
this.indexHTML ||= await this.prepareIndex('/index.html');
|
|
1146
1148
|
res.header('Content-Type', 'text/html');
|
package/build/main.js
CHANGED
|
@@ -216,8 +216,11 @@ class Admin extends adapter_core_1.Adapter {
|
|
|
216
216
|
delete objects[id];
|
|
217
217
|
}
|
|
218
218
|
}
|
|
219
|
-
if (id
|
|
220
|
-
this.
|
|
219
|
+
if (id.startsWith('system.adapter.')) {
|
|
220
|
+
const { adapter } = this.parseAdapterObjectId(id);
|
|
221
|
+
if (this.getProtectedAdapterNames().includes(adapter)) {
|
|
222
|
+
this.scheduleEosSecurityGuard(`protected object change: ${id}`);
|
|
223
|
+
}
|
|
221
224
|
}
|
|
222
225
|
// TODO Build in some threshold of messages
|
|
223
226
|
socket?.objectChange(id, obj);
|
|
@@ -769,9 +772,15 @@ class Admin extends adapter_core_1.Adapter {
|
|
|
769
772
|
if (!obj) {
|
|
770
773
|
return false;
|
|
771
774
|
}
|
|
775
|
+
const native = (obj.native ||= {});
|
|
776
|
+
let changed = false;
|
|
777
|
+
if (native._nexowattEosAclManaged !== true) {
|
|
778
|
+
native._nexowattEosAclManaged = true;
|
|
779
|
+
native._nexowattEosAclPrevious = obj.acl ? JSON.stringify(obj.acl) : null;
|
|
780
|
+
changed = true;
|
|
781
|
+
}
|
|
772
782
|
const targetAcl = this.getAdminOnlyAcl();
|
|
773
783
|
const acl = (obj.acl ||= {});
|
|
774
|
-
let changed = false;
|
|
775
784
|
if (acl.owner !== targetAcl.owner) {
|
|
776
785
|
acl.owner = targetAcl.owner;
|
|
777
786
|
changed = true;
|
|
@@ -789,14 +798,51 @@ class Admin extends adapter_core_1.Adapter {
|
|
|
789
798
|
}
|
|
790
799
|
return changed;
|
|
791
800
|
}
|
|
801
|
+
async restoreObjectAclManagedByEos(id) {
|
|
802
|
+
const obj = await this.getForeignObjectAsync(id);
|
|
803
|
+
const native = obj?.native;
|
|
804
|
+
if (!obj || !native || native._nexowattEosAclManaged !== true) {
|
|
805
|
+
return false;
|
|
806
|
+
}
|
|
807
|
+
const targetAcl = this.getAdminOnlyAcl();
|
|
808
|
+
const currentAcl = obj.acl;
|
|
809
|
+
const stillManaged = !!currentAcl
|
|
810
|
+
&& currentAcl.owner === targetAcl.owner
|
|
811
|
+
&& currentAcl.ownerGroup === targetAcl.ownerGroup
|
|
812
|
+
&& currentAcl.object === targetAcl.object;
|
|
813
|
+
const previous = native._nexowattEosAclPrevious;
|
|
814
|
+
if (stillManaged) {
|
|
815
|
+
if (typeof previous === 'string' && previous) {
|
|
816
|
+
try {
|
|
817
|
+
obj.acl = JSON.parse(previous);
|
|
818
|
+
}
|
|
819
|
+
catch {
|
|
820
|
+
delete obj.acl;
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
else {
|
|
824
|
+
delete obj.acl;
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
delete native._nexowattEosAclManaged;
|
|
828
|
+
delete native._nexowattEosAclPrevious;
|
|
829
|
+
await this.setForeignObjectAsync(id, obj);
|
|
830
|
+
return true;
|
|
831
|
+
}
|
|
792
832
|
getLegacyAdminAclObjectIds() {
|
|
793
833
|
return ['system.adapter.admin', LEGACY_ADMIN_INSTANCE_ID];
|
|
794
834
|
}
|
|
795
835
|
async ensureLegacyAdminVisibleOnlyToAdmins() {
|
|
836
|
+
let changed = false;
|
|
796
837
|
if (!this.shouldHideLegacyAdminFromNonAdmins()) {
|
|
838
|
+
for (const id of this.getLegacyAdminAclObjectIds()) {
|
|
839
|
+
changed = (await this.restoreObjectAclManagedByEos(id)) || changed;
|
|
840
|
+
}
|
|
841
|
+
if (changed) {
|
|
842
|
+
this.log.info('EOS ACL guard restored legacy admin visibility because the restriction is disabled');
|
|
843
|
+
}
|
|
797
844
|
return;
|
|
798
845
|
}
|
|
799
|
-
let changed = false;
|
|
800
846
|
for (const id of this.getLegacyAdminAclObjectIds()) {
|
|
801
847
|
changed = (await this.ensureObjectAdminOnlyAcl(id)) || changed;
|
|
802
848
|
}
|
|
@@ -1047,8 +1093,8 @@ class Admin extends adapter_core_1.Adapter {
|
|
|
1047
1093
|
await this.ensureLegacyAdminLocked();
|
|
1048
1094
|
await this.ensureLegacyAdminVisibleOnlyToAdmins();
|
|
1049
1095
|
if (!this.eosDeleteLockRepairFinished) {
|
|
1050
|
-
this.eosDeleteLockRepairFinished = true;
|
|
1051
1096
|
await this.repairStaleAdapterDeleteLocks();
|
|
1097
|
+
this.eosDeleteLockRepairFinished = true;
|
|
1052
1098
|
}
|
|
1053
1099
|
if (this.config.eosProtectAdapterDeletion !== false) {
|
|
1054
1100
|
for (const adapter of this.getProtectedAdapterNames()) {
|
|
@@ -1064,12 +1110,15 @@ class Admin extends adapter_core_1.Adapter {
|
|
|
1064
1110
|
}
|
|
1065
1111
|
}
|
|
1066
1112
|
startEosSecurityGuard() {
|
|
1067
|
-
this.
|
|
1113
|
+
for (const adapter of this.getProtectedAdapterNames()) {
|
|
1114
|
+
this.subscribeForeignObjects(`system.adapter.${adapter}`);
|
|
1115
|
+
this.subscribeForeignObjects(`system.adapter.${adapter}.*`);
|
|
1116
|
+
}
|
|
1068
1117
|
void this.enforceEosSecurity('startup');
|
|
1069
1118
|
if (!this.eosSecurityTimer) {
|
|
1070
1119
|
this.eosSecurityTimer = setInterval(() => {
|
|
1071
1120
|
void this.enforceEosSecurity('periodic');
|
|
1072
|
-
},
|
|
1121
|
+
}, 300000);
|
|
1073
1122
|
}
|
|
1074
1123
|
}
|
|
1075
1124
|
async createUpdateInfo() {
|
package/io-package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "eos-admin",
|
|
4
|
-
"version": "7.9.
|
|
4
|
+
"version": "7.9.70",
|
|
5
5
|
"titleLang": {
|
|
6
6
|
"en": "NexoWatt EOS Admin",
|
|
7
7
|
"de": "NexoWatt EOS Admin",
|
|
@@ -222,6 +222,11 @@
|
|
|
222
222
|
"pl": "Poprawka usuwania usług/modułów: skrypty DOM security nie przechwytują kliknięć kosza, stare blokady są naprawiane i chronione pozostają tylko adaptery rdzeniowe EOS.",
|
|
223
223
|
"uk": "Виправлення видалення служб/модулів: DOM security більше не перехоплює кліки кошика, старі блокування виправляються, захищені лише основні адаптери EOS.",
|
|
224
224
|
"zh-cn": "服务/模块删除硬修复:DOM security 脚本不再拦截垃圾桶点击,会修复旧删除锁,仅 EOS 核心适配器受保护。"
|
|
225
|
+
},
|
|
226
|
+
"7.9.70": {
|
|
227
|
+
"en": "Stability consolidation: one coherent frontend runtime, resilient role policy loading, reversible EOS ACL handling, native datapoint semantics and hardened update caching.",
|
|
228
|
+
"de": "Stabilitätskonsolidierung: eine einheitliche Frontend-Laufzeit, robuste Rollenabfrage, reversible EOS-ACLs, native Datenpunktlogik und abgesicherter Update-Cache.",
|
|
229
|
+
"nl": "Stabiliteitsconsolidatie: één consistente frontend-runtime, robuuste rolcontrole, herstelbare EOS-ACLs, native datapuntlogica en veiligere updatecache."
|
|
225
230
|
}
|
|
226
231
|
},
|
|
227
232
|
"desc": {
|
|
@@ -259,7 +264,7 @@
|
|
|
259
264
|
"icon": "admin.svg",
|
|
260
265
|
"messagebox": true,
|
|
261
266
|
"enabled": true,
|
|
262
|
-
"extIcon": "https://unpkg.com/iobroker.eos-admin@7.9.
|
|
267
|
+
"extIcon": "https://unpkg.com/iobroker.eos-admin@7.9.70/admin/admin.svg",
|
|
263
268
|
"keywords": [
|
|
264
269
|
"NexoWatt",
|
|
265
270
|
"EOS",
|
|
@@ -270,7 +275,7 @@
|
|
|
270
275
|
"licensed"
|
|
271
276
|
],
|
|
272
277
|
"compact": true,
|
|
273
|
-
"readme": "https://unpkg.com/iobroker.eos-admin@7.9.
|
|
278
|
+
"readme": "https://unpkg.com/iobroker.eos-admin@7.9.70/README.md",
|
|
274
279
|
"authors": [
|
|
275
280
|
"bluefox <bluefox@ccu.io>",
|
|
276
281
|
"hobbyquaker <hq@ccu.io>"
|
|
@@ -339,7 +344,7 @@
|
|
|
339
344
|
"nondeletable": false,
|
|
340
345
|
"allowAdapterUpdate": true,
|
|
341
346
|
"allowAdapterDelete": false,
|
|
342
|
-
"meta": "https://unpkg.com/iobroker.eos-admin@7.9.
|
|
347
|
+
"meta": "https://unpkg.com/iobroker.eos-admin@7.9.70/io-package.json",
|
|
343
348
|
"npmPackage": "iobroker.eos-admin",
|
|
344
349
|
"packetName": "iobroker.eos-admin"
|
|
345
350
|
},
|
|
@@ -1018,5 +1023,5 @@
|
|
|
1018
1023
|
}
|
|
1019
1024
|
}
|
|
1020
1025
|
},
|
|
1021
|
-
"version": "7.9.
|
|
1026
|
+
"version": "7.9.58"
|
|
1022
1027
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.eos-admin",
|
|
3
|
-
"description": "NexoWatt EOS Admin
|
|
4
|
-
"version": "7.9.
|
|
3
|
+
"description": "NexoWatt EOS Admin consolidated stability release with a single coherent frontend runtime",
|
|
4
|
+
"version": "7.9.70",
|
|
5
5
|
"contributors": [
|
|
6
6
|
"bluefox <dogafox@gmail.com>",
|
|
7
7
|
"apollon77",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"@iobroker/ws-server": "^4.4.1",
|
|
35
35
|
"ajv": "^8.20.0",
|
|
36
36
|
"archiver": "^7.0.1",
|
|
37
|
-
"axios": "^1.
|
|
37
|
+
"axios": "^1.17.0",
|
|
38
38
|
"body-parser": "^2.2.2",
|
|
39
39
|
"compression": "^1.8.1",
|
|
40
40
|
"cookie-parser": "^1.4.7",
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
"test:integration": "mocha test/integration --exit && npm run test:gui && npm run test:rule && npm run test:unit",
|
|
115
115
|
"test:rule": "mocha test/rule --exit",
|
|
116
116
|
"test:gui": "mocha test/*.gui.js --exit",
|
|
117
|
-
"prepublishOnly": "npm run check:eos-package",
|
|
117
|
+
"prepublishOnly": "npm run check:eos-package && npm run check:eos-stability",
|
|
118
118
|
"build": "npm run build:frontend && npm run build:backend",
|
|
119
119
|
"build:backend": "tsc -p tsconfig.build.json && tsx tasks.mts --backend-i18n",
|
|
120
120
|
"build:frontend": "tsx tasks.mts",
|
|
@@ -137,7 +137,8 @@
|
|
|
137
137
|
"check:eos-package": "node tools/nexowatt-validate-package.cjs",
|
|
138
138
|
"nexowatt:repo-entry": "node tools/nexowatt-generate-repo-entry.cjs",
|
|
139
139
|
"nexowatt:patch-repo": "node tools/nexowatt-patch-repo.cjs",
|
|
140
|
-
"nexowatt:repair-update": "node tools/nexowatt-repair-eos-admin-update.cjs"
|
|
140
|
+
"nexowatt:repair-update": "node tools/nexowatt-repair-eos-admin-update.cjs",
|
|
141
|
+
"check:eos-stability": "node tools/nexowatt-stability-check.cjs && node tools/nexowatt-frontend-graph-check.cjs && node tools/nexowatt-policy-selftest.cjs"
|
|
141
142
|
},
|
|
142
143
|
"author": "NexoWatt",
|
|
143
144
|
"private": false,
|
|
@@ -13,23 +13,11 @@ const exists = file => fs.existsSync(path.join(root, file));
|
|
|
13
13
|
const pkg = readJson('package.json');
|
|
14
14
|
const io = readJson('io-package.json');
|
|
15
15
|
|
|
16
|
-
const srcPkg = readJson('src-admin/package.json');
|
|
17
|
-
const srcLock = readJson('src-admin/package-lock.json');
|
|
18
|
-
const srcVersion = readJson('src-admin/src/version.json');
|
|
19
|
-
const buildInfo = readJson('NEXOWATT_EOS_BUILD_INFO.json');
|
|
20
|
-
const cacheTag = String(pkg.version).split('.').pop();
|
|
21
|
-
|
|
22
16
|
if (pkg.name !== 'iobroker.eos-admin') fail(`package.json name must be iobroker.eos-admin, got ${pkg.name}`);
|
|
23
17
|
if (pkg.private !== false) fail('package.json private must be false for npm publishing');
|
|
24
18
|
if (pkg.version !== io.common.version) fail(`package.json and io-package.json versions differ: ${pkg.version} vs ${io.common.version}`);
|
|
25
19
|
if (io.common.name !== 'eos-admin') fail(`io-package common.name must be eos-admin, got ${io.common.name}`);
|
|
26
20
|
|
|
27
|
-
if (srcPkg.version !== pkg.version) fail(`src-admin/package.json version differs: ${srcPkg.version} vs ${pkg.version}`);
|
|
28
|
-
if (srcLock.version !== pkg.version || srcLock.packages?.['']?.version !== pkg.version) fail('src-admin/package-lock.json top-level version is stale');
|
|
29
|
-
if (srcVersion.version !== pkg.version) fail(`src-admin/src/version.json version differs: ${srcVersion.version} vs ${pkg.version}`);
|
|
30
|
-
if (buildInfo.version !== pkg.version) fail(`NEXOWATT_EOS_BUILD_INFO.json version differs: ${buildInfo.version} vs ${pkg.version}`);
|
|
31
|
-
if (!String(buildInfo.uiVersion || '').startsWith(`v${cacheTag}-`)) fail(`build info uiVersion must start with v${cacheTag}-, got ${buildInfo.uiVersion}`);
|
|
32
|
-
|
|
33
21
|
if (io.common.packetName !== 'iobroker.eos-admin') fail(`io-package common.packetName must be iobroker.eos-admin, got ${io.common.packetName}`);
|
|
34
22
|
if (io.common.npmPackage !== 'iobroker.eos-admin') fail(`io-package common.npmPackage must be iobroker.eos-admin, got ${io.common.npmPackage}`);
|
|
35
23
|
if (io.native.port !== 8091 && io.native.port !== 8081) fail(`unexpected default port ${io.native.port}`);
|
|
@@ -49,11 +37,7 @@ for (const [field, expected] of Object.entries({
|
|
|
49
37
|
for (const file of [
|
|
50
38
|
'adminWww/index.html',
|
|
51
39
|
'adminWww/js/eos-branding.js',
|
|
52
|
-
'adminWww/js/eos-adapter-surface-cleanup.js',
|
|
53
40
|
'adminWww/css/eos-branding.css',
|
|
54
|
-
'src-admin/public/js/eos-branding.js',
|
|
55
|
-
'src-admin/public/js/eos-adapter-surface-cleanup.js',
|
|
56
|
-
'src-admin/public/css/eos-branding.css',
|
|
57
41
|
'adminWww/img/eos/nexowatt-192.png',
|
|
58
42
|
'admin/admin.svg',
|
|
59
43
|
'LICENSE',
|
|
@@ -68,40 +52,6 @@ const refs = [...index.matchAll(/(?:src|href)="\.\/([^"?#]+)(?:\?[^"#]*)?"/g)].m
|
|
|
68
52
|
const missing = refs.filter(ref => !exists(path.join('adminWww', ref)));
|
|
69
53
|
if (missing.length) fail(`adminWww/index.html references missing files:\n${missing.join('\n')}`);
|
|
70
54
|
|
|
71
|
-
|
|
72
|
-
const adminIndex = fs.readFileSync(path.join(root, 'adminWww/index.html'), 'utf8');
|
|
73
|
-
const sourceIndex = fs.readFileSync(path.join(root, 'src-admin/index.html'), 'utf8');
|
|
74
|
-
if (!adminIndex.includes('no-cache, no-store, must-revalidate') || !sourceIndex.includes('no-cache, no-store, must-revalidate')) fail('index files must disable stale HTML caching');
|
|
75
|
-
for (const asset of [
|
|
76
|
-
'eos-console-quiet.js', 'eos-branding.css', 'eos-branding.js',
|
|
77
|
-
'eos-adapter-surface-cleanup.js', 'eos-security-ui.js', 'eos-role-ui.js',
|
|
78
|
-
'eos-assistant.js', 'eos-objects-state-tools.js'
|
|
79
|
-
]) {
|
|
80
|
-
const escaped = asset.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
81
|
-
if (!new RegExp(`${escaped}\\?v=${cacheTag}(?:["'])`).test(adminIndex)) fail(`adminWww/index.html cache tag is stale for ${asset}`);
|
|
82
|
-
if (!new RegExp(`${escaped}\\?v=${cacheTag}(?:["'])`).test(sourceIndex)) fail(`src-admin/index.html cache tag is stale for ${asset}`);
|
|
83
|
-
}
|
|
84
|
-
for (const entry of ['hostInit-v61.js', 'index-CQZugZ1z-v68.js']) {
|
|
85
|
-
const escaped = entry.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
86
|
-
if (!new RegExp(`${escaped}\\?v=${cacheTag}(?:["'])`).test(adminIndex)) fail(`adminWww/index.html entry cache tag is stale for ${entry}`);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
for (const file of ['eos-branding.js', 'eos-adapter-surface-cleanup.js', 'eos-console-quiet.js', 'eos-security-ui.js', 'eos-role-ui.js', 'eos-assistant.js', 'eos-objects-state-tools.js']) {
|
|
90
|
-
const deployed = fs.readFileSync(path.join(root, 'adminWww/js', file));
|
|
91
|
-
const source = fs.readFileSync(path.join(root, 'src-admin/public/js', file));
|
|
92
|
-
if (!deployed.equals(source)) fail(`source/deployed script drift: ${file}`);
|
|
93
|
-
}
|
|
94
|
-
if (!fs.readFileSync(path.join(root, 'adminWww/css/eos-branding.css')).equals(fs.readFileSync(path.join(root, 'src-admin/public/css/eos-branding.css')))) {
|
|
95
|
-
fail('source/deployed eos-branding.css drift');
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
for (let version = 54; version <= 60; version += 1) {
|
|
99
|
-
for (const file of [`Objects-DPan0bzw-v${version}.js`, `index-D2ymscJA-v${version}.js`]) {
|
|
100
|
-
const stat = fs.statSync(path.join(root, 'adminWww/assets', file));
|
|
101
|
-
if (stat.size > 256) fail(`${file} must be a compatibility shim, got ${stat.size} bytes`);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
55
|
const bootstrapFiles = fs.readdirSync(path.join(root, 'adminWww/assets')).filter(f => /^bootstrap-.*\.js$/.test(f));
|
|
106
56
|
if (!bootstrapFiles.length) fail('missing bootstrap bundle');
|
|
107
57
|
const bootstrap = bootstrapFiles.map(f => fs.readFileSync(path.join(root, 'adminWww/assets', f), 'utf8')).join('\n');
|
|
@@ -116,57 +66,13 @@ if (index.includes('eos-hard-logout.js')) fail('adminWww/index.html must not loa
|
|
|
116
66
|
if (!branding.includes('isAdapterConfigSurface')) fail('eos-branding.js lacks native adapter config safe-mode detection');
|
|
117
67
|
if (!branding.includes('Adapter UIs must remain 100% functional')) fail('eos-branding.js lacks native adapter config interaction guard');
|
|
118
68
|
if (!branding.includes('v38: All native Admin dialogs') || !branding.includes('ensurePopupCompatibility')) fail('eos-branding.js lacks v38 popup compatibility guard');
|
|
119
|
-
|
|
120
|
-
if (!branding.includes('eos-native-drawer-header-hidden') || !branding.includes("header.setAttribute('inert', '')")) fail('eos-branding.js lacks the native drawer-header guard');
|
|
121
|
-
if (!branding.includes('removeStrayNativeDrawerHeaders') || !branding.includes('a[href=\"/#easy\"]')) fail('eos-branding.js lacks structural native drawer-header cleanup');
|
|
122
|
-
if (!branding.includes('ensureStandaloneNavToggle')) fail('eos-branding.js lacks the independent EOS navigation toggle');
|
|
123
|
-
const activeGraph = [
|
|
124
|
-
fs.readFileSync(path.join(root, 'adminWww/assets/index-CQZugZ1z-v68.js'), 'utf8'),
|
|
125
|
-
fs.readFileSync(path.join(root, 'adminWww/assets/bootstrap-COulQZax-v68.js'), 'utf8'),
|
|
126
|
-
fs.readFileSync(path.join(root, 'adminWww/remoteEntry-v61.js'), 'utf8'),
|
|
127
|
-
].join('\n');
|
|
128
|
-
if (/bootstrap-COulQZax-v61\.js|(?:AdapterUpdateDialog|Adapters|Config|CustomTab|DeviceManager|EasyMode|Enums|Fields|Files|Hosts|Instances|Intro|Logs|Objects|Users)-[^\"']+-v61\.js/.test(activeGraph)) fail('active v67 frontend graph still imports a v61 application runtime/route chunk');
|
|
129
|
-
|
|
130
|
-
const drawerSource = fs.readFileSync(path.join(root, 'src-admin/src/components/Drawer.tsx'), 'utf8');
|
|
131
|
-
const activeBootstrap = fs.readFileSync(path.join(root, 'adminWww/assets/bootstrap-COulQZax-v68.js'), 'utf8');
|
|
132
|
-
const brandingCss = fs.readFileSync(path.join(root, 'adminWww/css/eos-branding.css'), 'utf8');
|
|
133
|
-
if (!drawerSource.includes('if (!this.isSwipeable())') || !drawerSource.includes('return null;')) fail('Drawer.tsx still renders the native desktop drawer header');
|
|
134
|
-
if (!activeBootstrap.includes('getHeader(){if(!this.isSwipeable())return null;')) fail('active bootstrap still renders the native desktop drawer header');
|
|
135
|
-
if (!brandingCss.includes('a[href=\"/#easy\"]') || !brandingCss.includes('data-eos-native-drawer-header-hidden')) fail('branding CSS lacks structural native drawer-header fallback');
|
|
136
|
-
|
|
137
|
-
const appSource = fs.readFileSync(path.join(root, 'src-admin/src/App.tsx'), 'utf8');
|
|
138
|
-
if (!branding.includes('eos-primary-brand') || !branding.includes('toolbar.firstElementChild')) fail('branding lacks robust primary EOS brand insertion');
|
|
139
|
-
if (!branding.includes('removeNativeTopLeftGhost') || !branding.includes('a[href=\"/#easy\"]')) fail('branding lacks exact native toolbar ghost removal');
|
|
140
|
-
if (!brandingCss.includes('data-eos-primary-brand') || !brandingCss.includes('v7.9.68: exact native desktop toolbar ghost removal')) fail('branding CSS lacks primary-brand/exact-toolbar safeguards');
|
|
141
|
-
if (!activeBootstrap.includes('getHeader(){if(!this.isSwipeable())return null;')) fail('fresh v68 bootstrap still renders desktop Drawer.getHeader()');
|
|
142
|
-
if (!appSource.includes('{small && (') || !appSource.includes('{small &&\n this.state.drawerState')) fail('App.tsx still renders native desktop toolbar identity controls');
|
|
143
|
-
if (!activeBootstrap.includes('children:[e&&jsxRuntimeExports.jsx(')) fail('v68 bootstrap still renders native desktop MenuIcon');
|
|
144
|
-
if (!activeBootstrap.includes('this.renderLoggedUser(),e&&this.state.drawerState')) fail('v68 bootstrap still renders the native desktop compact identity block');
|
|
145
|
-
if (!activeBootstrap.includes('const version$b=\"7.9.68\"')) fail('v68 bootstrap frontend version marker is stale');
|
|
146
|
-
|
|
147
|
-
for (const file of [
|
|
148
|
-
'AdapterUpdateDialog-BMg84Hpf-v67.js', 'Adapters-B5_jQ7DE-v67.js', 'Config-hHK2UzGP-v67.js',
|
|
149
|
-
'CustomTab-B0wqoazH-v67.js', 'DeviceManager-BFmQeYQ1-v67.js', 'EasyMode-B1d9Vdc4-v67.js',
|
|
150
|
-
'Enums-DbWYxKOo-v67.js', 'Fields-CX3rKuWb-v67.js', 'Files-Cd2HOzIE-v67.js',
|
|
151
|
-
'Hosts-Bg8QzW5i-v67.js', 'Instances-YdaGnS5a-v67.js', 'Intro-DkwRiz1n-v67.js',
|
|
152
|
-
'Logs-CsVPSLJH-v67.js', 'Objects-DPan0bzw-v67.js', 'Users-BgnBRgwU-v67.js',
|
|
153
|
-
]) {
|
|
154
|
-
if (!exists(path.join('adminWww/assets', file))) fail(`missing compatible route chunk: ${file}`);
|
|
155
|
-
const chunk = fs.readFileSync(path.join(root, 'adminWww/assets', file), 'utf8');
|
|
156
|
-
if (chunk.includes('bootstrap-COulQZax-v61.js')) fail(`${file} still imports bootstrap-v61`);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
const activeAdapterReact = fs.readFileSync(path.join(root, 'adminWww/assets/index-D2ymscJA-v61.js'), 'utf8');
|
|
160
|
-
const activeObjects = fs.readFileSync(path.join(root, 'adminWww/assets/Objects-DPan0bzw-v67.js'), 'utf8');
|
|
161
|
-
const activeAdapters = fs.readFileSync(path.join(root, 'adminWww/assets/Adapters-B5_jQ7DE-v67.js'), 'utf8');
|
|
162
|
-
for (const marker of ['eos-object-value-cell', 'data-eos-object-writable']) {
|
|
163
|
-
if (!activeAdapterReact.includes(marker)) fail(`active ObjectBrowser bundle lacks required marker: ${marker}`);
|
|
164
|
-
}
|
|
165
|
-
for (const marker of ['Cannot write state', 'common.write=false', 'enableStateValueEdit']) {
|
|
166
|
-
if (!activeObjects.includes(marker)) fail(`active Objects bundle lacks native write-semantics marker: ${marker}`);
|
|
167
|
-
}
|
|
168
|
-
if (!activeAdapters.includes('install-specific-version')) fail('active Adapters bundle lacks the expert specific-version action');
|
|
169
69
|
const mainBuild = fs.readFileSync(path.join(root, 'build/main.js'), 'utf8');
|
|
170
70
|
if (!mainBuild.includes('v37 BackItUp/runtime-adapter compatibility')) fail('build/main.js lacks v37 BackItUp compatibility guard');
|
|
171
71
|
|
|
72
|
+
|
|
73
|
+
const srcPkg = readJson('src-admin/package.json');
|
|
74
|
+
const srcVersion = readJson('src-admin/src/version.json');
|
|
75
|
+
if (srcPkg.version !== pkg.version || srcVersion.version !== pkg.version) fail('src-admin versions must match package.json');
|
|
76
|
+
if (!index.includes('hostInit-v70.js?v=70') || !index.includes('index-CQZugZ1z-v70.js?v=70')) fail('adminWww/index.html must load the v70 runtime');
|
|
77
|
+
|
|
172
78
|
console.log('[NexoWatt EOS package validation] OK');
|