iobroker.javascript 10.1.2 → 10.1.3
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/README.md +14 -3
- package/admin/assets/{AiChatPanel-D3eFcu56.js → AiChatPanel-rQsCR89v.js} +2 -2
- package/admin/assets/{AiDiffView-DtbcD6Yx.js → AiDiffView-BoglEOaq.js} +1 -1
- package/admin/assets/{Debugger-DsoSdux9.js → Debugger-Bj4PsKNm.js} +1 -1
- package/admin/assets/{Error-1oeF0cix.js → Error-RANTMuGx.js} +1 -1
- package/admin/assets/{Import-BH2X_ziv.js → Import-CJgQwwNY.js} +1 -1
- package/admin/assets/{RulesEditor-CJ9TvZtR.js → RulesEditor-PYpUIg7N.js} +1 -1
- package/admin/assets/{ScriptEditor-DNcGhbcU.js → ScriptEditor-C6ekGK_v.js} +1 -1
- package/admin/assets/{ScriptEditorVanillaMonaco-BBoOLFln.js → ScriptEditorVanillaMonaco-BzazJaUa.js} +2 -2
- package/admin/assets/{_virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-BK6m6sZx.js → _virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-CL_S1FIh.js} +1 -1
- package/admin/assets/{_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DezK0U6r.js → _virtual_mf___mfe_internal__iobroker_javascript__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BAOcdAz5.js} +92 -92
- package/admin/assets/{_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__1__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-_q6w9ugW.js → _virtual_mf___mfe_internal__iobroker_javascript__mf_owner__1__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-DdX5BXjB.js} +1 -1
- package/admin/assets/aiPromptBuilder-a2bvj40X.js +1 -0
- package/admin/assets/blocks_action-CaHoI2vK.js +1 -0
- package/admin/assets/{blocks_convert-DS1wCMO_.js → blocks_convert-Dno4Uyat.js} +1 -1
- package/admin/assets/{blocks_logic-DQaroQTu.js → blocks_logic-C4MPyL6T.js} +1 -1
- package/admin/assets/{blocks_number-C998FOz6.js → blocks_number-BMu9V-ca.js} +1 -1
- package/admin/assets/{blocks_object-BGYvC_4Y.js → blocks_object-vU59tx8A.js} +1 -1
- package/admin/assets/{blocks_procedures-BZFhrnZ3.js → blocks_procedures-CfhGGNAK.js} +1 -1
- package/admin/assets/{blocks_sendto-BoOZkX-e.js → blocks_sendto-oZjHfEt6.js} +1 -1
- package/admin/assets/{blocks_switch-CfjY75wV.js → blocks_switch-DtRe2uV0.js} +1 -1
- package/admin/assets/{blocks_system-C69gZMAz.js → blocks_system-CWkKMHLd.js} +1 -1
- package/admin/assets/{blocks_text-Dp6RaJ_p.js → blocks_text-CunCNUrR.js} +1 -1
- package/admin/assets/{blocks_time-CmECitUh.js → blocks_time-B_Duc9-g.js} +1 -1
- package/admin/assets/{blocks_timeout-BI8OyiNa.js → blocks_timeout-B5PA_0Xv.js} +1 -1
- package/admin/assets/{blocks_trigger-X7O3INGz.js → blocks_trigger-BePNP-VV.js} +1 -1
- package/admin/assets/blocks_words-bpwd7Ia0.js +1 -0
- package/admin/assets/{cronHoverProvider-BhX-SvkB.js → cronHoverProvider-COaB74MF.js} +1 -1
- package/admin/assets/dist-BF-PlO2i.js +4 -0
- package/admin/assets/{field_cron-BJLkgNzf.js → field_cron-BkiRQvy7.js} +1 -1
- package/admin/assets/{field_oid-CJZIeruf.js → field_oid-pEOMkwS7.js} +1 -1
- package/admin/assets/{field_script-4IGidWJ7.js → field_script-D8TaeXTc.js} +1 -1
- package/admin/assets/{helpers-DaSC8t53.js → helpers-Cbd0K4kn.js} +1 -1
- package/admin/assets/{hostInit-B3IjMQKW.js → hostInit-PWanFl0v.js} +1 -1
- package/admin/assets/{index-DKhQ45Yn.js → index-4M2aGX3M.js} +90 -90
- package/admin/assets/{inlineChatWidget-CBVgT6FZ.js → inlineChatWidget-CmSJN0Rv.js} +1 -1
- package/admin/assets/{inlineDiffController-DianrKl1.js → inlineDiffController-CauFSimb.js} +1 -1
- package/admin/assets/{mf-entry-bootstrap-0-a65094d3.js → mf-entry-bootstrap-0-66751765.js} +2 -2
- package/admin/assets/{stateHoverProvider-CIFNrLee.js → stateHoverProvider-g3dqXZ8K.js} +1 -1
- package/admin/assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__iobroker_javascript__remoteEntry_js-Dc9L2TVn.js +1 -0
- package/admin/custom/assets/{Components-BCQTjBgm.js → Components-uxORfFYU.js} +1 -1
- package/admin/custom/assets/{_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1-BuAc8OyX.js → _virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1-Bd9Y-jyc.js} +1 -1
- package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-aRlxyEhq.js → _virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DMefPDeL.js} +92 -92
- package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-DQwzYx75.js → _virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-D81YCXgE.js} +65 -65
- package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-xxszBNje.js → _virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-CxkJmLDG.js} +1 -1
- package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__prebuild__date_mf_2_fns__prebuild__-Tq7tesSS.js → _virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__prebuild__date_mf_2_fns__prebuild__-BNLW3sTg.js} +1 -1
- package/admin/custom/assets/{hostInit-CHwrowP4.js → hostInit-CxnK2NMF.js} +1 -1
- package/admin/custom/assets/{index-Cm6xl9K4.js → index-CHg-uG3r.js} +1 -1
- package/admin/custom/assets/{lib-bhrFL6jR.js → lib-D4Fc4r7w.js} +1 -1
- package/admin/custom/assets/{mf-entry-bootstrap-0-f08941e2.js → mf-entry-bootstrap-0-16561517.js} +2 -2
- package/admin/custom/assets/{setYear-DzTZ2h9A.js → setYear-Dhce8K9j.js} +1 -1
- package/admin/custom/assets/virtualExposes-DUFP2Erj.js +1 -0
- package/admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__ConfigCustomJavascriptSet__customComponents_js-jnBHXUID.js +1 -0
- package/admin/custom/assets/{virtual_mf-exposes___mfe_internal__ConfigCustomJavascriptSet__customComponents_js-C3ImybiM.js → virtual_mf-exposes___mfe_internal__ConfigCustomJavascriptSet__customComponents_js-PH1CCUgS.js} +2 -2
- package/admin/custom/customComponents.js +2 -2
- package/admin/mf-manifest.json +1 -1
- package/admin/mf-stats.json +1 -1
- package/admin/remoteEntry.js +2 -2
- package/admin/tab.html +4 -4
- package/build/lib/mirror.js +21 -4
- package/build/lib/mirror.js.map +1 -1
- package/build/lib/sandbox.js +59 -31
- package/build/lib/sandbox.js.map +1 -1
- package/build/lib/tools.js +13 -0
- package/build/lib/tools.js.map +1 -1
- package/build/main.js +3 -0
- package/build/main.js.map +1 -1
- package/docs/en/javascript.md +11 -0
- package/io-package.json +14 -14
- package/package.json +4 -4
- package/admin/assets/aiPromptBuilder-DSYziAVr.js +0 -1
- package/admin/assets/blocks_action-Bpe-Zvqj.js +0 -1
- package/admin/assets/blocks_words-BhHIf_1o.js +0 -1
- package/admin/assets/dist-CaOsN0XW.js +0 -4
- package/admin/assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__iobroker_javascript__remoteEntry_js-BO-WKj5V.js +0 -1
- package/admin/custom/assets/virtualExposes-B5LJmnfO.js +0 -1
- package/admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__ConfigCustomJavascriptSet__customComponents_js-ML-chjs6.js +0 -1
package/docs/en/javascript.md
CHANGED
|
@@ -632,6 +632,17 @@ let sch = schedule('*/2 * * * *', () => { /* ... */ });
|
|
|
632
632
|
clearSchedule(sch);
|
|
633
633
|
```
|
|
634
634
|
|
|
635
|
+
`clearSchedule` accepts everything `schedule` returns (a CRON job object or the ID of a schedule of the time wizard)
|
|
636
|
+
and also the entries of [getSchedules](#getschedules):
|
|
637
|
+
|
|
638
|
+
```js
|
|
639
|
+
// Clear all schedules of this script
|
|
640
|
+
getSchedules().forEach(sch => clearSchedule(sch));
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
It returns `true` if the schedule was found and cleared, otherwise `false`.
|
|
644
|
+
Schedules created with the astro option cannot be cleared this way.
|
|
645
|
+
|
|
635
646
|
### getAttr
|
|
636
647
|
```js
|
|
637
648
|
getAttr({ attr1: { attr2: 5 } }, 'attr1.attr2');
|
package/io-package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "javascript",
|
|
4
|
-
"version": "10.1.
|
|
4
|
+
"version": "10.1.3",
|
|
5
5
|
"blockedVersions": [
|
|
6
6
|
"8.0.0",
|
|
7
7
|
"8.0.1"
|
|
@@ -40,6 +40,19 @@
|
|
|
40
40
|
"Matthias Kleine <info@haus-automatisierung.com>"
|
|
41
41
|
],
|
|
42
42
|
"news": {
|
|
43
|
+
"10.1.3": {
|
|
44
|
+
"en": "The plain text export named its files after the script ID instead of the script name, so every dot of a name came out as an underscore - `HK-Balkontuer_v0.1` was exported as `HK-Balkontuer_v0_1.js`, and importing it back renamed the script to that. The files are now named after the script (#2364)\nImporting a plain text export treated a dot inside a file name as a folder level, so `PW-TV-Control_v0.6.js` created a folder `PW-TV-Control_v0` containing a script named `6`. Only the directories of the ZIP are folders now (#2364)\nThe folder icons in the script tree were drawn at less than half the size of the script icons next to them: they spaced themselves with a padding, and since `CssBaseline` sets `box-sizing: border-box` that padding was subtracted from their 20px instead of being added to them. They use a margin now, like the script icons always did (#2360)\nThe log below the editor could not be resized while a script was open: the editor area guessed its height from the height the tabs and the toolbar were expected to have, hung over the bottom edge of its pane and covered the 8px splitter with the horizontal scrollbar of the editor, which swallowed the mouse click. The three parts now share the height as a flex column (#2351)\nThe script list cut off long names, although there was still free space next to them: the space for the buttons at the end of a row was a fixed 185px, which is more than the three buttons occupy, and it did not account for the icon column\nFixed the Blockly comment block: the text was written in white on the yellow block and could not be read, the editor opened somewhere else on the page instead of over the block, and on a smartphone or tablet it did not open at all and left the whole workspace unusable until the page was reloaded (#2348)\nFixed the script mirror for folder names containing regular expression characters: a folder called e.g. `Lampen (Flur` aborted the synchronization with a `SyntaxError`, a folder called e.g. `[ab]` silently synchronized the scripts of another folder (#2239)\nThe Blockly block \"http (POST)\" got a \"content type\" selector, so an API that insists on `Content-Type: application/json` no longer needs an `exec` block. \"automatic\" is the default and behaves exactly as before, \"own\" allows any other type (#1983)\n`getSchedules()` returned the schedules of the time wizard of **all** scripts, even without the argument `true`. Now only the schedules of the own script are returned (#2164)\n`clearSchedule()` did not accept the objects that `getSchedules()` returns for schedules of the time wizard, so such a schedule stayed in the script and in the schedule counter (#2164)\n`clearSchedule()` can now clear the CRON jobs of other scripts too, as documented for `getSchedules(true)` (#2164)\n`getSchedules()` no longer lists the already canceled schedules of the own script in an `onStop` callback (#2164)",
|
|
45
|
+
"de": "Beim Export im Klartext wurden die Dateien nach der Skript-ID anstatt nach dem Skriptnamen benannt. Dadurch wurde jeder Punkt im Namen als Unterstrich dargestellt – beispielsweise wurde `HK-Balkontuer_v0.1` als `HK-Balkontuer_v0_1.js` exportiert, und beim erneuten Import wurde das Skript entsprechend umbenannt. Die Dateien sind nun nach dem Skript benannt (#2364).\nBeim Importieren eines Klartextexports wurde ein Punkt im Dateinamen als Ordnerebene interpretiert, sodass `PW-TV-Control_v0.6.js` einen Ordner `PW-TV-Control_v0` mit einem Skript namens `6` erstellte. Nur die Verzeichnisse der ZIP-Datei sind jetzt Ordner (#2364).\nDie Ordnersymbole im Skriptbaum wurden mit weniger als der halben Größe der daneben liegenden Skriptsymbole dargestellt: Sie hatten einen Innenabstand (Padding), und da `CssBaseline` `box-sizing: border-box` festlegt, wurde dieser Innenabstand von ihren 20 Pixeln abgezogen, anstatt addiert zu werden. Sie verwenden nun einen Außenabstand (Margin), wie es bei den Skriptsymbolen immer der Fall war (#2360).\nDer Bereich unterhalb des Editors konnte nicht in der Größe angepasst werden, solange ein Skript geöffnet war: Der Editorbereich berechnete seine Höhe anhand der erwarteten Höhe der Tabs und der Symbolleiste, ragte über den unteren Rand des Fensters hinaus und verdeckte den 8-Pixel-Trennstreifen mit der horizontalen Scrollleiste des Editors, wodurch der Mausklick blockiert wurde. Die drei Bereiche teilen sich nun die Höhe als Flexbox-Spalte (#2351).\nDie Skriptliste schnitt lange Namen ab, obwohl daneben noch Platz war: Der Platz für die Schaltflächen am Ende einer Zeile betrug feste 185 Pixel, was mehr ist, als die drei Schaltflächen einnehmen, und die Spalte für die Symbole nicht berücksichtigte.\nDer Blockly-Kommentarblock wurde korrigiert: Der Text wurde in Weiß auf dem gelben Block geschrieben und war unlesbar, der Editor öffnete sich an einer anderen Stelle auf der Seite anstatt über dem Block, und auf einem Smartphone oder Tablet öffnete er sich überhaupt nicht und der gesamte Arbeitsbereich war unbrauchbar, bis die Seite neu geladen wurde (#2348).\nDas Problem mit der Skriptspiegelung für Ordnernamen, die reguläre Ausdrücke enthalten, wurde behoben: Ein Ordner namens z. B. `Lampen (Flur` brach die Synchronisierung mit einem `SyntaxError` ab, ein Ordner namens z. B. `[ab]` synchronisierte stillschweigend die Skripte eines anderen Ordners (#2239).\nDer Blockly-Block „http (POST)“ hat einen „Content-Type“-Selektor erhalten, sodass eine API, die auf `Content-Type: application/json` besteht, keinen `exec`-Block mehr benötigt. „automatic“ ist die Standardeinstellung und verhält sich wie zuvor, „own“ erlaubt jeden anderen Typ (#1983).\n`getSchedules()` gab die Zeitpläne des Zeitassistenten **aller** Skripte zurück, selbst ohne das Argument `true`. Jetzt werden nur noch die Zeitpläne des eigenen Skripts zurückgegeben (#2164).\n`clearSchedule()` akzeptierte die Objekte nicht, die `getSchedules()` für Zeitpläne des Zeitassistenten zurückgibt, sodass ein solcher Zeitplan im Skript und im Zeitplanzähler verblieb (#2164).\n`clearSchedule()` kann nun auch die CRON-Jobs anderer Skripte löschen, wie für `getSchedules(true)` dokumentiert (#2164).\n`getSchedules()` listet die bereits abgebrochenen Zeitpläne des eigenen Skripts nicht mehr in einem `onStop`-Callback auf (#2164).",
|
|
46
|
+
"ru": "При экспорте в текстовом формате файлы назывались по идентификатору скрипта, а не по его имени, поэтому каждая точка в имени отображалась как нижнее подчеркивание — `HK-Balkontuer_v0.1` экспортировался как `HK-Balkontuer_v0_1.js`, а при обратном импорте скрипт переименовывался в это имя. Теперь файлы называются по имени скрипта (#2364)\nПри импорте файла в виде простого текста точка внутри имени файла рассматривалась как уровень папки, поэтому файл `PW-TV-Control_v0.6.js` создал папку `PW-TV-Control_v0`, содержащую скрипт с именем `6`. Теперь только каталоги ZIP-архива являются папками (#2364)\nЗначки папок в дереве скриптов отображались в размере менее половины размера значков скриптов рядом с ними: они отступали, и поскольку `CssBaseline` устанавливает `box-sizing: border-box`, этот отступ вычитался из их 20 пикселей, а не добавлялся к ним. Теперь они используют поля, как и всегда использовали значки скриптов (#2360)\nРазмер области под редактором нельзя было изменить, пока открыт скрипт: область редактора определяла свою высоту исходя из ожидаемой высоты вкладок и панели инструментов, выступала за нижний край своей панели и закрывала 8-пиксельный разделитель горизонтальной полосой прокрутки редактора, которая «проглатывала» щелчок мыши. Теперь все три части имеют одинаковую высоту в виде гибкой колонки (#2351)\nВ списке скриптов длинные имена были обрезаны, хотя рядом с ними оставалось свободное место: пространство для кнопок в конце строки составляло фиксированные 185 пикселей, что больше, чем занимают три кнопки, и это не учитывало столбец с иконками.\nИсправлена ошибка в блоке комментариев Blockly: текст писался белым цветом на желтом фоне и не читался, редактор открывался в другом месте страницы, а не поверх блока, и на смартфоне или планшете он вообще не открывался, оставляя все рабочее пространство недоступным до перезагрузки страницы (#2348)\nИсправлена ошибка зеркалирования скриптов для папок с именами, содержащими символы регулярных выражений: папка с именем, например, `Lampen (Flur`), прерывала синхронизацию с ошибкой `SyntaxError`, а папка с именем, например, `[ab]` молча синхронизировала скрипты другой папки (#2239)\nБлок Blockly \"http (POST)\" получил селектор \"тип содержимого\", поэтому API, который настаивает на `Content-Type: application/json`, больше не нуждается в блоке `exec`. \"automatic\" является значением по умолчанию и ведет себя точно так же, как и раньше, \"own\" допускает любой другой тип (#1983)\nФункция `getSchedules()` возвращала расписания мастера времени **всех** скриптов, даже без аргумента `true`. Теперь возвращаются только расписания собственного скрипта (#2164)\nФункция `clearSchedule()` не принимала объекты, возвращаемые функцией `getSchedules()` для расписаний мастера времени, поэтому такое расписание оставалось в скрипте и в счетчике расписаний (#2164)\nТеперь функция `clearSchedule()` может очищать задания CRON и других скриптов, как это описано в документации для функции `getSchedules(true)` (#2164).\nФункция `getSchedules()` больше не отображает уже отмененные расписания собственного скрипта в функции обратного вызова `onStop` (#2164)",
|
|
47
|
+
"pt": "A exportação em texto simples nomeava os arquivos de acordo com o ID do script em vez do nome do script, então cada ponto de um nome era interpretado como um sublinhado - `HK-Balkontuer_v0.1` foi exportado como `HK-Balkontuer_v0_1.js`, e ao importá-lo de volta, o script foi renomeado para esse nome. Os arquivos agora estão nomeados de acordo com o script (#2364)\nA importação de uma exportação de texto simples tratava um ponto dentro de um nome de arquivo como um nível de pasta, então `PW-TV-Control_v0.6.js` criou uma pasta `PW-TV-Control_v0` contendo um script chamado `6`. Somente os diretórios do ZIP são pastas agora (#2364)\nOs ícones de pasta na árvore de scripts eram desenhados com menos da metade do tamanho dos ícones de script ao lado: eles se espaçavam com um preenchimento, e como `CssBaseline` define `box-sizing: border-box`, esse preenchimento era subtraído de seus 20px em vez de ser adicionado. Agora eles usam uma margem, como os ícones de script sempre usaram (#2360)\nO log abaixo do editor não podia ser redimensionado enquanto um script estivesse aberto: a área do editor estimava sua altura com base na altura esperada das abas e da barra de ferramentas, ultrapassava a borda inferior do painel e cobria o divisor de 8px com a barra de rolagem horizontal do editor, que anulava o clique do mouse. As três partes agora compartilham a mesma altura como uma coluna flexível (#2351)\nA lista de scripts cortou nomes longos, embora ainda houvesse espaço livre ao lado deles: o espaço para os botões no final de uma linha era fixo em 185px, o que é mais do que os três botões ocupam, e não levava em conta a coluna de ícones.\nCorrigido o bloco de comentários do Blockly: o texto era escrito em branco no bloco amarelo e não podia ser lido, o editor abria em outro lugar da página em vez de sobre o bloco e em um smartphone ou tablet ele não abria de jeito nenhum e deixava todo o espaço de trabalho inutilizável até que a página fosse recarregada (#2348)\nCorrigido o espelhamento de scripts para nomes de pastas contendo caracteres de expressão regular: uma pasta chamada, por exemplo, `Lampen (Flur)` abortava a sincronização com um `SyntaxError`, uma pasta chamada, por exemplo, `[ab]` sincronizava silenciosamente os scripts de outra pasta (#2239)\nO bloco Blockly \"http (POST)\" recebeu um seletor de \"tipo de conteúdo\", então uma API que exige `Content-Type: application/json` não precisa mais de um bloco `exec`. \"automatic\" é o padrão e se comporta exatamente como antes, \"own\" permite qualquer outro tipo (#1983)\n`getSchedules()` retornava os agendamentos do assistente de tempo de **todos** os scripts, mesmo sem o argumento `true`. Agora, apenas os agendamentos do próprio script são retornados (#2164)\n`clearSchedule()` não aceitou os objetos que `getSchedules()` retorna para agendamentos do assistente de tempo, então tal agendamento permaneceu no script e no contador de agendamentos (#2164)\n`clearSchedule()` agora também pode limpar os trabalhos CRON de outros scripts, conforme documentado para `getSchedules(true)` (#2164)\n`getSchedules()` não lista mais os agendamentos já cancelados do próprio script em um retorno de chamada `onStop` (#2164)",
|
|
48
|
+
"nl": "Bij de export in platte tekst werden de bestanden vernoemd naar de script-ID in plaats van de scriptnaam, waardoor elke punt in een naam als een underscore werd weergegeven - `HK-Balkontuer_v0.1` werd geëxporteerd als `HK-Balkontuer_v0_1.js`, en bij het terug importeren werd het script hernoemd naar die naam. De bestanden zijn nu vernoemd naar het script (#2364).\nBij het importeren van een platte tekstexport werd een punt in een bestandsnaam als mapniveau behandeld, dus `PW-TV-Control_v0.6.js` creëerde een map `PW-TV-Control_v0` met daarin een script met de naam `6`. Alleen de mappen in het ZIP-bestand zijn nu nog mappen (#2364)\nDe mappictogrammen in de scriptstructuur werden getekend op minder dan de helft van de grootte van de scriptpictogrammen ernaast: ze hadden een opvulling (padding) en omdat `CssBaseline` `box-sizing: border-box` instelt, werd die opvulling van hun 20px afgetrokken in plaats van erbij opgeteld. Ze gebruiken nu een marge, zoals de scriptpictogrammen altijd al deden (#2360).\nHet logbestand onder de editor kon niet worden aangepast qua grootte terwijl een script open was: het editorgebied schatte zijn hoogte op basis van de hoogte die de tabbladen en de werkbalk zouden moeten hebben, stak over de onderrand van het paneel heen en bedekte de 8px-splitter met de horizontale schuifbalk van de editor, die de muisklik blokkeerde. De drie onderdelen delen nu de hoogte als een flexibele kolom (#2351).\nDe scriptlijst kortte lange namen af, hoewel er nog vrije ruimte naast was: de ruimte voor de knoppen aan het einde van een rij was een vaste 185px, wat meer is dan de drie knoppen innemen, en er werd geen rekening gehouden met de pictogramkolom.\nHet probleem met het Blockly-commentaarblok is opgelost: de tekst werd in het wit op het gele blok geschreven en was onleesbaar, de editor opende ergens anders op de pagina in plaats van over het blok heen, en op een smartphone of tablet opende hij helemaal niet, waardoor de hele werkruimte onbruikbaar werd totdat de pagina opnieuw werd geladen (#2348)\nHet probleem met de scriptspiegeling voor mapnamen die reguliere expressietekens bevatten, is opgelost: een map met de naam bijvoorbeeld `Lampen (Flur)` brak de synchronisatie af met een `SyntaxError`, terwijl een map met de naam bijvoorbeeld `[ab]` de scripts van een andere map stilzwijgend synchroniseerde (#2239).\nHet Blockly-blok \"http (POST)\" heeft een \"content type\"-selector gekregen, waardoor een API die aandringt op `Content-Type: application/json` geen `exec`-blok meer nodig heeft. \"automatic\" is de standaardinstelling en gedraagt zich precies zoals voorheen, \"own\" staat elk ander type toe (#1983).\n`getSchedules()` gaf de schema's van de tijdwizard van **alle** scripts terug, zelfs zonder het argument `true`. Nu worden alleen de schema's van het eigen script teruggestuurd (#2164)\n`clearSchedule()` accepteerde de objecten die `getSchedules()` retourneert voor de schema's van de tijdwizard niet, dus bleef een dergelijk schema in het script en in de schemateller staan (#2164).\n`clearSchedule()` kan nu ook de CRON-taken van andere scripts wissen, zoals gedocumenteerd voor `getSchedules(true)` (#2164).\n`getSchedules()` geeft niet langer de reeds geannuleerde schema's van het eigen script weer in een `onStop`-callback (#2164)",
|
|
49
|
+
"fr": "L'exportation en texte brut nommait les fichiers d'après l'identifiant du script au lieu de son nom. Par conséquent, chaque point d'un nom était remplacé par un tiret bas : `HK-Balkontuer_v0.1` était exporté en `HK-Balkontuer_v0_1.js`, et l'importation du script l'a renommé en conséquence. Les fichiers portent désormais le nom du script (#2364).\nL'importation d'un fichier texte brut interprétait un point dans un nom de fichier comme un niveau de dossier ; ainsi, `PW-TV-Control_v0.6.js` créait un dossier `PW-TV-Control_v0` contenant un script nommé `6`. Seuls les répertoires de l'archive ZIP sont désormais considérés comme des dossiers (#2364).\nLes icônes de dossiers dans l'arborescence des scripts étaient dessinées à une taille inférieure à la moitié de celle des icônes de scripts adjacentes : elles étaient espacées par un remplissage, et comme `CssBaseline` définit `box-sizing: border-box`, ce remplissage était soustrait de leurs 20 px au lieu d'y être ajouté. Elles utilisent désormais une marge, comme le faisaient auparavant les icônes de scripts (#2360).\nImpossible de redimensionner le journal situé sous l'éditeur lorsqu'un script était ouvert : la zone de l'éditeur, dont la hauteur était estimée à partir de celle des onglets et de la barre d'outils, dépassait le bord inférieur de son panneau et masquait le séparateur de 8 px avec la barre de défilement horizontale, qui empêchait le clic de la souris d'être pris en compte. Les trois éléments partagent désormais la même hauteur sous forme de colonne flexible (#2351).\nLa liste des scripts tronquait les noms longs, bien qu'il restât de l'espace libre à côté : l'espace réservé aux boutons en fin de ligne était de 185 px, ce qui est supérieur à la surface occupée par les trois boutons, et ne tenait pas compte de la colonne d'icônes.\nCorrection du bloc de commentaires Blockly : le texte était écrit en blanc sur le bloc jaune et était illisible, l’éditeur s’ouvrait ailleurs sur la page au lieu de se superposer au bloc, et sur un smartphone ou une tablette, il ne s’ouvrait pas du tout et rendait l’espace de travail inutilisable jusqu’au rechargement de la page (#2348)\nCorrection du problème de synchronisation des scripts pour les noms de dossiers contenant des caractères d'expression régulière : un dossier appelé par exemple `Lampen (Flur)` interrompait la synchronisation avec une `SyntaxError`, un dossier appelé par exemple `[ab]` synchronisait silencieusement les scripts d'un autre dossier (#2239)\nLe bloc Blockly « http (POST) » dispose désormais d'un sélecteur de type de contenu. Ainsi, une API exigeant `Content-Type: application/json` n'a plus besoin d'un bloc `exec`. La valeur par défaut est « automatic » et son comportement reste inchangé ; « own » autorise tout autre type (#1983).\nLa fonction `getSchedules()` renvoyait les planifications de l'assistant de planification de l'heure de **tous** les scripts, même sans l'argument `true`. Désormais, seules les planifications du script lui-même sont renvoyées (#2164).\n`clearSchedule()` n'acceptait pas les objets que `getSchedules()` renvoie pour les planifications de l'assistant de planification, donc une telle planification est restée dans le script et dans le compteur de planification (#2164)\n`clearSchedule()` peut désormais également effacer les tâches CRON d'autres scripts, comme indiqué dans la documentation de `getSchedules(true)` (#2164).\n`getSchedules()` ne liste plus les planifications déjà annulées du propre script dans un rappel `onStop` (#2164)",
|
|
50
|
+
"it": "L'esportazione in testo semplice denominava i file in base all'ID dello script anziché al nome dello script stesso, quindi ogni punto del nome veniva visualizzato come un trattino basso: `HK-Balkontuer_v0.1` veniva esportato come `HK-Balkontuer_v0_1.js` e, importandolo nuovamente, lo script veniva rinominato in quel modo. Ora i file sono denominati in base allo script (#2364).\nL'importazione di un'esportazione in testo semplice trattava il punto all'interno del nome del file come livello di cartella, quindi `PW-TV-Control_v0.6.js` creava una cartella `PW-TV-Control_v0` contenente uno script chiamato `6`. Ora solo le directory dello ZIP sono cartelle (#2364)\nLe icone delle cartelle nell'albero degli script venivano disegnate con dimensioni inferiori alla metà rispetto alle icone degli script adiacenti: si distanziavano con un padding e, poiché `CssBaseline` imposta `box-sizing: border-box`, tale padding veniva sottratto dai loro 20px anziché essere aggiunto. Ora utilizzano un margine, come hanno sempre fatto le icone degli script (#2360).\nIl registro sotto l'editor non poteva essere ridimensionato mentre uno script era aperto: l'area dell'editor deduceva la sua altezza dall'altezza prevista per le schede e la barra degli strumenti, sporgeva dal bordo inferiore del suo riquadro e copriva il divisore da 8px con la barra di scorrimento orizzontale dell'editor, che inghiottiva il clic del mouse. Ora le tre parti condividono l'altezza come una colonna flex (#2351)\nL'elenco degli script troncava i nomi lunghi, sebbene ci fosse ancora spazio libero accanto a essi: lo spazio per i pulsanti alla fine di una riga era fisso a 185px, che è più di quanto occupato dai tre pulsanti, e non teneva conto della colonna delle icone.\nRisolto il problema del blocco commenti di Blockly: il testo veniva scritto in bianco sul blocco giallo e non era leggibile, l'editor si apriva in un altro punto della pagina invece che sopra il blocco e su smartphone o tablet non si apriva affatto, lasciando l'intera area di lavoro inutilizzabile fino al ricaricamento della pagina (#2348)\nCorretto il mirroring degli script per i nomi delle cartelle contenenti caratteri di espressione regolare: una cartella chiamata ad esempio `Lampen (Flur` interrompeva la sincronizzazione con un `SyntaxError`, una cartella chiamata ad esempio `[ab]` sincronizzava silenziosamente gli script di un'altra cartella (#2239)\nIl blocco Blockly \"http (POST)\" ha ora un selettore \"content type\", quindi un'API che richiede `Content-Type: application/json` non necessita più di un blocco `exec`. \"automatic\" è l'impostazione predefinita e si comporta esattamente come prima, \"own\" consente qualsiasi altro tipo (#1983).\n`getSchedules()` restituiva gli orari della procedura guidata oraria di **tutti** gli script, anche senza l'argomento `true`. Ora vengono restituiti solo gli orari del proprio script (#2164)\n`clearSchedule()` non accetta gli oggetti che `getSchedules()` restituisce per le pianificazioni della procedura guidata oraria, quindi tale pianificazione rimane nello script e nel contatore delle pianificazioni (#2164)\n`clearSchedule()` ora può cancellare anche i processi CRON di altri script, come documentato per `getSchedules(true)` (#2164)\n`getSchedules()` non elenca più le pianificazioni già annullate del proprio script in una callback `onStop` (#2164)",
|
|
51
|
+
"es": "La exportación en texto plano nombró los archivos según el ID del script en lugar del nombre del script, por lo que cada punto del nombre se convirtió en un guion bajo: `HK-Balkontuer_v0.1` se exportó como `HK-Balkontuer_v0_1.js`, y al importarlo de nuevo, el script se renombró así. Ahora los archivos se nombran según el script (#2364).\nAl importar una exportación de texto plano, el punto dentro del nombre del archivo se interpretaba como un nivel de carpeta, por lo que `PW-TV-Control_v0.6.js` creaba una carpeta llamada `PW-TV-Control_v0` que contenía un script llamado `6`. Ahora solo los directorios del archivo ZIP son carpetas (#2364).\nLos iconos de carpeta en el árbol de scripts se dibujaban con un tamaño inferior a la mitad del de los iconos de script adyacentes: se espaciaban con un relleno, y dado que `CssBaseline` establece `box-sizing: border-box`, ese relleno se restaba de sus 20 px en lugar de sumarse. Ahora usan un margen, como siempre lo hicieron los iconos de script (#2360).\nEl registro debajo del editor no se podía redimensionar mientras había un script abierto: el área del editor calculaba su altura a partir de la altura esperada de las pestañas y la barra de herramientas, sobresalía del borde inferior de su panel y cubría el divisor de 8 px con la barra de desplazamiento horizontal del editor, que absorbía el clic del ratón. Ahora las tres partes comparten la altura como una columna flexible (#2351).\nLa lista de scripts truncaba los nombres largos, aunque aún quedaba espacio libre junto a ellos: el espacio para los botones al final de una fila era fijo, de 185 px, más de lo que ocupan los tres botones, y no tenía en cuenta la columna de iconos.\nSe corrigió el bloque de comentarios de Blockly: el texto se escribía en blanco sobre el bloque amarillo y no se podía leer, el editor se abría en otra parte de la página en lugar de sobre el bloque, y en un teléfono inteligente o tableta no se abría en absoluto y dejaba todo el espacio de trabajo inutilizable hasta que se recargaba la página (#2348).\nSe corrigió el espejo de scripts para nombres de carpetas que contienen caracteres de expresiones regulares: una carpeta llamada, por ejemplo, `Lampen (Flur` abortaba la sincronización con un `SyntaxError`, una carpeta llamada, por ejemplo, `[ab]` sincronizaba silenciosamente los scripts de otra carpeta (#2239)\nEl bloque de Blockly \"http (POST)\" ahora tiene un selector de \"tipo de contenido\", por lo que una API que insiste en `Content-Type: application/json` ya no necesita un bloque `exec`. \"automatic\" es el valor predeterminado y se comporta exactamente igual que antes, \"own\" permite cualquier otro tipo (#1983).\n`getSchedules()` devolvía los horarios del asistente de tiempo de **todos** los scripts, incluso sin el argumento `true`. Ahora solo se devuelven los horarios del propio script (#2164).\n`clearSchedule()` no aceptaba los objetos que `getSchedules()` devuelve para los horarios del asistente de tiempo, por lo que dicho horario permaneció en el script y en el contador de horarios (#2164).\n`clearSchedule()` ahora también puede borrar las tareas CRON de otros scripts, como se documenta para `getSchedules(true)` (#2164).\n`getSchedules()` ya no muestra las programaciones canceladas del propio script en una llamada de retorno `onStop` (#2164)",
|
|
52
|
+
"pl": "Eksport zwykłego tekstu nazwał pliki identyfikatorem skryptu, a nie jego nazwą, więc każda kropka w nazwie była podkreślona – „HK-Balkontuer_v0.1” został wyeksportowany jako „HK-Balkontuer_v0_1.js”, a po ponownym zaimportowaniu zmienił nazwę skryptu na tę. Pliki noszą teraz nazwy pochodzące od skryptu (#2364).\nImportowanie eksportu zwykłego tekstu traktowało kropkę w nazwie pliku jako poziom folderu, więc `PW-TV-Control_v0.6.js` utworzyło folder `PW-TV-Control_v0` zawierający skrypt o nazwie `6`. Teraz tylko katalogi w pliku ZIP są folderami (#2364).\nIkony folderów w drzewie skryptów były narysowane w rozmiarze mniejszym niż połowa rozmiaru ikon skryptów obok nich: były oddzielone odstępem, a ponieważ `CssBaseline` ustawia `box-sizing: border-box`, odstęp ten został odjęty od ich 20 pikseli zamiast zostać do nich dodany. Teraz używają marginesu, tak jak zawsze ikony skryptów (#2360).\nRozmiar logu pod edytorem nie mógł zostać zmieniony, gdy skrypt był otwarty: obszar edytora odgadł swoją wysokość na podstawie wysokości, jaką miały mieć zakładki i pasek narzędzi, zawisł nad dolną krawędzią panelu i zakrył 8-pikselowy separator poziomym paskiem przewijania edytora, co uniemożliwiało kliknięcie myszką. Te trzy części mają teraz wspólną wysokość jako elastyczna kolumna (#2351).\nLista skryptów obcięła długie nazwy, chociaż obok nich wciąż było wolne miejsce: przestrzeń na przyciski na końcu wiersza wynosiła stałe 185 px, co jest więcej niż zajmują trzy przyciski, i nie uwzględniało kolumny z ikonami\nNaprawiono blok komentarza Blockly: tekst był napisany na biało na żółtym bloku i nie dało się go odczytać, edytor otwierał się w innym miejscu strony zamiast nad blokiem, a na smartfonie lub tablecie w ogóle się nie otwierał i cała przestrzeń robocza pozostawała bezużyteczna do momentu ponownego załadowania strony (#2348)\nNaprawiono lustrzane odbicie skryptów dla nazw folderów zawierających znaki wyrażeń regularnych: folder o nazwie np. `Lampen (Flur` przerywał synchronizację z błędem `SyntaxError`, folder o nazwie np. `[ab]` po cichu synchronizował skrypty innego folderu (#2239)\nBlok Blockly „http (POST)” otrzymał selektor „typu zawartości”, więc API, które wymaga „Content-Type: application/json”, nie potrzebuje już bloku „exec”. Domyślnym typem jest „automatic”, który zachowuje się dokładnie tak samo jak wcześniej, „own” dopuszcza każdy inny typ (#1983).\nFunkcja `getSchedules()` zwróciła harmonogramy kreatora czasu **wszystkich** skryptów, nawet bez argumentu `true`. Teraz zwracane są tylko harmonogramy własnego skryptu (#2164).\n`clearSchedule()` nie akceptował obiektów zwracanych przez `getSchedules()` dla harmonogramów kreatora czasu, więc taki harmonogram pozostał w skrypcie i liczniku harmonogramu (#2164)\n`clearSchedule()` może teraz czyścić zadania CRON także innych skryptów, zgodnie z dokumentacją dla `getSchedules(true)` (#2164)\n`getSchedules()` nie wyświetla już anulowanych harmonogramów własnego skryptu w wywołaniu zwrotnym `onStop` (#2164)",
|
|
53
|
+
"uk": "Експорт у звичайний текст назвав свої файли за ідентифікатором скрипта, а не за назвою скрипта, тому кожна крапка в назві відображалася як символ підкреслення – `HK-Balkontuer_v0.1` було експортовано як `HK-Balkontuer_v0_1.js`, а його зворотний імпорт перейменував скрипт на це. Файли тепер названі за назвою скрипта (#2364)\nІмпорт експорту звичайного тексту обробляв крапку всередині назви файлу як рівень папки, тому `PW-TV-Control_v0.6.js` створив папку `PW-TV-Control_v0`, що містить скрипт під назвою `6`. Тепер лише каталоги ZIP-архіву є папками (#2364)\nРозмір іконок папок у дереві скриптів був меншим, ніж половина розміру іконок скриптів поруч: вони мали інтервал між собою з відступом, і оскільки `CssBaseline` встановлює `box-sizing: border-box`, цей відступ віднімався від їхніх 20px, а не додавався до них. Тепер вони використовують відступ, як і завжди використовували іконки скриптів (#2360)\nРозмір журналу під редактором не можна було змінити, коли скрипт був відкритий: область редактора визначала свою висоту на основі висоти вкладок та панелі інструментів, нависала над нижнім краєм своєї панелі та перекривала роздільник розміром 8 пікселів горизонтальною смугою прокручування редактора, яка поглинала клацання миші. Тепер три частини мають однакову висоту як гнучкий стовпець (#2351).\nСписок скриптів обрізав довгі назви, хоча поруч із ними все ще залишався вільний простір: простір для кнопок у кінці рядка становив фіксовані 185 пікселів, що більше, ніж займають три кнопки, і це не враховувало стовпець значків.\nВиправлено блок коментарів Blockly: текст писався білим кольором на жовтому блоці та не міг бути прочитаний, редактор відкривався деінде на сторінці, а не над блоком, а на смартфоні чи планшеті він взагалі не відкривався та залишав увесь робочий простір непридатним для використання до перезавантаження сторінки (#2348)\nВиправлено дзеркало скриптів для імен папок, що містять символи регулярних виразів: папка з назвою, наприклад, `Lampen (Flur`, переривала синхронізацію з помилкою `SyntaxError`, папка з назвою, наприклад, `[ab]`, непомітно синхронізувала скрипти іншої папки (#2239)\nБлок Blockly \"http (POST)\" отримав селектор \"content type\", тому API, який наполягає на `Content-Type: application/json`, більше не потребує блоку `exec`. \"automatic\" є значенням за замовчуванням і поводиться точно так само, як і раніше, \"own\" дозволяє будь-який інший тип (#1983)\n`getSchedules()` повертав розклади майстра часу **всіх** скриптів, навіть без аргументу `true`. Тепер повертаються лише розклади власного скрипта (#2164)\n`clearSchedule()` не приймав об'єкти, які повертає `getSchedules()` для розкладів майстра часу, тому такий розклад залишався у скрипті та в лічильнику розкладів (#2164)\n`clearSchedule()` тепер може очищати CRON-завдання інших скриптів, як задокументовано для `getSchedules(true)` (#2164)\n`getSchedules()` більше не відображає вже скасовані розклади власного скрипта у зворотному виклику `onStop` (#2164)",
|
|
54
|
+
"zh-cn": "纯文本导出时,文件名使用的是脚本 ID 而不是脚本名称,因此脚本名称中的每个点号都被转换成了下划线——例如,`HK-Balkontuer_v0.1` 被导出为 `HK-Balkontuer_v0_1.js`,重新导入后,脚本名称也随之更改。现在,文件名已正确更改为脚本名称 (#2364)。\n导入纯文本导出文件时,文件名中的点号会被识别为文件夹级别,因此 `PW-TV-Control_v0.6.js` 会创建一个名为 `PW-TV-Control_v0` 的文件夹,其中包含一个名为 `6` 的脚本。现在只有 ZIP 文件中的目录才是文件夹(#2364)。\n脚本树中的文件夹图标绘制尺寸不到旁边脚本图标的一半:它们通过内边距来保持间距,而由于 `CssBaseline` 设置了 `box-sizing: border-box`,所以这个内边距从它们的 20px 宽度中减去了,而不是加到了宽度上。现在它们使用外边距,就像脚本图标一直以来那样 (#2360)。\n当脚本打开时,编辑器下方的日志区域无法调整大小:编辑器区域会根据标签页和工具栏的预期高度来估算自身高度,导致其超出面板底部边缘,并且编辑器的水平滚动条会覆盖 8 像素的分隔线,从而吞噬鼠标点击。现在,这三个部分共享高度,形成一个弹性列(#2351)。\n脚本列表会截断过长的名称,尽管名称旁边还有剩余空间:每行末尾按钮的空间固定为 185 像素,这比三个按钮实际占用的空间要大,而且也没有考虑到图标列。\n修复了 Blockly 评论块的问题:文本显示在黄色块上时为白色,无法阅读;编辑器打开的位置在页面的其他位置而不是评论块上方;在智能手机或平板电脑上,编辑器根本无法打开,导致整个工作区无法使用,直到页面重新加载为止 (#2348)\n修复了文件夹名称包含正则表达式字符时的脚本镜像问题:例如,名为 `Lampen (Flur)` 的文件夹会因 `SyntaxError` 而中止同步,例如,名为 `[ab]` 的文件夹会静默同步另一个文件夹的脚本 (#2239)\nBlockly 的“http (POST)”代码块新增了“content type”选择器,因此,如果 API 要求使用 `Content-Type: application/json`,则不再需要 `exec` 代码块。“automatic”是默认值,其行为与之前完全相同;“own”则允许使用任何其他类型(#1983)。\n`getSchedules()` 函数会返回**所有**脚本的时间向导日程表,即使没有指定参数 `true` 也是如此。现在,它只会返回自身脚本的日程表 (#2164)。\n`clearSchedule()` 不接受时间向导的 `getSchedules()` 返回的日程对象,因此这样的日程会保留在脚本和日程计数器中 (#2164)\n`clearSchedule()` 现在也可以清除其他脚本的 CRON 作业,如 `getSchedules(true)` 的文档中所述 (#2164)\n`getSchedules()` 函数不再在 `onStop` 回调函数中列出自身脚本已取消的日程安排 (#2164)"
|
|
55
|
+
},
|
|
43
56
|
"10.1.2": {
|
|
44
57
|
"en": "Added new rule blocks\nFixed saving of Blockly scripts under Blockly 13: a script containing a named timeout, interval or schedule could not be saved anymore - the save button did not appear (#2349)\nFixed saving of Blockly scripts containing a function with a return value and no statements (#1958)\nThe Blockly regression tests now also cover saving: every block is serialized the way the editor does it and reloaded to the same code\nWhen a block fails while the script is regenerated after a change, the editor now shows the error instead of silently never offering the save button; a failing export shows its error too",
|
|
45
58
|
"de": "Neue Regelblöcke hinzugefügt\nProblem beim Speichern von Blockly-Skripten unter Blockly 13 behoben: Ein Skript, das ein benanntes Timeout, Intervall oder einen Zeitplan enthielt, konnte nicht mehr gespeichert werden – die Schaltfläche „Speichern“ wurde nicht angezeigt (#2349).\nProblem beim Speichern von Blockly-Skripten behoben, die eine Funktion mit Rückgabewert, aber keine Anweisungen enthalten (#1958)\nDie Blockly-Regressionstests umfassen nun auch das Speichern: Jeder Block wird auf die gleiche Weise wie vom Editor serialisiert und in denselben Code wieder geladen.\nWenn ein Block beim Neugenerieren des Skripts nach einer Änderung fehlschlägt, zeigt der Editor nun den Fehler an, anstatt die Schaltfläche „Speichern“ stillschweigend nicht anzubieten; auch ein fehlgeschlagener Export zeigt seinen Fehler an.",
|
|
@@ -117,19 +130,6 @@
|
|
|
117
130
|
"pl": "Wprowadzono obsługę menedżera poświadczeń w konfiguracji\nDodano możliwość wykonywania skryptów z poziomu agenta AI",
|
|
118
131
|
"uk": "Реалізовано підтримку менеджера облікових даних у конфігурації\nДодано можливість виконання скриптів з агента штучного інтелекту",
|
|
119
132
|
"zh-cn": "在配置中实现了对凭据管理器的支持\n增加了从 AI 代理执行脚本的功能。"
|
|
120
|
-
},
|
|
121
|
-
"9.2.4": {
|
|
122
|
-
"en": "Performance optimizations part 2\nfix filter in tab scripts\nFixed a subscription leak on script stop for RegExp-notation string ids (dispatch index)\n`extendObject` no longer throws into the script when the object contains non-clonable values (e.g. functions)",
|
|
123
|
-
"de": "Performance Optimierungen Teil 2\nfix-filter in tab-scripts\nBehebung eines Abonnementlecks bei Skriptstopp für RegExp-Notation String-IDs (Dispatch-Index)\n`extendObject` wirft nicht mehr in das Skript, wenn das Objekt nicht-klonbare Werte (z.B. Funktionen) enthält",
|
|
124
|
-
"ru": "Оптимизация производительности часть 2\nисправить фильтр в скриптах вкладок\nИсправлена утечка подписки на остановке скрипта для строковых идентификаторов RegExp-notation (индекс отправки)\n«extendObject» больше не бросается в сценарий, когда объект содержит неклонируемые значения (например, функции)",
|
|
125
|
-
"pt": "Otimização de desempenho parte 2\ncorrigir o filtro nos scripts de páginas\nCorrigido um vazamento de assinatura na parada do script para IDs de strings de notação RegExp (índice de distribuição)\n`extendObject` já não é lançado no script quando o objeto contém valores não clonáveis (por exemplo, funções)",
|
|
126
|
-
"nl": "Prestatieoptimalisaties deel 2\nfilter herstellen in tabscripts\nVaste een abonnement lek op scriptstop voor RegExp-notatie string-id's (verzendindex)\nHet object wordt niet meer in het script gegooid als het object niet-kloonbare waarden bevat (bv. functies)",
|
|
127
|
-
"fr": "Optimisation des performances partie 2\ncorrection du filtre dans les scripts des onglets\nCorrection d'une fuite d'abonnement sur l'arrêt du script pour les ids de chaîne RegExp-notation (index de distribution)\n`extendObject` ne lance plus dans le script lorsque l'objet contient des valeurs non-clonables (par exemple des fonctions)",
|
|
128
|
-
"it": "Ottimizzazione delle prestazioni parte 2\ncorrezione del filtro negli script di scheda\nRisolto una perdita di abbonamento sulla fermata dello script per RegExp-notation string ids (indice dispatch)\n`extendObject` non getta più nello script quando l'oggetto contiene valori non clonabili (ad esempio funzioni)",
|
|
129
|
-
"es": "Optimizaciones de rendimiento parte 2\nfijar filtro en scripts de pestaña\nSe ha fijado una fuga de suscripción en la parada de script para los ids de cadena RegExp (índice de despacha)\n`extendObject` ya no se lanza al script cuando el objeto contiene valores no visibles (por ejemplo, funciones)",
|
|
130
|
-
"pl": "Optymalizacja wydajności część 2\nnaprawić filtr w skryptach kart\nNaprawiono przeciek subskrypcji przy zatrzymaniu skryptu dla idów łańcuchowych RegExp- notation (wskaźnik wysyłkowy)\n'extendObject' nie wrzuca się już do skryptu, gdy obiekt zawiera wartości niemodne (np. funkcje)",
|
|
131
|
-
"uk": "Оптимізація продуктивності частини 2\nвиправити фільтр в скриптах вкладок\nВиправлено протікання підписки на сценарій зупинки для рядкових полів RegExp-notation (диспетчерський індекс)\n`extendObject` не завантажується в скрипт, коли об’єкт містить неклоновані значення (наприклад, функції)",
|
|
132
|
-
"zh-cn": "业绩优化第2部分\n在标签脚本中修正过滤器\n修复 RegExp Notation 字符串 IDs( 发送索引) 的脚本站订阅漏洞\n当对象包含不可克隆值(例如函数)时,`extend Object'不再丢入脚本"
|
|
133
133
|
}
|
|
134
134
|
},
|
|
135
135
|
"platform": "Javascript/Node.js",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.javascript",
|
|
3
|
-
"version": "10.1.
|
|
3
|
+
"version": "10.1.3",
|
|
4
4
|
"description": "Rules Engine for ioBroker",
|
|
5
5
|
"author": "bluefox <dogafox@gmail.com>",
|
|
6
6
|
"contributors": [
|
|
@@ -43,13 +43,13 @@
|
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@iobroker/adapter-core": "^3.4.3",
|
|
45
45
|
"@iobroker/types": "^7.2.2",
|
|
46
|
-
"@types/node": "^22.
|
|
47
|
-
"axios": "^1.
|
|
46
|
+
"@types/node": "^22.20.1",
|
|
47
|
+
"axios": "^1.20.0",
|
|
48
48
|
"jsonata": "^2.2.2",
|
|
49
49
|
"jszip": "^3.10.1",
|
|
50
50
|
"node-inspect": "^2.0.0",
|
|
51
51
|
"node-schedule": "2.1.1",
|
|
52
|
-
"nodemailer": "^9.0.
|
|
52
|
+
"nodemailer": "^9.0.6",
|
|
53
53
|
"prettier": "^3.9.6",
|
|
54
54
|
"promisify-child-process": "^5.0.1",
|
|
55
55
|
"semver": "^7.8.5",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./AiChatPanel-D3eFcu56.js";export{e as buildActionPrompt};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,o as t,r as n,t as r}from"./blockly-DBw-ytY1.js";import{c as i,l as a}from"./index-DKhQ45Yn.js";import{d as o,i as s,p as c,r as l,s as u}from"./helpers-DaSC8t53.js";function d(){let d=window.Blockly,f=d.Translate,p=window.getHelp;d.CustomBlocks=d.CustomBlocks||[],d.CustomBlocks.push(`Action`),d.Action={HUE:330,blocks:{}};let m=()=>new n(`FALSE`,function(e){this.getSourceBlock().updateShape_(l(e))}),h=()=>[[f(`http_timeout_ms`),`ms`],[f(`http_timeout_sec`),`sec`]],g=()=>[[f(`http_type_text`),`text`],[f(`http_type_arraybuffer`),`arraybuffer`]],_={mutationToDom:function(){let e=document.createElement(`mutation`);return e.setAttribute(`with_statement`,String(l(this.getFieldValue(`WITH_STATEMENT`)))),e},domToMutation:function(e){this.updateShape_(l(e.getAttribute(`with_statement`)))},updateShape_:function(e){o(this,e)}},v=(t,n,o,s,l,u)=>{r[t]={init:function(){this.appendDummyInput().appendField(n),this.appendDummyInput(`ATTR`).appendField(new e(o),`ATTR`),this.setInputsInline(!0),this.setOutput(!0),this.setColour(d.Action.HUE),this.setTooltip(f(`${t}_tooltip`)),u&&this.setHelpUrl(p(u))},onchange:function(){c(this,s,l)},FUNCTION_TYPES:s},a.forBlock[t]=function(e){return[e.getFieldValue(`ATTR`),i.ATOMIC]}};d.Action.blocks.exec=`<block type="exec"> <mutation with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG"></field> <value name="COMMAND"> <shadow type="text"> <field name="TEXT">pwd</field> </shadow> </value></block>`,r.exec={init:function(){this.appendDummyInput(`TEXT`).appendField(`» ${f(`exec`)}`),this.appendValueInput(`COMMAND`).appendField(f(`exec_command`)),this.appendDummyInput(`WITH_STATEMENT`).appendField(f(`with_results`)).appendField(m(),`WITH_STATEMENT`),this.appendDummyInput(`LOG`).appendField(f(`loglevel`)).appendField(new e(s()),`LOG`),this.setInputsInline(!1),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setColour(d.Action.HUE),this.setTooltip(f(`exec_tooltip`)),this.setHelpUrl(p(`exec_help`))},..._},a.forBlock.exec=function(e){let t=a.valueToCode(e,`COMMAND`,i.ATOMIC),n=e.getFieldValue(`LOG`),r=``;if(n&&(r=`console.${n}('exec: ' + ${t});\n`),l(e.getFieldValue(`WITH_STATEMENT`))){let n=a.statementToCode(e,`STATEMENT`);if(n)return`exec(${t}, async (error, result, stderr) => {\n${n}});\n${r}`}return`exec(${t});\n${r}`},d.Action.blocks.exec_result=`<sep gap="5"></sep><block type="exec_result"> <field name="ATTR">result</field></block>`,v(`exec_result`,`»`,[[f(`exec_result_result`),`result`],[f(`exec_result_stderr`),`stderr`],[f(`exec_result_error`),`error`]],[`exec`],`exec_result_warning`,`exec_help`),d.Action.blocks.http_get=`<block type="http_get"> <field name="TIMEOUT">2000</field> <field name="UNIT">ms</field> <field name="TYPE">text</field> <value name="URL"> <shadow type="text"> <field name="TEXT">http://</field> </shadow> </value></block>`,r.http_get={init:function(){this.appendValueInput(`URL`).appendField(`🌐 ${f(`http_get`)}`),this.appendDummyInput().appendField(f(`http_timeout`)).appendField(new t(`2000`),`TIMEOUT`).appendField(new e(h()),`UNIT`),this.appendDummyInput(`TYPE`).appendField(f(`http_type`)).appendField(new e(g()),`TYPE`),this.appendStatementInput(`STATEMENT`).setCheck(null),this.setInputsInline(!1),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setColour(d.Action.HUE),this.setTooltip(f(`http_get_tooltip`)),this.setHelpUrl(p(`http_get_help`))}},a.forBlock.http_get=function(e){let t=a.valueToCode(e,`URL`,i.ATOMIC),n=e.getFieldValue(`UNIT`),r=e.getFieldValue(`TIMEOUT`);Number.isNaN(r)&&(r=2e3),n===`sec`&&(r*=1e3);let o=e.getFieldValue(`TYPE`)||`text`,s=a.statementToCode(e,`STATEMENT`);return`httpGet(${t}, { timeout: ${r}, responseType: '${o}' }, async (err, response) => {\n${s}});\n`},d.Action.blocks.http_post=`<sep gap="5"></sep><block type="http_post"> <field name="TIMEOUT">2000</field> <field name="UNIT">ms</field> <field name="TYPE">text</field> <value name="URL"> <shadow type="text"> <field name="TEXT">http://</field> </shadow> </value> <value name="DATA"> <shadow type="logic_null"></shadow> </value></block>`,r.http_post={init:function(){this.appendValueInput(`URL`).appendField(`🌐 ${f(`http_post`)}`),this.appendDummyInput().appendField(f(`http_timeout`)).appendField(new t(`2000`),`TIMEOUT`).appendField(new e(h()),`UNIT`),this.appendDummyInput(`TYPE`).appendField(f(`http_type`)).appendField(new e(g()),`TYPE`),this.appendValueInput(`DATA`).appendField(f(`http_post_data`)),this.appendStatementInput(`STATEMENT`).setCheck(null),this.setInputsInline(!1),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setColour(d.Action.HUE),this.setTooltip(f(`http_post_tooltip`)),this.setHelpUrl(p(`http_post_help`))}},a.forBlock.http_post=function(e){let t=a.valueToCode(e,`URL`,i.ATOMIC),n=e.getFieldValue(`UNIT`),r=e.getFieldValue(`TIMEOUT`);isNaN(r)&&(r=2e3),n===`sec`&&(r*=1e3);let o=e.getFieldValue(`TYPE`)||`text`,s=a.valueToCode(e,`DATA`,i.ATOMIC)||`null`,c=a.statementToCode(e,`STATEMENT`);return`httpPost(${t}, ${s}, { timeout: ${r}, responseType: '${o}' }, async (err, response) => {\n${c}});\n`},d.Action.blocks.http_response=`<sep gap="5"></sep><block type="http_response"> <field name="ATTR">response.data</field></block>`,v(`http_response`,`🌐`,[[f(`http_response_data`),`response.data`],[f(`http_response_statuscode`),`response.statusCode`],[f(`http_response_responsetime`),`response.responseTime`],[f(`http_response_headers`),`response.headers`],[f(`http_response_error`),`err`]],[`http_get`,`http_post`],`http_response_warning`,`http_response_help`),d.Action.blocks.http_response_tofile=`<sep gap="5"></sep><block type="http_response_tofile"> <value name="FILENAME"> <shadow type="text"> <field name="TEXT">temp.jpg</field> </shadow> </value></block>`,r.http_response_tofile={init:function(){this.appendDummyInput().appendField(`🌐 ${f(`http_response_tofile`)}`),this.appendValueInput(`FILENAME`).appendField(f(`http_response_tofile_filename`)).setCheck(null),this.setInputsInline(!1),this.setOutput(!0,`String`),this.setColour(d.Action.HUE),this.setTooltip(f(`http_response_tofile_tooltip`)),this.setHelpUrl(p(`http_response_tofile_help`))},onchange:function(){c(this,[`http_get`,`http_post`],`http_response_warning`)},FUNCTION_TYPES:[`http_get`,`http_post`]},a.forBlock.http_response_tofile=function(e){return[`createTempFile(${a.valueToCode(e,`FILENAME`,i.ATOMIC)}, response.data)`,i.ATOMIC]};let y=()=>`${a.prefixLines(`if (err) {`,a.INDENT)}\n${a.prefixLines(`console.error(err);`,a.INDENT+a.INDENT)}\n${a.prefixLines(`}`,a.INDENT)}\n`;d.Action.blocks.file_write=`<block type="file_write"> <value name="OID"> <shadow type="field_oid_meta"> <field name="oid">0_userdata.0</field> </shadow> </value> <value name="FILE"> <shadow type="text"> <field name="TEXT">demo.json</field> </shadow> </value></block>`,r.file_write={init:function(){this.appendValueInput(`OID`).appendField(`📁 ${f(`file_write`)}`),this.appendValueInput(`FILE`).appendField(f(`file_write_filename`)).setCheck(null),this.appendValueInput(`DATA`).appendField(f(`file_write_data`)),this.setInputsInline(!1),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setColour(d.Action.HUE),this.setTooltip(f(`file_write_tooltip`)),this.setHelpUrl(p(`file_write_help`))}},a.forBlock.file_write=function(e){let t=a.valueToCode(e,`OID`,i.ATOMIC),n=a.valueToCode(e,`FILE`,i.ATOMIC),r=a.valueToCode(e,`DATA`,i.ATOMIC),o=u(t);return`writeFile(${t}${o?` /* ${o} */`:``}, String(${n}), ${r||`null`}, (err) => {\n${y()}});\n`},d.Action.blocks.file_read=`<sep gap="5"></sep><block type="file_read"> <value name="OID"> <shadow type="field_oid_meta"> <field name="oid">0_userdata.0</field> </shadow> </value> <value name="FILE"> <shadow type="text"> <field name="TEXT">demo.json</field> </shadow> </value></block>`,r.file_read={init:function(){this.appendValueInput(`OID`).appendField(`📁 ${f(`file_read`)}`),this.appendValueInput(`FILE`).appendField(f(`file_read_filename`)).setCheck(null),this.appendStatementInput(`STATEMENT`).setCheck(null),this.setInputsInline(!1),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setColour(d.Action.HUE),this.setTooltip(f(`file_read_tooltip`)),this.setHelpUrl(p(`file_read_help`))}},a.forBlock.file_read=function(e){let t=a.valueToCode(e,`OID`,i.ATOMIC),n=a.valueToCode(e,`FILE`,i.ATOMIC),r=a.statementToCode(e,`STATEMENT`),o=u(t);return`readFile(${t}${o?` /* ${o} */`:``}, String(${n}), (err, data, mimeType) => {\n${y()}${r}});\n`},d.Action.blocks.file_data=`<sep gap="5"></sep><block type="file_data"> <field name="ATTR">data</field></block>`,v(`file_data`,`📁`,[[f(`file_data_data`),`data`],[f(`file_data_mimeType`),`mimeType`]],[`file_read`],`file_data_warning`),d.Action.blocks.request=`<block type="request"> <mutation with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG"></field> <value name="URL"> <shadow type="text"> <field name="TEXT">http://</field> </shadow> </value></block>`,r.request={init:function(){this.appendDummyInput(`TEXT`).appendField(f(`request`)),this.appendValueInput(`URL`).appendField(f(`request_url`)),this.appendDummyInput(`WITH_STATEMENT`).appendField(f(`with_results`)).appendField(m(),`WITH_STATEMENT`),this.appendDummyInput(`LOG`).appendField(f(`loglevel`)).appendField(new e(s()),`LOG`),this.setInputsInline(!1),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setColour(d.Action.HUE),this.setTooltip(f(`request_tooltip`)),this.setHelpUrl(f(`request_help`))},..._},a.forBlock.request=function(e){let t=a.valueToCode(e,`URL`,i.ATOMIC),n=e.getFieldValue(`LOG`),r=``;if(n&&(r=`console.${n}('request: ' + ${t});\n`),l(e.getFieldValue(`WITH_STATEMENT`))){let n=a.statementToCode(e,`STATEMENT`);if(n)return`try {\n require("request")(${t}, async (error, response, result) => {\n ${n} }).on("error", (e) => { console.error(e); });\n} catch (e) { console.error(e); }\n${r}`}return`try {\n require("request")(${t}).on("error", (e) => { console.error(e); });\n} catch (e) { console.error(e); }\n${r}`}}export{d as install};
|