scratch-blocks 2.0.1 → 2.0.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.
Files changed (276) hide show
  1. package/AGENTS.md +140 -0
  2. package/commitlint.config.js +2 -2
  3. package/dist/main.mjs +1 -2
  4. package/dist/types/msg/scratch_msgs.d.ts.map +1 -1
  5. package/dist/types/src/block_reporting.d.ts.map +1 -1
  6. package/dist/types/src/blocks/colour.d.ts +0 -19
  7. package/dist/types/src/blocks/colour.d.ts.map +1 -1
  8. package/dist/types/src/blocks/control.d.ts +0 -19
  9. package/dist/types/src/blocks/control.d.ts.map +1 -1
  10. package/dist/types/src/blocks/data.d.ts +0 -19
  11. package/dist/types/src/blocks/data.d.ts.map +1 -1
  12. package/dist/types/src/blocks/event.d.ts +0 -19
  13. package/dist/types/src/blocks/event.d.ts.map +1 -1
  14. package/dist/types/src/blocks/looks.d.ts +0 -19
  15. package/dist/types/src/blocks/looks.d.ts.map +1 -1
  16. package/dist/types/src/blocks/math.d.ts +0 -19
  17. package/dist/types/src/blocks/math.d.ts.map +1 -1
  18. package/dist/types/src/blocks/matrix.d.ts +0 -19
  19. package/dist/types/src/blocks/matrix.d.ts.map +1 -1
  20. package/dist/types/src/blocks/motion.d.ts +0 -19
  21. package/dist/types/src/blocks/motion.d.ts.map +1 -1
  22. package/dist/types/src/blocks/note.d.ts +0 -19
  23. package/dist/types/src/blocks/note.d.ts.map +1 -1
  24. package/dist/types/src/blocks/operators.d.ts +0 -19
  25. package/dist/types/src/blocks/operators.d.ts.map +1 -1
  26. package/dist/types/src/blocks/procedures.d.ts +6 -9
  27. package/dist/types/src/blocks/procedures.d.ts.map +1 -1
  28. package/dist/types/src/blocks/sensing.d.ts +0 -19
  29. package/dist/types/src/blocks/sensing.d.ts.map +1 -1
  30. package/dist/types/src/blocks/sound.d.ts +0 -19
  31. package/dist/types/src/blocks/sound.d.ts.map +1 -1
  32. package/dist/types/src/blocks/text.d.ts +0 -19
  33. package/dist/types/src/blocks/text.d.ts.map +1 -1
  34. package/dist/types/src/blocks/vertical_extensions.d.ts +0 -19
  35. package/dist/types/src/blocks/vertical_extensions.d.ts.map +1 -1
  36. package/dist/types/src/checkable_continuous_flyout.d.ts +2 -7
  37. package/dist/types/src/checkable_continuous_flyout.d.ts.map +1 -1
  38. package/dist/types/src/checkbox_bubble.d.ts +13 -12
  39. package/dist/types/src/checkbox_bubble.d.ts.map +1 -1
  40. package/dist/types/src/colours.d.ts.map +1 -1
  41. package/dist/types/src/constants.d.ts +0 -7
  42. package/dist/types/src/constants.d.ts.map +1 -1
  43. package/dist/types/src/context_menu_items.d.ts +0 -5
  44. package/dist/types/src/context_menu_items.d.ts.map +1 -1
  45. package/dist/types/src/data_category.d.ts +2 -4
  46. package/dist/types/src/data_category.d.ts.map +1 -1
  47. package/dist/types/src/events/events_block_comment_base.d.ts +2 -3
  48. package/dist/types/src/events/events_block_comment_base.d.ts.map +1 -1
  49. package/dist/types/src/events/events_block_comment_change.d.ts +0 -5
  50. package/dist/types/src/events/events_block_comment_change.d.ts.map +1 -1
  51. package/dist/types/src/events/events_block_comment_collapse.d.ts +0 -5
  52. package/dist/types/src/events/events_block_comment_collapse.d.ts.map +1 -1
  53. package/dist/types/src/events/events_block_comment_create.d.ts +0 -5
  54. package/dist/types/src/events/events_block_comment_create.d.ts.map +1 -1
  55. package/dist/types/src/events/events_block_comment_delete.d.ts +0 -5
  56. package/dist/types/src/events/events_block_comment_delete.d.ts.map +1 -1
  57. package/dist/types/src/events/events_block_comment_move.d.ts +0 -5
  58. package/dist/types/src/events/events_block_comment_move.d.ts.map +1 -1
  59. package/dist/types/src/events/events_block_comment_resize.d.ts +0 -5
  60. package/dist/types/src/events/events_block_comment_resize.d.ts.map +1 -1
  61. package/dist/types/src/events/events_block_drag_end.d.ts +1 -2
  62. package/dist/types/src/events/events_block_drag_end.d.ts.map +1 -1
  63. package/dist/types/src/events/events_block_drag_outside.d.ts +1 -2
  64. package/dist/types/src/events/events_block_drag_outside.d.ts.map +1 -1
  65. package/dist/types/src/events/events_scratch_variable_create.d.ts +0 -5
  66. package/dist/types/src/events/events_scratch_variable_create.d.ts.map +1 -1
  67. package/dist/types/src/fields/field_colour_slider.d.ts +7 -31
  68. package/dist/types/src/fields/field_colour_slider.d.ts.map +1 -1
  69. package/dist/types/src/fields/field_matrix.d.ts +0 -19
  70. package/dist/types/src/fields/field_matrix.d.ts.map +1 -1
  71. package/dist/types/src/fields/field_note.d.ts +8 -23
  72. package/dist/types/src/fields/field_note.d.ts.map +1 -1
  73. package/dist/types/src/fields/field_textinput_removable.d.ts +2 -4
  74. package/dist/types/src/fields/field_textinput_removable.d.ts.map +1 -1
  75. package/dist/types/src/fields/field_variable_getter.d.ts +0 -19
  76. package/dist/types/src/fields/field_variable_getter.d.ts.map +1 -1
  77. package/dist/types/src/fields/field_vertical_separator.d.ts +0 -19
  78. package/dist/types/src/fields/field_vertical_separator.d.ts.map +1 -1
  79. package/dist/types/src/fields/scratch_field_angle.d.ts +0 -19
  80. package/dist/types/src/fields/scratch_field_angle.d.ts.map +1 -1
  81. package/dist/types/src/fields/scratch_field_dropdown.d.ts +0 -5
  82. package/dist/types/src/fields/scratch_field_dropdown.d.ts.map +1 -1
  83. package/dist/types/src/fields/scratch_field_number.d.ts +0 -19
  84. package/dist/types/src/fields/scratch_field_number.d.ts.map +1 -1
  85. package/dist/types/src/fields/scratch_field_variable.d.ts +5 -8
  86. package/dist/types/src/fields/scratch_field_variable.d.ts.map +1 -1
  87. package/dist/types/src/flyout_checkbox_icon.d.ts +2 -3
  88. package/dist/types/src/flyout_checkbox_icon.d.ts.map +1 -1
  89. package/dist/types/src/glows.d.ts +1 -3
  90. package/dist/types/src/glows.d.ts.map +1 -1
  91. package/dist/types/src/index.d.ts +50 -51
  92. package/dist/types/src/index.d.ts.map +1 -1
  93. package/dist/types/src/procedures.d.ts +6 -8
  94. package/dist/types/src/procedures.d.ts.map +1 -1
  95. package/dist/types/src/recyclable_block_flyout_inflater.d.ts +3 -5
  96. package/dist/types/src/recyclable_block_flyout_inflater.d.ts.map +1 -1
  97. package/dist/types/src/renderer/bowler_hat.d.ts +2 -3
  98. package/dist/types/src/renderer/bowler_hat.d.ts.map +1 -1
  99. package/dist/types/src/renderer/cat/cat_face.d.ts +6 -5
  100. package/dist/types/src/renderer/cat/cat_face.d.ts.map +1 -1
  101. package/dist/types/src/renderer/cat/constants.d.ts +2 -2
  102. package/dist/types/src/renderer/cat/constants.d.ts.map +1 -1
  103. package/dist/types/src/renderer/cat/drawer.d.ts +4 -5
  104. package/dist/types/src/renderer/cat/drawer.d.ts.map +1 -1
  105. package/dist/types/src/renderer/cat/path_object.d.ts +2 -3
  106. package/dist/types/src/renderer/cat/path_object.d.ts.map +1 -1
  107. package/dist/types/src/renderer/cat/render_info.d.ts +3 -4
  108. package/dist/types/src/renderer/cat/render_info.d.ts.map +1 -1
  109. package/dist/types/src/renderer/cat/renderer.d.ts +7 -8
  110. package/dist/types/src/renderer/cat/renderer.d.ts.map +1 -1
  111. package/dist/types/src/renderer/constants.d.ts +41 -0
  112. package/dist/types/src/renderer/constants.d.ts.map +1 -0
  113. package/dist/types/src/renderer/drawer.d.ts +7 -6
  114. package/dist/types/src/renderer/drawer.d.ts.map +1 -1
  115. package/dist/types/src/renderer/path_object.d.ts +1 -3
  116. package/dist/types/src/renderer/path_object.d.ts.map +1 -1
  117. package/dist/types/src/renderer/render_info.d.ts +3 -4
  118. package/dist/types/src/renderer/render_info.d.ts.map +1 -1
  119. package/dist/types/src/renderer/renderer.d.ts +9 -16
  120. package/dist/types/src/renderer/renderer.d.ts.map +1 -1
  121. package/dist/types/src/scratch_block_paster.d.ts +0 -5
  122. package/dist/types/src/scratch_block_paster.d.ts.map +1 -1
  123. package/dist/types/src/scratch_blocks_utils.d.ts +0 -20
  124. package/dist/types/src/scratch_blocks_utils.d.ts.map +1 -1
  125. package/dist/types/src/scratch_comment_bubble.d.ts +3 -6
  126. package/dist/types/src/scratch_comment_bubble.d.ts.map +1 -1
  127. package/dist/types/src/scratch_comment_icon.d.ts +3 -4
  128. package/dist/types/src/scratch_comment_icon.d.ts.map +1 -1
  129. package/dist/types/src/scratch_connection_checker.d.ts +0 -5
  130. package/dist/types/src/scratch_connection_checker.d.ts.map +1 -1
  131. package/dist/types/src/scratch_continuous_category.d.ts +5 -5
  132. package/dist/types/src/scratch_continuous_category.d.ts.map +1 -1
  133. package/dist/types/src/scratch_continuous_toolbox.d.ts +3 -6
  134. package/dist/types/src/scratch_continuous_toolbox.d.ts.map +1 -1
  135. package/dist/types/src/scratch_dragger.d.ts +2 -11
  136. package/dist/types/src/scratch_dragger.d.ts.map +1 -1
  137. package/dist/types/src/scratch_insertion_marker_previewer.d.ts +0 -5
  138. package/dist/types/src/scratch_insertion_marker_previewer.d.ts.map +1 -1
  139. package/dist/types/src/scratch_variable_map.d.ts +0 -5
  140. package/dist/types/src/scratch_variable_map.d.ts.map +1 -1
  141. package/dist/types/src/scratch_variable_model.d.ts +2 -3
  142. package/dist/types/src/scratch_variable_model.d.ts.map +1 -1
  143. package/dist/types/src/scratch_zoom_controls.d.ts +4 -6
  144. package/dist/types/src/scratch_zoom_controls.d.ts.map +1 -1
  145. package/dist/types/src/shadows.d.ts +2 -2
  146. package/dist/types/src/shadows.d.ts.map +1 -1
  147. package/dist/types/src/status_indicator_label.d.ts +4 -6
  148. package/dist/types/src/status_indicator_label.d.ts.map +1 -1
  149. package/dist/types/src/status_indicator_label_flyout_inflater.d.ts +1 -6
  150. package/dist/types/src/status_indicator_label_flyout_inflater.d.ts.map +1 -1
  151. package/dist/types/src/variables.d.ts +4 -8
  152. package/dist/types/src/variables.d.ts.map +1 -1
  153. package/dist/types/src/xml.d.ts +2 -3
  154. package/dist/types/src/xml.d.ts.map +1 -1
  155. package/dist/types/tests/jsunit/block_test.d.ts.map +1 -1
  156. package/dist/types/tests/jsunit/connection_db_test.d.ts +3 -3
  157. package/dist/types/tests/jsunit/connection_db_test.d.ts.map +1 -1
  158. package/dist/types/tests/jsunit/connection_test.d.ts.map +1 -1
  159. package/dist/types/tests/jsunit/event_test.d.ts.map +1 -1
  160. package/dist/types/tests/jsunit/extensions_test.d.ts.map +1 -1
  161. package/dist/types/tests/jsunit/field_number_test.d.ts.map +1 -1
  162. package/dist/types/tests/jsunit/field_test.d.ts.map +1 -1
  163. package/dist/types/tests/jsunit/field_variable_getter_test.d.ts.map +1 -1
  164. package/dist/types/tests/jsunit/field_variable_test.d.ts.map +1 -1
  165. package/dist/types/tests/jsunit/gesture_test.d.ts.map +1 -1
  166. package/dist/types/tests/jsunit/input_test.d.ts +1 -0
  167. package/dist/types/tests/jsunit/input_test.d.ts.map +1 -1
  168. package/dist/types/tests/jsunit/json_test.d.ts.map +1 -1
  169. package/dist/types/tests/jsunit/names_test.d.ts.map +1 -1
  170. package/dist/types/tests/jsunit/procedure_test.d.ts.map +1 -1
  171. package/dist/types/tests/jsunit/scratch_block_comment_test.d.ts.map +1 -1
  172. package/dist/types/tests/jsunit/svg_test.d.ts.map +1 -1
  173. package/dist/types/tests/jsunit/test_utilities.d.ts.map +1 -1
  174. package/dist/types/tests/jsunit/utils_test.d.ts.map +1 -1
  175. package/dist/types/tests/jsunit/variable_map_test.d.ts.map +1 -1
  176. package/dist/types/tests/jsunit/variable_model_test.d.ts.map +1 -1
  177. package/dist/types/tests/jsunit/widget_div_test.d.ts.map +1 -1
  178. package/dist/types/tests/jsunit/workspace_comment_test.d.ts.map +1 -1
  179. package/dist/types/tests/jsunit/workspace_test.d.ts.map +1 -1
  180. package/dist/types/tests/jsunit/workspace_undo_redo_test.d.ts.map +1 -1
  181. package/dist/types/tests/jsunit/xml_test.d.ts.map +1 -1
  182. package/dist/types/tests/workspace_svg/workspace_svg_test.d.ts.map +1 -1
  183. package/eslint.config.mjs +69 -0
  184. package/i18n/create_scratch_msgs.js +44 -45
  185. package/i18n/js_to_json.js +40 -32
  186. package/i18n/json_to_js.js +37 -37
  187. package/i18n/sync_tx_translations.js +64 -65
  188. package/i18n/test_scratch_msgs.js +66 -63
  189. package/msg/js/en.js +289 -287
  190. package/msg/json/en.json +284 -284
  191. package/msg/messages.js +289 -287
  192. package/msg/scratch_msgs.js +22959 -22970
  193. package/package.json +13 -10
  194. package/prettier.config.mjs +3 -0
  195. package/release.config.js +7 -7
  196. package/renovate.json5 +7 -9
  197. package/src/block_reporting.ts +16 -19
  198. package/src/blocks/colour.ts +12 -15
  199. package/src/blocks/control.ts +171 -174
  200. package/src/blocks/data.ts +233 -272
  201. package/src/blocks/event.ts +121 -123
  202. package/src/blocks/looks.ts +165 -167
  203. package/src/blocks/math.ts +44 -46
  204. package/src/blocks/matrix.ts +11 -13
  205. package/src/blocks/motion.ts +151 -153
  206. package/src/blocks/note.ts +11 -13
  207. package/src/blocks/operators.ts +158 -160
  208. package/src/blocks/procedures.ts +421 -511
  209. package/src/blocks/sensing.ts +163 -165
  210. package/src/blocks/sound.ts +58 -60
  211. package/src/blocks/text.ts +10 -12
  212. package/src/blocks/vertical_extensions.ts +86 -102
  213. package/src/checkable_continuous_flyout.ts +25 -42
  214. package/src/checkbox_bubble.ts +83 -100
  215. package/src/colours.ts +35 -37
  216. package/src/constants.ts +22 -29
  217. package/src/context_menu_items.ts +59 -84
  218. package/src/css.ts +3 -4
  219. package/src/data_category.ts +137 -251
  220. package/src/events/events_block_comment_base.ts +23 -30
  221. package/src/events/events_block_comment_change.ts +21 -42
  222. package/src/events/events_block_comment_collapse.ts +27 -36
  223. package/src/events/events_block_comment_create.ts +32 -46
  224. package/src/events/events_block_comment_delete.ts +12 -19
  225. package/src/events/events_block_comment_move.ts +27 -52
  226. package/src/events/events_block_comment_resize.ts +28 -55
  227. package/src/events/events_block_drag_end.ts +16 -26
  228. package/src/events/events_block_drag_outside.ts +12 -22
  229. package/src/events/events_scratch_variable_create.ts +37 -42
  230. package/src/fields/field_colour_slider.ts +186 -216
  231. package/src/fields/field_matrix.ts +202 -270
  232. package/src/fields/field_note.ts +277 -375
  233. package/src/fields/field_textinput_removable.ts +25 -40
  234. package/src/fields/field_variable_getter.ts +26 -31
  235. package/src/fields/field_vertical_separator.ts +19 -24
  236. package/src/fields/scratch_field_angle.ts +151 -187
  237. package/src/fields/scratch_field_dropdown.ts +15 -19
  238. package/src/fields/scratch_field_number.ts +125 -181
  239. package/src/fields/scratch_field_variable.ts +57 -75
  240. package/src/flyout_checkbox_icon.ts +18 -28
  241. package/src/glows.ts +52 -59
  242. package/src/index.ts +119 -133
  243. package/src/procedures.ts +150 -209
  244. package/src/recyclable_block_flyout_inflater.ts +14 -25
  245. package/src/renderer/bowler_hat.ts +6 -8
  246. package/src/renderer/cat/cat_face.ts +98 -99
  247. package/src/renderer/cat/constants.ts +67 -87
  248. package/src/renderer/cat/drawer.ts +21 -27
  249. package/src/renderer/cat/path_object.ts +3 -5
  250. package/src/renderer/cat/render_info.ts +5 -8
  251. package/src/renderer/cat/renderer.ts +12 -16
  252. package/src/renderer/constants.ts +34 -49
  253. package/src/renderer/drawer.ts +35 -51
  254. package/src/renderer/path_object.ts +4 -10
  255. package/src/renderer/render_info.ts +39 -56
  256. package/src/renderer/renderer.ts +17 -30
  257. package/src/scratch_block_paster.ts +12 -20
  258. package/src/scratch_blocks_utils.ts +4 -7
  259. package/src/scratch_comment_bubble.ts +76 -105
  260. package/src/scratch_comment_icon.ts +75 -124
  261. package/src/scratch_connection_checker.ts +7 -17
  262. package/src/scratch_continuous_category.ts +24 -28
  263. package/src/scratch_continuous_toolbox.ts +20 -27
  264. package/src/scratch_dragger.ts +42 -81
  265. package/src/scratch_insertion_marker_previewer.ts +6 -11
  266. package/src/scratch_variable_map.ts +5 -12
  267. package/src/scratch_variable_model.ts +6 -13
  268. package/src/scratch_zoom_controls.ts +101 -156
  269. package/src/shadows.ts +32 -37
  270. package/src/status_indicator_label.ts +54 -67
  271. package/src/status_indicator_label_flyout_inflater.ts +11 -21
  272. package/src/variables.ts +92 -141
  273. package/src/xml.ts +21 -35
  274. package/tsconfig.json +3 -7
  275. package/types/continuous-toolbox.d.ts +1 -1
  276. package/dist/main.mjs.LICENSE.txt +0 -163
