iobroker.javascript 10.2.5 → 10.3.0

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 (114) hide show
  1. package/README.md +6 -14
  2. package/admin/assets/AiChatPanel-CpY4Bun-.js +27 -0
  3. package/admin/assets/{AiChatService-BOL3J2Jd.js → AiChatService-QKcpW4jQ.js} +1 -1
  4. package/admin/assets/AiDiffView-DscPfZ38.js +1 -0
  5. package/admin/assets/{AiInlineProvider-BIlcrTkS.js → AiInlineProvider-DTSPKoXG.js} +1 -1
  6. package/admin/assets/BlocklyEditor-BZyoN1JE.js +301 -0
  7. package/admin/assets/Compile-B0uHjrBE.css +1 -0
  8. package/admin/assets/Compile-Oss28m_f.js +165 -0
  9. package/admin/assets/{Debugger-DwHHsh9O.js → Debugger-teJTIU-2.js} +4 -4
  10. package/admin/assets/{Documentation-Bc0RmoEF.js → Documentation-uz4Ut9pT.js} +4 -4
  11. package/admin/assets/ExpandMore-V5Ix1QB1.js +1 -0
  12. package/admin/assets/FbEditor-B8S-mCvc.css +1 -0
  13. package/admin/assets/FbEditor-aOZ-RpPV.js +15 -0
  14. package/admin/assets/Import-BIC5Ee9z.js +1 -0
  15. package/admin/assets/NotificationsActive-BdzH44gp.js +1 -0
  16. package/admin/assets/RulesEditor-CcDVthPa.js +1 -0
  17. package/admin/assets/{ScriptEditor-CEHpEFp7.js → ScriptEditor-CviB6Hif.js} +2 -2
  18. package/admin/assets/ScriptEditorVanillaMonaco-ByuXwybM.js +3 -0
  19. package/admin/assets/Send-Mdo32jMb.js +1 -0
  20. package/admin/assets/{_virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-CM95r358.js → _virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-BnL93BgK.js} +1 -1
  21. package/admin/assets/{_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BEpNZh4U.js → _virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-NI-3Uv4e.js} +75 -75
  22. package/admin/assets/{_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-FeM77flT.js → _virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-DVaMIZyC.js} +1 -1
  23. package/admin/assets/aiPromptBuilder-yTB6N2VT.js +1 -0
  24. package/admin/assets/blocklyTheme-CGhU3cEO.js +1 -0
  25. package/admin/assets/blocks_action-BQ4O7NRE.js +1 -0
  26. package/admin/assets/{blocks_convert-BP2RjhQH.js → blocks_convert-0VBjfhqQ.js} +1 -1
  27. package/admin/assets/blocks_logic-DAo99xDr.js +1 -0
  28. package/admin/assets/blocks_number-C--e19NU.js +1 -0
  29. package/admin/assets/blocks_object-D0TPhdzg.js +1 -0
  30. package/admin/assets/blocks_procedures-DgTxgXdB.js +3 -0
  31. package/admin/assets/{blocks_sendto-qIKzOAcV.js → blocks_sendto-CRIrtOUc.js} +1 -1
  32. package/admin/assets/blocks_switch-b_GYfF0n.js +2 -0
  33. package/admin/assets/blocks_system-BdkUdSsc.js +1 -0
  34. package/admin/assets/blocks_text-DSFhEVOf.js +1 -0
  35. package/admin/assets/blocks_time-CqALAiJp.js +1 -0
  36. package/admin/assets/blocks_timeout-yrOD2pZp.js +1 -0
  37. package/admin/assets/{blocks_trigger-CnmXLCUE.js → blocks_trigger-DeAYXpSS.js} +1 -1
  38. package/admin/assets/{cronHoverProvider-CcIFAhVy.js → cronHoverProvider-DoO2_tpG.js} +1 -1
  39. package/admin/assets/{field_cron-Ba46q8Qc.js → field_cron-D3Ts_s9M.js} +1 -1
  40. package/admin/assets/{field_oid-lWCjOzuq.js → field_oid-BRNXredg.js} +1 -1
  41. package/admin/assets/{field_script-BCWZHhnW.js → field_script-3X6ousg7.js} +1 -1
  42. package/admin/assets/helpers-BTGaTdnT.js +1 -0
  43. package/admin/assets/{hostInit-CVybS7BB.js → hostInit-2h2Cbsaw.js} +1 -1
  44. package/admin/assets/index-BHhhebRG.css +1 -0
  45. package/admin/assets/index-CbQlIKB_.js +156 -0
  46. package/admin/assets/{inlineChatWidget-N8xIkvxX.js → inlineChatWidget-BwQVCPkx.js} +2 -2
  47. package/admin/assets/{inlineDiffController-BuqYsKKq.js → inlineDiffController-BsDDsDHn.js} +2 -2
  48. package/admin/assets/loadBlocks-RpqM7PwO.js +117 -0
  49. package/admin/assets/loadMonaco-BVOEahNw.js +1 -0
  50. package/admin/assets/{mf-entry-bootstrap-0-a5a39621.js → mf-entry-bootstrap-0-0deef484.js} +3 -3
  51. package/admin/assets/{pendingShares-DOAkyFMS.js → pendingShares-BaAadIDv.js} +1 -1
  52. package/admin/assets/reactour.esm-DX9ZgYlx.js +137 -0
  53. package/admin/assets/{stateHoverProvider-BYAbe1Ay.js → stateHoverProvider-BEadnSXp.js} +1 -1
  54. package/admin/assets/tileFbd-CWAy7R7m.svg +85 -0
  55. package/admin/mf-manifest.json +1 -1
  56. package/admin/mf-stats.json +1 -1
  57. package/admin/remoteEntry.js +2 -2
  58. package/admin/tab.html +3 -7
  59. package/build/lib/fb/analyze.js +288 -0
  60. package/build/lib/fb/analyze.js.map +1 -0
  61. package/build/lib/fb/blocks.js +605 -0
  62. package/build/lib/fb/blocks.js.map +1 -0
  63. package/build/lib/fb/generate.js +326 -0
  64. package/build/lib/fb/generate.js.map +1 -0
  65. package/build/lib/fb/graph.js +240 -0
  66. package/build/lib/fb/graph.js.map +1 -0
  67. package/build/lib/fb/index.js +57 -0
  68. package/build/lib/fb/index.js.map +1 -0
  69. package/build/lib/fb/js.js +33 -0
  70. package/build/lib/fb/js.js.map +1 -0
  71. package/build/lib/fb/layout.js +205 -0
  72. package/build/lib/fb/layout.js.map +1 -0
  73. package/build/lib/fb/library.js +657 -0
  74. package/build/lib/fb/library.js.map +1 -0
  75. package/build/lib/fb/runtime.js +793 -0
  76. package/build/lib/fb/runtime.js.map +1 -0
  77. package/build/lib/fb/time.js +76 -0
  78. package/build/lib/fb/time.js.map +1 -0
  79. package/build/lib/fb/types.js +19 -0
  80. package/build/lib/fb/types.js.map +1 -0
  81. package/build/lib/fb/user.js +78 -0
  82. package/build/lib/fb/user.js.map +1 -0
  83. package/build/lib/javascript.d.ts +1 -1
  84. package/build/lib/mirror.js +4 -0
  85. package/build/lib/mirror.js.map +1 -1
  86. package/build/lib/sandbox.js +44 -0
  87. package/build/lib/sandbox.js.map +1 -1
  88. package/build/main.js +66 -1
  89. package/build/main.js.map +1 -1
  90. package/build/types.d.ts +9 -1
  91. package/docs/de/fbd.md +274 -0
  92. package/docs/en/fbd.md +260 -0
  93. package/io-package.json +39 -15
  94. package/package.json +1 -1
  95. package/admin/assets/AiChatPanel-oBeXbUFv.js +0 -27
  96. package/admin/assets/AiDiffView-C-KKjnJD.js +0 -1
  97. package/admin/assets/Error-DZ4vCykD.js +0 -1
  98. package/admin/assets/Import-Cu02ceLW.js +0 -1
  99. package/admin/assets/RulesEditor-QCbi1lV_.js +0 -1
  100. package/admin/assets/ScriptEditorVanillaMonaco-ChQmnk0p.js +0 -3
  101. package/admin/assets/aiPromptBuilder-DKler0UK.js +0 -1
  102. package/admin/assets/blocks_action-DywZVfRY.js +0 -1
  103. package/admin/assets/blocks_logic-CdTl5YZw.js +0 -1
  104. package/admin/assets/blocks_number-DXFd9Rva.js +0 -1
  105. package/admin/assets/blocks_object-by1uBDHi.js +0 -1
  106. package/admin/assets/blocks_procedures-BcJ7N70D.js +0 -3
  107. package/admin/assets/blocks_switch-dLF6hSJl.js +0 -2
  108. package/admin/assets/blocks_system-DmX-SBy8.js +0 -1
  109. package/admin/assets/blocks_text-BI4zNU3o.js +0 -1
  110. package/admin/assets/blocks_time-BgYA4Y_4.js +0 -1
  111. package/admin/assets/blocks_timeout-DUzgMyAu.js +0 -1
  112. package/admin/assets/helpers-CnEjYAup.js +0 -1
  113. package/admin/assets/index-B3s0zmWC.js +0 -871
  114. package/admin/assets/index-CXaeqPRy.css +0 -1
