xmlui 0.11.4 → 0.11.6

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 (690) hide show
  1. package/dist/bin/index.cjs +8836 -0
  2. package/dist/bin/index.js +8825 -0
  3. package/dist/lib/{apiInterceptorWorker-QiltRtq1.js → apiInterceptorWorker-dwrAyq6l.js} +126 -151
  4. package/dist/lib/{index-Cq0EMm3L.js → index-x4orhWfi.js} +1888 -2133
  5. package/dist/lib/index.css +1 -1
  6. package/dist/lib/{initMock-DCigV4Zh.js → initMock-DrUirixi.js} +19 -22
  7. package/dist/lib/language-server-web-worker.js +13 -5
  8. package/dist/lib/language-server.js +11 -3
  9. package/dist/lib/{metadata-utils-BiolWMg9.js → metadata-utils-2bsMr4Gd.js} +58 -26
  10. package/dist/lib/{server-common-DyCHOk-z.js → server-common-DI3W4cob.js} +6297 -5930
  11. package/dist/lib/syntax-textmate.js +8 -2472
  12. package/dist/lib/testing.d.ts +1 -0
  13. package/dist/lib/testing.js +20 -23
  14. package/dist/lib/{transform-DHf9tQF7.js → transform-CQ_6R-43.js} +159 -126
  15. package/dist/lib/vite-xmlui-plugin.d.ts +10 -0
  16. package/dist/lib/vite-xmlui-plugin.js +8316 -0
  17. package/dist/lib/{xmlui-parser-CHN3mADy.js → xmlui-parser-CW8YmGjO.js} +10 -11
  18. package/dist/lib/xmlui-parser.js +2 -2
  19. package/dist/lib/{xmlui-serializer-CYNSHAlP.js → xmlui-serializer-CeCcgdVR.js} +19 -19
  20. package/dist/lib/xmlui.d.ts +122 -1
  21. package/dist/lib/xmlui.js +8 -3
  22. package/dist/metadata/{apiInterceptorWorker-Dql7QGw2.js → apiInterceptorWorker-Wgm2_zjg.js} +124 -149
  23. package/dist/metadata/{collectedComponentMetadata-CLaDZhmc.js → collectedComponentMetadata-BGdap_gu.js} +1919 -2124
  24. package/dist/metadata/{initMock-Buqah4JF.js → initMock-DlJ0S4Uy.js} +19 -22
  25. package/dist/metadata/xmlui-metadata.css +1 -0
  26. package/dist/metadata/xmlui-metadata.js +1 -1
  27. package/dist/metadata/xmlui-metadata.umd.cjs +3 -3
  28. package/dist/standalone/xmlui-standalone.es.d.ts +171 -2
  29. package/dist/standalone/xmlui-standalone.umd.js +36 -37
  30. package/package.json +20 -50
  31. package/dist/lib/vite-xmlui-plugin/index.js +0 -13985
  32. package/dist/lib/vite-xmlui-plugin/package.json +0 -3
  33. package/dist/metadata/style.css +0 -1
  34. package/dist/scripts/bin/bootstrap.cjs +0 -4
  35. package/dist/scripts/bin/build-lib.js +0 -126
  36. package/dist/scripts/bin/build.js +0 -266
  37. package/dist/scripts/bin/index.js +0 -167
  38. package/dist/scripts/bin/preview.js +0 -44
  39. package/dist/scripts/bin/start.js +0 -52
  40. package/dist/scripts/bin/vite-xmlui-plugin.js +0 -109
  41. package/dist/scripts/bin/viteConfig.js +0 -144
  42. package/dist/scripts/package.json +0 -285
  43. package/dist/scripts/src/abstractions/ActionDefs.js +0 -2
  44. package/dist/scripts/src/abstractions/AppContextDefs.js +0 -4
  45. package/dist/scripts/src/abstractions/ComponentDefs.js +0 -2
  46. package/dist/scripts/src/abstractions/ContainerDefs.js +0 -2
  47. package/dist/scripts/src/abstractions/ExtensionDefs.js +0 -2
  48. package/dist/scripts/src/abstractions/FunctionDefs.js +0 -2
  49. package/dist/scripts/src/abstractions/RendererDefs.js +0 -2
  50. package/dist/scripts/src/abstractions/ThemingDefs.js +0 -2
  51. package/dist/scripts/src/abstractions/scripting/BlockScope.js +0 -2
  52. package/dist/scripts/src/abstractions/scripting/Compilation.js +0 -2
  53. package/dist/scripts/src/abstractions/scripting/LogicalThread.js +0 -2
  54. package/dist/scripts/src/abstractions/scripting/LoopScope.js +0 -2
  55. package/dist/scripts/src/abstractions/scripting/ScriptParserError.js +0 -2
  56. package/dist/scripts/src/abstractions/scripting/Token.js +0 -2
  57. package/dist/scripts/src/abstractions/scripting/TryScope.js +0 -2
  58. package/dist/scripts/src/abstractions/scripting/TryScopeExp.js +0 -2
  59. package/dist/scripts/src/abstractions/scripting/modules.js +0 -2
  60. package/dist/scripts/src/components/APICall/APICall.js +0 -130
  61. package/dist/scripts/src/components/APICall/APICall.spec.js +0 -910
  62. package/dist/scripts/src/components/APICall/APICallNative.js +0 -36
  63. package/dist/scripts/src/components/Accordion/Accordion.js +0 -97
  64. package/dist/scripts/src/components/Accordion/Accordion.spec.js +0 -969
  65. package/dist/scripts/src/components/Accordion/AccordionContext.js +0 -20
  66. package/dist/scripts/src/components/Accordion/AccordionItem.js +0 -35
  67. package/dist/scripts/src/components/Accordion/AccordionItemNative.js +0 -95
  68. package/dist/scripts/src/components/Accordion/AccordionNative.js +0 -141
  69. package/dist/scripts/src/components/Animation/AnimationNative.js +0 -263
  70. package/dist/scripts/src/components/App/App.js +0 -581
  71. package/dist/scripts/src/components/App/App.spec.js +0 -331
  72. package/dist/scripts/src/components/App/AppLayoutContext.js +0 -49
  73. package/dist/scripts/src/components/App/AppNative.js +0 -308
  74. package/dist/scripts/src/components/App/AppStateContext.js +0 -9
  75. package/dist/scripts/src/components/App/IndexerContext.js +0 -44
  76. package/dist/scripts/src/components/App/LinkInfoContext.js +0 -9
  77. package/dist/scripts/src/components/App/SearchContext.js +0 -35
  78. package/dist/scripts/src/components/App/Sheet.js +0 -99
  79. package/dist/scripts/src/components/AppHeader/AppHeader.js +0 -58
  80. package/dist/scripts/src/components/AppHeader/AppHeader.spec.js +0 -169
  81. package/dist/scripts/src/components/AppHeader/AppHeaderNative.js +0 -72
  82. package/dist/scripts/src/components/AppState/AppState.js +0 -75
  83. package/dist/scripts/src/components/AppState/AppState.spec.js +0 -292
  84. package/dist/scripts/src/components/AppState/AppStateNative.js +0 -51
  85. package/dist/scripts/src/components/AutoComplete/AutoComplete.js +0 -109
  86. package/dist/scripts/src/components/AutoComplete/AutoComplete.spec.js +0 -546
  87. package/dist/scripts/src/components/AutoComplete/AutoCompleteContext.js +0 -19
  88. package/dist/scripts/src/components/AutoComplete/AutoCompleteNative.js +0 -498
  89. package/dist/scripts/src/components/Avatar/Avatar.js +0 -55
  90. package/dist/scripts/src/components/Avatar/Avatar.spec.js +0 -1514
  91. package/dist/scripts/src/components/Avatar/AvatarNative.js +0 -58
  92. package/dist/scripts/src/components/Backdrop/Backdrop.js +0 -40
  93. package/dist/scripts/src/components/Backdrop/Backdrop.spec.js +0 -131
  94. package/dist/scripts/src/components/Backdrop/BackdropNative.js +0 -25
  95. package/dist/scripts/src/components/Badge/Badge.js +0 -81
  96. package/dist/scripts/src/components/Badge/Badge.spec.js +0 -2214
  97. package/dist/scripts/src/components/Badge/BadgeNative.js +0 -46
  98. package/dist/scripts/src/components/Bookmark/Bookmark.js +0 -48
  99. package/dist/scripts/src/components/Bookmark/Bookmark.spec.js +0 -230
  100. package/dist/scripts/src/components/Bookmark/BookmarkNative.js +0 -55
  101. package/dist/scripts/src/components/Breakout/Breakout.js +0 -17
  102. package/dist/scripts/src/components/Breakout/Breakout.spec.js +0 -56
  103. package/dist/scripts/src/components/Breakout/BreakoutNative.js +0 -24
  104. package/dist/scripts/src/components/Button/Button-style.spec.js +0 -274
  105. package/dist/scripts/src/components/Button/Button.js +0 -171
  106. package/dist/scripts/src/components/Button/Button.spec.js +0 -425
  107. package/dist/scripts/src/components/Button/ButtonNative.js +0 -109
  108. package/dist/scripts/src/components/Card/Card.js +0 -89
  109. package/dist/scripts/src/components/Card/Card.spec.js +0 -150
  110. package/dist/scripts/src/components/Card/CardNative.js +0 -41
  111. package/dist/scripts/src/components/Carousel/Carousel.js +0 -133
  112. package/dist/scripts/src/components/Carousel/Carousel.spec.js +0 -557
  113. package/dist/scripts/src/components/Carousel/CarouselContext.js +0 -57
  114. package/dist/scripts/src/components/Carousel/CarouselItem.js +0 -15
  115. package/dist/scripts/src/components/Carousel/CarouselItemNative.js +0 -40
  116. package/dist/scripts/src/components/Carousel/CarouselNative.js +0 -195
  117. package/dist/scripts/src/components/ChangeListener/ChangeListener.js +0 -34
  118. package/dist/scripts/src/components/ChangeListener/ChangeListener.spec.js +0 -169
  119. package/dist/scripts/src/components/ChangeListener/ChangeListenerNative.js +0 -30
  120. package/dist/scripts/src/components/Charts/AreaChart/AreaChart.js +0 -92
  121. package/dist/scripts/src/components/Charts/AreaChart/AreaChart.spec.js +0 -999
  122. package/dist/scripts/src/components/Charts/AreaChart/AreaChartNative.js +0 -127
  123. package/dist/scripts/src/components/Charts/BarChart/BarChart.js +0 -97
  124. package/dist/scripts/src/components/Charts/BarChart/BarChart.spec.js +0 -597
  125. package/dist/scripts/src/components/Charts/BarChart/BarChartNative.js +0 -317
  126. package/dist/scripts/src/components/Charts/DonutChart/DonutChart.js +0 -60
  127. package/dist/scripts/src/components/Charts/DonutChart/DonutChart.spec.js +0 -608
  128. package/dist/scripts/src/components/Charts/LabelList/LabelList.js +0 -41
  129. package/dist/scripts/src/components/Charts/LabelList/LabelList.spec.js +0 -539
  130. package/dist/scripts/src/components/Charts/LabelList/LabelListNative.js +0 -25
  131. package/dist/scripts/src/components/Charts/Legend/Legend.js +0 -33
  132. package/dist/scripts/src/components/Charts/Legend/Legend.spec.js +0 -558
  133. package/dist/scripts/src/components/Charts/Legend/LegendNative.js +0 -64
  134. package/dist/scripts/src/components/Charts/LineChart/LineChart.js +0 -94
  135. package/dist/scripts/src/components/Charts/LineChart/LineChart.spec.js +0 -450
  136. package/dist/scripts/src/components/Charts/LineChart/LineChartNative.js +0 -192
  137. package/dist/scripts/src/components/Charts/PieChart/PieChart.js +0 -64
  138. package/dist/scripts/src/components/Charts/PieChart/PieChart.spec.js +0 -584
  139. package/dist/scripts/src/components/Charts/PieChart/PieChartNative.js +0 -167
  140. package/dist/scripts/src/components/Charts/RadarChart/RadarChart.js +0 -92
  141. package/dist/scripts/src/components/Charts/RadarChart/RadarChart.spec.js +0 -571
  142. package/dist/scripts/src/components/Charts/RadarChart/RadarChartNative.js +0 -125
  143. package/dist/scripts/src/components/Charts/Tooltip/TooltipContent.js +0 -27
  144. package/dist/scripts/src/components/Charts/Tooltip/TooltipContent.spec.js +0 -451
  145. package/dist/scripts/src/components/Charts/utils/ChartProvider.js +0 -65
  146. package/dist/scripts/src/components/Charts/utils/abstractions.js +0 -26
  147. package/dist/scripts/src/components/Checkbox/Checkbox.js +0 -81
  148. package/dist/scripts/src/components/Checkbox/Checkbox.spec.js +0 -900
  149. package/dist/scripts/src/components/CodeBlock/CodeBlock.js +0 -42
  150. package/dist/scripts/src/components/CodeBlock/CodeBlock.spec.js +0 -196
  151. package/dist/scripts/src/components/CodeBlock/CodeBlockNative.js +0 -127
  152. package/dist/scripts/src/components/CodeBlock/highlight-code.js +0 -273
  153. package/dist/scripts/src/components/ColorPicker/ColorPicker.js +0 -54
  154. package/dist/scripts/src/components/ColorPicker/ColorPicker.spec.js +0 -355
  155. package/dist/scripts/src/components/ColorPicker/ColorPickerNative.js +0 -86
  156. package/dist/scripts/src/components/Column/Column.js +0 -89
  157. package/dist/scripts/src/components/Column/ColumnNative.js +0 -49
  158. package/dist/scripts/src/components/Column/TableContext.js +0 -12
  159. package/dist/scripts/src/components/Column/doc-resources/list-component-data.js +0 -53
  160. package/dist/scripts/src/components/ComponentProvider.js +0 -811
  161. package/dist/scripts/src/components/ComponentRegistryContext.js +0 -44
  162. package/dist/scripts/src/components/ContentSeparator/ContentSeparator.js +0 -51
  163. package/dist/scripts/src/components/ContentSeparator/ContentSeparator.spec.js +0 -531
  164. package/dist/scripts/src/components/ContentSeparator/ContentSeparatorNative.js +0 -31
  165. package/dist/scripts/src/components/DataSource/DataSource.js +0 -124
  166. package/dist/scripts/src/components/DateInput/DateInput.js +0 -197
  167. package/dist/scripts/src/components/DateInput/DateInput.spec.js +0 -1023
  168. package/dist/scripts/src/components/DateInput/DateInputNative.js +0 -734
  169. package/dist/scripts/src/components/DatePicker/DatePicker.js +0 -146
  170. package/dist/scripts/src/components/DatePicker/DatePicker.spec.js +0 -394
  171. package/dist/scripts/src/components/DatePicker/DatePickerNative.js +0 -326
  172. package/dist/scripts/src/components/DropdownMenu/DropdownMenu.js +0 -196
  173. package/dist/scripts/src/components/DropdownMenu/DropdownMenu.spec.js +0 -331
  174. package/dist/scripts/src/components/DropdownMenu/DropdownMenuNative.js +0 -146
  175. package/dist/scripts/src/components/EmojiSelector/EmojiSelector.js +0 -26
  176. package/dist/scripts/src/components/EmojiSelector/EmojiSelector.spec.js +0 -29
  177. package/dist/scripts/src/components/EmojiSelector/EmojiSelectorNative.js +0 -71
  178. package/dist/scripts/src/components/ExpandableItem/ExpandableItem.js +0 -101
  179. package/dist/scripts/src/components/ExpandableItem/ExpandableItem.spec.js +0 -435
  180. package/dist/scripts/src/components/ExpandableItem/ExpandableItemNative.js +0 -109
  181. package/dist/scripts/src/components/FileInput/FileInput.js +0 -80
  182. package/dist/scripts/src/components/FileInput/FileInput.spec.js +0 -285
  183. package/dist/scripts/src/components/FileInput/FileInputNative.js +0 -161
  184. package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZone.js +0 -58
  185. package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZone.spec.js +0 -296
  186. package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZoneNative.js +0 -134
  187. package/dist/scripts/src/components/FlowLayout/FlowLayout.js +0 -65
  188. package/dist/scripts/src/components/FlowLayout/FlowLayout.spec.js +0 -518
  189. package/dist/scripts/src/components/FlowLayout/FlowLayoutNative.js +0 -153
  190. package/dist/scripts/src/components/Footer/Footer.js +0 -45
  191. package/dist/scripts/src/components/Footer/Footer.spec.js +0 -991
  192. package/dist/scripts/src/components/Footer/FooterNative.js +0 -35
  193. package/dist/scripts/src/components/Form/Form.js +0 -161
  194. package/dist/scripts/src/components/Form/Form.spec.js +0 -1719
  195. package/dist/scripts/src/components/Form/FormContext.js +0 -124
  196. package/dist/scripts/src/components/Form/FormNative.js +0 -463
  197. package/dist/scripts/src/components/Form/formActions.js +0 -115
  198. package/dist/scripts/src/components/FormItem/FormItem.js +0 -231
  199. package/dist/scripts/src/components/FormItem/FormItem.spec.js +0 -1022
  200. package/dist/scripts/src/components/FormItem/FormItemNative.js +0 -255
  201. package/dist/scripts/src/components/FormItem/HelperText.js +0 -27
  202. package/dist/scripts/src/components/FormItem/ItemWithLabel.js +0 -52
  203. package/dist/scripts/src/components/FormItem/Validations.js +0 -389
  204. package/dist/scripts/src/components/FormSection/FormSection.js +0 -56
  205. package/dist/scripts/src/components/Fragment/Fragment.js +0 -24
  206. package/dist/scripts/src/components/Fragment/Fragment.spec.js +0 -50
  207. package/dist/scripts/src/components/Heading/H1.spec.js +0 -66
  208. package/dist/scripts/src/components/Heading/H2.spec.js +0 -66
  209. package/dist/scripts/src/components/Heading/H3.spec.js +0 -66
  210. package/dist/scripts/src/components/Heading/H4.spec.js +0 -66
  211. package/dist/scripts/src/components/Heading/H5.spec.js +0 -66
  212. package/dist/scripts/src/components/Heading/H6.spec.js +0 -66
  213. package/dist/scripts/src/components/Heading/Heading.js +0 -396
  214. package/dist/scripts/src/components/Heading/Heading.spec.js +0 -966
  215. package/dist/scripts/src/components/Heading/HeadingNative.js +0 -98
  216. package/dist/scripts/src/components/Heading/abstractions.js +0 -4
  217. package/dist/scripts/src/components/HoverCard/HoverCard.js +0 -18
  218. package/dist/scripts/src/components/HoverCard/HovercardNative.js +0 -44
  219. package/dist/scripts/src/components/HtmlTags/HtmlTags.js +0 -1441
  220. package/dist/scripts/src/components/HtmlTags/HtmlTags.spec.js +0 -69
  221. package/dist/scripts/src/components/IFrame/IFrame.js +0 -77
  222. package/dist/scripts/src/components/IFrame/IFrame.spec.js +0 -527
  223. package/dist/scripts/src/components/IFrame/IFrameNative.js +0 -46
  224. package/dist/scripts/src/components/Icon/AdmonitionDanger.js +0 -10
  225. package/dist/scripts/src/components/Icon/AdmonitionInfo.js +0 -10
  226. package/dist/scripts/src/components/Icon/AdmonitionNote.js +0 -10
  227. package/dist/scripts/src/components/Icon/AdmonitionTip.js +0 -10
  228. package/dist/scripts/src/components/Icon/AdmonitionWarning.js +0 -10
  229. package/dist/scripts/src/components/Icon/ApiIcon.js +0 -10
  230. package/dist/scripts/src/components/Icon/ArrowDropDown.js +0 -11
  231. package/dist/scripts/src/components/Icon/ArrowDropUp.js +0 -11
  232. package/dist/scripts/src/components/Icon/ArrowLeft.js +0 -11
  233. package/dist/scripts/src/components/Icon/ArrowRight.js +0 -11
  234. package/dist/scripts/src/components/Icon/Attach.js +0 -10
  235. package/dist/scripts/src/components/Icon/Binding.js +0 -11
  236. package/dist/scripts/src/components/Icon/BoardIcon.js +0 -7
  237. package/dist/scripts/src/components/Icon/BoxIcon.js +0 -10
  238. package/dist/scripts/src/components/Icon/CheckIcon.js +0 -7
  239. package/dist/scripts/src/components/Icon/ChevronDownIcon.js +0 -7
  240. package/dist/scripts/src/components/Icon/ChevronLeft.js +0 -7
  241. package/dist/scripts/src/components/Icon/ChevronRight.js +0 -7
  242. package/dist/scripts/src/components/Icon/ChevronUpIcon.js +0 -7
  243. package/dist/scripts/src/components/Icon/CodeFileIcon.js +0 -10
  244. package/dist/scripts/src/components/Icon/CodeSandbox.js +0 -10
  245. package/dist/scripts/src/components/Icon/CompactListIcon.js +0 -7
  246. package/dist/scripts/src/components/Icon/ContentCopyIcon.js +0 -7
  247. package/dist/scripts/src/components/Icon/DarkToLightIcon.js +0 -10
  248. package/dist/scripts/src/components/Icon/DatabaseIcon.js +0 -11
  249. package/dist/scripts/src/components/Icon/DocFileIcon.js +0 -10
  250. package/dist/scripts/src/components/Icon/DocIcon.js +0 -10
  251. package/dist/scripts/src/components/Icon/DotMenuHorizontalIcon.js +0 -7
  252. package/dist/scripts/src/components/Icon/DotMenuIcon.js +0 -7
  253. package/dist/scripts/src/components/Icon/EmailIcon.js +0 -7
  254. package/dist/scripts/src/components/Icon/EmptyFolderIcon.js +0 -10
  255. package/dist/scripts/src/components/Icon/ErrorIcon.js +0 -7
  256. package/dist/scripts/src/components/Icon/ExpressionIcon.js +0 -10
  257. package/dist/scripts/src/components/Icon/FillPlusCricleIcon.js +0 -7
  258. package/dist/scripts/src/components/Icon/FilterIcon.js +0 -10
  259. package/dist/scripts/src/components/Icon/FolderIcon.js +0 -10
  260. package/dist/scripts/src/components/Icon/GlobeIcon.js +0 -7
  261. package/dist/scripts/src/components/Icon/HomeIcon.js +0 -7
  262. package/dist/scripts/src/components/Icon/HyperLinkIcon.js +0 -7
  263. package/dist/scripts/src/components/Icon/Icon.js +0 -42
  264. package/dist/scripts/src/components/Icon/Icon.spec.js +0 -527
  265. package/dist/scripts/src/components/Icon/IconNative.js +0 -127
  266. package/dist/scripts/src/components/Icon/ImageFileIcon.js +0 -10
  267. package/dist/scripts/src/components/Icon/Inspect.js +0 -10
  268. package/dist/scripts/src/components/Icon/LightToDark.js +0 -10
  269. package/dist/scripts/src/components/Icon/LinkIcon.js +0 -7
  270. package/dist/scripts/src/components/Icon/ListIcon.js +0 -7
  271. package/dist/scripts/src/components/Icon/LooseListIcon.js +0 -7
  272. package/dist/scripts/src/components/Icon/MoonIcon.js +0 -10
  273. package/dist/scripts/src/components/Icon/MoreOptionsIcon.js +0 -7
  274. package/dist/scripts/src/components/Icon/NoSortIcon.js +0 -8
  275. package/dist/scripts/src/components/Icon/PDFIcon.js +0 -10
  276. package/dist/scripts/src/components/Icon/PenIcon.js +0 -7
  277. package/dist/scripts/src/components/Icon/PhoneIcon.js +0 -7
  278. package/dist/scripts/src/components/Icon/PhotoIcon.js +0 -10
  279. package/dist/scripts/src/components/Icon/PlusIcon.js +0 -7
  280. package/dist/scripts/src/components/Icon/SearchIcon.js +0 -7
  281. package/dist/scripts/src/components/Icon/ShareIcon.js +0 -10
  282. package/dist/scripts/src/components/Icon/SortAscendingIcon.js +0 -8
  283. package/dist/scripts/src/components/Icon/SortDescendingIcon.js +0 -8
  284. package/dist/scripts/src/components/Icon/StarsIcon.js +0 -10
  285. package/dist/scripts/src/components/Icon/SunIcon.js +0 -10
  286. package/dist/scripts/src/components/Icon/TableDeleteColumnIcon.js +0 -7
  287. package/dist/scripts/src/components/Icon/TableDeleteRowIcon.js +0 -7
  288. package/dist/scripts/src/components/Icon/TableInsertColumnIcon.js +0 -7
  289. package/dist/scripts/src/components/Icon/TableInsertRowIcon.js +0 -7
  290. package/dist/scripts/src/components/Icon/TrashIcon.js +0 -7
  291. package/dist/scripts/src/components/Icon/TrendingDownIcon.js +0 -10
  292. package/dist/scripts/src/components/Icon/TrendingLevelIcon.js +0 -10
  293. package/dist/scripts/src/components/Icon/TrendingUpIcon.js +0 -10
  294. package/dist/scripts/src/components/Icon/TxtIcon.js +0 -10
  295. package/dist/scripts/src/components/Icon/UnknownFileIcon.js +0 -10
  296. package/dist/scripts/src/components/Icon/UnlinkIcon.js +0 -10
  297. package/dist/scripts/src/components/Icon/UserIcon.js +0 -7
  298. package/dist/scripts/src/components/Icon/WarningIcon.js +0 -7
  299. package/dist/scripts/src/components/Icon/XlsIcon.js +0 -10
  300. package/dist/scripts/src/components/IconProvider.js +0 -300
  301. package/dist/scripts/src/components/IconRegistryContext.js +0 -318
  302. package/dist/scripts/src/components/Image/Image.js +0 -52
  303. package/dist/scripts/src/components/Image/Image.spec.js +0 -198
  304. package/dist/scripts/src/components/Image/ImageNative.js +0 -73
  305. package/dist/scripts/src/components/Input/InputAdornment.js +0 -28
  306. package/dist/scripts/src/components/Input/InputDivider.js +0 -35
  307. package/dist/scripts/src/components/Input/InputLabel.js +0 -25
  308. package/dist/scripts/src/components/Input/PartialInput.js +0 -155
  309. package/dist/scripts/src/components/Input/index.js +0 -5
  310. package/dist/scripts/src/components/InspectButton/InspectButton.js +0 -35
  311. package/dist/scripts/src/components/Items/Items.js +0 -39
  312. package/dist/scripts/src/components/Items/Items.spec.js +0 -397
  313. package/dist/scripts/src/components/Items/ItemsNative.js +0 -33
  314. package/dist/scripts/src/components/Link/Link.js +0 -82
  315. package/dist/scripts/src/components/Link/Link.spec.js +0 -894
  316. package/dist/scripts/src/components/Link/LinkNative.js +0 -48
  317. package/dist/scripts/src/components/List/List.js +0 -130
  318. package/dist/scripts/src/components/List/List.spec.js +0 -927
  319. package/dist/scripts/src/components/List/ListNative.js +0 -433
  320. package/dist/scripts/src/components/List/doc-resources/list-component-data.js +0 -53
  321. package/dist/scripts/src/components/Logo/Logo.js +0 -30
  322. package/dist/scripts/src/components/Logo/LogoNative.js +0 -32
  323. package/dist/scripts/src/components/Markdown/CodeText.js +0 -38
  324. package/dist/scripts/src/components/Markdown/Markdown.js +0 -143
  325. package/dist/scripts/src/components/Markdown/Markdown.spec.js +0 -188
  326. package/dist/scripts/src/components/Markdown/MarkdownNative.js +0 -476
  327. package/dist/scripts/src/components/Markdown/parse-binding-expr.js +0 -60
  328. package/dist/scripts/src/components/Markdown/utils.js +0 -389
  329. package/dist/scripts/src/components/ModalDialog/ConfirmationModalContextProvider.js +0 -111
  330. package/dist/scripts/src/components/ModalDialog/Dialog.js +0 -20
  331. package/dist/scripts/src/components/ModalDialog/ModalDialog.js +0 -83
  332. package/dist/scripts/src/components/ModalDialog/ModalDialog.spec.js +0 -181
  333. package/dist/scripts/src/components/ModalDialog/ModalDialogNative.js +0 -217
  334. package/dist/scripts/src/components/ModalDialog/ModalVisibilityContext.js +0 -60
  335. package/dist/scripts/src/components/NavGroup/NavGroup.js +0 -70
  336. package/dist/scripts/src/components/NavGroup/NavGroup.spec.js +0 -304
  337. package/dist/scripts/src/components/NavGroup/NavGroupContext.js +0 -13
  338. package/dist/scripts/src/components/NavGroup/NavGroupNative.js +0 -133
  339. package/dist/scripts/src/components/NavLink/NavLink.js +0 -86
  340. package/dist/scripts/src/components/NavLink/NavLink.spec.js +0 -864
  341. package/dist/scripts/src/components/NavLink/NavLinkNative.js +0 -73
  342. package/dist/scripts/src/components/NavPanel/NavPanel.js +0 -53
  343. package/dist/scripts/src/components/NavPanel/NavPanel.spec.js +0 -864
  344. package/dist/scripts/src/components/NavPanel/NavPanelNative.js +0 -222
  345. package/dist/scripts/src/components/NestedApp/AppWithCodeView.js +0 -91
  346. package/dist/scripts/src/components/NestedApp/AppWithCodeViewNative.js +0 -84
  347. package/dist/scripts/src/components/NestedApp/NestedApp.js +0 -86
  348. package/dist/scripts/src/components/NestedApp/NestedAppNative.js +0 -231
  349. package/dist/scripts/src/components/NestedApp/Tooltip.js +0 -46
  350. package/dist/scripts/src/components/NestedApp/defaultProps.js +0 -12
  351. package/dist/scripts/src/components/NestedApp/utils.js +0 -67
  352. package/dist/scripts/src/components/NoResult/NoResult.js +0 -46
  353. package/dist/scripts/src/components/NoResult/NoResult.spec.js +0 -863
  354. package/dist/scripts/src/components/NoResult/NoResultNative.js +0 -31
  355. package/dist/scripts/src/components/NumberBox/NumberBox.js +0 -123
  356. package/dist/scripts/src/components/NumberBox/NumberBox.spec.js +0 -979
  357. package/dist/scripts/src/components/NumberBox/NumberBoxNative.js +0 -513
  358. package/dist/scripts/src/components/NumberBox/numberbox-abstractions.js +0 -109
  359. package/dist/scripts/src/components/Option/Option.js +0 -44
  360. package/dist/scripts/src/components/Option/Option.spec.js +0 -474
  361. package/dist/scripts/src/components/Option/OptionNative.js +0 -29
  362. package/dist/scripts/src/components/Option/OptionTypeProvider.js +0 -16
  363. package/dist/scripts/src/components/PageMetaTitle/PageMetaTilteNative.js +0 -13
  364. package/dist/scripts/src/components/PageMetaTitle/PageMetaTitle.js +0 -22
  365. package/dist/scripts/src/components/PageMetaTitle/PageMetaTitle.spec.js +0 -80
  366. package/dist/scripts/src/components/Pages/Pages.js +0 -54
  367. package/dist/scripts/src/components/Pages/PagesNative.js +0 -57
  368. package/dist/scripts/src/components/Pagination/Pagination.js +0 -107
  369. package/dist/scripts/src/components/Pagination/Pagination.spec.js +0 -1008
  370. package/dist/scripts/src/components/Pagination/PaginationNative.js +0 -157
  371. package/dist/scripts/src/components/PositionedContainer/PositionedContainer.js +0 -24
  372. package/dist/scripts/src/components/PositionedContainer/PositionedContainerNative.js +0 -14
  373. package/dist/scripts/src/components/ProfileMenu/ProfileMenu.js +0 -20
  374. package/dist/scripts/src/components/ProgressBar/ProgressBar.js +0 -38
  375. package/dist/scripts/src/components/ProgressBar/ProgressBar.spec.js +0 -166
  376. package/dist/scripts/src/components/ProgressBar/ProgressBarNative.js +0 -28
  377. package/dist/scripts/src/components/Queue/Queue.js +0 -85
  378. package/dist/scripts/src/components/Queue/Queue.spec.js +0 -624
  379. package/dist/scripts/src/components/Queue/QueueNative.js +0 -342
  380. package/dist/scripts/src/components/Queue/queueActions.js +0 -87
  381. package/dist/scripts/src/components/RadioGroup/RadioGroup.js +0 -61
  382. package/dist/scripts/src/components/RadioGroup/RadioGroup.spec.js +0 -490
  383. package/dist/scripts/src/components/RadioGroup/RadioGroupNative.js +0 -158
  384. package/dist/scripts/src/components/RadioGroup/RadioItem.js +0 -28
  385. package/dist/scripts/src/components/RadioGroup/RadioItemNative.js +0 -62
  386. package/dist/scripts/src/components/RealTimeAdapter/RealTimeAdapter.js +0 -24
  387. package/dist/scripts/src/components/RealTimeAdapter/RealTimeAdapterNative.js +0 -135
  388. package/dist/scripts/src/components/Redirect/Redirect.js +0 -31
  389. package/dist/scripts/src/components/Redirect/Redirect.spec.js +0 -527
  390. package/dist/scripts/src/components/ResponsiveBar/ResponsiveBar.js +0 -60
  391. package/dist/scripts/src/components/ResponsiveBar/ResponsiveBar.spec.js +0 -76
  392. package/dist/scripts/src/components/ResponsiveBar/ResponsiveBarNative.js +0 -313
  393. package/dist/scripts/src/components/Select/HiddenOption.js +0 -20
  394. package/dist/scripts/src/components/Select/OptionContext.js +0 -12
  395. package/dist/scripts/src/components/Select/Select.js +0 -131
  396. package/dist/scripts/src/components/Select/Select.spec.js +0 -763
  397. package/dist/scripts/src/components/Select/SelectContext.js +0 -16
  398. package/dist/scripts/src/components/Select/SelectNative.js +0 -440
  399. package/dist/scripts/src/components/SelectionStore/SelectionStore.js +0 -25
  400. package/dist/scripts/src/components/SelectionStore/SelectionStoreNative.js +0 -103
  401. package/dist/scripts/src/components/Slider/Slider.js +0 -115
  402. package/dist/scripts/src/components/Slider/Slider.spec.js +0 -677
  403. package/dist/scripts/src/components/Slider/SliderNative.js +0 -237
  404. package/dist/scripts/src/components/Slot/Slot.js +0 -17
  405. package/dist/scripts/src/components/Slot/Slot.spec.js +0 -368
  406. package/dist/scripts/src/components/SlotItem.js +0 -32
  407. package/dist/scripts/src/components/SpaceFiller/SpaceFiller.js +0 -20
  408. package/dist/scripts/src/components/SpaceFiller/SpaceFiller.spec.js +0 -184
  409. package/dist/scripts/src/components/SpaceFiller/SpaceFillerNative.js +0 -10
  410. package/dist/scripts/src/components/Spinner/Spinner.js +0 -39
  411. package/dist/scripts/src/components/Spinner/Spinner.spec.js +0 -161
  412. package/dist/scripts/src/components/Spinner/SpinnerNative.js +0 -48
  413. package/dist/scripts/src/components/Splitter/HSplitter.spec.js +0 -104
  414. package/dist/scripts/src/components/Splitter/Splitter.js +0 -163
  415. package/dist/scripts/src/components/Splitter/Splitter.spec.js +0 -856
  416. package/dist/scripts/src/components/Splitter/SplitterNative.js +0 -205
  417. package/dist/scripts/src/components/Splitter/VSplitter.spec.js +0 -104
  418. package/dist/scripts/src/components/Splitter/utils.js +0 -22
  419. package/dist/scripts/src/components/Stack/CHStack.spec.js +0 -86
  420. package/dist/scripts/src/components/Stack/CVStack.spec.js +0 -86
  421. package/dist/scripts/src/components/Stack/HStack.spec.js +0 -67
  422. package/dist/scripts/src/components/Stack/Stack.js +0 -156
  423. package/dist/scripts/src/components/Stack/Stack.spec.js +0 -654
  424. package/dist/scripts/src/components/Stack/StackNative.js +0 -45
  425. package/dist/scripts/src/components/Stack/VStack.spec.js +0 -67
  426. package/dist/scripts/src/components/StickyBox/StickyBox.js +0 -34
  427. package/dist/scripts/src/components/StickyBox/StickyBoxNative.js +0 -42
  428. package/dist/scripts/src/components/Switch/Switch.js +0 -80
  429. package/dist/scripts/src/components/Switch/Switch.spec.js +0 -834
  430. package/dist/scripts/src/components/Table/Table.js +0 -268
  431. package/dist/scripts/src/components/Table/Table.spec.js +0 -827
  432. package/dist/scripts/src/components/Table/TableNative.js +0 -670
  433. package/dist/scripts/src/components/Table/doc-resources/list-component-data.js +0 -53
  434. package/dist/scripts/src/components/Table/useRowSelection.js +0 -454
  435. package/dist/scripts/src/components/TableOfContents/TableOfContents.js +0 -76
  436. package/dist/scripts/src/components/TableOfContents/TableOfContents.spec.js +0 -838
  437. package/dist/scripts/src/components/TableOfContents/TableOfContentsNative.js +0 -81
  438. package/dist/scripts/src/components/Tabs/TabContext.js +0 -58
  439. package/dist/scripts/src/components/Tabs/TabItem.js +0 -44
  440. package/dist/scripts/src/components/Tabs/TabItemNative.js +0 -53
  441. package/dist/scripts/src/components/Tabs/Tabs.js +0 -95
  442. package/dist/scripts/src/components/Tabs/Tabs.spec.js +0 -1237
  443. package/dist/scripts/src/components/Tabs/TabsNative.js +0 -137
  444. package/dist/scripts/src/components/Text/Text.js +0 -181
  445. package/dist/scripts/src/components/Text/Text.spec.js +0 -1676
  446. package/dist/scripts/src/components/Text/TextNative.js +0 -244
  447. package/dist/scripts/src/components/TextArea/TextArea.js +0 -103
  448. package/dist/scripts/src/components/TextArea/TextArea.spec.js +0 -886
  449. package/dist/scripts/src/components/TextArea/TextAreaNative.js +0 -196
  450. package/dist/scripts/src/components/TextArea/TextAreaResizable.js +0 -73
  451. package/dist/scripts/src/components/TextArea/useComposedRef.js +0 -60
  452. package/dist/scripts/src/components/TextBox/TextBox.js +0 -133
  453. package/dist/scripts/src/components/TextBox/TextBox.spec.js +0 -758
  454. package/dist/scripts/src/components/TextBox/TextBoxNative.js +0 -142
  455. package/dist/scripts/src/components/Theme/NotificationToast.js +0 -64
  456. package/dist/scripts/src/components/Theme/Theme.js +0 -47
  457. package/dist/scripts/src/components/Theme/Theme.spec.js +0 -390
  458. package/dist/scripts/src/components/Theme/ThemeNative.js +0 -162
  459. package/dist/scripts/src/components/TimeInput/TimeInput.js +0 -149
  460. package/dist/scripts/src/components/TimeInput/TimeInput.spec.js +0 -1236
  461. package/dist/scripts/src/components/TimeInput/TimeInputNative.js +0 -650
  462. package/dist/scripts/src/components/TimeInput/utils.js +0 -197
  463. package/dist/scripts/src/components/Timer/Timer.js +0 -62
  464. package/dist/scripts/src/components/Timer/Timer.spec.js +0 -328
  465. package/dist/scripts/src/components/Timer/TimerNative.js +0 -178
  466. package/dist/scripts/src/components/Toggle/Toggle.js +0 -172
  467. package/dist/scripts/src/components/ToneChangerButton/ToneChangerButton.js +0 -63
  468. package/dist/scripts/src/components/ToneChangerButton/ToneChangerButton.spec.js +0 -414
  469. package/dist/scripts/src/components/ToneSwitch/ToneSwitch.js +0 -51
  470. package/dist/scripts/src/components/ToneSwitch/ToneSwitch.spec.js +0 -89
  471. package/dist/scripts/src/components/ToneSwitch/ToneSwitchNative.js +0 -42
  472. package/dist/scripts/src/components/Tooltip/Tooltip.js +0 -118
  473. package/dist/scripts/src/components/Tooltip/Tooltip.spec.js +0 -418
  474. package/dist/scripts/src/components/Tooltip/TooltipNative.js +0 -160
  475. package/dist/scripts/src/components/Tree/Tree-dynamic.spec.js +0 -2894
  476. package/dist/scripts/src/components/Tree/Tree-icons.spec.js +0 -206
  477. package/dist/scripts/src/components/Tree/Tree.spec.js +0 -2839
  478. package/dist/scripts/src/components/Tree/TreeComponent.js +0 -324
  479. package/dist/scripts/src/components/Tree/TreeNative.js +0 -1129
  480. package/dist/scripts/src/components/Tree/testData.js +0 -296
  481. package/dist/scripts/src/components/TreeDisplay/TreeDisplay.js +0 -49
  482. package/dist/scripts/src/components/TreeDisplay/TreeDisplayNative.js +0 -104
  483. package/dist/scripts/src/components/ValidationSummary/ValidationSummary.js +0 -64
  484. package/dist/scripts/src/components/VisuallyHidden.js +0 -21
  485. package/dist/scripts/src/components/abstractions.js +0 -341
  486. package/dist/scripts/src/components/chart-color-schemes.js +0 -43
  487. package/dist/scripts/src/components/collectedComponentMetadata.js +0 -316
  488. package/dist/scripts/src/components/component-utils.js +0 -29
  489. package/dist/scripts/src/components/container-helpers.js +0 -26
  490. package/dist/scripts/src/components/metadata-helpers.js +0 -269
  491. package/dist/scripts/src/components-core/ApiBoundComponent.js +0 -227
  492. package/dist/scripts/src/components-core/AppContext.js +0 -16
  493. package/dist/scripts/src/components-core/ComponentDecorator.js +0 -74
  494. package/dist/scripts/src/components-core/ComponentViewer.js +0 -69
  495. package/dist/scripts/src/components-core/CompoundComponent.js +0 -145
  496. package/dist/scripts/src/components-core/DebugViewProvider.js +0 -43
  497. package/dist/scripts/src/components-core/EngineError.js +0 -91
  498. package/dist/scripts/src/components-core/InspectorContext.js +0 -248
  499. package/dist/scripts/src/components-core/LoaderComponent.js +0 -109
  500. package/dist/scripts/src/components-core/RestApiProxy.js +0 -468
  501. package/dist/scripts/src/components-core/StandaloneApp.js +0 -821
  502. package/dist/scripts/src/components-core/StandaloneExtensionManager.js +0 -44
  503. package/dist/scripts/src/components-core/TableOfContentsContext.js +0 -168
  504. package/dist/scripts/src/components-core/abstractions/ComponentRenderer.js +0 -2
  505. package/dist/scripts/src/components-core/abstractions/LoaderRenderer.js +0 -2
  506. package/dist/scripts/src/components-core/abstractions/standalone.js +0 -2
  507. package/dist/scripts/src/components-core/abstractions/treeAbstractions.js +0 -2
  508. package/dist/scripts/src/components-core/action/APICall.js +0 -284
  509. package/dist/scripts/src/components-core/action/FileDownloadAction.js +0 -80
  510. package/dist/scripts/src/components-core/action/FileUploadAction.js +0 -88
  511. package/dist/scripts/src/components-core/action/NavigateAction.js +0 -20
  512. package/dist/scripts/src/components-core/action/TimedAction.js +0 -21
  513. package/dist/scripts/src/components-core/action/actions.js +0 -15
  514. package/dist/scripts/src/components-core/appContext/date-functions.js +0 -24
  515. package/dist/scripts/src/components-core/appContext/math-function.js +0 -27
  516. package/dist/scripts/src/components-core/appContext/misc-utils.js +0 -14
  517. package/dist/scripts/src/components-core/behaviors/Behavior.js +0 -2
  518. package/dist/scripts/src/components-core/behaviors/CoreBehaviors.js +0 -201
  519. package/dist/scripts/src/components-core/component-hooks.js +0 -25
  520. package/dist/scripts/src/components-core/constants.js +0 -18
  521. package/dist/scripts/src/components-core/descriptorHelper.js +0 -96
  522. package/dist/scripts/src/components-core/devtools/InspectorDialog.js +0 -135
  523. package/dist/scripts/src/components-core/devtools/InspectorDialogVisibilityContext.js +0 -8
  524. package/dist/scripts/src/components-core/event-handlers.js +0 -46
  525. package/dist/scripts/src/components-core/interception/ApiInterceptor.js +0 -247
  526. package/dist/scripts/src/components-core/interception/ApiInterceptorProvider.js +0 -167
  527. package/dist/scripts/src/components-core/interception/Backend.js +0 -141
  528. package/dist/scripts/src/components-core/interception/Errors.js +0 -129
  529. package/dist/scripts/src/components-core/interception/InMemoryDb.js +0 -41
  530. package/dist/scripts/src/components-core/interception/IndexedDb.js +0 -205
  531. package/dist/scripts/src/components-core/interception/ReadonlyCollection.js +0 -145
  532. package/dist/scripts/src/components-core/interception/abstractions.js +0 -2
  533. package/dist/scripts/src/components-core/interception/apiInterceptorWorker.js +0 -44
  534. package/dist/scripts/src/components-core/interception/initMock.js +0 -20
  535. package/dist/scripts/src/components-core/interception/useApiInterceptorContext.js +0 -9
  536. package/dist/scripts/src/components-core/loader/ApiLoader.js +0 -54
  537. package/dist/scripts/src/components-core/loader/DataLoader.js +0 -330
  538. package/dist/scripts/src/components-core/loader/ExternalDataLoader.js +0 -60
  539. package/dist/scripts/src/components-core/loader/Loader.js +0 -159
  540. package/dist/scripts/src/components-core/loader/MockLoaderRenderer.js +0 -43
  541. package/dist/scripts/src/components-core/loader/PageableLoader.js +0 -272
  542. package/dist/scripts/src/components-core/markup-check.js +0 -279
  543. package/dist/scripts/src/components-core/parts.js +0 -11
  544. package/dist/scripts/src/components-core/renderers.js +0 -76
  545. package/dist/scripts/src/components-core/rendering/AppContent.js +0 -400
  546. package/dist/scripts/src/components-core/rendering/AppRoot.js +0 -87
  547. package/dist/scripts/src/components-core/rendering/AppWrapper.js +0 -49
  548. package/dist/scripts/src/components-core/rendering/ComponentAdapter.js +0 -380
  549. package/dist/scripts/src/components-core/rendering/ComponentWrapper.js +0 -166
  550. package/dist/scripts/src/components-core/rendering/Container.js +0 -621
  551. package/dist/scripts/src/components-core/rendering/ContainerWrapper.js +0 -94
  552. package/dist/scripts/src/components-core/rendering/ErrorBoundary.js +0 -65
  553. package/dist/scripts/src/components-core/rendering/InvalidComponent.js +0 -17
  554. package/dist/scripts/src/components-core/rendering/StandaloneComponent.js +0 -39
  555. package/dist/scripts/src/components-core/rendering/StateContainer.js +0 -350
  556. package/dist/scripts/src/components-core/rendering/UnknownComponent.js +0 -15
  557. package/dist/scripts/src/components-core/rendering/buildProxy.js +0 -58
  558. package/dist/scripts/src/components-core/rendering/collectFnVarDeps.js +0 -49
  559. package/dist/scripts/src/components-core/rendering/containers.js +0 -19
  560. package/dist/scripts/src/components-core/rendering/nodeUtils.js +0 -6
  561. package/dist/scripts/src/components-core/rendering/reducer.js +0 -160
  562. package/dist/scripts/src/components-core/rendering/renderChild.js +0 -82
  563. package/dist/scripts/src/components-core/rendering/valueExtractor.js +0 -216
  564. package/dist/scripts/src/components-core/reportEngineError.js +0 -62
  565. package/dist/scripts/src/components-core/script-runner/AttributeValueParser.js +0 -117
  566. package/dist/scripts/src/components-core/script-runner/BindingTreeEvaluationContext.js +0 -33
  567. package/dist/scripts/src/components-core/script-runner/ParameterParser.js +0 -117
  568. package/dist/scripts/src/components-core/script-runner/ScriptingSourceTree.js +0 -45
  569. package/dist/scripts/src/components-core/script-runner/asyncProxy.js +0 -96
  570. package/dist/scripts/src/components-core/script-runner/bannedFunctions.js +0 -34
  571. package/dist/scripts/src/components-core/script-runner/eval-tree-async.js +0 -613
  572. package/dist/scripts/src/components-core/script-runner/eval-tree-common.js +0 -439
  573. package/dist/scripts/src/components-core/script-runner/eval-tree-sync.js +0 -522
  574. package/dist/scripts/src/components-core/script-runner/process-statement-async.js +0 -761
  575. package/dist/scripts/src/components-core/script-runner/process-statement-common.js +0 -208
  576. package/dist/scripts/src/components-core/script-runner/process-statement-sync.js +0 -746
  577. package/dist/scripts/src/components-core/script-runner/simplify-expression.js +0 -386
  578. package/dist/scripts/src/components-core/script-runner/statement-queue.js +0 -63
  579. package/dist/scripts/src/components-core/script-runner/visitors.js +0 -369
  580. package/dist/scripts/src/components-core/theming/StyleContext.js +0 -133
  581. package/dist/scripts/src/components-core/theming/StyleRegistry.js +0 -171
  582. package/dist/scripts/src/components-core/theming/ThemeContext.js +0 -53
  583. package/dist/scripts/src/components-core/theming/ThemeProvider.js +0 -342
  584. package/dist/scripts/src/components-core/theming/component-layout-resolver.js +0 -153
  585. package/dist/scripts/src/components-core/theming/extendThemeUtils.js +0 -47
  586. package/dist/scripts/src/components-core/theming/hvar.js +0 -105
  587. package/dist/scripts/src/components-core/theming/layout-resolver.js +0 -388
  588. package/dist/scripts/src/components-core/theming/parse-layout-props.js +0 -136
  589. package/dist/scripts/src/components-core/theming/themeVars.js +0 -62
  590. package/dist/scripts/src/components-core/theming/themes/base-utils.js +0 -15
  591. package/dist/scripts/src/components-core/theming/themes/palette.js +0 -57
  592. package/dist/scripts/src/components-core/theming/themes/root.js +0 -434
  593. package/dist/scripts/src/components-core/theming/themes/solid.js +0 -16
  594. package/dist/scripts/src/components-core/theming/themes/theme-colors.js +0 -561
  595. package/dist/scripts/src/components-core/theming/themes/xmlui.js +0 -57
  596. package/dist/scripts/src/components-core/theming/transformThemeVars.js +0 -733
  597. package/dist/scripts/src/components-core/theming/utils.js +0 -31
  598. package/dist/scripts/src/components-core/utils/DataLoaderQueryKeyGenerator.js +0 -41
  599. package/dist/scripts/src/components-core/utils/LruCache.js +0 -184
  600. package/dist/scripts/src/components-core/utils/actionUtils.js +0 -32
  601. package/dist/scripts/src/components-core/utils/audio-utils.js +0 -83
  602. package/dist/scripts/src/components-core/utils/base64-utils.js +0 -124
  603. package/dist/scripts/src/components-core/utils/compound-utils.js +0 -11
  604. package/dist/scripts/src/components-core/utils/css-utils.js +0 -179
  605. package/dist/scripts/src/components-core/utils/date-utils.js +0 -186
  606. package/dist/scripts/src/components-core/utils/extractParam.js +0 -281
  607. package/dist/scripts/src/components-core/utils/hooks.js +0 -400
  608. package/dist/scripts/src/components-core/utils/mergeProps.js +0 -45
  609. package/dist/scripts/src/components-core/utils/misc.js +0 -539
  610. package/dist/scripts/src/components-core/utils/request-params.js +0 -70
  611. package/dist/scripts/src/components-core/utils/statementUtils.js +0 -224
  612. package/dist/scripts/src/components-core/utils/treeUtils.js +0 -226
  613. package/dist/scripts/src/components-core/xmlui-parser.js +0 -548
  614. package/dist/scripts/src/index-standalone.js +0 -61
  615. package/dist/scripts/src/index.js +0 -158
  616. package/dist/scripts/src/language-server/server-common.js +0 -152
  617. package/dist/scripts/src/language-server/server-web-worker.js +0 -47
  618. package/dist/scripts/src/language-server/server.js +0 -42
  619. package/dist/scripts/src/language-server/services/common/docs-generation.js +0 -73
  620. package/dist/scripts/src/language-server/services/common/lsp-utils.js +0 -9
  621. package/dist/scripts/src/language-server/services/common/metadata-utils.js +0 -157
  622. package/dist/scripts/src/language-server/services/common/syntax-node-utilities.js +0 -127
  623. package/dist/scripts/src/language-server/services/completion.js +0 -288
  624. package/dist/scripts/src/language-server/services/diagnostic.js +0 -19
  625. package/dist/scripts/src/language-server/services/format.js +0 -569
  626. package/dist/scripts/src/language-server/services/hover.js +0 -164
  627. package/dist/scripts/src/language-server/xmlui-metadata-generated.js +0 -16276
  628. package/dist/scripts/src/logging/LoggerContext.js +0 -22
  629. package/dist/scripts/src/logging/LoggerInitializer.js +0 -14
  630. package/dist/scripts/src/logging/LoggerService.js +0 -60
  631. package/dist/scripts/src/logging/xmlui.js +0 -21
  632. package/dist/scripts/src/parsers/common/GenericToken.js +0 -2
  633. package/dist/scripts/src/parsers/common/InputStream.js +0 -59
  634. package/dist/scripts/src/parsers/common/utils.js +0 -19
  635. package/dist/scripts/src/parsers/scripting/Lexer.js +0 -1097
  636. package/dist/scripts/src/parsers/scripting/Parser.js +0 -2638
  637. package/dist/scripts/src/parsers/scripting/ParserError.js +0 -47
  638. package/dist/scripts/src/parsers/scripting/ScriptingNodeTypes.js +0 -50
  639. package/dist/scripts/src/parsers/scripting/TokenTrait.js +0 -108
  640. package/dist/scripts/src/parsers/scripting/TokenType.js +0 -109
  641. package/dist/scripts/src/parsers/scripting/code-behind-collect.js +0 -101
  642. package/dist/scripts/src/parsers/scripting/modules.js +0 -105
  643. package/dist/scripts/src/parsers/scripting/tree-visitor.js +0 -601
  644. package/dist/scripts/src/parsers/style-parser/StyleInputStream.js +0 -39
  645. package/dist/scripts/src/parsers/style-parser/StyleLexer.js +0 -623
  646. package/dist/scripts/src/parsers/style-parser/StyleParser.js +0 -453
  647. package/dist/scripts/src/parsers/style-parser/errors.js +0 -37
  648. package/dist/scripts/src/parsers/style-parser/source-tree.js +0 -2
  649. package/dist/scripts/src/parsers/style-parser/tokens.js +0 -43
  650. package/dist/scripts/src/parsers/xmlui-parser/CharacterCodes.js +0 -136
  651. package/dist/scripts/src/parsers/xmlui-parser/ParserError.js +0 -60
  652. package/dist/scripts/src/parsers/xmlui-parser/diagnostics.js +0 -172
  653. package/dist/scripts/src/parsers/xmlui-parser/fileExtensions.js +0 -6
  654. package/dist/scripts/src/parsers/xmlui-parser/index.js +0 -29
  655. package/dist/scripts/src/parsers/xmlui-parser/lint.js +0 -165
  656. package/dist/scripts/src/parsers/xmlui-parser/parser.js +0 -627
  657. package/dist/scripts/src/parsers/xmlui-parser/scanner.js +0 -415
  658. package/dist/scripts/src/parsers/xmlui-parser/syntax-kind.js +0 -123
  659. package/dist/scripts/src/parsers/xmlui-parser/syntax-node.js +0 -83
  660. package/dist/scripts/src/parsers/xmlui-parser/transform.js +0 -1131
  661. package/dist/scripts/src/parsers/xmlui-parser/utils.js +0 -83
  662. package/dist/scripts/src/parsers/xmlui-parser/xmlui-serializer.js +0 -582
  663. package/dist/scripts/src/parsers/xmlui-parser/xmlui-tree.js +0 -2
  664. package/dist/scripts/src/syntax/monaco/grammar.monacoLanguage.js +0 -286
  665. package/dist/scripts/src/syntax/monaco/index.js +0 -14
  666. package/dist/scripts/src/syntax/monaco/xmlui-dark.js +0 -25
  667. package/dist/scripts/src/syntax/monaco/xmlui-light.js +0 -25
  668. package/dist/scripts/src/syntax/monaco/xmluiscript.monacoLanguage.js +0 -310
  669. package/dist/scripts/src/syntax/textMate/index.js +0 -14
  670. package/dist/scripts/src/syntax/textMate/xmlui-dark.json +0 -631
  671. package/dist/scripts/src/syntax/textMate/xmlui-light.json +0 -565
  672. package/dist/scripts/src/syntax/textMate/xmlui.json +0 -564
  673. package/dist/scripts/src/syntax/textMate/xmlui.tmLanguage.json +0 -341
  674. package/dist/scripts/src/testing/ComponentDrivers.js +0 -1380
  675. package/dist/scripts/src/testing/assertions.js +0 -444
  676. package/dist/scripts/src/testing/component-test-helpers.js +0 -373
  677. package/dist/scripts/src/testing/drivers/DateInputDriver.js +0 -19
  678. package/dist/scripts/src/testing/drivers/ModalDialogDriver.js +0 -10
  679. package/dist/scripts/src/testing/drivers/NumberBoxDriver.js +0 -44
  680. package/dist/scripts/src/testing/drivers/TextBoxDriver.js +0 -20
  681. package/dist/scripts/src/testing/drivers/TimeInputDriver.js +0 -22
  682. package/dist/scripts/src/testing/drivers/TimerDriver.js +0 -64
  683. package/dist/scripts/src/testing/drivers/TreeDriver.js +0 -13
  684. package/dist/scripts/src/testing/drivers/index.js +0 -9
  685. package/dist/scripts/src/testing/fixtures.js +0 -519
  686. package/dist/scripts/src/testing/index.js +0 -69
  687. package/dist/scripts/src/testing/infrastructure/TestBed.js +0 -17
  688. package/dist/scripts/src/testing/infrastructure/main.js +0 -9
  689. package/dist/scripts/src/testing/infrastructure/public/mockServiceWorker.js +0 -266
  690. package/dist/scripts/src/testing/themed-app-test-helpers.js +0 -133