@@ -1,5 +1,4 @@
1
1
  /**
2
- * @license
3
2
  * Visual Blocks Editor
4
3
  *
5
4
  * Copyright 2018 Google Inc.
@@ -18,11 +17,11 @@
18
17
  * limitations under the License.
19
18
  */
20
19
  /**
21
- * @fileoverview Class for a category header in the flyout for Scratch
20
+ * @file Class for a category header in the flyout for Scratch
22
21
  * extensions which can display a textual label and a status button.
23
22
  * @author ericr@media.mit.edu (Eric Rosenbaum)
24
23
  */
25
- import * as Blockly from "blockly/core";
24
+ import * as Blockly from 'blockly/core';
26
25
  /**
27
26
  * Class for a category header in the flyout for Scratch extensions which can
28
27
  * display a textual label and a status button.
@@ -46,7 +45,6 @@ export declare class StatusIndicatorLabel extends Blockly.FlyoutButton {
46
45
  static statusButtonCallback: (extensionId: string) => void;
47
46
  /**
48
47
  * Creates a new StatusIndicatorLabel.
49
- *
50
48
  * @param workspace The workspace in which to place this header.
51
49
  * @param targetWorkspace The flyout's target workspace.
52
50
  * @param json The JSON specifying the header.
@@ -64,8 +62,8 @@ export declare class StatusIndicatorLabel extends Blockly.FlyoutButton {
64
62
  setImageSrc(src: string): void;
65
63
  /**
66
64
  * Gets the extension state. Overridden externally.
67
- * @param extensionId The ID of the extension in question.
68
- * @return The state of the extension.
65
+ * @param extensionId A string identifying which extension's state to retrieve.
66
+ * @returns Whether the extension is ready to be used.
69
67
  */
