iobroker.javascript 9.0.18 → 9.1.1

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 (156) hide show
  1. package/README.md +14 -6
  2. package/admin/assets/OpenAiDialog-rhLuRLIM.js +13 -0
  3. package/admin/assets/{Save-C-o2LLTD.js → Save-Cld9qv9i.js} +1 -1
  4. package/admin/assets/ScriptEditor-C-fO5h68.js +2 -0
  5. package/admin/assets/ScriptEditorVanillaMonaco-DSYvOslZ.js +1 -0
  6. package/admin/assets/createSvgIcon-DPvF8xqu.js +8 -0
  7. package/admin/assets/hostInit-LzITLWDa.js +1 -0
  8. package/admin/assets/index-BVPl8hv0.js +16 -0
  9. package/admin/assets/index-BkyLyaYT.js +8 -0
  10. package/admin/assets/index-C49cpVll.js +5 -0
  11. package/admin/assets/index-CVZSzCXy.js +1 -0
  12. package/admin/assets/index-DFZipply.js +1 -0
  13. package/admin/assets/index-DlDUIfpA.js +193 -0
  14. package/admin/assets/index-Dsh1HfIY.js +1 -0
  15. package/admin/assets/index-XSrHkgLE.js +1230 -0
  16. package/admin/assets/index-gIA8x-8f.js +1 -0
  17. package/admin/assets/index-q6iFaoFb.js +986 -0
  18. package/admin/assets/inheritsLoose-B0Ba5G9z.js +29 -0
  19. package/admin/assets/iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js +1 -0
  20. package/admin/assets/iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-QWG5Arqe.js +1 -0
  21. package/admin/assets/iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js +1 -0
  22. package/admin/assets/iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js +1 -0
  23. package/admin/assets/iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js +1 -0
  24. package/admin/assets/iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js +1 -0
  25. package/admin/assets/iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js +1 -0
  26. package/admin/assets/localSharedImportMap-xmSu9Qkg.js +1 -0
  27. package/admin/assets/useTheme-hy6f3gra.js +1 -0
  28. package/admin/assets/virtualExposes-BPsCufin.js +1 -0
  29. package/admin/assets/virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-D-eF6r8M.js +8 -0
  30. package/admin/custom/assets/Components-B8x6wOMD.js +1 -0
  31. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-B7D2xOvV.js +1 -0
  32. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.mjs-ClsgYnEX.js +1 -0
  33. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__.mjs-B551AMx-.js +1 -0
  34. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-KsT5vKjV.js +1 -0
  35. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_x_mf_2_date_mf_2_pickers__loadShare__.mjs-DgHZUNxn.js +1 -0
  36. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__leaflet__loadShare__.mjs-BYONkEgA.js +1 -0
  37. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs-0SjJESw9.js +1 -0
  38. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs_commonjs-proxy-CInLgMWW.js +1 -0
  39. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__.mjs-CL--xmjC.js +1 -0
  40. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-CorOEig8.js +1 -0
  41. package/admin/custom/assets/DefaultPropsProvider-CGb21NGY.js +1 -0
  42. package/admin/custom/assets/TextField-DNzklBSl.js +139 -0
  43. package/admin/custom/assets/ThemeProvider-B4G3jidj.js +29 -0
  44. package/admin/custom/assets/blue-CagzI6CQ.js +1 -0
  45. package/admin/custom/assets/createSvgIcon-ZdrQ8zSU.js +1 -0
  46. package/admin/custom/assets/createTheme-Wd4QxQE0.js +8 -0
  47. package/admin/custom/assets/defaultTheme-F2iJF2G2.js +1 -0
  48. package/admin/custom/assets/hostInit-iUL-wyj1.js +1 -0
  49. package/admin/custom/assets/index-AZB1OHDH.js +1 -0
  50. package/admin/custom/assets/index-BptSiKBK.js +55 -0
  51. package/admin/custom/assets/index-Bvwv5H7k.js +1 -0
  52. package/admin/custom/assets/index-C0RmLaAj.js +1 -0
  53. package/admin/custom/assets/index-CYc31Gwg.js +960 -0
  54. package/admin/custom/assets/index-CmJ8HzSc.js +1 -0
  55. package/admin/custom/assets/index-D0iTiVVG.js +8 -0
  56. package/admin/custom/assets/index-DbXK0odl.js +1 -0
  57. package/admin/custom/assets/index-Dp7A3XHd.js +7 -0
  58. package/admin/custom/assets/index-N2n19KrF.js +1523 -0
  59. package/admin/custom/assets/index-YBvFYuP6.js +31 -0
  60. package/admin/custom/assets/index-huvZQhZw.js +1 -0
  61. package/admin/custom/assets/index-iRHaQfi-.js +1 -0
  62. package/admin/custom/assets/isSameWeek-DDsSIa_t.js +1 -0
  63. package/admin/custom/assets/jsx-runtime-DfVU3AZG.js +1 -0
  64. package/admin/custom/assets/leaflet-src-k2rCV-Ix.js +1 -0
  65. package/admin/custom/assets/localSharedImportMap-2Enh8EZe.js +1 -0
  66. package/admin/custom/assets/useTheme-BfhDdtAr.js +1 -0
  67. package/admin/custom/assets/useTheme-DWZ6jNyq.js +1 -0
  68. package/admin/custom/assets/virtualExposes-CqrW7o8v.js +2 -0
  69. package/admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-BZZsMeVW.js +8 -0
  70. package/admin/custom/customComponents.js +1 -2
  71. package/admin/i18n/de.json +10 -1
  72. package/admin/i18n/en.json +10 -1
  73. package/admin/i18n/es.json +10 -1
  74. package/admin/i18n/fr.json +10 -1
  75. package/admin/i18n/it.json +10 -1
  76. package/admin/i18n/nl.json +10 -1
  77. package/admin/i18n/pl.json +10 -1
  78. package/admin/i18n/pt.json +10 -1
  79. package/admin/i18n/ru.json +10 -1
  80. package/admin/i18n/uk.json +10 -1
  81. package/admin/i18n/zh-cn.json +10 -1
  82. package/admin/jsonConfig.json +195 -130
  83. package/admin/mf-manifest.json +1 -1
  84. package/admin/remoteEntry.js +1 -2
  85. package/admin/tab.html +13 -8
  86. package/build/lib/javascript.d.ts +4 -2
  87. package/build/lib/nodeModulesManagement.js +3 -2
  88. package/build/lib/nodeModulesManagement.js.map +1 -1
  89. package/build/lib/protectFs.js +27 -12
  90. package/build/lib/protectFs.js.map +1 -1
  91. package/build/lib/sandbox.js +3 -3
  92. package/build/lib/sandbox.js.map +1 -1
  93. package/build/lib/tools.js +7 -2
  94. package/build/lib/tools.js.map +1 -1
  95. package/build/main.js +236 -19
  96. package/build/main.js.map +1 -1
  97. package/build/types.d.ts +5 -0
  98. package/docs/de/README.md +75 -0
  99. package/docs/en/README.md +75 -0
  100. package/io-package.json +32 -28
  101. package/package.json +14 -14
  102. package/admin/assets/OpenAiDialog-BVH3CrDi.js +0 -36
  103. package/admin/assets/ScriptEditor-CAoVSrVf.js +0 -2
  104. package/admin/assets/ScriptEditorVanillaMonaco-Cf9lA3Q5.js +0 -1
  105. package/admin/assets/_commonjsHelpers-Cpj98o6Y.js +0 -1
  106. package/admin/assets/createSvgIcon-XLoRKyxt.js +0 -30
  107. package/admin/assets/hostInit-OBG53iVO.js +0 -2
  108. package/admin/assets/index-BDco9K7T.js +0 -942
  109. package/admin/assets/index-C96hfBFW.js +0 -16
  110. package/admin/assets/index-CFhFEZTW.js +0 -5
  111. package/admin/assets/index-Cm-iTDHo.js +0 -193
  112. package/admin/assets/index-DCTpQXgR.js +0 -1294
  113. package/admin/assets/index-DKvqhUY5.js +0 -24
  114. package/admin/assets/index-DQiceR5U.js +0 -1
  115. package/admin/assets/index-DZ3lKVw8.js +0 -1
  116. package/admin/assets/index-DcrzW8Zn.js +0 -1
  117. package/admin/assets/index-Do-nCdWy.js +0 -9
  118. package/admin/assets/inheritsLoose-tR_kcxUR.js +0 -36
  119. package/admin/assets/iobroker_javascript__loadShare__react__loadShare__-6sH5wUl6.js +0 -1
  120. package/admin/assets/iobroker_javascript__mf_v__runtimeInit__mf_v__-CMP-NJnH.js +0 -8
  121. package/admin/assets/useTheme-C2oUi01-.js +0 -1
  122. package/admin/assets/virtualExposes-BIHI7g3E.js +0 -1
  123. package/admin/custom/assets/Components-DjQ_LxKw.js +0 -1
  124. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__-DaN0pfsw.js +0 -1
  125. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_material__loadShare__-BqzgglHd.js +0 -1
  126. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react__loadShare__-BNbscXK6.js +0 -1
  127. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__-N2_tx_mJ.js +0 -1
  128. package/admin/custom/assets/ConfigCustomJavascriptSet__mf_v__runtimeInit__mf_v__-jdUmHa_i.js +0 -5
  129. package/admin/custom/assets/DefaultPropsProvider-B8ZCC-c2.js +0 -1
  130. package/admin/custom/assets/DefaultPropsProvider-DfdXSIBu.js +0 -1
  131. package/admin/custom/assets/FilledInput-CSjr0QT8.js +0 -2
  132. package/admin/custom/assets/Tabs-CiTQkBjL.js +0 -138
  133. package/admin/custom/assets/ThemeProvider-C50pIiW4.js +0 -29
  134. package/admin/custom/assets/_commonjsHelpers-CE1G-McA.js +0 -1
  135. package/admin/custom/assets/createSvgIcon-C7qUEvjp.js +0 -1
  136. package/admin/custom/assets/createTheme-Bm92JF8u.js +0 -8
  137. package/admin/custom/assets/defaultTheme-BlO0eCf6.js +0 -1
  138. package/admin/custom/assets/hostInit-BJ6gSofk.js +0 -2
  139. package/admin/custom/assets/index-4wMOc304.js +0 -1
  140. package/admin/custom/assets/index-5CTGLw4h.js +0 -55
  141. package/admin/custom/assets/index-BkjEWGjf.js +0 -1
  142. package/admin/custom/assets/index-Bym4WjyH.js +0 -908
  143. package/admin/custom/assets/index-COcxCdeX.js +0 -8
  144. package/admin/custom/assets/index-CnpybLRW.js +0 -1
  145. package/admin/custom/assets/index-Db8nkuMR.js +0 -7
  146. package/admin/custom/assets/index-DcK0RDrH.js +0 -1
  147. package/admin/custom/assets/index-Df6OaCxx.js +0 -1
  148. package/admin/custom/assets/index-Dx7rDE4p.js +0 -1
  149. package/admin/custom/assets/index-t-NMdeH5.js +0 -31
  150. package/admin/custom/assets/index-u8R8UVCf.js +0 -1393
  151. package/admin/custom/assets/jsx-runtime-C1csJtRx.js +0 -1
  152. package/admin/custom/assets/leaflet-src-DpWQqQWv.js +0 -1
  153. package/admin/custom/assets/useEnhancedEffect-aUb-5tTL.js +0 -1
  154. package/admin/custom/assets/useTheme-Cgjfsi-1.js +0 -1
  155. package/admin/custom/assets/useTheme-DFGylj2o.js +0 -1
  156. package/admin/custom/assets/virtualExposes-C_DtjFte.js +0 -2
