iobroker.javascript 9.0.11 → 9.0.13

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 (134) hide show
  1. package/README.md +3 -5
  2. package/admin/assets/OpenAiDialog-BmcYPsVa.js +36 -0
  3. package/admin/assets/{Save--0ldNXLf.js → Save-DXaUpIPM.js} +1 -1
  4. package/admin/assets/{ScriptEditor-CpRWvDSw.js → ScriptEditor-BoSBgnK-.js} +1 -1
  5. package/admin/assets/{ScriptEditorVanillaMonaco-BWe9MiKn.js → ScriptEditorVanillaMonaco-Xge2wqgO.js} +1 -1
  6. package/admin/assets/{createSvgIcon-C_ElRFrf.js → createSvgIcon-DlIk-fDn.js} +3 -3
  7. package/admin/assets/hostInit-OBG53iVO.js +2 -0
  8. package/admin/assets/index-BCK6q-N6.css +1 -0
  9. package/admin/assets/{index-BLZa2V1g.js → index-BMwfsknM.js} +1 -1
  10. package/admin/assets/{index-Dr_ZFwru.css → index-BTsjunTt.css} +1 -1
  11. package/admin/assets/{index-CMttI-gM.js → index-BWM5lJbO.js} +4 -4
  12. package/admin/assets/index-Br_QjNUk.js +942 -0
  13. package/admin/assets/index-CePzv5-W.js +1294 -0
  14. package/admin/assets/index-Cjl4b70e.js +5 -0
  15. package/admin/assets/{index-BompUVvy.js → index-DZ3lKVw8.js} +1 -1
  16. package/admin/assets/{index-DmpUKunr.js → index-DwcZPzOL.js} +2 -2
  17. package/admin/assets/index-OIiv3PJA.js +16 -0
  18. package/admin/assets/{inheritsLoose-CLw44UEv.js → inheritsLoose-DNrhibGS.js} +1 -1
  19. package/admin/assets/{iobroker_javascript__loadShare__react__loadShare__-B-pIv4x_.js → iobroker_javascript__loadShare__react__loadShare__-i8pXne9X.js} +1 -1
  20. package/admin/assets/iobroker_javascript__mf_v__runtimeInit__mf_v__-DZdFIfoQ.js +5 -0
  21. package/admin/assets/preload-helper-BDBacUwf.js +1 -0
  22. package/admin/assets/useTheme-DakN8Abq.js +1 -0
  23. package/admin/custom/assets/{Components-za_0yG9W.js → Components-DjQ_LxKw.js} +1 -1
  24. package/admin/custom/assets/{ConfigCustomJavascriptSet__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__-BHJt30My.js → ConfigCustomJavascriptSet__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__-DaN0pfsw.js} +1 -1
  25. package/admin/custom/assets/{ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_material__loadShare__-WrqdT1Hz.js → ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_material__loadShare__-BqzgglHd.js} +1 -1
  26. package/admin/custom/assets/{ConfigCustomJavascriptSet__loadShare__react__loadShare__-B_YWmFeG.js → ConfigCustomJavascriptSet__loadShare__react__loadShare__-BNbscXK6.js} +1 -1
  27. package/admin/custom/assets/{ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__-DYzjQQsF.js → ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__-N2_tx_mJ.js} +1 -1
  28. package/admin/custom/assets/ConfigCustomJavascriptSet__mf_v__runtimeInit__mf_v__-jdUmHa_i.js +5 -0
  29. package/admin/custom/assets/DefaultPropsProvider-B8ZCC-c2.js +1 -0
  30. package/admin/custom/assets/DefaultPropsProvider-DfdXSIBu.js +1 -0
  31. package/admin/custom/assets/{FilledInput-BGGUNS4j.js → FilledInput-CSjr0QT8.js} +2 -2
  32. package/admin/custom/assets/{Tabs-DjdFNknI.js → Tabs-CiTQkBjL.js} +6 -6
  33. package/admin/custom/assets/{ThemeProvider-Uan4kCQd.js → ThemeProvider-C50pIiW4.js} +2 -2
  34. package/admin/custom/assets/_commonjsHelpers-CE1G-McA.js +1 -0
  35. package/admin/custom/assets/{createSvgIcon-BxCMHFh5.js → createSvgIcon-C7qUEvjp.js} +1 -1
  36. package/admin/custom/assets/createTheme-Bm92JF8u.js +8 -0
  37. package/admin/custom/assets/defaultTheme-BlO0eCf6.js +1 -0
  38. package/admin/custom/assets/{hostInit-CrAs5YZS.js → hostInit-BJ6gSofk.js} +2 -2
  39. package/admin/custom/assets/index-4wMOc304.js +1 -0
  40. package/admin/custom/assets/{index-UhQfKbTz.js → index-5CTGLw4h.js} +1 -1
  41. package/admin/custom/assets/index-BHN4DzE4.js +908 -0
  42. package/admin/custom/assets/{index-yiPj_-Rb.js → index-BkjEWGjf.js} +1 -1
  43. package/admin/custom/assets/{index-bxilEzdP.js → index-COcxCdeX.js} +2 -18
  44. package/admin/custom/assets/{index-DXg_kRe6.js → index-CnpybLRW.js} +1 -1
  45. package/admin/custom/assets/{index-ClFSKKDu.js → index-Db8nkuMR.js} +2 -2
  46. package/admin/custom/assets/{index-B2rBO0oC.js → index-DcK0RDrH.js} +1 -1
  47. package/admin/custom/assets/{index-7YkEnLQM.js → index-Df6OaCxx.js} +1 -1
  48. package/admin/custom/assets/{index-DOnIDI_a.js → index-Dx7rDE4p.js} +1 -1
  49. package/admin/custom/assets/index-t-NMdeH5.js +31 -0
  50. package/admin/custom/assets/index-u8R8UVCf.js +1393 -0
  51. package/admin/custom/assets/jsx-runtime-C1csJtRx.js +1 -0
  52. package/admin/custom/assets/leaflet-src-DpWQqQWv.js +1 -0
  53. package/admin/custom/assets/preload-helper-BDBacUwf.js +1 -0
  54. package/admin/custom/assets/useEnhancedEffect-aUb-5tTL.js +1 -0
  55. package/admin/custom/assets/{useTheme-DWmRkwMP.js → useTheme-Cgjfsi-1.js} +1 -1
  56. package/admin/custom/assets/useTheme-DFGylj2o.js +1 -0
  57. package/admin/custom/assets/virtualExposes-C_DtjFte.js +2 -0
  58. package/admin/custom/customComponents.js +2 -2
  59. package/admin/i18n/de.json +1 -1
  60. package/admin/mf-manifest.json +1 -1
  61. package/admin/remoteEntry.js +2 -2
  62. package/admin/tab.html +10 -13
  63. package/build/lib/crypto.js +32 -0
  64. package/build/lib/crypto.js.map +1 -0
  65. package/{build-backend → build}/lib/javascript.d.ts +3 -0
  66. package/{build-backend → build}/lib/utils.js.map +1 -1
  67. package/{build-backend → build}/main.js +20 -12
  68. package/build/main.js.map +1 -0
  69. package/{build-backend → build}/types.d.ts +1 -0
  70. package/docs/en/javascript.md +1 -1
  71. package/io-package.json +14 -14
  72. package/package.json +21 -20
  73. package/admin/assets/OpenAiDialog-BYXyaWDU.js +0 -36
  74. package/admin/assets/hostInit-fzxL8JAx.js +0 -2
  75. package/admin/assets/index-BUU5hWiL.js +0 -1294
  76. package/admin/assets/index-DUBaHZ92.css +0 -1
  77. package/admin/assets/index-DeFm7TiX.js +0 -5
  78. package/admin/assets/index-T5pCS60x.js +0 -16
  79. package/admin/assets/index-fhg5Z_KX.js +0 -930
  80. package/admin/assets/iobroker_javascript__mf_v__runtimeInit__mf_v__-CmuPLb0X.js +0 -5
  81. package/admin/assets/preload-helper-Dp1pzeXC.js +0 -1
  82. package/admin/assets/useTheme-CpAj0H76.js +0 -1
  83. package/admin/custom/assets/ConfigCustomJavascriptSet__mf_v__runtimeInit__mf_v__-Cib3-eWa.js +0 -5
  84. package/admin/custom/assets/DefaultPropsProvider-B41fRCEO.js +0 -1
  85. package/admin/custom/assets/DefaultPropsProvider-CfXkmG16.js +0 -7
  86. package/admin/custom/assets/_commonjsHelpers-D6-XlEtG.js +0 -1
  87. package/admin/custom/assets/createTheme-Ajie0adn.js +0 -16
  88. package/admin/custom/assets/defaultTheme-C_aSR-NR.js +0 -1
  89. package/admin/custom/assets/index-BkKMt4bp.js +0 -31
  90. package/admin/custom/assets/index-Bw5ZKbIF.js +0 -1399
  91. package/admin/custom/assets/index-Co3YA5NW.js +0 -9
  92. package/admin/custom/assets/index-DsPFm5o5.js +0 -904
  93. package/admin/custom/assets/jsx-runtime-lE4rOet2.js +0 -9
  94. package/admin/custom/assets/leaflet-src-A2ZHl6nF.js +0 -4
  95. package/admin/custom/assets/preload-helper-Dp1pzeXC.js +0 -1
  96. package/admin/custom/assets/useEnhancedEffect-DSK35Rma.js +0 -8
  97. package/admin/custom/assets/useTheme-CpiJlUE9.js +0 -1
  98. package/admin/custom/assets/virtualExposes-4pgHXHfp.js +0 -2
  99. package/build-backend/main.js.map +0 -1
  100. /package/{build-backend → build}/lib/consts.js +0 -0
  101. /package/{build-backend → build}/lib/consts.js.map +0 -0
  102. /package/{build-backend → build}/lib/convert.js +0 -0
  103. /package/{build-backend → build}/lib/convert.js.map +0 -0
  104. /package/{build-backend → build}/lib/debug.js +0 -0
  105. /package/{build-backend → build}/lib/debug.js.map +0 -0
  106. /package/{build-backend → build}/lib/debugger.js +0 -0
  107. /package/{build-backend → build}/lib/debugger.js.map +0 -0
  108. /package/{build-backend → build}/lib/eventObj.js +0 -0
  109. /package/{build-backend → build}/lib/eventObj.js.map +0 -0
  110. /package/{build-backend → build}/lib/inspect.js +0 -0
  111. /package/{build-backend → build}/lib/inspect.js.map +0 -0
  112. /package/{build-backend → build}/lib/mirror.js +0 -0
  113. /package/{build-backend → build}/lib/mirror.js.map +0 -0
  114. /package/{build-backend → build}/lib/nodeModulesManagement.js +0 -0
  115. /package/{build-backend → build}/lib/nodeModulesManagement.js.map +0 -0
  116. /package/{build-backend → build}/lib/patternCompareFunctions.js +0 -0
  117. /package/{build-backend → build}/lib/patternCompareFunctions.js.map +0 -0
  118. /package/{build-backend → build}/lib/protectFs.js +0 -0
  119. /package/{build-backend → build}/lib/protectFs.js.map +0 -0
  120. /package/{build-backend → build}/lib/request.js +0 -0
  121. /package/{build-backend → build}/lib/request.js.map +0 -0
  122. /package/{build-backend → build}/lib/sandbox.js +0 -0
  123. /package/{build-backend → build}/lib/sandbox.js.map +0 -0
  124. /package/{build-backend → build}/lib/scheduler.js +0 -0
  125. /package/{build-backend → build}/lib/scheduler.js.map +0 -0
  126. /package/{build-backend → build}/lib/tools.js +0 -0
  127. /package/{build-backend → build}/lib/tools.js.map +0 -0
  128. /package/{build-backend → build}/lib/typescriptSettings.js +0 -0
  129. /package/{build-backend → build}/lib/typescriptSettings.js.map +0 -0
  130. /package/{build-backend → build}/lib/typescriptTools.js +0 -0
  131. /package/{build-backend → build}/lib/typescriptTools.js.map +0 -0
  132. /package/{build-backend → build}/lib/utils.js +0 -0
  133. /package/{build-backend → build}/lib/words.js +0 -0
  134. /package/{build-backend → build}/lib/words.js.map +0 -0
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encryptText = encryptText;
4
+ exports.decryptText = decryptText;
5
+ /**
6
+ * Encrypt the password/value with given key
7
+ *
8
+ * @param password - Secret key
9
+ * @param plainText - value to encrypt
10
+ */
11
+ function encryptText(password, plainText) {
12
+ let result = '';
13
+ for (let i = 0; i < plainText.length; i++) {
14
+ result += String.fromCharCode(password[i % password.length].charCodeAt(0) ^ plainText.charCodeAt(i));
15
+ }
16
+ return Buffer.from(result).toString('base64');
17
+ }
18
+ /**
19
+ * Decrypt the password/value with given key
20
+ *
21
+ * @param password - Secret key
22
+ * @param base64Text - value to decrypt
23
+ */
24
+ function decryptText(password, base64Text) {
25
+ let result = '';
26
+ const plainText = Buffer.from(base64Text, 'base64').toString();
27
+ for (let i = 0; i < plainText.length; i++) {
28
+ result += String.fromCharCode(password[i % password.length].charCodeAt(0) ^ plainText.charCodeAt(i));
29
+ }
30
+ return result;
31
+ }
32
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/lib/crypto.ts"],"names":[],"mappings":";;AAMA,kCAMC;AAQD,kCAOC;AA3BD;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,QAAgB,EAAE,SAAiB;IAC3D,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACzG,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,QAAgB,EAAE,UAAkB;IAC5D,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACzG,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC","sourcesContent":["/**\n * Encrypt the password/value with given key\n *\n * @param password - Secret key\n * @param plainText - value to encrypt\n */\nexport function encryptText(password: string, plainText: string): string {\n let result = '';\n for (let i = 0; i < plainText.length; i++) {\n result += String.fromCharCode(password[i % password.length].charCodeAt(0) ^ plainText.charCodeAt(i));\n }\n return Buffer.from(result).toString('base64');\n}\n\n/**\n * Decrypt the password/value with given key\n *\n * @param password - Secret key\n * @param base64Text - value to decrypt\n */\nexport function decryptText(password: string, base64Text: string): string {\n let result = '';\n const plainText = Buffer.from(base64Text, 'base64').toString();\n for (let i = 0; i < plainText.length; i++) {\n result += String.fromCharCode(password[i % password.length].charCodeAt(0) ^ plainText.charCodeAt(i));\n }\n return result;\n}\n"]}
@@ -1826,6 +1826,9 @@ declare global {
1826
1826
  interface ScriptObject extends BaseObject {
1827
1827
  type: 'script';
1828
1828
  common: ScriptCommon;
1829
+ native: {
1830
+ encrypted?: boolean;
1831
+ };
1829
1832
  }
1830
1833
 
1831
1834
  interface PartialScriptObject extends Partial<Omit<ScriptObject, 'common'>> {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":";;;AAyDA,8BASC;AAlED,qCAAmD;AACnD,yCAA0C;AAG1C,MAAM,UAAU,GAAG;IACf,QAAQ,EAAE,CAAC;IACX,uBAAuB,EAAE,EAAE;CAC9B,CAAC;AAEF;;;GAGG;AACH,SAAS,UAAU;IACf,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,SAAmB;IACzC,kCAAkC;IAClC,MAAM,aAAa,GAAG,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,CAAC;IAC3E,IAAI,cAAkC,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,CAAC;YACD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,IAAA,oBAAU,EAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,cAAc,GAAG,YAAY,CAAC;gBAC9B,MAAM;YACV,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,eAAe;QACnB,CAAC;IACL,CAAC;IACD,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED,0BAA0B;IAC1B,OAAO,IAAA,mBAAO,EAAC,cAAc,CAAC,CAAC;AACnC,CAAC;AAEY,QAAA,OAAO,GAAG,UAAU,EAAE,CAAC;AACvB,QAAA,aAAa,GAAG,gBAAgB,CACzC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CACvF,CAAC;AAEF;;GAEG;AACH,SAAgB,SAAS;IACrB,IAAI,UAAkB,CAAC;IACvB,IAAI,IAAA,oBAAU,EAAC,CAAC,UAAU,GAAG,IAAA,gBAAI,EAAC,qBAAa,EAAE,MAAM,EAAE,GAAG,eAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,IAAA,oBAAU,EAAC,CAAC,UAAU,GAAG,IAAA,gBAAI,EAAC,qBAAa,EAAE,MAAM,EAAE,GAAG,CAAC,eAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3F,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,eAAe,qBAAa,SAAS,eAAO,OAAO,CAAC,CAAC;AACzE,CAAC;AAEY,QAAA,OAAO,GAAG,OAAO,CAAC,IAAA,gBAAI,EAAC,qBAAa,EAAE,gBAAgB,CAAC,CAAC,CAAC","sourcesContent":["import { existsSync, readFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport type { IoBJson } from '@iobroker/types/build/config';\n\nconst EXIT_CODES = {\n NO_ERROR: 0,\n CANNOT_FIND_ADAPTER_DIR: 10,\n};\n\n/**\n * Returns the application name\n * The name of the application can be different, and this function finds it out.\n */\nfunction getAppName(): string {\n const parts = __dirname.replace(/\\\\/g, '/').split('/');\n return parts[parts.length - 2].split('.')[0];\n}\n\n/**\n * looks for js-controller home folder\n */\nfunction getControllerDir(isInstall?: boolean): string {\n // Find the js-controller location\n const possibilities = ['iobroker.js-controller', 'ioBroker.js-controller'];\n let controllerPath: string | undefined;\n for (const pkg of possibilities) {\n try {\n const possiblePath = require.resolve(pkg);\n if (existsSync(possiblePath)) {\n controllerPath = possiblePath;\n break;\n }\n } catch {\n /* not found */\n }\n }\n if (!controllerPath) {\n if (!isInstall) {\n console.log('Cannot find js-controller');\n process.exit(EXIT_CODES.CANNOT_FIND_ADAPTER_DIR);\n } else {\n process.exit(EXIT_CODES.NO_ERROR);\n }\n }\n\n // we found the controller\n return dirname(controllerPath);\n}\n\nexport const appName = getAppName();\nexport const controllerDir = getControllerDir(\n typeof process !== 'undefined' && process.argv && process.argv.includes('--install'),\n);\n\n/**\n * Reads controller base settings\n */\nexport function getConfig(): IoBJson {\n let configPath: string;\n if (existsSync((configPath = join(controllerDir, 'conf', `${appName}.json`)))) {\n return JSON.parse(readFileSync(configPath, 'utf8'));\n }\n if (existsSync((configPath = join(controllerDir, 'conf', `${+appName.toLowerCase()}.json`)))) {\n return JSON.parse(readFileSync(configPath, 'utf8'));\n }\n throw new Error(`Cannot find ${controllerDir}/conf/${appName}.json`);\n}\n\nexport const Adapter = require(join(controllerDir, 'lib/adapter.js'));\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":";;;AAyDA,8BASC;AAlED,qCAAmD;AACnD,yCAA0C;AAG1C,MAAM,UAAU,GAAG;IACf,QAAQ,EAAE,CAAC;IACX,uBAAuB,EAAE,EAAE;CAC9B,CAAC;AAEF;;;GAGG;AACH,SAAS,UAAU;IACf,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,SAAmB;IACzC,kCAAkC;IAClC,MAAM,aAAa,GAAG,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,CAAC;IAC3E,IAAI,cAAkC,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,CAAC;YACD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,IAAA,oBAAU,EAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,cAAc,GAAG,YAAY,CAAC;gBAC9B,MAAM;YACV,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,eAAe;QACnB,CAAC;IACL,CAAC;IACD,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED,0BAA0B;IAC1B,OAAO,IAAA,mBAAO,EAAC,cAAc,CAAC,CAAC;AACnC,CAAC;AAEY,QAAA,OAAO,GAAG,UAAU,EAAE,CAAC;AACvB,QAAA,aAAa,GAAG,gBAAgB,CACzC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CACvF,CAAC;AAEF;;GAEG;AACH,SAAgB,SAAS;IACrB,IAAI,UAAkB,CAAC;IACvB,IAAI,IAAA,oBAAU,EAAC,CAAC,UAAU,GAAG,IAAA,gBAAI,EAAC,qBAAa,EAAE,MAAM,EAAE,GAAG,eAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,IAAA,oBAAU,EAAC,CAAC,UAAU,GAAG,IAAA,gBAAI,EAAC,qBAAa,EAAE,MAAM,EAAE,GAAG,CAAC,eAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3F,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,eAAe,qBAAa,SAAS,eAAO,OAAO,CAAC,CAAC;AACzE,CAAC;AAEY,QAAA,OAAO,GAAG,OAAO,CAAC,IAAA,gBAAI,EAAC,qBAAa,EAAE,gBAAgB,CAAC,CAAC,CAAC","sourcesContent":["import { existsSync, readFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport type { IoBJson } from '@iobroker/types/build/config';\n\nconst EXIT_CODES = {\n NO_ERROR: 0,\n CANNOT_FIND_ADAPTER_DIR: 10,\n};\n\n/**\n * Returns the application name\n * The name of the application can be different, and this function finds it out.\n */\nfunction getAppName(): string {\n const parts = __dirname.replace(/\\\\/g, '/').split('/');\n return parts[parts.length - 2].split('.')[0];\n}\n\n/**\n * looks for js-controller home folder\n */\nfunction getControllerDir(isInstall?: boolean): string {\n // Find the js-controller location\n const possibilities = ['iobroker.js-controller', 'ioBroker.js-controller'];\n let controllerPath: string | undefined;\n for (const pkg of possibilities) {\n try {\n const possiblePath = require.resolve(pkg);\n if (existsSync(possiblePath)) {\n controllerPath = possiblePath;\n break;\n }\n } catch {\n /* not found */\n }\n }\n if (!controllerPath) {\n if (!isInstall) {\n console.log('Cannot find js-controller');\n process.exit(EXIT_CODES.CANNOT_FIND_ADAPTER_DIR);\n } else {\n process.exit(EXIT_CODES.NO_ERROR);\n }\n }\n\n // we found the controller\n return dirname(controllerPath);\n}\n\nexport const appName = getAppName();\nexport const controllerDir = getControllerDir(\n typeof process !== 'undefined' && process.argv && process.argv.includes('--install'),\n);\n\n/**\n * Reads controller base settings\n */\nexport function getConfig(): IoBJson {\n let configPath: string;\n if (existsSync((configPath = join(controllerDir, 'conf', `${appName}.json`)))) {\n return JSON.parse(readFileSync(configPath, 'utf8'));\n }\n if (existsSync((configPath = join(controllerDir, 'conf', `${+appName.toLowerCase()}.json`)))) {\n return JSON.parse(readFileSync(configPath, 'utf8'));\n }\n throw new Error(`Cannot find ${controllerDir}/conf/${appName}.json`);\n}\n\nexport const Adapter = require(join(controllerDir, 'lib/adapter.js'));"]}
@@ -83,6 +83,7 @@ const scheduler_1 = require("./lib/scheduler");
83
83
  const typescriptSettings_1 = require("./lib/typescriptSettings");
84
84
  const tools_1 = require("./lib/tools");
85
85
  const typescriptTools_1 = require("./lib/typescriptTools");
86
+ const crypto_1 = require("./lib/crypto");
86
87
  /**
87
88
  * List of forbidden Locations for a mirror directory
88
89
  * relative to the default data directory
@@ -250,6 +251,7 @@ class JavaScript extends adapter_core_1.Adapter {
250
251
  _enums = [];
251
252
  names = {}; // name: id
252
253
  scripts = {};
254
+ password = '';
253
255
  messageBusHandlers = {};
254
256
  logSubscriptions = {};
255
257
  tempDirectories = {}; // name: path
@@ -1300,11 +1302,11 @@ class JavaScript extends adapter_core_1.Adapter {
1300
1302
  const parts = id.split('.');
1301
1303
  parts.pop();
1302
1304
  const chn = parts.join('.');
1303
- this.context.channels[chn] = this.context.channels[chn] || [];
1305
+ this.context.channels[chn] ||= [];
1304
1306
  this.context.channels[chn].push(id);
1305
1307
  parts.pop();
1306
1308
  const dev = parts.join('.');
1307
- this.context.devices[dev] = this.context.devices[dev] || [];
1309
+ this.context.devices[dev] ||= [];
1308
1310
  this.context.devices[dev].push(id);
1309
1311
  }
1310
1312
  }
@@ -1491,6 +1493,9 @@ class JavaScript extends adapter_core_1.Adapter {
1491
1493
  }
1492
1494
  this.addGetProperty(this.objects);
1493
1495
  const systemConfig = this.objects['system.config'];
1496
+ this.password = systemConfig?.native?.javascriptPassword
1497
+ ? this.decrypt(systemConfig?.native.javascriptPassword)
1498
+ : '';
1494
1499
  // set language for debug messages
1495
1500
  if (systemConfig?.common?.language) {
1496
1501
  (0, words_1.setLanguage)(systemConfig.common.language);
@@ -1526,14 +1531,14 @@ class JavaScript extends adapter_core_1.Adapter {
1526
1531
  else if (this.config.longitude < -180 || this.config.longitude > 180) {
1527
1532
  this.log.warn(`Configured longitude "${this.config.longitude}" is invalid - check (instance/system) configuration`);
1528
1533
  }
1529
- this.config.sunriseEvent = this.config.sunriseEvent || 'nightEnd';
1530
- this.config.sunriseOffset = this.config.sunriseOffset || 0;
1531
- this.config.sunriseLimitStart = this.config.sunriseLimitStart || '06:00';
1532
- this.config.sunriseLimitEnd = this.config.sunriseLimitEnd || '12:00';
1533
- this.config.sunsetEvent = this.config.sunsetEvent || 'dusk';
1534
- this.config.sunsetOffset = this.config.sunsetOffset || 0;
1535
- this.config.sunsetLimitStart = this.config.sunsetLimitStart || '18:00';
1536
- this.config.sunsetLimitEnd = this.config.sunsetLimitEnd || '23:00';
1534
+ this.config.sunriseEvent ||= 'nightEnd';
1535
+ this.config.sunriseOffset ||= 0;
1536
+ this.config.sunriseLimitStart ||= '06:00';
1537
+ this.config.sunriseLimitEnd ||= '12:00';
1538
+ this.config.sunsetEvent ||= 'dusk';
1539
+ this.config.sunsetOffset ||= 0;
1540
+ this.config.sunsetLimitStart ||= '18:00';
1541
+ this.config.sunsetLimitEnd ||= '23:00';
1537
1542
  this.objectsInitDone = true;
1538
1543
  this.log.info('received all objects');
1539
1544
  })
@@ -2064,6 +2069,9 @@ class JavaScript extends adapter_core_1.Adapter {
2064
2069
  (obj.common.enabled || this.context.debugMode === obj._id) &&
2065
2070
  obj.common.engine === `system.adapter.${this.namespace}`) {
2066
2071
  const name = obj._id;
2072
+ if (this.password && obj.native?.protected) {
2073
+ obj.common.source = (0, crypto_1.decryptText)(this.password, obj.common.source);
2074
+ }
2067
2075
  const nameId = name.substring(SCRIPT_CODE_MARKER.length);
2068
2076
  if (!nameId.length || nameId.endsWith('.')) {
2069
2077
  this.log.error(`${name}: Script name "${name}" is invalid!`);
@@ -2074,7 +2082,7 @@ class JavaScript extends adapter_core_1.Adapter {
2074
2082
  this.interimStateValues[idActive] = this.prepareStateObjectSimple(`${this.namespace}.${idActive}`, true, true);
2075
2083
  }
2076
2084
  await this.setState(idActive, true, true);
2077
- obj.common.engineType = obj.common.engineType || '';
2085
+ obj.common.engineType ||= '';
2078
2086
  if (obj.common.engineType.toLowerCase().startsWith('javascript') ||
2079
2087
  obj.common.engineType === 'Blockly' ||
2080
2088
  obj.common.engineType === 'Rules') {
@@ -2506,7 +2514,7 @@ class JavaScript extends adapter_core_1.Adapter {
2506
2514
  this.debugState.endTimeout = null;
2507
2515
  this.debugState.child?.kill('SIGTERM');
2508
2516
  }, 500);
2509
- this.debugState.promiseOnEnd = this.debugState.promiseOnEnd || Promise.resolve(0);
2517
+ this.debugState.promiseOnEnd ||= Promise.resolve(0);
2510
2518
  }
2511
2519
  else {
2512
2520
  this.debugState.promiseOnEnd = Promise.resolve(0);