70
68
  getExtensionState(extensionId: string): StatusButtonState;
71
69
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"status_indicator_label.d.ts","sourceRoot":"","sources":["../../../src/status_indicator_label.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;;GAIG;AAEH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAExC;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,OAAO,CAAC,YAAY;IAC5D;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,YAAY,EAAE,eAAe,CAAC;IAE9B;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;IAE3C;;OAEG;IACH,MAAM,CAAC,oBAAoB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAE3D;;;;;;OAMG;gBAED,SAAS,EAAE,OAAO,CAAC,YAAY,EAC/B,eAAe,EAAE,OAAO,CAAC,YAAY,EACrC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS;IAyDvC;;OAEG;IACH,aAAa;IAWb;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM;IAUvB;;;;OAIG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB;IAIzD;;OAEG;IACH,OAAO;CAIR;AAED;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,KAAK,UAAU;IACf,SAAS,cAAc;CACxB"}
1
+ {"version":3,"file":"status_indicator_label.d.ts","sourceRoot":"","sources":["../../../src/status_indicator_label.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH;;;;GAIG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,OAAO,CAAC,YAAY;IAC5D;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,YAAY,EAAE,eAAe,CAAA;IAE7B;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC,aAAa,CAAC,IAAI,CAAA;IAE1C;;OAEG;IACH,MAAM,CAAC,oBAAoB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;IAE1D;;;;;OAKG;gBAED,SAAS,EAAE,OAAO,CAAC,YAAY,EAC/B,eAAe,EAAE,OAAO,CAAC,YAAY,EACrC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS;IAoDvC;;OAEG;IACH,aAAa;IAWb;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM;IAMvB;;;;OAIG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB;IAIzD;;OAEG;IACH,OAAO;CAIR;AAED;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,KAAK,UAAU;IACf,SAAS,cAAc;CACxB"}
@@ -1,11 +1,6 @@
1
- /**
2
- * @license
3
- * Copyright 2024 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
1
  export declare const STATUS_INDICATOR_LABEL_TYPE = "status_indicator_label";
7
2
  /**
8
- * Register the status indicator label flyout inflater.
3
+ * Adds the status indicator label flyout inflater to the Blockly component registry.
9
4
  */
10
5
  export declare function registerStatusIndicatorLabelFlyoutInflater(): void;
11
6
  //# sourceMappingURL=status_indicator_label_flyout_inflater.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"status_indicator_label_flyout_inflater.d.ts","sourceRoot":"","sources":["../../../src/status_indicator_label_flyout_inflater.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,eAAO,MAAM,2BAA2B,2BAA2B,CAAC;AA2BpE;;GAEG;AACH,wBAAgB,0CAA0C,SAMzD"}
1
+ {"version":3,"file":"status_indicator_label_flyout_inflater.d.ts","sourceRoot":"","sources":["../../../src/status_indicator_label_flyout_inflater.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,2BAA2B,2BAA2B,CAAA;AAmBnE;;GAEG;AACH,wBAAgB,0CAA0C,SAMzD"}
@@ -1,5 +1,4 @@
1
1
  /**
2
- * @license
3
2
  * Visual Blocks Editor
4
3
  *
5
4
  * Copyright 2012 Google Inc.
@@ -18,24 +17,22 @@
18
17
  * limitations under the License.
19
18
  */
20
19
  /**
21
- * @fileoverview Utility functions for handling variables.
20
+ * @file Utility functions for handling variables.
22
21
  * @author fraser@google.com (Neil Fraser)
23
22
  */
24
- import * as Blockly from "blockly/core";
25
- import { ScratchVariableModel } from "./scratch_variable_model";
23
+ import * as Blockly from 'blockly/core';
24
+ import { ScratchVariableModel } from './scratch_variable_model';
26
25
  type PromptType = (message: string, defaultValue: string, callback: (variableName: string, additionalVars: string[], variableOptions?: {
27
26
  scope?: string;
28
27
  isCloud?: boolean;
29
28
  }) => void, title?: string, varType?: string) => void;
30
29
  /**
31
30
  * Sets the handler for calls to prompt().
32
- *
33
31
  * @param handler The new prompt function.
34
32
  */
35
33
  export declare function setPromptHandler(handler: PromptType): void;
36
34
  /**
37
35
  * Create a new variable on the given workspace.
38
- *
39
36
  * @param workspace The workspace on which to create the variable.
40
37
  * @param opt_callback An optional callback function to act on the id of the
41
38
  * variable that is created from the user's input, or null if the change is
@@ -46,7 +43,6 @@ export declare function setPromptHandler(handler: PromptType): void;
46
43
  export declare function createVariable(workspace: Blockly.WorkspaceSvg, opt_callback?: (id?: string) => void, opt_type?: string): void;
47
44
  /**
48
45
  * Rename a variable with the given workspace, variableType, and oldName.
49
- *
50
46
  * @param workspace The workspace on which to rename the variable.
51
47
  * @param variable Variable to rename.
52
48
  * @param opt_callback A callback. It will be passed an acceptable new variable
@@ -54,5 +50,5 @@ export declare function createVariable(workspace: Blockly.WorkspaceSvg, opt_call
54
50
  * an existing variable was chosen.
55
51
  */
56
52
  export declare function renameVariable(workspace: Blockly.WorkspaceSvg, variable: ScratchVariableModel, opt_callback?: (id?: string) => void): void;
57
- export { getVariablesCategory } from "./data_category";
53
+ export { getVariablesCategory } from './data_category';
58
54
  //# sourceMappingURL=variables.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/variables.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;GAGG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAKxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAWhE,KAAK,UAAU,GAAG,CAChB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,CACR,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EAAE,EACxB,eAAe,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KACpD,IAAI,EACT,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,KACb,IAAI,CAAC;AAIV;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,QAEnD;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,OAAO,CAAC,YAAY,EAC/B,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,EACpC,QAAQ,CAAC,EAAE,MAAM,QAuFlB;AAgJD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,OAAO,CAAC,YAAY,EAC/B,QAAQ,EAAE,oBAAoB,EAC9B,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,QA+DrC;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/variables.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH;;;GAGG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAIvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAS/D,KAAK,UAAU,GAAG,CAChB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,CACR,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EAAE,EACxB,eAAe,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KACpD,IAAI,EACT,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,KACb,IAAI,CAAA;AAIT;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,QAEnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,OAAO,CAAC,YAAY,EAC/B,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,EACpC,QAAQ,CAAC,EAAE,MAAM,QAiElB;AAsID;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,OAAO,CAAC,YAAY,EAC/B,QAAQ,EAAE,oBAAoB,EAC9B,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,QAsDrC;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA"}
@@ -1,14 +1,13 @@
1
1
  /**
2
- * @license
3
2
  * Copyright 2025 Google LLC
4
3
  * SPDX-License-Identifier: Apache-2.0
5
4
  */
6
- import * as Blockly from "blockly/core";
5
+ import * as Blockly from 'blockly/core';
7
6
  /**
8
7
  * Clears the workspace and loads the given serialized state.
9
- *
10
8
  * @param xml XML representation of a Blockly workspace.
11
9
  * @param workspace The workspace to load the serialized data onto.
10
+ * @returns An array of variable IDs created during loading.
12
11
  */
13
12
  export declare function clearWorkspaceAndLoadFromXml(xml: Element, workspace: Blockly.WorkspaceSvg): string[];
14
13
  //# sourceMappingURL=xml.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"xml.d.ts","sourceRoot":"","sources":["../../../src/xml.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAGxC;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,OAAO,CAAC,YAAY,GAC9B,MAAM,EAAE,CAsCV"}
1
+ {"version":3,"file":"xml.d.ts","sourceRoot":"","sources":["../../../src/xml.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAGvC;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,YAAY,GAAG,MAAM,EAAE,CA6BpG"}
@@ -1 +1 @@
1
- {"version":3,"file":"block_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/block_test.js"],"names":[],"mappings":"AAqBA,wDAoBC;AAED,qDAyBC;AAED,8CAmCC"}
1
+ {"version":3,"file":"block_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/block_test.js"],"names":[],"mappings":"AAqBA,wDAsBC;AAED,qDA+BC;AAED,8CAmCC"}
@@ -12,13 +12,13 @@ declare function helper_getNeighbours(db: any, x: any, y: any, radius: any): any
12
12
  declare function helper_searchDB(db: any, x: any, y: any, radius: any, shared_workspace: any): any;
13
13
  declare function helper_makeSourceBlock(sharedWorkspace: any): {
14
14
  workspace: any;
15
- parentBlock_: any;
16
- getParent: () => any;
15
+ parentBlock_: null;
16
+ getParent: () => null;
17
17
  movable_: boolean;
18
18
  isMovable: () => boolean;
19
19
  isShadow: () => boolean;
20
20
  isInsertionMarker: () => boolean;
21
- getFirstStatementConnection: () => any;
21
+ getFirstStatementConnection: () => null;
22
22
  };
23
23
  declare function helper_createConnection(x: any, y: any, type: any, opt_shared_workspace: any, opt_rendered: any): any;
24
24
  declare function helper_createConnection(x: any, y: any, type: any): any;
@@ -1 +1 @@
1
- {"version":3,"file":"connection_db_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/connection_db_test.js"],"names":[],"mappings":"AAqBA,oEAeC;AAED,+CA0BC;AAED,kDAuCC;AAED,+CA6CC;;AAED,2DAiBC;AAED,gDAgBC;AAED,0CAkCC;AAED,+CAyCC;AAGD,iFAIC;;AAED,mGAOC;AAED;;;;;;;;;EAUC;AAED,uHAWC"}
1
+ {"version":3,"file":"connection_db_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/connection_db_test.js"],"names":[],"mappings":"AAqBA,oEAeC;AAED,+CAqBC;AAED,kDAiCC;AAED,+CA2CC;;AAED,2DAWC;AAED,gDAaC;AAED,0CA8BC;AAED,+CAoCC;AAED,iFAEC;;AAED,mGAMC;AAED;;;;;;;;;EAqBC;AAED,uHAUC"}
@@ -1 +1 @@
1
- {"version":3,"file":"connection_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/connection_test.js"],"names":[],"mappings":"AAiCA,8CAgBC;AAED,iDAMC;AAGD;;;GAGG;AACH,6DAOC;AAED,6DAUC;AAED,sEAWC;AAGD,uDASC;AAED,uDAwBC;AAED,6DAaC;AAED;;;GAGG;AACH,kDAYC;AAED,2DAUC;AAED,2DAUC;AAED,4DAUC;AAED,2DAUC;AAED,4DAUC;AAED,2DAUC;AAED,4DAUC;AAED,2DAgBC;AAED,6DAwBC;AAED,yDAmBC;AAED,kEAgBC;AAED,kDAQC;AAED,6EAkBC;AAED,mEAgBC;AAED,6EAmBC;AAzXD,uBAAU;AACV,wBAAW;AACX,0BAAa;AACb,sBAAS;AAET,gCAAmB;AA4BnB,wCAA6C"}
1
+ {"version":3,"file":"connection_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/connection_test.js"],"names":[],"mappings":"AAiCA,8CAcC;AAED,iDAMC;AAKD;;;GAGG;AACH,6DAMC;AAED,6DAWC;AAED,sEASC;AAED,uDAQC;AAED,uDAgBC;AAED,6DASC;AAED;;;GAGG;AACH,kDAYC;AAED,2DAUC;AAED,2DAUC;AAED,4DAUC;AAED,2DAUC;AAED,4DAUC;AAED,2DAUC;AAED,4DAUC;AAED,2DAcC;AAED,6DAuBC;AAED,yDAmBC;AAED,kEAcC;AAED,kDAQC;AAED,6EAiBC;AAED,mEAeC;AAED,6EAkBC;AAjWD,uBAAS;AACT,wBAAU;AACV,0BAAY;AACZ,sBAAQ;AAER,gCAAkB;AA0BlB,wCAEC"}
@@ -1 +1 @@
1
- {"version":3,"file":"event_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/event_test.js"],"names":[],"mappings":"AAgCA,yCAGC;AAED,uDAkBC;AAED,4CAKC;AAED,0DAGC;AAED,qDAcC;AAED,mDAaC;AAED,mDAWC;AAGD,2FAMC;AAGD,2FAMC;AAGD,sEAKC;AAGD,4DAOC;AAED,iDAWC;AAED,sDAYC;AAED,iDAUC;AAED,sDAUC;AAED,iDAcC;AAED,sDAeC;AAED,yDAmBC;AAED,0DAiBC;AAED,8DAkBC;AAED,+DAiBC;AAED,uDAmBC;AAED,wDAuBC;AAED,oDAUC;AAED,+CA8BC;AAED,iDAaC;AAED,mDASC;AAED,qDAQC;AAED,oDAOC;AAED,+CA0BC;AAED,iDAUC;AAED,oDAQC;AAED,qDASC;AAED,oDAOC;AAED,+CAUC;AAED,iDAUC;AAED,mDAQC;AAED,oDAQC;AAED,4CAoBC;AAED,mDAoBC;AAED,oDAoBC;AAED,2DAaC;AAED,+CAWC;AAED,iDAYC;AAED,6CAmBC;AAED;;;GAGG;AACH,gDAaC;AAED;;;;;;;;GAQG;AACH,sDAYC;AAED;;;;;;;GAOG;AACH,6CALY,KAAK,CAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAC/B,OAAO,CAAC,KAAK,QACd,MAAM,QACN,MAAM,QAMhB;AAED,uFAIC;AAED,qDAiCC;AAID,yDAkCC;AAED,yDA4BC;AAxzBD,8BAAiB;AACjB,2BAAc"}
1
+ {"version":3,"file":"event_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/event_test.js"],"names":[],"mappings":"AAgCA,yCAGC;AAED,uDAoBC;AAED,4CAKC;AAED,0DAGC;AAED,qDAaC;AAED,mDAYC;AAED,mDAWC;AAGD,2FAMC;AAGD,2FAMC;AAGD,sEAKC;AAGD,4DAOC;AAED,iDAWC;AAED,sDAYC;AAED,iDAUC;AAED,sDAUC;AAED,iDAaC;AAED,sDAaC;AAED,yDAkBC;AAED,0DAgBC;AAED,8DAkBC;AAED,+DAgBC;AAED,uDAiBC;AAED,wDAqBC;AAED,oDASC;AAED,+CA+CC;AAED,iDAaC;AAED,mDAQC;AAED,qDAQC;AAED,oDAMC;AAED,+CA4CC;AAED,iDAUC;AAED,oDAQC;AAED,qDAQC;AAED,oDAMC;AAED,+CASC;AAED,iDAUC;AAED,mDAQC;AAED,oDAQC;AAED,4CAoBC;AAED,mDAkBC;AAED,oDAkBC;AAED,2DAaC;AAED,+CAWC;AAED,iDAYC;AAED,6CAmBC;AAED;;;GAGG;AACH,gDAaC;AAED;;;;;;;;GAQG;AACH,sDAYC;AAED;;;;;;;GAOG;AACH,6CALY,KAAK,CAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAC/B,OAAO,CAAC,KAAK,QACd,MAAM,QACN,MAAM,QAMhB;AAED,uFAIC;AAED,qDAiCC;AAID,yDAmCC;AAED,yDA4BC;AAx0BD,8BAAgB;AAChB,2BAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"extensions_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/extensions_test.js"],"names":[],"mappings":"AA0BA,wCA8CC;AAED,gDAsBC;AAED,uDAoCC;AAED,yDA6DC;AAED,8CAkCC;AAED,+DAmCC;AAED,6DAmCC;AAED,4CA6CC;AAED,sDAwCC;AAGD,+DAsBC;AAED,6DAsBC;AAED,mEAsBC;AAED,mEAsBC;AAED,6DAyCC;AAED,mEAyCC;AAED,6DAmCC;AAED,0DAwCC"}
1
+ {"version":3,"file":"extensions_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/extensions_test.js"],"names":[],"mappings":"AA0BA,wCAgDC;AAED,gDAwBC;AAED,uDAoCC;AAED,yDA6DC;AAED,8CAoCC;AAED,+DAqCC;AAED,6DAqCC;AAED,4CA8CC;AAED,sDAyCC;AAGD,+DAqBC;AAED,6DAqBC;AAED,mEAqBC;AAED,mEAqBC;AAED,6DA0CC;AAED,mEA0CC;AAED,6DAqCC;AAED,0DA2CC"}
@@ -1 +1 @@
1
- {"version":3,"file":"field_number_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/field_number_test.js"],"names":[],"mappings":"AA0BA,sDAwCC;AAED,mDAaC"}
1
+ {"version":3,"file":"field_number_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/field_number_test.js"],"names":[],"mappings":"AA0BA,sDAoCC;AAED,mDAaC"}
@@ -1 +1 @@
1
- {"version":3,"file":"field_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/field_test.js"],"names":[],"mappings":"AA0BA,sDAMC;AAED,qDAMC;AAED,6DAYC;AAED,mEAaC;AAED,gEAYC;AAED,sEAaC;AAED,+DAyBC"}
1
+ {"version":3,"file":"field_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/field_test.js"],"names":[],"mappings":"AA0BA,sDAKC;AAED,qDAKC;AAED,6DAWC;AAED,mEAYC;AAED,gEAWC;AAED,sEAYC;AAED,+DAyBC"}
@@ -1 +1 @@
1
- {"version":3,"file":"field_variable_getter_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/field_variable_getter_test.js"],"names":[],"mappings":"AA0BA,8DAKC;AAED,6DAMC;AAED,kEAcC;AAED,iEAKC"}
1
+ {"version":3,"file":"field_variable_getter_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/field_variable_getter_test.js"],"names":[],"mappings":"AA0BA,8DAKC;AAED,6DAKC;AAED,kEAaC;AAED,iEAIC"}
@@ -1 +1 @@
1
- {"version":3,"file":"field_variable_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/field_variable_test.js"],"names":[],"mappings":"AAgCA,0DAGC;AAED,6DAGC;AAED;;;EAEC;AAED,uEAOC;AAED,wDAMC;AAED,4DAgBC;AAED,+DAkBC;AAED,yEAgBC;AAED,yDAeC;AAED,oFAWC;AAED,gFAYC;AAED,+EAiBC;AAED,oFAmBC;AA5KD,2BAAc;AACd,8BAAiB"}
1
+ {"version":3,"file":"field_variable_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/field_variable_test.js"],"names":[],"mappings":"AAgCA,0DAGC;AAED,6DAGC;AAED;;;EAOC;AAED,uEAOC;AAED,wDAMC;AAED,4DAeC;AAED,+DAkBC;AAED,yEAeC;AAED,yDAcC;AAED,oFAWC;AAED,gFAWC;AAED,+EAiBC;AAED,oFAmBC;AA7KD,2BAAa;AACb,8BAAgB"}
@@ -1 +1 @@
1
- {"version":3,"file":"gesture_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/gesture_test.js"],"names":[],"mappings":"AA8BA,2CAGC;AAED,8CAGC;AAED,iDAIC;AAED,8DAWC;AAED,4FAeC;AAED,kEAKC;AAED,mEAMC;AA/DD,mBAAM;AACN,2BAAc"}
1
+ {"version":3,"file":"gesture_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/gesture_test.js"],"names":[],"mappings":"AA6BA,2CAGC;AAED,8CAGC;AAED,iDAIC;AAED,8DAWC;AAED,4FAeC;AAED,kEAKC;AAED,mEAMC;AA9DD,mBAAK;AACL,2BAAa"}
@@ -5,4 +5,5 @@ declare function test_appendField_suffix(): void;
5
5
  declare function test_insertFieldAt_simple(): void;