package/build/main.js CHANGED
@@ -241,6 +241,8 @@ const TS_MEMORY_RELEASE_DELAY_MS = 60_000;
241
241
  * gone and the type definitions and compilers are given back.
242
242
  */
243
243
  const EDITOR_ONLINE_TIMEOUT_MS = 30_000;
244
+ /** An editor showing a function block diagram online asks every 10 s; after this, it is gone */
245
+ const FBD_WATCH_TIMEOUT_MS = 30_000;
244
246
  /** How often it is checked whether the editor has gone away */
245
247
  const EDITOR_CHECK_INTERVAL_MS = 10_000;
246
248
  // compiler instance for global JS declarations. Built on the first compilation only - see LazyTsServer
@@ -368,6 +370,8 @@ class JavaScript extends adapter_core_1.Adapter {
368
370
  typingPackageFiles = [];
369
371
  /** Until when a script editor counts as open. Refreshed by every `editorPing` */
370
372
  editorOnlineUntil = 0;
373
+ /** Counts the editors that started to show a function block diagram online - see `fbdWatch` */
374
+ fbdViewers = 0;
371
375
  /** Checks regularly whether the editor is gone and the type definitions can be unloaded */
372
376
  editorCheckInterval = null;
373
377
  /** Set once the user has been told that TypeScript is compiled without type definitions */
@@ -502,6 +506,9 @@ class JavaScript extends adapter_core_1.Adapter {
502
506
  scheduler: null,
503
507
  timerId: 0,
504
508
  rulesOpened: null, // opened rules
509
+ fbdWatch: new Map(),
510
+ fbdDebug: new Map(),
511
+ fbdDebugSettings: new Map(),
505
512
  language: this.language || 'en',
506
513
  updateLogSubscriptions: this.updateLogSubscriptions.bind(this),
507
514
  convertBackStringifiedValues: this.convertBackStringifiedValues.bind(this),
@@ -1199,6 +1206,62 @@ class JavaScript extends adapter_core_1.Adapter {
1199
1206
  console.log(`Enable messaging for ${this.context.rulesOpened}`);
1200
1207
  break;
1201
1208
  }
1209
+ case 'fbdWatch': {
1210
+ // An editor shows a function block diagram online. While it keeps asking, the runtime
1211
+ // of the script sends snapshots to `debug.fbd`; a window that just goes away is
1212
+ // forgotten after FBD_WATCH_TIMEOUT_MS. `full`: a new viewer, who needs everything once.
1213
+ // `path`: the instance of a user block whose inside the editor shows, like `b3/b7`.
1214
+ const { script, watch, full, path } = (obj.message || {});
1215
+ if (typeof script === 'string') {
1216
+ if (watch) {
1217
+ const current = this.context.fbdWatch.get(script);
1218
+ const until = Date.now() + FBD_WATCH_TIMEOUT_MS;
1219
+ // several editors may look into several instances
1220
+ const paths = current?.paths || new Map();
1221
+ if (typeof path === 'string' && path) {
1222
+ paths.set(path, until);
1223
+ }
1224
+ this.context.fbdWatch.set(script, {
1225
+ until,
1226
+ viewer: !current || full ? ++this.fbdViewers : current.viewer,
1227
+ paths,
1228
+ });
1229
+ }
1230
+ else {
1231
+ this.context.fbdWatch.delete(script);
1232
+ }
1233
+ }
1234
+ if (obj.callback) {
1235
+ this.sendTo(obj.from, obj.command, { ok: true }, obj.callback);
1236
+ }
1237
+ break;
1238
+ }
1239
+ case 'fbdDebug': {
1240
+ // The online view forces values, sets breakpoints or steps through a diagram. The
1241
+ // runtime of the script does it and answers with how it stands now.
1242
+ const { script, ...command } = (obj.message || {});
1243
+ const handler = typeof script === 'string' ? this.context.fbdDebug.get(script) : undefined;
1244
+ let result;
1245
+ if (!handler) {
1246
+ result = { error: 'The diagram does not run' };
1247
+ }
1248
+ else if (!this.context.fbdWatch.has(script)) {
1249
+ // everything the online view sets ends with it
1250
+ result = { error: 'The diagram is not shown online' };
1251
+ }
1252
+ else {
1253
+ try {
1254
+ result = { status: handler(command) };
1255
+ }
1256
+ catch (error) {
1257
+ result = { error: error.message };
1258
+ }
1259
+ }
1260
+ if (obj.callback) {
1261
+ this.sendTo(obj.from, obj.command, result, obj.callback);
1262
+ }
1263
+ break;
1264
+ }
1202
1265
  case 'rulesOff': {
1203
1266
  // maybe if (context.rulesOpened === obj.message)
1204
1267
  console.log(`Disable messaging for ${this.context.rulesOpened}`);
@@ -3057,7 +3120,9 @@ class JavaScript extends adapter_core_1.Adapter {
3057
3120
  obj.common.engineType ||= '';
3058
3121
  if (obj.common.engineType.toLowerCase().startsWith('javascript') ||
3059
3122
  obj.common.engineType === 'Blockly' ||
3060
- obj.common.engineType === 'Rules') {
3123
+ obj.common.engineType === 'Rules' ||
3124
+ // function block diagram: generated JavaScript, like Blockly and Rules (not known to @iobroker/types yet)
3125
+ obj.common.engineType === 'FBD') {
3061
3126
  // Javascript
3062
3127
  this.log.info(`${name}: start JavaScript (${obj.common.engineType})`);
3063
3128
  let sourceFn = name;