@@ -1,136 +1,201 @@
1
1
  {
2
- "type": "tabs",
3
- "i18n": true,
4
- "iconPosition": "top",
5
- "items": {
6
- "_main": {
7
- "type": "panel",
8
- "label": "Main settings",
9
- "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4KICAgIDxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTTQ5NS45IDE2Ni42YzMuMiA4LjcgLjUgMTguNC02LjQgMjQuNmwtNDMuMyAzOS40YzEuMSA4LjMgMS43IDE2LjggMS43IDI1LjRzLS42IDE3LjEtMS43IDI1LjRsNDMuMyAzOS40YzYuOSA2LjIgOS42IDE1LjkgNi40IDI0LjZjLTQuNCAxMS45LTkuNyAyMy4zLTE1LjggMzQuM2wtNC43IDguMWMtNi42IDExLTE0IDIxLjQtMjIuMSAzMS4yYy01LjkgNy4yLTE1LjcgOS42LTI0LjUgNi44bC01NS43LTE3LjdjLTEzLjQgMTAuMy0yOC4yIDE4LjktNDQgMjUuNGwtMTIuNSA1Ny4xYy0yIDkuMS05IDE2LjMtMTguMiAxNy44Yy0xMy44IDIuMy0yOCAzLjUtNDIuNSAzLjVzLTI4LjctMS4yLTQyLjUtMy41Yy05LjItMS41LTE2LjItOC43LTE4LjItMTcuOGwtMTIuNS01Ny4xYy0xNS44LTYuNS0zMC42LTE1LjEtNDQtMjUuNEw4My4xIDQyNS45Yy04LjggMi44LTE4LjYgLjMtMjQuNS02LjhjLTguMS05LjgtMTUuNS0yMC4yLTIyLjEtMzEuMmwtNC43LTguMWMtNi4xLTExLTExLjQtMjIuNC0xNS44LTM0LjNjLTMuMi04LjctLjUtMTguNCA2LjQtMjQuNmw0My4zLTM5LjRDNjQuNiAyNzMuMSA2NCAyNjQuNiA2NCAyNTZzLjYtMTcuMSAxLjctMjUuNEwyMi40IDE5MS4yYy02LjktNi4yLTkuNi0xNS45LTYuNC0yNC42YzQuNC0xMS45IDkuNy0yMy4zIDE1LjgtMzQuM2w0LjctOC4xYzYuNi0xMSAxNC0yMS40IDIyLjEtMzEuMmM1LjktNy4yIDE1LjctOS42IDI0LjUtNi44bDU1LjcgMTcuN2MxMy40LTEwLjMgMjguMi0xOC45IDQ0LTI1LjRsMTIuNS01Ny4xYzItOS4xIDktMTYuMyAxOC4yLTE3LjhDMjI3LjMgMS4yIDI0MS41IDAgMjU2IDBzMjguNyAxLjIgNDIuNSAzLjVjOS4yIDEuNSAxNi4yIDguNyAxOC4yIDE3LjhsMTIuNSA1Ny4xYzE1LjggNi41IDMwLjYgMTUuMSA0NCAyNS40bDU1LjctMTcuN2M4LjgtMi44IDE4LjYtLjMgMjQuNSA2LjhjOC4xIDkuOCAxNS41IDIwLjIgMjIuMSAzMS4ybDQuNyA4LjFjNi4xIDExIDExLjQgMjIuNCAxNS44IDM0LjN6TTI1NiAzMzZhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6Ii8+Cjwvc3ZnPgo=",
10
- "items": {
11
- "libraries": {
12
- "type": "chips",
13
- "label": "Additional npm modules",
14
- "delimiter": " ",
15
- "xs": 12,
16
- "sm": 12
2
+ "type": "tabs",
3
+ "i18n": true,
4
+ "iconPosition": "top",
5
+ "items": {
6
+ "_main": {
7
+ "type": "panel",
8
+ "label": "Main settings",
9
+ "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4KICAgIDxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTTQ5NS45IDE2Ni42YzMuMiA4LjcgLjUgMTguNC02LjQgMjQuNmwtNDMuMyAzOS40YzEuMSA4LjMgMS43IDE2LjggMS43IDI1LjRzLS42IDE3LjEtMS43IDI1LjRsNDMuMyAzOS40YzYuOSA2LjIgOS42IDE1LjkgNi40IDI0LjZjLTQuNCAxMS45LTkuNyAyMy4zLTE1LjggMzQuM2wtNC43IDguMWMtNi42IDExLTE0IDIxLjQtMjIuMSAzMS4yYy01LjkgNy4yLTE1LjcgOS42LTI0LjUgNi44bC01NS43LTE3LjdjLTEzLjQgMTAuMy0yOC4yIDE4LjktNDQgMjUuNGwtMTIuNSA1Ny4xYy0yIDkuMS05IDE2LjMtMTguMiAxNy44Yy0xMy44IDIuMy0yOCAzLjUtNDIuNSAzLjVzLTI4LjctMS4yLTQyLjUtMy41Yy05LjItMS41LTE2LjItOC43LTE4LjItMTcuOGwtMTIuNS01Ny4xYy0xNS44LTYuNS0zMC42LTE1LjEtNDQtMjUuNEw4My4xIDQyNS45Yy04LjggMi44LTE4LjYgLjMtMjQuNS02LjhjLTguMS05LjgtMTUuNS0yMC4yLTIyLjEtMzEuMmwtNC43LTguMWMtNi4xLTExLTExLjQtMjIuNC0xNS44LTM0LjNjLTMuMi04LjctLjUtMTguNCA2LjQtMjQuNmw0My4zLTM5LjRDNjQuNiAyNzMuMSA2NCAyNjQuNiA2NCAyNTZzLjYtMTcuMSAxLjctMjUuNEwyMi40IDE5MS4yYy02LjktNi4yLTkuNi0xNS45LTYuNC0yNC42YzQuNC0xMS45IDkuNy0yMy4zIDE1LjgtMzQuM2w0LjctOC4xYzYuNi0xMSAxNC0yMS40IDIyLjEtMzEuMmM1LjktNy4yIDE1LjctOS42IDI0LjUtNi44bDU1LjcgMTcuN2MxMy40LTEwLjMgMjguMi0xOC45IDQ0LTI1LjRsMTIuNS01Ny4xYzItOS4xIDktMTYuMyAxOC4yLTE3LjhDMjI3LjMgMS4yIDI0MS41IDAgMjU2IDBzMjguNyAxLjIgNDIuNSAzLjVjOS4yIDEuNSAxNi4yIDguNyAxOC4yIDE3LjhsMTIuNSA1Ny4xYzE1LjggNi41IDMwLjYgMTUuMSA0NCAyNS40bDU1LjctMTcuN2M4LjgtMi44IDE4LjYtLjMgMjQuNSA2LjhjOC4xIDkuOCAxNS41IDIwLjIgMjIuMSAzMS4ybDQuNyA4LjFjNi4xIDExIDExLjQgMjIuNCAxNS44IDM0LjN6TTI1NiAzMzZhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6Ii8+Cjwvc3ZnPgo=",
10
+ "items": {
11
+ "libraries": {
12
+ "type": "chips",
13
+ "label": "Additional npm modules",
14
+ "delimiter": " ",
15
+ "xs": 12,
16
+ "sm": 12
17
+ },
18
+ "libraryTypings": {
19
+ "newLine": true,
20
+ "type": "chips",
21
+ "label": "Activate syntax help for these npm modules",
22
+ "delimiter": " ",
23
+ "xs": 12,
24
+ "sm": 12
25
+ },
26
+ "mirrorPath": {
27
+ "newLine": true,
28
+ "type": "text",
29
+ "label": "Mirror scripts to file path",
30
+ "xs": 12,
31
+ "sm": 8
32
+ },
33
+ "mirrorInstance": {
34
+ "hidden": "!data.mirrorPath",
35
+ "type": "instance",
36
+ "adapter": "javascript",
37
+ "label": "Instance, that do mirroring",
38
+ "xs": 12,
39
+ "sm": 4
40
+ },
41
+ "enableSetObject": {
42
+ "newLine": true,
43
+ "type": "checkbox",
44
+ "label": "Enable command \"setObject\"",
45
+ "xs": 12,
46
+ "sm": 12,
47
+ "md": 6
48
+ },
49
+ "enableSendToHost": {
50
+ "type": "checkbox",
51
+ "label": "Enable command \"sendToHost\"",
52
+ "xs": 12,
53
+ "sm": 12,
54
+ "md": 6
55
+ },
56
+ "enableExec": {
57
+ "newLine": true,
58
+ "type": "checkbox",
59
+ "label": "Enable command \"exec\"",
60
+ "xs": 12,
61
+ "sm": 12,
62
+ "md": 6
63
+ },
64
+ "subscribe": {
65
+ "type": "checkbox",
66
+ "label": "Do not subscribe all states on start",
67
+ "xs": 12,
68
+ "sm": 12,
69
+ "md": 6
70
+ },
71
+ "maxSetStatePerMinute": {
72
+ "newLine": true,
73
+ "type": "number",
74
+ "label": "Maximum setState requests per Minute per Script",
75
+ "help": "default 1000",
76
+ "min": 20,
77
+ "max": 100000,
78
+ "xs": 12,
79
+ "sm": 12,
80
+ "md": 6
81
+ },
82
+ "maxTriggersPerScript": {
83
+ "type": "number",
84
+ "label": "Maximum triggers per Script (until warning)",
85
+ "help": "default 100",
86
+ "min": 20,
87
+ "max": 100000,
88
+ "xs": 12,
89
+ "sm": 12,
90
+ "md": 6
91
+ },
92
+ "allowSelfSignedCerts": {
93
+ "newLine": true,
94
+ "type": "checkbox",
95
+ "label": "Allow self-signed certificates for URL requests",
96
+ "xs": 12,
97
+ "sm": 12
98
+ }
99
+ }
17
100
  },
18
- "libraryTypings": {
19
- "newLine": true,
20
- "type": "chips",
21
- "label": "Activate syntax help for these npm modules",
22
- "delimiter": " ",
23
- "xs": 12,
24
- "sm": 12
101
+ "_astro": {
102
+ "type": "panel",
103
+ "label": "Astro settings",
104
+ "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4KICAgIDxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTTQ5NC4yIDIyMS45bC01OS44LTQwLjUgMTMuNy03MWMyLjYtMTMuMi0xLjYtMjYuOC0xMS4xLTM2LjQtOS42LTkuNS0yMy4yLTEzLjctMzYuMi0xMS4xbC03MC45IDEzLjctNDAuNC01OS45Yy0xNS4xLTIyLjMtNTEuOS0yMi4zLTY3IDBsLTQwLjQgNTkuOS03MC44LTEzLjdDOTggNjAuNCA4NC41IDY0LjUgNzUgNzQuMWMtOS41IDkuNi0xMy43IDIzLjEtMTEuMSAzNi4zbDEzLjcgNzEtNTkuOCA0MC41QzYuNiAyMjkuNSAwIDI0MiAwIDI1NS41czYuNyAyNiAxNy44IDMzLjVsNTkuOCA0MC41LTEzLjcgNzFjLTIuNiAxMy4yIDEuNiAyNi44IDExLjEgMzYuMyA5LjUgOS41IDIyLjkgMTMuNyAzNi4zIDExLjFsNzAuOC0xMy43IDQwLjQgNTkuOUMyMzAgNTA1LjMgMjQyLjYgNTEyIDI1NiA1MTJzMjYtNi43IDMzLjUtMTcuOGw0MC40LTU5LjkgNzAuOSAxMy43YzEzLjQgMi43IDI2LjgtMS42IDM2LjMtMTEuMSA5LjUtOS41IDEzLjYtMjMuMSAxMS4xLTM2LjNsLTEzLjctNzEgNTkuOC00MC41YzExLjEtNy41IDE3LjgtMjAuMSAxNy44LTMzLjUtLjEtMTMuNi02LjctMjYuMS0xNy45LTMzLjd6bS0xMTIuOSA4NS42bDE3LjYgOTEuMi05MS0xNy42TDI1NiA0NThsLTUxLjktNzctOTAuOSAxNy42IDE3LjYtOTEuMi03Ni44LTUyIDc2LjgtNTItMTcuNi05MS4yIDkxIDE3LjZMMjU2IDUzbDUxLjkgNzYuOSA5MS0xNy42LTE3LjYgOTEuMSA3Ni44IDUyLTc2LjggNTIuMXpNMjU2IDE1MmMtNTcuMyAwLTEwNCA0Ni43LTEwNCAxMDRzNDYuNyAxMDQgMTA0IDEwNCAxMDQtNDYuNyAxMDQtMTA0LTQ2LjctMTA0LTEwNC0xMDR6bTAgMTYwYy0zMC45IDAtNTYtMjUuMS01Ni01NnMyNS4xLTU2IDU2LTU2IDU2IDI1LjEgNTYgNTYtMjUuMSA1Ni01NiA1NnoiLz4KPC9zdmc+Cg==",
105
+ "items": {
106
+ "_astroConfig": {
107
+ "type": "custom",
108
+ "i18n": true,
109
+ "xs": 12,
110
+ "sm": 12,
111
+ "md": 12,
112
+ "lg": 12,
113
+ "url": "custom/customComponents.js",
114
+ "name": "ConfigCustomJavascriptSet/Components/Astro",
115
+ "bundlerType": "module"
116
+ },
117
+ "createAstroStates": {
118
+ "newLine": true,
119
+ "type": "checkbox",
120
+ "label": "Create states for all astro times",
121
+ "xs": 12,
122
+ "sm": 12
123
+ }
124
+ }
25
125
  },
26
- "mirrorPath": {
27
- "newLine": true,
28
- "type": "text",
29
- "label": "Mirror scripts to file path",
30
- "xs": 12,
31
- "sm": 8
32
- },
33
- "mirrorInstance": {
34
- "hidden": "!data.mirrorPath",
35
- "type": "instance",
36
- "adapter": "javascript",
37
- "label": "Instance, that do mirroring",
38
- "xs": 12,
39
- "sm": 4
40
- },
41
- "enableSetObject": {
42
- "newLine": true,
43
- "type": "checkbox",
44
- "label": "Enable command \"setObject\"",
45
- "xs": 12,
46
- "sm": 12,
47
- "md": 6
48
- },
49
- "enableSendToHost": {
50
- "type": "checkbox",
51
- "label": "Enable command \"sendToHost\"",
52
- "xs": 12,
53
- "sm": 12,
54
- "md": 6
55
- },
56
- "enableExec": {
57
- "newLine": true,
58
- "type": "checkbox",
59
- "label": "Enable command \"exec\"",
60
- "xs": 12,
61
- "sm": 12,
62
- "md": 6
63
- },
64
- "subscribe": {
65
- "type": "checkbox",
66
- "label": "Do not subscribe all states on start",
67
- "xs": 12,
68
- "sm": 12,
69
- "md": 6
70
- },
71
- "maxSetStatePerMinute": {
72
- "newLine": true,
73
- "type": "number",
74
- "label": "Maximum setState requests per Minute per Script",
75
- "help": "default 1000",
76
- "min": 20,
77
- "max": 100000,
78
- "xs": 12,
79
- "sm": 12,
80
- "md": 6
81
- },
82
- "maxTriggersPerScript": {
83
- "type": "number",
84
- "label": "Maximum triggers per Script (until warning)",
85
- "help": "default 100",
86
- "min": 20,
87
- "max": 100000,
88
- "xs": 12,
89
- "sm": 12,
90
- "md": 6
91
- },
92
- "allowSelfSignedCerts": {
93
- "newLine": true,
94
- "type": "checkbox",
95
- "label": "Allow self-signed certificates for URL requests",
96
- "xs": 12,
97
- "sm": 12
98
- },
99
- "gptKey": {
100
- "newLine": true,
101
- "type": "text",
102
- "label": "ChatGPT API key",
103
- "xs": 12,
104
- "sm": 12,
105
- "help": "platform.openai.com",
106
- "helpLink": "https://platform.openai.com/api-keys"
107
- }
108
- }
109
- },
110
- "_astro": {
111
- "type": "panel",
112
- "label": "Astro settings",
113
- "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4KICAgIDxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTTQ5NC4yIDIyMS45bC01OS44LTQwLjUgMTMuNy03MWMyLjYtMTMuMi0xLjYtMjYuOC0xMS4xLTM2LjQtOS42LTkuNS0yMy4yLTEzLjctMzYuMi0xMS4xbC03MC45IDEzLjctNDAuNC01OS45Yy0xNS4xLTIyLjMtNTEuOS0yMi4zLTY3IDBsLTQwLjQgNTkuOS03MC44LTEzLjdDOTggNjAuNCA4NC41IDY0LjUgNzUgNzQuMWMtOS41IDkuNi0xMy43IDIzLjEtMTEuMSAzNi4zbDEzLjcgNzEtNTkuOCA0MC41QzYuNiAyMjkuNSAwIDI0MiAwIDI1NS41czYuNyAyNiAxNy44IDMzLjVsNTkuOCA0MC41LTEzLjcgNzFjLTIuNiAxMy4yIDEuNiAyNi44IDExLjEgMzYuMyA5LjUgOS41IDIyLjkgMTMuNyAzNi4zIDExLjFsNzAuOC0xMy43IDQwLjQgNTkuOUMyMzAgNTA1LjMgMjQyLjYgNTEyIDI1NiA1MTJzMjYtNi43IDMzLjUtMTcuOGw0MC40LTU5LjkgNzAuOSAxMy43YzEzLjQgMi43IDI2LjgtMS42IDM2LjMtMTEuMSA5LjUtOS41IDEzLjYtMjMuMSAxMS4xLTM2LjNsLTEzLjctNzEgNTkuOC00MC41YzExLjEtNy41IDE3LjgtMjAuMSAxNy44LTMzLjUtLjEtMTMuNi02LjctMjYuMS0xNy45LTMzLjd6bS0xMTIuOSA4NS42bDE3LjYgOTEuMi05MS0xNy42TDI1NiA0NThsLTUxLjktNzctOTAuOSAxNy42IDE3LjYtOTEuMi03Ni44LTUyIDc2LjgtNTItMTcuNi05MS4yIDkxIDE3LjZMMjU2IDUzbDUxLjkgNzYuOSA5MS0xNy42LTE3LjYgOTEuMSA3Ni44IDUyLTc2LjggNTIuMXpNMjU2IDE1MmMtNTcuMyAwLTEwNCA0Ni43LTEwNCAxMDRzNDYuNyAxMDQgMTA0IDEwNCAxMDQtNDYuNyAxMDQtMTA0LTQ2LjctMTA0LTEwNC0xMDR6bTAgMTYwYy0zMC45IDAtNTYtMjUuMS01Ni01NnMyNS4xLTU2IDU2LTU2IDU2IDI1LjEgNTYgNTYtMjUuMSA1Ni01NiA1NnoiLz4KPC9zdmc+Cg==",
114
- "items": {
115
- "_astroConfig": {
116
- "type": "custom",
117
- "i18n": true,
118
- "xs": 12,
119
- "sm": 12,
120
- "md": 12,
121
- "lg": 12,
122
- "url": "custom/customComponents.js",
123
- "name": "ConfigCustomJavascriptSet/Components/Astro",
124
- "bundlerType": "module"
125
- },
126
- "createAstroStates": {
127
- "newLine": true,
128
- "type": "checkbox",
129
- "label": "Create states for all astro times",
130
- "xs": 12,
131
- "sm": 12
126
+ "_ai": {
127
+ "type": "panel",
128
+ "label": "AI settings",
129
+ "icon": "data:image/svg+xml;base64,",
130
+ "items": {
131
+ "_aiDescription": {
132
+ "type": "staticText",
133
+ "label": "AI settings description",
134
+ "xs": 12,
135
+ "sm": 12,
136
+ "style": {
137
+ "marginBottom": 16
138
+ }
139
+ },
140
+ "gptKey": {
141
+ "newLine": true,
142
+ "type": "text",
143
+ "label": "ChatGPT API key",
144
+ "xs": 12,
145
+ "sm": 12,
146
+ "help": "platform.openai.com",
147
+ "helpLink": "https://platform.openai.com/api-keys"
148
+ },
149
+ "claudeKey": {
150
+ "newLine": true,
151
+ "type": "text",
152
+ "label": "Anthropic API key",
153
+ "xs": 12,
154
+ "sm": 12,
155
+ "help": "console.anthropic.com",
156
+ "helpLink": "https://console.anthropic.com/settings/keys"
157
+ },
158
+ "geminiKey": {
159
+ "newLine": true,
160
+ "type": "text",
161
+ "label": "Gemini API key",
162
+ "xs": 12,
163
+ "sm": 12,
164
+ "help": "aistudio.google.com",
165
+ "helpLink": "https://aistudio.google.com/apikey"
166
+ },
167
+ "deepseekKey": {
168
+ "newLine": true,
169
+ "type": "text",
170
+ "label": "DeepSeek API key",
171
+ "xs": 12,
172
+ "sm": 12,
173
+ "help": "platform.deepseek.com",
174
+ "helpLink": "https://platform.deepseek.com/api_keys"
175
+ },
176
+ "gptBaseUrl": {
177
+ "newLine": true,
178
+ "type": "text",
179
+ "label": "Custom API Base URL",
180
+ "xs": 12,
181
+ "sm": 12,
182
+ "help": "Custom API Base URL help",
183
+ "placeholder": "https://api.openai.com/v1"
184
+ },
185
+ "_testApiConnection": {
186
+ "newLine": true,
187
+ "type": "sendTo",
188
+ "label": "Test API connection",
189
+ "command": "testApiConnection",
190
+ "jsonData": "{\"apiKey\": \"${data.gptKey}\", \"baseUrl\": \"${data.gptBaseUrl}\"}",
191
+ "variant": "outlined",
192
+ "xs": 12,
193
+ "sm": 6,
194
+ "alsoDependsOn": ["gptKey", "gptBaseUrl"],
195
+ "showProcess": true,
196
+ "resultStringToError": "error"
197
+ }
198
+ }
132
199
  }
133
- }
134
200
  }
135
- }
136
201
  }
@@ -1 +1 @@
1
- {"id":"iobroker_javascript","name":"iobroker_javascript","metaData":{"name":"iobroker_javascript","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"iobroker_javascript"},"remoteEntry":{"name":"remoteEntry.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"remoteEntry.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"iobroker_javascript","pluginVersion":"0.2.5","publicPath":"./"},"shared":[{"id":"iobroker_javascript:@mui/material","name":"@mui/material","version":"6.5.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-Cm-iTDHo.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:@iobroker/adapter-react-v5","name":"@iobroker/adapter-react-v5","version":"8.0.13","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-BDco9K7T.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:react-dom","name":"react-dom","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-DKvqhUY5.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:react","name":"react","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-Do-nCdWy.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:prop-types","name":"prop-types","version":"15.8.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-DQiceR5U.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[]}
1
+ {"id":"iobroker_javascript","name":"iobroker_javascript","metaData":{"name":"iobroker_javascript","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"iobroker_javascript"},"remoteEntry":{"name":"remoteEntry.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"remoteEntry.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"iobroker_javascript","pluginVersion":"0.2.5","publicPath":"./"},"shared":[{"id":"iobroker_javascript:react","name":"react","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-Dsh1HfIY.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:react-dom","name":"react-dom","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-BkyLyaYT.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:@mui/material","name":"@mui/material","version":"6.5.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-DlDUIfpA.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:prop-types","name":"prop-types","version":"15.8.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-CVZSzCXy.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:@iobroker/adapter-react-v5","name":"@iobroker/adapter-react-v5","version":"8.1.3","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-q6iFaoFb.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[]}
@@ -1,2 +1 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./assets/index-BDco9K7T.js","./assets/createSvgIcon-XLoRKyxt.js","./assets/iobroker_javascript__loadShare__react__loadShare__-6sH5wUl6.js","./assets/_commonjsHelpers-Cpj98o6Y.js","./assets/iobroker_javascript__mf_v__runtimeInit__mf_v__-CMP-NJnH.js","./assets/index-CFhFEZTW.js","./assets/Save-C-o2LLTD.js","./assets/useTheme-C2oUi01-.js","./assets/index-DZ3lKVw8.js","./assets/index-Cm-iTDHo.js","./assets/inheritsLoose-tR_kcxUR.js","./assets/index-DQiceR5U.js","./assets/index-Do-nCdWy.js","./assets/index-DKvqhUY5.js"])))=>i.map(i=>d[i]);
2
- import{i as d,a as m}from"./assets/iobroker_javascript__mf_v__runtimeInit__mf_v__-CMP-NJnH.js";import s from"./assets/virtualExposes-BIHI7g3E.js";import{_ as a}from"./assets/preload-helper-BDBacUwf.js";const i={"@iobroker/adapter-react-v5":async()=>await a(()=>import("./assets/index-BDco9K7T.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url),"@mui/material":async()=>await a(()=>import("./assets/index-Cm-iTDHo.js"),__vite__mapDeps([9,1,2,3,4,10,7]),import.meta.url),"prop-types":async()=>await a(()=>import("./assets/index-DQiceR5U.js").then(t=>t.i),__vite__mapDeps([11,3]),import.meta.url),react:async()=>await a(()=>import("./assets/index-Do-nCdWy.js").then(t=>t.i),__vite__mapDeps([12,3]),import.meta.url),"react-dom":async()=>await a(()=>import("./assets/index-DKvqhUY5.js").then(t=>t.i),__vite__mapDeps([13,3,2,4]),import.meta.url)},o={"@iobroker/adapter-react-v5":{name:"@iobroker/adapter-react-v5",version:"8.0.13",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){o["@iobroker/adapter-react-v5"].loaded=!0;const{"@iobroker/adapter-react-v5":e}=i,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_javascript",async get(){o["@mui/material"].loaded=!0;const{"@mui/material":e}=i,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"prop-types":{name:"prop-types",version:"15.8.1",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){o["prop-types"].loaded=!0;const{"prop-types":e}=i,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_javascript",async get(){o.react.loaded=!0;const{react:e}=i,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_javascript",async get(){o["react-dom"].loaded=!0;const{"react-dom":e}=i,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}}},_=[],u={},p="default",c="iobroker_javascript";async function k(e={},t=[]){const r=d({name:c,remotes:_,shared:o,plugins:[],shareStrategy:"version-first"});var n=u[p];if(n||(n=u[p]={from:c}),!(t.indexOf(n)>=0)){t.push(n),r.initShareScopeMap("default",e);try{await Promise.all(await r.initializeSharing("default",{strategy:"version-first",from:"build",initScope:t}))}catch(l){console.error(l)}return m.initResolve(r),r}}function y(e){if(!(e in s))throw new Error(`Module ${e} does not exist in container.`);return s[e]().then(t=>()=>t)}export{y as get,k as init};
1
+ import"./assets/preload-helper-BDBacUwf.js";import{g as r,i as a}from"./assets/virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-D-eF6r8M.js";export{r as get,a as init};
package/admin/tab.html CHANGED
@@ -1,7 +1,7 @@
1
1
  <!doctype html>
2
2
  <html lang="en">
3
3
  <head>
4
- <script type="module" src="./assets/hostInit-OBG53iVO.js"></script>
4
+ <script type="module" src="./assets/hostInit-LzITLWDa.js"></script>
5
5
 
6
6
  <meta charset="utf-8" />
7
7
  <link
@@ -115,14 +115,19 @@
115
115
  type="text/javascript"
116
116
  src="google-blockly/own/blocks_object.js"
117
117
  ></script>
118
- <script type="module" crossorigin src="./assets/index-DCTpQXgR.js"></script>
119
- <link rel="modulepreload" crossorigin href="./assets/iobroker_javascript__mf_v__runtimeInit__mf_v__-CMP-NJnH.js">
120
- <link rel="modulepreload" crossorigin href="./assets/_commonjsHelpers-Cpj98o6Y.js">
121
- <link rel="modulepreload" crossorigin href="./assets/iobroker_javascript__loadShare__react__loadShare__-6sH5wUl6.js">
122
- <link rel="modulepreload" crossorigin href="./assets/createSvgIcon-XLoRKyxt.js">
123
- <link rel="modulepreload" crossorigin href="./assets/inheritsLoose-tR_kcxUR.js">
124
- <link rel="modulepreload" crossorigin href="./assets/index-CFhFEZTW.js">
118
+ <script type="module" crossorigin src="./assets/index-XSrHkgLE.js"></script>
125
119
  <link rel="modulepreload" crossorigin href="./assets/preload-helper-BDBacUwf.js">
120
+ <link rel="modulepreload" crossorigin href="./assets/virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-D-eF6r8M.js">
121
+ <link rel="modulepreload" crossorigin href="./assets/iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js">
122
+ <link rel="modulepreload" crossorigin href="./assets/iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js">
123
+ <link rel="modulepreload" crossorigin href="./assets/iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js">
124
+ <link rel="modulepreload" crossorigin href="./assets/createSvgIcon-DPvF8xqu.js">
125
+ <link rel="modulepreload" crossorigin href="./assets/iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js">
126
+ <link rel="modulepreload" crossorigin href="./assets/iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js">
127
+ <link rel="modulepreload" crossorigin href="./assets/iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-QWG5Arqe.js">
128
+ <link rel="modulepreload" crossorigin href="./assets/iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js">
129
+ <link rel="modulepreload" crossorigin href="./assets/index-C49cpVll.js">
130
+ <link rel="modulepreload" crossorigin href="./assets/inheritsLoose-B0Ba5G9z.js">
126
131
  <link rel="stylesheet" crossorigin href="./assets/index-BTsjunTt.css">
127
132
  </head>
128
133
  <body>
@@ -2024,8 +2024,10 @@ declare global {
2024
2024
  type SettableOtherObject = SettableObject<OtherObject>;
2025
2025
 
2026
2026
  /** Represents the change of a state */
2027
- interface ChangedStateObject<TOld extends iobJS.StateValue = any, TNew extends iobJS.StateValue = TOld>
2028
- extends StateObject {
2027
+ interface ChangedStateObject<
2028
+ TOld extends iobJS.StateValue = any,
2029
+ TNew extends iobJS.StateValue = TOld,
2030
+ > extends StateObject {
2029
2031
  common: StateCommon;
2030
2032
  native: Record<string, any>;
2031
2033
  id?: string;
@@ -9,13 +9,14 @@ const child_process_1 = require("child_process");
9
9
  */
10
10
  async function requestModuleNameByUrl(url) {
11
11
  return new Promise((resolve, reject) => {
12
- (0, child_process_1.exec)(`npm view ${url} name`, { windowsHide: true, encoding: 'utf8' }, (error, stdout /* , stderr */) => {
12
+ (0, child_process_1.execFile)('npm', ['view', url, 'name'], { windowsHide: true, encoding: 'utf8', shell: false }, (error, stdout) => {
13
13
  if (error) {
14
14
  reject(error);
15
15
  }
16
16
  else {
17
17
  if (typeof stdout !== 'string') {
18
- throw new Error(`Could not determine module name for url "${url}". Unexpected stdout: "${stdout ? JSON.stringify(stdout) : ''}"`);
18
+ reject(new Error(`Could not determine module name for url "${url}". Unexpected stdout: "${stdout ? JSON.stringify(stdout) : ''}"`));
19
+ return;
19
20
  }
20
21
  resolve(stdout.trim());
21
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nodeModulesManagement.js","sourceRoot":"","sources":["../../src/lib/nodeModulesManagement.ts"],"names":[],"mappings":";;AAOA,wDAoBC;AA3BD,iDAAyD;AAEzD;;;;GAIG;AACI,KAAK,UAAU,sBAAsB,CAAC,GAAW;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,IAAA,oBAAI,EACA,YAAY,GAAG,OAAO,EACtB,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EACvC,CAAC,KAA2B,EAAE,MAAc,CAAC,cAAc,EAAE,EAAE;YAC3D,IAAI,KAAK,EAAE,CAAC;gBACR,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACJ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC7B,MAAM,IAAI,KAAK,CACX,4CAA4C,GAAG,0BAA0B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CACnH,CAAC;gBACN,CAAC;gBAED,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["import { exec, type ExecException } from 'child_process';\n\n/**\n * Request a module name by given url using `npm view`\n *\n * @param url the url to the package which should be installed via npm\n */\nexport async function requestModuleNameByUrl(url: string): Promise<string> {\n return new Promise((resolve, reject) => {\n exec(\n `npm view ${url} name`,\n { windowsHide: true, encoding: 'utf8' },\n (error: ExecException | null, stdout: string /* , stderr */) => {\n if (error) {\n reject(error);\n } else {\n if (typeof stdout !== 'string') {\n throw new Error(\n `Could not determine module name for url \"${url}\". Unexpected stdout: \"${stdout ? JSON.stringify(stdout) : ''}\"`,\n );\n }\n\n resolve(stdout.trim());\n }\n },\n );\n });\n}\n"]}
1
+ {"version":3,"file":"nodeModulesManagement.js","sourceRoot":"","sources":["../../src/lib/nodeModulesManagement.ts"],"names":[],"mappings":";;AAOA,wDAwBC;AA/BD,iDAAiE;AAEjE;;;;GAIG;AACI,KAAK,UAAU,sBAAsB,CAAC,GAAW;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,IAAA,wBAAQ,EACJ,KAAK,EACL,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EACrB,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EACrD,CAAC,KAA+B,EAAE,MAAc,EAAE,EAAE;YAChD,IAAI,KAAK,EAAE,CAAC;gBACR,MAAM,CAAC,KAAc,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACJ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC7B,MAAM,CACF,IAAI,KAAK,CACL,4CAA4C,GAAG,0BAA0B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CACnH,CACJ,CAAC;oBACF,OAAO;gBACX,CAAC;gBAED,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["import { execFile, type ExecFileException } from 'child_process';\n\n/**\n * Request a module name by given url using `npm view`\n *\n * @param url the url to the package which should be installed via npm\n */\nexport async function requestModuleNameByUrl(url: string): Promise<string> {\n return new Promise((resolve, reject) => {\n execFile(\n 'npm',\n ['view', url, 'name'],\n { windowsHide: true, encoding: 'utf8', shell: false },\n (error: ExecFileException | null, stdout: string) => {\n if (error) {\n reject(error as Error);\n } else {\n if (typeof stdout !== 'string') {\n reject(\n new Error(\n `Could not determine module name for url \"${url}\". Unexpected stdout: \"${stdout ? JSON.stringify(stdout) : ''}\"`,\n ),\n );\n return;\n }\n\n resolve(stdout.trim());\n }\n },\n );\n });\n}\n"]}
@@ -160,9 +160,9 @@ class ProtectFs {
160
160
  ProtectFs.checkProtected(path, false);
161
161
  return nodeFS.promises.rm.call(this, path, options); // async function rm(path, options) {
162
162
  },
163
- rmdir: async (path, options) => {
163
+ rmdir: async (path) => {
164
164
  ProtectFs.checkProtected(path, false);
165
- return nodeFS.promises.rmdir.call(this, path, options); // async function rmdir(path, options) {
165
+ return nodeFS.promises.rmdir.call(this, path); // async function rmdir(path, options) {
166
166
  },
167
167
  };
168
168
  // Add missing constants
@@ -189,19 +189,35 @@ class ProtectFs {
189
189
  }
190
190
  static checkProtected(file, readOnly) {
191
191
  if (file.fd) {
192
+ // FileHandle objects bypass path checks — they were already validated at open() time.
193
+ // This is safe because the sandbox only exposes the wrapped fs where open() is protected.
192
194
  return;
193
195
  }
194
- const filePath = (0, node_path_1.normalize)(file.toString());
196
+ let filePath;
197
+ try {
198
+ // Use resolve() instead of normalize() to get an absolute path and eliminate .. traversals.
199
+ // Then try realpath to resolve symlinks — fall back to resolved path if file doesn't exist yet.
200
+ const resolved = (0, node_path_1.resolve)(file.toString());
201
+ try {
202
+ filePath = nodeFS.realpathSync(resolved);
203
+ }
204
+ catch {
205
+ filePath = resolved;
206
+ }
207
+ }
208
+ catch {
209
+ filePath = (0, node_path_1.normalize)(file.toString());
210
+ }
195
211
  if (filePath.endsWith(`-data${node_path_1.sep}objects.json`) || filePath.endsWith(`-data${node_path_1.sep}objects.jsonl`)) {
196
- ProtectFs.log?.error(`May not read ${file.toString()}`);
212
+ ProtectFs.log?.error(`May not access ${file.toString()}`);
197
213
  throw new Error('Permission denied');
198
214
  }
199
215
  if (!readOnly && filePath.startsWith((0, node_path_1.join)(ProtectFs.staticIoBrokerDataDir, 'files'))) {
200
- ProtectFs.log?.error(`May not read ${file.toString()} - use writeFile instead`);
216
+ ProtectFs.log?.error(`May not write ${file.toString()} - use writeFile instead`);
201
217
  throw new Error('Permission denied');
202
218
  }
203
219
  if (!readOnly && filePath.startsWith(`file://${(0, node_path_1.join)(ProtectFs.staticIoBrokerDataDir, 'files')}`)) {
204
- ProtectFs.log?.error(`May not read ${file.toString()} - use writeFile instead`);
220
+ ProtectFs.log?.error(`May not write ${file.toString()} - use writeFile instead`);
205
221
  throw new Error('Permission denied');
206
222
  }
207
223
  }
@@ -501,17 +517,16 @@ class ProtectFs {
501
517
  ProtectFs.checkProtected(path, false);
502
518
  return nodeFS.rmSync.call(this, path, options);
503
519
  }
504
- rmdir(path, options, callback) {
520
+ rmdir(path, callback) {
505
521
  ProtectFs.checkProtected(path, false);
506
522
  if (typeof callback === 'function') {
507
- return nodeFS.rmdir.call(this, path, options, callback);
523
+ return nodeFS.rmdir.call(this, path, callback);
508
524
  }
509
- // @ts-expect-error should work
510
- return nodeFS.rmdir.call(this, path, options);
525
+ return nodeFS.rmdirSync.call(this, path);
511
526
  }
512
- rmdirSync(path, options) {
527
+ rmdirSync(path) {
513
528
  ProtectFs.checkProtected(path, false);
514
- return nodeFS.rmdirSync.call(this, path, options);
529
+ return nodeFS.rmdirSync.call(this, path);
515
530
  }
516
531
  watch(filename, options, listener) {
517
532
  ProtectFs.checkProtected(filename, true);