6
6
  declare function test_insertFieldAt_string(): void;
7
7
  declare function test_insertFieldAt_prefix(): void;
8
+ declare function test_insertFieldAt_suffix(): void;
8
9
  //# sourceMappingURL=input_test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"input_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/input_test.js"],"names":[],"mappings":"AAyBA,iDAsBC;AAED,iDAeC;AAED,iDAgBC;AAED,iDAgBC;AAED,mDAsBC;AAED,mDAuBC;AAED,mDAwBC"}
1
+ {"version":3,"file":"input_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/input_test.js"],"names":[],"mappings":"AAyBA,iDAsBC;AAED,iDAeC;AAED,iDAgBC;AAED,iDAgBC;AAED,mDAsBC;AAED,mDAuBC;AAED,mDAwBC;AAED,mDAwBC"}
@@ -1 +1 @@
1
- {"version":3,"file":"json_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/json_test.js"],"names":[],"mappings":"AAqBA,mEAAmE;AACnE,2CAkBC;AAED,0CAA0C;AAC1C,4CAuBC;AAED,6CAA6C;AAC7C,4CA+BC;AAED,+CAA+C;AAC/C,iDA2BC;AAED,4CA4CC;AAED,kDAgFC"}
1
+ {"version":3,"file":"json_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/json_test.js"],"names":[],"mappings":"AAqBA,mEAAmE;AACnE,2CAoBC;AAED,0CAA0C;AAC1C,4CAyBC;AAED,6CAA6C;AAC7C,4CAiCC;AAED,+CAA+C;AAC/C,iDA6BC;AAED,4CA8CC;AAED,kDAkFC"}
@@ -1 +1 @@
1
- {"version":3,"file":"names_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/names_test.js"],"names":[],"mappings":"AAqBA,uCASC;AAED,sCAUC;AAED,8CAWC;AAED,yCAIC"}
1
+ {"version":3,"file":"names_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/names_test.js"],"names":[],"mappings":"AAqBA,uCAQC;AAED,sCAUC;AAED,8CAOC;AAED,yCAIC"}
@@ -1 +1 @@
1
- {"version":3,"file":"procedure_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/procedure_test.js"],"names":[],"mappings":"AA2BA,6CAoCC;AAED,gDAMC;AAED,2DAmBC;AAED,sDAsBC;AAED,yDAuBC;AAED,2DAkBC;AAED,wDAoBC;AAED,2DA0BC;AAED,yDAqBC;AAED,0DAwBC;AAED,wDAsBC;AAED,8DA6BC;AAED,iEAuBC;AA5TD,2BAAc"}
1
+ {"version":3,"file":"procedure_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/procedure_test.js"],"names":[],"mappings":"AA2BA,6CAqCC;AAED,gDAMC;AAED,2DAmBC;AAED,sDAsBC;AAED,yDAuBC;AAED,2DAiBC;AAED,wDAoBC;AAED,2DA0BC;AAED,yDAqBC;AAED,0DAyBC;AAED,wDAsBC;AAED,8DA6BC;AAED,iEAuBC;AA7TD,2BAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"scratch_block_comment_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/scratch_block_comment_test.js"],"names":[],"mappings":"AA2BA,uDAeC;AAED,0DAMC;AAED,uDAUC;AAED,iEAUC;AAED,6DAUC;AAED,gDAWC;AAED,iEAeC;AAED,oEAoBC;AAED,gEAiBC;AAED,iEAiBC;AAzJD,uBAAU;AACV,2BAAc;AACd,oCAAgE"}
1
+ {"version":3,"file":"scratch_block_comment_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/scratch_block_comment_test.js"],"names":[],"mappings":"AA2BA,uDAiBC;AAED,0DAMC;AAED,uDAUC;AAED,iEAUC;AAED,6DAUC;AAED,gDAWC;AAED,iEAeC;AAED,oEAmBC;AAED,gEAgBC;AAED,iEAgBC;AAxJD,uBAAS;AACT,2BAAa;AACb,oCAA+D"}
@@ -1 +1 @@
1
- {"version":3,"file":"svg_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/svg_test.js"],"names":[],"mappings":"AAuBA,uCAGC;AAED,0CAGC;AAED;;;GAGG;AACH,6CAFa,OAAO,CAAC,KAAK,CAqBzB;AAED;;;GAGG;AACH,6CAFa,OAAO,CAAC,KAAK,CAqBzB;AA5DD,mCAAsB"}
1
+ {"version":3,"file":"svg_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/svg_test.js"],"names":[],"mappings":"AAuBA,uCAEC;AAED,0CAGC;AAED;;;GAGG;AACH,6CAFa,OAAO,CAAC,KAAK,CAqBzB;AAED;;;GAGG;AACH,6CAFa,OAAO,CAAC,KAAK,CAqBzB;AA3DD,mCAAqB"}
@@ -1 +1 @@
1
- {"version":3,"file":"test_utilities.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/test_utilities.js"],"names":[],"mappings":"AAmCA;;GAEG;AACH,uDAMC;;AAED;;;;GAIG;AACH,uCAHY,KAAK,CAAE,MAAM,CAAC,UACd,KAAK,CAAE,MAAM,CAAC,QAOzB;AAED;;;;;;;;;;GAUG;AACH,8CARY,IAAI,CAAC,OAAO,CAAC,WAAW,SAExB,MAAM,YACP,MAAO,cACP,KAAK,CAAC,MAAM,CAAC,iBACb,KAAK,CAAE,MAAM,CAAC,GACZ,IAAI,CAAC,OAAO,CAAC,aAAa,CAwBtC;AAED;;;;;;;GAOG;AACH,gDANW,OAAO,CAAC,SAAS,GAAC,OAAO,CAAC,WAAW,QAErC,MAAO,QACP,MAAO,MACP,MAAO,QAQjB;AAED;;;;;;GAMG;AACH,8CAHW,MAAO,GACL,OAAO,CAAC,KAAK,CAYzB;AAED,mEAOC;AAED,8DAGC;AAED,2CAYC;AAED,6CAEC;AAjID;;;GAGG;AACH,+BAAwC"}
1
+ {"version":3,"file":"test_utilities.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/test_utilities.js"],"names":[],"mappings":"AAkCA;;GAEG;AACH,uDAMC;;AAED;;;;GAIG;AACH,uCAHY,KAAK,CAAE,MAAM,CAAC,UACd,KAAK,CAAE,MAAM,CAAC,QAOzB;AAED;;;;;;;;;;GAUG;AACH,8CARY,IAAI,CAAC,OAAO,CAAC,WAAW,SAExB,MAAM,YACP,MAAO,cACP,KAAK,CAAC,MAAM,CAAC,iBACb,KAAK,CAAE,MAAM,CAAC,GACZ,IAAI,CAAC,OAAO,CAAC,aAAa,CAsBtC;AAED;;;;;;;GAOG;AACH,gDANW,OAAO,CAAC,SAAS,GAAC,OAAO,CAAC,WAAW,QAErC,MAAO,QACP,MAAO,MACP,MAAO,QAQjB;AAED;;;;;;GAMG;AACH,8CAHW,MAAO,GACL,OAAO,CAAC,KAAK,CAYzB;AAED,mEAOC;AAED,8DAGC;AAED,2CAcC;AAED,6CAEC;AAjID;;;GAGG;AACH,+BAAuC"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/utils_test.js"],"names":[],"mappings":"AAqBA,qCAOC;AAED,uCAYC;AAED,uCAQE;AAEF,0CAeC;AAED,mDASC;AAED,+CAqBC;AAED,+CAiBC;AAED,oDAiEC;AAED,uDA0BC"}
1
+ {"version":3,"file":"utils_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/utils_test.js"],"names":[],"mappings":"AAqBA,qCAOC;AAED,uCAYC;AAED,uCAQC;AAED,0CAeC;AAED,mDASC;AAED,+CAqBC;AAED,+CAiBC;AAED,oDAiEC;AAED,uDA0BC"}
@@ -1 +1 @@
1
- {"version":3,"file":"variable_map_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/variable_map_test.js"],"names":[],"mappings":"AAiCA,+CAIC;AAED,kDAIC;AAED,wDAmBC;AAED,mDAKC;AAED,sDAaC;AAED,uDAKC;AAED,oDAKC;AAED,0DAmBC;AAED,8DAmBC;AACD,iEAQC;AAED,mDAUC;AAED,wDAUC;AAED,4DAUC;AAED,gEAgBC;AAED,yDAQC;AAED,yDAWC;AAED,sDASC;AAED,6DAOC;AAED,yDAOC;AAED,8DAKC;AAED,uDAUC;AAED,oDAMC;AAED,sDAQC;AAED,mDAKC;AAhRD,8BAAiB;AACjB,8BAAiB;AACjB,2BAAc"}
1
+ {"version":3,"file":"variable_map_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/variable_map_test.js"],"names":[],"mappings":"AAiCA,+CAIC;AAED,kDAIC;AAED,wDAmBC;AAED,mDAKC;AAED,sDAaC;AAED,uDAKC;AAED,oDAKC;AAED,0DAmBC;AAED,8DAmBC;AACD,iEAQC;AAED,mDASC;AAED,wDASC;AAED,4DAUC;AAED,gEAgBC;AAED,yDAQC;AAED,yDAWC;AAED,sDASC;AAED,6DAOC;AAED,yDAOC;AAED,8DAKC;AAED,uDAUC;AAED,oDAMC;AAED,sDAQC;AAED,mDAKC;AA9QD,8BAAgB;AAChB,8BAAgB;AAChB,2BAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"variable_model_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/variable_model_test.js"],"names":[],"mappings":"AA6BA,iDAEC;AAED,oDAGC;AAED;;GAEG;AACH,0CAQC;AAED,2CAKC;AAED,gDAKC;AAED,yCAOC;AAED,8CAOC;AAED,mDAOC;AAhED,0BAAa;AACb,2BAAc"}
1
+ {"version":3,"file":"variable_model_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/variable_model_test.js"],"names":[],"mappings":"AA6BA,iDAEC;AAED,oDAGC;AAED;;GAEG;AACH,0CAOC;AAED,2CAKC;AAED,gDAKC;AAED,yCAOC;AAED,8CAOC;AAED,mDAOC;AA/DD,0BAAY;AACZ,2BAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"widget_div_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/widget_div_test.js"],"names":[],"mappings":"AAuBA;;;;;EAOC;AAED;;;EAKC;AAQD;;;;;EAOC;AAED,oDASC;AAED,uDASC;AAED,oDASC;AAGD,yDASC;AAED,0DAUC;AAED,wDAQC;AAED,yDASC;AAED,0DAUC;AAED,wDAQC;;;;;;;;;;;AA7GD,8CAAmC"}
1
+ {"version":3,"file":"widget_div_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/widget_div_test.js"],"names":[],"mappings":"AAuBA;;;;;EAOC;AAED;;;EAKC;AAQD;;;;;EAOC;AAED,oDAQC;AAED,uDAQC;AAED,oDAQC;AAED,yDAaC;AAED,0DAcC;AAED,wDAYC;AAED,yDAaC;AAED,0DAcC;AAED,wDAYC;;;;;;;;;;;AAjID,8CAAkC"}
@@ -1 +1 @@
1
- {"version":3,"file":"workspace_comment_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/workspace_comment_test.js"],"names":[],"mappings":"AAyBA,oDAEC;AAED,uDAEC;AAED,kDAWC;AAED,kDAcC;AAED,sDAWC;AAED,oDAUC;AAED,mDAmBC;AAED,0CAiBC;AAED,4CA8BC;AAED,wDAQC;AAED,+DAgBC;AAlKD,2BAAc"}
1
+ {"version":3,"file":"workspace_comment_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/workspace_comment_test.js"],"names":[],"mappings":"AAyBA,oDAEC;AAED,uDAEC;AAED,kDAWC;AAED,kDAcC;AAED,sDAWC;AAED,oDAUC;AAED,mDAkBC;AAED,0CAgBC;AAED,4CAuBC;AAED,wDAQC;AAED,+DAgBC;AAzJD,2BAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"workspace_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/workspace_test.js"],"names":[],"mappings":"AA2BA,6CAIC;AAED,gDAIC;AAED,6CAcC;;AAED,4CAsBC;;AAED,+CAmBC;AAED,2CAiBC;AAED,6DAiBC;AAID,8DAsBC;AAED,4CAiBC;AAED,gDAeC;AAED,yDAiBC;AAED,6DAeC;AAED,kEAoCC;AAED,uEAmBC;AAED,qDAYC;AAED,oEAgDC;AAED,yDAWC;AA1VD,2BAAc;AACd,8BAAiB"}
1
+ {"version":3,"file":"workspace_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/workspace_test.js"],"names":[],"mappings":"AA2BA,6CAIC;AAED,gDAIC;AAED,6CAaC;;AAED,4CAsBC;;AAED,+CAcC;AAED,2CAgBC;AAED,6DAiBC;AAID,8DAsBC;AAED,4CAeC;AAED,gDAaC;AAED,yDAiBC;AAED,6DAeC;AAED,kEAoCC;AAED,uEAmBC;AAED,qDAYC;AAED,oEAgDC;AAED,yDAWC;AA/UD,2BAAa;AACb,8BAAgB"}
@@ -1 +1 @@
1
- {"version":3,"file":"workspace_undo_redo_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/workspace_undo_redo_test.js"],"names":[],"mappings":";AAoCA,uDAMC;AAED,4CAKC;AAED,+CAKC;AAED;;;;;GAKG;AACH,iEAHW,MAAM,QACN,MAAM,QAKhB;AAED,gDAGC;AAED,qDAGC;AAED,yDAWC;AAED,gEAmBC;AAED,0DAcC;AAED,4DAmBC;AAED,iEAqBC;AAED,mEAuBC;AAED,sEAuBC;AAED,wEA6BC;AAED,wEAWC;AAED,0EAcC;AAED,wEAaC;AAED,0EAiBC;AAED,kFAaC;AAED,oFAmBC;AAED,6EAWC;AAED,+EAcC;AA5VD,2BAAc;AACd,8BAAiB;AACjB,+BAAwC"}
1
+ {"version":3,"file":"workspace_undo_redo_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/workspace_undo_redo_test.js"],"names":[],"mappings":";AAmCA,uDAMC;AAED,4CAKC;AAED,+CAKC;AAED;;;;;GAKG;AACH,iEAHW,MAAM,QACN,MAAM,QAKhB;AAED,gDAGC;AAED,qDAGC;AAED,yDAWC;AAED,gEAmBC;AAED,0DAcC;AAED,4DAmBC;AAED,iEAqBC;AAED,mEAuBC;AAED,sEAuBC;AAED,wEA6BC;AAED,wEAWC;AAED,0EAcC;AAED,wEAaC;AAED,0EAiBC;AAED,kFAaC;AAED,oFAmBC;AAED,6EAWC;AAED,+EAcC;AA5VD,2BAAa;AACb,8BAAgB;AAChB,+BAAuC"}
@@ -1 +1 @@
1
- {"version":3,"file":"xml_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/xml_test.js"],"names":[],"mappings":"AAqDA,uCAGC;AAED,qDA4BC;AAED,0CAGC;AAED,wDAGC;AAED;;;;;GAKG;AACH,yDAJY,OAAO,QACR,MAAO,QACP,MAAO,QAOjB;AAED;;;;;;;GAOG;AACH,+DANY,OAAO,QACR,MAAO,QACP,MAAO,MACP,MAAO,QACP,MAAO,QAOjB;AAED;;;;;;GAMG;AACH,6DALY,OAAO,QACR,MAAO,MACP,MAAO,QACP,MAAO,QAMjB;AAED,wCAIC;AAED,wCAKC;AAED,mEAiBC;AAED,4DAuBC;AAED,kFAmBC;AAED,wEAoBC;AAED,8EAqBC;AAED,8CAKC;AAED;;;GAGG;AACH,mDA0BC;;AAED,4DAWC;AAED,gEAiBC;AAED,sEAkBC;AAED,yDAYC;AAED,mEAmBC;AAED,yDAMC;AAED,gDAUC;AAED,mDAWC;AAED,6DAqBC;AAlaD,8BAAiB;AACjB,2BAAc;AACd,6BAyBuB"}
1
+ {"version":3,"file":"xml_test.d.ts","sourceRoot":"","sources":["../../../../tests/jsunit/xml_test.js"],"names":[],"mappings":"AAuDA,uCAGC;AAED,qDA8BC;AAED,0CAGC;AAED,wDAGC;AAED;;;;;GAKG;AACH,yDAJY,OAAO,QACR,MAAO,QACP,MAAO,QAOjB;AAED;;;;;;;GAOG;AACH,+DANY,OAAO,QACR,MAAO,QACP,MAAO,MACP,MAAO,QACP,MAAO,QAOjB;AAED;;;;;;GAMG;AACH,6DALY,OAAO,QACR,MAAO,MACP,MAAO,QACP,MAAO,QAMjB;AAED,wCAIC;AAED,wCAIC;AAED,mEAkBC;AAED,4DAwBC;AAED,kFAcC;AAED,wEAqBC;AAED,8EAsBC;AAED,8CAIC;AAED;;;GAGG;AACH,mDA2BC;;AAED,4DAUC;AAED,gEAiBC;AAED,sEAoBC;AAED,yDAYC;AAED,mEAiBC;AAED,yDAMC;AAED,gDAUC;AAED,mDAWC;AAED,6DAiBC;AA/ZD,8BAAgB;AAChB,2BAAa;AACb,6BA2BY"}
@@ -1 +1 @@
1
- {"version":3,"file":"workspace_svg_test.d.ts","sourceRoot":"","sources":["../../../../tests/workspace_svg/workspace_svg_test.js"],"names":[],"mappings":"AAwBA,0DAGC;AAED,8CAGC;;AAED,6CAaC;;AAED,4CAyBC;;AAED,qEAAqE;AACrE,mDAoBC;AAED,2DAeC;AAED,sEAkBC"}
1
+ {"version":3,"file":"workspace_svg_test.d.ts","sourceRoot":"","sources":["../../../../tests/workspace_svg/workspace_svg_test.js"],"names":[],"mappings":"AAwBA,0DAGC;AAED,8CAGC;;AAED,6CAaC;;AAED,4CAyBC;;AAED,qEAAqE;AACrE,mDAyBC;AAED,2DAcC;AAED,sEAiBC"}
@@ -0,0 +1,69 @@
1
+ import { eslintConfigScratch } from 'eslint-config-scratch'
2
+ import { globalIgnores } from 'eslint/config'
3
+ import tseslint from 'typescript-eslint'
4
+
5
+ export default eslintConfigScratch.defineConfig(
6
+ eslintConfigScratch.recommended,
7
+ {
8
+ languageOptions: {
9
+ globals: {
10
+ Blockly: 'readonly',
11
+ goog: 'readonly',
12
+ },
13
+ },
14
+ },
15
+ {
16
+ // TypeScript rule overrides (type-checked rules must be scoped to TS files)
17
+ files: ['**/*.{ts,tsx,mts,cts}'],
18
+ plugins: { '@typescript-eslint': tseslint.plugin },
19
+ rules: {
20
+ // TODO: improve TypeScript type annotations to remove `any` usage
21
+ '@typescript-eslint/no-explicit-any': 'warn',
22
+ '@typescript-eslint/no-unsafe-argument': 'warn',
23
+ '@typescript-eslint/no-unsafe-assignment': 'warn',
24
+ '@typescript-eslint/no-unsafe-call': 'warn',
25
+ '@typescript-eslint/no-unsafe-enum-comparison': 'warn',
26
+ '@typescript-eslint/no-unsafe-member-access': 'warn',
27
+ '@typescript-eslint/no-unsafe-return': 'warn',
28
+ '@typescript-eslint/unbound-method': 'warn',
29
+
30
+ // TODO: fix incrementally
31
+ '@typescript-eslint/no-non-null-assertion': 'warn',
32
+ '@typescript-eslint/no-unnecessary-condition': 'warn',
33
+ '@typescript-eslint/prefer-nullish-coalescing': 'warn',
34
+ '@typescript-eslint/no-base-to-string': 'warn',
35
+ '@typescript-eslint/no-empty-function': 'warn',
36
+ '@typescript-eslint/no-floating-promises': 'warn',
37
+ '@typescript-eslint/no-unnecessary-type-assertion': 'warn',
38
+ '@typescript-eslint/no-unused-vars': 'warn',
39
+ '@typescript-eslint/only-throw-error': 'warn',
40
+ '@typescript-eslint/prefer-optional-chain': 'warn',
41
+ '@typescript-eslint/require-await': 'warn',
42
+ '@typescript-eslint/restrict-plus-operands': 'warn',
43
+ '@typescript-eslint/prefer-for-of': 'warn',
44
+ '@typescript-eslint/restrict-template-expressions': 'warn',
45
+ },
46
+ },
47
+ globalIgnores([
48
+ '*_compressed*.js',
49
+ '*_uncompressed*.js',
50
+ 'msg/**',
51
+ 'core/css.js',
52
+ 'i18n/**',
53
+ 'tests/jsunit/**',
54
+ 'tests/workspace_svg/**',
55
+ 'tests/blocks/**',
56
+ 'demos/**',
57
+ 'accessible/**',
58
+ 'appengine/**',
59
+ 'shim/**',
60
+ 'dist/**',
61
+ 'gh-pages/**',
62
+ 'commitlint.config.js',
63
+ 'release.config.js',
64
+ 'webpack.config.js',
65
+ 'build/**',
66
+ 'github-pages/**',
67
+ 'node_modules/**',
68
+ ]),
69
+ )
@@ -1,44 +1,43 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
- const glob = require('glob');
4
- const assert = require('assert');
1
+ const fs = require('fs')
2
+ const path = require('path')
3
+ const glob = require('glob')
4
+ const assert = require('assert')
5
5
 