@@ -1,2638 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Parser = void 0;
4
- exports.createXmlUiTreeNodeId = createXmlUiTreeNodeId;
5
- const ScriptingSourceTree_1 = require("../../components-core/script-runner/ScriptingSourceTree");
6
- const InputStream_1 = require("../common/InputStream");
7
- const Lexer_1 = require("./Lexer");
8
- const ParserError_1 = require("./ParserError");
9
- const TokenTrait_1 = require("./TokenTrait");
10
- const TokenType_1 = require("./TokenType");
11
- /**
12
- * States of the string parsing
13
- */
14
- var StrParseState;
15
- (function (StrParseState) {
16
- StrParseState[StrParseState["Normal"] = 0] = "Normal";
17
- StrParseState[StrParseState["Backslash"] = 1] = "Backslash";
18
- StrParseState[StrParseState["X"] = 2] = "X";
19
- StrParseState[StrParseState["Xh"] = 3] = "Xh";
20
- StrParseState[StrParseState["UX1"] = 4] = "UX1";
21
- StrParseState[StrParseState["UX2"] = 5] = "UX2";
22
- StrParseState[StrParseState["UX3"] = 6] = "UX3";
23
- StrParseState[StrParseState["UX4"] = 7] = "UX4";
24
- StrParseState[StrParseState["Ucp1"] = 8] = "Ucp1";
25
- StrParseState[StrParseState["Ucp2"] = 9] = "Ucp2";
26
- StrParseState[StrParseState["Ucp3"] = 10] = "Ucp3";
27
- StrParseState[StrParseState["Ucp4"] = 11] = "Ucp4";
28
- StrParseState[StrParseState["Ucp5"] = 12] = "Ucp5";
29
- StrParseState[StrParseState["Ucp6"] = 13] = "Ucp6";
30
- StrParseState[StrParseState["UcpTail"] = 14] = "UcpTail";
31
- })(StrParseState || (StrParseState = {}));
32
- let lastNodeId = 0;
33
- function createXmlUiTreeNodeId() {
34
- return ++lastNodeId;
35
- }
36
- /**
37
- * This class parses a binding expression and transforms it into an evaluable expression tree
38
- */
39
- class Parser {
40
- /**
41
- * Initializes the parser with the specified source code
42
- * @param source Source code to parse
43
- */
44
- constructor(source) {
45
- // --- Keep track of error messages
46
- this._parseErrors = [];
47
- // --- Indicates the parsing level
48
- this._statementLevel = 0;
49
- this._lexer = new Lexer_1.Lexer(new InputStream_1.InputStream(source !== null && source !== void 0 ? source : ""));
50
- }
51
- /**
52
- * Sets the source code to parse
53
- * @param source Source code to parse
54
- */
55
- setSource(source) {
56
- this._lexer = new Lexer_1.Lexer(new InputStream_1.InputStream(source));
57
- }
58
- /**
59
- * The errors raised during the parse phase
60
- */
61
- get errors() {
62
- return this._parseErrors;
63
- }
64
- /**
65
- * Gets the current token
66
- */
67
- get current() {
68
- return this._lexer.peek();
69
- }
70
- /**
71
- * Checks if we're at the end of the expression
72
- */
73
- get isEof() {
74
- return this._lexer.peek().type === TokenType_1.TokenType.Eof;
75
- }
76
- /**
77
- * Gets the characters remaining after parsing
78
- */
79
- getTail() {
80
- return this._lexer.getTail();
81
- }
82
- // ==========================================================================
83
- // Statement parsing
84
- /**
85
- * Parses a list of statements:
86
- *
87
- * statements
88
- * : statement*
89
- * ;
90
- *
91
- * statement
92
- * : emptyStatement
93
- * | expressionStatement
94
- * | letStatement
95
- * | returnStatement
96
- * ;
97
- */
98
- parseStatements() {
99
- this._statementLevel = 0;
100
- const statements = [];
101
- while (!this.isEof) {
102
- const statement = this.parseStatement();
103
- if (!statement)
104
- return null;
105
- statements.push(statement);
106
- if (statement.type !== ScriptingSourceTree_1.T_EMPTY_STATEMENT) {
107
- this.skipToken(TokenType_1.TokenType.Semicolon);
108
- }
109
- }
110
- return statements;
111
- }
112
- /**
113
- * Parses a single statement
114
- */
115
- parseStatement(allowSequence = true) {
116
- this._statementLevel++;
117
- try {
118
- const startToken = this._lexer.peek();
119
- switch (startToken.type) {
120
- case TokenType_1.TokenType.Semicolon:
121
- return this.parseEmptyStatement();
122
- case TokenType_1.TokenType.Let:
123
- return this.parseLetStatement();
124
- case TokenType_1.TokenType.Const:
125
- return this.parseConstStatement();
126
- case TokenType_1.TokenType.Var:
127
- return this.parseVarStatement();
128
- case TokenType_1.TokenType.LBrace:
129
- return this.parseBlockStatement();
130
- case TokenType_1.TokenType.If:
131
- return this.parseIfStatement();
132
- case TokenType_1.TokenType.Do:
133
- return this.parseDoWhileStatement();
134
- case TokenType_1.TokenType.While:
135
- return this.parseWhileStatement();
136
- case TokenType_1.TokenType.Return:
137
- return this.parseReturnStatement();
138
- case TokenType_1.TokenType.Break:
139
- this._lexer.get();
140
- return this.createStatementNode(ScriptingSourceTree_1.T_BREAK_STATEMENT, {}, startToken, startToken);
141
- case TokenType_1.TokenType.Continue:
142
- this._lexer.get();
143
- return this.createStatementNode(ScriptingSourceTree_1.T_CONTINUE_STATEMENT, {}, startToken, startToken);
144
- case TokenType_1.TokenType.For:
145
- return this.parseForStatement();
146
- case TokenType_1.TokenType.Throw:
147
- return this.parseThrowStatement();
148
- case TokenType_1.TokenType.Try:
149
- return this.parseTryStatement();
150
- case TokenType_1.TokenType.Switch:
151
- return this.parseSwitchStatement();
152
- case TokenType_1.TokenType.Function:
153
- return this.parseFunctionDeclaration();
154
- default:
155
- if (this.isExpressionStart(startToken)) {
156
- return this.parseExpressionStatement(allowSequence);
157
- }
158
- this.reportError("W002", startToken, startToken.text);
159
- return null;
160
- }
161
- }
162
- finally {
163
- this._statementLevel--;
164
- }
165
- }
166
- /**
167
- * Parses an empty statement
168
- *
169
- * emptyStatement
170
- * : ";"
171
- * ;
172
- */
173
- parseEmptyStatement() {
174
- const startToken = this._lexer.get();
175
- return this.createStatementNode(ScriptingSourceTree_1.T_EMPTY_STATEMENT, {}, startToken, startToken);
176
- }
177
- /**
178
- * Parses an expression statement
179
- *
180
- * expressionStatement
181
- * : expression
182
- * ;
183
- */
184
- parseExpressionStatement(allowSequence = true) {
185
- const startToken = this._lexer.peek();
186
- const expr = this.getExpression(allowSequence);
187
- return expr
188
- ? this.createStatementNode(ScriptingSourceTree_1.T_EXPRESSION_STATEMENT, {
189
- expr,
190
- }, startToken, expr.endToken)
191
- : null;
192
- }
193
- /**
194
- * Parses a let statement
195
- *
196
- * letStatement
197
- * : "let" id ["=" expression] ("," id ["=" expression])*
198
- * ;
199
- */
200
- parseLetStatement() {
201
- const startToken = this._lexer.get();
202
- let endToken = startToken;
203
- const decls = [];
204
- while (true) {
205
- const declStart = this._lexer.peek();
206
- let declarationProps = {};
207
- if (declStart.type === TokenType_1.TokenType.LBrace) {
208
- // --- This is object destructure
209
- endToken = this._lexer.ahead(1);
210
- const oDestr = this.parseObjectDestructure();
211
- if (oDestr === null)
212
- return null;
213
- declarationProps = {
214
- oDestr,
215
- };
216
- endToken = oDestr.length > 0 ? oDestr[oDestr.length - 1].endToken : endToken;
217
- }
218
- else if (declStart.type === TokenType_1.TokenType.LSquare) {
219
- // --- This is array destructure
220
- endToken = this._lexer.ahead(1);
221
- const aDestr = this.parseArrayDestructure();
222
- if (aDestr === null)
223
- return null;
224
- declarationProps = {
225
- aDestr,
226
- };
227
- endToken = aDestr.length > 0 ? aDestr[aDestr.length - 1].endToken : endToken;
228
- }
229
- else if (declStart.type === TokenType_1.TokenType.Identifier) {
230
- if (declStart.text.startsWith("$")) {
231
- this.reportError("W031");
232
- return null;
233
- }
234
- endToken = this._lexer.get();
235
- declarationProps = {
236
- id: declStart.text,
237
- };
238
- }
239
- else {
240
- this.reportError("W003");
241
- return null;
242
- }
243
- // --- Optional initialization
244
- const initToken = this._lexer.peek();
245
- let expr = null;
246
- if (initToken.type === TokenType_1.TokenType.Assignment) {
247
- this._lexer.get();
248
- expr = this.getExpression(false);
249
- if (expr === null)
250
- return null;
251
- declarationProps.expr = expr;
252
- endToken = expr.endToken;
253
- }
254
- else if (declarationProps.aDestr || declarationProps.oDestr) {
255
- this.reportError("W009", initToken);
256
- return null;
257
- }
258
- // --- New declaration reached
259
- decls.push(this.createExpressionNode(ScriptingSourceTree_1.T_VAR_DECLARATION, declarationProps, declStart, endToken));
260
- // --- Check for more declarations
261
- if (this._lexer.peek().type !== TokenType_1.TokenType.Comma)
262
- break;
263
- this._lexer.get();
264
- }
265
- // --- Done
266
- return this.createStatementNode(ScriptingSourceTree_1.T_LET_STATEMENT, {
267
- decls,
268
- }, startToken, endToken);
269
- }
270
- /**
271
- * Parses a const statement
272
- *
273
- * constStatement
274
- * : "const" id "=" expression
275
- * ;
276
- */
277
- parseConstStatement() {
278
- const startToken = this._lexer.get();
279
- let endToken = startToken;
280
- const decls = [];
281
- while (true) {
282
- const declStart = this._lexer.peek();
283
- let declarationProps = {};
284
- if (declStart.type === TokenType_1.TokenType.LBrace) {
285
- // --- This is object destructure
286
- endToken = this._lexer.ahead(1);
287
- const oDestr = this.parseObjectDestructure();
288
- if (oDestr === null)
289
- return null;
290
- declarationProps = {
291
- oDestr,
292
- };
293
- endToken = oDestr.length > 0 ? oDestr[oDestr.length - 1].endToken : endToken;
294
- }
295
- else if (declStart.type === TokenType_1.TokenType.LSquare) {
296
- // --- This is array destructure
297
- endToken = this._lexer.ahead(1);
298
- const aDestr = this.parseArrayDestructure();
299
- if (aDestr === null)
300
- return null;
301
- declarationProps = {
302
- aDestr,
303
- };
304
- endToken = aDestr.length > 0 ? aDestr[aDestr.length - 1].endToken : endToken;
305
- }
306
- else if (declStart.type === TokenType_1.TokenType.Identifier) {
307
- if (declStart.text.startsWith("$")) {
308
- this.reportError("W031");
309
- return null;
310
- }
311
- endToken = this._lexer.get();
312
- declarationProps = {
313
- id: declStart.text,
314
- };
315
- }
316
- else {
317
- this.reportError("W003");
318
- return null;
319
- }
320
- this.expectToken(TokenType_1.TokenType.Assignment);
321
- const expr = this.getExpression(false);
322
- if (expr === null)
323
- return null;
324
- declarationProps.expr = expr;
325
- endToken = expr.endToken;
326
- // --- New declaration reached
327
- decls.push(this.createExpressionNode(ScriptingSourceTree_1.T_VAR_DECLARATION, declarationProps, declStart, endToken));
328
- // --- Check for more declarations
329
- if (this._lexer.peek().type !== TokenType_1.TokenType.Comma)
330
- break;
331
- this._lexer.get();
332
- }
333
- // --- Done
334
- return this.createStatementNode(ScriptingSourceTree_1.T_CONST_STATEMENT, {
335
- decls,
336
- }, startToken, endToken);
337
- }
338
- /**
339
- * Parses a var statement
340
- *
341
- * constStatement
342
- * : "var" id "=" expression
343
- * ;
344
- */
345
- parseVarStatement() {
346
- const startToken = this._lexer.get();
347
- let endToken = startToken;
348
- const decls = [];
349
- while (true) {
350
- const declStart = this._lexer.peek();
351
- let declarationProps = {};
352
- if (declStart.type === TokenType_1.TokenType.Identifier) {
353
- if (declStart.text.startsWith("$")) {
354
- this.reportError("W031");
355
- return null;
356
- }
357
- endToken = this._lexer.get();
358
- declarationProps = {
359
- id: {
360
- type: ScriptingSourceTree_1.T_IDENTIFIER,
361
- name: declStart.text,
362
- startToken: declStart,
363
- endToken,
364
- },
365
- };
366
- }
367
- else {
368
- this.reportError("W003");
369
- return null;
370
- }
371
- // --- Mandatory initialization
372
- this.expectToken(TokenType_1.TokenType.Assignment);
373
- const expr = this.getExpression(false);
374
- if (expr === null)
375
- return null;
376
- declarationProps.expr = expr;
377
- endToken = expr.endToken;
378
- // --- New declaration reached
379
- decls.push(this.createExpressionNode(ScriptingSourceTree_1.T_REACTIVE_VAR_DECLARATION, declarationProps, declStart, endToken));
380
- // --- Check for more declarations
381
- if (this._lexer.peek().type !== TokenType_1.TokenType.Comma)
382
- break;
383
- this._lexer.get();
384
- }
385
- // --- Done
386
- return this.createStatementNode(ScriptingSourceTree_1.T_VAR_STATEMENT, {
387
- decls,
388
- }, startToken, endToken);
389
- }
390
- /**
391
- * Parses an object destructure expression
392
- */
393
- parseObjectDestructure() {
394
- const result = [];
395
- // --- Skip the starting left brace
396
- const startToken = this._lexer.get();
397
- let endToken = startToken;
398
- let nextToken = this._lexer.peek();
399
- while (nextToken.type === TokenType_1.TokenType.Identifier) {
400
- // --- Obtain the ID
401
- const id = nextToken.text;
402
- if (id.startsWith("$")) {
403
- this.reportError("W031");
404
- return null;
405
- }
406
- let alias;
407
- let aDestr;
408
- let oDestr;
409
- this._lexer.get();
410
- nextToken = this._lexer.peek();
411
- if (nextToken.type === TokenType_1.TokenType.Colon) {
412
- // --- Check the available cases
413
- this._lexer.get();
414
- nextToken = this._lexer.peek();
415
- if (nextToken.type === TokenType_1.TokenType.Identifier) {
416
- alias = nextToken.text;
417
- endToken = nextToken;
418
- this._lexer.get();
419
- }
420
- else if (nextToken.type === TokenType_1.TokenType.LSquare) {
421
- aDestr = this.parseArrayDestructure();
422
- if (aDestr === null)
423
- return null;
424
- endToken = aDestr[aDestr.length - 1].endToken;
425
- }
426
- else if (nextToken.type === TokenType_1.TokenType.LBrace) {
427
- oDestr = this.parseObjectDestructure();
428
- if (oDestr === null)
429
- return null;
430
- endToken = oDestr[oDestr.length - 1].endToken;
431
- }
432
- }
433
- // --- Check for next segment
434
- nextToken = this._lexer.peek();
435
- if (nextToken.type === TokenType_1.TokenType.Comma || nextToken.type === TokenType_1.TokenType.RBrace) {
436
- result.push(this.createExpressionNode(ScriptingSourceTree_1.T_OBJECT_DESTRUCTURE, { id, alias, aDestr, oDestr }, startToken, endToken));
437
- if (nextToken.type === TokenType_1.TokenType.Comma) {
438
- // --- Skip the delimiter comma
439
- this._lexer.get();
440
- nextToken = this._lexer.peek();
441
- }
442
- }
443
- }
444
- // --- Expect a closing right brace
445
- this.expectToken(TokenType_1.TokenType.RBrace, "W004");
446
- return result;
447
- }
448
- parseArrayDestructure() {
449
- const result = [];
450
- // --- Skip the starting left square
451
- const startToken = this._lexer.get();
452
- let endToken = startToken;
453
- do {
454
- let nextToken = this._lexer.peek();
455
- let id;
456
- let aDestr;
457
- let oDestr;
458
- if (nextToken.type === TokenType_1.TokenType.Identifier) {
459
- id = nextToken.text;
460
- if (id.startsWith("$")) {
461
- this.reportError("W031");
462
- return null;
463
- }
464
- endToken = nextToken;
465
- nextToken = this._lexer.get();
466
- }
467
- else if (nextToken.type === TokenType_1.TokenType.LSquare) {
468
- aDestr = this.parseArrayDestructure();
469
- if (aDestr === null)
470
- return null;
471
- endToken = aDestr[aDestr.length - 1].endToken;
472
- }
473
- else if (nextToken.type === TokenType_1.TokenType.LBrace) {
474
- oDestr = this.parseObjectDestructure();
475
- if (oDestr === null)
476
- return null;
477
- endToken = oDestr[oDestr.length - 1].endToken;
478
- }
479
- nextToken = this._lexer.peek();
480
- if (nextToken.type === TokenType_1.TokenType.Comma) {
481
- // --- Store the segment
482
- result.push(this.createExpressionNode(ScriptingSourceTree_1.T_ARRAY_DESTRUCTURE, { id, aDestr, oDestr }, startToken, endToken));
483
- this._lexer.get();
484
- }
485
- else if (nextToken.type === TokenType_1.TokenType.RSquare) {
486
- if (id || aDestr || oDestr) {
487
- // --- Store a non-empty the segment
488
- result.push(this.createExpressionNode(ScriptingSourceTree_1.T_ARRAY_DESTRUCTURE, { id, aDestr, oDestr }, startToken, endToken));
489
- }
490
- break;
491
- }
492
- else {
493
- this.reportError("W002", nextToken);
494
- return null;
495
- }
496
- } while (true);
497
- // --- Expect a closing right square
498
- this.expectToken(TokenType_1.TokenType.RSquare, "W005");
499
- return result;
500
- }
501
- /**
502
- * Parses a block statement
503
- *
504
- * blockStatement
505
- * : "{" (statement [";"])* "}"
506
- * ;
507
- */
508
- parseBlockStatement() {
509
- const startToken = this._lexer.get();
510
- const stmts = [];
511
- while (this._lexer.peek().type !== TokenType_1.TokenType.RBrace) {
512
- const statement = this.parseStatement();
513
- if (!statement)
514
- return null;
515
- stmts.push(statement);
516
- if (statement.type !== ScriptingSourceTree_1.T_EMPTY_STATEMENT) {
517
- this.skipToken(TokenType_1.TokenType.Semicolon);
518
- }
519
- }
520
- const endToken = this._lexer.get();
521
- return this.createStatementNode(ScriptingSourceTree_1.T_BLOCK_STATEMENT, { stmts }, startToken, endToken);
522
- }
523
- /**
524
- * Parses an if statement
525
- *
526
- * ifStatement
527
- * : "if" "(" expression ")" statement ["else" statement]
528
- * ;
529
- */
530
- parseIfStatement() {
531
- const startToken = this._lexer.get();
532
- let endToken = startToken;
533
- this.expectToken(TokenType_1.TokenType.LParent, "W014");
534
- const cond = this.getExpression();
535
- if (!cond)
536
- return null;
537
- this.expectToken(TokenType_1.TokenType.RParent, "W006");
538
- const thenB = this.parseStatement();
539
- if (!thenB)
540
- return null;
541
- endToken = thenB.endToken;
542
- let elseCanFollow = true;
543
- if (thenB.type !== ScriptingSourceTree_1.T_BLOCK_STATEMENT) {
544
- // --- We need a closing semicolon before else
545
- if (this._lexer.peek().type === TokenType_1.TokenType.Semicolon) {
546
- this._lexer.get();
547
- }
548
- else {
549
- elseCanFollow = false;
550
- }
551
- }
552
- let elseB = null;
553
- if (elseCanFollow && this._lexer.peek().type === TokenType_1.TokenType.Else) {
554
- this._lexer.get();
555
- elseB = this.parseStatement();
556
- if (!elseB)
557
- return null;
558
- endToken = elseB.endToken;
559
- }
560
- return this.createStatementNode(ScriptingSourceTree_1.T_IF_STATEMENT, {
561
- cond,
562
- thenB,
563
- elseB,
564
- }, startToken, endToken);
565
- }
566
- /**
567
- * Parses a while statement
568
- *
569
- * whileStatement
570
- * : "while" "(" condition ")" statement
571
- * ;
572
- */
573
- parseWhileStatement() {
574
- const startToken = this._lexer.get();
575
- this.expectToken(TokenType_1.TokenType.LParent, "W014");
576
- const cond = this.getExpression();
577
- if (!cond)
578
- return null;
579
- this.expectToken(TokenType_1.TokenType.RParent, "W006");
580
- const body = this.parseStatement();
581
- if (!body)
582
- return null;
583
- return this.createStatementNode(ScriptingSourceTree_1.T_WHILE_STATEMENT, {
584
- cond,
585
- body,
586
- }, startToken, body.endToken);
587
- }
588
- /**
589
- * Parses a do-while statement
590
- *
591
- * doWhileStatement
592
- * : "do" statement "while" "(" condition ")"
593
- * ;
594
- */
595
- parseDoWhileStatement() {
596
- const startToken = this._lexer.get();
597
- const body = this.parseStatement();
598
- if (!body)
599
- return null;
600
- if (body.type !== ScriptingSourceTree_1.T_BLOCK_STATEMENT && body.type !== ScriptingSourceTree_1.T_EMPTY_STATEMENT) {
601
- this.expectToken(TokenType_1.TokenType.Semicolon);
602
- }
603
- this.expectToken(TokenType_1.TokenType.While);
604
- this.expectToken(TokenType_1.TokenType.LParent, "W014");
605
- const cond = this.getExpression();
606
- if (!cond)
607
- return null;
608
- const endToken = this._lexer.peek();
609
- this.expectToken(TokenType_1.TokenType.RParent, "W006");
610
- return this.createStatementNode(ScriptingSourceTree_1.T_DO_WHILE_STATEMENT, {
611
- cond,
612
- body,
613
- }, startToken, endToken);
614
- }
615
- /**
616
- * Parses an expression statement
617
- *
618
- * returnStatement
619
- * : "return" expression?
620
- * ;
621
- */
622
- parseReturnStatement() {
623
- const startToken = this._lexer.peek();
624
- let endToken = this._lexer.get();
625
- let expr;
626
- if (TokenTrait_1.tokenTraits[this._lexer.peek().type].expressionStart) {
627
- expr = this.getExpression();
628
- if (expr === null)
629
- return null;
630
- endToken = expr.endToken;
631
- }
632
- return this.createStatementNode(ScriptingSourceTree_1.T_RETURN_STATEMENT, {
633
- expr,
634
- }, startToken, endToken);
635
- }
636
- /**
637
- * forStatement
638
- * : "for" "(" initStatement? ";" expression? ";" expression? ")" statement
639
- * | forInOfStatement
640
- * ;
641
- */
642
- parseForStatement() {
643
- const startToken = this._lexer.peek();
644
- this._lexer.get();
645
- this.expectToken(TokenType_1.TokenType.LParent, "W014");
646
- // --- Check for..in and for..of
647
- let nextToken = this._lexer.peek();
648
- if (nextToken.type === TokenType_1.TokenType.Identifier) {
649
- if (this._lexer.ahead(1).type === TokenType_1.TokenType.In) {
650
- return this.parseForInOfStatement(startToken, "none", nextToken, ScriptingSourceTree_1.T_FOR_IN_STATEMENT);
651
- }
652
- else if (this._lexer.ahead(1).type === TokenType_1.TokenType.Of) {
653
- return this.parseForInOfStatement(startToken, "none", nextToken, ScriptingSourceTree_1.T_FOR_OF_STATEMENT);
654
- }
655
- }
656
- else if (nextToken.type === TokenType_1.TokenType.Let) {
657
- const idToken = this._lexer.ahead(1);
658
- if (idToken.type === TokenType_1.TokenType.Identifier) {
659
- const inOfToken = this._lexer.ahead(2);
660
- if (inOfToken.type === TokenType_1.TokenType.In) {
661
- return this.parseForInOfStatement(startToken, "let", idToken, ScriptingSourceTree_1.T_FOR_IN_STATEMENT);
662
- }
663
- else if (inOfToken.type === TokenType_1.TokenType.Of) {
664
- return this.parseForInOfStatement(startToken, "let", idToken, ScriptingSourceTree_1.T_FOR_OF_STATEMENT);
665
- }
666
- }
667
- }
668
- else if (nextToken.type === TokenType_1.TokenType.Const) {
669
- const idToken = this._lexer.ahead(1);
670
- if (idToken.type === TokenType_1.TokenType.Identifier) {
671
- const inOfToken = this._lexer.ahead(2);
672
- if (inOfToken.type === TokenType_1.TokenType.In) {
673
- return this.parseForInOfStatement(startToken, "const", idToken, ScriptingSourceTree_1.T_FOR_IN_STATEMENT);
674
- }
675
- else if (inOfToken.type === TokenType_1.TokenType.Of) {
676
- return this.parseForInOfStatement(startToken, "const", idToken, ScriptingSourceTree_1.T_FOR_OF_STATEMENT);
677
- }
678
- }
679
- }
680
- // --- We accept only let statement, empty statement, and expression
681
- let init;
682
- nextToken = this._lexer.peek();
683
- if (nextToken.type === TokenType_1.TokenType.Semicolon) {
684
- // --- Empty statement: no init in the for loop
685
- this._lexer.get();
686
- }
687
- else if (nextToken.type === TokenType_1.TokenType.Let) {
688
- // --- Let statement
689
- const letStmt = this.parseLetStatement();
690
- if (letStmt === null) {
691
- return null;
692
- }
693
- init = letStmt;
694
- if (init.decls.some((d) => !d.expr)) {
695
- this.reportError("W011");
696
- return null;
697
- }
698
- this.expectToken(TokenType_1.TokenType.Semicolon);
699
- }
700
- else if (TokenTrait_1.tokenTraits[nextToken.type].expressionStart) {
701
- // --- Expression statement
702
- const exprStmt = this.parseExpressionStatement();
703
- if (exprStmt === null) {
704
- return null;
705
- }
706
- init = exprStmt;
707
- this.expectToken(TokenType_1.TokenType.Semicolon);
708
- }
709
- // --- Parse the condition
710
- let cond;
711
- nextToken = this._lexer.peek();
712
- if (nextToken.type === TokenType_1.TokenType.Semicolon) {
713
- // --- No condition
714
- this._lexer.get();
715
- }
716
- else {
717
- cond = this.getExpression();
718
- if (cond === null) {
719
- return null;
720
- }
721
- this.expectToken(TokenType_1.TokenType.Semicolon);
722
- }
723
- // --- Parse the update expression
724
- let upd;
725
- nextToken = this._lexer.peek();
726
- if (nextToken.type !== TokenType_1.TokenType.RParent) {
727
- upd = this.getExpression();
728
- if (upd === null) {
729
- return null;
730
- }
731
- }
732
- // --- Close the declaration part
733
- this.expectToken(TokenType_1.TokenType.RParent, "W006");
734
- // --- Get the body
735
- const body = this.parseStatement();
736
- if (!body)
737
- return null;
738
- return this.createStatementNode(ScriptingSourceTree_1.T_FOR_STATEMENT, {
739
- init,
740
- cond,
741
- upd,
742
- body,
743
- }, startToken, body.endToken);
744
- }
745
- /**
746
- * forInOfStatement
747
- * : "for" "(" [ "let" | "const" ] identifier ( "in" | "of" ) expression? ")" statement
748
- * | forInOfStatement
749
- * ;
750
- *
751
- * @param startToken Statement start token
752
- * @param varB Variable binding of the for..in/of statement
753
- * @param id ID name
754
- * @param type Is it a for..in or a for..of?
755
- */
756
- parseForInOfStatement(startToken, varB, idToken, type) {
757
- if (varB !== "none") {
758
- // --- Skip variable binding type
759
- if (idToken.text.startsWith("$")) {
760
- this.reportError("W031");
761
- return null;
762
- }
763
- this._lexer.get();
764
- }
765
- // --- Skip variable name, in/of token
766
- this._lexer.get();
767
- this._lexer.get();
768
- // --- Get the expression
769
- const expr = this.getExpression(true);
770
- // --- Close the declaration part
771
- this.expectToken(TokenType_1.TokenType.RParent, "W006");
772
- // --- Get the body
773
- const body = this.parseStatement();
774
- if (!body)
775
- return null;
776
- return type === ScriptingSourceTree_1.T_FOR_IN_STATEMENT
777
- ? this.createStatementNode(ScriptingSourceTree_1.T_FOR_IN_STATEMENT, {
778
- varB,
779
- id: {
780
- type: ScriptingSourceTree_1.T_IDENTIFIER,
781
- name: idToken.text,
782
- startToken: idToken,
783
- endToken: idToken,
784
- },
785
- expr,
786
- body,
787
- }, startToken, body.endToken)
788
- : this.createStatementNode(ScriptingSourceTree_1.T_FOR_OF_STATEMENT, {
789
- varB,
790
- id: {
791
- type: ScriptingSourceTree_1.T_IDENTIFIER,
792
- name: idToken.text,
793
- startToken: idToken,
794
- endToken: idToken,
795
- },
796
- expr,
797
- body,
798
- }, startToken, body.endToken);
799
- }
800
- /**
801
- * Parses a throw statement
802
- *
803
- * throwStatement
804
- * : "throw" expression
805
- * ;
806
- */
807
- parseThrowStatement() {
808
- const startToken = this._lexer.peek();
809
- this._lexer.get();
810
- let expr;
811
- expr = this.getExpression();
812
- if (expr === null)
813
- return null;
814
- return this.createStatementNode(ScriptingSourceTree_1.T_THROW_STATEMENT, {
815
- expr,
816
- }, startToken, expr.endToken);
817
- }
818
- /**
819
- * Parses a try..catch..finally statement
820
- *
821
- * tryStatement
822
- * : "try" blockStatement catchClause finallyClause?
823
- * | "try" blockStatement catchClause? finallyClause
824
- * ;
825
- *
826
- * catchClause
827
- * : "catch" [ "(" identifier ") ]? blockStatement
828
- * ;
829
- *
830
- * finallyClause
831
- * : "finally" blockStatement
832
- */
833
- parseTryStatement() {
834
- const getBlock = () => {
835
- const nextToken = this._lexer.peek();
836
- if (nextToken.type !== TokenType_1.TokenType.LBrace) {
837
- this.reportError("W012", nextToken);
838
- return null;
839
- }
840
- return this.parseBlockStatement();
841
- };
842
- const startToken = this._lexer.peek();
843
- let endToken = this._lexer.get();
844
- // --- Get "try" block
845
- const tryB = getBlock();
846
- let catchB;
847
- let catchV;
848
- let finallyB;
849
- let nextToken = this._lexer.peek();
850
- if (nextToken.type === TokenType_1.TokenType.Catch) {
851
- // --- Catch found
852
- this._lexer.get();
853
- nextToken = this._lexer.peek();
854
- if (nextToken.type === TokenType_1.TokenType.LParent) {
855
- // --- Catch variable found
856
- this._lexer.get();
857
- nextToken = this._lexer.peek();
858
- if (nextToken.type !== TokenType_1.TokenType.Identifier) {
859
- this.reportError("W003", nextToken);
860
- return null;
861
- }
862
- catchV = {
863
- type: ScriptingSourceTree_1.T_IDENTIFIER,
864
- nodeId: createXmlUiTreeNodeId(),
865
- name: nextToken.text,
866
- startToken: nextToken,
867
- endToken: nextToken,
868
- };
869
- this._lexer.get();
870
- this.expectToken(TokenType_1.TokenType.RParent, "W006");
871
- }
872
- // --- Get catch block
873
- catchB = getBlock();
874
- endToken = catchB.endToken;
875
- if (this._lexer.peek().type === TokenType_1.TokenType.Finally) {
876
- // --- Finally after catch
877
- this._lexer.get();
878
- finallyB = getBlock();
879
- endToken = finallyB.endToken;
880
- }
881
- }
882
- else if (nextToken.type === TokenType_1.TokenType.Finally) {
883
- // --- Finally found
884
- this._lexer.get();
885
- finallyB = getBlock();
886
- endToken = finallyB.endToken;
887
- }
888
- else {
889
- this.reportError("W013", nextToken);
890
- return null;
891
- }
892
- return this.createStatementNode(ScriptingSourceTree_1.T_TRY_STATEMENT, {
893
- tryB,
894
- catchB,
895
- catchV,
896
- finallyB,
897
- }, startToken, endToken);
898
- }
899
- /**
900
- * Parses a switch statement
901
- *
902
- * switchStatement
903
- * : "switch" "(" expression ")" "{" caseClauses "}"
904
- * ;
905
- *
906
- * caseClauses
907
- * : "case" expression ":" statement*
908
- * | "default" ":" statement*
909
- * ;
910
- */
911
- parseSwitchStatement() {
912
- const startToken = this._lexer.get();
913
- // --- Parse the switch expression
914
- this.expectToken(TokenType_1.TokenType.LParent, "W014");
915
- const expr = this.getExpression();
916
- if (!expr)
917
- return null;
918
- this.expectToken(TokenType_1.TokenType.RParent, "W006");
919
- // --- Parse the case blocks
920
- this.expectToken(TokenType_1.TokenType.LBrace, "W012");
921
- const cases = [];
922
- let defaultCaseFound = false;
923
- while (true) {
924
- let nextToken = this._lexer.peek();
925
- let caseE;
926
- if (nextToken.type === TokenType_1.TokenType.Case) {
927
- // --- Process "case"
928
- this._lexer.get();
929
- caseE = this.getExpression();
930
- if (!caseE)
931
- return null;
932
- }
933
- else if (nextToken.type === TokenType_1.TokenType.Default) {
934
- // --- Process "default"
935
- if (defaultCaseFound) {
936
- this.reportError("W016");
937
- return null;
938
- }
939
- defaultCaseFound = true;
940
- this._lexer.get();
941
- }
942
- else if (nextToken.type === TokenType_1.TokenType.RBrace) {
943
- break;
944
- }
945
- else {
946
- this.reportError("W015");
947
- return null;
948
- }
949
- // --- Process label statements
950
- this.expectToken(TokenType_1.TokenType.Colon, "W008");
951
- let stmts = [];
952
- let collected = false;
953
- while (!collected) {
954
- const stmtToken = this._lexer.peek();
955
- switch (stmtToken.type) {
956
- case TokenType_1.TokenType.Case:
957
- case TokenType_1.TokenType.Default:
958
- case TokenType_1.TokenType.RBrace:
959
- // --- No more case to process
960
- collected = true;
961
- break;
962
- default:
963
- // --- Try to get the next statement
964
- const stmt = this.parseStatement();
965
- if (stmt === null) {
966
- collected = true;
967
- break;
968
- }
969
- stmts.push(stmt);
970
- if (stmt.type !== ScriptingSourceTree_1.T_EMPTY_STATEMENT) {
971
- this.skipToken(TokenType_1.TokenType.Semicolon);
972
- }
973
- }
974
- }
975
- cases.push(this.createNode(ScriptingSourceTree_1.T_SWITCH_CASE, {
976
- caseE,
977
- stmts,
978
- }, startToken));
979
- }
980
- // --- Closing
981
- const endToken = this._lexer.peek();
982
- this.expectToken(TokenType_1.TokenType.RBrace, "W004");
983
- return this.createStatementNode(ScriptingSourceTree_1.T_SWITCH_STATEMENT, {
984
- expr,
985
- cases,
986
- }, startToken, endToken);
987
- }
988
- /**
989
- * Parses a function declaration
990
- *
991
- * functionDeclaration
992
- * : "function" identifier "(" [parameterList] ")" blockStatement
993
- * ;
994
- */
995
- parseFunctionDeclaration(allowNoName = false) {
996
- var _a;
997
- const startToken = this._lexer.get();
998
- // --- Get the function name
999
- let functionName;
1000
- const funcId = this._lexer.peek();
1001
- if (allowNoName) {
1002
- if (funcId.type !== TokenType_1.TokenType.LParent) {
1003
- if (funcId.type !== TokenType_1.TokenType.Identifier) {
1004
- this.reportError("W003", funcId);
1005
- return null;
1006
- }
1007
- functionName = funcId.text;
1008
- this._lexer.get();
1009
- }
1010
- }
1011
- else {
1012
- if (funcId.type !== TokenType_1.TokenType.Identifier) {
1013
- this.reportError("W003", funcId);
1014
- return null;
1015
- }
1016
- functionName = funcId.text;
1017
- this._lexer.get();
1018
- }
1019
- // --- Get the parameter list;
1020
- const nextToken = this._lexer.peek();
1021
- if (nextToken.type !== TokenType_1.TokenType.LParent) {
1022
- this.reportError("W014", nextToken);
1023
- return null;
1024
- }
1025
- // --- Now, get the parameter list as an expression
1026
- const exprList = this.getExpression(true);
1027
- // --- We turn the expression into a parameter list
1028
- let isValid;
1029
- const args = [];
1030
- switch (exprList.type) {
1031
- case ScriptingSourceTree_1.T_NO_ARG_EXPRESSION:
1032
- isValid = true;
1033
- break;
1034
- case ScriptingSourceTree_1.T_IDENTIFIER:
1035
- isValid = ((_a = exprList.parenthesized) !== null && _a !== void 0 ? _a : 0) <= 1;
1036
- args.push(exprList);
1037
- break;
1038
- case ScriptingSourceTree_1.T_SEQUENCE_EXPRESSION:
1039
- isValid = exprList.parenthesized === 1;
1040
- let spreadFound = false;
1041
- if (isValid) {
1042
- for (const expr of exprList.exprs) {
1043
- // --- Spread operator can be used only in the last position
1044
- if (spreadFound) {
1045
- isValid = false;
1046
- break;
1047
- }
1048
- switch (expr.type) {
1049
- case ScriptingSourceTree_1.T_IDENTIFIER:
1050
- isValid = !expr.parenthesized;
1051
- args.push(expr);
1052
- break;
1053
- case ScriptingSourceTree_1.T_OBJECT_LITERAL: {
1054
- isValid = !expr.parenthesized;
1055
- if (isValid) {
1056
- const des = this.convertToObjectDestructure(expr);
1057
- if (des)
1058
- args.push(des);
1059
- }
1060
- break;
1061
- }
1062
- case ScriptingSourceTree_1.T_ARRAY_LITERAL: {
1063
- isValid = !expr.parenthesized;
1064
- if (isValid) {
1065
- const des = this.convertToArrayDestructure(expr);
1066
- if (des)
1067
- args.push(des);
1068
- }
1069
- break;
1070
- }
1071
- case ScriptingSourceTree_1.T_SPREAD_EXPRESSION: {
1072
- spreadFound = true;
1073
- if (expr.expr.type !== ScriptingSourceTree_1.T_IDENTIFIER) {
1074
- isValid = false;
1075
- break;
1076
- }
1077
- args.push(expr);
1078
- break;
1079
- }
1080
- default:
1081
- isValid = false;
1082
- break;
1083
- }
1084
- }
1085
- }
1086
- break;
1087
- case ScriptingSourceTree_1.T_OBJECT_LITERAL:
1088
- isValid = exprList.parenthesized === 1;
1089
- if (isValid) {
1090
- const des = this.convertToObjectDestructure(exprList);
1091
- if (des)
1092
- args.push(des);
1093
- }
1094
- break;
1095
- case ScriptingSourceTree_1.T_ARRAY_LITERAL:
1096
- isValid = exprList.parenthesized === 1;
1097
- if (isValid) {
1098
- const des = this.convertToArrayDestructure(exprList);
1099
- if (des)
1100
- args.push(des);
1101
- }
1102
- break;
1103
- case ScriptingSourceTree_1.T_SPREAD_EXPRESSION:
1104
- if (exprList.expr.type !== ScriptingSourceTree_1.T_IDENTIFIER) {
1105
- isValid = false;
1106
- break;
1107
- }
1108
- isValid = true;
1109
- args.push(exprList);
1110
- break;
1111
- default:
1112
- isValid = false;
1113
- }
1114
- if (!isValid) {
1115
- this.reportError("W010", startToken);
1116
- return null;
1117
- }
1118
- // --- Get the function body (statement block)
1119
- if (this._lexer.peek().type !== TokenType_1.TokenType.LBrace) {
1120
- this.reportError("W012", this._lexer.peek());
1121
- return null;
1122
- }
1123
- const stmt = this.parseBlockStatement();
1124
- if (!stmt)
1125
- return null;
1126
- // --- Done.
1127
- return this.createStatementNode(ScriptingSourceTree_1.T_FUNCTION_DECLARATION, {
1128
- id: { type: ScriptingSourceTree_1.T_IDENTIFIER, name: functionName },
1129
- args,
1130
- stmt,
1131
- }, startToken, stmt.endToken);
1132
- }
1133
- // ==========================================================================
1134
- // Expression parsing
1135
- /**
1136
- * Parses an expression:
1137
- *
1138
- * expr
1139
- * : sequenceExpr
1140
- * ;
1141
- */
1142
- parseExpr(allowSequence = true) {
1143
- return allowSequence
1144
- ? this.parseSequenceExpression()
1145
- : this.parseCondOrSpreadOrAsgnOrArrowExpr();
1146
- }
1147
- /**
1148
- * sequenceExpr
1149
- * : conditionalExpr ( "," conditionalExpr )?
1150
- */
1151
- parseSequenceExpression() {
1152
- const start = this._lexer.peek();
1153
- let endToken = start;
1154
- let leftExpr = this.parseCondOrSpreadOrAsgnOrArrowExpr();
1155
- if (!leftExpr) {
1156
- return null;
1157
- }
1158
- endToken = leftExpr.endToken;
1159
- const exprs = [];
1160
- let loose = false;
1161
- if (this._lexer.peek().type === TokenType_1.TokenType.Comma) {
1162
- exprs.push(leftExpr);
1163
- while (this.skipToken(TokenType_1.TokenType.Comma)) {
1164
- if (this._lexer.peek().type === TokenType_1.TokenType.Comma) {
1165
- loose = true;
1166
- endToken = this._lexer.peek();
1167
- exprs.push(this.createExpressionNode(ScriptingSourceTree_1.T_NO_ARG_EXPRESSION, {}, endToken, endToken));
1168
- }
1169
- else {
1170
- const nextExpr = this.parseCondOrSpreadOrAsgnOrArrowExpr();
1171
- if (!nextExpr) {
1172
- break;
1173
- }
1174
- endToken = nextExpr.endToken;
1175
- exprs.push(nextExpr);
1176
- }
1177
- }
1178
- }
1179
- if (!exprs.length) {
1180
- // --- No sequence
1181
- return leftExpr;
1182
- }
1183
- // --- Create the sequence expression
1184
- leftExpr = this.createExpressionNode(ScriptingSourceTree_1.T_SEQUENCE_EXPRESSION, {
1185
- exprs,
1186
- loose,
1187
- }, start, endToken);
1188
- // --- Check for "loose" sequence expression
1189
- if (loose) {
1190
- leftExpr = this.convertToArrayDestructure(leftExpr);
1191
- }
1192
- // --- Done.
1193
- return leftExpr;
1194
- }
1195
- /**
1196
- * conditionalOrSpreadOrAsgnOrArrowExpr
1197
- * : nullCoalescingExpr ( "?" expr ":" expr )?
1198
- * | "..." nullCoalescingExpr
1199
- * | identifier "=" expr
1200
- * ;
1201
- */
1202
- parseCondOrSpreadOrAsgnOrArrowExpr() {
1203
- const startToken = this._lexer.peek();
1204
- if (startToken.type === TokenType_1.TokenType.Spread) {
1205
- // --- Spread expression
1206
- this._lexer.get();
1207
- const spreadOperand = this.parseNullCoalescingExpr();
1208
- return spreadOperand
1209
- ? this.createExpressionNode(ScriptingSourceTree_1.T_SPREAD_EXPRESSION, {
1210
- expr: spreadOperand,
1211
- }, startToken, spreadOperand.endToken)
1212
- : null;
1213
- }
1214
- if (startToken.type === TokenType_1.TokenType.Function) {
1215
- const funcDecl = this.parseFunctionDeclaration(true);
1216
- return funcDecl
1217
- ? this.createExpressionNode(ScriptingSourceTree_1.T_ARROW_EXPRESSION, {
1218
- name: funcDecl.id.name,
1219
- args: funcDecl.args,
1220
- statement: funcDecl.stmt,
1221
- }, startToken, funcDecl.endToken)
1222
- : null;
1223
- }
1224
- const otherExpr = this.parseNullCoalescingExpr();
1225
- if (!otherExpr) {
1226
- return null;
1227
- }
1228
- const nextToken = this._lexer.peek();
1229
- if (nextToken.type === TokenType_1.TokenType.Arrow) {
1230
- // --- It is an arrow expression
1231
- return this.parseArrowExpression(startToken, otherExpr);
1232
- }
1233
- if (nextToken.type === TokenType_1.TokenType.QuestionMark) {
1234
- this._lexer.get();
1235
- // --- Conditional expression
1236
- const trueExpr = this.getExpression(false);
1237
- this.expectToken(TokenType_1.TokenType.Colon);
1238
- const falseExpr = this.getExpression(false);
1239
- return this.createExpressionNode(ScriptingSourceTree_1.T_CONDITIONAL_EXPRESSION, {
1240
- cond: otherExpr,
1241
- thenE: trueExpr,
1242
- elseE: falseExpr,
1243
- }, startToken, falseExpr.endToken);
1244
- }
1245
- if (TokenTrait_1.tokenTraits[nextToken.type].isAssignment) {
1246
- // --- Assignment
1247
- this._lexer.get();
1248
- const expr = this.getExpression();
1249
- return expr
1250
- ? this.createExpressionNode(ScriptingSourceTree_1.T_ASSIGNMENT_EXPRESSION, {
1251
- leftValue: otherExpr,
1252
- op: nextToken.text,
1253
- expr,
1254
- }, startToken, expr.endToken)
1255
- : null;
1256
- }
1257
- return otherExpr;
1258
- }
1259
- /**
1260
- * Parses an arrow expression
1261
- * @param start Start token
1262
- * @param left Expression to the left from the arrow
1263
- */
1264
- parseArrowExpression(start, left) {
1265
- var _a;
1266
- // --- Check the left expression
1267
- let isValid;
1268
- const args = [];
1269
- switch (left.type) {
1270
- case ScriptingSourceTree_1.T_NO_ARG_EXPRESSION:
1271
- isValid = true;
1272
- break;
1273
- case ScriptingSourceTree_1.T_IDENTIFIER:
1274
- isValid = ((_a = left.parenthesized) !== null && _a !== void 0 ? _a : 0) <= 1;
1275
- args.push(left);
1276
- break;
1277
- case ScriptingSourceTree_1.T_SEQUENCE_EXPRESSION:
1278
- isValid = left.parenthesized === 1;
1279
- let spreadFound = false;
1280
- if (isValid) {
1281
- for (const expr of left.exprs) {
1282
- if (spreadFound) {
1283
- isValid = false;
1284
- break;
1285
- }
1286
- switch (expr.type) {
1287
- case ScriptingSourceTree_1.T_IDENTIFIER:
1288
- isValid = !expr.parenthesized;
1289
- args.push(expr);
1290
- break;
1291
- case ScriptingSourceTree_1.T_OBJECT_LITERAL: {
1292
- isValid = !expr.parenthesized;
1293
- if (isValid) {
1294
- const des = this.convertToObjectDestructure(expr);
1295
- if (des)
1296
- args.push(des);
1297
- }
1298
- break;
1299
- }
1300
- case ScriptingSourceTree_1.T_ARRAY_LITERAL: {
1301
- isValid = !expr.parenthesized;
1302
- if (isValid) {
1303
- const des = this.convertToArrayDestructure(expr);
1304
- if (des)
1305
- args.push(des);
1306
- }
1307
- break;
1308
- }
1309
- case ScriptingSourceTree_1.T_SPREAD_EXPRESSION: {
1310
- spreadFound = true;
1311
- if (expr.expr.type !== ScriptingSourceTree_1.T_IDENTIFIER) {
1312
- isValid = false;
1313
- break;
1314
- }
1315
- args.push(expr);
1316
- break;
1317
- }
1318
- default:
1319
- isValid = false;
1320
- break;
1321
- }
1322
- }
1323
- }
1324
- break;
1325
- case ScriptingSourceTree_1.T_OBJECT_LITERAL:
1326
- isValid = left.parenthesized === 1;
1327
- if (isValid) {
1328
- const des = this.convertToObjectDestructure(left);
1329
- if (des)
1330
- args.push(des);
1331
- }
1332
- break;
1333
- case ScriptingSourceTree_1.T_ARRAY_LITERAL:
1334
- isValid = left.parenthesized === 1;
1335
- if (isValid) {
1336
- const des = this.convertToArrayDestructure(left);
1337
- if (des)
1338
- args.push(des);
1339
- }
1340
- break;
1341
- case ScriptingSourceTree_1.T_SPREAD_EXPRESSION:
1342
- isValid = left.expr.type === ScriptingSourceTree_1.T_IDENTIFIER;
1343
- if (isValid) {
1344
- args.push(left);
1345
- }
1346
- break;
1347
- default:
1348
- isValid = false;
1349
- }
1350
- if (!isValid) {
1351
- this.reportError("W010", start);
1352
- return null;
1353
- }
1354
- // --- Skip the arrow token
1355
- this._lexer.get();
1356
- // --- Get arrow expression statements
1357
- const statement = this.parseStatement(false);
1358
- return statement
1359
- ? this.createExpressionNode(ScriptingSourceTree_1.T_ARROW_EXPRESSION, {
1360
- args,
1361
- statement,
1362
- }, start, statement.endToken)
1363
- : null;
1364
- }
1365
- /**
1366
- * nullCoalescingExpr
1367
- * : logicalOrExpr ( "??" logicalOrExpr )?
1368
- * ;
1369
- */
1370
- parseNullCoalescingExpr() {
1371
- const startToken = this._lexer.peek();
1372
- let leftExpr = this.parseLogicalOrExpr();
1373
- if (!leftExpr) {
1374
- return null;
1375
- }
1376
- while (this.skipToken(TokenType_1.TokenType.NullCoalesce)) {
1377
- const rightExpr = this.parseLogicalOrExpr();
1378
- if (!rightExpr) {
1379
- this.reportError("W001");
1380
- return null;
1381
- }
1382
- let endToken = rightExpr.endToken;
1383
- leftExpr = this.createExpressionNode(ScriptingSourceTree_1.T_BINARY_EXPRESSION, {
1384
- op: "??",
1385
- left: leftExpr,
1386
- right: rightExpr,
1387
- }, startToken, endToken);
1388
- }
1389
- return leftExpr;
1390
- }
1391
- /**
1392
- * logicalOrExpr
1393
- * : logicalAndExpr ( "||" logicalAndExpr )?
1394
- * ;
1395
- */
1396
- parseLogicalOrExpr() {
1397
- const startToken = this._lexer.peek();
1398
- let leftExpr = this.parseLogicalAndExpr();
1399
- if (!leftExpr) {
1400
- return null;
1401
- }
1402
- while (this.skipToken(TokenType_1.TokenType.LogicalOr)) {
1403
- const rightExpr = this.parseLogicalAndExpr();
1404
- if (!rightExpr) {
1405
- this.reportError("W001");
1406
- return null;
1407
- }
1408
- let endToken = rightExpr.endToken;
1409
- leftExpr = this.createExpressionNode(ScriptingSourceTree_1.T_BINARY_EXPRESSION, {
1410
- op: "||",
1411
- left: leftExpr,
1412
- right: rightExpr,
1413
- }, startToken, endToken);
1414
- }
1415
- return leftExpr;
1416
- }
1417
- /**
1418
- * logicalAndExpr
1419
- * : bitwiseOrExpr ( "&&" bitwiseOrExpr )?
1420
- * ;
1421
- */
1422
- parseLogicalAndExpr() {
1423
- const startToken = this._lexer.peek();
1424
- let leftExpr = this.parseBitwiseOrExpr();
1425
- if (!leftExpr) {
1426
- return null;
1427
- }
1428
- while (this.skipToken(TokenType_1.TokenType.LogicalAnd)) {
1429
- const rightExpr = this.parseBitwiseOrExpr();
1430
- if (!rightExpr) {
1431
- this.reportError("W001");
1432
- return null;
1433
- }
1434
- let endToken = rightExpr.endToken;
1435
- leftExpr = this.createExpressionNode(ScriptingSourceTree_1.T_BINARY_EXPRESSION, {
1436
- op: "&&",
1437
- left: leftExpr,
1438
- right: rightExpr,
1439
- }, startToken, endToken);
1440
- }
1441
- return leftExpr;
1442
- }
1443
- /**
1444
- * bitwiseOrExpr
1445
- * : bitwiseXorExpr ( "|" bitwiseXorExpr )?
1446
- * ;
1447
- */
1448
- parseBitwiseOrExpr() {
1449
- const startToken = this._lexer.peek();
1450
- let leftExpr = this.parseBitwiseXorExpr();
1451
- if (!leftExpr) {
1452
- return null;
1453
- }
1454
- while (this.skipToken(TokenType_1.TokenType.BitwiseOr)) {
1455
- const rightExpr = this.parseBitwiseXorExpr();
1456
- if (!rightExpr) {
1457
- this.reportError("W001");
1458
- return null;
1459
- }
1460
- let endToken = rightExpr.endToken;
1461
- leftExpr = this.createExpressionNode(ScriptingSourceTree_1.T_BINARY_EXPRESSION, {
1462
- op: "|",
1463
- left: leftExpr,
1464
- right: rightExpr,
1465
- }, startToken, endToken);
1466
- }
1467
- return leftExpr;
1468
- }
1469
- /**
1470
- * bitwiseXorExpr
1471
- * : bitwiseAndExpr ( "^" bitwiseAndExpr )?
1472
- * ;
1473
- */
1474
- parseBitwiseXorExpr() {
1475
- const startToken = this._lexer.peek();
1476
- let leftExpr = this.parseBitwiseAndExpr();
1477
- if (!leftExpr) {
1478
- return null;
1479
- }
1480
- while (this.skipToken(TokenType_1.TokenType.BitwiseXor)) {
1481
- const rightExpr = this.parseBitwiseAndExpr();
1482
- if (!rightExpr) {
1483
- this.reportError("W001");
1484
- return null;
1485
- }
1486
- let endToken = rightExpr.endToken;
1487
- leftExpr = this.createExpressionNode(ScriptingSourceTree_1.T_BINARY_EXPRESSION, {
1488
- op: "^",
1489
- left: leftExpr,
1490
- right: rightExpr,
1491
- }, startToken, endToken);
1492
- }
1493
- return leftExpr;
1494
- }
1495
- /**
1496
- * bitwiseAndExpr
1497
- * : equExpr ( "&" equExpr )?
1498
- * ;
1499
- */
1500
- parseBitwiseAndExpr() {
1501
- const startToken = this._lexer.peek();
1502
- let leftExpr = this.parseEquExpr();
1503
- if (!leftExpr) {
1504
- return null;
1505
- }
1506
- while (this.skipToken(TokenType_1.TokenType.BitwiseAnd)) {
1507
- const rightExpr = this.parseEquExpr();
1508
- if (!rightExpr) {
1509
- this.reportError("W001");
1510
- return null;
1511
- }
1512
- let endToken = rightExpr.endToken;
1513
- leftExpr = this.createExpressionNode(ScriptingSourceTree_1.T_BINARY_EXPRESSION, {
1514
- op: "&",
1515
- left: leftExpr,
1516
- right: rightExpr,
1517
- }, startToken, endToken);
1518
- }
1519
- return leftExpr;
1520
- }
1521
- /**
1522
- * equExpr
1523
- * : relOrInExpr ( ( "==" | "!=" | "===" | "!==" ) relOrInExpr )?
1524
- * ;
1525
- */
1526
- parseEquExpr() {
1527
- const startToken = this._lexer.peek();
1528
- let leftExpr = this.parseRelOrInExpr();
1529
- if (!leftExpr) {
1530
- return null;
1531
- }
1532
- let opType;
1533
- while ((opType = this.skipTokens(TokenType_1.TokenType.Equal, TokenType_1.TokenType.StrictEqual, TokenType_1.TokenType.NotEqual, TokenType_1.TokenType.StrictNotEqual))) {
1534
- const rightExpr = this.parseRelOrInExpr();
1535
- if (!rightExpr) {
1536
- this.reportError("W001");
1537
- return null;
1538
- }
1539
- let endToken = rightExpr.endToken;
1540
- leftExpr = this.createExpressionNode(ScriptingSourceTree_1.T_BINARY_EXPRESSION, {
1541
- op: opType.text,
1542
- left: leftExpr,
1543
- right: rightExpr,
1544
- }, startToken, endToken);
1545
- }
1546
- return leftExpr;
1547
- }
1548
- /**
1549
- * relOrInExpr
1550
- * : shiftExpr ( ( "<" | "<=" | ">" | ">=", "in" ) shiftExpr )?
1551
- * ;
1552
- */
1553
- parseRelOrInExpr() {
1554
- const startToken = this._lexer.peek();
1555
- let leftExpr = this.parseShiftExpr();
1556
- if (!leftExpr) {
1557
- return null;
1558
- }
1559
- let opType;
1560
- while ((opType = this.skipTokens(TokenType_1.TokenType.LessThan, TokenType_1.TokenType.LessThanOrEqual, TokenType_1.TokenType.GreaterThan, TokenType_1.TokenType.GreaterThanOrEqual, TokenType_1.TokenType.In))) {
1561
- const rightExpr = this.parseShiftExpr();
1562
- if (!rightExpr) {
1563
- this.reportError("W001");
1564
- return null;
1565
- }
1566
- let endToken = rightExpr.endToken;
1567
- leftExpr = this.createExpressionNode(ScriptingSourceTree_1.T_BINARY_EXPRESSION, {
1568
- op: opType.text,
1569
- left: leftExpr,
1570
- right: rightExpr,
1571
- }, startToken, endToken);
1572
- }
1573
- return leftExpr;
1574
- }
1575
- /**
1576
- * shiftExpr
1577
- * : addExpr ( ( "<<" | ">>" | ">>>" ) addExpr )?
1578
- * ;
1579
- */
1580
- parseShiftExpr() {
1581
- const startToken = this._lexer.peek();
1582
- let leftExpr = this.parseAddExpr();
1583
- if (!leftExpr) {
1584
- return null;
1585
- }
1586
- let opType;
1587
- while ((opType = this.skipTokens(TokenType_1.TokenType.ShiftLeft, TokenType_1.TokenType.ShiftRight, TokenType_1.TokenType.SignedShiftRight))) {
1588
- const rightExpr = this.parseAddExpr();
1589
- if (!rightExpr) {
1590
- this.reportError("W001");
1591
- return null;
1592
- }
1593
- let endToken = rightExpr.endToken;
1594
- leftExpr = this.createExpressionNode(ScriptingSourceTree_1.T_BINARY_EXPRESSION, {
1595
- op: opType.text,
1596
- left: leftExpr,
1597
- right: rightExpr,
1598
- }, startToken, endToken);
1599
- }
1600
- return leftExpr;
1601
- }
1602
- /**
1603
- * addExpr
1604
- * : multExpr ( ( "+" | "-" ) multExpr )?
1605
- * ;
1606
- */
1607
- parseAddExpr() {
1608
- const startToken = this._lexer.peek();
1609
- let leftExpr = this.parseMultExpr();
1610
- if (!leftExpr) {
1611
- return null;
1612
- }
1613
- let opType;
1614
- while ((opType = this.skipTokens(TokenType_1.TokenType.Plus, TokenType_1.TokenType.Minus))) {
1615
- const rightExpr = this.parseMultExpr();
1616
- if (!rightExpr) {
1617
- this.reportError("W001");
1618
- return null;
1619
- }
1620
- let endToken = rightExpr.endToken;
1621
- leftExpr = this.createExpressionNode(ScriptingSourceTree_1.T_BINARY_EXPRESSION, {
1622
- op: opType.text,
1623
- left: leftExpr,
1624
- right: rightExpr,
1625
- }, startToken, endToken);
1626
- }
1627
- return leftExpr;
1628
- }
1629
- /**
1630
- * multExpr
1631
- * : exponentialExpr ( ( "*" | "/" | "%") exponentialExpr )?
1632
- * ;
1633
- */
1634
- parseMultExpr() {
1635
- const startToken = this._lexer.peek();
1636
- let leftExpr = this.parseExponentialExpr();
1637
- if (!leftExpr) {
1638
- return null;
1639
- }
1640
- let opType;
1641
- while ((opType = this.skipTokens(TokenType_1.TokenType.Multiply, TokenType_1.TokenType.Divide, TokenType_1.TokenType.Remainder))) {
1642
- const rightExpr = this.parseExponentialExpr();
1643
- if (!rightExpr) {
1644
- this.reportError("W001");
1645
- return null;
1646
- }
1647
- let endToken = rightExpr.endToken;
1648
- leftExpr = this.createExpressionNode(ScriptingSourceTree_1.T_BINARY_EXPRESSION, {
1649
- op: opType.text,
1650
- left: leftExpr,
1651
- right: rightExpr,
1652
- }, startToken, endToken);
1653
- }
1654
- return leftExpr;
1655
- }
1656
- /**
1657
- * exponentialExpr
1658
- * : unaryExpr ( "**" unaryExpr )?
1659
- * ;
1660
- */
1661
- parseExponentialExpr() {
1662
- const startToken = this._lexer.peek();
1663
- let leftExpr = this.parseUnaryOrPrefixExpr();
1664
- if (!leftExpr) {
1665
- return null;
1666
- }
1667
- let opType;
1668
- let count = 0;
1669
- while ((opType = this.skipToken(TokenType_1.TokenType.Exponent))) {
1670
- let rightExpr = this.parseUnaryOrPrefixExpr();
1671
- if (!rightExpr) {
1672
- this.reportError("W001");
1673
- return null;
1674
- }
1675
- let endToken = rightExpr.endToken;
1676
- if (count === 0) {
1677
- leftExpr = this.createExpressionNode(ScriptingSourceTree_1.T_BINARY_EXPRESSION, {
1678
- op: opType.text,
1679
- left: leftExpr,
1680
- right: rightExpr,
1681
- }, startToken, endToken);
1682
- }
1683
- else {
1684
- const prevLeft = leftExpr;
1685
- leftExpr = this.createExpressionNode(ScriptingSourceTree_1.T_BINARY_EXPRESSION, {
1686
- op: opType.text,
1687
- left: prevLeft.left,
1688
- right: {
1689
- type: ScriptingSourceTree_1.T_BINARY_EXPRESSION,
1690
- op: opType.text,
1691
- left: prevLeft.right,
1692
- right: rightExpr,
1693
- },
1694
- }, startToken, endToken);
1695
- }
1696
- count++;
1697
- }
1698
- return leftExpr;
1699
- }
1700
- /**
1701
- * unaryExpr
1702
- * : ( "typeof" | "delete" | "+" | "-" | "~" | "!" ) memberOrInvocationExpr
1703
- * | memberOrInvocationExpr
1704
- * ;
1705
- */
1706
- parseUnaryOrPrefixExpr() {
1707
- const startToken = this._lexer.peek();
1708
- if (TokenTrait_1.tokenTraits[startToken.type].canBeUnary) {
1709
- this._lexer.get();
1710
- const unaryOperand = this.parseUnaryOrPrefixExpr();
1711
- if (!unaryOperand) {
1712
- return null;
1713
- }
1714
- return this.createExpressionNode(ScriptingSourceTree_1.T_UNARY_EXPRESSION, {
1715
- op: startToken.text,
1716
- expr: unaryOperand,
1717
- }, startToken, unaryOperand.endToken);
1718
- }
1719
- if (startToken.type === TokenType_1.TokenType.IncOp || startToken.type === TokenType_1.TokenType.DecOp) {
1720
- this._lexer.get();
1721
- const prefixOperand = this.parseMemberOrInvocationExpr();
1722
- if (!prefixOperand) {
1723
- return null;
1724
- }
1725
- return this.createExpressionNode(ScriptingSourceTree_1.T_PREFIX_OP_EXPRESSION, {
1726
- op: startToken.text,
1727
- expr: prefixOperand,
1728
- }, startToken, prefixOperand.endToken);
1729
- }
1730
- // --- Not unary or prefix
1731
- return this.parseMemberOrInvocationExpr();
1732
- }
1733
- /**
1734
- * memberOrInvocationExpr
1735
- * : primaryExpr "(" functionArgs ")"
1736
- * | primaryExpr "." identifier
1737
- * | primaryExpr "?." identifier
1738
- * | primaryExpr "[" expr "]"
1739
- * ;
1740
- */
1741
- parseMemberOrInvocationExpr() {
1742
- const startToken = this._lexer.peek();
1743
- let primary = this.parsePrimaryExpr();
1744
- if (!primary) {
1745
- return null;
1746
- }
1747
- let exitLoop = false;
1748
- do {
1749
- const currentStart = this._lexer.peek();
1750
- switch (currentStart.type) {
1751
- case TokenType_1.TokenType.LParent: {
1752
- this._lexer.get();
1753
- let args = [];
1754
- if (this._lexer.peek().type !== TokenType_1.TokenType.RParent) {
1755
- const expr = this.parseExpr();
1756
- if (!expr) {
1757
- this.reportError("W001");
1758
- return null;
1759
- }
1760
- args = expr.type === ScriptingSourceTree_1.T_SEQUENCE_EXPRESSION ? expr.exprs : [expr];
1761
- }
1762
- const endToken = this._lexer.peek();
1763
- this.expectToken(TokenType_1.TokenType.RParent, "W006");
1764
- primary = this.createExpressionNode(ScriptingSourceTree_1.T_FUNCTION_INVOCATION_EXPRESSION, {
1765
- obj: primary,
1766
- arguments: args,
1767
- }, startToken, endToken);
1768
- break;
1769
- }
1770
- case TokenType_1.TokenType.Dot:
1771
- case TokenType_1.TokenType.OptionalChaining:
1772
- this._lexer.get();
1773
- const member = this._lexer.get();
1774
- const memberTrait = TokenTrait_1.tokenTraits[member.type];
1775
- if (!memberTrait.keywordLike) {
1776
- this.reportError("W003");
1777
- return null;
1778
- }
1779
- primary = this.createExpressionNode(ScriptingSourceTree_1.T_MEMBER_ACCESS_EXPRESSION, {
1780
- obj: primary,
1781
- member: member.text,
1782
- opt: currentStart.type === TokenType_1.TokenType.OptionalChaining,
1783
- }, startToken, member);
1784
- break;
1785
- case TokenType_1.TokenType.LSquare:
1786
- this._lexer.get();
1787
- const memberExpr = this.getExpression();
1788
- if (!memberExpr) {
1789
- return null;
1790
- }
1791
- const endToken = this._lexer.peek();
1792
- this.expectToken(TokenType_1.TokenType.RSquare, "W005");
1793
- primary = this.createExpressionNode(ScriptingSourceTree_1.T_CALCULATED_MEMBER_ACCESS_EXPRESSION, {
1794
- obj: primary,
1795
- member: memberExpr,
1796
- }, startToken, endToken);
1797
- break;
1798
- default:
1799
- exitLoop = true;
1800
- break;
1801
- }
1802
- } while (!exitLoop);
1803
- // --- Check for postfix operators
1804
- const nextToken = this._lexer.peek();
1805
- if (nextToken.type === TokenType_1.TokenType.IncOp || nextToken.type === TokenType_1.TokenType.DecOp) {
1806
- this._lexer.get();
1807
- return this.createExpressionNode(ScriptingSourceTree_1.T_POSTFIX_OP_EXPRESSION, {
1808
- op: nextToken.text,
1809
- expr: primary,
1810
- }, startToken, nextToken);
1811
- }
1812
- return primary;
1813
- }
1814
- /**
1815
- * primaryExpr
1816
- * : literal
1817
- * | identifier
1818
- * | "::" identifier
1819
- * | "$item"
1820
- * | "(" expr ")"
1821
- * ;
1822
- */
1823
- parsePrimaryExpr() {
1824
- var _a;
1825
- const start = this._lexer.peek();
1826
- switch (start.type) {
1827
- case TokenType_1.TokenType.LParent:
1828
- // --- Parenthesised or no-arg expression
1829
- this._lexer.get();
1830
- if (this._lexer.peek().type === TokenType_1.TokenType.RParent) {
1831
- // --- No-arg
1832
- const endToken = this._lexer.get();
1833
- return this.createExpressionNode(ScriptingSourceTree_1.T_NO_ARG_EXPRESSION, {}, start, endToken);
1834
- }
1835
- // --- Parenthesized
1836
- let parenthesizedExpr = this.parseExpr();
1837
- if (!parenthesizedExpr) {
1838
- return null;
1839
- }
1840
- const endToken = this._lexer.peek();
1841
- this.expectToken(TokenType_1.TokenType.RParent, "W006");
1842
- return Object.assign(Object.assign({}, parenthesizedExpr), { parenthesized: ((_a = parenthesizedExpr.parenthesized) !== null && _a !== void 0 ? _a : 0) + 1, startToken: start, endToken });
1843
- case TokenType_1.TokenType.Identifier: {
1844
- const idToken = this._lexer.get();
1845
- return this.createExpressionNode(ScriptingSourceTree_1.T_IDENTIFIER, {
1846
- name: idToken.text,
1847
- }, idToken, idToken);
1848
- }
1849
- case TokenType_1.TokenType.Global: {
1850
- this._lexer.get();
1851
- const idToken = this._lexer.get();
1852
- if (idToken.type !== TokenType_1.TokenType.Identifier) {
1853
- this.reportError("W003");
1854
- return null;
1855
- }
1856
- return this.createExpressionNode(ScriptingSourceTree_1.T_IDENTIFIER, {
1857
- name: idToken.text,
1858
- isGlobal: true,
1859
- }, idToken, idToken);
1860
- }
1861
- case TokenType_1.TokenType.Backtick:
1862
- return this.parseTemplateLiteral();
1863
- case TokenType_1.TokenType.False:
1864
- case TokenType_1.TokenType.True:
1865
- this._lexer.get();
1866
- return this.createExpressionNode(ScriptingSourceTree_1.T_LITERAL, {
1867
- value: start.type === TokenType_1.TokenType.True,
1868
- }, start, start);
1869
- case TokenType_1.TokenType.BinaryLiteral:
1870
- this._lexer.get();
1871
- return this.parseBinaryLiteral(start);
1872
- case TokenType_1.TokenType.DecimalLiteral:
1873
- this._lexer.get();
1874
- return this.parseDecimalLiteral(start);
1875
- case TokenType_1.TokenType.HexadecimalLiteral:
1876
- this._lexer.get();
1877
- return this.parseHexadecimalLiteral(start);
1878
- case TokenType_1.TokenType.RealLiteral:
1879
- this._lexer.get();
1880
- return this.parseRealLiteral(start);
1881
- case TokenType_1.TokenType.StringLiteral:
1882
- this._lexer.get();
1883
- return this.parseStringLiteral(start);
1884
- case TokenType_1.TokenType.Infinity:
1885
- this._lexer.get();
1886
- return this.createExpressionNode(ScriptingSourceTree_1.T_LITERAL, {
1887
- value: Infinity,
1888
- }, start, start);
1889
- case TokenType_1.TokenType.NaN:
1890
- this._lexer.get();
1891
- return this.createExpressionNode(ScriptingSourceTree_1.T_LITERAL, {
1892
- value: NaN,
1893
- }, start, start);
1894
- case TokenType_1.TokenType.Null:
1895
- this._lexer.get();
1896
- return this.createExpressionNode(ScriptingSourceTree_1.T_LITERAL, {
1897
- value: null,
1898
- }, start, start);
1899
- case TokenType_1.TokenType.Undefined:
1900
- this._lexer.get();
1901
- return this.createExpressionNode(ScriptingSourceTree_1.T_LITERAL, {
1902
- value: undefined,
1903
- }, start, start);
1904
- case TokenType_1.TokenType.LSquare:
1905
- return this.parseArrayLiteral();
1906
- case TokenType_1.TokenType.LBrace:
1907
- return this.parseObjectLiteral();
1908
- case TokenType_1.TokenType.Divide:
1909
- return this.parseRegExpLiteral();
1910
- }
1911
- return null;
1912
- }
1913
- parseTemplateLiteral() {
1914
- const startToken = this._lexer.get();
1915
- this._lexer.setStartingPhaseToTemplateLiteral();
1916
- const segments = [];
1917
- loop: while (true) {
1918
- let nextToken = this._lexer.peek();
1919
- switch (nextToken.type) {
1920
- case TokenType_1.TokenType.StringLiteral:
1921
- this._lexer.get();
1922
- const str = this.parseStringLiteral(nextToken, false);
1923
- segments.push(str);
1924
- break;
1925
- case TokenType_1.TokenType.DollarLBrace:
1926
- this._lexer.get();
1927
- const innerExpr = this.parseExpr();
1928
- segments.push(innerExpr);
1929
- this.expectToken(TokenType_1.TokenType.RBrace, "W004");
1930
- this._lexer.setStartingPhaseToTemplateLiteral();
1931
- break;
1932
- case TokenType_1.TokenType.Backtick:
1933
- break loop;
1934
- default:
1935
- this.reportError("W004");
1936
- }
1937
- }
1938
- const endToken = this._lexer.get();
1939
- return this.createExpressionNode(ScriptingSourceTree_1.T_TEMPLATE_LITERAL_EXPRESSION, { segments }, startToken, endToken);
1940
- }
1941
- /**
1942
- * Parses an array literal
1943
- */
1944
- parseArrayLiteral() {
1945
- const start = this._lexer.get();
1946
- let expressions = [];
1947
- if (this._lexer.peek().type !== TokenType_1.TokenType.RSquare) {
1948
- const expr = this.getExpression();
1949
- if (expr) {
1950
- expressions = expr.type === ScriptingSourceTree_1.T_SEQUENCE_EXPRESSION ? expr.exprs : [expr];
1951
- }
1952
- }
1953
- const endToken = this._lexer.peek();
1954
- this.expectToken(TokenType_1.TokenType.RSquare);
1955
- return this.createExpressionNode(ScriptingSourceTree_1.T_ARRAY_LITERAL, {
1956
- items: expressions,
1957
- }, start, endToken);
1958
- }
1959
- /**
1960
- * Parses an object literal
1961
- */
1962
- parseObjectLiteral() {
1963
- const start = this._lexer.get();
1964
- let props = [];
1965
- if (this._lexer.peek().type !== TokenType_1.TokenType.RBrace) {
1966
- while (this._lexer.peek().type !== TokenType_1.TokenType.RBrace) {
1967
- // --- Check the next token
1968
- const nextToken = this._lexer.peek();
1969
- const traits = TokenTrait_1.tokenTraits[nextToken.type];
1970
- let nameExpr;
1971
- // --- Get property name or calculated property name
1972
- if (traits.expressionStart) {
1973
- if (nextToken.type === TokenType_1.TokenType.LSquare) {
1974
- this._lexer.get();
1975
- nameExpr = this.getExpression();
1976
- if (!nameExpr) {
1977
- return null;
1978
- }
1979
- this.expectToken(TokenType_1.TokenType.RSquare, "W005");
1980
- nameExpr = this.createExpressionNode(ScriptingSourceTree_1.T_SEQUENCE_EXPRESSION, {
1981
- exprs: [nameExpr],
1982
- }, start);
1983
- }
1984
- else if (traits.isPropLiteral) {
1985
- nameExpr = this.getExpression(false);
1986
- if (!nameExpr) {
1987
- return null;
1988
- }
1989
- if (nameExpr.type !== ScriptingSourceTree_1.T_IDENTIFIER &&
1990
- nameExpr.type !== ScriptingSourceTree_1.T_LITERAL &&
1991
- nameExpr.type !== ScriptingSourceTree_1.T_SPREAD_EXPRESSION) {
1992
- this.reportError("W007");
1993
- return null;
1994
- }
1995
- }
1996
- else {
1997
- this.reportError("W007");
1998
- return null;
1999
- }
2000
- }
2001
- else if (traits.keywordLike) {
2002
- nameExpr = {
2003
- type: ScriptingSourceTree_1.T_IDENTIFIER,
2004
- nodeId: createXmlUiTreeNodeId(),
2005
- name: nextToken.text,
2006
- startToken: nextToken,
2007
- endToken: nextToken,
2008
- };
2009
- this._lexer.get();
2010
- }
2011
- else {
2012
- this.reportError("W001");
2013
- return null;
2014
- }
2015
- const nameType = nameExpr.type;
2016
- if (nameType === ScriptingSourceTree_1.T_SPREAD_EXPRESSION) {
2017
- props.push(nameExpr);
2018
- }
2019
- else {
2020
- if (nameType === ScriptingSourceTree_1.T_LITERAL) {
2021
- const val = nameExpr.value;
2022
- if (typeof val !== "number" && typeof val !== "string") {
2023
- this.expectToken(TokenType_1.TokenType.RBrace, "W007");
2024
- return null;
2025
- }
2026
- }
2027
- // --- Value is optional, when we have a name
2028
- let valueExpr = null;
2029
- if (nameType === ScriptingSourceTree_1.T_IDENTIFIER) {
2030
- const nameFollowerToken = this._lexer.peek();
2031
- if (nameFollowerToken.type === TokenType_1.TokenType.Comma ||
2032
- nameFollowerToken.type === TokenType_1.TokenType.RBrace) {
2033
- valueExpr = Object.assign({}, nameExpr);
2034
- }
2035
- }
2036
- // --- Move to property value
2037
- if (!valueExpr) {
2038
- this.expectToken(TokenType_1.TokenType.Colon, "W008");
2039
- valueExpr = this.getExpression(false);
2040
- if (!valueExpr) {
2041
- return null;
2042
- }
2043
- }
2044
- props.push([nameExpr, valueExpr]);
2045
- }
2046
- // --- Test property termination
2047
- const next = this._lexer.peek().type;
2048
- if (next === TokenType_1.TokenType.Comma) {
2049
- this._lexer.get();
2050
- }
2051
- else {
2052
- if (next !== TokenType_1.TokenType.RBrace) {
2053
- break;
2054
- }
2055
- }
2056
- }
2057
- }
2058
- const endToken = this._lexer.peek();
2059
- this.expectToken(TokenType_1.TokenType.RBrace, "W004");
2060
- return this.createExpressionNode(ScriptingSourceTree_1.T_OBJECT_LITERAL, {
2061
- props,
2062
- }, start, endToken);
2063
- }
2064
- parseRegExpLiteral() {
2065
- var _a;
2066
- const startToken = this._lexer.peek();
2067
- const result = this._lexer.getRegEx();
2068
- if (result.success) {
2069
- return this.createExpressionNode(ScriptingSourceTree_1.T_LITERAL, {
2070
- value: new RegExp(result.pattern, result.flags),
2071
- }, startToken, this._lexer.peek());
2072
- }
2073
- this.reportError("W002", startToken, (_a = result.pattern) !== null && _a !== void 0 ? _a : "");
2074
- return null;
2075
- }
2076
- /**
2077
- * Gets an expression
2078
- */
2079
- getExpression(allowSequence = true) {
2080
- const expr = this.parseExpr(allowSequence);
2081
- if (expr) {
2082
- return expr;
2083
- }
2084
- this.reportError("W001");
2085
- return null;
2086
- }
2087
- // ==========================================================================
2088
- // Helpers
2089
- /**
2090
- * Tests the type of the next token
2091
- * @param type Expected token type
2092
- * @param errorCode Error to raise if the next token is not expected
2093
- * @param allowEof Allow an EOF instead of the expected token?
2094
- */
2095
- expectToken(type, errorCode, allowEof) {
2096
- const next = this._lexer.peek();
2097
- if (next.type === type || (allowEof && next.type === TokenType_1.TokenType.Eof)) {
2098
- // --- Skip the expected token
2099
- return this._lexer.get();
2100
- }
2101
- this.reportError(errorCode !== null && errorCode !== void 0 ? errorCode : "W002", next, next.text);
2102
- return null;
2103
- }
2104
- /**
2105
- * Skips the next token if the type is the specified one
2106
- * @param type Token type to check
2107
- */
2108
- skipToken(type) {
2109
- const next = this._lexer.peek();
2110
- if (next.type === type) {
2111
- this._lexer.get();
2112
- return next;
2113
- }
2114
- return null;
2115
- }
2116
- /**
2117
- * Skips the next token if the type is the specified one
2118
- * @param types Token types to check
2119
- */
2120
- skipTokens(...types) {
2121
- const next = this._lexer.peek();
2122
- for (const type of types) {
2123
- if (next.type === type) {
2124
- this._lexer.get();
2125
- return next;
2126
- }
2127
- }
2128
- return null;
2129
- }
2130
- /**
2131
- * Reports the specified error
2132
- * @param errorCode Error code
2133
- * @param token Token that represents the error's position
2134
- * @param options Error message options
2135
- */
2136
- reportError(errorCode, token, ...options) {
2137
- var _a;
2138
- let errorText = (_a = ParserError_1.errorMessages[errorCode]) !== null && _a !== void 0 ? _a : "Unkonwn error";
2139
- if (options) {
2140
- options.forEach((o, idx) => (errorText = replace(errorText, `{${idx}}`, options[idx].toString())));
2141
- }
2142
- if (!token) {
2143
- token = this._lexer.peek();
2144
- }
2145
- this._parseErrors.push({
2146
- code: errorCode,
2147
- text: errorText,
2148
- line: token.startLine,
2149
- column: token.startColumn,
2150
- });
2151
- throw new ParserError_1.ParserError(errorText, errorCode);
2152
- function replace(input, placeholder, replacement) {
2153
- do {
2154
- input = input.replace(placeholder, replacement);
2155
- } while (input.includes(placeholder));
2156
- return input;
2157
- }
2158
- }
2159
- /**
2160
- * Creates an expression node
2161
- * @param type Expression type
2162
- * @param stump Stump properties
2163
- * @param startToken The token that starts the expression
2164
- * @param endToken The token that ends the expression
2165
- * @param source Expression source code to store to the node
2166
- */
2167
- createNode(type, stump, startToken, endToken) {
2168
- if (!endToken) {
2169
- endToken = this._lexer.peek();
2170
- }
2171
- return Object.assign({}, stump, {
2172
- type,
2173
- startToken,
2174
- endToken,
2175
- });
2176
- }
2177
- /**
2178
- * Creates an expression node
2179
- * @param type Expression type
2180
- * @param stump Stump properties
2181
- * @param startToken The token that starts the expression
2182
- * @param endToken The token that ends the expression
2183
- * @param source Expression source code to store to the node
2184
- */
2185
- createExpressionNode(type, stump = {}, startToken, endToken) {
2186
- if (!endToken) {
2187
- endToken = this._lexer.peek();
2188
- }
2189
- if (!startToken) {
2190
- startToken = endToken;
2191
- }
2192
- return Object.assign({}, stump, {
2193
- type,
2194
- nodeId: createXmlUiTreeNodeId(),
2195
- startToken,
2196
- endToken,
2197
- });
2198
- }
2199
- /**
2200
- * Creates a statement node
2201
- * @param type Statement type
2202
- * @param stump Stump properties
2203
- * @param startToken The token that starts the statement
2204
- * @param endToken The token that ends the statement
2205
- */
2206
- createStatementNode(type, stump, startToken, endToken) {
2207
- return Object.assign({}, stump, {
2208
- type,
2209
- nodeId: createXmlUiTreeNodeId(),
2210
- startToken,
2211
- endToken,
2212
- });
2213
- }
2214
- /**
2215
- * Parses a binary literal
2216
- * @param token Literal token
2217
- */
2218
- parseBinaryLiteral(token) {
2219
- let value;
2220
- const bigValue = BigInt(token.text.replace(/[_']/g, ""));
2221
- if (bigValue < Number.MIN_SAFE_INTEGER || bigValue > Number.MAX_SAFE_INTEGER) {
2222
- value = bigValue;
2223
- }
2224
- else {
2225
- value = parseInt(token.text.substring(2).replace(/[_']/g, ""), 2);
2226
- }
2227
- return this.createExpressionNode(ScriptingSourceTree_1.T_LITERAL, {
2228
- value,
2229
- }, token, token);
2230
- }
2231
- /**
2232
- * Parses a decimal literal
2233
- * @param token Literal token
2234
- */
2235
- parseDecimalLiteral(token) {
2236
- let value;
2237
- const bigValue = BigInt(token.text.replace(/[_']/g, ""));
2238
- if (bigValue < Number.MIN_SAFE_INTEGER || bigValue > Number.MAX_SAFE_INTEGER) {
2239
- value = bigValue;
2240
- }
2241
- else {
2242
- value = parseInt(token.text.replace(/[_']/g, ""), 10);
2243
- }
2244
- return this.createExpressionNode(ScriptingSourceTree_1.T_LITERAL, {
2245
- value,
2246
- }, token, token);
2247
- }
2248
- /**
2249
- * Parses a hexadecimal literal
2250
- * @param token Literal token
2251
- */
2252
- parseHexadecimalLiteral(token) {
2253
- let value;
2254
- const bigValue = BigInt(token.text.replace(/[_']/g, ""));
2255
- if (bigValue < Number.MIN_SAFE_INTEGER || bigValue > Number.MAX_SAFE_INTEGER) {
2256
- value = bigValue;
2257
- }
2258
- else {
2259
- value = parseInt(token.text.substring(2).replace(/[_']/g, ""), 16);
2260
- }
2261
- return this.createExpressionNode(ScriptingSourceTree_1.T_LITERAL, {
2262
- value,
2263
- }, token, token);
2264
- }
2265
- /**
2266
- * Parses a real literal
2267
- * @param token Literal token
2268
- */
2269
- parseRealLiteral(token) {
2270
- let value = parseFloat(token.text.replace(/[_']/g, ""));
2271
- return this.createExpressionNode(ScriptingSourceTree_1.T_LITERAL, {
2272
- value,
2273
- }, token, token);
2274
- }
2275
- /**
2276
- * Converts a string token to intrinsic string
2277
- * @param token Literal token
2278
- */
2279
- parseStringLiteral(token, quoteSurrounded = true) {
2280
- let input = token.text;
2281
- if (quoteSurrounded) {
2282
- input = token.text.length < 2 ? "" : input.substring(1, input.length - 1);
2283
- }
2284
- let result = "";
2285
- let state = StrParseState.Normal;
2286
- let collect = 0;
2287
- for (const ch of input) {
2288
- switch (state) {
2289
- case StrParseState.Normal:
2290
- if (ch === "\\") {
2291
- state = StrParseState.Backslash;
2292
- }
2293
- else {
2294
- result += ch;
2295
- }
2296
- break;
2297
- case StrParseState.Backslash:
2298
- state = StrParseState.Normal;
2299
- switch (ch) {
2300
- case "b":
2301
- result += "\b";
2302
- break;
2303
- case "f":
2304
- result += "\f";
2305
- break;
2306
- case "n":
2307
- result += "\n";
2308
- break;
2309
- case "r":
2310
- result += "\r";
2311
- break;
2312
- case "t":
2313
- result += "\t";
2314
- break;
2315
- case "v":
2316
- result += "\v";
2317
- break;
2318
- case "S":
2319
- result += "\xa0";
2320
- break;
2321
- case "0":
2322
- result += String.fromCharCode(0x00);
2323
- break;
2324
- case "'":
2325
- result += "'";
2326
- break;
2327
- case '"':
2328
- result += '"';
2329
- break;
2330
- case "\\":
2331
- result += "\\";
2332
- break;
2333
- case "x":
2334
- state = StrParseState.X;
2335
- break;
2336
- case "u":
2337
- state = StrParseState.UX1;
2338
- break;
2339
- default:
2340
- result += ch;
2341
- break;
2342
- }
2343
- break;
2344
- case StrParseState.X:
2345
- if (isHexaDecimal(ch)) {
2346
- collect = parseInt(ch, 16);
2347
- state = StrParseState.Xh;
2348
- }
2349
- else {
2350
- result += "x";
2351
- state = StrParseState.Normal;
2352
- }
2353
- break;
2354
- case StrParseState.Xh:
2355
- if (isHexaDecimal(ch)) {
2356
- collect = collect * 0x10 + parseInt(ch, 16);
2357
- result += String.fromCharCode(collect);
2358
- state = StrParseState.Normal;
2359
- }
2360
- else {
2361
- result += String.fromCharCode(collect);
2362
- result += ch;
2363
- state = StrParseState.Normal;
2364
- }
2365
- break;
2366
- case StrParseState.UX1:
2367
- if (ch === "{") {
2368
- state = StrParseState.Ucp1;
2369
- break;
2370
- }
2371
- if (isHexaDecimal(ch)) {
2372
- collect = parseInt(ch, 16);
2373
- state = StrParseState.UX2;
2374
- }
2375
- else {
2376
- result += "x";
2377
- state = StrParseState.Normal;
2378
- }
2379
- break;
2380
- case StrParseState.UX2:
2381
- if (isHexaDecimal(ch)) {
2382
- collect = collect * 0x10 + parseInt(ch, 16);
2383
- state = StrParseState.UX3;
2384
- }
2385
- else {
2386
- result += String.fromCharCode(collect);
2387
- result += ch;
2388
- state = StrParseState.Normal;
2389
- }
2390
- break;
2391
- case StrParseState.UX3:
2392
- if (isHexaDecimal(ch)) {
2393
- collect = collect * 0x10 + parseInt(ch, 16);
2394
- state = StrParseState.UX4;
2395
- }
2396
- else {
2397
- result += String.fromCharCode(collect);
2398
- result += ch;
2399
- state = StrParseState.Normal;
2400
- }
2401
- break;
2402
- case StrParseState.UX4:
2403
- if (isHexaDecimal(ch)) {
2404
- collect = collect * 0x10 + parseInt(ch, 16);
2405
- result += String.fromCharCode(collect);
2406
- state = StrParseState.Normal;
2407
- }
2408
- else {
2409
- result += String.fromCharCode(collect);
2410
- result += ch;
2411
- state = StrParseState.Normal;
2412
- }
2413
- break;
2414
- case StrParseState.Ucp1:
2415
- if (isHexaDecimal(ch)) {
2416
- collect = parseInt(ch, 16);
2417
- state = StrParseState.Ucp2;
2418
- }
2419
- else {
2420
- result += "x";
2421
- state = StrParseState.Normal;
2422
- }
2423
- break;
2424
- case StrParseState.Ucp2:
2425
- if (isHexaDecimal(ch)) {
2426
- collect = collect * 0x10 + parseInt(ch, 16);
2427
- state = StrParseState.Ucp3;
2428
- }
2429
- else {
2430
- result += String.fromCharCode(collect);
2431
- result += ch;
2432
- state = StrParseState.Normal;
2433
- }
2434
- break;
2435
- case StrParseState.Ucp3:
2436
- if (isHexaDecimal(ch)) {
2437
- collect = collect * 0x10 + parseInt(ch, 16);
2438
- state = StrParseState.Ucp4;
2439
- }
2440
- else {
2441
- result += String.fromCharCode(collect);
2442
- result += ch;
2443
- state = StrParseState.Normal;
2444
- }
2445
- break;
2446
- case StrParseState.Ucp4:
2447
- if (isHexaDecimal(ch)) {
2448
- collect = collect * 0x10 + parseInt(ch, 16);
2449
- state = StrParseState.Ucp5;
2450
- }
2451
- else {
2452
- result += String.fromCharCode(collect);
2453
- result += ch;
2454
- state = StrParseState.Normal;
2455
- }
2456
- break;
2457
- case StrParseState.Ucp5:
2458
- if (isHexaDecimal(ch)) {
2459
- collect = collect * 0x10 + parseInt(ch, 16);
2460
- state = StrParseState.Ucp6;
2461
- }
2462
- else {
2463
- result += String.fromCharCode(collect);
2464
- result += ch;
2465
- state = StrParseState.Normal;
2466
- }
2467
- break;
2468
- case StrParseState.Ucp6:
2469
- if (isHexaDecimal(ch)) {
2470
- collect = collect * 0x10 + parseInt(ch, 16);
2471
- state = StrParseState.UcpTail;
2472
- }
2473
- else {
2474
- result += String.fromCharCode(collect);
2475
- result += ch;
2476
- state = StrParseState.Normal;
2477
- }
2478
- break;
2479
- case StrParseState.UcpTail:
2480
- result += String.fromCharCode(collect);
2481
- if (ch !== "}") {
2482
- result += ch;
2483
- }
2484
- state = StrParseState.Normal;
2485
- break;
2486
- }
2487
- }
2488
- // --- Handle the final machine state
2489
- switch (state) {
2490
- case StrParseState.Backslash:
2491
- result += "\\";
2492
- break;
2493
- case StrParseState.X:
2494
- result += "x";
2495
- break;
2496
- case StrParseState.Xh:
2497
- result += String.fromCharCode(collect);
2498
- break;
2499
- }
2500
- // --- Done
2501
- return this.createExpressionNode(ScriptingSourceTree_1.T_LITERAL, {
2502
- value: result,
2503
- }, token, token);
2504
- function isHexaDecimal(ch) {
2505
- return (ch >= "0" && ch <= "9") || (ch >= "a" && ch <= "f") || (ch >= "A" && ch <= "F");
2506
- }
2507
- }
2508
- convertToArrayDestructure(seq) {
2509
- var _a;
2510
- const items = seq.type === ScriptingSourceTree_1.T_SEQUENCE_EXPRESSION ? seq.exprs : seq.items;
2511
- const result = this.createExpressionNode(ScriptingSourceTree_1.T_DESTRUCTURE, { aDestr: [] }, seq.startToken, seq.endToken);
2512
- // --- Convert all items
2513
- for (const item of items) {
2514
- let arrayD;
2515
- switch (item.type) {
2516
- case ScriptingSourceTree_1.T_NO_ARG_EXPRESSION:
2517
- arrayD = this.createExpressionNode(ScriptingSourceTree_1.T_ARRAY_DESTRUCTURE, {}, item.startToken, item.endToken);
2518
- break;
2519
- case ScriptingSourceTree_1.T_IDENTIFIER:
2520
- arrayD = this.createExpressionNode(ScriptingSourceTree_1.T_ARRAY_DESTRUCTURE, { id: item.name }, item.startToken, item.endToken);
2521
- break;
2522
- case ScriptingSourceTree_1.T_DESTRUCTURE:
2523
- result.aDestr.push(...item.aDestr);
2524
- break;
2525
- case ScriptingSourceTree_1.T_ARRAY_DESTRUCTURE:
2526
- arrayD = item;
2527
- break;
2528
- case ScriptingSourceTree_1.T_ARRAY_LITERAL: {
2529
- const destructure = this.convertToArrayDestructure(item);
2530
- if (destructure) {
2531
- arrayD = this.createExpressionNode(ScriptingSourceTree_1.T_ARRAY_DESTRUCTURE, {
2532
- aDestr: destructure.aDestr,
2533
- }, item.startToken, item.endToken);
2534
- }
2535
- break;
2536
- }
2537
- case ScriptingSourceTree_1.T_OBJECT_DESTRUCTURE:
2538
- arrayD = this.createExpressionNode(ScriptingSourceTree_1.T_ARRAY_DESTRUCTURE, {
2539
- oDestr: item,
2540
- }, item.startToken, item.endToken);
2541
- break;
2542
- case ScriptingSourceTree_1.T_OBJECT_LITERAL: {
2543
- const destructure = this.convertToObjectDestructure(item);
2544
- if (destructure) {
2545
- arrayD = this.createExpressionNode(ScriptingSourceTree_1.T_ARRAY_DESTRUCTURE, {
2546
- oDestr: destructure.oDestr,
2547
- }, item.startToken, item.endToken);
2548
- }
2549
- break;
2550
- }
2551
- default:
2552
- this.reportError("W017");
2553
- return null;
2554
- }
2555
- if (arrayD)
2556
- (_a = result.aDestr) === null || _a === void 0 ? void 0 : _a.push(arrayD);
2557
- }
2558
- // --- Done.
2559
- return result;
2560
- }
2561
- convertToObjectDestructure(objLit) {
2562
- var _a;
2563
- const result = this.createExpressionNode(ScriptingSourceTree_1.T_DESTRUCTURE, { oDestr: [] }, objLit.startToken, objLit.endToken);
2564
- // --- Convert all items
2565
- for (const prop of objLit.props) {
2566
- if (Array.isArray(prop)) {
2567
- }
2568
- else {
2569
- reportError("W018");
2570
- return null;
2571
- }
2572
- const [propKey, propValue] = prop;
2573
- if (propKey.type !== ScriptingSourceTree_1.T_IDENTIFIER) {
2574
- reportError("W018");
2575
- return null;
2576
- }
2577
- let objD;
2578
- switch (propValue.type) {
2579
- case ScriptingSourceTree_1.T_IDENTIFIER:
2580
- if (propValue.name === propKey.name) {
2581
- objD = this.createExpressionNode(ScriptingSourceTree_1.T_OBJECT_DESTRUCTURE, { id: propKey.name }, propValue.startToken, propValue.endToken);
2582
- }
2583
- else {
2584
- objD = this.createExpressionNode(ScriptingSourceTree_1.T_OBJECT_DESTRUCTURE, {
2585
- id: propKey.name,
2586
- alias: propValue.name,
2587
- }, propValue.startToken, propValue.endToken);
2588
- }
2589
- break;
2590
- case ScriptingSourceTree_1.T_ARRAY_DESTRUCTURE: {
2591
- objD = this.createExpressionNode(ScriptingSourceTree_1.T_OBJECT_DESTRUCTURE, {
2592
- id: propKey.name,
2593
- aDestr: propValue,
2594
- }, propKey.startToken, propValue.endToken);
2595
- break;
2596
- }
2597
- case ScriptingSourceTree_1.T_ARRAY_LITERAL: {
2598
- const destructure = this.convertToArrayDestructure(propValue);
2599
- if (destructure) {
2600
- objD = this.createExpressionNode(ScriptingSourceTree_1.T_OBJECT_DESTRUCTURE, {
2601
- id: propKey.name,
2602
- aDestr: destructure.aDestr,
2603
- }, propKey.startToken, propValue.endToken);
2604
- }
2605
- break;
2606
- }
2607
- case ScriptingSourceTree_1.T_OBJECT_DESTRUCTURE:
2608
- objD = propValue;
2609
- break;
2610
- case ScriptingSourceTree_1.T_OBJECT_LITERAL: {
2611
- const destructure = this.convertToObjectDestructure(propValue);
2612
- if (destructure) {
2613
- objD = this.createExpressionNode(ScriptingSourceTree_1.T_OBJECT_DESTRUCTURE, {
2614
- id: propKey.name,
2615
- oDestr: destructure.oDestr,
2616
- }, propKey.startToken, propValue.endToken);
2617
- }
2618
- break;
2619
- }
2620
- default:
2621
- this.reportError("W018");
2622
- return null;
2623
- }
2624
- if (objD)
2625
- (_a = result.oDestr) === null || _a === void 0 ? void 0 : _a.push(objD);
2626
- }
2627
- // --- Done.
2628
- return result;
2629
- }
2630
- /**
2631
- * Tests if the specified token can be the start of an expression
2632
- */
2633
- isExpressionStart(token) {
2634
- var _a, _b;
2635
- return (_b = (_a = TokenTrait_1.tokenTraits[token.type]) === null || _a === void 0 ? void 0 : _a.expressionStart) !== null && _b !== void 0 ? _b : false;
2636
- }
2637
- }
2638
- exports.Parser = Parser;