xmlui 0.11.3 → 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 (691) 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-DSUDwtWN.js → index-x4orhWfi.js} +2054 -2285
  5. package/dist/lib/index.css +1 -1
  6. package/dist/lib/{initMock-DdH1iCH-.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-D27cn-XB.js → metadata-utils-2bsMr4Gd.js} +57 -26
  10. package/dist/lib/{server-common-hq0poDwA.js → server-common-DI3W4cob.js} +4140 -3741
  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-Tooy42EB.js → transform-CQ_6R-43.js} +174 -127
  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-BZZ430Wm.js → xmlui-parser-CW8YmGjO.js} +10 -11
  18. package/dist/lib/xmlui-parser.d.ts +2 -0
  19. package/dist/lib/xmlui-parser.js +2 -2
  20. package/dist/lib/{xmlui-serializer-D9D2mQ8m.js → xmlui-serializer-CeCcgdVR.js} +19 -19
  21. package/dist/lib/xmlui.d.ts +124 -2
  22. package/dist/lib/xmlui.js +8 -3
  23. package/dist/metadata/{apiInterceptorWorker-Dql7QGw2.js → apiInterceptorWorker-Wgm2_zjg.js} +124 -149
  24. package/dist/metadata/{collectedComponentMetadata-C8Lr9TFe.js → collectedComponentMetadata-BGdap_gu.js} +2100 -2276
  25. package/dist/metadata/{initMock-CWwgOjW_.js → initMock-DlJ0S4Uy.js} +19 -22
  26. package/dist/metadata/xmlui-metadata.css +1 -0
  27. package/dist/metadata/xmlui-metadata.js +1 -1
  28. package/dist/metadata/xmlui-metadata.umd.cjs +3 -3
  29. package/dist/standalone/xmlui-standalone.es.d.ts +175 -4
  30. package/dist/standalone/xmlui-standalone.umd.js +36 -37
  31. package/package.json +20 -50
  32. package/dist/lib/vite-xmlui-plugin/index.js +0 -13968
  33. package/dist/lib/vite-xmlui-plugin/package.json +0 -3
  34. package/dist/metadata/style.css +0 -1
  35. package/dist/scripts/bin/bootstrap.cjs +0 -4
  36. package/dist/scripts/bin/build-lib.js +0 -126
  37. package/dist/scripts/bin/build.js +0 -266
  38. package/dist/scripts/bin/index.js +0 -167
  39. package/dist/scripts/bin/preview.js +0 -44
  40. package/dist/scripts/bin/start.js +0 -52
  41. package/dist/scripts/bin/vite-xmlui-plugin.js +0 -109
  42. package/dist/scripts/bin/viteConfig.js +0 -144
  43. package/dist/scripts/package.json +0 -285
  44. package/dist/scripts/src/abstractions/ActionDefs.js +0 -2
  45. package/dist/scripts/src/abstractions/AppContextDefs.js +0 -4
  46. package/dist/scripts/src/abstractions/ComponentDefs.js +0 -2
  47. package/dist/scripts/src/abstractions/ContainerDefs.js +0 -2
  48. package/dist/scripts/src/abstractions/ExtensionDefs.js +0 -2
  49. package/dist/scripts/src/abstractions/FunctionDefs.js +0 -2
  50. package/dist/scripts/src/abstractions/RendererDefs.js +0 -2
  51. package/dist/scripts/src/abstractions/ThemingDefs.js +0 -2
  52. package/dist/scripts/src/abstractions/scripting/BlockScope.js +0 -2
  53. package/dist/scripts/src/abstractions/scripting/Compilation.js +0 -2
  54. package/dist/scripts/src/abstractions/scripting/LogicalThread.js +0 -2
  55. package/dist/scripts/src/abstractions/scripting/LoopScope.js +0 -2
  56. package/dist/scripts/src/abstractions/scripting/ScriptParserError.js +0 -2
  57. package/dist/scripts/src/abstractions/scripting/Token.js +0 -2
  58. package/dist/scripts/src/abstractions/scripting/TryScope.js +0 -2
  59. package/dist/scripts/src/abstractions/scripting/TryScopeExp.js +0 -2
  60. package/dist/scripts/src/abstractions/scripting/modules.js +0 -2
  61. package/dist/scripts/src/components/APICall/APICall.js +0 -130
  62. package/dist/scripts/src/components/APICall/APICall.spec.js +0 -910
  63. package/dist/scripts/src/components/APICall/APICallNative.js +0 -36
  64. package/dist/scripts/src/components/Accordion/Accordion.js +0 -97
  65. package/dist/scripts/src/components/Accordion/Accordion.spec.js +0 -969
  66. package/dist/scripts/src/components/Accordion/AccordionContext.js +0 -20
  67. package/dist/scripts/src/components/Accordion/AccordionItem.js +0 -35
  68. package/dist/scripts/src/components/Accordion/AccordionItemNative.js +0 -95
  69. package/dist/scripts/src/components/Accordion/AccordionNative.js +0 -141
  70. package/dist/scripts/src/components/Animation/AnimationNative.js +0 -263
  71. package/dist/scripts/src/components/App/App.js +0 -581
  72. package/dist/scripts/src/components/App/App.spec.js +0 -331
  73. package/dist/scripts/src/components/App/AppLayoutContext.js +0 -49
  74. package/dist/scripts/src/components/App/AppNative.js +0 -308
  75. package/dist/scripts/src/components/App/AppStateContext.js +0 -9
  76. package/dist/scripts/src/components/App/IndexerContext.js +0 -44
  77. package/dist/scripts/src/components/App/LinkInfoContext.js +0 -9
  78. package/dist/scripts/src/components/App/SearchContext.js +0 -35
  79. package/dist/scripts/src/components/App/Sheet.js +0 -99
  80. package/dist/scripts/src/components/AppHeader/AppHeader.js +0 -58
  81. package/dist/scripts/src/components/AppHeader/AppHeader.spec.js +0 -169
  82. package/dist/scripts/src/components/AppHeader/AppHeaderNative.js +0 -72
  83. package/dist/scripts/src/components/AppState/AppState.js +0 -75
  84. package/dist/scripts/src/components/AppState/AppState.spec.js +0 -292
  85. package/dist/scripts/src/components/AppState/AppStateNative.js +0 -51
  86. package/dist/scripts/src/components/AutoComplete/AutoComplete.js +0 -109
  87. package/dist/scripts/src/components/AutoComplete/AutoComplete.spec.js +0 -433
  88. package/dist/scripts/src/components/AutoComplete/AutoCompleteContext.js +0 -19
  89. package/dist/scripts/src/components/AutoComplete/AutoCompleteNative.js +0 -498
  90. package/dist/scripts/src/components/Avatar/Avatar.js +0 -55
  91. package/dist/scripts/src/components/Avatar/Avatar.spec.js +0 -1514
  92. package/dist/scripts/src/components/Avatar/AvatarNative.js +0 -58
  93. package/dist/scripts/src/components/Backdrop/Backdrop.js +0 -40
  94. package/dist/scripts/src/components/Backdrop/Backdrop.spec.js +0 -131
  95. package/dist/scripts/src/components/Backdrop/BackdropNative.js +0 -25
  96. package/dist/scripts/src/components/Badge/Badge.js +0 -81
  97. package/dist/scripts/src/components/Badge/Badge.spec.js +0 -2214
  98. package/dist/scripts/src/components/Badge/BadgeNative.js +0 -46
  99. package/dist/scripts/src/components/Bookmark/Bookmark.js +0 -48
  100. package/dist/scripts/src/components/Bookmark/Bookmark.spec.js +0 -230
  101. package/dist/scripts/src/components/Bookmark/BookmarkNative.js +0 -55
  102. package/dist/scripts/src/components/Breakout/Breakout.js +0 -17
  103. package/dist/scripts/src/components/Breakout/Breakout.spec.js +0 -56
  104. package/dist/scripts/src/components/Breakout/BreakoutNative.js +0 -24
  105. package/dist/scripts/src/components/Button/Button-style.spec.js +0 -274
  106. package/dist/scripts/src/components/Button/Button.js +0 -171
  107. package/dist/scripts/src/components/Button/Button.spec.js +0 -425
  108. package/dist/scripts/src/components/Button/ButtonNative.js +0 -109
  109. package/dist/scripts/src/components/Card/Card.js +0 -89
  110. package/dist/scripts/src/components/Card/Card.spec.js +0 -150
  111. package/dist/scripts/src/components/Card/CardNative.js +0 -41
  112. package/dist/scripts/src/components/Carousel/Carousel.js +0 -133
  113. package/dist/scripts/src/components/Carousel/Carousel.spec.js +0 -557
  114. package/dist/scripts/src/components/Carousel/CarouselContext.js +0 -57
  115. package/dist/scripts/src/components/Carousel/CarouselItem.js +0 -15
  116. package/dist/scripts/src/components/Carousel/CarouselItemNative.js +0 -40
  117. package/dist/scripts/src/components/Carousel/CarouselNative.js +0 -195
  118. package/dist/scripts/src/components/ChangeListener/ChangeListener.js +0 -34
  119. package/dist/scripts/src/components/ChangeListener/ChangeListener.spec.js +0 -169
  120. package/dist/scripts/src/components/ChangeListener/ChangeListenerNative.js +0 -30
  121. package/dist/scripts/src/components/Charts/AreaChart/AreaChart.js +0 -92
  122. package/dist/scripts/src/components/Charts/AreaChart/AreaChart.spec.js +0 -999
  123. package/dist/scripts/src/components/Charts/AreaChart/AreaChartNative.js +0 -127
  124. package/dist/scripts/src/components/Charts/BarChart/BarChart.js +0 -97
  125. package/dist/scripts/src/components/Charts/BarChart/BarChart.spec.js +0 -597
  126. package/dist/scripts/src/components/Charts/BarChart/BarChartNative.js +0 -317
  127. package/dist/scripts/src/components/Charts/DonutChart/DonutChart.js +0 -60
  128. package/dist/scripts/src/components/Charts/DonutChart/DonutChart.spec.js +0 -608
  129. package/dist/scripts/src/components/Charts/LabelList/LabelList.js +0 -41
  130. package/dist/scripts/src/components/Charts/LabelList/LabelList.spec.js +0 -539
  131. package/dist/scripts/src/components/Charts/LabelList/LabelListNative.js +0 -25
  132. package/dist/scripts/src/components/Charts/Legend/Legend.js +0 -33
  133. package/dist/scripts/src/components/Charts/Legend/Legend.spec.js +0 -558
  134. package/dist/scripts/src/components/Charts/Legend/LegendNative.js +0 -64
  135. package/dist/scripts/src/components/Charts/LineChart/LineChart.js +0 -94
  136. package/dist/scripts/src/components/Charts/LineChart/LineChart.spec.js +0 -450
  137. package/dist/scripts/src/components/Charts/LineChart/LineChartNative.js +0 -192
  138. package/dist/scripts/src/components/Charts/PieChart/PieChart.js +0 -64
  139. package/dist/scripts/src/components/Charts/PieChart/PieChart.spec.js +0 -584
  140. package/dist/scripts/src/components/Charts/PieChart/PieChartNative.js +0 -167
  141. package/dist/scripts/src/components/Charts/RadarChart/RadarChart.js +0 -92
  142. package/dist/scripts/src/components/Charts/RadarChart/RadarChart.spec.js +0 -571
  143. package/dist/scripts/src/components/Charts/RadarChart/RadarChartNative.js +0 -125
  144. package/dist/scripts/src/components/Charts/Tooltip/TooltipContent.js +0 -27
  145. package/dist/scripts/src/components/Charts/Tooltip/TooltipContent.spec.js +0 -451
  146. package/dist/scripts/src/components/Charts/utils/ChartProvider.js +0 -65
  147. package/dist/scripts/src/components/Charts/utils/abstractions.js +0 -26
  148. package/dist/scripts/src/components/Checkbox/Checkbox.js +0 -81
  149. package/dist/scripts/src/components/Checkbox/Checkbox.spec.js +0 -969
  150. package/dist/scripts/src/components/CodeBlock/CodeBlock.js +0 -42
  151. package/dist/scripts/src/components/CodeBlock/CodeBlock.spec.js +0 -196
  152. package/dist/scripts/src/components/CodeBlock/CodeBlockNative.js +0 -127
  153. package/dist/scripts/src/components/CodeBlock/highlight-code.js +0 -273
  154. package/dist/scripts/src/components/ColorPicker/ColorPicker.js +0 -54
  155. package/dist/scripts/src/components/ColorPicker/ColorPicker.spec.js +0 -312
  156. package/dist/scripts/src/components/ColorPicker/ColorPickerNative.js +0 -86
  157. package/dist/scripts/src/components/Column/Column.js +0 -89
  158. package/dist/scripts/src/components/Column/ColumnNative.js +0 -49
  159. package/dist/scripts/src/components/Column/TableContext.js +0 -12
  160. package/dist/scripts/src/components/Column/doc-resources/list-component-data.js +0 -53
  161. package/dist/scripts/src/components/ComponentProvider.js +0 -811
  162. package/dist/scripts/src/components/ComponentRegistryContext.js +0 -44
  163. package/dist/scripts/src/components/ContentSeparator/ContentSeparator.js +0 -51
  164. package/dist/scripts/src/components/ContentSeparator/ContentSeparator.spec.js +0 -531
  165. package/dist/scripts/src/components/ContentSeparator/ContentSeparatorNative.js +0 -31
  166. package/dist/scripts/src/components/DataSource/DataSource.js +0 -124
  167. package/dist/scripts/src/components/DateInput/DateInput.js +0 -197
  168. package/dist/scripts/src/components/DateInput/DateInput.spec.js +0 -952
  169. package/dist/scripts/src/components/DateInput/DateInputNative.js +0 -734
  170. package/dist/scripts/src/components/DatePicker/DatePicker.js +0 -146
  171. package/dist/scripts/src/components/DatePicker/DatePicker.spec.js +0 -394
  172. package/dist/scripts/src/components/DatePicker/DatePickerNative.js +0 -326
  173. package/dist/scripts/src/components/DropdownMenu/DropdownMenu.js +0 -196
  174. package/dist/scripts/src/components/DropdownMenu/DropdownMenu.spec.js +0 -331
  175. package/dist/scripts/src/components/DropdownMenu/DropdownMenuNative.js +0 -146
  176. package/dist/scripts/src/components/EmojiSelector/EmojiSelector.js +0 -26
  177. package/dist/scripts/src/components/EmojiSelector/EmojiSelector.spec.js +0 -29
  178. package/dist/scripts/src/components/EmojiSelector/EmojiSelectorNative.js +0 -71
  179. package/dist/scripts/src/components/ExpandableItem/ExpandableItem.js +0 -101
  180. package/dist/scripts/src/components/ExpandableItem/ExpandableItem.spec.js +0 -435
  181. package/dist/scripts/src/components/ExpandableItem/ExpandableItemNative.js +0 -109
  182. package/dist/scripts/src/components/FileInput/FileInput.js +0 -80
  183. package/dist/scripts/src/components/FileInput/FileInput.spec.js +0 -285
  184. package/dist/scripts/src/components/FileInput/FileInputNative.js +0 -161
  185. package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZone.js +0 -58
  186. package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZone.spec.js +0 -296
  187. package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZoneNative.js +0 -134
  188. package/dist/scripts/src/components/FlowLayout/FlowLayout.js +0 -65
  189. package/dist/scripts/src/components/FlowLayout/FlowLayout.spec.js +0 -518
  190. package/dist/scripts/src/components/FlowLayout/FlowLayoutNative.js +0 -153
  191. package/dist/scripts/src/components/Footer/Footer.js +0 -45
  192. package/dist/scripts/src/components/Footer/Footer.spec.js +0 -991
  193. package/dist/scripts/src/components/Footer/FooterNative.js +0 -35
  194. package/dist/scripts/src/components/Form/Form.js +0 -161
  195. package/dist/scripts/src/components/Form/Form.spec.js +0 -1719
  196. package/dist/scripts/src/components/Form/FormContext.js +0 -124
  197. package/dist/scripts/src/components/Form/FormNative.js +0 -463
  198. package/dist/scripts/src/components/Form/formActions.js +0 -115
  199. package/dist/scripts/src/components/FormItem/FormItem.js +0 -231
  200. package/dist/scripts/src/components/FormItem/FormItem.spec.js +0 -1022
  201. package/dist/scripts/src/components/FormItem/FormItemNative.js +0 -255
  202. package/dist/scripts/src/components/FormItem/HelperText.js +0 -27
  203. package/dist/scripts/src/components/FormItem/ItemWithLabel.js +0 -52
  204. package/dist/scripts/src/components/FormItem/Validations.js +0 -389
  205. package/dist/scripts/src/components/FormSection/FormSection.js +0 -56
  206. package/dist/scripts/src/components/Fragment/Fragment.js +0 -24
  207. package/dist/scripts/src/components/Fragment/Fragment.spec.js +0 -50
  208. package/dist/scripts/src/components/Heading/H1.spec.js +0 -66
  209. package/dist/scripts/src/components/Heading/H2.spec.js +0 -66
  210. package/dist/scripts/src/components/Heading/H3.spec.js +0 -66
  211. package/dist/scripts/src/components/Heading/H4.spec.js +0 -66
  212. package/dist/scripts/src/components/Heading/H5.spec.js +0 -66
  213. package/dist/scripts/src/components/Heading/H6.spec.js +0 -66
  214. package/dist/scripts/src/components/Heading/Heading.js +0 -396
  215. package/dist/scripts/src/components/Heading/Heading.spec.js +0 -966
  216. package/dist/scripts/src/components/Heading/HeadingNative.js +0 -98
  217. package/dist/scripts/src/components/Heading/abstractions.js +0 -4
  218. package/dist/scripts/src/components/HoverCard/HoverCard.js +0 -18
  219. package/dist/scripts/src/components/HoverCard/HovercardNative.js +0 -44
  220. package/dist/scripts/src/components/HtmlTags/HtmlTags.js +0 -1441
  221. package/dist/scripts/src/components/HtmlTags/HtmlTags.spec.js +0 -69
  222. package/dist/scripts/src/components/IFrame/IFrame.js +0 -77
  223. package/dist/scripts/src/components/IFrame/IFrame.spec.js +0 -527
  224. package/dist/scripts/src/components/IFrame/IFrameNative.js +0 -46
  225. package/dist/scripts/src/components/Icon/AdmonitionDanger.js +0 -10
  226. package/dist/scripts/src/components/Icon/AdmonitionInfo.js +0 -10
  227. package/dist/scripts/src/components/Icon/AdmonitionNote.js +0 -10
  228. package/dist/scripts/src/components/Icon/AdmonitionTip.js +0 -10
  229. package/dist/scripts/src/components/Icon/AdmonitionWarning.js +0 -10
  230. package/dist/scripts/src/components/Icon/ApiIcon.js +0 -10
  231. package/dist/scripts/src/components/Icon/ArrowDropDown.js +0 -11
  232. package/dist/scripts/src/components/Icon/ArrowDropUp.js +0 -11
  233. package/dist/scripts/src/components/Icon/ArrowLeft.js +0 -11
  234. package/dist/scripts/src/components/Icon/ArrowRight.js +0 -11
  235. package/dist/scripts/src/components/Icon/Attach.js +0 -10
  236. package/dist/scripts/src/components/Icon/Binding.js +0 -11
  237. package/dist/scripts/src/components/Icon/BoardIcon.js +0 -7
  238. package/dist/scripts/src/components/Icon/BoxIcon.js +0 -10
  239. package/dist/scripts/src/components/Icon/CheckIcon.js +0 -7
  240. package/dist/scripts/src/components/Icon/ChevronDownIcon.js +0 -7
  241. package/dist/scripts/src/components/Icon/ChevronLeft.js +0 -7
  242. package/dist/scripts/src/components/Icon/ChevronRight.js +0 -7
  243. package/dist/scripts/src/components/Icon/ChevronUpIcon.js +0 -7
  244. package/dist/scripts/src/components/Icon/CodeFileIcon.js +0 -10
  245. package/dist/scripts/src/components/Icon/CodeSandbox.js +0 -10
  246. package/dist/scripts/src/components/Icon/CompactListIcon.js +0 -7
  247. package/dist/scripts/src/components/Icon/ContentCopyIcon.js +0 -7
  248. package/dist/scripts/src/components/Icon/DarkToLightIcon.js +0 -10
  249. package/dist/scripts/src/components/Icon/DatabaseIcon.js +0 -11
  250. package/dist/scripts/src/components/Icon/DocFileIcon.js +0 -10
  251. package/dist/scripts/src/components/Icon/DocIcon.js +0 -10
  252. package/dist/scripts/src/components/Icon/DotMenuHorizontalIcon.js +0 -7
  253. package/dist/scripts/src/components/Icon/DotMenuIcon.js +0 -7
  254. package/dist/scripts/src/components/Icon/EmailIcon.js +0 -7
  255. package/dist/scripts/src/components/Icon/EmptyFolderIcon.js +0 -10
  256. package/dist/scripts/src/components/Icon/ErrorIcon.js +0 -7
  257. package/dist/scripts/src/components/Icon/ExpressionIcon.js +0 -10
  258. package/dist/scripts/src/components/Icon/FillPlusCricleIcon.js +0 -7
  259. package/dist/scripts/src/components/Icon/FilterIcon.js +0 -10
  260. package/dist/scripts/src/components/Icon/FolderIcon.js +0 -10
  261. package/dist/scripts/src/components/Icon/GlobeIcon.js +0 -7
  262. package/dist/scripts/src/components/Icon/HomeIcon.js +0 -7
  263. package/dist/scripts/src/components/Icon/HyperLinkIcon.js +0 -7
  264. package/dist/scripts/src/components/Icon/Icon.js +0 -42
  265. package/dist/scripts/src/components/Icon/Icon.spec.js +0 -527
  266. package/dist/scripts/src/components/Icon/IconNative.js +0 -127
  267. package/dist/scripts/src/components/Icon/ImageFileIcon.js +0 -10
  268. package/dist/scripts/src/components/Icon/Inspect.js +0 -10
  269. package/dist/scripts/src/components/Icon/LightToDark.js +0 -10
  270. package/dist/scripts/src/components/Icon/LinkIcon.js +0 -7
  271. package/dist/scripts/src/components/Icon/ListIcon.js +0 -7
  272. package/dist/scripts/src/components/Icon/LooseListIcon.js +0 -7
  273. package/dist/scripts/src/components/Icon/MoonIcon.js +0 -10
  274. package/dist/scripts/src/components/Icon/MoreOptionsIcon.js +0 -7
  275. package/dist/scripts/src/components/Icon/NoSortIcon.js +0 -8
  276. package/dist/scripts/src/components/Icon/PDFIcon.js +0 -10
  277. package/dist/scripts/src/components/Icon/PenIcon.js +0 -7
  278. package/dist/scripts/src/components/Icon/PhoneIcon.js +0 -7
  279. package/dist/scripts/src/components/Icon/PhotoIcon.js +0 -10
  280. package/dist/scripts/src/components/Icon/PlusIcon.js +0 -7
  281. package/dist/scripts/src/components/Icon/SearchIcon.js +0 -7
  282. package/dist/scripts/src/components/Icon/ShareIcon.js +0 -10
  283. package/dist/scripts/src/components/Icon/SortAscendingIcon.js +0 -8
  284. package/dist/scripts/src/components/Icon/SortDescendingIcon.js +0 -8
  285. package/dist/scripts/src/components/Icon/StarsIcon.js +0 -10
  286. package/dist/scripts/src/components/Icon/SunIcon.js +0 -10
  287. package/dist/scripts/src/components/Icon/TableDeleteColumnIcon.js +0 -7
  288. package/dist/scripts/src/components/Icon/TableDeleteRowIcon.js +0 -7
  289. package/dist/scripts/src/components/Icon/TableInsertColumnIcon.js +0 -7
  290. package/dist/scripts/src/components/Icon/TableInsertRowIcon.js +0 -7
  291. package/dist/scripts/src/components/Icon/TrashIcon.js +0 -7
  292. package/dist/scripts/src/components/Icon/TrendingDownIcon.js +0 -10
  293. package/dist/scripts/src/components/Icon/TrendingLevelIcon.js +0 -10
  294. package/dist/scripts/src/components/Icon/TrendingUpIcon.js +0 -10
  295. package/dist/scripts/src/components/Icon/TxtIcon.js +0 -10
  296. package/dist/scripts/src/components/Icon/UnknownFileIcon.js +0 -10
  297. package/dist/scripts/src/components/Icon/UnlinkIcon.js +0 -10
  298. package/dist/scripts/src/components/Icon/UserIcon.js +0 -7
  299. package/dist/scripts/src/components/Icon/WarningIcon.js +0 -7
  300. package/dist/scripts/src/components/Icon/XlsIcon.js +0 -10
  301. package/dist/scripts/src/components/IconProvider.js +0 -300
  302. package/dist/scripts/src/components/IconRegistryContext.js +0 -318
  303. package/dist/scripts/src/components/Image/Image.js +0 -52
  304. package/dist/scripts/src/components/Image/Image.spec.js +0 -198
  305. package/dist/scripts/src/components/Image/ImageNative.js +0 -73
  306. package/dist/scripts/src/components/Input/InputAdornment.js +0 -28
  307. package/dist/scripts/src/components/Input/InputDivider.js +0 -35
  308. package/dist/scripts/src/components/Input/InputLabel.js +0 -25
  309. package/dist/scripts/src/components/Input/PartialInput.js +0 -155
  310. package/dist/scripts/src/components/Input/index.js +0 -5
  311. package/dist/scripts/src/components/InspectButton/InspectButton.js +0 -35
  312. package/dist/scripts/src/components/Items/Items.js +0 -39
  313. package/dist/scripts/src/components/Items/Items.spec.js +0 -397
  314. package/dist/scripts/src/components/Items/ItemsNative.js +0 -33
  315. package/dist/scripts/src/components/Link/Link.js +0 -82
  316. package/dist/scripts/src/components/Link/Link.spec.js +0 -894
  317. package/dist/scripts/src/components/Link/LinkNative.js +0 -48
  318. package/dist/scripts/src/components/List/List.js +0 -130
  319. package/dist/scripts/src/components/List/List.spec.js +0 -927
  320. package/dist/scripts/src/components/List/ListNative.js +0 -433
  321. package/dist/scripts/src/components/List/doc-resources/list-component-data.js +0 -53
  322. package/dist/scripts/src/components/Logo/Logo.js +0 -30
  323. package/dist/scripts/src/components/Logo/LogoNative.js +0 -32
  324. package/dist/scripts/src/components/Markdown/CodeText.js +0 -38
  325. package/dist/scripts/src/components/Markdown/Markdown.js +0 -143
  326. package/dist/scripts/src/components/Markdown/Markdown.spec.js +0 -188
  327. package/dist/scripts/src/components/Markdown/MarkdownNative.js +0 -476
  328. package/dist/scripts/src/components/Markdown/parse-binding-expr.js +0 -60
  329. package/dist/scripts/src/components/Markdown/utils.js +0 -389
  330. package/dist/scripts/src/components/ModalDialog/ConfirmationModalContextProvider.js +0 -111
  331. package/dist/scripts/src/components/ModalDialog/Dialog.js +0 -20
  332. package/dist/scripts/src/components/ModalDialog/ModalDialog.js +0 -83
  333. package/dist/scripts/src/components/ModalDialog/ModalDialog.spec.js +0 -181
  334. package/dist/scripts/src/components/ModalDialog/ModalDialogNative.js +0 -217
  335. package/dist/scripts/src/components/ModalDialog/ModalVisibilityContext.js +0 -60
  336. package/dist/scripts/src/components/NavGroup/NavGroup.js +0 -70
  337. package/dist/scripts/src/components/NavGroup/NavGroup.spec.js +0 -304
  338. package/dist/scripts/src/components/NavGroup/NavGroupContext.js +0 -13
  339. package/dist/scripts/src/components/NavGroup/NavGroupNative.js +0 -133
  340. package/dist/scripts/src/components/NavLink/NavLink.js +0 -86
  341. package/dist/scripts/src/components/NavLink/NavLink.spec.js +0 -864
  342. package/dist/scripts/src/components/NavLink/NavLinkNative.js +0 -73
  343. package/dist/scripts/src/components/NavPanel/NavPanel.js +0 -53
  344. package/dist/scripts/src/components/NavPanel/NavPanel.spec.js +0 -864
  345. package/dist/scripts/src/components/NavPanel/NavPanelNative.js +0 -222
  346. package/dist/scripts/src/components/NestedApp/AppWithCodeView.js +0 -91
  347. package/dist/scripts/src/components/NestedApp/AppWithCodeViewNative.js +0 -84
  348. package/dist/scripts/src/components/NestedApp/NestedApp.js +0 -86
  349. package/dist/scripts/src/components/NestedApp/NestedAppNative.js +0 -231
  350. package/dist/scripts/src/components/NestedApp/Tooltip.js +0 -46
  351. package/dist/scripts/src/components/NestedApp/defaultProps.js +0 -12
  352. package/dist/scripts/src/components/NestedApp/utils.js +0 -67
  353. package/dist/scripts/src/components/NoResult/NoResult.js +0 -46
  354. package/dist/scripts/src/components/NoResult/NoResult.spec.js +0 -863
  355. package/dist/scripts/src/components/NoResult/NoResultNative.js +0 -31
  356. package/dist/scripts/src/components/NumberBox/NumberBox.js +0 -123
  357. package/dist/scripts/src/components/NumberBox/NumberBox.spec.js +0 -954
  358. package/dist/scripts/src/components/NumberBox/NumberBoxNative.js +0 -513
  359. package/dist/scripts/src/components/NumberBox/numberbox-abstractions.js +0 -109
  360. package/dist/scripts/src/components/Option/Option.js +0 -44
  361. package/dist/scripts/src/components/Option/Option.spec.js +0 -474
  362. package/dist/scripts/src/components/Option/OptionNative.js +0 -29
  363. package/dist/scripts/src/components/Option/OptionTypeProvider.js +0 -16
  364. package/dist/scripts/src/components/PageMetaTitle/PageMetaTilteNative.js +0 -13
  365. package/dist/scripts/src/components/PageMetaTitle/PageMetaTitle.js +0 -22
  366. package/dist/scripts/src/components/PageMetaTitle/PageMetaTitle.spec.js +0 -80
  367. package/dist/scripts/src/components/Pages/Pages.js +0 -54
  368. package/dist/scripts/src/components/Pages/PagesNative.js +0 -57
  369. package/dist/scripts/src/components/Pagination/Pagination.js +0 -107
  370. package/dist/scripts/src/components/Pagination/Pagination.spec.js +0 -1008
  371. package/dist/scripts/src/components/Pagination/PaginationNative.js +0 -157
  372. package/dist/scripts/src/components/PositionedContainer/PositionedContainer.js +0 -24
  373. package/dist/scripts/src/components/PositionedContainer/PositionedContainerNative.js +0 -14
  374. package/dist/scripts/src/components/ProfileMenu/ProfileMenu.js +0 -20
  375. package/dist/scripts/src/components/ProgressBar/ProgressBar.js +0 -38
  376. package/dist/scripts/src/components/ProgressBar/ProgressBar.spec.js +0 -166
  377. package/dist/scripts/src/components/ProgressBar/ProgressBarNative.js +0 -28
  378. package/dist/scripts/src/components/Queue/Queue.js +0 -85
  379. package/dist/scripts/src/components/Queue/Queue.spec.js +0 -624
  380. package/dist/scripts/src/components/Queue/QueueNative.js +0 -342
  381. package/dist/scripts/src/components/Queue/queueActions.js +0 -87
  382. package/dist/scripts/src/components/RadioGroup/RadioGroup.js +0 -61
  383. package/dist/scripts/src/components/RadioGroup/RadioGroup.spec.js +0 -488
  384. package/dist/scripts/src/components/RadioGroup/RadioGroupNative.js +0 -158
  385. package/dist/scripts/src/components/RadioGroup/RadioItem.js +0 -28
  386. package/dist/scripts/src/components/RadioGroup/RadioItemNative.js +0 -62
  387. package/dist/scripts/src/components/RealTimeAdapter/RealTimeAdapter.js +0 -24
  388. package/dist/scripts/src/components/RealTimeAdapter/RealTimeAdapterNative.js +0 -135
  389. package/dist/scripts/src/components/Redirect/Redirect.js +0 -31
  390. package/dist/scripts/src/components/Redirect/Redirect.spec.js +0 -527
  391. package/dist/scripts/src/components/ResponsiveBar/ResponsiveBar.js +0 -60
  392. package/dist/scripts/src/components/ResponsiveBar/ResponsiveBar.spec.js +0 -76
  393. package/dist/scripts/src/components/ResponsiveBar/ResponsiveBarNative.js +0 -313
  394. package/dist/scripts/src/components/Select/HiddenOption.js +0 -20
  395. package/dist/scripts/src/components/Select/OptionContext.js +0 -12
  396. package/dist/scripts/src/components/Select/Select.js +0 -131
  397. package/dist/scripts/src/components/Select/Select.spec.js +0 -671
  398. package/dist/scripts/src/components/Select/SelectContext.js +0 -16
  399. package/dist/scripts/src/components/Select/SelectNative.js +0 -440
  400. package/dist/scripts/src/components/SelectionStore/SelectionStore.js +0 -25
  401. package/dist/scripts/src/components/SelectionStore/SelectionStoreNative.js +0 -103
  402. package/dist/scripts/src/components/Slider/Slider.js +0 -115
  403. package/dist/scripts/src/components/Slider/Slider.spec.js +0 -643
  404. package/dist/scripts/src/components/Slider/SliderNative.js +0 -237
  405. package/dist/scripts/src/components/Slot/Slot.js +0 -17
  406. package/dist/scripts/src/components/Slot/Slot.spec.js +0 -368
  407. package/dist/scripts/src/components/SlotItem.js +0 -32
  408. package/dist/scripts/src/components/SpaceFiller/SpaceFiller.js +0 -20
  409. package/dist/scripts/src/components/SpaceFiller/SpaceFiller.spec.js +0 -184
  410. package/dist/scripts/src/components/SpaceFiller/SpaceFillerNative.js +0 -10
  411. package/dist/scripts/src/components/Spinner/Spinner.js +0 -39
  412. package/dist/scripts/src/components/Spinner/Spinner.spec.js +0 -161
  413. package/dist/scripts/src/components/Spinner/SpinnerNative.js +0 -48
  414. package/dist/scripts/src/components/Splitter/HSplitter.spec.js +0 -104
  415. package/dist/scripts/src/components/Splitter/Splitter.js +0 -114
  416. package/dist/scripts/src/components/Splitter/Splitter.spec.js +0 -631
  417. package/dist/scripts/src/components/Splitter/SplitterNative.js +0 -203
  418. package/dist/scripts/src/components/Splitter/VSplitter.spec.js +0 -104
  419. package/dist/scripts/src/components/Splitter/utils.js +0 -22
  420. package/dist/scripts/src/components/Stack/CHStack.spec.js +0 -86
  421. package/dist/scripts/src/components/Stack/CVStack.spec.js +0 -86
  422. package/dist/scripts/src/components/Stack/HStack.spec.js +0 -67
  423. package/dist/scripts/src/components/Stack/Stack.js +0 -156
  424. package/dist/scripts/src/components/Stack/Stack.spec.js +0 -654
  425. package/dist/scripts/src/components/Stack/StackNative.js +0 -45
  426. package/dist/scripts/src/components/Stack/VStack.spec.js +0 -67
  427. package/dist/scripts/src/components/StickyBox/StickyBox.js +0 -34
  428. package/dist/scripts/src/components/StickyBox/StickyBoxNative.js +0 -42
  429. package/dist/scripts/src/components/Switch/Switch.js +0 -80
  430. package/dist/scripts/src/components/Switch/Switch.spec.js +0 -836
  431. package/dist/scripts/src/components/Table/Table.js +0 -268
  432. package/dist/scripts/src/components/Table/Table.spec.js +0 -827
  433. package/dist/scripts/src/components/Table/TableNative.js +0 -670
  434. package/dist/scripts/src/components/Table/doc-resources/list-component-data.js +0 -53
  435. package/dist/scripts/src/components/Table/useRowSelection.js +0 -454
  436. package/dist/scripts/src/components/TableOfContents/TableOfContents.js +0 -76
  437. package/dist/scripts/src/components/TableOfContents/TableOfContents.spec.js +0 -838
  438. package/dist/scripts/src/components/TableOfContents/TableOfContentsNative.js +0 -81
  439. package/dist/scripts/src/components/Tabs/TabContext.js +0 -58
  440. package/dist/scripts/src/components/Tabs/TabItem.js +0 -44
  441. package/dist/scripts/src/components/Tabs/TabItemNative.js +0 -53
  442. package/dist/scripts/src/components/Tabs/Tabs.js +0 -95
  443. package/dist/scripts/src/components/Tabs/Tabs.spec.js +0 -1237
  444. package/dist/scripts/src/components/Tabs/TabsNative.js +0 -137
  445. package/dist/scripts/src/components/Text/Text.js +0 -181
  446. package/dist/scripts/src/components/Text/Text.spec.js +0 -1676
  447. package/dist/scripts/src/components/Text/TextNative.js +0 -244
  448. package/dist/scripts/src/components/TextArea/TextArea.js +0 -103
  449. package/dist/scripts/src/components/TextArea/TextArea.spec.js +0 -794
  450. package/dist/scripts/src/components/TextArea/TextAreaNative.js +0 -196
  451. package/dist/scripts/src/components/TextArea/TextAreaResizable.js +0 -73
  452. package/dist/scripts/src/components/TextArea/useComposedRef.js +0 -60
  453. package/dist/scripts/src/components/TextBox/TextBox.js +0 -131
  454. package/dist/scripts/src/components/TextBox/TextBox.spec.js +0 -725
  455. package/dist/scripts/src/components/TextBox/TextBoxNative.js +0 -142
  456. package/dist/scripts/src/components/Theme/NotificationToast.js +0 -64
  457. package/dist/scripts/src/components/Theme/Theme.js +0 -47
  458. package/dist/scripts/src/components/Theme/Theme.spec.js +0 -390
  459. package/dist/scripts/src/components/Theme/ThemeNative.js +0 -162
  460. package/dist/scripts/src/components/TimeInput/TimeInput.js +0 -149
  461. package/dist/scripts/src/components/TimeInput/TimeInput.spec.js +0 -1160
  462. package/dist/scripts/src/components/TimeInput/TimeInputNative.js +0 -650
  463. package/dist/scripts/src/components/TimeInput/utils.js +0 -197
  464. package/dist/scripts/src/components/Timer/Timer.js +0 -62
  465. package/dist/scripts/src/components/Timer/Timer.spec.js +0 -328
  466. package/dist/scripts/src/components/Timer/TimerNative.js +0 -178
  467. package/dist/scripts/src/components/Toggle/Toggle.js +0 -172
  468. package/dist/scripts/src/components/ToneChangerButton/ToneChangerButton.js +0 -63
  469. package/dist/scripts/src/components/ToneChangerButton/ToneChangerButton.spec.js +0 -414
  470. package/dist/scripts/src/components/ToneSwitch/ToneSwitch.js +0 -51
  471. package/dist/scripts/src/components/ToneSwitch/ToneSwitch.spec.js +0 -89
  472. package/dist/scripts/src/components/ToneSwitch/ToneSwitchNative.js +0 -42
  473. package/dist/scripts/src/components/Tooltip/Tooltip.js +0 -118
  474. package/dist/scripts/src/components/Tooltip/Tooltip.spec.js +0 -418
  475. package/dist/scripts/src/components/Tooltip/TooltipNative.js +0 -160
  476. package/dist/scripts/src/components/Tree/Tree-dynamic.spec.js +0 -2894
  477. package/dist/scripts/src/components/Tree/Tree-icons.spec.js +0 -206
  478. package/dist/scripts/src/components/Tree/Tree.spec.js +0 -2839
  479. package/dist/scripts/src/components/Tree/TreeComponent.js +0 -324
  480. package/dist/scripts/src/components/Tree/TreeNative.js +0 -1129
  481. package/dist/scripts/src/components/Tree/testData.js +0 -296
  482. package/dist/scripts/src/components/TreeDisplay/TreeDisplay.js +0 -49
  483. package/dist/scripts/src/components/TreeDisplay/TreeDisplayNative.js +0 -104
  484. package/dist/scripts/src/components/ValidationSummary/ValidationSummary.js +0 -64
  485. package/dist/scripts/src/components/VisuallyHidden.js +0 -21
  486. package/dist/scripts/src/components/abstractions.js +0 -341
  487. package/dist/scripts/src/components/chart-color-schemes.js +0 -43
  488. package/dist/scripts/src/components/collectedComponentMetadata.js +0 -316
  489. package/dist/scripts/src/components/component-utils.js +0 -29
  490. package/dist/scripts/src/components/container-helpers.js +0 -26
  491. package/dist/scripts/src/components/metadata-helpers.js +0 -269
  492. package/dist/scripts/src/components-core/ApiBoundComponent.js +0 -227
  493. package/dist/scripts/src/components-core/AppContext.js +0 -16
  494. package/dist/scripts/src/components-core/ComponentDecorator.js +0 -74
  495. package/dist/scripts/src/components-core/ComponentViewer.js +0 -69
  496. package/dist/scripts/src/components-core/CompoundComponent.js +0 -145
  497. package/dist/scripts/src/components-core/DebugViewProvider.js +0 -43
  498. package/dist/scripts/src/components-core/EngineError.js +0 -91
  499. package/dist/scripts/src/components-core/InspectorContext.js +0 -248
  500. package/dist/scripts/src/components-core/LoaderComponent.js +0 -109
  501. package/dist/scripts/src/components-core/RestApiProxy.js +0 -468
  502. package/dist/scripts/src/components-core/StandaloneApp.js +0 -821
  503. package/dist/scripts/src/components-core/StandaloneExtensionManager.js +0 -44
  504. package/dist/scripts/src/components-core/TableOfContentsContext.js +0 -168
  505. package/dist/scripts/src/components-core/abstractions/ComponentRenderer.js +0 -2
  506. package/dist/scripts/src/components-core/abstractions/LoaderRenderer.js +0 -2
  507. package/dist/scripts/src/components-core/abstractions/standalone.js +0 -2
  508. package/dist/scripts/src/components-core/abstractions/treeAbstractions.js +0 -2
  509. package/dist/scripts/src/components-core/action/APICall.js +0 -284
  510. package/dist/scripts/src/components-core/action/FileDownloadAction.js +0 -80
  511. package/dist/scripts/src/components-core/action/FileUploadAction.js +0 -88
  512. package/dist/scripts/src/components-core/action/NavigateAction.js +0 -20
  513. package/dist/scripts/src/components-core/action/TimedAction.js +0 -21
  514. package/dist/scripts/src/components-core/action/actions.js +0 -15
  515. package/dist/scripts/src/components-core/appContext/date-functions.js +0 -24
  516. package/dist/scripts/src/components-core/appContext/math-function.js +0 -27
  517. package/dist/scripts/src/components-core/appContext/misc-utils.js +0 -14
  518. package/dist/scripts/src/components-core/behaviors/Behavior.js +0 -2
  519. package/dist/scripts/src/components-core/behaviors/CoreBehaviors.js +0 -200
  520. package/dist/scripts/src/components-core/component-hooks.js +0 -25
  521. package/dist/scripts/src/components-core/constants.js +0 -18
  522. package/dist/scripts/src/components-core/descriptorHelper.js +0 -96
  523. package/dist/scripts/src/components-core/devtools/InspectorDialog.js +0 -135
  524. package/dist/scripts/src/components-core/devtools/InspectorDialogVisibilityContext.js +0 -8
  525. package/dist/scripts/src/components-core/event-handlers.js +0 -46
  526. package/dist/scripts/src/components-core/interception/ApiInterceptor.js +0 -247
  527. package/dist/scripts/src/components-core/interception/ApiInterceptorProvider.js +0 -167
  528. package/dist/scripts/src/components-core/interception/Backend.js +0 -141
  529. package/dist/scripts/src/components-core/interception/Errors.js +0 -129
  530. package/dist/scripts/src/components-core/interception/InMemoryDb.js +0 -41
  531. package/dist/scripts/src/components-core/interception/IndexedDb.js +0 -205
  532. package/dist/scripts/src/components-core/interception/ReadonlyCollection.js +0 -145
  533. package/dist/scripts/src/components-core/interception/abstractions.js +0 -2
  534. package/dist/scripts/src/components-core/interception/apiInterceptorWorker.js +0 -44
  535. package/dist/scripts/src/components-core/interception/initMock.js +0 -20
  536. package/dist/scripts/src/components-core/interception/useApiInterceptorContext.js +0 -9
  537. package/dist/scripts/src/components-core/loader/ApiLoader.js +0 -54
  538. package/dist/scripts/src/components-core/loader/DataLoader.js +0 -330
  539. package/dist/scripts/src/components-core/loader/ExternalDataLoader.js +0 -60
  540. package/dist/scripts/src/components-core/loader/Loader.js +0 -159
  541. package/dist/scripts/src/components-core/loader/MockLoaderRenderer.js +0 -43
  542. package/dist/scripts/src/components-core/loader/PageableLoader.js +0 -272
  543. package/dist/scripts/src/components-core/markup-check.js +0 -279
  544. package/dist/scripts/src/components-core/parts.js +0 -11
  545. package/dist/scripts/src/components-core/renderers.js +0 -76
  546. package/dist/scripts/src/components-core/rendering/AppContent.js +0 -400
  547. package/dist/scripts/src/components-core/rendering/AppRoot.js +0 -87
  548. package/dist/scripts/src/components-core/rendering/AppWrapper.js +0 -49
  549. package/dist/scripts/src/components-core/rendering/ComponentAdapter.js +0 -380
  550. package/dist/scripts/src/components-core/rendering/ComponentWrapper.js +0 -166
  551. package/dist/scripts/src/components-core/rendering/Container.js +0 -621
  552. package/dist/scripts/src/components-core/rendering/ContainerWrapper.js +0 -94
  553. package/dist/scripts/src/components-core/rendering/ErrorBoundary.js +0 -65
  554. package/dist/scripts/src/components-core/rendering/InvalidComponent.js +0 -17
  555. package/dist/scripts/src/components-core/rendering/StandaloneComponent.js +0 -39
  556. package/dist/scripts/src/components-core/rendering/StateContainer.js +0 -350
  557. package/dist/scripts/src/components-core/rendering/UnknownComponent.js +0 -15
  558. package/dist/scripts/src/components-core/rendering/buildProxy.js +0 -58
  559. package/dist/scripts/src/components-core/rendering/collectFnVarDeps.js +0 -49
  560. package/dist/scripts/src/components-core/rendering/containers.js +0 -19
  561. package/dist/scripts/src/components-core/rendering/nodeUtils.js +0 -6
  562. package/dist/scripts/src/components-core/rendering/reducer.js +0 -160
  563. package/dist/scripts/src/components-core/rendering/renderChild.js +0 -82
  564. package/dist/scripts/src/components-core/rendering/valueExtractor.js +0 -216
  565. package/dist/scripts/src/components-core/reportEngineError.js +0 -62
  566. package/dist/scripts/src/components-core/script-runner/AttributeValueParser.js +0 -117
  567. package/dist/scripts/src/components-core/script-runner/BindingTreeEvaluationContext.js +0 -33
  568. package/dist/scripts/src/components-core/script-runner/ParameterParser.js +0 -117
  569. package/dist/scripts/src/components-core/script-runner/ScriptingSourceTree.js +0 -45
  570. package/dist/scripts/src/components-core/script-runner/asyncProxy.js +0 -96
  571. package/dist/scripts/src/components-core/script-runner/bannedFunctions.js +0 -34
  572. package/dist/scripts/src/components-core/script-runner/eval-tree-async.js +0 -613
  573. package/dist/scripts/src/components-core/script-runner/eval-tree-common.js +0 -439
  574. package/dist/scripts/src/components-core/script-runner/eval-tree-sync.js +0 -522
  575. package/dist/scripts/src/components-core/script-runner/process-statement-async.js +0 -761
  576. package/dist/scripts/src/components-core/script-runner/process-statement-common.js +0 -208
  577. package/dist/scripts/src/components-core/script-runner/process-statement-sync.js +0 -746
  578. package/dist/scripts/src/components-core/script-runner/simplify-expression.js +0 -386
  579. package/dist/scripts/src/components-core/script-runner/statement-queue.js +0 -63
  580. package/dist/scripts/src/components-core/script-runner/visitors.js +0 -369
  581. package/dist/scripts/src/components-core/theming/StyleContext.js +0 -133
  582. package/dist/scripts/src/components-core/theming/StyleRegistry.js +0 -171
  583. package/dist/scripts/src/components-core/theming/ThemeContext.js +0 -53
  584. package/dist/scripts/src/components-core/theming/ThemeProvider.js +0 -342
  585. package/dist/scripts/src/components-core/theming/component-layout-resolver.js +0 -153
  586. package/dist/scripts/src/components-core/theming/extendThemeUtils.js +0 -47
  587. package/dist/scripts/src/components-core/theming/hvar.js +0 -105
  588. package/dist/scripts/src/components-core/theming/layout-resolver.js +0 -388
  589. package/dist/scripts/src/components-core/theming/parse-layout-props.js +0 -136
  590. package/dist/scripts/src/components-core/theming/themeVars.js +0 -62
  591. package/dist/scripts/src/components-core/theming/themes/base-utils.js +0 -15
  592. package/dist/scripts/src/components-core/theming/themes/palette.js +0 -57
  593. package/dist/scripts/src/components-core/theming/themes/root.js +0 -434
  594. package/dist/scripts/src/components-core/theming/themes/solid.js +0 -16
  595. package/dist/scripts/src/components-core/theming/themes/theme-colors.js +0 -561
  596. package/dist/scripts/src/components-core/theming/themes/xmlui.js +0 -57
  597. package/dist/scripts/src/components-core/theming/transformThemeVars.js +0 -733
  598. package/dist/scripts/src/components-core/theming/utils.js +0 -31
  599. package/dist/scripts/src/components-core/utils/DataLoaderQueryKeyGenerator.js +0 -41
  600. package/dist/scripts/src/components-core/utils/LruCache.js +0 -184
  601. package/dist/scripts/src/components-core/utils/actionUtils.js +0 -32
  602. package/dist/scripts/src/components-core/utils/audio-utils.js +0 -83
  603. package/dist/scripts/src/components-core/utils/base64-utils.js +0 -124
  604. package/dist/scripts/src/components-core/utils/compound-utils.js +0 -11
  605. package/dist/scripts/src/components-core/utils/css-utils.js +0 -179
  606. package/dist/scripts/src/components-core/utils/date-utils.js +0 -186
  607. package/dist/scripts/src/components-core/utils/extractParam.js +0 -281
  608. package/dist/scripts/src/components-core/utils/hooks.js +0 -400
  609. package/dist/scripts/src/components-core/utils/mergeProps.js +0 -45
  610. package/dist/scripts/src/components-core/utils/misc.js +0 -539
  611. package/dist/scripts/src/components-core/utils/request-params.js +0 -70
  612. package/dist/scripts/src/components-core/utils/statementUtils.js +0 -224
  613. package/dist/scripts/src/components-core/utils/treeUtils.js +0 -226
  614. package/dist/scripts/src/components-core/xmlui-parser.js +0 -548
  615. package/dist/scripts/src/index-standalone.js +0 -61
  616. package/dist/scripts/src/index.js +0 -158
  617. package/dist/scripts/src/language-server/server-common.js +0 -152
  618. package/dist/scripts/src/language-server/server-web-worker.js +0 -47
  619. package/dist/scripts/src/language-server/server.js +0 -42
  620. package/dist/scripts/src/language-server/services/common/docs-generation.js +0 -73
  621. package/dist/scripts/src/language-server/services/common/lsp-utils.js +0 -9
  622. package/dist/scripts/src/language-server/services/common/metadata-utils.js +0 -157
  623. package/dist/scripts/src/language-server/services/common/syntax-node-utilities.js +0 -135
  624. package/dist/scripts/src/language-server/services/completion.js +0 -288
  625. package/dist/scripts/src/language-server/services/diagnostic.js +0 -19
  626. package/dist/scripts/src/language-server/services/format.js +0 -430
  627. package/dist/scripts/src/language-server/services/hover.js +0 -164
  628. package/dist/scripts/src/language-server/xmlui-metadata-generated.js +0 -16276
  629. package/dist/scripts/src/logging/LoggerContext.js +0 -22
  630. package/dist/scripts/src/logging/LoggerInitializer.js +0 -14
  631. package/dist/scripts/src/logging/LoggerService.js +0 -60
  632. package/dist/scripts/src/logging/xmlui.js +0 -21
  633. package/dist/scripts/src/parsers/common/GenericToken.js +0 -2
  634. package/dist/scripts/src/parsers/common/InputStream.js +0 -59
  635. package/dist/scripts/src/parsers/common/utils.js +0 -19
  636. package/dist/scripts/src/parsers/scripting/Lexer.js +0 -1097
  637. package/dist/scripts/src/parsers/scripting/Parser.js +0 -2638
  638. package/dist/scripts/src/parsers/scripting/ParserError.js +0 -47
  639. package/dist/scripts/src/parsers/scripting/ScriptingNodeTypes.js +0 -50
  640. package/dist/scripts/src/parsers/scripting/TokenTrait.js +0 -108
  641. package/dist/scripts/src/parsers/scripting/TokenType.js +0 -109
  642. package/dist/scripts/src/parsers/scripting/code-behind-collect.js +0 -101
  643. package/dist/scripts/src/parsers/scripting/modules.js +0 -105
  644. package/dist/scripts/src/parsers/scripting/tree-visitor.js +0 -601
  645. package/dist/scripts/src/parsers/style-parser/StyleInputStream.js +0 -39
  646. package/dist/scripts/src/parsers/style-parser/StyleLexer.js +0 -623
  647. package/dist/scripts/src/parsers/style-parser/StyleParser.js +0 -453
  648. package/dist/scripts/src/parsers/style-parser/errors.js +0 -37
  649. package/dist/scripts/src/parsers/style-parser/source-tree.js +0 -2
  650. package/dist/scripts/src/parsers/style-parser/tokens.js +0 -43
  651. package/dist/scripts/src/parsers/xmlui-parser/CharacterCodes.js +0 -136
  652. package/dist/scripts/src/parsers/xmlui-parser/ParserError.js +0 -60
  653. package/dist/scripts/src/parsers/xmlui-parser/diagnostics.js +0 -172
  654. package/dist/scripts/src/parsers/xmlui-parser/fileExtensions.js +0 -6
  655. package/dist/scripts/src/parsers/xmlui-parser/index.js +0 -29
  656. package/dist/scripts/src/parsers/xmlui-parser/lint.js +0 -165
  657. package/dist/scripts/src/parsers/xmlui-parser/parser.js +0 -626
  658. package/dist/scripts/src/parsers/xmlui-parser/scanner.js +0 -415
  659. package/dist/scripts/src/parsers/xmlui-parser/syntax-kind.js +0 -123
  660. package/dist/scripts/src/parsers/xmlui-parser/syntax-node.js +0 -67
  661. package/dist/scripts/src/parsers/xmlui-parser/transform.js +0 -1131
  662. package/dist/scripts/src/parsers/xmlui-parser/utils.js +0 -83
  663. package/dist/scripts/src/parsers/xmlui-parser/xmlui-serializer.js +0 -582
  664. package/dist/scripts/src/parsers/xmlui-parser/xmlui-tree.js +0 -2
  665. package/dist/scripts/src/syntax/monaco/grammar.monacoLanguage.js +0 -286
  666. package/dist/scripts/src/syntax/monaco/index.js +0 -14
  667. package/dist/scripts/src/syntax/monaco/xmlui-dark.js +0 -25
  668. package/dist/scripts/src/syntax/monaco/xmlui-light.js +0 -25
  669. package/dist/scripts/src/syntax/monaco/xmluiscript.monacoLanguage.js +0 -310
  670. package/dist/scripts/src/syntax/textMate/index.js +0 -14
  671. package/dist/scripts/src/syntax/textMate/xmlui-dark.json +0 -631
  672. package/dist/scripts/src/syntax/textMate/xmlui-light.json +0 -565
  673. package/dist/scripts/src/syntax/textMate/xmlui.json +0 -564
  674. package/dist/scripts/src/syntax/textMate/xmlui.tmLanguage.json +0 -341
  675. package/dist/scripts/src/testing/ComponentDrivers.js +0 -1380
  676. package/dist/scripts/src/testing/assertions.js +0 -444
  677. package/dist/scripts/src/testing/component-test-helpers.js +0 -373
  678. package/dist/scripts/src/testing/drivers/DateInputDriver.js +0 -19
  679. package/dist/scripts/src/testing/drivers/ModalDialogDriver.js +0 -10
  680. package/dist/scripts/src/testing/drivers/NumberBoxDriver.js +0 -44
  681. package/dist/scripts/src/testing/drivers/TextBoxDriver.js +0 -20
  682. package/dist/scripts/src/testing/drivers/TimeInputDriver.js +0 -22
  683. package/dist/scripts/src/testing/drivers/TimerDriver.js +0 -64
  684. package/dist/scripts/src/testing/drivers/TreeDriver.js +0 -13
  685. package/dist/scripts/src/testing/drivers/index.js +0 -9
  686. package/dist/scripts/src/testing/fixtures.js +0 -519
  687. package/dist/scripts/src/testing/index.js +0 -69
  688. package/dist/scripts/src/testing/infrastructure/TestBed.js +0 -17
  689. package/dist/scripts/src/testing/infrastructure/main.js +0 -9
  690. package/dist/scripts/src/testing/infrastructure/public/mockServiceWorker.js +0 -266
  691. 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;