6
6
  // Globals
7
- const PATH_INPUT = path.resolve(__dirname, '../msg/json/*.json');
8
- const PATH_OUTPUT = path.resolve(__dirname, '../msg');
7
+ const PATH_INPUT = path.resolve(__dirname, '../msg/json/*.json')
8
+ const PATH_OUTPUT = path.resolve(__dirname, '../msg')
9
9
 
10
- let en = fs.readFileSync(path.resolve(__dirname, '../msg/json/en.json'));
11
- en = JSON.parse(en);
12
- const enKeys = Object.keys(en).sort().toString();
10
+ let en = fs.readFileSync(path.resolve(__dirname, '../msg/json/en.json'))
11
+ en = JSON.parse(en)
12
+ const enKeys = Object.keys(en).sort().toString()
13
13
 
14
14
  // Check that translation is valid:
15
15
  // entry: array [key, translation] corresponding to a single string from <locale>.json
16
16
  // - messages with placeholders have the same number of placeholders
17
17
  // - messages must not have newlines embedded
18
18
  const validateEntry = function (entry) {
19
- const re = /(%\d)/g;
20
- const [key, translation] = entry;
21
- const enMatch = en[key].match(re);
22
- const tMatch = translation.match(re);
23
- const enCount = enMatch ? enMatch.length : 0;
24
- const tCount = tMatch ? tMatch.length : 0;
25
- assert.strictEqual(tCount, enCount, `${key}:${en[key]} - "${translation}" placeholder mismatch`);
26
- if (enCount > 0) {
27
-
28
- assert.notStrictEqual(tMatch, null, `${key} is missing a placeholder: ${translation}`);
29
- assert.strictEqual(
30
- tMatch.sort().toString(),
31
- enMatch.sort().toString(),
32
- `${key} is missing or has duplicate placeholders: ${translation}`
33
- );
34
- }
35
- assert.strictEqual(translation.match(/[\n]/), null, `${key} contains a newline character ${translation}`);
36
- };
19
+ const re = /(%\d)/g
20
+ const [key, translation] = entry
21
+ const enMatch = en[key].match(re)
22
+ const tMatch = translation.match(re)
23
+ const enCount = enMatch ? enMatch.length : 0
24
+ const tCount = tMatch ? tMatch.length : 0
25
+ assert.strictEqual(tCount, enCount, `${key}:${en[key]} - "${translation}" placeholder mismatch`)
26
+ if (enCount > 0) {
27
+ assert.notStrictEqual(tMatch, null, `${key} is missing a placeholder: ${translation}`)
28
+ assert.strictEqual(
29
+ tMatch.sort().toString(),
30
+ enMatch.sort().toString(),
31
+ `${key} is missing or has duplicate placeholders: ${translation}`,
32
+ )
33
+ }
34
+ assert.strictEqual(translation.match(/[\n]/), null, `${key} contains a newline character ${translation}`)
35
+ }
37
36
 
38
37
  const validate = function (json, name) {
39
- assert.strictEqual(Object.keys(json).sort().toString(), enKeys, `${name}: Locale json keys do not match en.json`);
40
- Object.entries(json).forEach(validateEntry);
41
- };
38
+ assert.strictEqual(Object.keys(json).sort().toString(), enKeys, `${name}: Locale json keys do not match en.json`)
39
+ Object.entries(json).forEach(validateEntry)
40
+ }
42
41
 
43
42
  let file = `// This file was automatically generated. Do not modify.
44
43
 
@@ -48,22 +47,22 @@ goog.provide('Blockly.ScratchMsgs.allLocales');
48
47
 
49
48
  goog.require('Blockly.ScratchMsgs');
50
49
 
51
- `;
50
+ `
52
51
 
53
- let files = glob.sync(PATH_INPUT);
52
+ let files = glob.sync(PATH_INPUT)
54
53
  files.forEach(function (uri) {
55
- const name = path.parse(uri).name;
56
- if (name !== 'qqq' && name !== 'synonyms') {
57
- let body = fs.readFileSync(uri);
58
- // Convert file body into an object (let this throw if invalid JSON)
59
- body = JSON.parse(body);
60
- validate(body, name);
61
- file += '\n';
62
- file += `Blockly.ScratchMsgs.locales["${name}"] =\n`;
63
- file += JSON.stringify(body, null, 4);
64
- file += ';\n';
65
- }
66
- });
54
+ const name = path.parse(uri).name
55
+ if (name !== 'qqq' && name !== 'synonyms') {
56
+ let body = fs.readFileSync(uri)
57
+ // Convert file body into an object (let this throw if invalid JSON)
58
+ body = JSON.parse(body)
59
+ validate(body, name)
60
+ file += '\n'
61
+ file += `Blockly.ScratchMsgs.locales["${name}"] =\n`
62
+ file += JSON.stringify(body, null, 4)
63
+ file += ';\n'
64
+ }
65
+ })
67
66
 
68
67
  // write combined file
69
- fs.writeFileSync(`${PATH_OUTPUT}/scratch_msgs.js`, file);
68
+ fs.writeFileSync(`${PATH_OUTPUT}/scratch_msgs.js`, file)
@@ -1,46 +1,54 @@
1
- const es = require('event-stream');
2
- const fs = require('fs');
3
- const path = require('path');
4
- const assert = require('assert');
1
+ const es = require('event-stream')
2
+ const fs = require('fs')
3
+ const path = require('path')
4
+ const assert = require('assert')
5
5
 
6
6
  // Storage object
7
- const storage = {};
7
+ const storage = {}
8
8
 
9
9
  // File paths
10
- const PATH_INPUT = path.resolve(__dirname, '../msg/messages.js');
11
- const PATH_OUTPUT = path.resolve(__dirname, '../msg/json/en.json');
10
+ const PATH_INPUT = path.resolve(__dirname, '../msg/messages.js')
11
+ const PATH_OUTPUT = path.resolve(__dirname, '../msg/json/en.json')
12
12
 
13
13
  // Match function
14
14
  const match = function (str) {
15
- if (str.indexOf('Blockly.Msg.') !== 0) return false;
16
- assert.notStrictEqual(str.indexOf('";'), str.length - 2, `[${str}] uses double quoted string, should use single quotes.`);
17
- if (str.indexOf("';") !== str.length - 2) return false;
18
- return true;
15
+ if (str.indexOf('Blockly.Msg.') !== 0) return false
16
+ assert.notStrictEqual(
17
+ str.indexOf('";'),
18
+ str.length - 2,
19
+ `[${str}] uses double quoted string, should use single quotes.`,
20
+ )
21
+ if (str.indexOf("';") !== str.length - 2) return false
22
+ return true
19
23
  }
20
24
 
21
25
  // Extract key and value from message definition
22
26
  const extract = function (str) {
23
- str = str.split('Blockly.Msg.')[1].split(' ');
24
- return {
25
- key: str[0],
26
- value: str
27
- .splice(2, str.length)
28
- .join(' ')
29
- .slice(1, -2) // strip off initial ', and ending ';
30
- .replace(/\\'/g, "'")
31
- };
32
- };
27
+ str = str.split('Blockly.Msg.')[1].split(' ')
28
+ return {
29
+ key: str[0],
30
+ value: str
31
+ .splice(2, str.length)
32
+ .join(' ')
33
+ .slice(1, -2) // strip off initial ', and ending ';
34
+ .replace(/\\'/g, "'"),
35
+ }
36
+ }
33
37
 
34
38
  // Stream input and push each match to the storage object
35
- const stream = fs.createReadStream(PATH_INPUT);
39
+ const stream = fs.createReadStream(PATH_INPUT)
36
40
  stream
37
- .pipe(es.split('\n'))
38
- .pipe(es.mapSync(function (str) {
39
- if (!match(str)) return;
40
- const result = extract(str);
41
- storage[result.key] = result.value;
42
- }))
43
- .pipe(es.wait(function (err) {
44
- if (err) throw new Error(err);
45
- fs.writeFileSync(PATH_OUTPUT, JSON.stringify(storage, null, 4));
46
- }));
41
+ .pipe(es.split('\n'))
42
+ .pipe(
43
+ es.mapSync(function (str) {
44
+ if (!match(str)) return
45
+ const result = extract(str)
46
+ storage[result.key] = result.value
47
+ }),
48
+ )
49
+ .pipe(
50
+ es.wait(function (err) {
51
+ if (err) throw new Error(err)
52
+ fs.writeFileSync(PATH_OUTPUT, JSON.stringify(storage, null, 4))
53
+ }),
54
+ )